代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。
原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html
1
2二八九.自动取款机(用活木头种自动取款机,存入的黄金每天给3%利息)
3
4 用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/livinglog.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
5
6local function itemtest(inst, item, slot)
7 if item.prefab == "goldnugget" then
8 return true
9 end
10 return false
11end
12local slotpos = {}
13for y = 2, 0, -1 do
14 for x = 0, 8 do
15 table.insert(slotpos, Vector3(75*x-75*2+75, 75*y-75*2+75,0))
16 end
17end
18local function OnDeploy (inst, pt)
19 local bank = SpawnPrefab("livinglog")
20 bank.Transform:SetPosition(pt.x, pt.y, pt.z)
21 bank.Transform:SetScale(1.5, 1.5, 1.5)
22 bank.AnimState:SetBank("ruins_vase")
23 bank.AnimState:SetBuild("ruins_vase")
24 bank.AnimState:PlayAnimation("idle")
25 bank:RemoveComponent("stackable")
26 bank:RemoveComponent("fuel")
27 bank:RemoveComponent("edible")
28 bank:RemoveComponent("inventoryitem")
29 bank:RemoveComponent("repairer")
30 bank:RemoveComponent("burnable")
31 bank:RemoveComponent("propagator")
32 bank:RemoveComponent("deployable")
33 bank.components.container.canbeopened = true
34 bank:AddComponent("workable")
35 bank.components.workable:SetWorkAction(ACTIONS.HAMMER)
36 bank.components.workable:SetWorkLeft(3)
37 bank.components.workable:SetOnFinishCallback(function(bank)
38 SpawnPrefab("collapse_big").Transform:SetPosition(bank.Transform:GetWorldPosition())
39 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
40 bank:Remove()
41 end )
42 bank:ListenForEvent( "daytime", function()
43 local num_found = 0
44 for k,v in pairs(bank.components.container.slots) do
45 if v and v.prefab == "goldnugget" then
46 num_found = num_found + v.components.stackable:StackSize()
47 end
48 end
49 local Interests = math.floor(num_found/100*3)
50 for k = 1, Interests do
51 bank.components.container:ConsumeByName("goldnugget", -1)
52 end
53 end, GetWorld())
54 bank:AddTag("banks")
55 inst.components.stackable:Get():Remove()
56end
57 inst:AddComponent("deployable")
58 inst.components.deployable.ondeploy = OnDeploy
59local function onsave(inst, data)
60 if inst:HasTag("banks") then
61 data.banks = true
62 end
63end
64local function onload(inst, data)
65 if data and data.banks then
66 inst.Transform:SetScale(1.5, 1.5, 1.5)
67 inst.AnimState:SetBank("ruins_vase")
68 inst.AnimState:SetBuild("ruins_vase")
69 inst.AnimState:PlayAnimation("idle")
70 inst:RemoveComponent("stackable")
71 inst:RemoveComponent("fuel")
72 inst:RemoveComponent("edible")
73 inst:RemoveComponent("inventoryitem")
74 inst:RemoveComponent("repairer")
75 inst:RemoveComponent("burnable")
76 inst:RemoveComponent("propagator")
77 inst:RemoveComponent("deployable")
78 inst.components.container.canbeopened = true
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:ListenForEvent( "daytime", function()
88 local num_found = 0
89 for k,v in pairs(inst.components.container.slots) do
90 if v and v.prefab == "goldnugget" then
91 num_found = num_found + v.components.stackable:StackSize()
92 end
93 end
94 local Interests = math.floor(num_found/100*3)
95 for k = 1, Interests do
96 inst.components.container:ConsumeByName("goldnugget", -1)
97 end
98 end, GetWorld())
99 inst:AddTag("banks")
100 end
101end
102 inst.OnSave = onsave
103 inst.OnLoad = onload
104 inst:AddComponent("container")
105 inst.components.container:SetNumSlots(#slotpos)
106 inst.components.container.widgetslotpos = slotpos
107 inst.components.container.widgetpos = Vector3(-100,200,0)
108 inst.components.container.side_align_tip = 160
109 inst.components.container.canbeopened = false
110 inst.components.container.itemtestfn = itemtest
111
112 即可用活木头种自动取款机,鼠标左键点击打开格子,再点击关闭,只能用于存取黄金。将黄金放入取款机,每日天亮时将给予3%利息,不足1个黄金的零头自动抹去(比如存90个黄金,利息为2.7,则只给2个黄金)。土豪们,这是饥荒世界提供的金融服务,将巨款存进去,躺着吃利息吧。如果不想要自动取款机了,用锤子砸掉即可,记住之前把钱取出来哦