YN292-野球拳赌场(用火腿短棍种野球拳赌场,与庄家玩剪刀、石头、布赢奖金)

代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 二九二.野球拳赌场(用火腿短棍种野球拳赌场,与庄家玩剪刀、石头、布赢奖金) 用MT管理器打开游戏目录/assets/scripts/prefabs/hambat.lua文件, 1.在Asset("ANIM", "anim/swap_ham_bat.zip"),的下一行插入以下内容: Asset("ANIM", "anim/wolfgang.zip"), Asset("ANIM", "anim/wolfgang_skinny.zip"), Asset("ANIM", "anim/wolfgang_mighty.zip"), Asset("ANIM", "anim/player_wolfgang.zip"), 2.将inst.OnLoad = OnLoad替换为以下内容: local function game(inst) local pt = inst:GetPosition() local makers = SpawnPrefab("hambat") makers.Transform:SetPosition(pt.x, pt.y, pt.z) makers.AnimState:SetBank("wilson") makers.AnimState:SetBuild("wolfgang") makers.AnimState:Hide("ARM_carry") makers.AnimState:Show("ARM_normal") makers.Transform:SetFourFaced() makers.AnimState:PlayAnimation("idle") makers:RemoveComponent("weapon") makers:RemoveComponent("edible") makers:RemoveComponent("perishable") makers:RemoveComponent("inventoryitem") makers:RemoveComponent("equippable") makers:RemoveTag("show_spoilage") makers:AddTag("makers") local light = makers.entity:AddLight() light:SetFalloff(1) light:SetIntensity(.8) light:SetRadius(10) light:SetColour(180/255, 195/255, 50/255) light:Enable(true) local chest1 = SpawnPrefab("hambat") chest1.Transform:SetPosition(pt.x-1+2, pt.y, pt.z-1-2) chest1.AnimState:SetBank("pandoras_chest_large") chest1.AnimState:SetBuild("pandoras_chest_large") chest1.AnimState:PlayAnimation("closed") chest1.AnimState:SetBloomEffectHandle("shaders/anim.ksh") chest1:RemoveComponent("weapon") chest1:RemoveComponent("edible") chest1:RemoveComponent("perishable") chest1:RemoveComponent("inventoryitem") chest1:RemoveComponent("equippable") chest1:RemoveTag("show_spoilage") chest1:AddTag("goodbye") local chest2 = SpawnPrefab("hambat") chest2.Transform:SetPosition(pt.x-1-2, pt.y, pt.z-1+2) chest2.AnimState:SetBank("pandoras_chest_large") chest2.AnimState:SetBuild("pandoras_chest_large") chest2.AnimState:PlayAnimation("closed") chest2.AnimState:SetBloomEffectHandle("shaders/anim.ksh") chest2:RemoveComponent("weapon") chest2:RemoveComponent("edible") chest2:RemoveComponent("perishable") chest2:RemoveComponent("inventoryitem") chest2:RemoveComponent("equippable") chest2:RemoveTag("show_spoilage") chest2:AddTag("goodbye") local carpet = SpawnPrefab("hambat") carpet.Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5) carpet.AnimState:SetBuild("staff_purple_base_ground") carpet.AnimState:SetBank("staff_purple_base_ground") carpet.AnimState:PlayAnimation("idle") carpet.AnimState:SetOrientation( ANIM_ORIENTATION.OnGround ) carpet.AnimState:SetLayer( LAYER_BACKGROUND ) carpet.AnimState:SetSortOrder( 3 ) carpet.Transform:SetRotation( 45 ) carpet.AnimState:SetMultColour(255/255,0/255,0/255,1) carpet.AnimState:SetBloomEffectHandle("shaders/anim.ksh") carpet:RemoveComponent("weapon") carpet:RemoveComponent("edible") carpet:RemoveComponent("perishable") carpet:RemoveComponent("inventoryitem") carpet:RemoveComponent("equippable") carpet:RemoveTag("show_spoilage") carpet:AddTag("goodbye") carpet:AddComponent("trader") carpet.components.trader:SetAcceptTest(function(carpet, item) if GetPlayer().components.inventory:Has("goldnugget", 11) then if item.prefab == "goldnugget" then return true end end return false end ) carpet.components.trader.onaccept = function(carpet, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 9) makers.AnimState:PlayAnimation("give") local gold = SpawnPrefab("hambat") gold.Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5) gold.AnimState:SetBank("goldnugget") gold.AnimState:SetBuild("gold_nugget") gold.AnimState:PlayAnimation("idle") gold.AnimState:PlayAnimation("sparkle") gold.AnimState:PushAnimation("idle") gold:RemoveComponent("weapon") gold:RemoveComponent("edible") gold:RemoveComponent("perishable") gold:RemoveComponent("inventoryitem") gold:RemoveComponent("equippable") gold:RemoveTag("show_spoilage") gold:AddTag("goodbye") local rock = SpawnPrefab("hambat") rock.Transform:SetPosition(pt.x+4+1.8, 0, pt.z+4-1.8) rock.AnimState:SetBank("rocks") rock.AnimState:SetBuild("rocks") rock.AnimState:PlayAnimation("f1") rock:RemoveComponent("weapon") rock:RemoveComponent("edible") rock:RemoveComponent("perishable") rock:RemoveComponent("inventoryitem") rock:RemoveComponent("equippable") rock:RemoveTag("show_spoilage") rock:AddTag("goodbye") rock.Transform:SetScale(1.2, 1.2, 1.2) rock.AnimState:SetBloomEffectHandle("shaders/anim.ksh") local shears = SpawnPrefab("hambat") shears.Transform:SetPosition(pt.x+4, 0, pt.z+4) shears.AnimState:SetBank("razor") shears.AnimState:SetBuild("razor") shears.AnimState:PlayAnimation("idle") shears:RemoveComponent("weapon") shears:RemoveComponent("edible") shears:RemoveComponent("perishable") shears:RemoveComponent("inventoryitem") shears:RemoveComponent("equippable") shears:RemoveTag("show_spoilage") shears:AddTag("goodbye") shears.Transform:SetScale(1.2, 1.2, 1.2) shears.AnimState:SetBloomEffectHandle("shaders/anim.ksh") local colth = SpawnPrefab("hambat") colth.Transform:SetPosition(pt.x+3.8-1.9, 0, pt.z+3.8+1.9) colth.AnimState:SetBank("blueprint") colth.AnimState:SetBuild("blueprint") colth.AnimState:PlayAnimation("idle") colth:RemoveComponent("weapon") colth:RemoveComponent("edible") colth:RemoveComponent("perishable") colth:RemoveComponent("inventoryitem") colth:RemoveComponent("equippable") colth:RemoveTag("show_spoilage") colth:AddTag("goodbye") colth.Transform:SetScale(1.2, 1.2, 1.2) colth.AnimState:SetBloomEffectHandle("shaders/anim.ksh") local names = {"rocks","razor","blueprint"} local goldnugget = SpawnPrefab("goldnugget") rock.components.inspectable.getstatus = function(rock) makers.AnimState:PlayAnimation("give") local name = names[math.random(#names)] local fist = SpawnPrefab(name) fist.Transform:SetPosition(pt.x+0.7, 0, pt.z+0.7) fist:AddTag("goodbye") fist.Transform:SetScale(1.2, 1.2, 1.2) fist.AnimState:SetBloomEffectHandle("shaders/anim.ksh") fist.components.inventoryitem.canbepickedup = false shears:Remove() colth:Remove() GetPlayer():DoTaskInTime(3, function() rock:Remove() fist:Remove() gold:Remove() end ) if fist.prefab == "rocks" then makers.AnimState:SetBuild("wolfgang") GetPlayer():DoTaskInTime(3, function() for k = 1, 10 do GetPlayer().components.inventory:GiveItem(goldnugget) end end ) end if fist.prefab == "razor" then makers.AnimState:SetBuild("wolfgang_skinny") makers.AnimState:PlayAnimation("hit") GetPlayer():DoTaskInTime(3, function() for k = 1, 20 do GetPlayer().components.inventory:GiveItem(goldnugget) GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/get_gold") end end ) end if fist.prefab == "blueprint" then makers.AnimState:SetBuild("wolfgang_mighty") makers.AnimState:PlayAnimation("idle_onemanband1_loop",true) GetPlayer():DoTaskInTime(3, function() makers.AnimState:PlayAnimation("idle") SpawnPrefab("collapse_small").Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5) GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo") end ) end end shears.components.inspectable.getstatus = function(shears) makers.AnimState:PlayAnimation("give") local name = names[math.random(#names)] local fist = SpawnPrefab(name) fist.Transform:SetPosition(pt.x+0.7, 0, pt.z+0.7) fist:AddTag("goodbye") fist.Transform:SetScale(1.2, 1.2, 1.2) fist.AnimState:SetBloomEffectHandle("shaders/anim.ksh") fist.components.inventoryitem.canbepickedup = false rock:Remove() colth:Remove() GetPlayer():DoTaskInTime(3, function() shears:Remove() fist:Remove() gold:Remove() end ) if fist.prefab == "razor" then makers.AnimState:SetBuild("wolfgang") GetPlayer():DoTaskInTime(3, function() for k = 1, 10 do GetPlayer().components.inventory:GiveItem(goldnugget) end end ) end if fist.prefab == "blueprint" then makers.AnimState:SetBuild("wolfgang_skinny") makers.AnimState:PlayAnimation("hit") GetPlayer():DoTaskInTime(3, function() for k = 1, 20 do GetPlayer().components.inventory:GiveItem(goldnugget) GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/get_gold") end end ) end if fist.prefab == "rocks" then makers.AnimState:SetBuild("wolfgang_mighty") makers.AnimState:PlayAnimation("idle_onemanband1_loop",true) GetPlayer():DoTaskInTime(3, function() makers.AnimState:PlayAnimation("idle") SpawnPrefab("collapse_small").Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5) GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo") end ) end end colth.components.inspectable.getstatus = function(colth) makers.AnimState:PlayAnimation("give") local name = names[math.random(#names)] local fist = SpawnPrefab(name) fist.Transform:SetPosition(pt.x+0.7, 0, pt.z+0.7) fist:AddTag("goodbye") fist.Transform:SetScale(1.2, 1.2, 1.2) fist.AnimState:SetBloomEffectHandle("shaders/anim.ksh") fist.components.inventoryitem.canbepickedup = false shears:Remove() rock:Remove() GetPlayer():DoTaskInTime(3, function() colth:Remove() fist:Remove() gold:Remove() end ) if fist.prefab == "blueprint" then makers.AnimState:SetBuild("wolfgang") GetPlayer():DoTaskInTime(3, function() for k = 1, 10 do GetPlayer().components.inventory:GiveItem(goldnugget) end end ) end if fist.prefab == "rocks" then makers.AnimState:SetBuild("wolfgang_skinny") makers.AnimState:PlayAnimation("hit") GetPlayer():DoTaskInTime(3, function() for k = 1, 20 do GetPlayer().components.inventory:GiveItem(goldnugget) GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/get_gold") end end ) end if fist.prefab == "razor" then makers.AnimState:SetBuild("wolfgang_mighty") makers.AnimState:PlayAnimation("idle_onemanband1_loop",true) GetPlayer():DoTaskInTime(3, function() makers.AnimState:PlayAnimation("idle") SpawnPrefab("collapse_small").Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5) GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo") end ) end end end end local function OnDeploy (inst, pt) game(inst) inst:Remove() end inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy local function onsave(inst, data) if inst:HasTag("makers") then data.makers = true end if inst:HasTag("goodbye") then data.goodbye = true end end local function onload(inst, data) if data and data.makers then game(inst) inst:Remove() end if data and data.goodbye then inst:Remove() end end inst.OnSave = onsave inst.OnLoad = onload MakeLargeBurnable(inst) MakeLargePropagator(inst) 即可用火腿短棍种野球拳赌场,给红色三角10个黄金(拿着黄金对红色三角点鼠标左键),会出现石头、剪子、布选项,用鼠标左键点击要出的选项(比如点石头),庄家会同时出拳。野球拳的规则是,石头赢剪子输布、剪子赢布输石头、布赢石头输剪子。如果胜利则获得本金加10个黄金(共20个黄金),打平退还本金,输了就输掉本金。庄家不会与穷光蛋对赌,在付了10个黄金的本金后,身上至少须保有1个黄金。不想要野球拳赌场时,烧掉即可。火腿短棍在战斗选项(画着两把剑)下,用1个猪皮、2个树枝、2个大肉制造

2025/04/23 · Bny

YN293-网上宠宠店(将鸟、兔子、昆虫、鼹鼠放入网店销售箱在线销售)

代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 二九三.网上宠宠店(将鸟、兔子、昆虫、鼹鼠放入网店销售箱在线销售) 1.用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/rabbit.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: inst:AddComponent("stackable") inst.components.stackable.maxsize = 999 2.用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/birds.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: inst:AddComponent("stackable") inst.components.stackable.maxsize = 999 3.用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/mole.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: inst:AddComponent("stackable") inst.components.stackable.maxsize = 999 4.用MT管理器打开游戏目录/assets/scripts/prefabs/bugnet.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: local function netsell(inst) inst.AnimState:SetBloomEffectHandle( "shaders/anim.ksh" ) inst:DoTaskInTime(3, function() inst.AnimState:SetBloomEffectHandle( "" ) end ) if inst.components.container:Has("goldnugget", 10) then if inst.components.container:Has("bee", 3) then local sellnum = math.random(1,3) inst.components.container:ConsumeByName("bee", sellnum) inst.components.container:ConsumeByName("goldnugget", -sellnum) end if inst.components.container:Has("killerbee", 3) then local sellnum = math.random(1,3) inst.components.container:ConsumeByName("killerbee", sellnum) inst.components.container:ConsumeByName("goldnugget", -sellnum*2) end if inst.components.container:Has("butterfly", 3) then local sellnum = math.random(1,3) inst.components.container:ConsumeByName("butterfly", sellnum) inst.components.container:ConsumeByName("goldnugget", -sellnum) end if inst.components.container:Has("fireflies", 3) then local sellnum = math.random(1,3) inst.components.container:ConsumeByName("fireflies", sellnum) inst.components.container:ConsumeByName("goldnugget", -sellnum*2) end if inst.components.container:Has("crow", 3) then local sellnum = math.random(1,3) inst.components.container:ConsumeByName("crow", sellnum) inst.components.container:ConsumeByName("goldnugget", -sellnum*3) end if inst.components.container:Has("robin", 3) then local sellnum = math.random(1,3) inst.components.container:ConsumeByName("robin", sellnum) inst.components.container:ConsumeByName("goldnugget", -sellnum*3) end if inst.components.container:Has("robin_winter", 3) then local sellnum = math.random(1,3) inst.components.container:ConsumeByName("robin_winter", sellnum) inst.components.container:ConsumeByName("goldnugget", -sellnum*3) end if inst.components.container:Has("rabbit", 3) then local sellnum = math.random(1,3) inst.components.container:ConsumeByName("rabbit", sellnum) inst.components.container:ConsumeByName("goldnugget", -sellnum*2) end if inst.components.container:Has("mole", 3) then local sellnum = math.random(1,3) inst.components.container:ConsumeByName("mole", sellnum) inst.components.container:ConsumeByName("goldnugget", -sellnum*5) end end end local function OnDeploy (inst, pt) if GetPlayer().components.inventory:Has("goldnugget", 200) then GetPlayer().components.inventory:ConsumeByName("goldnugget", 200) local sellbox = SpawnPrefab("bugnet") sellbox.Transform:SetPosition(pt.x, pt.y, pt.z) sellbox.AnimState:SetBank("bee_box") sellbox.AnimState:SetBuild("bee_box") sellbox.AnimState:PlayAnimation("idle") sellbox.AnimState:SetMultColour(0/255,255/255,0/255,1) sellbox.Transform:SetScale(1.2, 1.2, 1.2) sellbox:AddTag("sellbox") sellbox.components.container.canbeopened = true sellbox:RemoveComponent("weapon") sellbox:RemoveComponent("tool") sellbox:RemoveComponent("finiteuses") sellbox:RemoveComponent("inventoryitem") sellbox:RemoveComponent("equippable") sellbox:AddTag("fridge") MakeLargeBurnable(sellbox) inst:Remove() end end inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy local function onsave(inst, data) if inst:HasTag("sellbox") then data.sellbox = true end end local function onload(inst, data) if data and data.sellbox then inst.AnimState:SetBank("bee_box") inst.AnimState:SetBuild("bee_box") inst.AnimState:PlayAnimation("idle") inst.AnimState:SetMultColour(0/255,255/255,0/255,1) inst.Transform:SetScale(1.2, 1.2, 1.2) inst:AddTag("sellbox") inst.components.container.canbeopened = true inst:RemoveComponent("weapon") inst:RemoveComponent("tool") inst:RemoveComponent("finiteuses") inst:RemoveComponent("inventoryitem") inst:RemoveComponent("equippable") inst:AddTag("fridge") MakeLargeBurnable(inst) end end local function itemtest(inst, item, slot) if item.prefab == "goldnugget" or item.prefab == "bee" or item.prefab == "killerbee" or item.prefab == "butterfly" or item.prefab == "fireflies" or item.prefab == "crow" or item.prefab == "robin" or item.prefab == "robin_winter" or item.prefab == "rabbit" or item.prefab == "mole" then return true end return false end local slotpos = {Vector3(75,150,0)} for y = 2, 0, -1 do for x = 0, 4 do table.insert(slotpos, Vector3(75*x-75*2+75, 75*y-75*2+75,0)) 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 inst:DoPeriodicTask(30, function() if inst:HasTag("sellbox") then netsell(inst) end end ) 即可用捕虫网种网店销售箱,将花费200个黄金,身上黄金数不足时,不给网店销售箱。左键点网店销售箱会打开格子,在箱子最顶上的格子里放入10个黄金的保证金,并放入小宠物后(几个品种都可以,但一个品种至少3只),即可在线销售。网店销售箱亮灯时,是在联网结算,打开箱子可看到商品库存的减少、黄金数量的上升,可以取出黄金用于消费,但最顶上的格子里必须保留至少10个黄金的保证金。鼹鼠定价5个黄金,鸟定价3个黄金,杀人蜂、萤火虫、兔子定价2个黄金,蜜蜂、蝴蝶定价1个黄金,当某种商品库存不足3只时,该品种将无人购买,请及时检查并补货。千万不要将黄金放在下面的商品格中,而将最顶上的保证金格子空着,这代表所有商品定价0个黄金,小心被哄抢哦。从此经营自己的网上宠宠店,捕捉小宠物在线销售吧。不需要网店销售箱时,烧掉即可,记得取出黄金和商品哦

2025/04/23 · Bny

YN294-采矿场(用多功能工具种采矿场,打工赚黄金,买卖宝石)

代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 二九四.采矿场(用多功能工具种采矿场,打工赚黄金,买卖宝石) 用MT管理器打开游戏目录/assets/scripts/prefabs/axe_pickaxe.lua文件, 1.在Asset("ANIM", "anim/swap_multitool_axe_pickaxe.zip"),的下一行插入以下内容: Asset("ANIM", "anim/wolfgang.zip"), Asset("ANIM", "anim/wolfgang_skinny.zip"), Asset("ANIM", "anim/wolfgang_mighty.zip"), Asset("ANIM", "anim/player_wolfgang.zip"), Asset("SOUND", "sound/wolfgang.fsb"), 2.在inst:AddComponent("inspectable")的下一行插入以下内容: local function mining(inst) local pt = inst:GetPosition() local boss = SpawnPrefab("multitool_axe_pickaxe") boss.Transform:SetPosition(pt.x, pt.y, pt.z) boss.AnimState:SetBank("wilson") boss.AnimState:SetBuild("wolfgang") boss.AnimState:Hide("ARM_carry") boss.AnimState:Show("ARM_normal") boss.Transform:SetFourFaced() boss.AnimState:OverrideSymbol("swap_hat", "hat_miner", "swap_hat") boss.AnimState:Show("HAT") boss.AnimState:Show("HAT_HAIR") boss.AnimState:Hide("HAIR_NOHAT") boss.AnimState:Hide("HAIR") boss.AnimState:PlayAnimation("idle") boss:AddTag("boss") boss:RemoveComponent("weapon") boss:RemoveComponent("tool") boss:RemoveComponent("finiteuses") boss:RemoveComponent("inventoryitem") boss:RemoveComponent("equippable") boss:RemoveComponent("deployable") boss:RemoveTag("sharp") local light = boss.entity:AddLight() light:SetFalloff(1) light:SetIntensity(.8) light:SetRadius(5) light:SetColour(180/255, 195/255, 50/255) light:Enable(true) boss:AddComponent("trader") boss.components.trader:SetAcceptTest(function(boss, item) if item.prefab == "goldnugget" then return true end if item.prefab == "purplegem" or item.prefab == "bluegem" or item.prefab == "redgem" or item.prefab == "orangegem" or item.prefab == "yellowgem" or item.prefab == "greengem" then return true end return false end ) boss.components.trader.onaccept = function(boss, giver, item) boss.AnimState:PlayAnimation("give") if item.prefab == "goldnugget" then SpawnPrefab("pickaxe").Transform:SetPosition(pt.x+0.5, 0, pt.z+0.5) end if item.prefab == "purplegem" or item.prefab == "bluegem" or item.prefab == "redgem" or item.prefab == "orangegem" or item.prefab == "yellowgem" or item.prefab == "greengem" then SpawnPrefab("goldnugget").Transform:SetPosition(pt.x+0.5, 0, pt.z+0.5) end end boss.components.inspectable.getstatus = function(boss) boss.AnimState:PlayAnimation("give") local rock = SpawnPrefab("multitool_axe_pickaxe") rock.Transform:SetPosition(pt.x+1.5, 0, pt.z+1.5) rock.AnimState:SetBank("rock") rock.AnimState:SetBuild("rock") rock.AnimState:PlayAnimation("full") rock.Transform:SetScale(0.5, 0.5, 0.5) rock:AddTag("goodbye") rock:RemoveComponent("weapon") rock:RemoveComponent("tool") rock:RemoveComponent("finiteuses") rock:RemoveComponent("inventoryitem") rock:RemoveComponent("equippable") rock:RemoveComponent("deployable") rock:RemoveTag("sharp") rock:AddComponent("workable") rock.components.workable:SetWorkAction(ACTIONS.MINE) rock.components.workable:SetWorkLeft(30) rock.components.workable:SetOnWorkCallback(function(rock, worker, workleft) if rock.components.workable.workleft <= 0 then rock.SoundEmitter:PlaySound("dontstarve/wilson/rock_break") boss.AnimState:PlayAnimation("give") for k = 1, 3 do SpawnPrefab("goldnugget").Transform:SetPosition(pt.x+0.5, 0, pt.z-0.5) end rock:Remove() else if rock.components.workable.workleft < 10 then rock.AnimState:PlayAnimation("low") elseif rock.components.workable.workleft < 20 then rock.AnimState:PlayAnimation("med") else rock.AnimState:PlayAnimation("full") end end end) end local mountain = SpawnPrefab("multitool_axe_pickaxe") mountain.Transform:SetPosition(pt.x-2, 0, pt.z-2) mountain.AnimState:SetBank("rock2") mountain.AnimState:SetBuild("rock2") mountain.AnimState:PlayAnimation("full") mountain.Transform:SetScale(2, 2, 2) mountain:AddTag("goodbye") mountain:RemoveComponent("weapon") mountain:RemoveComponent("tool") mountain:RemoveComponent("finiteuses") mountain:RemoveComponent("inventoryitem") mountain:RemoveComponent("equippable") mountain:RemoveComponent("deployable") mountain:RemoveTag("sharp") local miner = SpawnPrefab("multitool_axe_pickaxe") miner.Transform:SetPosition(pt.x+3-2, 0, pt.z-3-2) miner.AnimState:SetBank("wilson") miner.AnimState:SetBuild("wes") miner.Transform:SetFourFaced() miner.AnimState:OverrideSymbol("swap_hat", "hat_miner", "swap_hat") miner.AnimState:Show("HAT") miner.AnimState:Show("HAT_HAIR") miner.AnimState:Hide("HAIR_NOHAT") miner.AnimState:Hide("HAIR") miner.AnimState:OverrideSymbol("swap_object", "swap_pickaxe", "swap_pickaxe") miner.AnimState:Show("ARM_carry") miner.AnimState:Hide("ARM_normal") miner.AnimState:PlayAnimation("pickaxe_pre") miner.AnimState:PlayAnimation("pickaxe_loop", true) miner.Transform:SetRotation( 270 ) miner:AddTag("goodbye") miner:RemoveComponent("weapon") miner:RemoveComponent("tool") miner:RemoveComponent("finiteuses") miner:RemoveComponent("inventoryitem") miner:RemoveComponent("equippable") miner:RemoveComponent("deployable") miner:RemoveTag("sharp") miner:DoPeriodicTask(30, function() miner.AnimState:PlayAnimation("pickaxe_pre") miner.AnimState:PlayAnimation("pickaxe_loop", true) miner.Transform:SetRotation( 270 ) end ) miner:AddComponent("trader") miner.components.trader:SetAcceptTest(function(miner, item) if item.prefab == "goldnugget" then return true end return false end ) miner.components.trader.onaccept = function(miner, giver, item) miner.AnimState:PlayAnimation("give") miner.Transform:SetRotation(GetPlayer().Transform:GetRotation() - 180) local names = {"purplegem","bluegem","redgem","orangegem","yellowgem","greengem"} local name = names[math.random(#names)] local gem = SpawnPrefab(name) GetPlayer().components.inventory:GiveItem(gem) end end local function OnDeploy (inst, pt) mining(inst) inst:Remove() end inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy local function onsave(inst, data) if inst:HasTag("boss") then data.boss = true end if inst:HasTag("goodbye") then data.goodbye = true end end local function onload(inst, data) if data and data.boss then mining(inst) inst:Remove() end if data and data.goodbye then inst:Remove() end end inst.OnSave = onsave inst.OnLoad = onload MakeLargeBurnable(inst) MakeLargePropagator(inst) 即可用多功能工具种采矿场,鼠标左键点工头(大力士),他会拿出要你加工的石头,用镐将石头凿碎,即可获得3个黄金的工钱(工头会扔在地上)。可以向工头购买镐(拿着黄金对工头点鼠标左键),每把1个黄金。也可以将自己的宝石卖给工头(拿着宝石对工头点鼠标左键),每颗1个黄金。当然也可以私下向矿工(维斯)购买宝石(拿着黄金对矿工点鼠标左键),同样每颗1个黄金(宝石将直接放入主角物品栏),颜色随机。不想要采矿场时,烧掉即可。多功能工具在远古选项(画着远古祭坛)下,用1把黄金斧头、1把黄金镐、2个铥矿石制造,制造时需要靠近远古祭坛

2025/04/23 · Bny

YN295-雇佣兵工厂(用大理石盔甲种兵工厂,打工赚黄金,购买机械雇佣兵)

代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 二九五.雇佣兵工厂(用大理石盔甲种兵工厂,打工赚黄金,购买机械雇佣兵) 1.用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/rook.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: local function onsave(inst, data) if inst:HasTag("retinue") then data.retinue = true end if inst:HasTag("highretinue") then data.highretinue = true end if inst:HasTag("letgo") then data.letgo = true end end local function onload(inst, data) if data and data.retinue then inst.components.health:SetMaxHealth(1000) inst.components.combat:SetDefaultDamage(100) inst:RemoveTag("monster") inst:AddTag("retinue") local minimap = inst.entity:AddMiniMapEntity() minimap:SetIcon( "chessjunk.png" ) inst.components.locomotor:Stop() inst:SetBrain(nil) inst.components.follower:SetLeader(nil) inst.components.inspectable.getstatus = function(inst) if not inst:HasTag("letgo") then local brain = require "brains/rookbrain" inst:SetBrain(brain) inst:RestartBrain() inst.components.follower:SetLeader(GetPlayer()) inst:AddTag("letgo") else inst.components.locomotor:Stop() inst:SetBrain(nil) inst.components.follower:SetLeader(nil) inst:RemoveTag("letgo") end end inst:AddComponent("trader") inst.components.trader:SetAcceptTest(function(inst, item) if GetPlayer().components.inventory:Has("goldnugget", 50) then if item.prefab == "goldnugget" then return true end end return false end ) inst.components.trader.onaccept = function(inst, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 49) GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup") inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh") inst.components.health:SetMaxHealth(2000) inst.components.health:DoDelta(2000) inst.components.combat:SetDefaultDamage(200) inst:AddTag("highretinue") inst.components.locomotor.walkspeed = 15 inst.components.locomotor.runspeed = 20 end inst.Physics:SetCollisionCallback(function(inst, other) if other and other.components.workable and other.components.workable.workleft > 0 then SpawnPrefab("collapse_small").Transform:SetPosition(other:GetPosition():Get()) other.components.workable:Destroy(inst) end end) inst.components.locomotor.walkspeed = 10 inst.components.locomotor.runspeed = 15 inst.components.combat:SetAttackPeriod( 1 ) inst.components.combat:SetRetargetFunction(3, function(inst) if not inst.components.health:IsDead() then return FindEntity(inst, 20, function(guy) if guy.components.health and not guy.components.health:IsDead() then return guy.components.combat.target == GetPlayer() or GetPlayer().components.combat.target == guy or guy:HasTag("monster") end end) end end ) inst.components.combat:SetKeepTargetFunction(function(inst, target) return target and target:IsValid() end ) if data and data.highretinue then inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh") inst.components.health:SetMaxHealth(2000) inst.components.combat:SetDefaultDamage(200) inst:AddTag("highretinue") inst.components.locomotor.walkspeed = 15 inst.components.locomotor.runspeed = 20 end if data and data.letgo then local brain = require "brains/rookbrain" inst:SetBrain(brain) inst:RestartBrain() inst.components.follower:SetLeader(GetPlayer()) inst:AddTag("letgo") end end end inst.OnSave = onsave inst.OnLoad = onload 2.用MT管理器打开游戏目录/assets/scripts/prefabs/bishop.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: local function onsave(inst, data) if inst:HasTag("retinue") then data.retinue = true end if inst:HasTag("highretinue") then data.highretinue = true end if inst:HasTag("letgo") then data.letgo = true end end local function onload(inst, data) if data and data.retinue then inst.components.health:SetMaxHealth(500) inst.components.combat:SetDefaultDamage(30) inst:RemoveTag("monster") inst:AddTag("retinue") local minimap = inst.entity:AddMiniMapEntity() minimap:SetIcon( "chessjunk.png" ) inst.components.locomotor:Stop() inst:SetBrain(nil) inst.components.follower:SetLeader(nil) inst.components.inspectable.getstatus = function(inst) if not inst:HasTag("letgo") then local brain = require "brains/rookbrain" inst:SetBrain(brain) inst:RestartBrain() inst.components.follower:SetLeader(GetPlayer()) inst:AddTag("letgo") else inst.components.locomotor:Stop() inst:SetBrain(nil) inst.components.follower:SetLeader(nil) inst:RemoveTag("letgo") end end inst:AddComponent("trader") inst.components.trader:SetAcceptTest(function(inst, item) if GetPlayer().components.inventory:Has("goldnugget", 30) then if item.prefab == "goldnugget" then return true end end return false end ) inst.components.trader.onaccept = function(inst, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 29) GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup") inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh") inst.components.health:SetMaxHealth(1000) inst.components.health:DoDelta(1000) inst.components.combat:SetDefaultDamage(60) inst:AddTag("highretinue") inst.components.locomotor.walkspeed = 15 end inst.components.locomotor.walkspeed = 10 inst.components.combat:SetAttackPeriod( 0.5 ) inst.components.combat:SetRetargetFunction(3, function(inst) if not inst.components.health:IsDead() then return FindEntity(inst, 20, function(guy) if guy.components.health and not guy.components.health:IsDead() then return guy.components.combat.target == GetPlayer() or GetPlayer().components.combat.target == guy or guy:HasTag("monster") end end) end end ) inst.components.combat:SetKeepTargetFunction(function(inst, target) return target and target:IsValid() end ) if data and data.highretinue then inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh") inst.components.health:SetMaxHealth(1000) inst.components.combat:SetDefaultDamage(60) inst:AddTag("highretinue") inst.components.locomotor.walkspeed = 15 end if data and data.letgo then local brain = require "brains/rookbrain" inst:SetBrain(brain) inst:RestartBrain() inst.components.follower:SetLeader(GetPlayer()) inst:AddTag("letgo") end end end inst.OnSave = onsave inst.OnLoad = onload 3.用MT管理器打开游戏目录/assets/scripts/prefabs/knight.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: local function onsave(inst, data) if inst:HasTag("retinue") then data.retinue = true end if inst:HasTag("highretinue") then data.highretinue = true end if inst:HasTag("letgo") then data.letgo = true end end local function onload(inst, data) if data and data.retinue then inst.components.health:SetMaxHealth(500) inst.components.combat:SetDefaultDamage(15) inst:RemoveTag("monster") inst:AddTag("retinue") local minimap = inst.entity:AddMiniMapEntity() minimap:SetIcon( "chessjunk.png" ) inst.components.locomotor:Stop() inst:SetBrain(nil) inst.components.follower:SetLeader(nil) inst.components.inspectable.getstatus = function(inst) if not inst:HasTag("letgo") then local brain = require "brains/rookbrain" inst:SetBrain(brain) inst:RestartBrain() inst.components.follower:SetLeader(GetPlayer()) inst:AddTag("letgo") else inst.components.locomotor:Stop() inst:SetBrain(nil) inst.components.follower:SetLeader(nil) inst:RemoveTag("letgo") end end inst:AddComponent("trader") inst.components.trader:SetAcceptTest(function(inst, item) if GetPlayer().components.inventory:Has("goldnugget", 15) then if item.prefab == "goldnugget" then return true end end return false end ) inst.components.trader.onaccept = function(inst, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 14) GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup") inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh") inst.components.health:SetMaxHealth(1000) inst.components.health:DoDelta(1000) inst.components.combat:SetDefaultDamage(30) inst:AddTag("highretinue") inst.components.locomotor.walkspeed = 15 end inst.components.locomotor.walkspeed = 10 inst.components.combat:SetAttackPeriod( 0.5 ) inst.components.combat:SetRetargetFunction(3, function(inst) if not inst.components.health:IsDead() then return FindEntity(inst, 20, function(guy) if guy.components.health and not guy.components.health:IsDead() then return guy.components.combat.target == GetPlayer() or GetPlayer().components.combat.target == guy or guy:HasTag("monster") end end) end end ) inst.components.combat:SetKeepTargetFunction(function(inst, target) return target and target:IsValid() end ) if data and data.highretinue then inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh") inst.components.health:SetMaxHealth(1000) inst.components.combat:SetDefaultDamage(30) inst:AddTag("highretinue") inst.components.locomotor.walkspeed = 15 end if data and data.letgo then local brain = require "brains/rookbrain" inst:SetBrain(brain) inst:RestartBrain() inst.components.follower:SetLeader(GetPlayer()) inst:AddTag("letgo") end end end inst.OnSave = onsave inst.OnLoad = onload 4.用MT管理器打开游戏目录/assets/scripts/prefabs/armor_marble.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: local function repairshop(inst) local pt = inst:GetPosition() local repairboss = SpawnPrefab("armormarble") repairboss.Transform:SetPosition(pt.x, pt.y, pt.z) repairboss.AnimState:SetBank("wilson") repairboss.AnimState:SetBuild("wx78") repairboss.AnimState:OverrideSymbol("swap_hat", "hat_top", "swap_hat") repairboss.AnimState:Show("HAT") repairboss.AnimState:Show("HAT_HAIR") repairboss.AnimState:Hide("HAIR_NOHAT") repairboss.AnimState:Hide("HAIR") repairboss.AnimState:OverrideSymbol("swap_body", "armor_marble", "swap_body") repairboss.AnimState:OverrideSymbol("swap_object", "swap_hammer", "swap_hammer") repairboss.AnimState:Show("ARM_carry") repairboss.AnimState:Hide("ARM_normal") repairboss.Transform:SetFourFaced() repairboss.AnimState:PlayAnimation("idle") repairboss:AddTag("repairboss") repairboss.components.inventoryitem.canbepickedup = false local light = repairboss.entity:AddLight() light:SetFalloff(1) light:SetIntensity(.8) light:SetRadius(10) light:SetColour(180/255, 195/255, 50/255) light:Enable(true) repairboss:AddComponent("trader") repairboss.components.trader:SetAcceptTest(function(repairboss, item) if item.prefab == "goldnugget" then return true end return false end ) repairboss.components.trader.onaccept = function(repairboss, giver, item) repairboss.AnimState:PlayAnimation("give") SpawnPrefab("hammer").Transform:SetPosition(pt.x+0.5, 0, pt.z+0.5) end repairboss.components.inspectable.getstatus = function(repairboss) repairboss.AnimState:PlayAnimation("give") GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_stone") local chessjunk = SpawnPrefab("armormarble") chessjunk.Transform:SetPosition(pt.x+3.1, 0, pt.z+3.1) chessjunk.AnimState:SetBank("chessmonster_ruins") chessjunk.AnimState:SetBuild("chessmonster_ruins") chessjunk.AnimState:PlayAnimation("idle3") chessjunk:AddTag("goodbye") chessjunk.components.inventoryitem.canbepickedup = false chessjunk:AddComponent("workable") chessjunk.components.workable:SetWorkAction(ACTIONS.HAMMER) chessjunk.components.workable:SetWorkLeft(30) chessjunk.components.workable:SetOnWorkCallback(function(chessjunk, worker, workleft) if chessjunk.components.workable.workleft <= 0 then GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/chessjunk_break") chessjunk:Remove() local goods = SpawnPrefab("armormarble") goods.Transform:SetPosition(pt.x+3.1, 0, pt.z+3.1) goods:AddTag("goodbye") goods.components.inventoryitem.canbepickedup = false if math.random()<.33 then goods.AnimState:SetBank("rook") goods.AnimState:SetBuild("rook_nightmare") goods.AnimState:PlayAnimation("idle") goods.Transform:SetScale(0.66, 0.66, 0.66) elseif math.random()<.66 then goods.AnimState:SetBank("bishop") goods.AnimState:SetBuild("bishop_nightmare") goods.AnimState:PlayAnimation("idle_loop", true) else goods.AnimState:SetBank("knight") goods.AnimState:SetBuild("knight_nightmare") goods.AnimState:PlayAnimation("idle_loop", true) end GetPlayer():DoTaskInTime(2, function() repairboss.AnimState:PlayAnimation("give") GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/get_gold") for k = 1, 3 do SpawnPrefab("goldnugget").Transform:SetPosition(pt.x+0.5, 0, pt.z-0.5) end goods:Remove() end ) else if chessjunk.components.workable.workleft < 10 then chessjunk.AnimState:PlayAnimation("idle1") elseif chessjunk.components.workable.workleft < 20 then chessjunk.AnimState:PlayAnimation("idle2") else chessjunk.AnimState:PlayAnimation("idle3") end end end) end local chessjunk1 = SpawnPrefab("armormarble") chessjunk1.Transform:SetPosition(pt.x-3, 0, pt.z-3) chessjunk1.AnimState:SetBank("rook") chessjunk1.AnimState:SetBuild("rook_nightmare") chessjunk1.Transform:SetFourFaced() chessjunk1.AnimState:PlayAnimation("idle") chessjunk1.Transform:SetScale(0.66, 0.66, 0.66) chessjunk1:AddTag("goodbye") chessjunk1.components.inventoryitem.canbepickedup = false chessjunk1:AddComponent("trader") chessjunk1.components.trader:SetAcceptTest(function(chessjunk1, item) if GetPlayer().components.inventory:Has("goldnugget", 50) then if item.prefab == "goldnugget" then return true end end return false end ) chessjunk1.components.trader.onaccept = function(chessjunk1, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 49) repairboss.AnimState:PlayAnimation("give") GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available") local retinue1 = SpawnPrefab("rook_nightmare") retinue1.Transform:SetPosition(pt.x+3.1, 0, pt.z+3.1) retinue1.components.follower:SetLeader(GetPlayer()) retinue1.components.health:SetMaxHealth(1000) retinue1.components.combat:SetDefaultDamage(100) retinue1:RemoveTag("monster") retinue1:AddTag("retinue") retinue1:AddTag("letgo") local minimap = retinue1.entity:AddMiniMapEntity() minimap:SetIcon( "chessjunk.png" ) retinue1.components.inspectable.getstatus = function(retinue1) if not retinue1:HasTag("letgo") then local brain = require "brains/rookbrain" retinue1:SetBrain(brain) retinue1:RestartBrain() retinue1.components.follower:SetLeader(GetPlayer()) retinue1:AddTag("letgo") else retinue1.components.locomotor:Stop() retinue1.components.follower:SetLeader(nil) retinue1:SetBrain(nil) retinue1:RemoveTag("letgo") end end retinue1:AddComponent("trader") retinue1.components.trader:SetAcceptTest(function(retinue1, item) if GetPlayer().components.inventory:Has("goldnugget", 50) then if item.prefab == "goldnugget" then return true end end return false end ) retinue1.components.trader.onaccept = function(retinue1, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 49) GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup") retinue1.AnimState:SetBloomEffectHandle("shaders/anim.ksh") retinue1.components.health:SetMaxHealth(2000) retinue1.components.health:DoDelta(2000) retinue1.components.combat:SetDefaultDamage(200) retinue1:AddTag("highretinue") retinue1.components.locomotor.walkspeed = 15 retinue1.components.locomotor.runspeed = 20 end retinue1.Physics:SetCollisionCallback(function(retinue1, other) if other and other.components.workable and other.components.workable.workleft > 0 then SpawnPrefab("collapse_small").Transform:SetPosition(other:GetPosition():Get()) other.components.workable:Destroy(retinue1) end end) retinue1.components.locomotor.walkspeed = 10 retinue1.components.locomotor.runspeed = 15 retinue1.components.combat:SetAttackPeriod( 1 ) retinue1.components.combat:SetRetargetFunction(3, function(retinue1) if not retinue1.components.health:IsDead() then return FindEntity(retinue1, 20, function(guy) if guy.components.health and not guy.components.health:IsDead() then return guy.components.combat.target == GetPlayer() or GetPlayer().components.combat.target == guy or guy:HasTag("monster") end end) end end ) retinue1.components.combat:SetKeepTargetFunction(function(retinue1, target) return target and target:IsValid() end ) end local chessjunk2 = SpawnPrefab("armormarble") chessjunk2.Transform:SetPosition(pt.x-3+2.3, 0, pt.z-3-2.3) chessjunk2.AnimState:SetBank("bishop") chessjunk2.AnimState:SetBuild("bishop_nightmare") chessjunk2.Transform:SetFourFaced() chessjunk2.AnimState:PlayAnimation("idle_loop", true) chessjunk2:AddTag("goodbye") chessjunk2.components.inventoryitem.canbepickedup = false chessjunk2:AddComponent("trader") chessjunk2.components.trader:SetAcceptTest(function(chessjunk2, item) if GetPlayer().components.inventory:Has("goldnugget", 30) then if item.prefab == "goldnugget" then return true end end return false end ) chessjunk2.components.trader.onaccept = function(chessjunk2, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 29) repairboss.AnimState:PlayAnimation("give") GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available") local retinue2 = SpawnPrefab("bishop_nightmare") retinue2.Transform:SetPosition(pt.x+3.1, 0, pt.z+3.1) retinue2.components.follower:SetLeader(GetPlayer()) retinue2.components.health:SetMaxHealth(500) retinue2.components.combat:SetDefaultDamage(30) retinue2:RemoveTag("monster") retinue2:AddTag("retinue") retinue2:AddTag("letgo") local minimap = retinue2.entity:AddMiniMapEntity() minimap:SetIcon( "chessjunk.png" ) retinue2.components.inspectable.getstatus = function(retinue2) if not retinue2:HasTag("letgo") then local brain = require "brains/rookbrain" retinue2:SetBrain(brain) retinue2:RestartBrain() retinue2.components.follower:SetLeader(GetPlayer()) retinue2:AddTag("letgo") else retinue2.components.locomotor:Stop() retinue2.components.follower:SetLeader(nil) retinue2:SetBrain(nil) retinue2:RemoveTag("letgo") end end retinue2:AddComponent("trader") retinue2.components.trader:SetAcceptTest(function(retinue2, item) if GetPlayer().components.inventory:Has("goldnugget", 30) then if item.prefab == "goldnugget" then return true end end return false end ) retinue2.components.trader.onaccept = function(retinue2, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 29) GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup") retinue2.AnimState:SetBloomEffectHandle("shaders/anim.ksh") retinue2.components.health:SetMaxHealth(1000) retinue2.components.health:DoDelta(1000) retinue2.components.combat:SetDefaultDamage(60) retinue2:AddTag("highretinue") retinue2.components.locomotor.walkspeed = 15 end retinue2.components.locomotor.walkspeed = 10 retinue2.components.combat:SetAttackPeriod( 0.5 ) retinue2.components.combat:SetRetargetFunction(3, function(retinue2) if not retinue2.components.health:IsDead() then return FindEntity(retinue2, 20, function(guy) if guy.components.health and not guy.components.health:IsDead() then return guy.components.combat.target == GetPlayer() or GetPlayer().components.combat.target == guy or guy:HasTag("monster") end end) end end ) retinue2.components.combat:SetKeepTargetFunction(function(retinue2, target) return target and target:IsValid() end ) end local chessjunk3 = SpawnPrefab("armormarble") chessjunk3.Transform:SetPosition(pt.x-3-2, 0, pt.z-3+2) chessjunk3.AnimState:SetBank("knight") chessjunk3.AnimState:SetBuild("knight_nightmare") chessjunk3.Transform:SetFourFaced() chessjunk3.AnimState:PlayAnimation("idle_loop", true) chessjunk3:AddTag("goodbye") chessjunk3.components.inventoryitem.canbepickedup = false chessjunk3:AddComponent("trader") chessjunk3.components.trader:SetAcceptTest(function(chessjunk3, item) if GetPlayer().components.inventory:Has("goldnugget", 15) then if item.prefab == "goldnugget" then return true end end return false end ) chessjunk3.components.trader.onaccept = function(chessjunk3, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 14) repairboss.AnimState:PlayAnimation("give") GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available") local retinue3 = SpawnPrefab("knight_nightmare") retinue3.Transform:SetPosition(pt.x+3.1, 0, pt.z+3.1) retinue3.components.follower:SetLeader(GetPlayer()) retinue3.components.health:SetMaxHealth(500) retinue3.components.combat:SetDefaultDamage(15) retinue3:RemoveTag("monster") retinue3:AddTag("retinue") retinue3:AddTag("letgo") local minimap = retinue3.entity:AddMiniMapEntity() minimap:SetIcon( "chessjunk.png" ) retinue3.components.inspectable.getstatus = function(retinue3) if not retinue3:HasTag("letgo") then local brain = require "brains/rookbrain" retinue3:SetBrain(brain) retinue3:RestartBrain() retinue3.components.follower:SetLeader(GetPlayer()) retinue3:AddTag("letgo") else retinue3.components.locomotor:Stop() retinue3.components.follower:SetLeader(nil) retinue3:SetBrain(nil) retinue3:RemoveTag("letgo") end end retinue3:AddComponent("trader") retinue3.components.trader:SetAcceptTest(function(retinue3, item) if GetPlayer().components.inventory:Has("goldnugget", 15) then if item.prefab == "goldnugget" then return true end end return false end ) retinue3.components.trader.onaccept = function(retinue3, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 14) GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup") retinue3.AnimState:SetBloomEffectHandle("shaders/anim.ksh") retinue3.components.health:SetMaxHealth(1000) retinue3.components.health:DoDelta(1000) retinue3.components.combat:SetDefaultDamage(30) retinue3:AddTag("highretinue") retinue3.components.locomotor.walkspeed = 15 end retinue3.components.locomotor.walkspeed = 10 retinue3.components.combat:SetAttackPeriod( 0.5 ) retinue3.components.combat:SetRetargetFunction(3, function(retinue3) if not retinue3.components.health:IsDead() then return FindEntity(retinue3, 20, function(guy) if guy.components.health and not guy.components.health:IsDead() then return guy.components.combat.target == GetPlayer() or GetPlayer().components.combat.target == guy or guy:HasTag("monster") end end) end end ) retinue3.components.combat:SetKeepTargetFunction(function(retinue3, target) return target and target:IsValid() end ) end local garbage1 = SpawnPrefab("armormarble") garbage1.Transform:SetPosition(pt.x+4-1, 0, pt.z-4-1) garbage1.AnimState:SetBank("researchlab2") garbage1.AnimState:SetBuild("researchlab2") garbage1.AnimState:PlayAnimation("proximity_loop", true) garbage1:AddTag("goodbye") garbage1.components.inventoryitem.canbepickedup = false local garbage2 = SpawnPrefab("armormarble") garbage2.Transform:SetPosition(pt.x+4+1, 0, pt.z-4+1) garbage2.AnimState:SetBank("researchlab2") garbage2.AnimState:SetBuild("researchlab2") garbage2.AnimState:PlayAnimation("proximity_loop", true) garbage2:AddTag("goodbye") garbage2.components.inventoryitem.canbepickedup = false local garbage3 = SpawnPrefab("armormarble") garbage3.Transform:SetPosition(pt.x+4+3, 0, pt.z-4+3) garbage3.AnimState:SetBank("researchlab2") garbage3.AnimState:SetBuild("researchlab2") garbage3.AnimState:PlayAnimation("proximity_loop", true) garbage3:AddTag("goodbye") garbage3.components.inventoryitem.canbepickedup = false end local function OnDeploy (inst, pt) repairshop(inst) inst:Remove() end inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy local function onsave(inst, data) if inst:HasTag("repairboss") then data.repairboss = true end if inst:HasTag("goodbye") then data.goodbye = true end end local function onload(inst, data) if data and data.repairboss then repairshop(inst) inst:Remove() end if data and data.goodbye then inst:Remove() end end inst.OnSave = onsave inst.OnLoad = onload MakeLargeBurnable(inst) MakeLargePropagator(inst) 即可用大理石盔甲种雇佣兵工厂,鼠标左键点老板(机器人),他会拿出要你加工的零件,用锤子将零件砸成机械兵,即可获得3个黄金的工钱(老板会扔在地上)。可以向老板购买锤子(拿着黄金对老板点鼠标左键),每把1个黄金。拿着黄金对老板背后的机械兵点鼠标左键,可以购买相应品种的机械雇佣兵,其中机械犀牛每只50个黄金,机械主教每只30个黄金,机械马每只15个黄金,打造你的铁甲战团吧。鼠标左键点雇佣兵,可停止跟随,再次点击可继续跟随,点击时手中不要拿武器,以免误伤。忘记将雇佣军驻扎在何处时,可以打开小地图查找,将显示为机器零件的图标。拥有机械雇佣兵后,可以进一步为它们升级,拿着黄金对自己的机械兵点鼠标左键(同样犀牛50个黄金、主教30个黄金、马15个黄金),可将它们升级为超级机械雇佣兵(身上发亮),攻防及行军速度都将大幅提高。大战之后,给雇佣兵黄金(数量同上),可以将它们的血补满。不想要雇佣兵工厂时,烧掉即可。大理石盔甲在战斗选项(画着两把剑)下,用12块大理石、4条绳子制造

