饥荒新手吧 关注:10,557贴子:49,722

7—10【教程】饥荒代码编写

只看楼主收藏回复

教你如何编写饥荒代码,有兴趣的来看看
不定时更


IP属地:江苏来自Android客户端1楼2014-07-10 17:22回复
    二楼


    IP属地:浙江来自Android客户端2楼2014-07-10 17:23
    收起回复
      坐等


      IP属地:山东来自iPhone客户端3楼2014-07-10 17:27
      收起回复
        我正在组织言辞,看看从哪儿说起


        IP属地:江苏来自Android客户端4楼2014-07-10 17:52
        回复
          首先,我们要知道,饥荒是由lua语言写的
          如果你想仔细的了解lua,可以自行百度<<lua程序设计>>(只要你看的懂……)
          其实,饥荒的语言挺容易懂得的,根本不用这么高级的东东


          IP属地:江苏来自Android客户端5楼2014-07-10 18:00
          回复
            lua里一切都是变量,变量的类型有许多,但有三个较为特殊的:true,false,nil
            true表示真,说明什么是对的、有用的,在饥荒里就是说这个功能有用。
            false,即假,于true相对
            nil的用法表示删除此变量,就像没有用过一样


            IP属地:江苏来自Android客户端6楼2014-07-10 18:19
            收起回复
              举几个变量的例子
              ———1
              .牛醒着也可剪牛毛
              用记事本打开游戏目录\data\scripts\prefabs\beefalo文件,将下列内容:
              inst.components.beard.canshavetest = function() if not inst.components.sleeper:IsAsleep() then return false, "AWAKEBEEFALO" end return true end--这里的false表示牛醒时不能剪牛毛
              替换为:
              inst.components.beard.canshavetest = function() if not inst.components.sleeper:IsAsleep() then return true, "AWAKEBEEFALO" end return true end--第一个true表示牛醒着也可以剪牛毛
              ————2
              制造石墙的代码
              Recipe("wall_stone_item", {Ingredient("cutstone", 2)}, RECIPETABS.TOWN, TECH.SCIENCE_TWO,nil,nil,nil,6)--nil就没有的值,空值。最后一个6表示一次造6个。
              通常(别的物品)这个6是没有的就像这样(陷阱) Recipe("trap", {Ingredient("twigs", 2),Ingredient("cutgrass", 6)}, RECIPETABS.SURVIVAL, TECH.NONE),于是,这里被自动写入nil
              但并不是说明造不出陷阱,lua中nil不等于0


              IP属地:江苏来自Android客户端7楼2014-07-10 18:43
              回复
                看懂了不,如果看懂了,接下来进逻辑运算;没有的话我继续讲


                IP属地:江苏来自Android客户端8楼2014-07-10 18:45
                收起回复
                  反正我学过


                  IP属地:浙江来自Android客户端9楼2014-07-10 20:02
                  回复
                    继续


                    IP属地:浙江来自Android客户端10楼2014-07-11 12:52
                    回复
                      接下来讲逻辑运算,这些是运算符号
                      <小于 >大于 ==等于 <=小于或等于 >=大于或等于 ~=不等于 +加 -减 *乘 /除 ^幂
                      相信只要你的数学不是体育老师教的,应该能看懂
                      逻辑运算也有特殊的:and, or
                      从左往右,and求false,true求true
                      饥荒里常用它们作控制语句,或赋值,例子见下楼


                      IP属地:江苏来自Android客户端11楼2014-07-11 20:51
                      收起回复
                        —————1
                        1<2
                        2>1
                        1==1
                        1~=2
                        ……
                        —————2
                        a and b,如果a为真,则看b
                        a or b,如果a为假,则看b


                        IP属地:江苏来自Android客户端12楼2014-07-11 21:01
                        回复
                          —————3
                          这是眼睛炮台里的一句,赋予眼睛炮台攻击目标
                          local function retargetfn(inst)
                          local newtarget = FindEntity(inst, 20, function(guy)
                          return guy.components.combat and --敌人在攻击而且满足CanTarget
                          inst.components.combat:CanTarget(guy) and
                          (guy.components.combat.target == GetPlayer() or GetPlayer().components.combat.target == guy)--怪物的攻击目标是主角或主角攻击目标是怪物
                          end)
                          return newtarget
                          end


                          IP属地:江苏来自Android客户端13楼2014-07-11 21:13
                          收起回复
                            —————4
                            not guy:AddTag("monst")
                            把这句加例3进去就是不攻击有怪物属性的生物


                            IP属地:江苏来自Android客户端14楼2014-07-11 21:26
                            收起回复
                              看懂了不,如果看懂了,接下来讲控制语句;没有的话我继续讲


                              IP属地:江苏来自Android客户端15楼2014-07-11 21:30
                              收起回复