第360页:疯狂躲避球
展开三一0.疯狂躲避球(用浣熊尾巴种躲避球场,在圈内60秒不被球打到,赢50个黄金)
用记事本打开游戏目录\data\DLC0001\scripts\prefabs\coontail.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
local function makecourt(inst)
local pt = inst:GetPosition()
local caddie = SpawnPrefab("coontail")
caddie.Transform:SetPosition(pt.x, pt.y, pt.z)
caddie.AnimState:SetBank("wilson")
caddie.AnimState:SetBuild("wes")
caddie.AnimState:OverrideSymbol("swap_hat", "hat_football", "swap_hat")
caddie.AnimState:OverrideSymbol("swap_body", "armor_sweatervest", "swap_body")
caddie.AnimState:Show("HAT")
caddie.AnimState:Show("HAT_HAIR")
caddie.AnimState:Hide("HAIR_NOHAT")
caddie.AnimState:Hide("HAIR")
caddie.AnimState:Hide("ARM_carry")
caddie.AnimState:Show("ARM_normal")
caddie.Transform:SetFourFaced()
caddie.AnimState:PlayAnimation("idle")
caddie:RemoveComponent("inventoryitem")
caddie:RemoveComponent("stackable")
caddie:RemoveComponent("deployable")
caddie:RemoveTag("cattoy")
caddie:AddComponent("workable")
caddie.components.workable:SetWorkAction(ACTIONS.HAMMER)
caddie.components.workable:SetWorkLeft(1)
caddie.components.workable:SetOnFinishCallback(function(caddie)
SpawnPrefab("collapse_big").Transform:SetPosition(caddie.Transform:GetWorldPosition())
GetPlayer().SoundEmitter:PlaySound("dontstarve/common/destroy_wood")
GetPlayer().SoundEmitter:KillSound("beavermusic")
local pos = Vector3(caddie.Transform:GetWorldPosition())
local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 10)
for k,v in pairs(ents) do
if v:HasTag("border") or v:HasTag("landmine") then
SpawnPrefab("collapse_big").Transform:SetPosition(v.Transform:GetWorldPosition())
v:Remove()
end
end
caddie:Remove()
end )
caddie:AddComponent("named")
caddie.components.named:SetName("Pitcher")
caddie:AddComponent("talker")
caddie:AddComponent("trader")
caddie.components.trader:SetAcceptTest(function(caddie, item)
if not caddie:HasTag("startgame") then
if GetPlayer().components.inventory:Has("goldnugget", 10) then
if item.prefab == "goldnugget" then
return true
end
end
end
return false
end )
caddie.components.trader.onaccept = function(caddie, giver, item)
caddie:AddTag("startgame")
GetPlayer().components.inventory:ConsumeByName("goldnugget", 9)
GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/research_available")
caddie.components.talker:Say("Are you ready ?", 3, false)
GetPlayer().SoundEmitter:PlaySound("dontstarve/music/music_hoedown", "beavermusic")
for k = 1, 10 do
local landmine = SpawnPrefab("coontail")
landmine.Transform:SetPosition(pt.x+(math.random(7)-math.random(7)), 0, pt.z+(math.random(7)-math.random(7)))
landmine.AnimState:SetBank("bee_mine")
landmine.AnimState:SetBuild("bee_mine")
landmine.AnimState:PlayAnimation("idle")
landmine.Transform:SetScale(1.2, 1.2, 1.2)
landmine.AnimState:SetMultColour(255/255,105/255,0/255,1)
landmine.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
landmine:RemoveComponent("inventoryitem")
landmine:RemoveComponent("stackable")
landmine:RemoveComponent("deployable")
landmine:RemoveTag("cattoy")
landmine.persists = false
landmine:DoPeriodicTask(0.01, function()
local pos0 = Vector3(landmine.Transform:GetWorldPosition())
local ents0 = TheSim:FindEntities(pos0.x,pos0.y,pos0.z, 1)
for k,v in pairs(ents0) do
if v and v:HasTag("player") and not v:HasTag("pain")then
v:AddTag("pain")
v.sg:GoToState("hit")
if v.components.health then v.components.health:DoDelta(-3) end
v:DoTaskInTime(0.5, function() v:RemoveTag("pain") end )
end
end
end )
landmine:AddTag("landmine")
end
caddie:DoTaskInTime(3, function()
caddie.components.talker:Say("Go !", 1, false)
GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/equip_item_gold")
caddie.task = caddie:DoPeriodicTask(0.4, function(caddie)
local target = FindEntity(caddie, 9, function(guy)
return guy:HasTag("player")
end )
if target then
caddie.Transform:SetRotation(GetPlayer().Transform:GetRotation() - 180)
caddie.AnimState:PlayAnimation("give")
local dodgeball = SpawnPrefab("coontail")
dodgeball.AnimState:SetBank("bulb")
dodgeball.AnimState:SetBuild("bulb")
dodgeball.AnimState:PlayAnimation("idle")
dodgeball.Transform:SetPosition(pt.x, 0, pt.z)
dodgeball:RemoveComponent("inventoryitem")
dodgeball:RemoveComponent("stackable")
dodgeball:RemoveComponent("deployable")
dodgeball:RemoveTag("cattoy")
dodgeball.persists = false
dodgeball:AddComponent("complexprojectile")
dodgeball.components.complexprojectile.yOffset = 1
if math.random()<.5 then
local targetpos = target:GetPosition()
dodgeball.components.complexprojectile:Launch(targetpos)
else
dodgeball.components.complexprojectile:Launch(Point(pt.x+(math.random(9)-math.random(9)), 0, pt.z+(math.random(9)-math.random(9))))
end
dodgeball.components.complexprojectile:SetOnHit(function()
SpawnPrefab("small_puff").Transform:SetPosition(dodgeball.Transform:GetWorldPosition())
dodgeball:Remove()
end )
dodgeball:DoPeriodicTask(0.01, function()
local pos = Vector3(dodgeball.Transform:GetWorldPosition())
local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 1)
for k,v in pairs(ents) do
if v and v:HasTag("player") then
v.sg:GoToState("hit")
if caddie.task then caddie.task:Cancel() caddie.task = nil end
if caddie.task2 then caddie.task2:Cancel() caddie.task2 = nil end
caddie.Transform:SetRotation( 0 )
caddie.AnimState:PlayAnimation("idle_onemanband1_loop",true)
caddie:DoTaskInTime(2, function() caddie.AnimState:PlayAnimation("idle") end )
caddie.components.talker:Say("Game over !", 3, false)
GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
GetPlayer().SoundEmitter:KillSound("beavermusic")
SpawnPrefab("collapse_small").Transform:SetPosition(dodgeball.Transform:GetWorldPosition())
dodgeball:Remove()
local pos1 = Vector3(caddie.Transform:GetWorldPosition())
local ents1 = TheSim:FindEntities(pos1.x,pos1.y,pos1.z, 10)
for k,v in pairs(ents1) do
if v:HasTag("landmine") then
v:Remove()
end
end
caddie:RemoveTag("startgame")
end
end
end )
else
if caddie.task then caddie.task:Cancel() caddie.task = nil end
if caddie.task2 then caddie.task2:Cancel() caddie.task2 = nil end
caddie.Transform:SetRotation( 0 )
caddie.AnimState:PlayAnimation("idle_onemanband1_loop",true)
caddie:DoTaskInTime(2, function() caddie.AnimState:PlayAnimation("idle") end )
caddie.components.talker:Say("Game over !", 3, false)
GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
GetPlayer().SoundEmitter:KillSound("beavermusic")
local pos1 = Vector3(caddie.Transform:GetWorldPosition())
local ents1 = TheSim:FindEntities(pos1.x,pos1.y,pos1.z, 10)
for k,v in pairs(ents1) do
if v:HasTag("landmine") then
v:Remove()
end
end
caddie:RemoveTag("startgame")
end
end )
end )
caddie.task2 = caddie:DoTaskInTime(63, function()
if caddie:HasTag("startgame") then
if caddie.task then caddie.task:Cancel() caddie.task = nil end
if caddie.task2 then caddie.task2:Cancel() caddie.task2 = nil end
caddie.Transform:SetRotation( 0 )
caddie.AnimState:PlayAnimation("give")
caddie.components.talker:Say("You win !", 3, false)
GetPlayer().SoundEmitter:KillSound("beavermusic")
caddie:StartThread(function()
for k = 1, 10 do
GetPlayer().SoundEmitter:PlaySound("dontstarve/wilson/equip_item_gold")
Sleep(0.15)
end
end )
for k = 1, 50 do
local goldnugget = SpawnPrefab("goldnugget")
GetPlayer().components.inventory:GiveItem(goldnugget)
end
local pos1 = Vector3(caddie.Transform:GetWorldPosition())
local ents1 = TheSim:FindEntities(pos1.x,pos1.y,pos1.z, 10)
for k,v in pairs(ents1) do
if v:HasTag("landmine") then
v:Remove()
end
end
caddie:RemoveTag("startgame")
end
end )
end
caddie:AddTag("caddie")
for k = 1, 50 do
local result_offset = FindValidPositionByFan(1 * 2 * PI, 8.5, 50, function(offset)
local x,y,z = (pt + offset):Get()
local ents = TheSim:FindEntities(x,y,z , 1)
return not next(ents)
end)
if result_offset then
local border = SpawnPrefab("coontail")
border.Transform:SetPosition((pt + result_offset):Get())
border.AnimState:SetBank("bulb")
border.AnimState:SetBuild("bulb")
border.AnimState:PlayAnimation("idle")
border.Transform:SetScale(1.2, 1.2, 1.2)
border.AnimState:SetMultColour(255/255,0/255,0/255,1)
border.AnimState:SetOrientation( ANIM_ORIENTATION.OnGround )
border.AnimState:SetLayer( LAYER_BACKGROUND )
border.AnimState:SetSortOrder( 1 )
border:RemoveComponent("inventoryitem")
border:RemoveComponent("stackable")
border:RemoveComponent("deployable")
border:RemoveTag("cattoy")
border:DoPeriodicTask(2, function(shopsign)
border.AnimState:SetMultColour(0/255,255/255,0/255,1)
border:DoTaskInTime(1, function() border.AnimState:SetMultColour(255/255,0/255,0/255,1) end )
end )
border:AddTag("NOCLICK")
border:AddTag("border")
end
end
end
local function OnDeploy (inst, pt)
makecourt(inst)
inst.components.stackable:Get():Remove()
end
inst:AddComponent("deployable")
inst.components.deployable.ondeploy = OnDeploy
local function onsave(inst, data)
if inst:HasTag("caddie") then
data.caddie = true
end
if inst:HasTag("border") then
data.border = true
end
end
local function onload(inst, data)
if data and data.caddie then
makecourt(inst)
inst:Remove()
end
if data and data.border then
inst:Remove()
end
end
inst.OnSave = onsave
inst.OnLoad = onload
即可在空旷的地上,用浣熊尾巴种躲避球场(拿着1个浣熊尾巴对地面点鼠标右键,如果拿着多个,则不会种出来)。给投手10个黄金玩一次(拿着黄金对投手点鼠标左键),他会不断向你扔球,在不跑出圆圈边界、不被砸到的情况下,坚持60秒,就可赢得50个黄金的奖励。球场内会随机出现障碍物,碰到会被扎伤(减3点血),绕着点跑吧。不想要躲避球场了,用锤子砸投手即可
更多相关内容请关注:饥荒专区
责任编辑:Shy夏夏