YN260-奶报箱(用苔藓种奶报箱,放入黄金,每天清晨送来报纸和5瓶牛奶,读报纸可补脑)
代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 二六0.奶报箱(用苔藓种奶报箱,放入黄金,每天清晨送来报纸和5瓶牛奶,读报纸可补脑) 用MT管理器打开游戏目录/assets/scripts/prefabs/cutlichen.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: local function itemtest(inst, item, slot) if item.prefab == "goldnugget" or item.prefab == "goatmilk" or item.prefab == "cutlichen" then return true end return false end local slotpos = { Vector3(0,32+4,0), Vector3(0,-(32+4),0), Vector3(0,-(64+32+8+4),0)} local widgetbuttoninfo = { text = "Buy", position = Vector3(0, 95, 0), fn = function(inst) if inst:HasTag("milkcartons") and inst.components.container:Has("goldnugget", 1) then inst.components.container:ConsumeByName("goldnugget", 1) GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available") local newspaper = SpawnPrefab("cutlichen") newspaper.AnimState:SetBank("blueprint") newspaper.AnimState:SetBuild("blueprint") newspaper.AnimState:PlayAnimation("idle") newspaper.components.inventoryitem:ChangeImageName("blueprint") newspaper.Transform:SetScale(1.2, 1.2, 1.2) newspaper:AddComponent("named") newspaper.components.named:SetName("Newspaper") newspaper:RemoveComponent("stackable") newspaper:RemoveComponent("edible") newspaper:RemoveComponent("perishable") newspaper:RemoveComponent("container") newspaper:RemoveComponent("deployable") newspaper.components.inspectable.getstatus = function(newspaper) GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_clothing") GetPlayer().components.sanity:DoDelta(GetPlayer().components.sanity.max) newspaper:Remove() end newspaper:AddTag("newspapers") GetPlayer().components.inventory:GiveItem(newspaper) end end } local function OnDeploy (inst, pt) local milkcarton = SpawnPrefab("cutlichen") milkcarton.Transform:SetPosition(pt.x, pt.y, pt.z) milkcarton.AnimState:SetBank("icebox") milkcarton.AnimState:SetBuild("ice_box") milkcarton.AnimState:PlayAnimation("closed") milkcarton.Transform:SetScale(0.6, 0.6, 0.6) milkcarton.AnimState:SetMultColour(0/255,185/255,255/255,1) milkcarton:AddComponent("named") milkcarton.components.named:SetName("Milk carton") milkcarton:RemoveComponent("stackable") milkcarton:RemoveComponent("inventoryitem") milkcarton:RemoveComponent("edible") milkcarton:RemoveComponent("perishable") milkcarton:RemoveComponent("deployable") milkcarton.components.container.canbeopened = true milkcarton:AddComponent("workable") milkcarton.components.workable:SetWorkAction(ACTIONS.HAMMER) milkcarton.components.workable:SetWorkLeft(3) milkcarton.components.workable:SetOnFinishCallback(function(milkcarton) SpawnPrefab("collapse_big").Transform:SetPosition(milkcarton.Transform:GetWorldPosition()) GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood") milkcarton:Remove() end ) milkcarton:ListenForEvent( "daytime", function() if milkcarton.components.container:Has("goldnugget", 5) then milkcarton.components.container:ConsumeByName("goldnugget", 5) for k = 1, 5 do local goatmilk = SpawnPrefab("goatmilk") milkcarton.components.container:GiveItem(goatmilk) end local newspaper = SpawnPrefab("cutlichen") newspaper.AnimState:SetBank("blueprint") newspaper.AnimState:SetBuild("blueprint") newspaper.AnimState:PlayAnimation("idle") newspaper.components.inventoryitem:ChangeImageName("blueprint") newspaper.Transform:SetScale(1.2, 1.2, 1.2) newspaper:AddComponent("named") newspaper.components.named:SetName("Newspaper") newspaper:RemoveComponent("stackable") newspaper:RemoveComponent("edible") newspaper:RemoveComponent("perishable") newspaper:RemoveComponent("container") newspaper:RemoveComponent("deployable") newspaper.components.inspectable.getstatus = function(newspaper) GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_clothing") GetPlayer().components.sanity:DoDelta(GetPlayer().components.sanity.max) newspaper:Remove() end newspaper:AddTag("newspapers") milkcarton.components.container:GiveItem(newspaper) end end, GetWorld()) milkcarton:AddTag("milkcartons") inst.components.stackable:Get():Remove() end inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy inst.components.deployable.min_spacing = 1 inst:AddComponent("container") inst.components.container.widgetbuttoninfo = widgetbuttoninfo inst.components.container:SetNumSlots(#slotpos) inst.components.container.widgetslotpos = slotpos inst.components.container.widgetpos = Vector3(0,150,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 = itemtest inst:AddTag("fridge") local function onsave(inst, data) if inst:HasTag("milkcartons") then data.milkcartons = true end if inst:HasTag("newspapers") then data.newspapers = true end end local function onload(inst, data) if data and data.milkcartons then inst.AnimState:SetBank("icebox") inst.AnimState:SetBuild("ice_box") inst.AnimState:PlayAnimation("closed") inst.Transform:SetScale(0.6, 0.6, 0.6) inst.AnimState:SetMultColour(0/255,185/255,255/255,1) inst:AddComponent("named") inst.components.named:SetName("Milk carton") inst:RemoveComponent("stackable") inst:RemoveComponent("inventoryitem") inst:RemoveComponent("edible") inst:RemoveComponent("perishable") 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() if inst.components.container:Has("goldnugget", 5) then inst.components.container:ConsumeByName("goldnugget", 5) for k = 1, 5 do local goatmilk = SpawnPrefab("goatmilk") inst.components.container:GiveItem(goatmilk) end local newspaper = SpawnPrefab("cutlichen") newspaper.AnimState:SetBank("blueprint") newspaper.AnimState:SetBuild("blueprint") newspaper.AnimState:PlayAnimation("idle") newspaper.components.inventoryitem:ChangeImageName("blueprint") newspaper.Transform:SetScale(1.2, 1.2, 1.2) newspaper:AddComponent("named") newspaper.components.named:SetName("Newspaper") newspaper:RemoveComponent("stackable") newspaper:RemoveComponent("edible") newspaper:RemoveComponent("perishable") newspaper:RemoveComponent("container") newspaper:RemoveComponent("deployable") newspaper.components.inspectable.getstatus = function(newspaper) GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_clothing") GetPlayer().components.sanity:DoDelta(GetPlayer().components.sanity.max) newspaper:Remove() end newspaper:AddTag("newspapers") inst.components.container:GiveItem(newspaper) end end, GetWorld()) inst:AddTag("milkcartons") end if data and data.newspapers then inst.AnimState:SetBank("blueprint") inst.AnimState:SetBuild("blueprint") inst.AnimState:PlayAnimation("idle") inst.components.inventoryitem:ChangeImageName("blueprint") inst.Transform:SetScale(1.2, 1.2, 1.2) inst:AddComponent("named") inst.components.named:SetName("Newspaper") inst:RemoveComponent("stackable") inst:RemoveComponent("edible") inst:RemoveComponent("perishable") inst:RemoveComponent("container") inst:RemoveComponent("deployable") inst.components.inspectable.getstatus = function(inst) GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_clothing") GetPlayer().components.sanity:DoDelta(GetPlayer().components.sanity.max) inst:Remove() end inst:AddTag("newspapers") end end inst.OnSave = onsave inst.OnLoad = onload 即可用苔藓种奶报箱,鼠标左键点奶报箱可打开格子,在格子中放入黄金(订奶预付款,最少5个黄金),第二天清晨将送来5瓶牛奶,并免费赠送一份报纸,同时扣除5个黄金。将报纸放入物品栏,对其点鼠标右键可读报,将补满脑值。如果格子中有黄金,点格子上方的“Buy”按钮,可以额外购买报纸,每份1个黄金。如果每天想多订牛奶和报纸,就多种几个奶报箱吧。不想要奶报箱了,用锤子砸毁即可。苔藓可在洞穴中采到。不要与“用苔藓种苔藓(苔藓可移植)”一同修改