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

原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html



二八九.自动取款机(用活木头种自动取款机,存入的黄金每天给3%利息)

	用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/livinglog.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:

local function itemtest(inst, item, slot)
	if item.prefab == "goldnugget" then
	   return true
	end
	return false
end
local slotpos = {}
for y = 2, 0, -1 do
	for x = 0, 8 do
		table.insert(slotpos, Vector3(75*x-75*2+75, 75*y-75*2+75,0))
	end
end
local function OnDeploy (inst, pt)
	local bank = SpawnPrefab("livinglog")
	bank.Transform:SetPosition(pt.x, pt.y, pt.z)
	bank.Transform:SetScale(1.5, 1.5, 1.5)
	bank.AnimState:SetBank("ruins_vase")
	bank.AnimState:SetBuild("ruins_vase")
	bank.AnimState:PlayAnimation("idle")
	bank:RemoveComponent("stackable")
	bank:RemoveComponent("fuel")
	bank:RemoveComponent("edible")
	bank:RemoveComponent("inventoryitem")
	bank:RemoveComponent("repairer")
	bank:RemoveComponent("burnable")
	bank:RemoveComponent("propagator")
	bank:RemoveComponent("deployable")
	bank.components.container.canbeopened = true
	bank:AddComponent("workable")
	bank.components.workable:SetWorkAction(ACTIONS.HAMMER)
	bank.components.workable:SetWorkLeft(3)
	bank.components.workable:SetOnFinishCallback(function(bank)
		SpawnPrefab("collapse_big").Transform:SetPosition(bank.Transform:GetWorldPosition())
		GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
		bank:Remove()
	end )
	bank:ListenForEvent( "daytime", function()
		local num_found = 0
		for k,v in pairs(bank.components.container.slots) do
			if v and v.prefab == "goldnugget" then
			   num_found = num_found + v.components.stackable:StackSize()
			end
		end
		local Interests = math.floor(num_found/100*3)
		for k = 1, Interests do
			bank.components.container:ConsumeByName("goldnugget", -1)
		end
	end, GetWorld())
	bank:AddTag("banks")
	inst.components.stackable:Get():Remove()
end
	inst:AddComponent("deployable")
	inst.components.deployable.ondeploy = OnDeploy
local function onsave(inst, data)
	if inst:HasTag("banks") then
		data.banks = true
	end
end
local function onload(inst, data)
  if data and data.banks then
	inst.Transform:SetScale(1.5, 1.5, 1.5)
	inst.AnimState:SetBank("ruins_vase")
	inst.AnimState:SetBuild("ruins_vase")
	inst.AnimState:PlayAnimation("idle")
	inst:RemoveComponent("stackable")
	inst:RemoveComponent("fuel")
	inst:RemoveComponent("edible")
	inst:RemoveComponent("inventoryitem")
	inst:RemoveComponent("repairer")
	inst:RemoveComponent("burnable")
	inst:RemoveComponent("propagator")
	inst:RemoveComponent("deployable")
	inst.components.container.canbeopened = true
	inst:AddComponent("workable")
	inst.components.workable:SetWorkAction(ACTIONS.HAMMER)
	inst.components.workable:SetWorkLeft(3)
	inst.components.workable:SetOnFinishCallback(function(inst)
		SpawnPrefab("collapse_big").Transform:SetPosition(inst.Transform:GetWorldPosition())
		GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
		inst:Remove()
	end )
	inst:ListenForEvent( "daytime", function()
		local num_found = 0
		for k,v in pairs(inst.components.container.slots) do
			if v and v.prefab == "goldnugget" then
			   num_found = num_found + v.components.stackable:StackSize()
			end
		end
		local Interests = math.floor(num_found/100*3)
		for k = 1, Interests do
			inst.components.container:ConsumeByName("goldnugget", -1)
		end
	end, GetWorld())
	inst:AddTag("banks")
  end
end
	inst.OnSave = onsave
	inst.OnLoad = onload
	inst:AddComponent("container")
	inst.components.container:SetNumSlots(#slotpos)
	inst.components.container.widgetslotpos = slotpos
	inst.components.container.widgetpos = Vector3(-100,200,0)
	inst.components.container.side_align_tip = 160
	inst.components.container.canbeopened = false
	inst.components.container.itemtestfn = itemtest

	即可用活木头种自动取款机,鼠标左键点击打开格子,再点击关闭,只能用于存取黄金。将黄金放入取款机,每日天亮时将给予3%利息,不足1个黄金的零头自动抹去(比如存90个黄金,利息为2.7,则只给2个黄金)。土豪们,这是饥荒世界提供的金融服务,将巨款存进去,躺着吃利息吧。如果不想要自动取款机了,用锤子砸掉即可,记住之前把钱取出来哦