代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。
原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html
1
2一七六.霸王盔(用猪皮种霸王盔,吸收99%伤害,挨打时弹开并反伤敌人,可照明、防雨、防冻、防暑、补脑、奔跑加速)
3
4 用MT管理器打开游戏目录/assets/scripts/prefabs/pigskin.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
5
6local function OnDeploy (inst, pt)
7 local helmet = SpawnPrefab("pigskin")
8 helmet.Transform:SetPosition(pt.x, pt.y, pt.z)
9 helmet.AnimState:SetBank("wathgrithrhat")
10 helmet.AnimState:SetBuild("hat_wathgrithr")
11 helmet.AnimState:PlayAnimation("anim")
12 helmet.components.inventoryitem:ChangeImageName("wathgrithrhat")
13 helmet:RemoveComponent("stackable")
14 helmet:RemoveComponent("tradable")
15 helmet:RemoveComponent("edible")
16 helmet:RemoveComponent("burnable")
17 helmet:RemoveComponent("propagator")
18 helmet:RemoveComponent("deployable")
19 helmet:AddComponent("equippable")
20 helmet.components.equippable.equipslot = EQUIPSLOTS.HEAD
21 helmet.components.equippable.walkspeedmult = 2.5
22 helmet.components.equippable.dapperness = TUNING.DAPPERNESS_HUGE*32
23 helmet.components.equippable:SetOnEquip(function(helmet, owner)
24 owner.AnimState:OverrideSymbol("swap_hat", "hat_wathgrithr", "swap_hat")
25 owner.AnimState:Show("HAT")
26 owner.AnimState:Show("HAT_HAIR")
27 owner.AnimState:Hide("HAIR_NOHAT")
28 owner.AnimState:Hide("HAIR")
29 if owner == GetPlayer() then
30 owner.AnimState:Hide("HEAD")
31 owner.AnimState:Show("HEAD_HAIR")
32 owner.components.temperature:SetTemp(20)
33 owner:PushEvent("stopfreezing")
34 owner:PushEvent("stopoverheating")
35 owner.components.moisture:SetMoistureLevel(0)
36 helmet.fire = SpawnPrefab( "campfirefire" )
37 local follower = helmet.fire.entity:AddFollower()
38 follower:FollowSymbol( owner.GUID, "swap_hat", -6, -196, 0 )
39 helmet.fire.AnimState:SetMultColour(255/255,0/255,0/255,1)
40 helmet.fire.Transform:SetScale(1.3, 1.3, 1.3)
41 helmet.fire:RemoveComponent("heater")
42 helmet.fire.persists = false
43 helmet.helmetfn = function(attacked, data)
44 if data and data.attacker and data.attacker.components.health then
45 SpawnPrefab("groundpoundring_fx").Transform:SetPosition(owner.Transform:GetWorldPosition())
46 data.attacker.components.health:DoDelta(-300)
47 local pt01 = owner:GetPosition()
48 local pt02 = data.attacker:GetPosition()
49 data.attacker.Transform:SetPosition((pt02.x-pt01.x)*1.5+pt02.x, 0, (pt02.z-pt01.z)*1.5+pt02.z)
50 if data.attacker.components.locomotor then data.attacker.components.locomotor:Stop() end
51 if data.attacker.components.health:GetPercent() < 0.3 then
52 data.attacker.AnimState:SetMultColour(255/255,0/255,0/255,1)
53 end
54 end
55 end
56 helmet:ListenForEvent("attacked", helmet.helmetfn, owner)
57 owner:AddTag("goodsavages")
58 end
59 end )
60 helmet.components.equippable:SetOnUnequip(function(helmet, owner)
61 owner.AnimState:Hide("HAT")
62 owner.AnimState:Hide("HAT_HAIR")
63 owner.AnimState:Show("HAIR_NOHAT")
64 owner.AnimState:Show("HAIR")
65 if owner == GetPlayer() then
66 owner.AnimState:Show("HEAD")
67 owner.AnimState:Hide("HEAD_HAIR")
68 owner.components.temperature:SetTemp(nil)
69 helmet.fire:Remove()
70 helmet.fire = nil
71 helmet:RemoveEventCallback("attacked", helmet.helmetfn, owner)
72 owner:RemoveTag("goodsavages")
73 end
74
75 end )
76 helmet:AddComponent("armor")
77 helmet.components.armor:InitCondition(20000, 0.99)
78 helmet:AddComponent("waterproofer")
79 helmet.components.waterproofer:SetEffectiveness(1)
80 helmet:AddTag("helmets")
81 inst.components.stackable:Get():Remove()
82end
83 inst:AddComponent("deployable")
84 inst.components.deployable.ondeploy = OnDeploy
85local function onsave(inst, data)
86 if inst:HasTag("helmets") then
87 data.helmets = true
88 end
89end
90local function onload(inst, data)
91 if data and data.helmets then
92 inst.AnimState:SetBank("wathgrithrhat")
93 inst.AnimState:SetBuild("hat_wathgrithr")
94 inst.AnimState:PlayAnimation("anim")
95 inst.components.inventoryitem:ChangeImageName("wathgrithrhat")
96 inst:RemoveComponent("stackable")
97 inst:RemoveComponent("tradable")
98 inst:RemoveComponent("edible")
99 inst:RemoveComponent("burnable")
100 inst:RemoveComponent("propagator")
101 inst:RemoveComponent("deployable")
102 inst:AddComponent("equippable")
103 inst.components.equippable.equipslot = EQUIPSLOTS.HEAD
104 inst.components.equippable.walkspeedmult = 2.5
105 inst.components.equippable.dapperness = TUNING.DAPPERNESS_HUGE*32
106 inst.components.equippable:SetOnEquip(function(inst, owner)
107 owner.AnimState:OverrideSymbol("swap_hat", "hat_wathgrithr", "swap_hat")
108 owner.AnimState:Show("HAT")
109 owner.AnimState:Show("HAT_HAIR")
110 owner.AnimState:Hide("HAIR_NOHAT")
111 owner.AnimState:Hide("HAIR")
112 if owner == GetPlayer() then
113 owner.AnimState:Hide("HEAD")
114 owner.AnimState:Show("HEAD_HAIR")
115 owner.components.temperature:SetTemp(20)
116 owner:PushEvent("stopfreezing")
117 owner:PushEvent("stopoverheating")
118 owner.components.moisture:SetMoistureLevel(0)
119 inst.fire = SpawnPrefab( "campfirefire" )
120 local follower = inst.fire.entity:AddFollower()
121 follower:FollowSymbol( owner.GUID, "swap_hat", -6, -196, 0 )
122 inst.fire.AnimState:SetMultColour(255/255,0/255,0/255,1)
123 inst.fire.Transform:SetScale(1.3, 1.3, 1.3)
124 inst.fire:RemoveComponent("heater")
125 inst.fire.persists = false
126 inst.helmetfn = function(attacked, data)
127 if data and data.attacker and data.attacker.components.health then
128 SpawnPrefab("groundpoundring_fx").Transform:SetPosition(owner.Transform:GetWorldPosition())
129 data.attacker.components.health:DoDelta(-300)
130 local pt01 = owner:GetPosition()
131 local pt02 = data.attacker:GetPosition()
132 data.attacker.Transform:SetPosition((pt02.x-pt01.x)*1.5+pt02.x, 0, (pt02.z-pt01.z)*1.5+pt02.z)
133 if data.attacker.components.locomotor then data.attacker.components.locomotor:Stop() end
134 if data.attacker.components.health:GetPercent() < 0.3 then
135 data.attacker.AnimState:SetMultColour(255/255,0/255,0/255,1)
136 end
137 end
138 end
139 inst:ListenForEvent("attacked", inst.helmetfn, owner)
140 owner:AddTag("goodsavages")
141 end
142 end )
143 inst.components.equippable:SetOnUnequip(function(inst, owner)
144 owner.AnimState:Hide("HAT")
145 owner.AnimState:Hide("HAT_HAIR")
146 owner.AnimState:Show("HAIR_NOHAT")
147 owner.AnimState:Show("HAIR")
148 if owner == GetPlayer() then
149 owner.AnimState:Show("HEAD")
150 owner.AnimState:Hide("HEAD_HAIR")
151 owner.components.temperature:SetTemp(nil)
152 inst.fire:Remove()
153 inst.fire = nil
154 inst:RemoveEventCallback("attacked", inst.helmetfn, owner)
155 owner:RemoveTag("goodsavages")
156 end
157
158 end )
159 inst:AddComponent("armor")
160 inst.components.armor:InitCondition(20000, 0.99)
161 inst:AddComponent("waterproofer")
162 inst.components.waterproofer:SetEffectiveness(1)
163 inst:AddTag("helmets")
164 end
165end
166 inst.OnSave = onsave
167 inst.OnLoad = onload
168
169 即可用猪皮种霸王盔,吸收99%伤害,敌人攻击你时会被弹开,并遭到反伤,让你流的每一滴血,都收到百倍利息。霸王盔可照明、防雨、防冻、防暑、补脑,并使奔跑加速,与“霸王枪”并称饥荒世界两大神器,助你在乱世中百战百胜。佩戴霸王盔时,“铁血蛮族”不敢主动攻击你。不要与“用猪皮种猪火炬”一同修改