代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。

原帖链接: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个犬牙制造