代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。
原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html
1
2二二七.人工降水(开关雨量计夏天下雨、冬天下雪,可以灭火)
3
4 用MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/rainometer.lua文件,将inst:AddComponent("inspectable")替换为以下内容:
5
6function firefn(inst)
7 local range = 3000
8 local pos = Vector3(inst.Transform:GetWorldPosition())
9 local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, range)
10 for k,v in pairs(ents) do
11 local pt = v:GetPosition()
12 if v.components.burnable and v.components.burnable:IsBurning() then
13 if v.prefab == "grass" then
14 v:Remove()
15 SpawnPrefab("grass").Transform:SetPosition(pt.x, pt.y, pt.z)
16 end
17 if v.prefab == "sapling" then
18 v:Remove()
19 SpawnPrefab("sapling").Transform:SetPosition(pt.x, pt.y, pt.z)
20 end
21 if v.prefab == "reeds" then
22 v:Remove()
23 SpawnPrefab("reeds").Transform:SetPosition(pt.x, pt.y, pt.z)
24 end
25 if v.prefab == "berrybush" then
26 v:Remove()
27 SpawnPrefab("berrybush").Transform:SetPosition(pt.x, pt.y, pt.z)
28 end
29 if v.prefab == "marsh_bush" then
30 v:Remove()
31 SpawnPrefab("marsh_bush").Transform:SetPosition(pt.x, pt.y, pt.z)
32 end
33 if v.prefab == "flower_cave_triple" then
34 v:Remove()
35 SpawnPrefab("flower_cave_triple").Transform:SetPosition(pt.x, pt.y, pt.z)
36 end
37 if v.prefab == "lichen" then
38 v:Remove()
39 SpawnPrefab("lichen").Transform:SetPosition(pt.x, pt.y, pt.z)
40 end
41 end
42 end
43end
44local function GetStatus(inst, viewer)
45 if GetWorld().components.seasonmanager.precip then
46 GetWorld().components.seasonmanager:StopPrecip()
47 if inst.fire then inst.fire:Cancel() inst.fire = nil end
48 else
49 GetWorld().components.seasonmanager:ForcePrecip()
50 inst.fire = inst:DoPeriodicTask(8, function() firefn(inst) end)
51 end
52end
53 inst:AddComponent("inspectable")
54 inst.components.inspectable.getstatus = GetStatus
55
56 即可在雨量计上按鼠标左键开始降水,再按一次鼠标左键停止降水,夏天下雨、冬天下雪。可以浇灭大部分植物着的火,包括草、树枝、芦苇、果树丛、尖刺灌木、三朵洞穴花、苔藓