2025/04/23 · Bny

YN296-企鹅养殖场(用蜂巢种企鹅养殖场,买小企鹅,养大后卖出赚黄金)

代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 二九六.企鹅养殖场(用蜂巢种企鹅养殖场,买小企鹅,养大后卖出赚黄金) 用MT管理器打开游戏目录/assets/scripts/prefabs/honeycomb.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: local function penguinshop(inst) local pt = inst:GetPosition() local peddler = SpawnPrefab("honeycomb") peddler.Transform:SetPosition(pt.x, pt.y, pt.z) peddler.AnimState:SetBank("wilson") peddler.AnimState:SetBuild("willow") peddler.AnimState:OverrideSymbol("swap_hat", "hat_straw", "swap_hat") peddler.AnimState:Show("HAT") peddler.AnimState:Show("HAT_HAIR") peddler.AnimState:Hide("HAIR_NOHAT") peddler.AnimState:Hide("HAIR") peddler.AnimState:OverrideSymbol("swap_body", "armor_grass", "swap_body") peddler.AnimState:Hide("ARM_carry") peddler.AnimState:Show("ARM_normal") peddler.Transform:SetFourFaced() peddler.AnimState:PlayAnimation("idle") peddler:AddTag("peddler") peddler:RemoveComponent("stackable") peddler:RemoveComponent("tradable") peddler:RemoveComponent("inventoryitem") local light = peddler.entity:AddLight() light:SetFalloff(1) light:SetIntensity(.8) light:SetRadius(10) light:SetColour(180/255, 195/255, 50/255) light:Enable(true) MakeLargeBurnable(peddler) MakeLargePropagator(peddler) peddler.components.inspectable.getstatus = function(peddler) peddler.AnimState:PlayAnimation("give") GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/get_gold") local pos = Vector3(peddler.Transform:GetWorldPosition()) local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 10) for k,v in pairs(ents) do if v:HasTag("penguin_2") then for k = 1, 20 do SpawnPrefab("goldnugget").Transform:SetPosition(v.Transform:GetWorldPosition()) end v:Remove() end end end peddler:AddComponent("trader") peddler.components.trader:SetAcceptTest(function(peddler, item) if GetPlayer().components.inventory:Has("goldnugget", 10) then if item.prefab == "goldnugget" then return true end end return false end ) peddler.components.trader.onaccept = function(peddler, giver, item) peddler.AnimState:PlayAnimation("give") GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available") GetPlayer().components.inventory:ConsumeByName("goldnugget", 9) local penguin = SpawnPrefab("honeycomb") penguin.Transform:SetPosition(pt.x+3.1, 0, pt.z+3.1) penguin.AnimState:SetBank("penguin") penguin.AnimState:SetBuild("penguin_build") penguin.Transform:SetFourFaced() penguin.AnimState:PlayAnimation("idle_loop", true) penguin.AnimState:SetBloomEffectHandle("shaders/anim.ksh") penguin.entity:AddSoundEmitter() local minimap = penguin.entity:AddMiniMapEntity() minimap:SetIcon( "penguin.png" ) MakeCharacterPhysics(penguin, 50, .5) penguin:AddComponent("follower") penguin.components.follower:SetLeader(GetPlayer()) local brain = require "brains/abigailbrain" penguin:SetBrain(brain) penguin:AddComponent("locomotor") penguin.components.locomotor.walkspeed = 0.75 penguin.components.locomotor.directdrive = false penguin:SetStateGraph("SGpenguin") penguin:AddComponent("combat") penguin.components.combat.hiteffectsymbol = "body" penguin.components.combat:SetAttackPeriod(1) penguin.components.combat:SetRange(2.5) penguin.components.combat:SetDefaultDamage(1) penguin:ListenForEvent("attacked", function(penguin, data) penguin.components.combat:SetTarget(data.attacker) end ) penguin:AddComponent("health") penguin.components.health:SetMaxHealth(50) penguin.Transform:SetScale(0.7, 0.7, 0.7) penguin:RemoveComponent("stackable") penguin:RemoveComponent("tradable") penguin:RemoveComponent("inventoryitem") penguin:AddTag("retinue") penguin:AddTag("penguin_1") penguin:AddComponent("lootdropper") penguin.components.lootdropper:SetLoot({"smallmeat", "smallmeat"}) penguin.components.inspectable.getstatus = function(penguin) if not penguin:HasTag("retinue") then local brain = require "brains/abigailbrain" penguin:SetBrain(brain) penguin.components.follower:SetLeader(GetPlayer()) penguin.AnimState:SetBloomEffectHandle("shaders/anim.ksh") penguin:AddTag("retinue") else local brain = require "brains/leifbrain" penguin:SetBrain(brain) penguin.components.follower:SetLeader(nil) penguin.AnimState:SetBloomEffectHandle("") penguin:RemoveTag("retinue") end end penguin:DoTaskInTime(math.random(480,560), function() if not penguin:HasTag("penguin_2") then penguin.AnimState:PlayAnimation("taunt") penguin.Transform:SetScale(1, 1, 1) penguin:AddTag("penguin_2") penguin.components.lootdropper:SetLoot({"meat", "meat", "drumstick", "drumstick"}) end end ) penguin:DoPeriodicTask(math.random(120,180), function() if penguin:HasTag("penguin_2") then SpawnPrefab("bird_egg").Transform:SetPosition(penguin.Transform:GetWorldPosition()) end end) end local ice = SpawnPrefab("honeycomb") ice.Transform:SetPosition(pt.x+1, 0, pt.z+1) ice.AnimState:SetBank("penguin_ice") ice.AnimState:SetBuild("penguin_ice") ice.AnimState:PlayAnimation("idle") ice.AnimState:SetOrientation( ANIM_ORIENTATION.OnGround ) ice.AnimState:SetLayer( LAYER_BACKGROUND ) ice.AnimState:SetSortOrder( 1 ) ice.Transform:SetRotation( 225 ) ice:RemoveComponent("stackable") ice:RemoveComponent("tradable") ice:RemoveComponent("inventoryitem") ice:AddTag("goodbye") ice:AddTag("NOCLICK") MakeLargeBurnable(ice) MakeLargePropagator(ice) local model1 = SpawnPrefab("honeycomb") model1.Transform:SetPosition(pt.x+2-1, 0, pt.z-2-1) model1.AnimState:SetBank("penguin") model1.AnimState:SetBuild("penguin_build") model1.Transform:SetFourFaced() model1.AnimState:PlayAnimation("idle_loop", true) model1.Transform:SetRotation( 270 ) model1.Transform:SetScale(2, 2, 2) model1:RemoveComponent("stackable") model1:RemoveComponent("tradable") model1:RemoveComponent("inventoryitem") model1.AnimState:SetBloomEffectHandle("shaders/anim.ksh") model1:AddTag("goodbye") MakeLargeBurnable(model1) MakeLargePropagator(model1) local model2 = SpawnPrefab("honeycomb") model2.Transform:SetPosition(pt.x-2-1, 0, pt.z+2-1) model2.AnimState:SetBank("penguin") model2.AnimState:SetBuild("penguin_build") model2.Transform:SetFourFaced() model2.AnimState:PlayAnimation("idle_loop", true) model2.Transform:SetRotation( 90 ) model2.Transform:SetScale(2, 2, 2) model2:RemoveComponent("stackable") model2:RemoveComponent("tradable") model2:RemoveComponent("inventoryitem") model2.AnimState:SetBloomEffectHandle("shaders/anim.ksh") model2:AddTag("goodbye") MakeLargeBurnable(model2) MakeLargePropagator(model2) end local function OnDeploy (inst, pt) penguinshop(inst) inst.components.stackable:Get():Remove() end inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy local function onsave(inst, data) if inst:HasTag("peddler") then data.peddler = true end if inst:HasTag("goodbye") then data.goodbye = true end if inst:HasTag("penguin_1") then data.penguin_1 = true end if inst:HasTag("penguin_2") then data.penguin_2 = true end if inst:HasTag("retinue") then data.retinue = true end end local function onload(inst, data) if data and data.peddler then penguinshop(inst) inst:Remove() end if data and data.goodbye then inst:Remove() end if data and data.penguin_1 then inst.AnimState:SetBank("penguin") inst.AnimState:SetBuild("penguin_build") inst.Transform:SetFourFaced() inst.AnimState:PlayAnimation("idle_loop", true) inst.entity:AddSoundEmitter() local minimap = inst.entity:AddMiniMapEntity() minimap:SetIcon( "penguin.png" ) MakeCharacterPhysics(inst, 50, .5) inst:AddComponent("follower") inst.components.follower:SetLeader(nil) local brain = require "brains/leifbrain" inst:SetBrain(brain) inst:AddComponent("locomotor") inst.components.locomotor.walkspeed = 0.75 inst.components.locomotor.directdrive = false inst:SetStateGraph("SGpenguin") inst:AddComponent("combat") inst.components.combat.hiteffectsymbol = "body" inst.components.combat:SetAttackPeriod(1) inst.components.combat:SetRange(2.5) inst.components.combat:SetDefaultDamage(1) inst:ListenForEvent("attacked", function(inst, data) inst.components.combat:SetTarget(data.attacker) end ) inst:AddComponent("health") inst.components.health:SetMaxHealth(50) inst.Transform:SetScale(0.7, 0.7, 0.7) inst:RemoveComponent("stackable") inst:RemoveComponent("tradable") inst:RemoveComponent("inventoryitem") inst:AddTag("penguin_1") inst:AddComponent("lootdropper") inst.components.lootdropper:SetLoot({"smallmeat", "smallmeat"}) inst.components.inspectable.getstatus = function(inst) if not inst:HasTag("retinue") then local brain = require "brains/abigailbrain" inst:SetBrain(brain) inst.components.follower:SetLeader(GetPlayer()) inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh") inst:AddTag("retinue") else local brain = require "brains/leifbrain" inst:SetBrain(brain) inst.components.follower:SetLeader(nil) inst.AnimState:SetBloomEffectHandle("") inst:RemoveTag("retinue") end end inst:DoTaskInTime(math.random(480,560), function() if not inst:HasTag("penguin_2") then inst.AnimState:PlayAnimation("taunt") inst.Transform:SetScale(1, 1, 1) inst:AddTag("penguin_2") inst.components.lootdropper:SetLoot({"meat", "meat", "drumstick", "drumstick"}) end end ) inst:DoPeriodicTask(math.random(120,180), function() if inst:HasTag("penguin_2") then SpawnPrefab("bird_egg").Transform:SetPosition(inst.Transform:GetWorldPosition()) end end) end if data and data.penguin_2 then inst.Transform:SetScale(1, 1, 1) inst:AddTag("penguin_2") inst.components.lootdropper:SetLoot({"meat", "meat", "drumstick", "drumstick"}) end if data and data.retinue then local brain = require "brains/abigailbrain" inst:SetBrain(brain) inst.components.follower:SetLeader(GetPlayer()) inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh") inst:AddTag("retinue") end end inst.OnSave = onsave inst.OnLoad = onload 即可用蜂巢种企鹅养殖场(手里拿着1个蜂巢对地面点鼠标右键,如果拿着多个蜂巢,则不会种出来),拿着黄金对老板点鼠标左键,可以购买小企鹅,每只10个黄金。小企鹅会跟着你,鼠标左键点企鹅可停止跟随,再点则继续跟随(手里不要拿武器,以免误杀)。把它们带到你建造的企鹅圈,圈养起来吧,如果有淘气的企鹅啄墙,把它带离墙边即可。1-2天后,小企鹅长成大企鹅,并会下蛋,你可以继续养它们获得企鹅蛋,也可以带它们去企鹅养殖场,让它们停在冰面上,鼠标左键点老板,即可卖掉冰面上的大企鹅,收购价每只20个黄金。保护好你的企鹅群,从此作一个快乐的养鹅人吧。如果企鹅走失,可以打开小地图查找,将显示企鹅图标。杀掉小企鹅,会掉2个小肉(修改过“巨型超市”则增加掉落1-2个黄金),杀掉大企鹅会掉2个大肉和2个企鹅腿。不想要企鹅养殖场时烧掉即可

