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

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

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

第243页:新移民

展开

二四三.新移民(白天石头营火附近出现新移民,自动打怪,可与他们做买卖)

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

  local function createnpc(inst)

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

  local pt = inst:GetPosition()

  local npc = SpawnPrefab("frog")

  npc.Transform:SetPosition(pt.x+(math.random(50)-math.random(50)), 0, pt.z+(math.random(50)-math.random(50)))

  npc.AnimState:SetBank("wilson")

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

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

  npc.AnimState:SetBuild(buildname)

  local hats = {"hat_bee","hat_beefalo","hat_bush","hat_earmuffs","hat_feather","hat_flower","hat_football","hat_miner","hat_ruins","hat_slurper","hat_slurtle","hat_spider","hat_straw","hat_top","hat_walrus","hat_winter","hat_rain","hat_watermelon","hat_ice","hat_catcoon","hat_wathgrithr"}

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

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

  local armors = {"armor_grass","armor_marble","armor_onemanband","armor_ruins","armor_sanity","armor_slurper","armor_slurtleshell","armor_sweatervest","armor_trunkvest_summer","armor_trunkvest_winter","armor_wood","torso_rain"}

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

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

  npc.AnimState:Show("HAT")

  npc.AnimState:Show("HAT_HAIR")

  npc.AnimState:Hide("HAIR_NOHAT")

  npc.AnimState:Hide("HAIR")

  npc.AnimState:Hide("ARM_carry")

  npc.AnimState:Show("ARM_normal")

  npc.AnimState:PlayAnimation("idle")

  MakeCharacterPhysics(npc, 75, .5)

  local minimap = npc.entity:AddMiniMapEntity()

  minimap:SetIcon( "lighter.png" )

  npc:RemoveComponent("sleeper")

  npc:RemoveComponent("thief")

  npc:RemoveComponent("lootdropper")

  npc:RemoveTag("animal")

  npc:RemoveTag("prey")

  npc:RemoveTag("smallcreature")

  npc:RemoveTag("frog")

  npc:RemoveTag("canbetrapped")

  npc:RemoveAllEventCallbacks()

  npc:SetStateGraph("SGshadowwaxwell")

  npc.components.health:SetMaxHealth(1000)

  npc:RemoveComponent("combat")

  npc:AddComponent("combat")

  npc.components.combat:SetDefaultDamage(10)

  npc.components.combat:SetAttackPeriod(1)

  npc.components.combat:SetRetargetFunction(3, function(npc)

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

  return FindEntity(npc, 20, function(guy)

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

  return guy.components.combat.target == npc or npc.components.combat.target == guy or guy:HasTag("monster")

  end

  end )

  end

  end )

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

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

  npc.components.combat:SetTarget(data.attacker)

  npc.components.combat:ShareTarget(data.attacker, 30, function(dude) return dude:HasTag("npcs") and not dude.components.health:IsDead() end, 5)

  end )

  npc:AddComponent("trader")

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

  if item.prefab == "cave_banana" or item.prefab == "carrot" or item.prefab == "corn" or item.prefab == "pumpkin" or item.prefab == "eggplant" or item.prefab == "durian" or item.prefab == "pomegranate" or item.prefab == "dragonfruit" or item.prefab == "berries" or item.prefab == "cactus_meat" or item.prefab == "watermelon" or item.prefab == "acorn" or item.prefab == "meat" or item.prefab == "smallmeat" or item.prefab == "fish" or item.prefab == "eel" or item.prefab == "drumstick" or item.prefab == "bird_egg" or item.prefab == "froglegs" or item.prefab == "monstermeat" or item.prefab == "butter" or item.prefab == "butterflywings" or item.prefab == "cutlichen" or item.prefab == "foliage" or item.prefab == "honey" or item.prefab == "lightbulb" or item.prefab == "red_cap" or item.prefab == "green_cap" or item.prefab == "blue_cap" or item.prefab == "petals" or item.prefab == "petals_evil" or item.prefab == "redgem" or item.prefab == "bluegem" or item.prefab == "purplegem" or item.prefab == "greengem" or item.prefab == "orangegem" or item.prefab == "yellowgem" then

  return true

  end

  return false

  end )

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

  for k = 1, 2 do

  local goldnugget = SpawnPrefab("goldnugget")

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

  end

  end

  npc:ListenForEvent( "nighttime", function() npc:Remove() end , GetWorld())

  npc:AddComponent("talker")

  npc:DoPeriodicTask(math.random(30,60), function()

  local words = {"Good day","I'm happy","I like here","Thank you","Where's the enemy","I'm hungry","Too hot","Too cold","Hello","Bye","Sorry","Good morning","Good afternoon","Good evening","I'll go home","I want to go hunting","I'm going to mining","I want to go to the farm","I want to pick","I want to go fishing","I'm going to catch","I want to fight","I want to have a rest","I was a good man","I want to be rich","I was lucky","I want to make friends"}

  local word = words[math.random(#words)]

  npc.components.talker:Say(word, 4, false)

  end)

  npc:AddTag("npcs")

  end

  end

  inst:ListenForEvent( "daytime", function() createnpc(inst) end , GetWorld())

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

  local names = {"swap_axe","swap_batbat","swap_cane","swap_diviningrod","swap_ruins_bat","swap_fishingrod","swap_goldenaxe","swap_goldenpickaxe","swap_goldenshovel","swap_ham_bat","swap_hammer","swap_lucy_axe","swap_nightmaresword","swap_pickaxe","swap_pitchfork","swap_ruins_bat","swap_shovel","swap_spear","swap_spike","swap_umbrella","swap_spear_wathgrithr","swap_parasol"}

  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 onsave(inst, data)

  if inst:HasTag("npcs") then

  data.npcs = true

  end

  end

  local function onload(inst, data)

  if data and data.npcs then

  inst.AnimState:SetBank("wilson")

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

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

  inst.AnimState:SetBuild(buildname)

  local hats = {"hat_bee","hat_beefalo","hat_bush","hat_earmuffs","hat_feather","hat_flower","hat_football","hat_miner","hat_ruins","hat_slurper","hat_slurtle","hat_spider","hat_straw","hat_top","hat_walrus","hat_winter","hat_rain","hat_watermelon","hat_ice","hat_catcoon","hat_wathgrithr"}

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

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

  local armors = {"armor_grass","armor_marble","armor_onemanband","armor_ruins","armor_sanity","armor_slurper","armor_slurtleshell","armor_sweatervest","armor_trunkvest_summer","armor_trunkvest_winter","armor_wood","torso_rain"}

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

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

  inst.AnimState:Show("HAT")

  inst.AnimState:Show("HAT_HAIR")

  inst.AnimState:Hide("HAIR_NOHAT")

  inst.AnimState:Hide("HAIR")

  inst.AnimState:Hide("ARM_carry")

  inst.AnimState:Show("ARM_normal")

  inst.AnimState:PlayAnimation("idle")

  MakeCharacterPhysics(inst, 75, .5)

  local minimap = inst.entity:AddMiniMapEntity()

  minimap:SetIcon( "lighter.png" )

  inst:RemoveComponent("sleeper")

  inst:RemoveComponent("thief")

  inst:RemoveComponent("lootdropper")

  inst:RemoveTag("animal")

  inst:RemoveTag("prey")

  inst:RemoveTag("smallcreature")

  inst:RemoveTag("frog")

  inst:RemoveTag("canbetrapped")

  inst:RemoveAllEventCallbacks()

  inst:SetStateGraph("SGshadowwaxwell")

  inst.components.health:SetMaxHealth(1000)

  inst:RemoveComponent("combat")

  inst:AddComponent("combat")

  inst.components.combat:SetDefaultDamage(10)

  inst.components.combat:SetAttackPeriod(1)

  inst.components.combat:SetRetargetFunction(3, function(inst)

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

  return FindEntity(inst, 20, function(guy)

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

  return guy.components.combat.target == inst or inst.components.combat.target == guy or guy:HasTag("monster")

  end

  end )

  end

  end )

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

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

  inst.components.combat:SetTarget(data.attacker)

  inst.components.combat:ShareTarget(data.attacker, 30, function(dude) return dude:HasTag("npcs") and not dude.components.health:IsDead() end, 5)

  end )

  inst:AddComponent("trader")

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

  if item.prefab == "cave_banana" or item.prefab == "carrot" or item.prefab == "corn" or item.prefab == "pumpkin" or item.prefab == "eggplant" or item.prefab == "durian" or item.prefab == "pomegranate" or item.prefab == "dragonfruit" or item.prefab == "berries" or item.prefab == "cactus_meat" or item.prefab == "watermelon" or item.prefab == "acorn" or item.prefab == "meat" or item.prefab == "smallmeat" or item.prefab == "fish" or item.prefab == "eel" or item.prefab == "drumstick" or item.prefab == "bird_egg" or item.prefab == "froglegs" or item.prefab == "monstermeat" or item.prefab == "butter" or item.prefab == "butterflywings" or item.prefab == "cutlichen" or item.prefab == "foliage" or item.prefab == "honey" or item.prefab == "lightbulb" or item.prefab == "red_cap" or item.prefab == "green_cap" or item.prefab == "blue_cap" or item.prefab == "petals" or item.prefab == "petals_evil" or item.prefab == "redgem" or item.prefab == "bluegem" or item.prefab == "purplegem" or item.prefab == "greengem" or item.prefab == "orangegem" or item.prefab == "yellowgem" then

  return true

  end

  return false

  end )

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

  for k = 1, 2 do

  local goldnugget = SpawnPrefab("goldnugget")

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

  end

  end

  inst:ListenForEvent( "nighttime", function() inst:Remove() end , GetWorld())

  inst:AddComponent("talker")

  inst:DoPeriodicTask(math.random(30,60), function()

  local words = {"Good day","I'm happy","I like here","Thank you","Where's the enemy","I'm hungry","Too hot","Too cold","Hello","Bye","Sorry","Good morning","Good afternoon","Good evening","I'll go home","I want to go hunting","I'm going to mining","I want to go to the farm","I want to pick","I want to go fishing","I'm going to catch","I want to fight","I want to have a rest","I was a good man","I want to be rich","I was lucky","I want to make friends"}

  local word = words[math.random(#words)]

  inst.components.talker:Say(word, 4, false)

  end)

  inst:AddTag("npcs")

  end

  end

  inst.OnSave = onsave

  inst.OnLoad = onload

  即可在白天时,石头营火附近有新移民走动,黑夜离去,会主动攻击怪物,有他们的地方是安全的。他们愿意购买你的肉类、蔬菜和宝石(拿着物品对新移民点鼠标左键),每个物品可以卖2个黄金。如果你攻击新移民,附近的其他人将围殴你。新移民会自言自语,听听他们都说了些什么吧。在地图各处建造石头营火及其他建筑,就会形成许多小镇,饥荒世界从此不再冷清。新移民在小地图上显示为打火机图标(代表着希望),通过查看小地图,可以了解各个小镇的人口情况

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

责任编辑:Shy夏夏

上一页 241 242 243 244 245 246 247 248 249 250 251 下一页
友情提示:支持键盘左右键“← →”翻页

本文是否解决了您的问题

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