代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。
原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html
1 2二九九.跳蚤市场(用木炭种跳蚤市场摊位,上百种商品30秒刷新一次,全场一律3个黄金) 3 4 用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/charcoal.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: 5 6local function createfleashop(inst) 7 local pt = inst:GetPosition() 8 local seller = SpawnPrefab("charcoal") 9 seller.Transform:SetPosition(pt.x, pt.y, pt.z) 10 seller.AnimState:SetBank("wilson") 11 local buildnames = {"wilson","wendy","wes","wickerbottom","willow","wolfgang","wx78"} 12 local buildname = buildnames[math.random(#buildnames)] 13 seller.AnimState:SetBuild(buildname) 14 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"} 15 local hat = hats[math.random(#hats)] 16 seller.AnimState:OverrideSymbol("swap_hat", hat, "swap_hat") 17 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"} 18 local armor = armors[math.random(#armors)] 19 seller.AnimState:OverrideSymbol("swap_body", armor, "swap_body") 20 seller.AnimState:Show("HAT") 21 seller.AnimState:Show("HAT_HAIR") 22 seller.AnimState:Hide("HAIR_NOHAT") 23 seller.AnimState:Hide("HAIR") 24 seller.AnimState:Hide("ARM_carry") 25 seller.AnimState:Show("ARM_normal") 26 seller.AnimState:PlayAnimation("idle") 27 seller.Transform:SetFourFaced() 28 seller:RemoveComponent("stackable") 29 seller:RemoveComponent("fuel") 30 seller:RemoveComponent("inventoryitem") 31 seller:RemoveComponent("burnable") 32 seller:RemoveComponent("propagator") 33 seller:RemoveComponent("deployable") 34 seller:RemoveComponent("bait") 35 seller:RemoveTag("molebait") 36 seller:AddComponent("talker") 37 seller:AddComponent("workable") 38 seller.components.workable:SetWorkAction(ACTIONS.HAMMER) 39 seller.components.workable:SetWorkLeft(3) 40 seller.components.workable:SetOnFinishCallback(function(seller) 41 SpawnPrefab("collapse_big").Transform:SetPosition(seller.Transform:GetWorldPosition()) 42 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood") 43 local pos = Vector3(seller.Transform:GetWorldPosition()) 44 local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 6) 45 for k,v in pairs(ents) do 46 if v:HasTag("commodity") then 47 v:Remove() 48 end 49 if v:HasTag("fleas") then 50 v:Remove() 51 end 52 end 53 seller:Remove() 54 end ) 55 seller:AddTag("sellers") 56 local flea = SpawnPrefab("charcoal") 57 flea.Transform:SetPosition(pt.x+2.8+1.2, 0, pt.z-2.8+1.2) 58 flea.AnimState:SetBank("winter_meter") 59 flea.AnimState:SetBuild("winter_meter") 60 flea.AnimState:SetPercent("meter", 0) 61 flea.Transform:SetScale(1.5, 1.5, 1.5) 62 flea.AnimState:SetOrientation( ANIM_ORIENTATION.OnGround ) 63 flea.AnimState:SetLayer( LAYER_BACKGROUND ) 64 flea.AnimState:SetSortOrder( 1 ) 65 flea.Transform:SetRotation( 135 ) 66 flea.AnimState:SetMultColour(255/255,255/255,255/255,0) 67 flea:RemoveComponent("stackable") 68 flea:RemoveComponent("fuel") 69 flea:RemoveComponent("inventoryitem") 70 flea:RemoveComponent("burnable") 71 flea:RemoveComponent("propagator") 72 flea:RemoveComponent("deployable") 73 flea:RemoveComponent("bait") 74 flea:RemoveTag("molebait") 75 flea:AddTag("NOCLICK") 76 flea:AddTag("fleas") 77 local light = flea.entity:AddLight() 78 light:SetFalloff(1) 79 light:SetIntensity(.8) 80 light:SetRadius(5) 81 light:SetColour(180/255, 195/255, 50/255) 82 light:Enable(true) 83 for k = 0,4 do 84 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"} 85 local name = names[math.random(#names)] 86 local commodity = SpawnPrefab(name) 87 commodity.Transform:SetPosition(pt.x+2+1.3-k*1, 0, pt.z-2+1.3+k*1) 88 commodity.components.inventoryitem.canbepickedup = false 89 commodity.persists = false 90 commodity:AddComponent("trader") 91 commodity.components.trader:SetAcceptTest(function(commodity, item) 92 if GetPlayer().components.inventory:Has("goldnugget", 3) then 93 if item.prefab == "goldnugget" then 94 return true 95 end 96 end 97 return false 98 end ) 99 commodity.components.trader.onaccept = function(commodity, giver, item) 100 GetPlayer().components.inventory:ConsumeByName("goldnugget", 2) 101 commodity.components.inventoryitem.canbepickedup = true 102 commodity:RemoveTag("commodity") 103 GetPlayer().components.inventory:GiveItem(commodity) 104 commodity:RemoveComponent("trader") 105 commodity.persists = true 106 end 107 commodity:AddTag("commodity") 108 end 109 seller:DoPeriodicTask(30, function(seller) 110 seller.components.talker:Say("everythings, 3 golds", 5, false) 111 seller.AnimState:PlayAnimation("give") 112 local pos = Vector3(seller.Transform:GetWorldPosition()) 113 local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 6) 114 for k,v in pairs(ents) do 115 if v:HasTag("commodity") then 116 v:Remove() 117 end 118 end 119 for k = 0,4 do 120 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"} 121 local name = names[math.random(#names)] 122 local commodity = SpawnPrefab(name) 123 commodity.Transform:SetPosition(pt.x+2+1.3-k*1, 0, pt.z-2+1.3+k*1) 124 commodity.components.inventoryitem.canbepickedup = false 125 commodity.persists = false 126 commodity:AddTag("commodity") 127 commodity:AddComponent("trader") 128 commodity.components.trader:SetAcceptTest(function(commodity, item) 129 if GetPlayer().components.inventory:Has("goldnugget", 3) then 130 if item.prefab == "goldnugget" then 131 return true 132 end 133 end 134 return false 135 end ) 136 commodity.components.trader.onaccept = function(commodity, giver, item) 137 GetPlayer().components.inventory:ConsumeByName("goldnugget", 2) 138 commodity.components.inventoryitem.canbepickedup = true 139 commodity:RemoveTag("commodity") 140 GetPlayer().components.inventory:GiveItem(commodity) 141 commodity:RemoveComponent("trader") 142 commodity.persists = true 143 end 144 end 145 end) 146end 147local function OnDeploy (inst, pt) 148 createfleashop(inst) 149 inst.components.stackable:Get():Remove() 150end 151 inst:AddComponent("deployable") 152 inst.components.deployable.ondeploy = OnDeploy 153local function onsave(inst, data) 154 if inst:HasTag("sellers") then 155 data.sellers = true 156 end 157 if inst:HasTag("fleas") then 158 data.fleas = true 159 end 160end 161local function onload(inst, data) 162 if data and data.sellers then 163 createfleashop(inst) 164 inst:Remove() 165 end 166 if data and data.fleas then 167 inst:Remove() 168 end 169end 170 inst.OnSave = onsave 171 inst.OnLoad = onload 172 173 即可拿着1个木炭对空地点鼠标右键,种出跳蚤市场的摊位(手里拿多个木炭不会种出来),每30秒展示5种商品,看上哪件,就拿着黄金对那件商品点鼠标左键购买,全场一律3个黄金。店主为随机人物,可以种多个跳蚤市场摊位,形成商品一条街(摊位间不要太近,否则影响展示商品)。不想要跳蚤市场时,用锤子砸店主即可(暴力拆迁)