渊小乖 发表于 2013-9-29 15:34

yzzn2009 发表于 2013-9-29 15:31 static/image/common/back.gif
好像不是这个,有时候必须要试错才能找到解决问题的方法,你把可能的文件添加区域伤害代码,在游戏中试试 ...
大神你就帮我找找嘛好不求你了:'(

yzzn2009 发表于 2013-9-29 15:41

渊小乖 发表于 2013-9-29 15:34 static/image/common/back.gif
大神你就帮我找找嘛好不求你了

BRSITEM\scripts\prefabs\canno_projectile.lua

打死、烤肉酱 发表于 2013-9-29 15:50

可不可以全人物狂吃疯肉变海狸

yzzn2009 发表于 2013-9-29 15:54

打死、烤肉酱 发表于 2013-9-29 15:50 static/image/common/back.gif
可不可以全人物狂吃疯肉变海狸

理论上可以,但修改过程非常复杂,且要修改许多文件,复制粘帖稍有错误,就导致跳出,太不实用了。我给你看看伍迪变海狸的代码,你就明白了

local function BeaverActionButton(inst)

        local attack_target = inst.components.playercontroller:GetAttackTarget()                        
        if attack_target then
                if inst.components.combat.target ~= attack_target or inst.sg:HasStateTag("idle") then
                        return BufferedAction(inst, attack_target, ACTIONS.ATTACK)
                end
        end

        local action_target = FindEntity(inst, 6, function(guy) return (guy.components.edible and inst.components.eater:CanEat(guy)) or
                                                                                                                      (guy.components.workable and inst.components.worker:CanDoAction(guy.components.workable.action)) end)
       
        if not inst.sg:HasStateTag("busy") and action_target then
                if (action_target.components.edible and inst.components.eater:CanEat(action_target)) then
                        return BufferedAction(inst, action_target, ACTIONS.EAT)
                else
                        return BufferedAction(inst, action_target, action_target.components.workable.action)
                end
        end
end

local function LeftClickPicker(inst, target_ent, pos)
    if inst.components.combat:CanTarget(target_ent) then
      return inst.components.playeractionpicker:SortActionList({ACTIONS.ATTACK}, target_ent, nil)
    end

        if target_ent and target_ent.components.edible and inst.components.eater:CanEat(target_ent) then
                return inst.components.playeractionpicker:SortActionList({ACTIONS.EAT}, target_ent, nil)
        end

    if target_ent and target_ent.components.workable and inst.components.worker:CanDoAction(target_ent.components.workable.action) then
      return inst.components.playeractionpicker:SortActionList({target_ent.components.workable.action}, target_ent, nil)
    end
end

local function RightClickPicker(inst, target_ent, pos)
        return {}
end


local BeaverBadge = Class(Badge, function(self, owner)
        Badge._ctor(self, "beaver_meter", owner)
end)


local function onbeavereat(inst, data)
        if data.food and data.food.components.edible.woodiness and inst.components.beaverness then
                inst.components.beaverness:DoDelta(data.food.components.edible.woodiness)
        end
end

local function beaveractionstring(inst, action)
        return STRINGS.ACTIONS.GNAW
end

local function beaverhurt(inst, delta)
        if delta < 0 then
                inst.sg:PushEvent("attacked")
                inst.components.beaverness:DoDelta(delta*.25)
                TheFrontEnd:GetSound():PlaySound("dontstarve/HUD/health_down")
                inst.HUD.controls.beaverbadge:PulseRed()
                if inst.HUD.bloodover then
                        inst.HUD.bloodover:Flash()
                end
        end
end


