代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。
原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html
1
2二七三.磁悬浮建筑机器人(将针线包扔在地上自动建50块农田)
3
4 用MT管理器打开游戏目录/assets/scripts/prefabs/sewingkit.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
5
6local function startbuild(inst)
7 inst.name = "fast_farmplot"
8 local space = 2.1
9 local row = 10
10 local num = 0 local num2 = 0 local num3 = 0 local num4 = 0 local num5 = 0
11 local pt = GetPlayer():GetPosition()
12 inst:StartThread(function()
13 for k = 1,row do
14 num = num + space
15 inst.Transform:SetPosition(pt.x+num, 5, pt.z+num)
16 SpawnPrefab(inst.name).Transform:SetPosition(pt.x+num, 0, pt.z+num)
17 GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40)
18 GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
19 Sleep(.5)
20 end
21 for k = 1,row do
22 num2 = num2 + space
23 inst.Transform:SetPosition(pt.x-2.6+num2, 5, pt.z+2.6+num2)
24 SpawnPrefab(inst.name).Transform:SetPosition(pt.x-2.6+num2, 0, pt.z+2.6+num2)
25 GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40)
26 GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
27 Sleep(.5)
28 end
29 for k = 1,row do
30 num3 = num3 + space
31 inst.Transform:SetPosition(pt.x-5.2+num3, 5, pt.z+5.2+num3)
32 SpawnPrefab(inst.name).Transform:SetPosition(pt.x-5.2+num3, 0, pt.z+5.2+num3)
33 GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40)
34 GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
35 Sleep(.5)
36 end
37 for k = 1,row do
38 num4 = num4 + space
39 inst.Transform:SetPosition(pt.x-7.8+num4, 5, pt.z+7.8+num4)
40 SpawnPrefab(inst.name).Transform:SetPosition(pt.x-7.8+num4, 0, pt.z+7.8+num4)
41 GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40)
42 GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
43 Sleep(.5)
44 end
45 for k = 1,row do
46 num5 = num5 + space
47 inst.Transform:SetPosition(pt.x-10.4+num5, 5, pt.z+10.4+num5)
48 SpawnPrefab(inst.name).Transform:SetPosition(pt.x-10.4+num5, 0, pt.z+10.4+num5)
49 GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40)
50 GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
51 Sleep(.5)
52 end
53 end)
54end
55local function ondropped(inst)
56 if GetPlayer().components.inventory:Has("goldnugget", 100) then
57 GetPlayer().components.inventory:ConsumeByName("goldnugget", 100)
58 GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup")
59 inst.components.inventoryitem.canbepickedup = false
60 inst.Physics:SetMotorVelOverride(0,2,0)
61 inst:DoTaskInTime(3, function() startbuild(inst) end)
62 inst:DoTaskInTime(28, function()
63 inst.Physics:ClearMotorVelOverride()
64 inst.components.inventoryitem.canbepickedup = true
65 GetPlayer().components.inventory:GiveItem(inst)
66 end)
67 end
68end
69 inst:ListenForEvent("ondropped", ondropped)
70
71 即可将针线包扔在开阔的空地上,它会悬浮在空中自动建50块农田,同时收取主角100个黄金,身上黄金不足时不会干活。将其中的fast_farmplot(高级农田)改为其他建筑,如cookpot(煮锅)、birdcage(鸟笼)等,就可以建其他建筑了(见本修改技巧“常用物品中英文名称”)。针线包在穿戴选项(画着礼帽)下,用1个木头、8个蛛丝、2个犬牙制造