代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。
原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html
1
2一六四.高爆地雷(指南针放在地上作地雷)
3
4 用MT管理器打开游戏目录/assets/scripts/prefabs/compass.lua文件,在inst:AddComponent("inventoryitem")的下一行插入以下内容
5
6 inst.components.inventoryitem:SetOnDroppedFn(function()
7 inst:RemoveTag("startkill")
8 if inst.task then inst.task:Cancel() inst.task = nil end
9 end )
10 inst.components.inventoryitem:SetOnPickupFn(function()
11 inst:RemoveTag("startkill")
12 if inst.task then inst.task:Cancel() inst.task = nil end
13 end )
14 inst.components.inventoryitem:SetOnPutInInventoryFn(function()
15 inst:RemoveTag("startkill")
16 if inst.task then inst.task:Cancel() inst.task = nil end
17 end )
18local function OnDeploy (inst, pt)
19 inst:AddTag("startkill")
20 inst.Physics:Teleport(pt:Get())
21 inst.task = inst:DoPeriodicTask(0.1, function(inst)
22 local target = FindEntity(inst, 2, function(guy)
23 return guy.components.combat and guy.components.health and not guy.components.health:IsDead() and not guy:HasTag("player") and not guy:HasTag("smallbird") and not guy:HasTag("chester")
24 end )
25 if target then
26 GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
27 SpawnPrefab("collapse_small").Transform:SetPosition(inst.Transform:GetWorldPosition())
28 SpawnPrefab("explode_small").Transform:SetPosition(inst.Transform:GetWorldPosition())
29 local pos = Vector3(inst.Transform:GetWorldPosition())
30 GetClock():DoLightningLighting()
31 GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.7, 0.02, .5, 40)
32 target.components.health:DoDelta(-3000)
33 inst:Remove()
34 end
35 end )
36end
37 inst:AddComponent("deployable")
38 inst.components.deployable.ondeploy = OnDeploy
39 inst.components.deployable.min_spacing = 2
40 inst:AddComponent("stackable")
41 inst.components.stackable.maxsize = 999
42local function onsave(inst, data)
43 if inst:HasTag("startkill") then
44 data.startkill = true
45 end
46end
47local function onload(inst, data)
48 if data and data.startkill then
49 inst:AddTag("startkill")
50 inst.task = inst:DoPeriodicTask(0.1, function(inst)
51 local target = FindEntity(inst, 2, function(guy)
52 return guy.components.combat and guy.components.health and not guy.components.health:IsDead() and not guy:HasTag("player") and not guy:HasTag("smallbird") and not guy:HasTag("chester")
53 end )
54 if target then
55 GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
56 SpawnPrefab("collapse_small").Transform:SetPosition(inst.Transform:GetWorldPosition())
57 SpawnPrefab("explode_small").Transform:SetPosition(inst.Transform:GetWorldPosition())
58 local pos = Vector3(inst.Transform:GetWorldPosition())
59 GetClock():DoLightningLighting()
60 GetPlayer().components.playercontroller:ShakeCamera(inst, "FULL", 0.7, 0.02, .5, 40)
61 target.components.health:DoDelta(-3000)
62 inst:Remove()
63 end
64 end )
65 end
66end
67 inst.OnSave = onsave
68 inst.OnLoad = onload
69
70 即可拿起指南针用鼠标右键部署在空地上,敌人踩上后会爆炸,主角、自养高鸟、狗箱不会触发。指南针在生存选项(画着绳套)下,用1个黄金、1张纸制造