local function SetHUDState(inst)
        if inst.HUD then
                if inst.components.beaverness:IsBeaver() and not inst.HUD.controls.beaverbadge then
                        inst.HUD.controls.beaverbadge = GetPlayer().HUD.controls.sidepanel:AddChild(BeaverBadge(inst))
                        inst.HUD.controls.beaverbadge:SetPosition(0,-100,0)
                  inst.HUD.controls.beaverbadge:SetPercent(1)
                       
                        inst.HUD.controls.beaverbadge.inst:ListenForEvent("beavernessdelta", function(_, data)
                                inst.HUD.controls.beaverbadge:SetPercent(inst.components.beaverness:GetPercent(), inst.components.beaverness.max)
                                if not data.overtime then
                                        if data.newpercent > data.oldpercent then
                                                inst.HUD.controls.beaverbadge:PulseGreen()
                                                TheFrontEnd:GetSound():PlaySound("dontstarve/HUD/health_up")
                                        elseif data.newpercent < data.oldpercent then
                                                TheFrontEnd:GetSound():PlaySound("dontstarve/HUD/health_down")
                                                inst.HUD.controls.beaverbadge:PulseRed()
                                        end
                                end
                        end, inst)
                        inst.HUD.controls.crafttabs:Hide()
                        inst.HUD.controls.inv:Hide()
                        inst.HUD.controls.status:Hide()
                        inst.HUD.controls.mapcontrols.minimapBtn:Hide()

                  inst.HUD.beaverOL = inst.HUD.under_root:AddChild(Image("images/woodie.xml", "beaver_vision_OL.tex"))
                  inst.HUD.beaverOL:SetVRegPoint(ANCHOR_MIDDLE)
                  inst.HUD.beaverOL:SetHRegPoint(ANCHOR_MIDDLE)
                  inst.HUD.beaverOL:SetVAnchor(ANCHOR_MIDDLE)
                  inst.HUD.beaverOL:SetHAnchor(ANCHOR_MIDDLE)
                  inst.HUD.beaverOL:SetScaleMode(SCALEMODE_FILLSCREEN)
                  inst.HUD.beaverOL:SetClickable(false)
               
                elseif not inst.components.beaverness:IsBeaver() and inst.HUD.controls.beaverbadge then
                        if inst.HUD.controls.beaverbadge then
                                inst.HUD.controls.beaverbadge:Kill()
                                inst.HUD.controls.beaverbadge = nil
                        end

                        if inst.HUD.beaverOL then
                                inst.HUD.beaverOL:Kill()
                                inst.HUD.beaverOL = nil
                        end

                        inst.HUD.controls.crafttabs:Show()
                        inst.HUD.controls.inv:Show()
                        inst.HUD.controls.status:Show()
                        inst.HUD.controls.mapcontrols.minimapBtn:Show()
                end
        end
end

local function BecomeWoodie(inst)
        inst.beaver = false
    inst.ActionStringOverride = nil
    inst.AnimState:SetBank("wilson")
        inst.AnimState:SetBuild("woodie")
        inst:SetStateGraph("SGwilson")
        inst:RemoveTag("beaver")
       
        inst:RemoveComponent("worker")
        inst.components.talker:StopIgnoringAll()
        inst.components.locomotor.runspeed = TUNING.WILSON_RUN_SPEED
        inst.components.combat:SetDefaultDamage(TUNING.UNARMED_DAMAGE)
       
        inst.components.playercontroller.actionbuttonoverride = nil
        inst.components.playeractionpicker.leftclickoverride = nil
        inst.components.playeractionpicker.rightclickoverride = nil
        inst.components.eater:SetOmnivore()


        inst.components.hunger:Resume()
        inst.components.sanity.ignore = false
        inst.components.health.redirect = nil

        inst.components.beaverness:StartTimeEffect(2, -1)

        inst:RemoveEventCallback("oneatsomething", onbeavereat)
        inst.Light:Enable(false)
    inst.components.dynamicmusic:Enable()
    inst.SoundEmitter:KillSound("beavermusic")
    GetWorld().components.colourcubemanager:SetOverrideColourCube(nil)
        inst.components.temperature:SetTemp(nil)
        inst:DoTaskInTime(0, function() SetHUDState(inst) end)
       
end

