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

原帖链接: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%伤害,敌人攻击你时会被弹开,并遭到反伤,让你流的每一滴血,都收到百倍利息。霸王盔可照明、防雨、防冻、防暑、补脑,并使奔跑加速,与“霸王枪”并称饥荒世界两大神器,助你在乱世中百战百胜。佩戴霸王盔时,“铁血蛮族”不敢主动攻击你。不要与“用猪皮种猪火炬”一同修改