2025/04/23 · Bny

YN297-临时工市场(用噩梦花瓣种临时工市场,雇临时工帮你采摘、收获、砍树、开矿)

代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 二九七.临时工市场(用噩梦花瓣种临时工市场,雇临时工帮你采摘、收获、砍树、开矿) 用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/petals_evil.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: local function createworker(inst) local pt = inst:GetPosition() local shopsign = SpawnPrefab("petals_evil") shopsign.Transform:SetPosition(pt.x, pt.y, pt.z) shopsign.AnimState:SetBank("sign_home") shopsign.AnimState:SetBuild("sign_home") shopsign.AnimState:PlayAnimation("idle") shopsign.Transform:SetScale(2, 2, 2) shopsign:AddTag("shopsign") shopsign:RemoveComponent("stackable") shopsign:RemoveComponent("tradable") shopsign:RemoveComponent("fuel") shopsign:RemoveComponent("inventoryitem") shopsign:RemoveComponent("edible") shopsign:RemoveComponent("perishable") shopsign:RemoveComponent("burnable") shopsign:RemoveComponent("propagator") shopsign:RemoveComponent("deployable") MakeLargeBurnable(shopsign) MakeLargePropagator(shopsign) local light = shopsign.entity:AddLight() light:SetFalloff(1) light:SetIntensity(.8) light:SetRadius(5) light:SetColour(180/255, 195/255, 50/255) light:Enable(true) shopsign:DoPeriodicTask(6, function(shopsign) shopsign.AnimState:SetBloomEffectHandle("shaders/anim.ksh") shopsign:DoTaskInTime(3, function() shopsign.AnimState:SetBloomEffectHandle("") end ) end ) shopsign.components.inspectable.getstatus = function(shopsign) local pos = Vector3(shopsign.Transform:GetWorldPosition()) local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 3000) for k,v in pairs(ents) do if v:HasTag("workerman") then v:Remove() end end local names = {"wilson","wendy","wes","wickerbottom","willow","wolfgang","wx78"} local worker1 = SpawnPrefab("petals_evil") worker1.Transform:SetPosition(pt.x+1+3, 0, pt.z+1-3) worker1.AnimState:SetBank("wilson") worker1.buildname = names[math.random(#names)] worker1.AnimState:SetBuild(worker1.buildname) worker1.Transform:SetFourFaced() worker1.AnimState:OverrideSymbol("swap_hat", "hat_bee", "swap_hat") worker1.AnimState:Show("HAT") worker1.AnimState:Show("HAT_HAIR") worker1.AnimState:Hide("HAIR_NOHAT") worker1.AnimState:Hide("HAIR") worker1.AnimState:Show("ARM_normal") worker1.AnimState:Hide("ARM_carry") worker1.AnimState:PlayAnimation("idle") local minimap = worker1.entity:AddMiniMapEntity() minimap:SetIcon( "mushroom_tree_med.png" ) local sound = worker1.entity:AddSoundEmitter() local shadow = worker1.entity:AddDynamicShadow() MakeCharacterPhysics(worker1, 75, .5) shadow:SetSize( 1.3, .6 ) worker1:AddComponent("health") worker1.components.health:SetMaxHealth(1000) worker1.components.health:SetInvincible(true) worker1.components.health.nofadeout = true worker1:AddComponent("combat") worker1:AddComponent("follower") worker1:AddComponent("knownlocations") worker1:AddComponent("locomotor") worker1.components.locomotor.walkspeed = 5 worker1.components.locomotor.runspeed = 12 worker1:SetStateGraph("SGshadowwaxwell") worker1:RemoveComponent("stackable") worker1:RemoveComponent("tradable") worker1:RemoveComponent("fuel") worker1:RemoveComponent("inventoryitem") worker1:RemoveComponent("edible") worker1:RemoveComponent("perishable") worker1:RemoveComponent("burnable") worker1:RemoveComponent("propagator") worker1:RemoveComponent("deployable") MakeLargeBurnable(worker1) MakeLargePropagator(worker1) worker1:AddTag("workerman") worker1:AddComponent("trader") worker1.components.trader:SetAcceptTest(function(worker1, item) if GetPlayer().components.inventory:Has("goldnugget", 20) then if item.prefab == "goldnugget" then return true end end return false end ) worker1.components.trader.onaccept = function(worker1, giver, item) worker1:AddTag("myworker") worker1:RemoveTag("workerman") worker1:RemoveComponent("burnable") worker1:RemoveComponent("propagator") GetPlayer().components.inventory:ConsumeByName("goldnugget", 19) worker1.task1 = worker1:DoPeriodicTask(0.5, function(worker1) local target = FindEntity(worker1, 10, function(guy) return guy.components.pickable and guy.components.pickable:CanBePicked() and guy.prefab ~= "flower" and guy.prefab ~= "red_mushroom" and guy.prefab ~= "green_mushroom" and guy.prefab ~= "blue_mushroom" and guy.prefab ~= "flint" end ) if target then worker1.components.locomotor:Stop() worker1:SetBrain(nil) worker1.components.follower:SetLeader(nil) local pt1 = target:GetPosition() worker1.components.locomotor:GoToPoint(pt1) worker1.task2 = worker1:DoPeriodicTask(.25, function(worker1) local target2 = FindEntity(worker1, 0.8, function(guy) return guy.components.pickable and guy.components.pickable:CanBePicked() and guy.prefab ~= "flower" and guy.prefab ~= "red_mushroom" and guy.prefab ~= "green_mushroom" and guy.prefab ~= "blue_mushroom" and guy.prefab ~= "flint" end ) if target2 then worker1.AnimState:PlayAnimation("pickup") target2.components.pickable:Pick(GetPlayer()) end end ) else worker1.components.follower:SetLeader(GetPlayer()) local brain = require "brains/chesterbrain" worker1:SetBrain(brain) worker1:RestartBrain() if worker1.task2 then worker1.task2:Cancel() worker1.task2 = nil end end end ) end worker1:ListenForEvent( "nighttime", function() worker1:Remove() end, GetWorld()) local worker2 = SpawnPrefab("petals_evil") worker2.Transform:SetPosition(pt.x+1+1, 0, pt.z+1-1) worker2.AnimState:SetBank("wilson") worker2.buildname = names[math.random(#names)] worker2.AnimState:SetBuild(worker2.buildname) worker2.Transform:SetFourFaced() worker2.AnimState:OverrideSymbol("swap_hat", "hat_straw", "swap_hat") worker2.AnimState:Show("HAT") worker2.AnimState:Show("HAT_HAIR") worker2.AnimState:Hide("HAIR_NOHAT") worker2.AnimState:Hide("HAIR") worker2.AnimState:Show("ARM_normal") worker2.AnimState:Hide("ARM_carry") worker2.AnimState:PlayAnimation("idle") local minimap = worker2.entity:AddMiniMapEntity() minimap:SetIcon( "mushroom_tree_med.png" ) local sound = worker2.entity:AddSoundEmitter() local shadow = worker2.entity:AddDynamicShadow() MakeCharacterPhysics(worker2, 75, .5) shadow:SetSize( 1.3, .6 ) worker2:AddComponent("health") worker2.components.health:SetMaxHealth(1000) worker2.components.health:SetInvincible(true) worker2.components.health.nofadeout = true worker2:AddComponent("combat") worker2:AddComponent("follower") worker2:AddComponent("knownlocations") worker2:AddComponent("locomotor") worker2.components.locomotor.walkspeed = 5 worker2.components.locomotor.runspeed = 12 worker2:SetStateGraph("SGshadowwaxwell") worker2:RemoveComponent("stackable") worker2:RemoveComponent("tradable") worker2:RemoveComponent("fuel") worker2:RemoveComponent("inventoryitem") worker2:RemoveComponent("edible") worker2:RemoveComponent("perishable") worker2:RemoveComponent("burnable") worker2:RemoveComponent("propagator") worker2:RemoveComponent("deployable") MakeLargeBurnable(worker2) MakeLargePropagator(worker2) worker2:AddTag("workerman") worker2:AddComponent("trader") worker2.components.trader:SetAcceptTest(function(worker2, item) if GetPlayer().components.inventory:Has("goldnugget", 20) then if item.prefab == "goldnugget" then return true end end return false end ) worker2.components.trader.onaccept = function(worker2, giver, item) worker2:AddTag("myworker") worker2:RemoveTag("workerman") worker2:RemoveComponent("burnable") worker2:RemoveComponent("propagator") GetPlayer().components.inventory:ConsumeByName("goldnugget", 19) worker2.task1 = worker2:DoPeriodicTask(0.5, function(worker2) local target = FindEntity(worker2, 10, function(guy) return guy.components.crop and guy.components.crop.matured end ) if target then worker2.components.locomotor:Stop() worker2:SetBrain(nil) worker2.components.follower:SetLeader(nil) local pt1 = target:GetPosition() worker2.components.locomotor:GoToPoint(pt1) worker2.task2 = worker2:DoPeriodicTask(.25, function(worker2) local target2 = FindEntity(worker2, 0.8, function(guy) return guy.components.crop and guy.components.crop.matured end ) if target2 then worker2.AnimState:PlayAnimation("pickup") target2.components.crop:Harvest(GetPlayer()) end local target3 = FindEntity(worker2, 0.8, function(guy) return guy.components.grower and guy.components.grower:IsEmpty() end ) if target3 then target3.components.grower.cycles_left = target3.components.grower.max_cycles_left end end ) else worker2.components.follower:SetLeader(GetPlayer()) local brain = require "brains/chesterbrain" worker2:SetBrain(brain) worker2:RestartBrain() if worker2.task2 then worker2.task2:Cancel() worker2.task2 = nil end if worker2.task3 then worker2.task3:Cancel() worker2.task3 = nil end end end ) end worker2:ListenForEvent( "nighttime", function() worker2:Remove() end, GetWorld()) local worker3 = SpawnPrefab("petals_evil") worker3.Transform:SetPosition(pt.x+1-1, 0, pt.z+1+1) worker3.AnimState:SetBank("wilson") worker3.buildname = names[math.random(#names)] worker3.AnimState:SetBuild(worker3.buildname) worker3.Transform:SetFourFaced() worker3.AnimState:OverrideSymbol("swap_object", "swap_axe", "swap_axe") worker3.AnimState:Show("ARM_carry") worker3.AnimState:Hide("ARM_normal") worker3.AnimState:PlayAnimation("idle") local minimap = worker3.entity:AddMiniMapEntity() minimap:SetIcon( "mushroom_tree_med.png" ) local sound = worker3.entity:AddSoundEmitter() local shadow = worker3.entity:AddDynamicShadow() MakeCharacterPhysics(worker3, 75, .5) shadow:SetSize( 1.3, .6 ) worker3:AddComponent("health") worker3.components.health:SetMaxHealth(1000) worker3.components.health:SetInvincible(true) worker3.components.health.nofadeout = true worker3:AddComponent("combat") worker3:AddComponent("follower") worker3:AddComponent("knownlocations") worker3:AddComponent("locomotor") worker3.components.locomotor.walkspeed = 5 worker3.components.locomotor.runspeed = 12 worker3:SetStateGraph("SGshadowwaxwell") worker3:RemoveComponent("stackable") worker3:RemoveComponent("tradable") worker3:RemoveComponent("fuel") worker3:RemoveComponent("inventoryitem") worker3:RemoveComponent("edible") worker3:RemoveComponent("perishable") worker3:RemoveComponent("burnable") worker3:RemoveComponent("propagator") worker3:RemoveComponent("deployable") MakeLargeBurnable(worker3) MakeLargePropagator(worker3) worker3:AddTag("workerman") worker3:AddComponent("trader") worker3.components.trader:SetAcceptTest(function(worker3, item) if GetPlayer().components.inventory:Has("goldnugget", 20) then if item.prefab == "goldnugget" then return true end end return false end ) worker3.components.trader.onaccept = function(worker3, giver, item) worker3:AddTag("myworker") worker3:RemoveTag("workerman") worker3:RemoveComponent("burnable") worker3:RemoveComponent("propagator") GetPlayer().components.inventory:ConsumeByName("goldnugget", 19) worker3.task1 = worker3:DoPeriodicTask(0.5, function(worker3) local target = FindEntity(worker3, 15, function(guy) return guy:HasTag("tree") and guy.components.workable and guy.components.workable.workleft > 0 end ) if target then worker3.components.locomotor:Stop() worker3:SetBrain(nil) worker3.components.follower:SetLeader(nil) local pt1 = target:GetPosition() worker3.components.locomotor:GoToPoint(pt1) worker3.task2 = worker3:DoPeriodicTask(.25, function(worker3) local target2 = FindEntity(worker3, 2, function(guy) return guy:HasTag("tree") and guy.components.workable and guy.components.workable.workleft > 0 end ) if target2 then worker3.AnimState:PlayAnimation("pickup") target2.components.workable:Destroy(worker3) end end ) else worker3.components.follower:SetLeader(GetPlayer()) local brain = require "brains/chesterbrain" worker3:SetBrain(brain) worker3:RestartBrain() if worker3.task2 then worker3.task2:Cancel() worker3.task2 = nil end end end ) end worker3:ListenForEvent( "nighttime", function() worker3:Remove() end, GetWorld()) local worker4 = SpawnPrefab("petals_evil") worker4.Transform:SetPosition(pt.x+1-3, 0, pt.z+1+3) worker4.AnimState:SetBank("wilson") worker4.buildname = names[math.random(#names)] worker4.AnimState:SetBuild(worker4.buildname) worker4.Transform:SetFourFaced() worker4.AnimState:OverrideSymbol("swap_hat", "hat_miner", "swap_hat") worker4.AnimState:Show("HAT") worker4.AnimState:Show("HAT_HAIR") worker4.AnimState:Hide("HAIR_NOHAT") worker4.AnimState:Hide("HAIR") worker4.AnimState:OverrideSymbol("swap_object", "swap_pickaxe", "swap_pickaxe") worker4.AnimState:Show("ARM_carry") worker4.AnimState:Hide("ARM_normal") worker4.AnimState:PlayAnimation("idle") local minimap = worker4.entity:AddMiniMapEntity() minimap:SetIcon( "mushroom_tree_med.png" ) local sound = worker4.entity:AddSoundEmitter() local shadow = worker4.entity:AddDynamicShadow() MakeCharacterPhysics(worker4, 75, .5) shadow:SetSize( 1.3, .6 ) worker4:AddComponent("health") worker4.components.health:SetMaxHealth(1000) worker4.components.health:SetInvincible(true) worker4.components.health.nofadeout = true worker4:AddComponent("combat") worker4:AddComponent("follower") worker4:AddComponent("knownlocations") worker4:AddComponent("locomotor") worker4.components.locomotor.walkspeed = 5 worker4.components.locomotor.runspeed = 12 worker4:SetStateGraph("SGshadowwaxwell") worker4:RemoveComponent("stackable") worker4:RemoveComponent("tradable") worker4:RemoveComponent("fuel") worker4:RemoveComponent("inventoryitem") worker4:RemoveComponent("edible") worker4:RemoveComponent("perishable") worker4:RemoveComponent("burnable") worker4:RemoveComponent("propagator") worker4:RemoveComponent("deployable") MakeLargeBurnable(worker4) MakeLargePropagator(worker4) worker4:AddTag("workerman") worker4:AddComponent("trader") worker4.components.trader:SetAcceptTest(function(worker4, item) if GetPlayer().components.inventory:Has("goldnugget", 20) then if item.prefab == "goldnugget" then return true end end return false end ) worker4.components.trader.onaccept = function(worker4, giver, item) worker4:AddTag("myworker") worker4:RemoveTag("workerman") worker4:RemoveComponent("burnable") worker4:RemoveComponent("propagator") GetPlayer().components.inventory:ConsumeByName("goldnugget", 19) worker4.task1 = worker4:DoPeriodicTask(0.5, function(worker4) local target = FindEntity(worker4, 15, function(guy) return guy.prefab == "rock1" or guy.prefab == "rock2" or guy.prefab == "rock_flintless" or guy.prefab == "rock_flintless_med" or guy.prefab == "rock_flintless_low" or guy.prefab == "rock_ice" end ) if target then worker4.components.locomotor:Stop() worker4:SetBrain(nil) worker4.components.follower:SetLeader(nil) local pt1 = target:GetPosition() worker4.components.locomotor:GoToPoint(pt1) worker4.task2 = worker4:DoPeriodicTask(.25, function(worker4) local target2 = FindEntity(worker4, 2, function(guy) return guy.prefab == "rock1" or guy.prefab == "rock2" or guy.prefab == "rock_flintless" or guy.prefab == "rock_flintless_med" or guy.prefab == "rock_flintless_low" or guy.prefab == "rock_ice" end ) if target2 then worker4.AnimState:PlayAnimation("pickup") target2.components.workable:Destroy(worker4) end end ) else worker4.components.follower:SetLeader(GetPlayer()) local brain = require "brains/chesterbrain" worker4:SetBrain(brain) worker4:RestartBrain() if worker4.task2 then worker4.task2:Cancel() worker4.task2 = nil end end end ) end worker4:ListenForEvent( "nighttime", function() worker4:Remove() end, GetWorld()) end local shopsign1 = SpawnPrefab("petals_evil") shopsign1.Transform:SetPosition(pt.x+2+3, 0, pt.z+2-3) shopsign1.AnimState:SetBank("sign_home") shopsign1.AnimState:SetBuild("sign_home") shopsign1.AnimState:PlayAnimation("idle") shopsign1.Transform:SetScale(0.5, 0.5, 0.5) shopsign1:RemoveComponent("stackable") shopsign1:RemoveComponent("tradable") shopsign1:RemoveComponent("fuel") shopsign1:RemoveComponent("inventoryitem") shopsign1:RemoveComponent("edible") shopsign1:RemoveComponent("perishable") shopsign1:RemoveComponent("burnable") shopsign1:RemoveComponent("propagator") shopsign1:RemoveComponent("deployable") MakeLargeBurnable(shopsign1) MakeLargePropagator(shopsign1) shopsign1:AddTag("goodbye") local shopsign2 = SpawnPrefab("petals_evil") shopsign2.Transform:SetPosition(pt.x+2+1, 0, pt.z+2-1) shopsign2.AnimState:SetBank("sign_home") shopsign2.AnimState:SetBuild("sign_home") shopsign2.AnimState:PlayAnimation("idle") shopsign2.Transform:SetScale(0.5, 0.5, 0.5) shopsign2:RemoveComponent("stackable") shopsign2:RemoveComponent("tradable") shopsign2:RemoveComponent("fuel") shopsign2:RemoveComponent("inventoryitem") shopsign2:RemoveComponent("edible") shopsign2:RemoveComponent("perishable") shopsign2:RemoveComponent("burnable") shopsign2:RemoveComponent("propagator") shopsign2:RemoveComponent("deployable") MakeLargeBurnable(shopsign2) MakeLargePropagator(shopsign2) shopsign2:AddTag("goodbye") local shopsign3 = SpawnPrefab("petals_evil") shopsign3.Transform:SetPosition(pt.x+2-1, 0, pt.z+2+1) shopsign3.AnimState:SetBank("sign_home") shopsign3.AnimState:SetBuild("sign_home") shopsign3.AnimState:PlayAnimation("idle") shopsign3.Transform:SetScale(0.5, 0.5, 0.5) shopsign3:RemoveComponent("stackable") shopsign3:RemoveComponent("tradable") shopsign3:RemoveComponent("fuel") shopsign3:RemoveComponent("inventoryitem") shopsign3:RemoveComponent("edible") shopsign3:RemoveComponent("perishable") shopsign3:RemoveComponent("burnable") shopsign3:RemoveComponent("propagator") shopsign3:RemoveComponent("deployable") MakeLargeBurnable(shopsign3) MakeLargePropagator(shopsign3) shopsign3:AddTag("goodbye") local shopsign4 = SpawnPrefab("petals_evil") shopsign4.Transform:SetPosition(pt.x+2-3, 0, pt.z+2+3) shopsign4.AnimState:SetBank("sign_home") shopsign4.AnimState:SetBuild("sign_home") shopsign4.AnimState:PlayAnimation("idle") shopsign4.Transform:SetScale(0.5, 0.5, 0.5) shopsign4:RemoveComponent("stackable") shopsign4:RemoveComponent("tradable") shopsign4:RemoveComponent("fuel") shopsign4:RemoveComponent("inventoryitem") shopsign4:RemoveComponent("edible") shopsign4:RemoveComponent("perishable") shopsign4:RemoveComponent("burnable") shopsign4:RemoveComponent("propagator") shopsign4:RemoveComponent("deployable") MakeLargeBurnable(shopsign4) MakeLargePropagator(shopsign4) shopsign4:AddTag("goodbye") end local function OnDeploy (inst, pt) createworker(inst) inst.components.stackable:Get():Remove() end inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy local function onsave(inst, data) if inst:HasTag("shopsign") then data.shopsign = true end if inst:HasTag("workerman") then data.workerman = true end if inst:HasTag("myworker") then data.myworker = true end if inst:HasTag("goodbye") then data.goodbye = true end end local function onload(inst, data) if data and data.shopsign then createworker(inst) inst:Remove() end if data and data.workerman then inst:Remove() end if data and data.myworker then inst:Remove() end if data and data.goodbye then inst:Remove() end end inst.OnSave = onsave inst.OnLoad = onload 即可用噩梦花瓣种临时工市场(拿着1个噩梦花瓣对地面点鼠标右键,如果拿着多个噩梦花瓣,则不会种出来),鼠标左键点击大招牌,会有4种临时工来应聘,从左到右分别是采摘工(采摘植物)、农民(收获农田并施肥)、伐木工(砍树)、矿工(开矿),想雇佣什么工种,就拿着黄金对他点鼠标左键,每人每天20个黄金。再次点大招牌,可以换不同的应聘人员供你选择。雇佣临时工后,他会跟随你,把他带到工作场所,会自动开始干活,干完后继续跟随。可打开小地图查询临时工的位置,显示为红色蘑菇树的图标。临时工会在每天黑夜来临时下班,想让你花费的工资更值得,就尽可能早点雇佣他们。如果想提早解雇临时工,就存档退出再读档,他们就被遣散了。不想要临时工市场时,烧掉即可

2025/04/23 · Bny

YN298-我的果汁店(用治疗药膏种果汁店,自己制作果汁,顾客上门购买)

代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 二九八.我的果汁店(用治疗药膏种果汁店,自己制作果汁,顾客上门购买) 用MT管理器打开游戏目录/assets/scripts/prefabs/healingsalve.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: local function itemtest(inst, item, slot) if item.prefab == "cave_banana" or item.prefab == "pomegranate" or item.prefab == "dragonfruit" 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 = "Start", position = Vector3(0, -165, 0), fn = function(inst) if inst:HasTag("juicer") and inst.components.container:Has("cave_banana", 1) and inst.components.container:Has("pomegranate", 1) and inst.components.container:Has("dragonfruit", 1) then inst.components.container:ConsumeByName("cave_banana", 1) inst.components.container:ConsumeByName("pomegranate", 1) inst.components.container:ConsumeByName("dragonfruit", 1) GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available") local sweets = SpawnPrefab("healingsalve") sweets.AnimState:SetBank("food") sweets.AnimState:SetBuild("cook_pot_food") sweets.AnimState:PlayAnimation("fruitmedley", false) sweets:RemoveComponent("stackable") sweets:RemoveComponent("deployable") sweets.components.healer:SetHealthAmount(TUNING.HEALING_SUPERHUGE) sweets.components.inventoryitem:ChangeImageName("fruitmedley") sweets.Transform:SetScale(1.2, 1.2, 1.2) sweets:AddTag("sweets") GetPlayer().components.inventory:GiveItem(sweets) end end } inst:AddComponent("container") inst.components.container.widgetbuttoninfo = widgetbuttoninfo inst.components.container:SetNumSlots(#slotpos) inst.components.container.widgetslotpos = slotpos inst.components.container.widgetpos = Vector3(0,180,0) inst.components.container.side_align_tip = 160 inst.components.container.itemtestfn = itemtest inst.components.container.canbeopened = false local function sweetshop(inst) local pt = inst:GetPosition() local shop = SpawnPrefab("healingsalve") shop.Transform:SetPosition(pt.x, pt.y, pt.z) shop.AnimState:SetBank("rabbithouse") shop.AnimState:SetBuild("rabbit_house") shop.AnimState:PlayAnimation("idle", true) shop.Transform:SetScale(0.8, 0.8, 0.8) shop:RemoveComponent("stackable") shop:RemoveComponent("inventoryitem") shop:RemoveComponent("healer") shop:RemoveComponent("deployable") local light = shop.entity:AddLight() light:SetFalloff(1) light:SetIntensity(.8) light:SetRadius(5) light:SetColour(180/255, 195/255, 50/255) light:Enable(true) MakeLargeBurnable(shop) MakeLargePropagator(shop) shop:AddTag("shop") shop:DoPeriodicTask(2, function(shop) shop.AnimState:SetBloomEffectHandle("shaders/anim.ksh") shop:DoTaskInTime(1, function() shop.AnimState:SetBloomEffectHandle("") end ) end ) shop:AddComponent("trader") shop.components.trader:SetAcceptTest(function(shop, item) if item.prefab == "goldnugget" then return true end return false end ) shop.components.trader.onaccept = function(shop, giver, item) local names = {"cave_banana","pomegranate","dragonfruit"} local name = names[math.random(#names)] local veggie = SpawnPrefab(name) if item.prefab == "goldnugget" then giver.components.inventory:GiveItem(veggie) end end local counter = SpawnPrefab("healingsalve") counter.Transform:SetPosition(pt.x+2+1.8, 0, pt.z+2-1.8) counter.AnimState:SetBank("winter_meter") counter.AnimState:SetBuild("winter_meter") counter.AnimState:SetPercent("meter", 0) counter.Transform:SetScale(1.2, 1.2, 1.2) counter.AnimState:SetOrientation( ANIM_ORIENTATION.OnGround ) counter.AnimState:SetLayer( LAYER_BACKGROUND ) counter.AnimState:SetSortOrder( 1 ) counter.Transform:SetRotation( 135 ) counter.AnimState:SetMultColour(255/255,255/255,255/255,0) counter:RemoveComponent("stackable") counter:RemoveComponent("inventoryitem") counter:RemoveComponent("healer") counter:RemoveComponent("deployable") MakeLargeBurnable(counter) MakeLargePropagator(counter) counter:AddTag("NOCLICK") counter:AddTag("goodbye") local juicer = SpawnPrefab("healingsalve") juicer.Transform:SetPosition(pt.x+1-2, 0, pt.z+1+2) juicer.AnimState:SetBank("researchlab2") juicer.AnimState:SetBuild("researchlab2") juicer.AnimState:PlayAnimation("idle") juicer.Transform:SetScale(0.8, 0.8, 0.8) juicer.AnimState:SetMultColour(255/255,105/255,0/255,1) juicer:RemoveComponent("stackable") juicer:RemoveComponent("inventoryitem") juicer:RemoveComponent("healer") juicer:RemoveComponent("deployable") juicer.components.container.canbeopened = true MakeLargeBurnable(juicer) MakeLargePropagator(juicer) juicer:AddTag("juicer") juicer:AddTag("goodbye") local sweetsign = SpawnPrefab("healingsalve") sweetsign.Transform:SetPosition(pt.x+1+2, 0, pt.z+1-2) sweetsign.AnimState:SetBank("sign_home") sweetsign.AnimState:SetBuild("sign_home") sweetsign.AnimState:PlayAnimation("idle") sweetsign.Transform:SetScale(0.8, 0.8, 0.8) sweetsign.AnimState:SetMultColour(255/255,0/255,0/255,1) MakeLargeBurnable(sweetsign) MakeLargePropagator(sweetsign) sweetsign:AddTag("goodbye") sweetsign:RemoveComponent("stackable") sweetsign:RemoveComponent("inventoryitem") sweetsign:RemoveComponent("healer") sweetsign:RemoveComponent("deployable") sweetsign:ListenForEvent( "nighttime", function() sweetsign:RemoveTag("openshop") GetPlayer().SoundEmitter:KillSound("beavermusic") sweetsign.AnimState:SetMultColour(255/255,0/255,0/255,1) local pos = Vector3(sweetsign.Transform:GetWorldPosition()) local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 3000) for k,v in pairs(ents) do if v:HasTag("customers") then v:Remove() end end end, GetWorld()) sweetsign.components.inspectable.getstatus = function(sweetsign) if not sweetsign:HasTag("openshop") then local target0 = FindEntity(sweetsign, 10, function(guy) return guy:HasTag("sweets") and guy.components.inventoryitem and not guy.components.inventoryitem:IsHeld() end ) if target0 then sweetsign:AddTag("openshop") GetPlayer().SoundEmitter:PlaySound("dontstarve/music/music_hoedown", "beavermusic") sweetsign.AnimState:SetMultColour(0/255,255/255,0/255,1) for k = 1, math.random(8,16) do local pt1 = sweetsign:GetPosition() local customer = SpawnPrefab("healingsalve") customer.Transform:SetPosition(pt1.x+(math.random(30)-math.random(30)), 0, pt1.z+(math.random(30)-math.random(30))) customer.AnimState:SetBank("wilson") local names = {"wilson","wendy","wes","wickerbottom","willow","wolfgang","wx78"} local buildname = names[math.random(#names)] customer.AnimState:SetBuild(buildname) local hats = {"hat_bee","hat_beefalo","hat_bush","hat_earmuffs","hat_feather","hat_flower","hat_football","hat_miner","hat_ruins","hat_slurper","hat_slurtle","hat_spider","hat_straw","hat_top","hat_walrus","hat_winter"} local hat = hats[math.random(#hats)] customer.AnimState:OverrideSymbol("swap_hat", hat, "swap_hat") local armors = {"armor_grass","armor_marble","armor_onemanband","armor_ruins","armor_sanity","armor_slurper","armor_slurtleshell","armor_sweatervest","armor_trunkvest_summer","armor_trunkvest_winter","armor_wood"} local armor = armors[math.random(#armors)] customer.AnimState:OverrideSymbol("swap_body", armor, "swap_body") customer.AnimState:Show("HAT") customer.AnimState:Show("HAT_HAIR") customer.AnimState:Hide("HAIR_NOHAT") customer.AnimState:Hide("HAIR") customer.AnimState:Hide("ARM_carry") customer.AnimState:Show("ARM_normal") customer.AnimState:PlayAnimation("idle") customer.Transform:SetFourFaced() local sound = customer.entity:AddSoundEmitter() local shadow = customer.entity:AddDynamicShadow() shadow:SetSize( 1.3, .6 ) customer:RemoveComponent("stackable") customer:RemoveComponent("inventoryitem") customer:RemoveComponent("healer") customer:RemoveComponent("deployable") customer:AddComponent("locomotor") customer.components.locomotor.walkspeed = 4 customer.components.locomotor.runspeed = 8 customer:SetStateGraph("SGshadowwaxwell") local brain = require "brains/frogbrain" customer:SetBrain(brain) customer:AddComponent("health") customer.components.health:SetMaxHealth(1000) customer.components.health:SetInvincible(true) customer.components.health.nofadeout = true customer:AddComponent("combat") customer:AddComponent("knownlocations") customer:AddTag("customers") customer:AddTag("goodbye") customer.task1 = customer:DoPeriodicTask(3, function(customer) if math.random() < 0.1 then local target = FindEntity(customer, 100, function(guy) return guy:HasTag("sweets") and guy.components.inventoryitem and not guy.components.inventoryitem:IsHeld() end ) if target then customer.components.locomotor:Stop() customer:SetBrain(nil) customer.components.locomotor:GoToEntity(target) customer.task2 = customer:DoPeriodicTask(.25, function(customer) local target2 = FindEntity(customer, 1, function(guy) return guy:HasTag("sweets") and guy.components.inventoryitem and not guy.components.inventoryitem:IsHeld() end ) if target2 then customer.AnimState:PlayAnimation("pickup") for k = 1, 6 do SpawnPrefab("goldnugget").Transform:SetPosition(target2.Transform:GetWorldPosition()) end target2:Remove() local brain = require "brains/frogbrain" customer:SetBrain(brain) customer:RestartBrain() if customer.task2 then customer.task2:Cancel() customer.task2 = nil end end end ) customer:DoTaskInTime(8, function(customer) local brain = require "brains/frogbrain" customer:SetBrain(brain) customer:RestartBrain() if customer.task2 then customer.task2:Cancel() customer.task2 = nil end end ) else local brain = require "brains/frogbrain" customer:SetBrain(brain) customer:RestartBrain() if customer.task2 then customer.task2:Cancel() customer.task2 = nil end end end end ) end end else sweetsign:RemoveTag("openshop") GetPlayer().SoundEmitter:KillSound("beavermusic") sweetsign.AnimState:SetMultColour(255/255,0/255,0/255,1) local pos = Vector3(sweetsign.Transform:GetWorldPosition()) local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 3000) for k,v in pairs(ents) do if v:HasTag("customers") then v:Remove() end end end end end local function OnDeploy (inst, pt) sweetshop(inst) inst.components.stackable:Get():Remove() end inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy local function onsave(inst, data) if inst:HasTag("shop") then data.shop = true end if inst:HasTag("goodbye") then data.goodbye = true end if inst:HasTag("sweets") then data.sweets = true end end local function onload(inst, data) if data and data.shop then sweetshop(inst) inst:Remove() end if data and data.goodbye then inst:Remove() end if data and data.sweets then inst.AnimState:SetBank("food") inst.AnimState:SetBuild("cook_pot_food") inst.AnimState:PlayAnimation("fruitmedley", false) inst:RemoveComponent("stackable") inst:RemoveComponent("deployable") inst.components.healer:SetHealthAmount(TUNING.HEALING_SUPERHUGE) inst.components.inventoryitem:ChangeImageName("fruitmedley") inst.Transform:SetScale(1.2, 1.2, 1.2) inst:AddTag("sweets") end end inst.OnSave = onsave inst.OnLoad = onload 即可用治疗药膏种我的果汁店(手里拿着1个治疗药膏对地面点鼠标右键,如果拿着多个治疗药膏,则不会种出来),拿着黄金对库房(大胡萝卜)点鼠标左键,可以购入果汁原料,分别是火龙果、香蕉、石榴,每个水果1个黄金,当然你也可以用自己种的水果。将三种水果放入右边的榨汁机(拿着水果对榨汁机点鼠标左键),然后按Start按钮,将开始榨汁,榨完后果汁自动装入主角物品栏。将果汁放在柜台上(地上半透明的长方形),点左边的牌子就可以开张了(柜台上没有果汁则无法开张),会有顾客上门购买,每份售价6个黄金。想打烊,就再次点击牌子即可。黑夜来临时会自动打烊,回家休息吧,当然你也可以再次点牌子开张,但夜里的顾客都昏昏欲睡。出售的果汁自己也可以喝(在物品栏里对果汁点鼠标右键),可大幅补充生命值。不想要果汁店时,烧掉即可,记得先打烊哦。治疗药膏在生存选项(画着绳套)下,用2个灰、1个石头、1个蜘蛛腺体制造

2025/04/23 · Bny

YN299-跳蚤市场(用木炭种跳蚤市场摊位,上百种商品30秒刷新一次,全场一律3个黄金)

代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 二九九.跳蚤市场(用木炭种跳蚤市场摊位,上百种商品30秒刷新一次,全场一律3个黄金) 用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/charcoal.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: local function createfleashop(inst) local pt = inst:GetPosition() local seller = SpawnPrefab("charcoal") seller.Transform:SetPosition(pt.x, pt.y, pt.z) seller.AnimState:SetBank("wilson") local buildnames = {"wilson","wendy","wes","wickerbottom","willow","wolfgang","wx78"} local buildname = buildnames[math.random(#buildnames)] seller.AnimState:SetBuild(buildname) local hats = {"hat_bee","hat_beefalo","hat_bush","hat_earmuffs","hat_feather","hat_flower","hat_football","hat_miner","hat_ruins","hat_slurper","hat_slurtle","hat_spider","hat_straw","hat_top","hat_walrus","hat_winter","hat_rain","hat_watermelon","hat_ice","hat_catcoon","hat_wathgrithr"} local hat = hats[math.random(#hats)] seller.AnimState:OverrideSymbol("swap_hat", hat, "swap_hat") local armors = {"armor_grass","armor_marble","armor_onemanband","armor_ruins","armor_sanity","armor_slurper","armor_slurtleshell","armor_sweatervest","armor_trunkvest_summer","armor_trunkvest_winter","armor_wood","torso_rain"} local armor = armors[math.random(#armors)] seller.AnimState:OverrideSymbol("swap_body", armor, "swap_body") seller.AnimState:Show("HAT") seller.AnimState:Show("HAT_HAIR") seller.AnimState:Hide("HAIR_NOHAT") seller.AnimState:Hide("HAIR") seller.AnimState:Hide("ARM_carry") seller.AnimState:Show("ARM_normal") seller.AnimState:PlayAnimation("idle") seller.Transform:SetFourFaced() seller:RemoveComponent("stackable") seller:RemoveComponent("fuel") seller:RemoveComponent("inventoryitem") seller:RemoveComponent("burnable") seller:RemoveComponent("propagator") seller:RemoveComponent("deployable") seller:RemoveComponent("bait") seller:RemoveTag("molebait") seller:AddComponent("talker") seller:AddComponent("workable") seller.components.workable:SetWorkAction(ACTIONS.HAMMER) seller.components.workable:SetWorkLeft(3) seller.components.workable:SetOnFinishCallback(function(seller) SpawnPrefab("collapse_big").Transform:SetPosition(seller.Transform:GetWorldPosition()) GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood") local pos = Vector3(seller.Transform:GetWorldPosition()) local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 6) for k,v in pairs(ents) do if v:HasTag("commodity") then v:Remove() end if v:HasTag("fleas") then v:Remove() end end seller:Remove() end ) seller:AddTag("sellers") local flea = SpawnPrefab("charcoal") flea.Transform:SetPosition(pt.x+2.8+1.2, 0, pt.z-2.8+1.2) flea.AnimState:SetBank("winter_meter") flea.AnimState:SetBuild("winter_meter") flea.AnimState:SetPercent("meter", 0) flea.Transform:SetScale(1.5, 1.5, 1.5) flea.AnimState:SetOrientation( ANIM_ORIENTATION.OnGround ) flea.AnimState:SetLayer( LAYER_BACKGROUND ) flea.AnimState:SetSortOrder( 1 ) flea.Transform:SetRotation( 135 ) flea.AnimState:SetMultColour(255/255,255/255,255/255,0) flea:RemoveComponent("stackable") flea:RemoveComponent("fuel") flea:RemoveComponent("inventoryitem") flea:RemoveComponent("burnable") flea:RemoveComponent("propagator") flea:RemoveComponent("deployable") flea:RemoveComponent("bait") flea:RemoveTag("molebait") flea:AddTag("NOCLICK") flea:AddTag("fleas") local light = flea.entity:AddLight() light:SetFalloff(1) light:SetIntensity(.8) light:SetRadius(5) light:SetColour(180/255, 195/255, 50/255) light:Enable(true) for k = 0,4 do local names = {"amulet","blueamulet","purpleamulet","orangeamulet","greenamulet","yellowamulet","armorgrass","armormarble","armorruins","armor_sanity","armorslurper","armorsnurtleshell","armorwood","axe","goldenaxe","multitool_axe_pickaxe","bandage","batbat","bedroll_furry","bedroll_straw","trunkvest_summer","blowdart_sleep","blowdart_fire","blowdart_pipe","boomerang","bugnet","butter","cane","compass","deerclops_eyeball","diviningrod","eyeturret_item","fishingrod","gunpowder","hambat","hammer","footballhat","strawhat","tophat","flowerhat","beefalohat","featherhat","beehat","walrushat","earmuffshat","winterhat","minerhat","spiderhat","bushhat","slurtlehat","ruinshat","healingsalve","heatrock","nightsword","lantern","panflute","pickaxe","goldenpickaxe","pitchfork","razor","ruins_bat","shovel","goldenshovel","spear","icestaff","firestaff","telestaff","orangestaff","greenstaff","yellowstaff","sweatervest","teleportato_ring","teleportato_box","teleportato_crank","teleportato_potato","tentaclespike","torch","trunkvest_winter","umbrella","fertilizer","bell","spear_wathgrithr","grass_umbrella","rainhat","icehat","watermelonhat","catcoonhat","wathgrithrhat","raincoat","molehat","armordragonfly","beargervest","featherfan","staff_tornado","nightstick","eyebrellahat","reflectivevest","hawaiianshirt"} local name = names[math.random(#names)] local commodity = SpawnPrefab(name) commodity.Transform:SetPosition(pt.x+2+1.3-k*1, 0, pt.z-2+1.3+k*1) commodity.components.inventoryitem.canbepickedup = false commodity.persists = false commodity:AddComponent("trader") commodity.components.trader:SetAcceptTest(function(commodity, item) if GetPlayer().components.inventory:Has("goldnugget", 3) then if item.prefab == "goldnugget" then return true end end return false end ) commodity.components.trader.onaccept = function(commodity, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 2) commodity.components.inventoryitem.canbepickedup = true commodity:RemoveTag("commodity") GetPlayer().components.inventory:GiveItem(commodity) commodity:RemoveComponent("trader") commodity.persists = true end commodity:AddTag("commodity") end seller:DoPeriodicTask(30, function(seller) seller.components.talker:Say("everythings, 3 golds", 5, false) seller.AnimState:PlayAnimation("give") local pos = Vector3(seller.Transform:GetWorldPosition()) local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 6) for k,v in pairs(ents) do if v:HasTag("commodity") then v:Remove() end end for k = 0,4 do local names = {"amulet","blueamulet","purpleamulet","orangeamulet","greenamulet","yellowamulet","armorgrass","armormarble","armorruins","armor_sanity","armorslurper","armorsnurtleshell","armorwood","axe","goldenaxe","multitool_axe_pickaxe","bandage","batbat","bedroll_furry","bedroll_straw","trunkvest_summer","blowdart_sleep","blowdart_fire","blowdart_pipe","boomerang","bugnet","butter","cane","compass","deerclops_eyeball","diviningrod","eyeturret_item","fishingrod","gunpowder","hambat","hammer","footballhat","strawhat","tophat","flowerhat","beefalohat","featherhat","beehat","walrushat","earmuffshat","winterhat","minerhat","spiderhat","bushhat","slurtlehat","ruinshat","healingsalve","heatrock","nightsword","lantern","panflute","pickaxe","goldenpickaxe","pitchfork","razor","ruins_bat","shovel","goldenshovel","spear","icestaff","firestaff","telestaff","orangestaff","greenstaff","yellowstaff","sweatervest","teleportato_ring","teleportato_box","teleportato_crank","teleportato_potato","tentaclespike","torch","trunkvest_winter","umbrella","fertilizer","bell","spear_wathgrithr","grass_umbrella","rainhat","icehat","watermelonhat","catcoonhat","wathgrithrhat","raincoat","molehat","armordragonfly","beargervest","featherfan","staff_tornado","nightstick","eyebrellahat","reflectivevest","hawaiianshirt"} local name = names[math.random(#names)] local commodity = SpawnPrefab(name) commodity.Transform:SetPosition(pt.x+2+1.3-k*1, 0, pt.z-2+1.3+k*1) commodity.components.inventoryitem.canbepickedup = false commodity.persists = false commodity:AddTag("commodity") commodity:AddComponent("trader") commodity.components.trader:SetAcceptTest(function(commodity, item) if GetPlayer().components.inventory:Has("goldnugget", 3) then if item.prefab == "goldnugget" then return true end end return false end ) commodity.components.trader.onaccept = function(commodity, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 2) commodity.components.inventoryitem.canbepickedup = true commodity:RemoveTag("commodity") GetPlayer().components.inventory:GiveItem(commodity) commodity:RemoveComponent("trader") commodity.persists = true end end end) end local function OnDeploy (inst, pt) createfleashop(inst) inst.components.stackable:Get():Remove() end inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy local function onsave(inst, data) if inst:HasTag("sellers") then data.sellers = true end if inst:HasTag("fleas") then data.fleas = true end end local function onload(inst, data) if data and data.sellers then createfleashop(inst) inst:Remove() end if data and data.fleas then inst:Remove() end end inst.OnSave = onsave inst.OnLoad = onload 即可拿着1个木炭对空地点鼠标右键,种出跳蚤市场的摊位(手里拿多个木炭不会种出来),每30秒展示5种商品,看上哪件,就拿着黄金对那件商品点鼠标左键购买,全场一律3个黄金。店主为随机人物,可以种多个跳蚤市场摊位,形成商品一条街(摊位间不要太近,否则影响展示商品)。不想要跳蚤市场时,用锤子砸店主即可(暴力拆迁)

2025/04/23 · Bny

YN300-小诊所(用毛皮铺盖种小诊所,可买药、住院、做手术)

代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 三00.小诊所(用毛皮铺盖种小诊所,可买药、住院、做手术) 用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/bedroll_furry.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: local function createhospital(inst) local pt = inst:GetPosition() local nurse = SpawnPrefab("bedroll_furry") nurse.Transform:SetPosition(pt.x, pt.y, pt.z) nurse.AnimState:SetBank("wilson") nurse.AnimState:SetBuild("wendy") nurse.AnimState:OverrideSymbol("swap_body", "armor_sweatervest", "swap_body") nurse.AnimState:Hide("ARM_carry") nurse.AnimState:Show("ARM_normal") nurse.Transform:SetFourFaced() nurse.AnimState:PlayAnimation("idle") nurse:RemoveComponent("inventoryitem") nurse:RemoveComponent("finiteuses") nurse:RemoveComponent("fuel") nurse:RemoveComponent("sleepingbag") nurse:RemoveComponent("deployable") MakeLargeBurnable(nurse) MakeLargePropagator(nurse) nurse:AddTag("nurse") local light = nurse.entity:AddLight() light:SetFalloff(1) light:SetIntensity(.8) light:SetRadius(5) light:SetColour(180/255, 195/255, 50/255) light:Enable(true) nurse:AddComponent("trader") nurse.components.trader:SetAcceptTest(function(nurse, item) if GetPlayer().components.inventory:Has("goldnugget", 5) then if item.prefab == "goldnugget" then return true end end return false end ) nurse.components.trader.onaccept = function(nurse, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 4) GetPlayer().components.playercontroller:Enable(false) nurse.AnimState:OverrideSymbol("swap_object", "swap_hammer", "swap_hammer") nurse.AnimState:Hide("ARM_normal") nurse.AnimState:Show("ARM_carry") nurse.task = nurse:DoPeriodicTask(1, function(nurse) nurse.Transform:SetRotation(GetPlayer().Transform:GetRotation() - 180) nurse.AnimState:PlayAnimation("pickaxe_pre") nurse.AnimState:PlayAnimation("pickaxe_loop", false) GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/rock_break") GetPlayer().sg:GoToState("hit") end ) nurse:DoTaskInTime(5, function() TheFrontEnd:Fade(false,1) if nurse.task then nurse.task:Cancel() nurse.task = nil end nurse.Transform:SetRotation(0) nurse:DoTaskInTime(1, function() nurse.AnimState:Hide("ARM_carry") nurse.AnimState:Show("ARM_normal") nurse.AnimState:PlayAnimation("idle_onemanband1_loop",true) nurse:DoTaskInTime(3, function() nurse.AnimState:PlayAnimation("idle") end ) TheFrontEnd:Fade(true,1) GetPlayer().components.health:DoDelta(GetPlayer().components.health.maxhealth) if GetPlayer():HasTag("poisoning") or GetPlayer():HasTag("fever") then if GetPlayer():HasTag("poisoning") then GetPlayer():RemoveTag("poisoning") end if GetPlayer():HasTag("fever") then GetPlayer():RemoveTag("fever") end if GetPlayer().poison then GetPlayer().poison:Cancel() GetPlayer().poison = nil end if GetPlayer().fever then GetPlayer().fever:Cancel() GetPlayer().fever = nil end GetPlayer().AnimState:SetMultColour(255/255,255/255,255/255,1) GetPlayer().components.locomotor.walkspeed = TUNING.WILSON_WALK_SPEED GetPlayer().components.locomotor.runspeed = TUNING.WILSON_RUN_SPEED GetPlayer().components.combat:SetAttackPeriod(TUNING.WILSON_ATTACK_PERIOD) end GetPlayer().sg:GoToState("wakeup") GetPlayer().components.playercontroller:Enable(true) end ) end ) end local medicinebox = SpawnPrefab("bedroll_furry") medicinebox.Transform:SetPosition(pt.x+1.2, 0, pt.z-1.2) medicinebox.AnimState:SetBank("icebox") medicinebox.AnimState:SetBuild("ice_box") medicinebox.AnimState:PlayAnimation("closed") medicinebox.Transform:SetScale(0.5, 0.5, 0.5) medicinebox:RemoveComponent("inventoryitem") medicinebox:RemoveComponent("finiteuses") medicinebox:RemoveComponent("fuel") medicinebox:RemoveComponent("sleepingbag") medicinebox:RemoveComponent("deployable") MakeLargeBurnable(medicinebox) MakeLargePropagator(medicinebox) medicinebox:AddTag("goodbye") medicinebox:AddComponent("trader") medicinebox.components.trader:SetAcceptTest(function(medicinebox, item) if GetPlayer().components.inventory:Has("goldnugget", 5) then if item.prefab == "goldnugget" then return true end end return false end ) medicinebox.components.trader.onaccept = function(medicinebox, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 4) local medicine = SpawnPrefab("bedroll_furry") medicine.AnimState:SetBank("carrot") medicine.AnimState:SetBuild("carrot") medicine.AnimState:PlayAnimation("cooked") medicine.components.inventoryitem:ChangeImageName("carrot_cooked") medicine:RemoveComponent("finiteuses") medicine:RemoveComponent("fuel") medicine:RemoveComponent("sleepingbag") medicine:RemoveComponent("burnable") medicine:RemoveComponent("propagator") medicine:RemoveComponent("deployable") medicine:AddComponent("edible") medicine.components.edible.healthvalue = GetPlayer().components.health.maxhealth *0.5 medicine.components.edible.hungervalue = 0 medicine.components.edible.sanityvalue = GetPlayer().components.sanity.max *0.5 medicine.components.edible.foodtype = "VEGGIE" medicine:AddTag("medicine") GetPlayer().components.inventory:GiveItem(medicine) end local hospital = SpawnPrefab("bedroll_furry") hospital.Transform:SetPosition(pt.x-2, 0, pt.z-2) hospital.AnimState:SetBank("tent") hospital.AnimState:SetBuild("tent") hospital.AnimState:PlayAnimation("idle", true) hospital.Transform:SetScale(1.2, 1.2, 1.2) hospital:RemoveComponent("inventoryitem") hospital:RemoveComponent("finiteuses") hospital:RemoveComponent("fuel") hospital:RemoveComponent("sleepingbag") hospital:RemoveComponent("deployable") MakeLargeBurnable(hospital) MakeLargePropagator(hospital) hospital:AddTag("goodbye") hospital:AddComponent("trader") hospital.components.trader:SetAcceptTest(function(hospital, item) if GetPlayer().components.inventory:Has("goldnugget", 5) then if item.prefab == "goldnugget" then return true end end return false end ) hospital.components.trader.onaccept = function(hospital, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 4) GetPlayer().components.playercontroller:Enable(false) TheFrontEnd:Fade(false,1) hospital:DoTaskInTime(2, function() TheFrontEnd:Fade(true,1) GetPlayer().components.sanity:DoDelta(GetPlayer().components.sanity.max) GetPlayer().components.playercontroller:Enable(true) end ) end end local function OnDeploy (inst, pt) createhospital(inst) inst:Remove() end inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy local function onsave(inst, data) if inst:HasTag("goodbye") then data.goodbye = true end if inst:HasTag("nurse") then data.nurse = true end if inst:HasTag("medicine") then data.medicine = true end end local function onload(inst, data) if data and data.goodbye then inst:Remove() end if data and data.nurse then createhospital(inst) inst:Remove() end if data and data.medicine then inst.AnimState:SetBank("carrot") inst.AnimState:SetBuild("carrot") inst.AnimState:PlayAnimation("cooked") inst.components.inventoryitem:ChangeImageName("carrot_cooked") inst:RemoveComponent("finiteuses") inst:RemoveComponent("fuel") inst:RemoveComponent("sleepingbag") inst:RemoveComponent("burnable") inst:RemoveComponent("propagator") inst:RemoveComponent("deployable") inst:AddComponent("edible") inst.components.edible.healthvalue = GetPlayer().components.health.maxhealth *0.5 inst.components.edible.hungervalue = 0 inst.components.edible.sanityvalue = GetPlayer().components.sanity.max *0.5 inst.components.edible.foodtype = "VEGGIE" inst:AddTag("medicine") end end inst.OnSave = onsave inst.OnLoad = onload 即可用毛皮铺盖种小诊所,给护士5个黄金(拿着黄金对护士点鼠标左键),会为你麻醉并做手术,将生命值恢复到最大,如果同时修改了“小病小灾”,也可治愈感冒和食物中毒。给帐篷5个黄金可以住院,将脑值恢复到最大。给左侧的药箱5个黄金,可以买一份药,吃了可补一半的生命和脑值。不想要小诊所时,烧掉即可。毛皮铺盖在生存选项(画着绳套)下,用1个草席卷、2个兔人尾巴制造

2025/04/23 · Bny

YN301-斗蜘蛛(用啜食者皮种斗蜘蛛场,购买迷你蜘蛛与庄家PK,赢奖金)

代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。 原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html 三0一.斗蜘蛛(用啜食者皮种斗蜘蛛场,购买迷你蜘蛛与庄家PK,赢奖金) 用MT管理器打开游戏目录/assets/scripts/prefabs/slurperpelt.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: local colours= { {198/255,43/255,43/255}, {79/255,153/255,68/255}, {35/255,105/255,235/255}, {233/255,208/255,69/255}, {109/255,50/255,163/255}, {222/255,126/255,39/255}, } local function boxing(inst) local pt = inst:GetPosition() local boxer = SpawnPrefab("slurper_pelt") boxer.Transform:SetPosition(pt.x, pt.y, pt.z) boxer.AnimState:SetBank("wilson") boxer.AnimState:SetBuild("wes") boxer.AnimState:OverrideSymbol("swap_hat", "hat_top", "swap_hat") boxer.AnimState:Show("HAT") boxer.AnimState:Show("HAT_HAIR") boxer.AnimState:Hide("HAIR_NOHAT") boxer.AnimState:Hide("HAIR") boxer.AnimState:Hide("ARM_carry") boxer.AnimState:Show("ARM_normal") boxer.Transform:SetFourFaced() boxer.AnimState:PlayAnimation("idle") boxer:RemoveComponent("stackable") boxer:RemoveComponent("tradable") boxer:RemoveComponent("inventoryitem") boxer:RemoveComponent("edible") boxer:RemoveComponent("deployable") MakeLargeBurnable(boxer) MakeLargePropagator(boxer) boxer:AddTag("boxer") boxer:AddComponent("trader") boxer.components.trader:SetAcceptTest(function(boxer, item) if GetPlayer().components.inventory:Has("goldnugget", 100) then if item.prefab == "goldnugget" then return true end end return false end ) boxer.components.trader.onaccept = function(boxer, giver, item) GetPlayer().components.inventory:ConsumeByName("goldnugget", 99) boxer.AnimState:PlayAnimation("give") local cricket = SpawnPrefab("slurper_pelt") cricket.Transform:SetPosition(pt.x+1.5, 0, pt.z+1.5) cricket.AnimState:SetBank("spider_queen") cricket.AnimState:SetBuild("spider_queen_build") cricket.AnimState:PlayAnimation("idle", true) cricket.Transform:SetFourFaced() cricket.entity:AddSoundEmitter() cricket.Transform:SetScale(0.3, 0.3, 0.3) cricket.colour_idx = math.random(#colours) cricket.AnimState:SetMultColour(colours[cricket.colour_idx][1],colours[cricket.colour_idx][2],colours[cricket.colour_idx][3],1) cricket.components.inventoryitem:ChangeImageName("spidereggsack") cricket:RemoveComponent("stackable") cricket:RemoveComponent("tradable") cricket:RemoveComponent("edible") cricket:RemoveComponent("burnable") cricket:RemoveComponent("propagator") cricket:RemoveComponent("deployable") local brain = require "brains/abigailbrain" cricket:SetBrain(brain) cricket:AddComponent("lootdropper") cricket.components.lootdropper:SetLoot({"silk"}) cricket:AddComponent("locomotor") cricket.components.locomotor.walkspeed = 5 cricket.components.locomotor.runspeed = 8 cricket:SetStateGraph("SGspiderqueen") cricket:AddComponent("follower") cricket.components.follower:SetLeader(GetPlayer()) cricket.health_num = math.random(100,300) cricket.damage_num = math.random(20,50) cricket:AddComponent("health") cricket.components.health:SetMaxHealth(cricket.health_num) cricket:AddComponent("trader") cricket.components.trader:SetAcceptTest(function(cricket, item) if item.prefab == "smallmeat" then return cricket.components.health:GetPercent() < 1 end return false end ) cricket.components.trader.onaccept = function(cricket, giver, item) cricket.components.health:DoDelta(300) end cricket:AddComponent("combat") cricket.components.combat:SetRetargetFunction(1, function(cricket) if not cricket.components.health:IsDead() then return FindEntity(cricket, 20, function(guy) if guy.components.health and not guy.components.health:IsDead() then return guy:HasTag("cricket") or guy:HasTag("cricket0") end end ) end end ) cricket.components.combat:SetKeepTargetFunction(function(cricket, target) return target and target:IsValid() end ) cricket.components.combat:SetAttackPeriod(2) cricket.components.combat:SetRange(1, 2) cricket.components.combat:SetDefaultDamage(cricket.damage_num) cricket:AddTag("cricket") end boxer.components.inspectable.getstatus = function(boxer) if not boxer:HasTag("startgame") then if GetPlayer().components.inventory:Has("goldnugget", 100) then local target0 = FindEntity(boxer, 30, function(guy) return guy:HasTag("cricket") and guy.components.inventoryitem and not guy.components.inventoryitem:IsHeld() end ) if target0 then boxer:AddTag("startgame") boxer.AnimState:PlayAnimation("give") GetPlayer().components.playercontroller:Enable(false) TheCamera:SetTarget(target0) target0:RemoveComponent("inventoryitem") boxer.task = boxer:DoPeriodicTask(1, function(boxer) if target0.components.health:IsDead() then if boxer.task then boxer.task:Cancel() boxer.task = nil end GetPlayer().components.inventory:ConsumeByName("goldnugget", 100) TheCamera:SetTarget(GetPlayer()) GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo") boxer.AnimState:PlayAnimation("idle_onemanband1_loop",true) boxer:DoTaskInTime(2, function() boxer.AnimState:PlayAnimation("idle") local target1 = FindEntity(boxer, 30, function(guy) return guy:HasTag("cricket0") end ) if target1 then target1:Remove() end boxer:RemoveTag("startgame") GetPlayer().components.playercontroller:Enable(true) end ) end end ) local cricket0 = SpawnPrefab("slurper_pelt") cricket0.Transform:SetPosition(pt.x+1.5, 0, pt.z+1.5) cricket0.AnimState:SetBank("spider_queen") cricket0.AnimState:SetBuild("spider_queen_build") cricket0.AnimState:PlayAnimation("idle", true) cricket0.Transform:SetFourFaced() cricket0.entity:AddSoundEmitter() cricket0.Transform:SetScale(0.3, 0.3, 0.3) cricket0:RemoveComponent("stackable") cricket0:RemoveComponent("tradable") cricket0:RemoveComponent("inventoryitem") cricket0:RemoveComponent("edible") cricket0:RemoveComponent("burnable") cricket0:RemoveComponent("propagator") cricket0:RemoveComponent("deployable") local brain = require "brains/abigailbrain" cricket0:SetBrain(brain) cricket0:AddComponent("lootdropper") cricket0.components.lootdropper:SetLoot({"silk"}) cricket0:AddComponent("locomotor") cricket0.components.locomotor.walkspeed = 5 cricket0.components.locomotor.runspeed = 8 cricket0:SetStateGraph("SGspiderqueen") cricket0:AddComponent("follower") cricket0.components.follower:SetLeader(boxer) cricket0:AddComponent("health") cricket0.components.health:SetMaxHealth(math.random(110,330)) cricket0:AddComponent("combat") cricket0.components.combat:SetRetargetFunction(1, function(cricket0) if not cricket0.components.health:IsDead() then return FindEntity(cricket0, 20, function(guy) if guy.components.health and not guy.components.health:IsDead() then return guy:HasTag("cricket") end end ) end end ) cricket0.components.combat:SetKeepTargetFunction(function(cricket0, target) return target and target:IsValid() end ) cricket0.components.combat:SetAttackPeriod(2) cricket0.components.combat:SetRange(1, 2) cricket0.components.combat:SetDefaultDamage(math.random(22,55)) cricket0:ListenForEvent("death", function() boxer.AnimState:PlayAnimation("give") if boxer.task then boxer.task:Cancel() boxer.task = nil end for k = 1, 100 do local goldnugget = SpawnPrefab("goldnugget") GetPlayer().components.inventory:GiveItem(goldnugget) end boxer:RemoveTag("startgame") GetPlayer().components.playercontroller:Enable(true) TheCamera:SetTarget(GetPlayer()) target0:AddComponent("inventoryitem") target0.components.inventoryitem:ChangeImageName("spidereggsack") end ) cricket0:AddTag("cricket0") cricket0:AddTag("goodbye") end end end end local advert = SpawnPrefab("slurper_pelt") advert.Transform:SetPosition(pt.x-2, 0, pt.z-2) advert.AnimState:SetBank("barrel") advert.AnimState:SetBuild("monkey_barrel") advert.AnimState:PlayAnimation("idle", true) advert.Transform:SetScale(1.5, 1.5, 1.5) advert:RemoveComponent("stackable") advert:RemoveComponent("tradable") advert:RemoveComponent("inventoryitem") advert:RemoveComponent("edible") advert:RemoveComponent("deployable") MakeLargeBurnable(advert) MakeLargePropagator(advert) advert:AddTag("lightningrod") local light = advert.entity:AddLight() light:SetFalloff(1) light:SetIntensity(.8) light:SetRadius(10) light:SetColour(180/255, 195/255, 50/255) light:Enable(true) advert:DoPeriodicTask(6, function(advert) advert.AnimState:SetBloomEffectHandle("shaders/anim.ksh") advert:DoTaskInTime(3, function(advert) advert.AnimState:SetBloomEffectHandle("") end ) end ) advert:AddTag("goodbye") end local function OnDeploy (inst, pt) boxing(inst) inst.components.stackable:Get():Remove() end inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy local function onsave(inst, data) if inst:HasTag("goodbye") then data.goodbye = true end if inst:HasTag("boxer") then data.boxer = true end if inst:HasTag("cricket") then data.cricket = true end data.colour_idx = inst.colour_idx data.health_num = inst.health_num data.damage_num = inst.damage_num end local function onload(inst, data) if data and data.goodbye then inst:Remove() end if data and data.boxer then boxing(inst) inst:Remove() end if data and data.cricket then inst.AnimState:SetBank("spider_queen") inst.AnimState:SetBuild("spider_queen_build") inst.AnimState:PlayAnimation("idle", true) inst.Transform:SetFourFaced() inst.entity:AddSoundEmitter() inst.Transform:SetScale(0.3, 0.3, 0.3) inst.colour_idx = math.random(#colours) inst.AnimState:SetMultColour(colours[inst.colour_idx][1],colours[inst.colour_idx][2],colours[inst.colour_idx][3],1) inst.components.inventoryitem:ChangeImageName("spidereggsack") inst:RemoveComponent("stackable") inst:RemoveComponent("tradable") inst:RemoveComponent("edible") inst:RemoveComponent("burnable") inst:RemoveComponent("propagator") inst:RemoveComponent("deployable") local brain = require "brains/abigailbrain" inst:SetBrain(brain) inst:AddComponent("lootdropper") inst.components.lootdropper:SetLoot({"silk"}) inst:AddComponent("locomotor") inst.components.locomotor.walkspeed = 5 inst.components.locomotor.runspeed = 8 inst:SetStateGraph("SGspiderqueen") inst:AddComponent("follower") inst.components.follower:SetLeader(GetPlayer()) inst.health_num = math.random(100,300) inst.damage_num = math.random(20,50) inst:AddComponent("health") inst.components.health:SetMaxHealth(inst.health_num) inst:AddComponent("trader") inst.components.trader:SetAcceptTest(function(inst, item) if item.prefab == "smallmeat" then return inst.components.health:GetPercent() < 1 end return false end ) inst.components.trader.onaccept = function(inst, giver, item) inst.components.health:DoDelta(300) end inst:AddComponent("combat") inst.components.combat:SetRetargetFunction(1, function(inst) if not inst.components.health:IsDead() then return FindEntity(inst, 20, function(guy) if guy.components.health and not guy.components.health:IsDead() then return guy:HasTag("cricket") or guy:HasTag("cricket0") end end ) end end ) inst.components.combat:SetKeepTargetFunction(function(inst, target) return target and target:IsValid() end ) inst.components.combat:SetAttackPeriod(2) inst.components.combat:SetRange(1, 2) inst.components.combat:SetDefaultDamage(inst.damage_num) inst:AddTag("cricket") end if data and data.colour_idx then inst.colour_idx = math.min(#colours, data.colour_idx) inst.AnimState:SetMultColour(colours[inst.colour_idx][1],colours[inst.colour_idx][2],colours[inst.colour_idx][3],1) end if data and data.health_num then inst.health_num = data.health_num inst.components.health:SetMaxHealth(inst.health_num) inst.components.health:DoDelta(inst.components.health.maxhealth) end if data and data.damage_num then inst.damage_num = data.damage_num inst.components.combat:SetDefaultDamage(inst.damage_num) end end inst.OnSave = onsave inst.OnLoad = onload 即可用啜食者皮种斗蜘蛛场(拿着1个啜食者皮对地面点鼠标右键,如果拿着多个啜食者皮,则不会种出来),给庄家100个黄金(拿着黄金对庄家点鼠标左键),可购买迷你蜘蛛,鼠标左键点蜘蛛,可将其放入物品栏,显示为蜘蛛卵的图标。如果想与庄家比赛,主角身上至少有100个黄金,将自己的一只蜘蛛放在庄家面前,鼠标左键点庄家,庄家会拿出另一只蜘蛛与你的蜘蛛PK。如果你赢了,将赢得100个黄金的奖金,如果输了就输掉100个黄金,并损失掉自己的蜘蛛。为防止作弊,比赛中主角操作将暂停,比赛结束后恢复。每只迷你蜘蛛的血量、攻击力都不同,如果你买到厉害的蜘蛛,一定要用心呵护,因为它就是你的摇钱树,给蜘蛛喂一块小肉(拿着小肉对蜘蛛点鼠标左键),可以为其补满血。你也可以多买几只蜘蛛,内部PK,挑选出好的品种,再与庄家对赌,会增大你的胜率。不想要斗蜘蛛场了,烧掉即可。啜食者皮可以打啜食者获得,也可在“巨型超市”中,花1-3个黄金购得

2025/04/23 · Bny