YN280-随身灭火器(用寒冬背心种随身灭火器,装备后可灭火)
代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 1 2二八0.随身灭火器(用寒冬背心种随身灭火器,装备后可灭火) 3 4 用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/trunkvest.lua文件,在inst.AnimState:SetBuild("armor_trunkvest_winter")的下一行插入以下内容: 5 6local function OnDeploy2(inst, pt) 7 local extinguisher = SpawnPrefab("trunkvest_winter") 8 extinguisher.Transform:SetPosition(pt.x, pt.y, pt.z) 9 extinguisher.AnimState:SetBank("firefighter") 10 extinguisher.AnimState:SetBuild("firefighter") 11 extinguisher.AnimState:PlayAnimation("idle_on_loop") 12 extinguisher.Transform:SetScale(0.5, 0.5, 0.5) 13 extinguisher:RemoveComponent("inventoryitem") 14 extinguisher:RemoveComponent("equippable") 15 extinguisher:RemoveComponent("insulator") 16 extinguisher:RemoveComponent("fueled") 17 extinguisher:RemoveComponent("deployable") 18 extinguisher:AddComponent("workable") 19 extinguisher.components.workable:SetWorkAction(ACTIONS.HAMMER) 20 extinguisher.components.workable:SetWorkLeft(3) 21 extinguisher.components.workable:SetOnFinishCallback(function(extinguisher) 22 SpawnPrefab("collapse_big").Transform:SetPosition(extinguisher.Transform:GetWorldPosition()) 23 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood") 24 extinguisher:Remove() 25 end ) 26 extinguisher:AddComponent("inventoryitem") 27 extinguisher.components.inventoryitem:ChangeImageName("firesuppressor") 28 extinguisher:AddComponent("equippable") 29 extinguisher.components.equippable.equipslot = EQUIPSLOTS.HANDS 30 extinguisher.components.equippable:SetOnEquip(function(extinguisher, owner) 31 extinguisher.task = extinguisher:DoPeriodicTask(1, function(extinguisher) 32 local waterring = SpawnPrefab("groundpoundring_fx") 33 waterring.Transform:SetPosition(owner.Transform:GetWorldPosition()) 34 waterring.AnimState:SetBloomEffectHandle("shaders/anim.ksh") 35 local pos = Vector3(extinguisher.Transform:GetWorldPosition()) 36 local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 10) 37 for k,v in pairs(ents) do 38 if v.components.burnable and v.components.burnable:IsBurning() then 39 if v.prefab == "cactus" or v.prefab == "berrybush" or v.prefab == "berrybush2" or v.prefab == "carrot_planted" or v.prefab == "cave_banana_tree" or v.prefab == "cave_fern" or v.prefab == "deciduoustree" or v.prefab == "deciduoustree_normal" or v.prefab == "deciduoustree_tall" or v.prefab == "deciduoustree_short" or v.prefab == "evergreen" or v.prefab == "evergreen_normal" or v.prefab == "evergreen_tall" or v.prefab == "evergreen_short" or v.prefab == "evergreen_sparse" or v.prefab == "evergreen_sparse_normal" or v.prefab == "evergreen_sparse_tall" or v.prefab == "evergreen_sparse_short" or v.prefab == "flower" or v.prefab == "flower_evil" or v.prefab == "grass" or v.prefab == "marsh_bush" or v.prefab == "red_mushroom" or v.prefab == "green_mushroom" or v.prefab == "blue_mushroom" or v.prefab == "mushtree_tall" or v.prefab == "mushtree_medium" or v.prefab == "mushtree_small" or v.prefab == "sapling" or v.prefab == "flower_cave" or v.prefab == "flower_cave_double" or v.prefab == "flower_cave_triple" or v.prefab == "lichen" or v.prefab == "livingtree" or v.prefab == "marsh_tree" or v.prefab == "reeds" then 40 if v.components.propagator then v.components.propagator.spreading = false end 41 SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition()) 42 SpawnPrefab(v.prefab).Transform:SetPosition(v.Transform:GetWorldPosition()) 43 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/fireOut") 44 v:Remove() 45 end 46 if v.prefab == "treasurechest" or v.prefab == "slow_farmplot" or v.prefab == "fast_farmplot" or v.prefab == "tent" or v.prefab == "wall_wood" or v.prefab == "wall_hay" or v.prefab == "cookpot" or v.prefab == "beebox" or v.prefab == "homesign" or v.prefab == "researchlab" or v.prefab == "researchlab2" or v.prefab == "researchlab3" or v.prefab == "researchlab4" or v.prefab == "meatrack" or v.prefab == "pighouse" or v.prefab == "rabbithouse" or v.prefab == "pottedfern" or v.prefab == "rainometer" or v.prefab == "winterometer" or v.prefab == "resurrectionstatue" or v.prefab == "siestahut" then 47 SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition()) 48 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/fireOut") 49 v.components.burnable:Extinguish(true) 50 end 51 end 52 end 53 end ) 54 end ) 55 extinguisher.components.equippable:SetOnUnequip(function(extinguisher, owner) 56 if extinguisher.task then extinguisher.task:Cancel() extinguisher.task = nil end 57 end ) 58 extinguisher:AddTag("extinguishers") 59 inst:Remove() 60end 61 inst:AddComponent("deployable") 62 inst.components.deployable.ondeploy = OnDeploy2 63local function onsave2(inst, data) 64 if inst:HasTag("extinguishers") then 65 data.extinguishers = true 66 end 67end 68local function onload2(inst, data) 69 if data and data.extinguishers then 70 inst.AnimState:SetBank("firefighter") 71 inst.AnimState:SetBuild("firefighter") 72 inst.AnimState:PlayAnimation("idle_on_loop") 73 inst.Transform:SetScale(0.5, 0.5, 0.5) 74 inst:RemoveComponent("inventoryitem") 75 inst:RemoveComponent("equippable") 76 inst:RemoveComponent("insulator") 77 inst:RemoveComponent("fueled") 78 inst:RemoveComponent("deployable") 79 inst:AddComponent("workable") 80 inst.components.workable:SetWorkAction(ACTIONS.HAMMER) 81 inst.components.workable:SetWorkLeft(3) 82 inst.components.workable:SetOnFinishCallback(function(inst) 83 SpawnPrefab("collapse_big").Transform:SetPosition(inst.Transform:GetWorldPosition()) 84 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood") 85 inst:Remove() 86 end ) 87 inst:AddComponent("inventoryitem") 88 inst.components.inventoryitem:ChangeImageName("firesuppressor") 89 inst:AddComponent("equippable") 90 inst.components.equippable.equipslot = EQUIPSLOTS.HANDS 91 inst.components.equippable:SetOnEquip(function(inst, owner) 92 inst.task = inst:DoPeriodicTask(1, function(inst) 93 local waterring = SpawnPrefab("groundpoundring_fx") 94 waterring.Transform:SetPosition(owner.Transform:GetWorldPosition()) 95 waterring.AnimState:SetBloomEffectHandle("shaders/anim.ksh") 96 local pos = Vector3(inst.Transform:GetWorldPosition()) 97 local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 10) 98 for k,v in pairs(ents) do 99 if v.components.burnable and v.components.burnable:IsBurning() then 100 if v.prefab == "cactus" or v.prefab == "berrybush" or v.prefab == "berrybush2" or v.prefab == "carrot_planted" or v.prefab == "cave_banana_tree" or v.prefab == "cave_fern" or v.prefab == "deciduoustree" or v.prefab == "deciduoustree_normal" or v.prefab == "deciduoustree_tall" or v.prefab == "deciduoustree_short" or v.prefab == "evergreen" or v.prefab == "evergreen_normal" or v.prefab == "evergreen_tall" or v.prefab == "evergreen_short" or v.prefab == "evergreen_sparse" or v.prefab == "evergreen_sparse_normal" or v.prefab == "evergreen_sparse_tall" or v.prefab == "evergreen_sparse_short" or v.prefab == "flower" or v.prefab == "flower_evil" or v.prefab == "grass" or v.prefab == "marsh_bush" or v.prefab == "red_mushroom" or v.prefab == "green_mushroom" or v.prefab == "blue_mushroom" or v.prefab == "mushtree_tall" or v.prefab == "mushtree_medium" or v.prefab == "mushtree_small" or v.prefab == "sapling" or v.prefab == "flower_cave" or v.prefab == "flower_cave_double" or v.prefab == "flower_cave_triple" or v.prefab == "lichen" or v.prefab == "livingtree" or v.prefab == "marsh_tree" or v.prefab == "reeds" then 101 if v.components.propagator then v.components.propagator.spreading = false end 102 SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition()) 103 SpawnPrefab(v.prefab).Transform:SetPosition(v.Transform:GetWorldPosition()) 104 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/fireOut") 105 v:Remove() 106 end 107 if v.prefab == "treasurechest" or v.prefab == "slow_farmplot" or v.prefab == "fast_farmplot" or v.prefab == "tent" or v.prefab == "wall_wood" or v.prefab == "wall_hay" or v.prefab == "cookpot" or v.prefab == "beebox" or v.prefab == "homesign" or v.prefab == "researchlab" or v.prefab == "researchlab2" or v.prefab == "researchlab3" or v.prefab == "researchlab4" or v.prefab == "meatrack" or v.prefab == "pighouse" or v.prefab == "rabbithouse" or v.prefab == "pottedfern" or v.prefab == "rainometer" or v.prefab == "winterometer" or v.prefab == "resurrectionstatue" or v.prefab == "siestahut" then 108 SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition()) 109 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/fireOut") 110 v.components.burnable:Extinguish(true) 111 end 112 end 113 end 114 end ) 115 end ) 116 inst.components.equippable:SetOnUnequip(function(inst, owner) 117 if inst.task then inst.task:Cancel() inst.task = nil end 118 end ) 119 inst:AddTag("extinguishers") 120 end 121end 122 inst.OnSave = onsave2 123 inst.OnLoad = onload2 124 125 即可用寒冬背心种随身灭火器,装备随身灭火器,可向外吹出强气流,靠近着火的建筑、植物,会自动灭火,让你对燃烧的基地不再束手无策。不想要随身灭火器了,用锤子砸掉即可。夏日背心在穿戴选项(画着帽子)下,用1个蓝色象鼻、8个蛛丝制造、2个牛毛制造