游民星空 > 攻略秘籍 > 攻略 > 正文

饥荒 全人物解锁及主角自动回血等实用修改教程

2015-01-21 11:28:46 来源:互联网 作者:易宁 我要投稿

第218页:潘多拉魔盒

展开

二一八.潘多拉魔盒(用硬骨头种潘多拉魔盒,每60秒有一批怪物来袭,展开塔防吧)

  用记事本打开游戏目录\data\DLC0001\scripts\prefabs\boneshard.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:

  local function makemagicbox(inst)

  local pt = inst:GetPosition()

  local magicbox = SpawnPrefab("boneshard")

  magicbox.Transform:SetPosition(pt.x, pt.y, pt.z)

  magicbox.AnimState:SetBank("pandoras_chest")

  magicbox.AnimState:SetBuild("pandoras_chest")

  magicbox.AnimState:PlayAnimation("closed")

  magicbox.AnimState:SetMultColour(255/255,0/255,0/255,1)

  magicbox.Transform:SetScale(0.8, 0.8, 0.8)

  magicbox.AnimState:SetBloomEffectHandle("shaders/anim.ksh")

  local minimap = magicbox.entity:AddMiniMapEntity()

  minimap:SetIcon( "pandoras_chest.png" )

  magicbox:RemoveComponent("inventoryitem")

  magicbox:RemoveComponent("stackable")

  magicbox:RemoveComponent("deployable")

  magicbox:AddTag("magicbox")

  magicbox:AddComponent("workable")

  magicbox.components.workable:SetWorkAction(ACTIONS.HAMMER)

  magicbox.components.workable:SetWorkLeft(3)

  magicbox.components.workable:SetOnFinishCallback(function(magicbox)

  local pos = Vector3(magicbox.Transform:GetWorldPosition())

  local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 3000)

  for k,v in pairs(ents) do

  if v:HasTag("bogey") then

  SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition())

  v:Remove()

  end

  end

  SpawnPrefab("collapse_big").Transform:SetPosition(magicbox.Transform:GetWorldPosition())

  GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")

  magicbox:Remove()

  end )

  magicbox.components.inspectable.getstatus = function(magicbox)

  if not magicbox:HasTag("makebogey") then

  magicbox:AddTag("makebogey")

  magicbox.AnimState:PlayAnimation("open")

  magicbox:DoTaskInTime(0.5, function(magicbox)

  SpawnPrefab("collapse_small").Transform:SetPosition(magicbox.Transform:GetWorldPosition())

  GetPlayer().SoundEmitter:PlaySound("dontstarve/common/horn_beefalo")

  GetPlayer().components.playercontroller:ShakeCamera(magicbox, "FULL", 2.5, 0.03, 2, 30)

  local pos = Vector3(magicbox.Transform:GetWorldPosition())

  local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 3000)

  for k,v in pairs(ents) do

  if v:HasTag("bogey") then

  SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition())

  v:Remove()

  end

  end

  local names = {"spiderqueen","hound","firehound","icehound","killerbee","walrus","leif","leif_sparse","koalefant_summer","koalefant_winter","deerclops","merm","knight","bishop","bat"}

  magicbox.name = names[math.random(#names)]

  for k = 1,math.random(10,30) do

  local pt0 = magicbox:GetPosition()

  local ground = GetWorld()

  local x = pt0.x+(math.random(50)-math.random(50))

  local z = pt0.z+(math.random(50)-math.random(50))

  local tile = ground.Map:GetTileAtPoint(x,0, z)

  if tile ~= GROUND.IMPASSABLE and tile ~= GROUND.INVALID then

  local bogey = SpawnPrefab(magicbox.name)

  bogey.Transform:SetPosition(x,0,z)

  bogey:AddTag("bogey")

  bogey.components.combat:SetRetargetFunction(1, function(bogey)

  if not bogey.components.health:IsDead() then

  return FindEntity(bogey, 100, function(guy)

  if guy.components.health and not guy.components.health:IsDead() then

  return guy:HasTag("player")

  end

  end )

  end

  end )

  bogey.components.combat:SetKeepTargetFunction(function(bogey, target) return target and target:IsValid() end )

  bogey:ListenForEvent("attacked", function(bogey, data)

  bogey.components.combat:SetTarget(GetPlayer())

  end )

  end

  end

  end )

  magicbox.task = magicbox:DoPeriodicTask(60, function(magicbox)

  SpawnPrefab("collapse_small").Transform:SetPosition(magicbox.Transform:GetWorldPosition())

  GetPlayer().SoundEmitter:PlaySound("dontstarve/common/horn_beefalo")

  GetPlayer().components.playercontroller:ShakeCamera(magicbox, "FULL", 2.5, 0.03, 2, 30)

  local pos = Vector3(magicbox.Transform:GetWorldPosition())

  local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 3000)

  for k,v in pairs(ents) do

  if v:HasTag("bogey") then

  SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition())

  v:Remove()

  end

  end

  local names = {"spiderqueen","hound","firehound","icehound","killerbee","walrus","leif","leif_sparse","koalefant_summer","koalefant_winter","deerclops","merm","knight","bishop","bat"}

  magicbox.name = names[math.random(#names)]

  for k = 1,math.random(10,30) do

  local pt0 = magicbox:GetPosition()

  local ground = GetWorld()

  local x = pt0.x+(math.random(50)-math.random(50))

  local z = pt0.z+(math.random(50)-math.random(50))

  local tile = ground.Map:GetTileAtPoint(x,0, z)

  if tile ~= GROUND.IMPASSABLE and tile ~= GROUND.INVALID then

  local bogey = SpawnPrefab(magicbox.name)

  bogey.Transform:SetPosition(x,0,z)

  bogey:AddTag("bogey")

  bogey.components.combat:SetRetargetFunction(1, function(bogey)

  if not bogey.components.health:IsDead() then

  return FindEntity(bogey, 100, function(guy)

  if guy.components.health and not guy.components.health:IsDead() then

  return guy:HasTag("player")

  end

  end )

  end

  end )

  bogey.components.combat:SetKeepTargetFunction(function(bogey, target) return target and target:IsValid() end )

  bogey:ListenForEvent("attacked", function(bogey, data)

  bogey.components.combat:SetTarget(GetPlayer())

  end )

  end

  end

  end )

  else

  magicbox:RemoveTag("makebogey")

  magicbox.AnimState:PlayAnimation("close")

  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/get_gold")

  if magicbox.task then magicbox.task:Cancel() magicbox.task = nil end

  local pos = Vector3(magicbox.Transform:GetWorldPosition())

  local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 3000)

  for k,v in pairs(ents) do

  if v:HasTag("bogey") then

  SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition())

  v:Remove()

  end

  end

  end

  end

  end

  local function OnDeploy (inst, pt)

  makemagicbox(inst)

  inst.components.stackable:Get():Remove()

  end

  inst:AddComponent("deployable")

  inst.components.deployable.ondeploy = OnDeploy

  local function onsave(inst, data)

  if inst:HasTag("magicbox") then

  data.magicbox = true

  end

  end

  local function onload(inst, data)

  if data and data.magicbox then

  makemagicbox(inst)

  inst:Remove()

  end

  end

  inst.OnSave = onsave

  inst.OnLoad = onload

  即可用硬骨头种潘多拉魔盒,(拿着1个硬骨头对地面点鼠标右键,如果拿着多个,则不会种出来)。鼠标左键点魔盒,可打开盒子,每60秒将吹响一次号角,预示着新一批怪物来袭,且源源不绝,充分满足你求死不得的需要。鼠标左键再次点击魔盒,可让怪物回到盒中。建议围绕魔盒修建防御设施(如牙齿陷阱、眼睛炮塔等),否则你挺不过几个60秒的。潘多拉魔盒在小地图上显示为远古箱子图标,不想要潘多拉魔盒了,用锤子砸掉即可。硬骨头靠砸碎地图上的骨架获得

更多相关内容请关注:饥荒专区

责任编辑:Shy夏夏

上一页 211 212 213 214 215 216 217 218 219 220 221 下一页
友情提示:支持键盘左右键“← →”翻页

本文是否解决了您的问题

文章内容导航
游民星空APP
随手浏览游戏攻略
code
攻略合集
单机游戏下载
休闲娱乐
综合热点资讯
游民星空联运游戏