代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。
原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html
1
2三0六.生鲜售卖机(用木板种生鲜售卖机,放入生鲜产品,每天清晨自动卖出换黄金)
3
4 用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/boards.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
5
6local function OnDeploy (inst, pt)
7 local vending = SpawnPrefab("boards")
8 vending.Transform:SetPosition(pt.x, pt.y, pt.z)
9 vending.AnimState:SetBank("icebox")
10 vending.AnimState:SetBuild("ice_box")
11 vending.AnimState:PlayAnimation("closed")
12 vending.Transform:SetScale(1.3, 1.3, 1.3)
13 vending.AnimState:SetMultColour(255/255,255/255,0/255,1)
14 vending:RemoveComponent("stackable")
15 vending:RemoveComponent("tradable")
16 vending:RemoveComponent("edible")
17 vending:RemoveComponent("inventoryitem")
18 vending:RemoveComponent("repairer")
19 vending:RemoveComponent("fuel")
20 vending:RemoveComponent("burnable")
21 vending:RemoveComponent("propagator")
22 vending:RemoveComponent("deployable")
23 vending.components.container.canbeopened = true
24 vending:DoPeriodicTask(2, function(vending)
25 vending.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
26 vending:DoTaskInTime(1, function() vending.AnimState:SetBloomEffectHandle("") end )
27 end )
28 vending:AddComponent("workable")
29 vending.components.workable:SetWorkAction(ACTIONS.HAMMER)
30 vending.components.workable:SetWorkLeft(3)
31 vending.components.workable:SetOnFinishCallback(function(vending)
32 SpawnPrefab("collapse_big").Transform:SetPosition(vending.Transform:GetWorldPosition())
33 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
34 vending:Remove()
35 end )
36 vending:ListenForEvent( "daytime", function()
37 local num_found = 0
38 for k,v in pairs(vending.components.container.slots) do
39 if v and v.prefab ~= "goldnugget" and v.prefab ~= "spoiled_food" then
40 num_found = num_found + v.components.stackable:StackSize()
41 v:Remove()
42 end
43 end
44 for k = 1, num_found do
45 local goldnugget = SpawnPrefab("goldnugget")
46 vending.components.container:GiveItem(goldnugget)
47 end
48 end, GetWorld())
49 vending:AddTag("vendings")
50 inst.components.stackable:Get():Remove()
51end
52 inst:AddComponent("deployable")
53 inst.components.deployable.ondeploy = OnDeploy
54local function onsave(inst, data)
55 if inst:HasTag("vendings") then
56 data.vendings = true
57 end
58end
59local function onload(inst, data)
60 if data and data.vendings then
61 inst.AnimState:SetBank("icebox")
62 inst.AnimState:SetBuild("ice_box")
63 inst.AnimState:PlayAnimation("closed")
64 inst.Transform:SetScale(1.3, 1.3, 1.3)
65 inst.AnimState:SetMultColour(255/255,255/255,0/255,1)
66 inst:RemoveComponent("stackable")
67 inst:RemoveComponent("tradable")
68 inst:RemoveComponent("edible")
69 inst:RemoveComponent("inventoryitem")
70 inst:RemoveComponent("repairer")
71 inst:RemoveComponent("fuel")
72 inst:RemoveComponent("burnable")
73 inst:RemoveComponent("propagator")
74 inst:RemoveComponent("deployable")
75 inst.components.container.canbeopened = true
76 inst:DoPeriodicTask(2, function(inst)
77 inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
78 inst:DoTaskInTime(1, function() inst.AnimState:SetBloomEffectHandle("") end )
79 end )
80 inst:AddComponent("workable")
81 inst.components.workable:SetWorkAction(ACTIONS.HAMMER)
82 inst.components.workable:SetWorkLeft(3)
83 inst.components.workable:SetOnFinishCallback(function(inst)
84 SpawnPrefab("collapse_big").Transform:SetPosition(inst.Transform:GetWorldPosition())
85 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
86 inst:Remove()
87 end )
88 inst:ListenForEvent( "daytime", function()
89 local num_found = 0
90 for k,v in pairs(inst.components.container.slots) do
91 if v and v.prefab ~= "goldnugget" and v.prefab ~= "spoiled_food" then
92 num_found = num_found + v.components.stackable:StackSize()
93 v:Remove()
94 end
95 end
96 for k = 1, num_found do
97 local goldnugget = SpawnPrefab("goldnugget")
98 inst.components.container:GiveItem(goldnugget)
99 end
100 end, GetWorld())
101 inst:AddTag("vendings")
102 end
103end
104 inst.OnSave = onsave
105 inst.OnLoad = onload
106local slotpos = {}
107for y = 3, 0, -1 do
108 for x = 0, 2 do
109 table.insert(slotpos, Vector3(75*x-75*2+75, 75*y-75*2+75,0))
110 end
111end
112 inst:AddComponent("container")
113 inst.components.container:SetNumSlots(#slotpos)
114 inst.components.container.widgetslotpos = slotpos
115 inst.components.container.widgetpos = Vector3(0,100,0)
116 inst.components.container.side_align_tip = 160
117 inst.components.container.canbeopened = false
118 inst.components.container.onopenfn = function(inst) inst.AnimState:PlayAnimation("open") GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/equip_item_gold") end
119 inst.components.container.onclosefn = function(inst) inst.AnimState:PlayAnimation("close") GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/equip_item_gold") end
120 inst.components.container.itemtestfn = function(inst, item, slot)
121 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
122 return true
123 end
124 return false
125 end
126 inst:AddTag("fridge")
127
128 即可用木板种生鲜售卖机,鼠标左键点售卖机,可打开格子,将蔬菜和肉类等生鲜产品放入格子中,每天清晨将全部卖出,每个售价1个黄金,结算的黄金在售卖机中领取。有了生鲜售卖机,不用发愁过剩的产品不好销售了。可以出售的生鲜产品包括香蕉、胡萝卜、玉米、南瓜、茄子、榴莲、石榴、火龙果、浆果、仙人掌肉、西瓜、橡果、大肉、小肉、鱼、鳗鱼、鸡腿、鸟蛋、蛙腿、疯肉、黄油、蝴蝶翅膀、苔藓、叶子、蜂蜜、荧光果、红蘑菇、绿蘑菇、蓝蘑菇、花瓣、噩梦花瓣。不想要生鲜售卖机了,用锤子砸掉即可。不要与“用木板种鱼人房”一同修改