local function onworked(inst, data)
        if not inst.components.beaverness:IsBeaver() and data.target and data.target.components.workable and data.target.components.workable.action == ACTIONS.CHOP then
                inst.components.beaverness:DoDelta(3)
                --local dist = easing.linear(inst.components.beaverness:GetPercent(), 0, .1, 1)
                --TheCamera:Shake("SIDE", .15, .05, dist*.66)
        else
                TheCamera:Shake("SIDE", .15, .05, .1)
        end
end


local function BecomeBeaver(inst)
        inst.beaver = true
        inst.ActionStringOverride = beaveractionstring
        inst:AddTag("beaver")
        inst.AnimState:SetBuild("werebeaver_build")
        inst.AnimState:SetBank("werebeaver")
        inst:SetStateGraph("SGwerebeaver")
        inst.components.talker:IgnoreAll()
        inst.components.combat:SetDefaultDamage(TUNING.BEAVER_DAMAGE)

        inst.components.locomotor.runspeed = TUNING.WILSON_RUN_SPEED*1.1
        --inst.components.inventory:DropEverything()
       
        inst.components.playercontroller.actionbuttonoverride = BeaverActionButton
        inst.components.playeractionpicker.leftclickoverride = LeftClickPicker
        inst.components.playeractionpicker.rightclickoverride = RightClickPicker
        inst.components.eater:SetBeaver()

        inst:AddComponent("worker")
        inst.components.worker:SetAction(ACTIONS.DIG, 1)
        inst.components.worker:SetAction(ACTIONS.CHOP, 4)
        inst.components.worker:SetAction(ACTIONS.MINE, 1)
        inst.components.worker:SetAction(ACTIONS.HAMMER, 1)
        inst:ListenForEvent("oneatsomething", onbeavereat)

        inst.components.sanity:SetPercent(1)
        inst.components.health:SetPercent(1)
        inst.components.hunger:SetPercent(1)

        inst.components.hunger:Pause()
        inst.components.sanity.ignore = true
        inst.components.health.redirect = beaverhurt
        inst.components.health.redirect_percent = .25



        local dt = 3
        local BEAVER_DRAIN_TIME = 120
        inst.components.beaverness:StartTimeEffect(dt, (-100/BEAVER_DRAIN_TIME)*dt)
        inst.Light:Enable(true)
    inst.components.dynamicmusic:Disable()
        inst.SoundEmitter:PlaySound("dontstarve/music/music_hoedown", "beavermusic")
    GetWorld().components.colourcubemanager:SetOverrideColourCube("images/colour_cubes/beaver_vision_cc.tex")
    inst.components.temperature:SetTemp(20)
        inst:DoTaskInTime(0, function() SetHUDState(inst) end)

end



local fn = function(inst)
        --inst:ListenForEvent("transform", function() if inst.beaver then BecomeWoodie(inst) else BecomeBeaver(inst) end end)
       
        inst:AddComponent("beaverness")
        inst.components.beaverness.makeperson = BecomeWoodie
        inst.components.beaverness.makebeaver = BecomeBeaver
       
        inst.components.beaverness.onbecomeperson = function()
                inst:PushEvent("transform_person")
        end

        inst.components.beaverness.onbecomebeaver = function()
                inst:PushEvent("transform_werebeaver")
                --BecomeBeaver(inst)
        end

    inst.entity:AddLight()
    inst.Light:Enable(false)
        inst.Light:SetRadius(5)
    inst.Light:SetFalloff(.5)
    inst.Light:SetIntensity(.6)
    inst.Light:SetColour(245/255,40/255,0/255)

local function OnEat(inst, food)
    if food.prefab == "monstermeat" and not inst.components.beaverness:IsBeaver() then
                if not inst.components.beaverness.doing_transform then
                                inst.components.beaverness:SetPercent(1)
      end
    end
