Ir para conteúdo

Ajuda Zombie Event Plis...


FeehGusso

Posts Recomendados

Eu tenhu zombie event aki...

Ele funciona certinho , Abre o TP, fexa o TP, comessa o evento tudu certinho...

mas o bixo toka nos players nao acontece nada...

ou seja, ele nao eh retirado do evento e o evento nunca acaba... Sendo assim nao para de nasce bixos... ja colokei o atake deles pra 1 milhao , mesmo assim ele mata o player ate o ultimo player dentro do evento e nao acontece NADA...

Vo posta As scripts...

 

CREATURESCRIPT

 

local config = {

playerCount = 2001, -- Global storage for counting the players left/entered in the event

 

goblet = 5805, -- id of the gold goblet you'll get when finishing the event.

rewards = {2195, 2152, 2160}, -- You will get this + a gold goblet with your name on.

-- {moneyId, count, using? 1 for using moneyReward, 0 for not using.}

moneyReward = {2160, 10, 1},

 

-- Should be same as in the globalevent!

-- The zombies will spawn randomly inside this area

fromPosition = {x = 1186, y = 1072, z = 7}, -- top left cornor of the playground

toPosition = {x = 1195, y = 1081, z = 7}, -- bottom right cornor of the playground

}

 

function onStatsChange(cid, attacker, type, combat, value)

if isPlayer(cid) and isMonster(attacker) then

if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then

if getGlobalStorageValue(config.playerCount) >= 2 then

doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED)

local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))

doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")

doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)

doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)

setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1)

elseif getGlobalStorageValue(config.playerCount) == 1 then

if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then

doBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING)

local goblet = doPlayerAddItem(cid, config.goblet, 1)

doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.")

local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))

doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")

doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)

doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)

for _,items in ipairs(config.rewards) do

doPlayerAddItem(cid, items, 1)

end

if config.moneyReward[3] == 1 then

doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2])

end

end

 

for x = config.fromPosition.x, config.toPosition.x do

for y = config.fromPosition.y, config.toPosition.y do

for z = config.fromPosition.z, config.toPosition.z do

areapos = {x = x, y = y, z = z, stackpos = 253}

getMonsters = getThingfromPos(areapos)

if isMonster(getMonsters.uid) then

doRemoveCreature(getMonsters.uid)

end

end

end

end

end

return false

end

end

return true

end

 

 

 

GLOBALEVENTS

 

local config = {

playerCount = 2001, -- Global storage for counting the players left/entered in the event

zombieCount = 2002, -- Global storage for counting the zombies in the event

teleportActionId = 2000, -- Action id of the teleport needed for the movement script

teleportPosition = {x = 1135, y = 1077, z = 3, stackpos = 1}, -- Where the teleport will be created

teleportToPosition = {x = 1190, y = 1076, z = 7}, -- Where the teleport will take you

teleportId = 1387, -- Id of the teleport

timeToStartEvent = 5, -- Minutes, after these minutes the teleport will be removed and the event will be declared started

timeBetweenSpawns = 20, -- Seconds between each spawn of zombie

zombieName = "event zombie", -- Name of the zombie that should be summoned

playersNeededToStartEvent = 5, -- Players needed before the zombies can spawn.

 

-- Should be the same as in the creaturescript!

-- The zombies will spawn randomly inside this area

fromPosition = {x = 1186, y = 1072, z = 7}, -- top left cornor of the playground

toPosition = {x = 1195, y = 1081, z = 7}, -- bottom right cornor of the playground

}

 

function onTimer()

local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)

doItemSetAttribute(tp, "aid", config.teleportActionId)

doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)

setGlobalStorageValue(config.playerCount, 0)

setGlobalStorageValue(config.zombieCount, 0)

addEvent(startEvent, config.timeToStartEvent * 1000 * 60)

print(getGlobalStorageValue(2001))

end

 

function startEvent()

local get = getThingfromPos(config.teleportPosition)

if get.itemid == config.teleportId then

doRemoveItem(get.uid, 1)

end

 

local fromp, top = config.fromPosition, config.toPosition

 

if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then

addEvent(spawnZombie, config.timeBetweenSpawns * 1000)

doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING)

 

for x = fromp.x, top.x do

for y = fromp.y, top.y do

for z = fromp.z, top.z do

areapos = {x = x, y = y, z = z, stackpos = 253}

getPlayers = getThingfromPos(areapos)

if isPlayer(getPlayers.uid) then

doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!")

end

end

end

end

else

doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING)

for x = fromp.x, top.x do

for y = fromp.y, top.y do

for z = fromp.z, top.z do

areapos = {x = x, y = y, z = z, stackpos = 253}

getPlayers = getThingfromPos(areapos)

if isPlayer(getPlayers.uid) then

doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false)

doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT)

end

end

end

end

end

end

 

function spawnZombie()

if getGlobalStorageValue(config.playerCount) >= 2 then

pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)}

doSummonCreature(config.zombieName, pos)

doSendMagicEffect(pos, CONST_ME_MORTAREA)

setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1)

doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED)

