饥荒mod吧 关注:57,829贴子:235,532

『08-06』【教程攻略】角色特性代码(MOD用)

只看楼主收藏回复

之前一帖太乱 这里整理一下重发 不然不好意思让吧主加精啊(*^__^*)
1L 感谢@触电的士 以及为我提供范例的所有MOD作者
(这贴是要求精的 插楼必删)


IP属地:福建1楼2013-08-06 02:34回复
    首先 先告诉新手们 下面例出的代码是要添加在角色代码文件里的local fn = function 之下
    生命 inst.components.health:SetMaxHealth(x) 修改括号内的X即可设置人物的3围上限
    饥饿 inst.components.hunger:SetMax(x)
    脑残 inst.components.sanity:SetMax(x)
    饥饿消耗速率 inst.components.hunger:SetRate(TUNING.WILSON_HUNGER_RATE*x) x修改为1.5则增加50的饥饿消耗速率 0.5则是减少50的消耗速率
    忽略变质 也就是WX78的功能 inst.components.eater.ignoresspoilage = true
    吃有毒食物不掉血 inst.components.eater.strongstomach = true SAN还是会掉的
    伤害吸收 inst.components.health.absorb = x 也就是天生自带防御 设置为1的话则无敌 = =
    受到多少的火焰伤害 inst.components.health.fire_damage_scale = x 设置为0则像火女一样免疫火伤 0.5为受到一半火焰伤害
    天生自带SAN回复 inst.components.sanity.dapperness = TUNING.DAPPERNESS_LARGE
    将LARGE改为以下语句则可以调整回复速度
    SUPERTINY
    SMALL
    MED
    MEDLARGE
    LARGE
    HUGE
    下面是每个词对应的SAN回复速度(每分钟)
    LARGE SANITY_SUPERTINY = 1,
    SANITY_TINY = 5,
    SANITY_SMALL = 10,
    SANITY_MED = 15,
    SANITY_MEDLARGE = 20,
    SANITY_LARGE = 33,
    SANITY_HUGE = 50,


    IP属地:福建2楼2013-08-06 02:39
    收起回复
      自动回血 inst.components.health:StartRegen(x, y) X是一次回几点 Y是几秒回一次
      黑暗中掉脑残的速率 inst.components.sanity.night_drain_mult = x
      靠近怪物时掉脑残的速率 inst.components.sanity.neg_aura_mult = x
      角色攻击加成 inst.components.combat.damagemultiplier = X 设置为1.5就是大力士的攻击
      攻击间隔 inst.components.combat.min_attack_period = X X越小攻击速度越快 正常人是0.5
      自带科技 inst.components.builder.bonus_tech_level = X X只能为1或者2或者3 对应3个科技 老奶奶的代码就是inst.components.builder.bonus_tech_level = 1
      移动速度 这个不是填倍数 而是直接写基础移动速度
      inst.components.locomotor.walkspeed =x 平时行走时的速度 正常人是6
      inst.components.locomotor.runspeed = x 在路上走时的速度
      inst.components.combat:SetDefaultDamage(x) 这个是人物的空手攻击力 正常人是写10 也就是一拳10点伤害 写68的话就是空手也有影刀的攻击力了
      这个是进入饥饿状态下生命值消耗的速率 inst.components.hunger:SetKillRate(TUNING.WILSON_HEALTH/TUNING.STARVE_KILL_TIME*x)


      IP属地:福建4楼2013-08-06 02:43
      收起回复
        这个是让人物每隔一段时间就在脚下生产出一个物品(参照野牛下米田共)
        inst:AddComponent("periodicspawner")
        inst.components.periodicspawner:SetPrefab("poop")修改括号内的名字决定让人物拉什么(可以拉火焰哦)
        inst.components.periodicspawner:SetRandomTimes(240, 480)这2个数字是间隔 多久拉一次 这段显示的就是 拉翔的间隔是240秒到480秒之间随机的一个值
        inst.components.periodicspawner:SetDensityInRange(-100, 5000000)
        inst.components.periodicspawner:SetMinimumSpacing(50000)
        inst.components.periodicspawner:Start()
        这楼声明一下 本帖不定期更新 以后发现了新的代码还会发出来


        IP属地:福建5楼2013-08-06 02:46
        收起回复
          如果想要让角色再读取TUNING里面的数据的时候和其他角色不一样(例如拿长矛比其他角色的攻击要高) 可以在句柄下添加一个
          if GetPlayer().prefab ~= "x" then X是该角色的名称 然后在下面另起一行
          按照TUNING.x = y的格式对该角色读取TUNING时的数据进行详细的设置 X等于该数据的字符 Y等于详细的数据
          例子:修改攻击基础数据 TUNING原代码是wilson_attack = 34
          想要修改该角色在读取基础攻击系数的话 ,就要添加TUNING.wilson_attack=X
          (新手不要认为这是威吊的攻击,威尔逊的攻击只不过是34这个数字的代码而已 例如长矛的攻击力代码就是SPEAR_DAMAGE = wilson_attack,也就是说SPEAR_DAMAGE = wilson_attack= 34,理解不了我也没辙 )
          在最后要添加一个END(有if就要有end)
          如果想让该角色有用一个独一无二的可制造项目 直接在句柄下添加一段制造项目的代码即可
          制造项目的代码范例
          火炬Recipe("torch", {Ingredient("cutgrass", 2),Ingredient("twigs", 2)}, RECIPETABS.LIGHT, TECH.NONE)
          详细解释一下
          Recipe("制造物品的名称", {Ingredient("材料1", 材料1需要的数量),Ingredient("材料2{可不填}", 材料2需要的数量)}, RECIPETABS.制造项目出现在哪个制造栏, TECH.需要的科技等级 如需要1本科技就先ONE 2本就写TWO 不需要科技出生即可制造则写NONE )


          IP属地:福建6楼2013-08-06 02:55
          收起回复
            出生自带物品
            这个稍微有点复杂
            首先添加一个句柄 local start_inv =
            在这之下添加
            {
            "X",
            }
            X为物品的名称 如果自带多个物品则
            local start_inv =
            {
            "X",
            "X",
            "X",
            }
            注意上面这段代码不能添加在local fn = function下 必须在下面END之下添加
            local fn = function 之下要添加一个inst.components.inventory:GuaranteeItems(start_inv)
            并且必须在return后面的括号里添加一个start_inv (注意格式)


            IP属地:福建7楼2013-08-06 02:58
            收起回复
              接下来发一下种东西MOD的代码
              在要种的东西的文件里面的inst:AddComponent("tradable")之下新起一行代码
              local function OnDeploy (inst, pt)
              local 要种出来的东西的名称 = SpawnPrefab("要种出来的东西的名称")
              if 要种出来的东西的名称 then
              要种出来的东西的名称 :PushEvent("growfrom种下去的东西")
              要种出来的东西的名称 .Transform:SetPosition(pt.x, pt.y, pt.z)
              inst.components.stackable:Get():Remove()
              end
              end
              inst:AddComponent("deployable")
              inst.components.deployable.ondeploy = OnDeploy


              IP属地:福建8楼2013-08-06 03:02
              收起回复
                这俩段是触电提供的代码(我还没怎么研究过0 0)
                增加一个合成栏:
                count = 1
                for _ in pairs(RECIPETABS) do
                count = count + 1
                end
                RECIPETABS["CUSTOMTAB"] = {str = STRINGS.TABS.CUSTOMTAB, sort=count, icon = "mods/evolution/images/customtab.tex"}
                闪电效果:
                local pos = Vector3(target.Transform:GetWorldPosition())
                local lightning = PlayFX(pos, "lightning", "lightning", "anim")
                lightning.AnimState:SetBloomEffectHandle( "data/shaders/anim.ksh" )
                lightning.AnimState:SetLightOverride(1)
                lightning.Transform:SetScale(2,2,2)
                GetClock():DoLightningLighting()
                GetPlayer().SoundEmitter:PlaySound("dontstarve/rain/thunder_close")
                GetPlayer().components.playercontroller:ShakeCamera(lightning, "FULL", 0.7, 0.02, .5, 40)
                local ents = TheSim:FindEntities(pos.x, pos.y, pos.z, 3)
                for k,v in pairs(ents) do
                if not v:IsInLimbo() then
                if v.components.burnable and not v.components.fueled then
                v.components.burnable:Ignite()
                end
                end
                end


                IP属地:福建9楼2013-08-06 03:04
                收起回复
                  暂时先更到这里, 以后还会不定期更新
                  ————————————————END————————————————————
                  (次奥木有红字加粗太尼玛蛋疼了啊啊啊QAQ)


                  IP属地:福建10楼2013-08-06 03:09
                  回复
                    前排


                    11楼2013-08-06 06:55
                    回复
                      前排


                      IP属地:四川来自iPhone客户端12楼2013-08-06 07:08
                      回复
                        额,哦要好好学习学习!!!


                        来自手机贴吧13楼2013-08-06 07:21
                        回复
                          长了知识了,


                          来自手机贴吧14楼2013-08-06 09:01
                          回复
                            modmain 你有没有研究过


                            IP属地:广东15楼2013-08-06 10:03
                            回复
                              楼主弱爆了
                              太有用了


                              IP属地:山东16楼2013-08-06 10:07
                              收起回复