代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。

原帖链接: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个黄金)。土豪们,这是饥荒世界提供的金融服务,将巨款存进去,躺着吃利息吧。如果不想要自动取款机了,用锤子砸掉即可,记住之前把钱取出来哦