addEvent(spawnZombie, config.timeBetweenSpawns * 1000)

end

end

 

 

MOVEMENTS

 

 

local config = {

playerCount = 2001, -- Global storage for counting the players in the event

maxPlayers = 15, -- Max players who can participate

 

}

 

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)

if getGlobalStorageValue(config.playerCount) < config.maxPlayers then

setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)+1)

if getGlobalStorageValue(config.playerCount) == config.maxPlayers then

doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(config.playerCount) .. " players]! The event will soon start.")

else

doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(config.playerCount) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED)

end

else

addEvent(tpBack, 1000, cid, fromPosition)

doPlayerSendCancel(cid, "The event is full. There is already " .. config.maxPlayers .. " players participating in the quest.")

return false

end

print(getStorage(config.playerCount) .. " Players in the zombie event.")

return true

end

 

function tpBack(cid, fromPosition)

doTeleportThing(cid, fromPosition, true)

doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)

end

 

 

 

MOSTER

 

 

<?xml version="1.0" encoding="UTF-8"?>

<monster name="Event Zombie" nameDescription="an event zombie" race="undead" experience="280" speed="100" manacost="0">

<health now="500" max="500"/>

<look type="311" corpse="9875"/>

<targetchange interval="5000" chance="50"/>

<strategy attack="100" defense="0"/>

<flags>

<flag summonable="0"/>

<flag attackable="0"/>

<flag hostile="1"/>

<flag illusionable="0"/>

<flag convinceable="0"/>

<flag pushable="0"/>

<flag canpushitems="1"/>

<flag canpushcreatures="1"/>

<flag targetdistance="1"/>

<flag staticattack="90"/>

<flag runonhealth="0"/>

</flags>

<attacks>

<attack name="melee" interval="2000" min="-350" max="-350"/>

</attacks>

<defenses armor="15" defense="10"/>

<immunities>

<immunity paralyze="1"/>

</immunities>

<voices interval="5000" chance="10">

<voice sentence="You wont last long!"/>

<voice sentence="Mmmmh.. braains!"/>

</voices>

<loot>

<item id="2148" countmax="1" chance="100000"/><!-- gold coin -->

</loot>

 

 

 

 

SE ALGUEM AJUDA DO 5 RESP++

Passo meu msn : rvt_nba@hot.

Valeu ae

 

Quando o bixo me toka aparece isso no TFS

 

 

[10/09/2011 19:22:37] [Error - CreatureScript Interface]

[10/09/2011 19:22:37] data/creaturescripts/scripts/zombie.lua:onStatsChange

[10/09/2011 19:22:37] Description:

[10/09/2011 19:22:37] data/lib/032-position.lua:2: attempt to index global 'position' (a nil value)

[10/09/2011 19:22:37] stack traceback:

[10/09/2011 19:22:37] data/lib/032-position.lua:2: in function 'isInArea'

[10/09/2011 19:22:37] data/creaturescripts/scripts/zombie.lua:17: in function <data/creaturescripts/scripts/zombie.lua:15>

 

 

Alguem agora sabe arruma?

Valeu :S

 

