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

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

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

第217页:角斗场

展开

二一七.角斗场(用铥矿石种角斗场,参与生死角斗赚奖金,也可观看比赛)

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

  local names = {"swap_goldenaxe","swap_spear","swap_spike","swap_batbat","swap_ruins_bat"}

  local weapon = names[math.random(#names)]

  local items = { SWORD = weapon }

  local function EquipItem(inst, item)

  if item then

  inst.AnimState:OverrideSymbol("swap_object", item, item)

  inst.AnimState:Show("ARM_carry")

  inst.AnimState:Hide("ARM_normal")

  end

  end

  inst.items = items

  inst.equipfn = EquipItem

  EquipItem(inst)

  local function fightgame(inst)

  local pt = inst:GetPosition()

  local gamehost = SpawnPrefab("thulecite")

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

  gamehost.AnimState:SetBank("wilson")

  gamehost.AnimState:SetBuild("wolfgang")

  gamehost.AnimState:OverrideSymbol("swap_hat", "hat_top", "swap_hat")

  gamehost.AnimState:Show("HAT")

  gamehost.AnimState:Show("HAT_HAIR")

  gamehost.AnimState:Hide("HAIR_NOHAT")

  gamehost.AnimState:Hide("HAIR")

  gamehost.AnimState:Hide("ARM_carry")

  gamehost.AnimState:Show("ARM_normal")

  gamehost.Transform:SetFourFaced()

  gamehost.AnimState:PlayAnimation("idle")

  gamehost:RemoveComponent("repairer")

  gamehost:RemoveComponent("edible")

  gamehost:RemoveComponent("tradable")

  gamehost:RemoveComponent("inventoryitem")

  gamehost:RemoveComponent("stackable")

  gamehost:RemoveComponent("deployable")

  gamehost:RemoveComponent("bait")

  gamehost:RemoveTag("molebait")

  gamehost:AddTag("gamehost")

  gamehost:AddComponent("workable")

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

  gamehost.components.workable:SetWorkLeft(3)

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

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

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

  for k,v in pairs(ents) do

  if v:HasTag("candel") then

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

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

  v:Remove()

  end

  end

  gamehost:Remove()

  end )

  local fountain = SpawnPrefab("thulecite")

  fountain.Transform:SetPosition(pt.x-11, 0, pt.z-11)

  fountain.AnimState:SetBank("staff_purple_base")

  fountain.AnimState:SetBuild("staff_purple_base")

  fountain.AnimState:PlayAnimation("idle_full_loop")

  fountain.Transform:SetScale(1.5, 1.5, 1.5)

  fountain.AnimState:SetOrientation( ANIM_ORIENTATION.OnGround )

  fountain.AnimState:SetLayer( LAYER_BACKGROUND )

  fountain.AnimState:SetSortOrder( 1 )

  fountain.Transform:SetRotation( 45 )

  fountain:AddTag("NOCLICK")

  fountain:RemoveComponent("repairer")

  fountain:RemoveComponent("edible")

  fountain:RemoveComponent("tradable")

  fountain:RemoveComponent("inventoryitem")

  fountain:RemoveComponent("stackable")

  fountain:RemoveComponent("deployable")

  fountain:RemoveComponent("bait")

  fountain:RemoveTag("molebait")

  local light = fountain.entity:AddLight()

  light:SetFalloff(1)

  light:SetIntensity(.8)

  light:SetRadius(18)

  light:SetColour(180/255, 195/255, 50/255)

  light:Enable(true)

  fountain:AddTag("candel")

  local pt0 = Vector3(fountain.Transform:GetWorldPosition())

  for k = 1, 60 do

  local result_offset = FindValidPositionByFan(1 * 2 * PI, 12, 60, function(offset)

  local x,y,z = (pt0 + offset):Get()

  local ents = TheSim:FindEntities(x,y,z , 1)

  return not next(ents)

  end)

  if result_offset then

  local fence = SpawnPrefab("thulecite")

  fence.AnimState:SetBank("marble_pillar")

  fence.AnimState:SetBuild("marble_pillar")

  fence.AnimState:PlayAnimation("full")

  MakeObstaclePhysics(fence, 1)

  fence:RemoveComponent("repairer")

  fence:RemoveComponent("edible")

  fence:RemoveComponent("tradable")

  fence:RemoveComponent("inventoryitem")

  fence:RemoveComponent("stackable")

  fence:RemoveComponent("deployable")

  fence:RemoveComponent("bait")

  fence:RemoveTag("molebait")

  fence:AddTag("candel")

  fence.Transform:SetPosition((pt0 + result_offset):Get())

  end

  end

  gamehost:AddComponent("trader")

  gamehost.components.trader:SetAcceptTest(function(gamehost, item)

  if not gamehost:HasTag("startgame") then

  if GetPlayer().components.inventory:Has("goldnugget", 100) then

  if item.prefab == "goldnugget" then

  return true

  end

  end

  end

  return false

  end )

  gamehost.components.trader.onaccept = function(gamehost, giver, item)

  GetPlayer().components.inventory:ConsumeByName("goldnugget", 99)

  GetPlayer().components.locomotor:Stop()

  GetPlayer().Transform:SetPosition(pt.x-11+5, 0, pt.z-11-5)

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

  gamehost:AddTag("startgame")

  local warrior0 = SpawnPrefab("thulecite")

  warrior0.Transform:SetPosition(pt.x-11-5, 0, pt.z-11+5)

  warrior0.AnimState:SetBank("wilson")

  local names = {"wilson","wendy","wes","wickerbottom","willow","wolfgang","wx78"}

  local buildname = names[math.random(#names)]

  warrior0.AnimState:SetBuild(buildname)

  local hats = {"hat_beefalo","hat_feather","hat_football","hat_ruins","hat_slurper","hat_slurtle","hat_spider"}

  local hat = hats[math.random(#hats)]

  warrior0.AnimState:OverrideSymbol("swap_hat", hat, "swap_hat")

  local armors = {"armor_grass","armor_marble","armor_ruins","armor_sanity","armor_slurper","armor_wood"}

  local armor = armors[math.random(#armors)]

  warrior0.AnimState:OverrideSymbol("swap_body", armor, "swap_body")

  warrior0.AnimState:Show("HAT")

  warrior0.AnimState:Show("HAT_HAIR")

  warrior0.AnimState:Hide("HAIR_NOHAT")

  warrior0.AnimState:Hide("HAIR")

  warrior0.AnimState:Hide("ARM_carry")

  warrior0.AnimState:Show("ARM_normal")

  warrior0.AnimState:PlayAnimation("idle")

  warrior0.Transform:SetFourFaced()

  local sound = warrior0.entity:AddSoundEmitter()

  local shadow = warrior0.entity:AddDynamicShadow()

  shadow:SetSize( 1.3, .6 )

  local brain = require "brains/frogbrain"

  warrior0:SetBrain(brain)

  warrior0:AddComponent("locomotor")

  warrior0.components.locomotor.walkspeed = 5

  warrior0.components.locomotor.runspeed = 10

  warrior0:SetStateGraph("SGshadowwaxwell")

  MakeCharacterPhysics(warrior0, 75, .5)

  warrior0:RemoveComponent("repairer")

  warrior0:RemoveComponent("edible")

  warrior0:RemoveComponent("tradable")

  warrior0:RemoveComponent("inventoryitem")

  warrior0:RemoveComponent("stackable")

  warrior0:RemoveComponent("deployable")

  warrior0:RemoveComponent("bait")

  warrior0:RemoveTag("molebait")

  warrior0:AddComponent("inventory")

  warrior0:AddComponent("knownlocations")

  warrior0:AddComponent("health")

  warrior0.components.health:SetMaxHealth(math.random(2500,5000))

  warrior0:AddComponent("combat")

  warrior0.components.combat:SetDefaultDamage(math.random(25,50))

  warrior0.components.combat:SetAttackPeriod(2)

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

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

  return FindEntity(warrior0, 30, function(guy)

  return guy:HasTag("player")

  end )

  end

  end )

  warrior0:DoPeriodicTask(1, function(warrior0)

  if not warrior0:HasTag("noplay") then

  if warrior0.components.health.currenthealth <= 100 then

  warrior0:AddTag("noplay")

  warrior0.components.combat:SetTarget(nil)

  warrior0.components.combat:SetRetargetFunction(100, nil )

  end

  if GetPlayer().components.health.currenthealth <= 51 then

  warrior0.components.locomotor:Stop()

  warrior0:SetBrain(nil)

  warrior0:AddTag("noplay")

  warrior0.components.combat:SetTarget(nil)

  warrior0.components.combat:SetRetargetFunction(100, nil )

  warrior0.components.health:SetInvincible(true)

  warrior0.AnimState:PlayAnimation("idle_onemanband1_loop",true)

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

  gamehost:DoTaskInTime(3, function()

  warrior0:Remove()

  GetPlayer().components.locomotor:Stop()

  GetPlayer().Transform:SetPosition(pt.x-1, 0, pt.z+1)

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

  gamehost:RemoveTag("startgame")

  end )

  end

  end

  end )

  warrior0:ListenForEvent("death", function()

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

  gamehost:DoTaskInTime(3, function()

  GetPlayer().components.locomotor:Stop()

  GetPlayer().Transform:SetPosition(pt.x-1, 0, pt.z+1)

  for k = 1, 200 do

  local goldnugget = SpawnPrefab("goldnugget")

  GetPlayer().components.inventory:GiveItem(goldnugget)

  end

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

  gamehost:RemoveTag("startgame")

  end )

  end )

  warrior0:AddTag("candel")

  gamehost.task = gamehost:DoPeriodicTask(1, function(gamehost)

  local target = FindEntity(fountain, 13, function(guy)

  return guy:HasTag("player")

  end )

  if not target then

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

  warrior0:Remove()

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

  gamehost:RemoveTag("startgame")

  end

  end )

  end

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

  if not gamehost:HasTag("startgame") then

  if GetPlayer().components.inventory:Has("goldnugget", 20) then

  GetPlayer().components.inventory:ConsumeByName("goldnugget", 20)

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

  gamehost:AddTag("startgame")

  local warrior1 = SpawnPrefab("thulecite")

  warrior1.Transform:SetPosition(pt.x-11+5, 0, pt.z-11-5)

  warrior1.AnimState:SetBank("wilson")

  local names = {"wilson","wendy","wes","wickerbottom","willow","wolfgang","wx78"}

  local buildname = names[math.random(#names)]

  warrior1.AnimState:SetBuild(buildname)

  local hats = {"hat_beefalo","hat_feather","hat_football","hat_ruins","hat_slurper","hat_slurtle","hat_spider"}

  local hat = hats[math.random(#hats)]

  warrior1.AnimState:OverrideSymbol("swap_hat", hat, "swap_hat")

  local armors = {"armor_grass","armor_marble","armor_ruins","armor_sanity","armor_slurper","armor_wood"}

  local armor = armors[math.random(#armors)]

  warrior1.AnimState:OverrideSymbol("swap_body", armor, "swap_body")

  warrior1.AnimState:Show("HAT")

  warrior1.AnimState:Show("HAT_HAIR")

  warrior1.AnimState:Hide("HAIR_NOHAT")

  warrior1.AnimState:Hide("HAIR")

  warrior1.AnimState:Hide("ARM_carry")

  warrior1.AnimState:Show("ARM_normal")

  warrior1.AnimState:PlayAnimation("idle")

  warrior1.Transform:SetFourFaced()

  local sound = warrior1.entity:AddSoundEmitter()

  local shadow = warrior1.entity:AddDynamicShadow()

  shadow:SetSize( 1.3, .6 )

  local brain = require "brains/frogbrain"

  warrior1:SetBrain(brain)

  warrior1:AddComponent("locomotor")

  warrior1.components.locomotor.walkspeed = 5

  warrior1.components.locomotor.runspeed = 10

  warrior1:SetStateGraph("SGshadowwaxwell")

  MakeCharacterPhysics(warrior1, 75, .5)

  warrior1:RemoveComponent("repairer")

  warrior1:RemoveComponent("edible")

  warrior1:RemoveComponent("tradable")

  warrior1:RemoveComponent("inventoryitem")

  warrior1:RemoveComponent("stackable")

  warrior1:RemoveComponent("deployable")

  warrior1:RemoveComponent("bait")

  warrior1:RemoveTag("molebait")

  warrior1:AddComponent("inventory")

  warrior1:AddComponent("knownlocations")

  warrior1:AddComponent("health")

  warrior1.components.health:SetMaxHealth(math.random(200,500))

  warrior1:AddComponent("combat")

  warrior1.components.combat:SetDefaultDamage(math.random(25,100))

  warrior1.components.combat:SetAttackPeriod(3)

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

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

  return FindEntity(warrior1, 30, function(guy)

  return guy:HasTag("warrior2")

  end )

  end

  end )

  warrior1:AddTag("warrior1")

  warrior1:AddTag("candel")

  local warrior2 = SpawnPrefab("thulecite")

  warrior2.Transform:SetPosition(pt.x-11-5, 0, pt.z-11+5)

  warrior2.AnimState:SetBank("wilson")

  local names = {"wilson","wendy","wes","wickerbottom","willow","wolfgang","wx78"}

  local buildname = names[math.random(#names)]

  warrior2.AnimState:SetBuild(buildname)

  local hats = {"hat_beefalo","hat_feather","hat_football","hat_ruins","hat_slurper","hat_slurtle","hat_spider"}

  local hat = hats[math.random(#hats)]

  warrior2.AnimState:OverrideSymbol("swap_hat", hat, "swap_hat")

  local armors = {"armor_grass","armor_marble","armor_ruins","armor_sanity","armor_slurper","armor_wood"}

  local armor = armors[math.random(#armors)]

  warrior2.AnimState:OverrideSymbol("swap_body", armor, "swap_body")

  warrior2.AnimState:Show("HAT")

  warrior2.AnimState:Show("HAT_HAIR")

  warrior2.AnimState:Hide("HAIR_NOHAT")

  warrior2.AnimState:Hide("HAIR")

  warrior2.AnimState:Hide("ARM_carry")

  warrior2.AnimState:Show("ARM_normal")

  warrior2.AnimState:PlayAnimation("idle")

  warrior2.Transform:SetFourFaced()

  local sound = warrior2.entity:AddSoundEmitter()

  local shadow = warrior2.entity:AddDynamicShadow()

  shadow:SetSize( 1.3, .6 )

  local brain = require "brains/frogbrain"

  warrior2:SetBrain(brain)

  warrior2:AddComponent("locomotor")

  warrior2.components.locomotor.walkspeed = 5

  warrior2.components.locomotor.runspeed = 10

  warrior2:SetStateGraph("SGshadowwaxwell")

  MakeCharacterPhysics(warrior2, 75, .5)

  warrior2:RemoveComponent("repairer")

  warrior2:RemoveComponent("edible")

  warrior2:RemoveComponent("tradable")

  warrior2:RemoveComponent("inventoryitem")

  warrior2:RemoveComponent("stackable")

  warrior2:RemoveComponent("deployable")

  warrior2:RemoveComponent("bait")

  warrior2:RemoveTag("molebait")

  warrior2:AddComponent("inventory")

  warrior2:AddComponent("knownlocations")

  warrior2:AddComponent("health")

  warrior2.components.health:SetMaxHealth(math.random(200,500))

  warrior2:AddComponent("combat")

  warrior2.components.combat:SetDefaultDamage(math.random(25,100))

  warrior2.components.combat:SetAttackPeriod(3)

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

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

  return FindEntity(warrior2, 30, function(guy)

  return guy:HasTag("warrior1")

  end )

  end

  end )

  warrior2:AddTag("warrior2")

  warrior2:AddTag("candel")

  warrior1:DoPeriodicTask(1, function(warrior1)

  if not warrior1:HasTag("noplay") and not warrior2:HasTag("noplay") then

  if warrior1.components.health.currenthealth <= 100 then

  warrior1:AddTag("noplay")

  warrior1.components.combat:SetTarget(nil)

  warrior1.components.combat:SetRetargetFunction(100, nil )

  end

  end

  end )

  warrior2:DoPeriodicTask(1, function(warrior2)

  if not warrior2:HasTag("noplay") and not warrior1:HasTag("noplay") then

  if warrior2.components.health.currenthealth <= 100 then

  warrior2:AddTag("noplay")

  warrior2.components.combat:SetTarget(nil)

  warrior2.components.combat:SetRetargetFunction(100, nil )

  end

  end

  end )

  warrior1:ListenForEvent("death", function()

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

  warrior2.components.locomotor:Stop()

  warrior2:SetBrain(nil)

  warrior2.AnimState:PlayAnimation("idle_onemanband1_loop",true)

  gamehost:DoTaskInTime(3, function() warrior2:Remove() gamehost:RemoveTag("startgame") end )

  end )

  warrior2:ListenForEvent("death", function()

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

  warrior1.components.locomotor:Stop()

  warrior1:SetBrain(nil)

  warrior1.AnimState:PlayAnimation("idle_onemanband1_loop",true)

  gamehost:DoTaskInTime(3, function() warrior1:Remove() gamehost:RemoveTag("startgame") end )

  end )

  end

  end

  end

  end

  local function OnDeploy (inst, pt)

  fightgame(inst)

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

  end

  inst:AddComponent("deployable")

  inst.components.deployable.ondeploy = OnDeploy

  local function onsave(inst, data)

  if inst:HasTag("candel") then

  data.candel = true

  end

  if inst:HasTag("gamehost") then

  data.gamehost = true

  end

  end

  local function onload(inst, data)

  if data and data.candel then

  inst:Remove()

  end

  if data and data.gamehost then

  fightgame(inst)

  inst:Remove()

  end

  end

  inst.OnSave = onsave

  inst.OnLoad = onload

  即可在开阔的空地上,用铥矿石种角斗场,(拿着1个铥矿石对地面点鼠标右键,如果拿着多个铥矿石,则不会种出来)。当身上有20个黄金时,鼠标左键点老板,可以观看一场角斗。如果想参加角斗,就给老板100个黄金(拿着黄金对老板点鼠标左键),你将进入角斗场与其他角斗士对战。如果击败对手,将获得本金加奖金共200个黄金;如果你的血量小于50,则判定你失败,对手会饶你不死,但本金将不会退回;如果你逃出围墙,同样判定你失败。每次与你对战的对手都不同,如果上一次失败,不代表下次不会胜利哦,作个职业的角斗士吧

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

责任编辑:Shy夏夏

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

本文是否解决了您的问题

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