代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。
原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html
1
2二三三.垃圾洞(用饥饿腰带种垃圾洞,不想要的物品可扔进去销毁,夜晚自燃,白天熄灭)
3
4 用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/armor_slurper.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
5
6local function wastehole(inst)
7 local pt = inst:GetPosition()
8 local wastehole = SpawnPrefab("armorslurper")
9 wastehole.Transform:SetPosition(pt.x, pt.y, pt.z)
10 wastehole.AnimState:SetBank("tentaclepillar")
11 wastehole.AnimState:SetBuild("tentacle_pillar")
12 wastehole.AnimState:PlayAnimation("idle_hole",true)
13 wastehole.Transform:SetScale(0.5, 0.5, 0.5)
14 wastehole.entity:AddSoundEmitter()
15 MakeObstaclePhysics(wastehole, .5)
16 wastehole:RemoveComponent("inventoryitem")
17 wastehole:RemoveComponent("equippable")
18 wastehole:RemoveComponent("fueled")
19 wastehole:RemoveComponent("deployable")
20 wastehole:RemoveTag("fur")
21 wastehole:RemoveTag("ruins")
22 local minimap = wastehole.entity:AddMiniMapEntity()
23 minimap:SetIcon( "firepit.png" )
24 wastehole:AddComponent("burnable")
25 wastehole.components.burnable:SetFXLevel(5)
26 wastehole.components.burnable:AddBurnFX("character_fire", Vector3(0,1.5,0) )
27 wastehole:ListenForEvent("onignite", function()
28 wastehole:AddComponent("heater")
29 wastehole.components.heater.heat = 50
30 end )
31 wastehole:ListenForEvent("onextinguish", function()
32 wastehole.SoundEmitter:PlaySound("dontstarve/common/fireOut")
33 if wastehole.components.heater then wastehole:RemoveComponent("heater") end
34 end )
35 wastehole:ListenForEvent( "daytime", function() wastehole.components.burnable:Extinguish() end , GetWorld())
36 wastehole:ListenForEvent( "dusktime", function() wastehole.components.burnable:Ignite(true) end , GetWorld())
37 wastehole:ListenForEvent( "nighttime", function() wastehole.components.burnable:Ignite(true) end , GetWorld())
38 if GetClock():IsDay() then
39 wastehole.components.burnable:Extinguish()
40 else
41 wastehole.components.burnable:Ignite(true)
42 end
43 wastehole:AddComponent("workable")
44 wastehole.components.workable:SetWorkAction(ACTIONS.HAMMER)
45 wastehole.components.workable:SetWorkLeft(3)
46 wastehole.components.workable:SetOnFinishCallback(function(wastehole)
47 SpawnPrefab("collapse_big").Transform:SetPosition(wastehole.Transform:GetWorldPosition())
48 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
49 wastehole:Remove()
50 end )
51 local slotpos = { Vector3(0,-75,0)}
52 wastehole:AddComponent("container")
53 wastehole.components.container:SetNumSlots(#slotpos)
54 wastehole.components.container.widgetslotpos = slotpos
55 wastehole.components.container.widgetpos = Vector3(0,600,0)
56 wastehole.components.container.side_align_tip = 160
57 wastehole.components.container.itemtestfn = function(wastehole, item, slot)
58 if item.prefab == "teleportato_ring" or item.prefab == "teleportato_box" or item.prefab == "teleportato_crank" or item.prefab == "teleportato_potato" or item.prefab == "chester_eyebone" or item.prefab == "abigail_flower" or item.prefab == "lucy" or item.prefab == "balloons_empty" or item.prefab == "lighter" or item.prefab == "waxwelljournal" then
59 return false
60 end
61 return true
62 end
63 wastehole:DoPeriodicTask(0.25, function(wastehole)
64 if not wastehole.components.container:IsEmpty() then
65 wastehole.components.container:DestroyContents()
66 wastehole.SoundEmitter:PlaySound("dontstarve/common/destroy_stone")
67 local pt0 = wastehole:GetPosition()
68 SpawnPrefab("collapse_small").Transform:SetPosition(pt0.x, 1, pt0.z)
69 end
70 end )
71 wastehole:AddTag("wastehole")
72end
73local function OnDeploy (inst, pt)
74 wastehole(inst)
75 inst:Remove()
76end
77 inst:AddComponent("deployable")
78 inst.components.deployable.ondeploy = OnDeploy
79local function onsave(inst, data)
80 if inst:HasTag("wastehole") then
81 data.wastehole = true
82 end
83end
84local function onload(inst, data)
85 if data and data.wastehole then
86 wastehole(inst)
87 inst:Remove()
88 end
89end
90 inst.OnSave = onsave
91 inst.OnLoad = onload
92
93 即可用饥饿腰带种垃圾洞,除重要物品外(如露西斧子等),任何不想要的物品都可以扔进去销毁(拿着物品对垃圾洞点鼠标左键),再也不用发愁垃圾越来越多了。垃圾洞里有沼气,在夜晚时会自燃,白天熄灭,可用于照明和取暖,但不能用来烤食物。垃圾洞在小地图上显示为石头营火的图标,不想要垃圾洞时,用锤子砸毁即可。饥饿腰带在魔法选项(画着红骷髅)下,用6个啜食者皮、2个绳子、2个噩梦燃料制造