YN260-奶报箱(用苔藓种奶报箱,放入黄金,每天清晨送来报纸和5瓶牛奶,读报纸可补脑)
代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 1 2二六0.奶报箱(用苔藓种奶报箱,放入黄金,每天清晨送来报纸和5瓶牛奶,读报纸可补脑) 3 4 用MT管理器打开游戏目录/assets/scripts/prefabs/cutlichen.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: 5 6local function itemtest(inst, item, slot) 7 if item.prefab == "goldnugget" or item.prefab == "goatmilk" or item.prefab == "cutlichen" then 8 return true 9 end 10 return false 11end 12local slotpos = { Vector3(0,32+4,0), Vector3(0,-(32+4),0), Vector3(0,-(64+32+8+4),0)} 13local widgetbuttoninfo = { 14 text = "Buy", 15 position = Vector3(0, 95, 0), 16 fn = function(inst) 17 if inst:HasTag("milkcartons") and inst.components.container:Has("goldnugget", 1) then 18 inst.components.container:ConsumeByName("goldnugget", 1) 19 GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available") 20 local newspaper = SpawnPrefab("cutlichen") 21 newspaper.AnimState:SetBank("blueprint") 22 newspaper.AnimState:SetBuild("blueprint") 23 newspaper.AnimState:PlayAnimation("idle") 24 newspaper.components.inventoryitem:ChangeImageName("blueprint") 25 newspaper.Transform:SetScale(1.2, 1.2, 1.2) 26 newspaper:AddComponent("named") 27 newspaper.components.named:SetName("Newspaper") 28 newspaper:RemoveComponent("stackable") 29 newspaper:RemoveComponent("edible") 30 newspaper:RemoveComponent("perishable") 31 newspaper:RemoveComponent("container") 32 newspaper:RemoveComponent("deployable") 33 newspaper.components.inspectable.getstatus = function(newspaper) 34 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_clothing") 35 GetPlayer().components.sanity:DoDelta(GetPlayer().components.sanity.max) 36 newspaper:Remove() 37 end 38 newspaper:AddTag("newspapers") 39 GetPlayer().components.inventory:GiveItem(newspaper) 40 end 41 end } 42local function OnDeploy (inst, pt) 43 local milkcarton = SpawnPrefab("cutlichen") 44 milkcarton.Transform:SetPosition(pt.x, pt.y, pt.z) 45 milkcarton.AnimState:SetBank("icebox") 46 milkcarton.AnimState:SetBuild("ice_box") 47 milkcarton.AnimState:PlayAnimation("closed") 48 milkcarton.Transform:SetScale(0.6, 0.6, 0.6) 49 milkcarton.AnimState:SetMultColour(0/255,185/255,255/255,1) 50 milkcarton:AddComponent("named") 51 milkcarton.components.named:SetName("Milk carton") 52 milkcarton:RemoveComponent("stackable") 53 milkcarton:RemoveComponent("inventoryitem") 54 milkcarton:RemoveComponent("edible") 55 milkcarton:RemoveComponent("perishable") 56 milkcarton:RemoveComponent("deployable") 57 milkcarton.components.container.canbeopened = true 58 milkcarton:AddComponent("workable") 59 milkcarton.components.workable:SetWorkAction(ACTIONS.HAMMER) 60 milkcarton.components.workable:SetWorkLeft(3) 61 milkcarton.components.workable:SetOnFinishCallback(function(milkcarton) 62 SpawnPrefab("collapse_big").Transform:SetPosition(milkcarton.Transform:GetWorldPosition()) 63 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood") 64 milkcarton:Remove() 65 end ) 66 milkcarton:ListenForEvent( "daytime", function() 67 if milkcarton.components.container:Has("goldnugget", 5) then 68 milkcarton.components.container:ConsumeByName("goldnugget", 5) 69 for k = 1, 5 do 70 local goatmilk = SpawnPrefab("goatmilk") 71 milkcarton.components.container:GiveItem(goatmilk) 72 end 73 local newspaper = SpawnPrefab("cutlichen") 74 newspaper.AnimState:SetBank("blueprint") 75 newspaper.AnimState:SetBuild("blueprint") 76 newspaper.AnimState:PlayAnimation("idle") 77 newspaper.components.inventoryitem:ChangeImageName("blueprint") 78 newspaper.Transform:SetScale(1.2, 1.2, 1.2) 79 newspaper:AddComponent("named") 80 newspaper.components.named:SetName("Newspaper") 81 newspaper:RemoveComponent("stackable") 82 newspaper:RemoveComponent("edible") 83 newspaper:RemoveComponent("perishable") 84 newspaper:RemoveComponent("container") 85 newspaper:RemoveComponent("deployable") 86 newspaper.components.inspectable.getstatus = function(newspaper) 87 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_clothing") 88 GetPlayer().components.sanity:DoDelta(GetPlayer().components.sanity.max) 89 newspaper:Remove() 90 end 91 newspaper:AddTag("newspapers") 92 milkcarton.components.container:GiveItem(newspaper) 93 end 94 end, GetWorld()) 95 milkcarton:AddTag("milkcartons") 96 inst.components.stackable:Get():Remove() 97end 98 inst:AddComponent("deployable") 99 inst.components.deployable.ondeploy = OnDeploy 100 inst.components.deployable.min_spacing = 1 101 inst:AddComponent("container") 102 inst.components.container.widgetbuttoninfo = widgetbuttoninfo 103 inst.components.container:SetNumSlots(#slotpos) 104 inst.components.container.widgetslotpos = slotpos 105 inst.components.container.widgetpos = Vector3(0,150,0) 106 inst.components.container.side_align_tip = 160 107 inst.components.container.canbeopened = false 108 inst.components.container.onopenfn = function(inst) inst.AnimState:PlayAnimation("open") GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/equip_item_gold") end 109 inst.components.container.onclosefn = function(inst) inst.AnimState:PlayAnimation("close") GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/equip_item_gold") end 110 inst.components.container.itemtestfn = itemtest 111 inst:AddTag("fridge") 112local function onsave(inst, data) 113 if inst:HasTag("milkcartons") then 114 data.milkcartons = true 115 end 116 if inst:HasTag("newspapers") then 117 data.newspapers = true 118 end 119end 120local function onload(inst, data) 121 if data and data.milkcartons then 122 inst.AnimState:SetBank("icebox") 123 inst.AnimState:SetBuild("ice_box") 124 inst.AnimState:PlayAnimation("closed") 125 inst.Transform:SetScale(0.6, 0.6, 0.6) 126 inst.AnimState:SetMultColour(0/255,185/255,255/255,1) 127 inst:AddComponent("named") 128 inst.components.named:SetName("Milk carton") 129 inst:RemoveComponent("stackable") 130 inst:RemoveComponent("inventoryitem") 131 inst:RemoveComponent("edible") 132 inst:RemoveComponent("perishable") 133 inst:RemoveComponent("deployable") 134 inst.components.container.canbeopened = true 135 inst:AddComponent("workable") 136 inst.components.workable:SetWorkAction(ACTIONS.HAMMER) 137 inst.components.workable:SetWorkLeft(3) 138 inst.components.workable:SetOnFinishCallback(function(inst) 139 SpawnPrefab("collapse_big").Transform:SetPosition(inst.Transform:GetWorldPosition()) 140 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood") 141 inst:Remove() 142 end ) 143 inst:ListenForEvent( "daytime", function() 144 if inst.components.container:Has("goldnugget", 5) then 145 inst.components.container:ConsumeByName("goldnugget", 5) 146 for k = 1, 5 do 147 local goatmilk = SpawnPrefab("goatmilk") 148 inst.components.container:GiveItem(goatmilk) 149 end 150 local newspaper = SpawnPrefab("cutlichen") 151 newspaper.AnimState:SetBank("blueprint") 152 newspaper.AnimState:SetBuild("blueprint") 153 newspaper.AnimState:PlayAnimation("idle") 154 newspaper.components.inventoryitem:ChangeImageName("blueprint") 155 newspaper.Transform:SetScale(1.2, 1.2, 1.2) 156 newspaper:AddComponent("named") 157 newspaper.components.named:SetName("Newspaper") 158 newspaper:RemoveComponent("stackable") 159 newspaper:RemoveComponent("edible") 160 newspaper:RemoveComponent("perishable") 161 newspaper:RemoveComponent("container") 162 newspaper:RemoveComponent("deployable") 163 newspaper.components.inspectable.getstatus = function(newspaper) 164 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_clothing") 165 GetPlayer().components.sanity:DoDelta(GetPlayer().components.sanity.max) 166 newspaper:Remove() 167 end 168 newspaper:AddTag("newspapers") 169 inst.components.container:GiveItem(newspaper) 170 end 171 end, GetWorld()) 172 inst:AddTag("milkcartons") 173 end 174 if data and data.newspapers then 175 inst.AnimState:SetBank("blueprint") 176 inst.AnimState:SetBuild("blueprint") 177 inst.AnimState:PlayAnimation("idle") 178 inst.components.inventoryitem:ChangeImageName("blueprint") 179 inst.Transform:SetScale(1.2, 1.2, 1.2) 180 inst:AddComponent("named") 181 inst.components.named:SetName("Newspaper") 182 inst:RemoveComponent("stackable") 183 inst:RemoveComponent("edible") 184 inst:RemoveComponent("perishable") 185 inst:RemoveComponent("container") 186 inst:RemoveComponent("deployable") 187 inst.components.inspectable.getstatus = function(inst) 188 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_clothing") 189 GetPlayer().components.sanity:DoDelta(GetPlayer().components.sanity.max) 190 inst:Remove() 191 end 192 inst:AddTag("newspapers") 193 end 194end 195 inst.OnSave = onsave 196 inst.OnLoad = onload 197 198 即可用苔藓种奶报箱,鼠标左键点奶报箱可打开格子,在格子中放入黄金(订奶预付款,最少5个黄金),第二天清晨将送来5瓶牛奶,并免费赠送一份报纸,同时扣除5个黄金。将报纸放入物品栏,对其点鼠标右键可读报,将补满脑值。如果格子中有黄金,点格子上方的“Buy”按钮,可以额外购买报纸,每份1个黄金。如果每天想多订牛奶和报纸,就多种几个奶报箱吧。不想要奶报箱了,用锤子砸毁即可。苔藓可在洞穴中采到。不要与“用苔藓种苔藓(苔藓可移植)”一同修改