代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。
原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html
1 2二七一.全自动播种机(给避雷针植物,自动种下一百多个) 3 4 用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/lightningrod.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容: 5 6local slotpos = { Vector3(0,-75,0)} 7local function itemtest(inst, item, slot) 8 if item.prefab == "twigs" or item.prefab == "cutgrass" or item.prefab == "petals" or item.prefab == "petals_evil" or item.prefab == "cutreeds" or item.prefab == "red_cap" or item.prefab == "green_cap" or item.prefab == "blue_cap" or item.prefab == "carrot" or item.prefab == "berries" or item.prefab == "mandrake" or item.prefab == "foliage" or item.prefab == "cave_banana" or item.prefab == "cutlichen" or item.prefab == "lightbulb" or item.prefab == "pinecone" or item.prefab == "charcoal" or item.prefab == "acorn" or item.prefab == "cactus_meat" then 9 return true 10 end 11 return false 12end 13local widgetbuttoninfo = { 14 text = "Do", 15 position = Vector3(0, -145, 0), 16 fn = function(inst) 17 if GetPlayer().components.inventory:Has("goldnugget", 50) then 18 if inst.components.container:Has("twigs", 1) then 19 inst.components.container:ConsumeByName("twigs", 1) 20 inst.plants = "sapling" 21 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 22 end 23 if inst.components.container:Has("cutgrass", 1) then 24 inst.components.container:ConsumeByName("cutgrass", 1) 25 inst.plants = "grass" 26 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 27 end 28 if inst.components.container:Has("petals", 1) then 29 inst.components.container:ConsumeByName("petals", 1) 30 inst.plants = "flower" 31 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 32 end 33 if inst.components.container:Has("petals_evil", 1) then 34 inst.components.container:ConsumeByName("petals_evil", 1) 35 inst.plants = "flower_evil" 36 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 37 end 38 if inst.components.container:Has("cutreeds", 1) then 39 inst.components.container:ConsumeByName("cutreeds", 1) 40 inst.plants = "reeds" 41 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 42 end 43 if inst.components.container:Has("red_cap", 1) then 44 inst.components.container:ConsumeByName("red_cap", 1) 45 inst.plants = "red_mushroom" 46 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 47 end 48 if inst.components.container:Has("green_cap", 1) then 49 inst.components.container:ConsumeByName("green_cap", 1) 50 inst.plants = "green_mushroom" 51 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 52 end 53 if inst.components.container:Has("blue_cap", 1) then 54 inst.components.container:ConsumeByName("blue_cap", 1) 55 inst.plants = "blue_mushroom" 56 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 57 end 58 if inst.components.container:Has("carrot", 1) then 59 inst.components.container:ConsumeByName("carrot", 1) 60 inst.plants = "carrot_planted" 61 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 62 end 63 if inst.components.container:Has("berries", 1) then 64 inst.components.container:ConsumeByName("berries", 1) 65 inst.plants = "berrybush2" 66 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 67 end 68 if inst.components.container:Has("mandrake", 1) then 69 inst.components.container:ConsumeByName("mandrake", 1) 70 inst.plants = "mandrake" 71 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 72 end 73 if inst.components.container:Has("foliage", 1) then 74 inst.components.container:ConsumeByName("foliage", 1) 75 inst.plants = "cave_fern" 76 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 77 end 78 if inst.components.container:Has("cave_banana", 1) then 79 inst.components.container:ConsumeByName("cave_banana", 1) 80 inst.plants = "cave_banana_tree" 81 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 82 end 83 if inst.components.container:Has("cutlichen", 1) then 84 inst.components.container:ConsumeByName("cutlichen", 1) 85 inst.plants = "lichen" 86 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 87 end 88 if inst.components.container:Has("lightbulb", 1) then 89 inst.components.container:ConsumeByName("lightbulb", 1) 90 inst.plants = "flower_cave_triple" 91 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 92 end 93 if inst.components.container:Has("pinecone", 1) then 94 inst.components.container:ConsumeByName("pinecone", 1) 95 inst.plants = "evergreen_tall" 96 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 97 end 98 if inst.components.container:Has("charcoal", 1) then 99 inst.components.container:ConsumeByName("charcoal", 1) 100 inst.plants = "mushtree_tall" 101 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 102 end 103 if inst.components.container:Has("acorn", 1) then 104 inst.components.container:ConsumeByName("acorn", 1) 105 inst.plants = "deciduoustree_tall" 106 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 107 end 108 if inst.components.container:Has("cactus_meat", 1) then 109 inst.components.container:ConsumeByName("cactus_meat", 1) 110 inst.plants = "cactus" 111 GetPlayer().components.inventory:ConsumeByName("goldnugget", 50) 112 end 113 local pt = Vector3(inst.Transform:GetWorldPosition()) 114 inst:StartThread(function() 115 for k = 1, 25 do 116 local result_offset = FindValidPositionByFan(1 * 2 * PI, 4, 25, function(offset) 117 local x,y,z = (pt + offset):Get() 118 local ents = TheSim:FindEntities(x,y,z , 1) 119 return not next(ents) 120 end) 121 if result_offset then 122 local plant = SpawnPrefab(inst.plants) 123 plant.Transform:SetPosition((pt + result_offset):Get()) 124 GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40) 125 local fx = SpawnPrefab("splash_ocean") 126 local pos = pt + result_offset 127 fx.Transform:SetPosition(pos.x, pos.y, pos.z) 128 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood") 129 end 130 Sleep(.33) 131 end 132 for k = 1, 37 do 133 local result_offset = FindValidPositionByFan(1 * 2 * PI, 6, 37, function(offset) 134 local x,y,z = (pt + offset):Get() 135 local ents = TheSim:FindEntities(x,y,z , 1) 136 return not next(ents) 137 end) 138 if result_offset then 139 local plant = SpawnPrefab(inst.plants) 140 plant.Transform:SetPosition((pt + result_offset):Get()) 141 GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40) 142 local fx = SpawnPrefab("splash_ocean") 143 local pos = pt + result_offset 144 fx.Transform:SetPosition(pos.x, pos.y, pos.z) 145 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood") 146 end 147 Sleep(.23) 148 end 149 for k = 1, 50 do 150 local result_offset = FindValidPositionByFan(1 * 2 * PI, 8, 50, function(offset) 151 local x,y,z = (pt + offset):Get() 152 local ents = TheSim:FindEntities(x,y,z , 1) 153 return not next(ents) 154 end) 155 if result_offset then 156 local plant = SpawnPrefab(inst.plants) 157 plant.Transform:SetPosition((pt + result_offset):Get()) 158 GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40) 159 local fx = SpawnPrefab("splash_ocean") 160 local pos = pt + result_offset 161 fx.Transform:SetPosition(pos.x, pos.y, pos.z) 162 GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood") 163 end 164 Sleep(.13) 165 end 166 end) 167 end 168end } 169 inst:AddComponent("container") 170 inst.components.container:SetNumSlots(#slotpos) 171 inst.components.container.widgetslotpos = slotpos 172 inst.components.container.widgetpos = Vector3(0,180,0) 173 inst.components.container.side_align_tip = 160 174 inst.components.container.itemtestfn = itemtest 175 inst.components.container.acceptsstacks = false 176 inst.components.container.widgetbuttoninfo = widgetbuttoninfo 177 178 即可在空旷的地上建一个避雷针,鼠标左键点避雷针可打开格子,在格子中放入植物后点Do按钮,可自动种下100多株该植物,将花费50个黄金,身上黄金数不足时不会种植。可种植的17种植物有:给树枝种树苗、给草种草、给花瓣种花、给噩梦花瓣种噩梦花、给芦苇种芦苇、给红蘑菇种红蘑菇、给绿蘑菇种绿蘑菇、给蓝蘑菇种蓝蘑菇、给胡萝卜种胡萝卜、给浆果种果树丛、给曼德拉草种曼德拉草、给叶子种蕨类植物、给香蕉种香蕉树、给苔藓种苔藓、给荧光果种三朵洞穴花、给松果种树、给木炭种蘑菇树、给仙人掌肉种仙人掌、给橡果种橡树(橡树种下时不显示,存档退出再读档就可正常显示)。注意,其中果树丛、香蕉树、树、蘑菇树等种好后人无法通行,可以用“瑞士手杖”瞬移(或“神奇跳跃”跳出来),并用“收割者”大面积收获