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

原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html



二七三.磁悬浮建筑机器人(将针线包扔在地上自动建50块农田)

	用MT管理器打开游戏目录/assets/scripts/prefabs/sewingkit.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:

local function startbuild(inst)
	inst.name = "fast_farmplot"
	local space = 2.1
	local row = 10
	local num = 0 local num2 = 0 local num3 = 0 local num4 = 0 local num5 = 0
	local pt = GetPlayer():GetPosition()
	inst:StartThread(function()
		for k = 1,row do
			num = num + space
			inst.Transform:SetPosition(pt.x+num, 5, pt.z+num)
			SpawnPrefab(inst.name).Transform:SetPosition(pt.x+num, 0, pt.z+num)
			GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40)
			GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
			Sleep(.5)
		end
		for k = 1,row do
			num2 = num2 + space
			inst.Transform:SetPosition(pt.x-2.6+num2, 5, pt.z+2.6+num2)
			SpawnPrefab(inst.name).Transform:SetPosition(pt.x-2.6+num2, 0, pt.z+2.6+num2)
			GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40)
			GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
			Sleep(.5)
		end
		for k = 1,row do
			num3 = num3 + space
			inst.Transform:SetPosition(pt.x-5.2+num3, 5, pt.z+5.2+num3)
			SpawnPrefab(inst.name).Transform:SetPosition(pt.x-5.2+num3, 0, pt.z+5.2+num3)
			GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40)
			GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
			Sleep(.5)
		end
		for k = 1,row do
			num4 = num4 + space
			inst.Transform:SetPosition(pt.x-7.8+num4, 5, pt.z+7.8+num4)
			SpawnPrefab(inst.name).Transform:SetPosition(pt.x-7.8+num4, 0, pt.z+7.8+num4)
			GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40)
			GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
			Sleep(.5)
		end
		for k = 1,row do
			num5 = num5 + space
			inst.Transform:SetPosition(pt.x-10.4+num5, 5, pt.z+10.4+num5)
			SpawnPrefab(inst.name).Transform:SetPosition(pt.x-10.4+num5, 0, pt.z+10.4+num5)
			GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.2, 0.02, .25, 40)
			GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/rock_break")
			Sleep(.5)
		end
	end)
end
local function ondropped(inst)
	if GetPlayer().components.inventory:Has("goldnugget", 100) then
	   GetPlayer().components.inventory:ConsumeByName("goldnugget", 100)
	   GetPlayer().SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup")
	   inst.components.inventoryitem.canbepickedup = false
	   inst.Physics:SetMotorVelOverride(0,2,0)
	   inst:DoTaskInTime(3, function() startbuild(inst) end)
	   inst:DoTaskInTime(28, function()
		   inst.Physics:ClearMotorVelOverride()
		   inst.components.inventoryitem.canbepickedup = true
		   GetPlayer().components.inventory:GiveItem(inst)
	   end)
	end
end
	inst:ListenForEvent("ondropped",  ondropped)

	即可将针线包扔在开阔的空地上,它会悬浮在空中自动建50块农田,同时收取主角100个黄金,身上黄金不足时不会干活。将其中的fast_farmplot(高级农田)改为其他建筑,如cookpot(煮锅)、birdcage(鸟笼)等,就可以建其他建筑了(见本修改技巧“常用物品中英文名称”)。针线包在穿戴选项(画着礼帽)下,用1个木头、8个蛛丝、2个犬牙制造