Alguem ? :(

Link para o comentário
Compartilhar em outros sites

deixe o monster assim

 

<?xml version="1.0" encoding="UTF-8"?>

 

<monster name="Event Zombie" nameDescription="an event zombie" race="undead" experience="280" speed="250" manacost="0">

 

<health now="8000" max="8000"/>

 

<look type="311" corpse="9875"/>

 

<targetchange interval="5000" chance="8"/>

 

<strategy attack="100" defense="0"/>

 

<flags>

 

<flag summonable="0"/>

 

<flag attackable="1"/>

 

<flag hostile="1"/>

 

<flag illusionable="0"/>

 

<flag convinceable="0"/>

 

<flag pushable="0"/>

 

<flag canpushitems="1"/>

<flag canpushcreatures="1"/>

 

<flag targetdistance="1"/>

 

<flag staticattack="90"/>

 

<flag runonhealth="0"/>

 

</flags>

 

<attacks>

 

<attack name="melee" interval="1000" skill="280" attack="130"/>

</attacks>

 

<defenses armor="15" defense="10"/>

 

<elements>

 

<element firePercent="-40"/>

 

</elements>

 

<immunities>

 

<immunity death="1"/>

 

<immunity energy="1"/>

 

<immunity ice="1"/>

 

<immunity earth="1"/>

 

<immunity lifedrain="1"/>

 

<immunity paralyze="1"/>

 

</immunities>

 

<voices interval="5000" chance="10">

 

<voice sentence="Mst.... klll...."/>

 

<voice sentence="Whrrrr... ssss.... mmm.... grrrrl"/>

 

<voice sentence="Dnnnt... cmmm... clsrrr...."/>

 

<voice sentence="Httt.... hmnnsss..."/>

 

</voices>

 

<loot>

 

<item id="3976" countmax="10" chance="50000"/><!-- worm -->

 

<item id="2148" countmax="52" chance="100000"/><!-- gold coin -->

 

<item id="1987" chance="100000"><!-- bag -->

 

<inside>

 

<item id="2381" chance="2857"/><!-- battle hammer -->

 

<item id="2398" chance="10000"/><!-- mace -->

 

<item id="2457" chance="5000"/><!-- steel helmet -->

 

<item id="2056" chance="20000"/><!-- torch -->

 

<item id="7620" chance="4000"/><!-- mana potion -->

 

<item id="9808" chance="3000"/><!-- rusty armor -->

 

<item id="2205" chance="2000"/><!-- life ring -->

 

</inside>

 

</item>

 

</loot>

 

</monster>

Link para o comentário
Compartilhar em outros sites

Eu colokei nao deu certo cara...

o bixo fika atakando o player...

e quando mata n acontece nada...

o evento nunca acaba...

o zombie mata tudu mundo...

eu arrumei o erro...

so q ele nao tira os players...

 

 

SEGUE 1 PRINT

 

 

Link da foto

 

 

Alguem por favor manow... :(

Editado por FeehGusso
Link para o comentário
Compartilhar em outros sites

Olha o erro esta sendo ocasionado na sua lib/032 como esta disendo o erro pesso que formate melhor seu topico para melhorar a visualidade do mesmo!

 

 

[10/09/2011 19:22:37] [Error - CreatureScript Interface]
[10/09/2011 19:22:37] data/creaturescripts/scripts/zombie.lua:onStatsChange
[10/09/2011 19:22:37] Description:
[10/09/2011 19:22:37] data/lib/032-position.lua:2: attempt to index global 'position' (a nil value)
[10/09/2011 19:22:37] stack traceback:
[10/09/2011 19:22:37] data/lib/032-position.lua:2: in function 'isInArea'
[10/09/2011 19:22:37] data/creaturescripts/scripts/zombie.lua:17: in function <data/creaturescripts/scripts/zombie.lua:15>

Editado por mulizeu
Link para o comentário
Compartilhar em outros sites

Eu colokei o LIB/32 POSITION do hero serve...

agora nao da mais erro quando o bixo me toka...

e tmb funciono o castle war no sistema /WAR OPEN , /WAR CLOSE

sem erros...

 

to usando esta LIB.

 

function isInRange(position, fromPosition, toPosition)

return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.z >= fromPosition.z

and position.x <= toPosition.x and position.y <= toPosition.y and position.z <= toPosition.z)

end

 

function getDistanceBetween(fromPosition, toPosition)

local x, y = math.abs(fromPosition.x - toPosition.x), math.abs(fromPosition.y - toPosition.y)

local diff = math.max(x, y)

if(fromPosition.z ~= toPosition.z) then

diff = diff + 9 + 6

end

 

return diff

end

 

function getDirectionTo(pos1, pos2)

local dir = SOUTH

if(pos1.x > pos2.x) then

dir = WEST

if(pos1.y > pos2.y) then

dir = NORTHWEST

elseif(pos1.y < pos2.y) then

dir = SOUTHWEST

end

elseif(pos1.x < pos2.x) then

dir = EAST

if(pos1.y > pos2.y) then

dir = NORTHEAST

elseif(pos1.y < pos2.y) then

dir = SOUTHEAST

end

elseif(pos1.y > pos2.y) then

dir = NORTH

elseif(pos1.y < pos2.y) then

dir = SOUTH

end

 

return dir

end

 

function getCreatureLookPosition(cid)

return getPositionByDirection(getThingPosition(cid), getCreatureLookDirection(cid))

end

 

function getPositionByDirection(position, direction, size)

local n = size or 1

if(direction == NORTH) then

position.y = position.y - n

elseif(direction == SOUTH) then

position.y = position.y + n

elseif(direction == WEST) then

position.x = position.x - n

elseif(direction == EAST) then

position.x = position.x + n

elseif(direction == NORTHWEST) then

position.y = position.y - n

position.x = position.x - n

elseif(direction == NORTHEAST) then

position.y = position.y - n

position.x = position.x + n

elseif(direction == SOUTHWEST) then

position.y = position.y + n

position.x = position.x - n

elseif(direction == SOUTHEAST) then

position.y = position.y + n

position.x = position.x + n

end

 

return position

end

 

function doComparePositions(position, positionEx)

return position.x == positionEx.x and position.y == positionEx.y and position.z == positionEx.z

end

 

function getArea(position, x, y)

local t = {}

for i = (position.x - x), (position.x + x) do

for j = (position.y - y), (position.y + y) do

table.insert(t, {x = i, y = j, z = position.z})

end

end

 

return t

end

 

function Position(x, y, z, stackpos)

local position = {x = 0, y = 0, z = 0}

if(isNumeric(x .. y .. z)) then

position = {x = x, y = y, z = z}

if(isNumeric(stackpos)) then

position.stackpos = stackpos

end

end

 

return position

end

 

function isValidPosition(position)

return (isNumeric(position.x .. position.y .. position.z) and position.x > 0

and position.y > 0 and position.z >= 0 and position.z <= 15)

end

 

 

 

 

So ke n acontece nada quando ele me toka...

Alguem sabe? :X

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...