天工维度魔兽争霸开发者社区-全国最大的TJ集中营-原提百万联盟

标题: YDWE自带Lua教程第三课:物体编辑器数据的读取 [打印本页]

作者: 提百万    时间: 2019-7-8 12:24
标题: YDWE自带Lua教程第三课:物体编辑器数据的读取
// 第三课

// 初始化整个系统,具体的语法可以不必深究,只需要记得,把这一行放在最前面就行了
// 一张地图只需要调用一次
<?local slk = require 'slk' ?>

function Test1 takes nothing returns nothing
    // 读取物品'afac'的'goldcost'值
    // 'afac'是物品的id,相信会用Jass的人都不会陌生,具体的值可以在物体编辑器中按Ctrl+D看到
    // 'goldcost'是物品的一个属性,其中文的含义是这个物品在商店的售价,同样可以在物体编辑器中按Ctrl+D看到
    local integer item_goldcost = <?=slk.item.afac.goldcost?>

    // 打开物体编辑器可以看到,一共有七个列表分别是单位、物品、可破坏物、地形装饰物、技能、魔法效果、科技
    // 分别对应slk.unit、slk.item、slk.destructable、slk.doodad、slk.ability、slk.buff、slk.upgrade
    // 他们的读取方法都是一样的
    local string ability_name      = "<?=slk.ability.Aply.Name?>"  

    // 我们还可以:
    <? local AHtb = slk.ability.AHtb ?>
    local string ability_order = "<?= AHtb.Order ?>"
    // 这是把技能'AHtb'的对象保存到一个变量里,然后在随后的式子里使用它

    local real ability_dur3 = <?= AHtb.Dur3 ?>
    // 我们可以用Dur3来获取第3级的属性

    local string ability_tip2 = "<?= AHtb.Tip2 ?>"
    // 有些属性的名字是相同的,你可以指定取出第几个属性

    local integer ability_button = <?= AHtb.Buttonpos ?>
    // 不特别指定的话,会取出第一个属性
endfunction

function Test2 takes nothing returns nothing
    // 到目前为止,我们都是读取指定ID的物体,但如果我们要读取所有的物体,
    // 又或者需要搜索满足某些特定条件的物体该怎么呢   
    local integer ability_id
    local string  ability_name
    <? for id, obj in pairs(slk.ability) do ?>
        set ability_id = '<?= id?>'
        set ability_name = "<?= obj.Name ?>"
    <? end ?>

    // 结合条件控制语句来实现搜索
    // 搜索所有热键为T的技能
    <?
        for id, obj in pairs(slk.ability) do
            if 'T' == obj.Hotkey then
    ?>
                set ability_id = '<?= id?>'
    <?
            end
        end
    ?>


    // 遍历物体的所有属性
    <? for key, val in pairs(slk.ability.Aply) do ?>
            set ability_name = "<?= '['..key..'] = ' ?>" + <?= string.format('%q', tostring(val)) ?>
    <? end ?>

endfunction

作者: 我爱天工维度    时间: 2020-3-21 21:28
感谢分享!




欢迎光临 天工维度魔兽争霸开发者社区-全国最大的TJ集中营-原提百万联盟 (http://bbs.mvprpg.com/) Powered by Discuz! X3.4