YN306-生鲜售卖机(用木板种生鲜售卖机,放入生鲜产品,每天清晨自动卖出换黄金)
代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 三0六.生鲜售卖机(用木板种生鲜售卖机,放入生鲜产品,每天清晨自动卖出换黄金) 用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/boards.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: local function OnDeploy (inst, pt) local vending = SpawnPrefab("boards") vending.Transform:SetPosition(pt.x, pt.y, pt.z) vending.AnimState:SetBank("icebox") vending.AnimState:SetBuild("ice_box") vending.AnimState:PlayAnimation("closed") vending.Transform:SetScale(1.3, 1.3, 1.3) vending.AnimState:SetMultColour(255/255,255/255,0/255,1) vending:RemoveComponent("stackable") vending:RemoveComponent("tradable") vending:RemoveComponent("edible") vending:RemoveComponent("inventoryitem") vending:RemoveComponent("repairer") vending:RemoveComponent("fuel") vending:RemoveComponent("burnable") vending:RemoveComponent("propagator") vending:RemoveComponent("deployable") vending.components.container.canbeopened = true vending:DoPeriodicTask(2, function(vending) vending.AnimState:SetBloomEffectHandle("shaders/anim.ksh") vending:DoTaskInTime(1, function() vending.AnimState:SetBloomEffectHandle("") end ) end ) vending:AddComponent("workable") vending.components.workable:SetWorkAction(ACTIONS.HAMMER) vending.components.workable:SetWorkLeft(3) vending.components.workable:SetOnFinishCallback(function(vending) SpawnPrefab("collapse_big").Transform:SetPosition(vending.Transform:GetWorldPosition()) GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood") vending:Remove() end ) vending:ListenForEvent( "daytime", function() local num_found = 0 for k,v in pairs(vending.components.container.slots) do if v and v.prefab ~= "goldnugget" and v.prefab ~= "spoiled_food" then num_found = num_found + v.components.stackable:StackSize() v:Remove() end end for k = 1, num_found do local goldnugget = SpawnPrefab("goldnugget") vending.components.container:GiveItem(goldnugget) end end, GetWorld()) vending:AddTag("vendings") inst.components.stackable:Get():Remove() end inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy local function onsave(inst, data) if inst:HasTag("vendings") then data.vendings = true end end local function onload(inst, data) if data and data.vendings then inst.AnimState:SetBank("icebox") inst.AnimState:SetBuild("ice_box") inst.AnimState:PlayAnimation("closed") inst.Transform:SetScale(1.3, 1.3, 1.3) inst.AnimState:SetMultColour(255/255,255/255,0/255,1) inst:RemoveComponent("stackable") inst:RemoveComponent("tradable") inst:RemoveComponent("edible") inst:RemoveComponent("inventoryitem") inst:RemoveComponent("repairer") inst:RemoveComponent("fuel") inst:RemoveComponent("burnable") inst:RemoveComponent("propagator") inst:RemoveComponent("deployable") inst.components.container.canbeopened = true inst:DoPeriodicTask(2, function(inst) inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh") inst:DoTaskInTime(1, function() inst.AnimState:SetBloomEffectHandle("") end ) end ) 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" and v.prefab ~= "spoiled_food" then num_found = num_found + v.components.stackable:StackSize() v:Remove() end end for k = 1, num_found do local goldnugget = SpawnPrefab("goldnugget") inst.components.container:GiveItem(goldnugget) end end, GetWorld()) inst:AddTag("vendings") end end inst.OnSave = onsave inst.OnLoad = onload local slotpos = {} for y = 3, 0, -1 do for x = 0, 2 do table.insert(slotpos, Vector3(75*x-75*2+75, 75*y-75*2+75,0)) end end inst:AddComponent("container") inst.components.container:SetNumSlots(#slotpos) inst.components.container.widgetslotpos = slotpos inst.components.container.widgetpos = Vector3(0,100,0) inst.components.container.side_align_tip = 160 inst.components.container.canbeopened = false inst.components.container.onopenfn = function(inst) inst.AnimState:PlayAnimation("open") GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/equip_item_gold") end inst.components.container.onclosefn = function(inst) inst.AnimState:PlayAnimation("close") GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/equip_item_gold") end inst.components.container.itemtestfn = function(inst, item, slot) if item.prefab == "cave_banana" or item.prefab == "carrot" or item.prefab == "corn" or item.prefab == "pumpkin" or item.prefab == "eggplant" or item.prefab == "durian" or item.prefab == "pomegranate" or item.prefab == "dragonfruit" or item.prefab == "berries" or item.prefab == "cactus_meat" or item.prefab == "watermelon" or item.prefab == "acorn" or item.prefab == "meat" or item.prefab == "smallmeat" or item.prefab == "fish" or item.prefab == "eel" or item.prefab == "drumstick" or item.prefab == "bird_egg" or item.prefab == "froglegs" or item.prefab == "monstermeat" or item.prefab == "spoiled_food" or item.prefab == "butter" or item.prefab == "butterflywings" or item.prefab == "cutlichen" or item.prefab == "foliage" or item.prefab == "honey" or item.prefab == "lightbulb" or item.prefab == "red_cap" or item.prefab == "green_cap" or item.prefab == "blue_cap" or item.prefab == "petals" or item.prefab == "petals_evil" or item.prefab == "goatmilk" or item.prefab == "goldnugget" then return true end return false end inst:AddTag("fridge") 即可用木板种生鲜售卖机,鼠标左键点售卖机,可打开格子,将蔬菜和肉类等生鲜产品放入格子中,每天清晨将全部卖出,每个售价1个黄金,结算的黄金在售卖机中领取。有了生鲜售卖机,不用发愁过剩的产品不好销售了。可以出售的生鲜产品包括香蕉、胡萝卜、玉米、南瓜、茄子、榴莲、石榴、火龙果、浆果、仙人掌肉、西瓜、橡果、大肉、小肉、鱼、鳗鱼、鸡腿、鸟蛋、蛙腿、疯肉、黄油、蝴蝶翅膀、苔藓、叶子、蜂蜜、荧光果、红蘑菇、绿蘑菇、蓝蘑菇、花瓣、噩梦花瓣。不想要生鲜售卖机了,用锤子砸掉即可。不要与“用木板种鱼人房”一同修改