end

    inst.components.eater:SetOnEatFn(OnEat)
       

        inst:ListenForEvent("working", onworked)
        inst.components.inventory:GuaranteeItems(prefabs)

        BecomeWoodie(inst)

    inst:ListenForEvent("nighttime", function(global, data)
          if GetClock():GetMoonPhase() == "full" and not inst.components.beaverness:IsBeaver() then
                if not inst.components.beaverness.doing_transform then
                                inst.components.beaverness:SetPercent(1)
                        end
          end
        end, GetWorld())


end

渊小乖 发表于 2013-9-29 15:58

我改插在哪里啊:'(:'(:'(:'(
local assets=
{
        Asset("ANIM", "anim/canno_projectile.zip"),
}

local function OnHit(inst, owner, target)
    inst:Remove()
end

local function common()
        local inst = CreateEntity()
        local trans = inst.entity:AddTransform()
        local anim = inst.entity:AddAnimState()
    MakeInventoryPhysics(inst)
    RemovePhysicsColliders(inst)
   
    anim:SetBank("projectile")
    anim:SetBuild("canno_projectile")
   
    inst:AddTag("projectile")
   
    inst:AddComponent("projectile")
    inst.components.projectile:SetSpeed(80)
    inst.components.projectile:SetOnHitFn(OnHit)
    inst.components.projectile:SetOnMissFn(OnHit)
   
    return inst
end


local function brp()
    local inst = common()
    inst.AnimState:PlayAnimation("ice_spin_loop", true)
        local light = inst.entity:AddLight()
    inst.Light:Enable(true)
        inst.Light:SetRadius(5)
    inst.Light:SetFalloff(1)
    inst.Light:SetIntensity(.7)
    inst.Light:SetColour(44/255,117/255,220/255)
       
    return inst
end



return Prefab( "common/inventory/brs_projectile", brp, assets)
          
      

yzzn2009 发表于 2013-9-29 16:06

渊小乖 发表于 2013-9-29 15:58 static/image/common/back.gif
我改插在哪里啊
local assets=
{


{:3_92:}拜托,我相信你有这个能力,自己对比研究一下(不行就试错),这样最终成功了,你才有成就感

渊小乖 发表于 2013-9-29 16:09

local assets=
{
        Asset("ANIM", "anim/canno_projectile.zip"),
}

local function OnHit(inst, owner, target)
    inst:Remove()
end

local function common()
        local inst = CreateEntity()
        local trans = inst.entity:AddTransform()
        local anim = inst.entity:AddAnimState()
    MakeInventoryPhysics(inst)
    RemovePhysicsColliders(inst)
   
    anim:SetBank("projectile")
    anim:SetBuild("canno_projectile")
   
    inst:AddTag("projectile")
   
    inst:AddComponent("projectile")
    inst.components.projectile:SetSpeed(80)
    inst.components.projectile:SetOnHitFn(OnHit)
    inst.components.projectile:SetOnMissFn(OnHit)
local function OnDeath(inst)
    inst:DoTaskInTime(0, function()
      inst.components.combat:DoAreaAttack(inst, 5)
    end)
end

    inst:AddComponent("combat")
    inst.components.combat:SetDefaultDamage(5000)

    inst:ListenForEvent("animover", OnDeath)   
    return inst
end


local function brp()
    local inst = common()
    inst.AnimState:PlayAnimation("ice_spin_loop", true)
        local light = inst.entity:AddLight()
    inst.Light:Enable(true)
        inst.Light:SetRadius(5)
    inst.Light:SetFalloff(1)
    inst.Light:SetIntensity(.7)
    inst.Light:SetColour(44/255,117/255,220/255)
       
    return inst
end



return Prefab( "common/inventory/brs_projectile", brp, assets)
          
      
我添加了 可是没效果

1344152253 发表于 2013-9-29 16:10

怎么改 传送法杖不掉脑残   

渊小乖 发表于 2013-9-29 16:12

大神哥哥啊你确定是canno_projectile?

yzzn2009 发表于 2013-9-29 16:13

本帖最后由 yzzn2009 于 2013-9-29 20:33 编辑

1344152253 发表于 2013-9-29 16:10 static/image/common/back.gif
怎么改 传送法杖不掉脑残
用紫色魔杖不降脑:用记事本打开游戏目录\data\scripts\prefabs\staff.lua文件,将caster.components.sanity:DoDelta(-TUNING.SANITY_HUGE)替换为caster.components.sanity:DoDelta(0)

yzzn2009 发表于 2013-9-29 16:15

渊小乖 发表于 2013-9-29 16:12 static/image/common/back.gif
大神哥哥啊你确定是canno_projectile?
确定,因为它里面有return Prefab( "common/inventory/brs_projectile", brp, assets),只要你发的枪的文件没错

渊小乖 发表于 2013-9-29 16:18

不会:'(:'(

yzzn2009 发表于 2013-9-29 16:24

渊小乖 发表于 2013-9-29 16:18 static/image/common/back.gif
不会

我现在没时间了,你再试试,晚上再说吧

渊小乖 发表于 2013-9-29 16:30

yzzn2009 发表于 2013-9-29 16:24 static/image/common/back.gif
我现在没时间了,你再试试,晚上再说吧

好你先忙没事谢谢打扰你啦大神

渊小乖 发表于 2013-9-29 17:57

yzzn2009 发表于 2013-9-29 17:30 static/image/common/back.gif
我简单看了看,他的mod中问题很多,他的弹只是个抛射物,不是效果,所以不存在跟随目标和自动消除功能, ...

我就说嘛 就是这样我早就想说了 看来不是我笨是这个MOD做得有问题 我之前自己写了语句加进去所有武器都带范围伤害 我一直在想结果是真的 看来这个MOD我要考虑了

渊小乖 发表于 2013-9-29 17:59

yzzn2009 发表于 2013-9-29 17:30 static/image/common/back.gif
我简单看了看,他的mod中问题很多,他的弹只是个抛射物,不是效果,所以不存在跟随目标和自动消除功能, ...

我是在语句里插入
        local com = owner.components.combat
        inst.ownerAreaHitRange = com.areahitrange
        inst.ownerAreaHitDamagePercent = com.areahitdamagepercent
        com.areahitrange = 5
        com.areahitdamagepercent = 0.5
范围5伤害递减一半结果所有武器都附带这个效果所以还是谢谢大神了 这个问题暂且放一放吧!

1344152253 发表于 2013-9-29 18:26

我突然有个问题 如果都改了的话 会崩溃吗 还是说全改了之后有的代码没反应

1344152253 发表于 2013-9-29 18:51

我要的传送法杖是不掉脑残 不是补脑子

杨昊鹏 发表于 2013-9-29 19:37

楼主以前说了“不掉脑残”修改很麻烦
你先凑合着用吧

杨昊鹏 发表于 2013-9-29 19:39

对了,为什么我在地洞里用不了传送法杖?
我建立传送核心也放了三个宝石,为什么装备法杖按右键只会从天上掉石头?

打死、烤肉酱 发表于 2013-9-29 20:20

可不可以让烧死的树精掉的生命树木不会成灰烬

渊小乖 发表于 2013-9-29 20:24

杨昊鹏 发表于 2013-9-29 19:39 static/image/common/back.gif
对了,为什么我在地洞里用不了传送法杖?
我建立传送核心也放了三个宝石,为什么装备法杖按右键只会从天上 ...

地洞里用就是会让地洞地震这是游戏设定

yzzn2009 发表于 2013-9-29 20:28

杨昊鹏 发表于 2013-9-29 19:39 static/image/common/back.gif
对了,为什么我在地洞里用不了传送法杖?
我建立传送核心也放了三个宝石,为什么装备法杖按右键只会从天上 ...

在地下也能使用紫色魔杖传送到传送核心

    用记事本打开游戏目录\data\scripts\prefabs\staff.lua文件,将下列内容:

    if ground.topology.level_type == "cave" then
      TheCamera:Shake("FULL", 0.3, 0.02, .5, 40)
      ground.components.quaker:MiniQuake(3, 5, 1.5, teleportee)   
      return
    end

    替换为:

    --if ground.topology.level_type == "cave" then
      --TheCamera:Shake("FULL", 0.3, 0.02, .5, 40)
      --ground.components.quaker:MiniQuake(3, 5, 1.5, teleportee)   
      --return
    --end

    即可在地下也能使用紫色魔杖传送到传送核心,但只会传送到地下建的传送核心,而不会传送到地上

yzzn2009 发表于 2013-9-29 20:35

1344152253 发表于 2013-9-29 18:51 static/image/common/back.gif
我要的传送法杖是不掉脑残 不是补脑子
补脑不好吗

用紫色魔杖传送不降脑

    用记事本打开游戏目录\data\scripts\prefabs\staff.lua文件,将caster.components.sanity:DoDelta(-TUNING.SANITY_HUGE)替换为caster.components.sanity:DoDelta(0)

    即可用紫色魔杖传送不降脑

1344152253 发表于 2013-9-29 20:38

yzzn2009 发表于 2013-9-29 20:35 static/image/common/back.gif
补脑不好吗

用紫色魔杖传送不降脑


不是不好我改了加脑残的了我改了太多加脑残的代码了

yzzn2009 发表于 2013-9-29 21:08

打死、烤肉酱 发表于 2013-9-29 20:20 static/image/common/back.gif
可不可以让烧死的树精掉的生命树木不会成灰烬

树精燃烧时死掉活木头

    1.用记事本打开游戏目录\data\scripts\prefabs\livinglog.lua文件,将下列内容:

        MakeSmallBurnable(inst, TUNING.MED_BURNTIME)
    MakeSmallPropagator(inst)

    替换为:

        --MakeSmallBurnable(inst, TUNING.MED_BURNTIME)
    --MakeSmallPropagator(inst)


    2.用记事本打开游戏目录\data\scripts\lootdropper.lua文件,将下列内容:

function LootDropper:DropLoot(pt)
    local prefabs = self:GenerateLoot()
    if not self.inst.components.fueled and self.inst.components.burnable and self.inst.components.burnable:IsBurning() then
      for k,v in pairs(prefabs) do
            local cookedAfter = v.."_cooked"
            local cookedBefore = "cooked"..v
            if PrefabExists(cookedAfter) then
                prefabs = cookedAfter
            elseif PrefabExists(cookedBefore) then
                prefabs = cookedBefore
            else            
                prefabs = "ash"               
            end
      end
    end
    for k,v in pairs(prefabs) do
      self:SpawnLootPrefab(v, pt)
    end
end

    替换为:

function LootDropper:DropLoot(pt)
    local prefabs = self:GenerateLoot()
    for k,v in pairs(prefabs) do
      self:SpawnLootPrefab(v, pt)
    end
end

1344152253 发表于 2013-9-29 22:19

这个 传送法杖不降脑残没用    还是降

yzzn2009 发表于 2013-9-29 22:58

本帖最后由 yzzn2009 于 2013-9-29 23:10 编辑

1344152253 发表于 2013-9-29 22:19 static/image/common/back.gif
这个 传送法杖不降脑残没用    还是降
正常用紫色魔杖传送一次降50点脑,修改后不会减,实测过了,没有问题。你指的没有用,是传送还会降脑吗

如果你指的是夜晚降脑、被打降脑,那是一定的,脑值是变量,只有补脑才能让脑值保持满值

fbi007sos 发表于 2013-9-29 23:26

求教大神 有没有办法 能让背包跟护符同时生效呀?

或者能不能修改成护符使用帽子栏位?

渊小乖 发表于 2013-9-30 03:28

半夜无聊来顶一下 灌个水
页: 41 42 43 44 45 46 47 48 49 50 [51] 52 53 54 55 56 57 58 59 60
查看完整版本: 易宁:饥荒游戏实用修改技巧(非MOD模式,请自行备份)支持海难版——6月6日更新:简化修船工具制作材料(只用木板和绳子)