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

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



二二七.人工降水(开关雨量计夏天下雨、冬天下雪,可以灭火)

	用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/rainometer.lua文件,将inst:AddComponent("inspectable")替换为以下内容:

function firefn(inst)
	local range = 3000
	local pos = Vector3(inst.Transform:GetWorldPosition())
	local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, range)
	for k,v in pairs(ents) do
		local pt = v:GetPosition()
		if v.components.burnable and v.components.burnable:IsBurning() then
		   if v.prefab == "grass" then
			  v:Remove()
			  SpawnPrefab("grass").Transform:SetPosition(pt.x, pt.y, pt.z)
		   end
		   if v.prefab == "sapling" then
			  v:Remove()
			  SpawnPrefab("sapling").Transform:SetPosition(pt.x, pt.y, pt.z)
		   end
		   if v.prefab == "reeds" then
			  v:Remove()
			  SpawnPrefab("reeds").Transform:SetPosition(pt.x, pt.y, pt.z)
		   end
		   if v.prefab == "berrybush" then
			  v:Remove()
			  SpawnPrefab("berrybush").Transform:SetPosition(pt.x, pt.y, pt.z)
		   end
		   if v.prefab == "marsh_bush" then
			  v:Remove()
			  SpawnPrefab("marsh_bush").Transform:SetPosition(pt.x, pt.y, pt.z)
		   end
			  if v.prefab == "flower_cave_triple" then
			  v:Remove()
		   SpawnPrefab("flower_cave_triple").Transform:SetPosition(pt.x, pt.y, pt.z)
		   end
		   if v.prefab == "lichen" then
			  v:Remove()
			  SpawnPrefab("lichen").Transform:SetPosition(pt.x, pt.y, pt.z)
		   end
		end
	end
end
local function GetStatus(inst, viewer)
	if GetWorld().components.seasonmanager.precip then
	   GetWorld().components.seasonmanager:StopPrecip()
	   if inst.fire then inst.fire:Cancel() inst.fire = nil end
	else
	   GetWorld().components.seasonmanager:ForcePrecip()
	   inst.fire = inst:DoPeriodicTask(8, function() firefn(inst) end)
	end
end
	inst:AddComponent("inspectable")
	inst.components.inspectable.getstatus = GetStatus

	即可在雨量计上按鼠标左键开始降水,再按一次鼠标左键停止降水,夏天下雨、冬天下雪。可以浇灭大部分植物着的火,包括草、树枝、芦苇、果树丛、尖刺灌木、三朵洞穴花、苔藓