CS
dúvida

Erro Na Arena De Svargrond

Por cs007, 05 de ago. de 2012 em Scripts

script
10
2.2k
cs007C
05 de agosto de 2012 às 18:48

Pessoal meu server já faz tempo que está assim quando eu inicio o server ele a arena funciona normal mas acho que quando o player morre lá ninguém mais consegue fazer. tem como alguém ajudar?

 

Meu Script do creaturescripts

 

Arenakill.lua

 

function onKill(cid, target)
local room = getArenaMonsterIdByName(getCreatureName(target))
if room > 0 then
 setPlayerStorageValue(cid, room, 1)
 doPlayerSendTextMessage(cid,22,"You can enter next room!")
end
return TRUE
end

NewtonnotwenN
05 de agosto de 2012 às 18:58

Pode me explicar como funciona a arena?

cs007C
05 de agosto de 2012 às 19:18

Arena de Svargrond veio global. tem que falar com o NPC dai vai lá matar os bixos na arena.

NewtonnotwenN
05 de agosto de 2012 às 19:20

Aquela que quando você mata um bixo nasce um teleport pra você ir para outro?

LuckOakeL
05 de agosto de 2012 às 19:23

Dá alguma mensagem de erro quando alguém tenta entrar? Se der, posta o script do erro aqui.

 

Se não, posta o arquivo arenaroom.lua da pasta movements.

Editado Agosto 5 por LuckOake

cs007C
05 de agosto de 2012 às 19:33

Não da erro não veio.

arenaroom.lua

function onStepIn(cid, item, position, fromPosition)
local leave = {x=32312, y=31134, z=6}
if InitArenaScript == 0 then
 InitArenaScript = 1
 -- make arena rooms free
 for i = 0,9 do
  setGlobalStorageValue(42300+i, 0)
  setGlobalStorageValue(42400+i, 0)
 end
 checkArenaRooms({})
end
local arena_room = item.actionid
local player_arena = getPlayerStorageValue(cid, 42355)
if getPlayerStorageValue(cid, arena_room+getPlayerStorageValue(cid, 42355)*10-1) == 1 or arena_room+getPlayerStorageValue(cid, 42355)*10-1 == 42299 then
 if getGlobalStorageValue(cid, arena_room) == 0 then
  local monster_uid = getGlobalStorageValue(arena_room+100)
  if monster_uid > 0 then
   if isCreature(monster_uid) == TRUE then
 doRemoveCreature(monster_uid)
   end
  end
  local spawn_pos = getThingPos(arena_room)
  local monster = doCreateMonster(arena_monsters[arena_room+getPlayerStorageValue(cid, 42355)*10], {x=spawn_pos.x-1,y=spawn_pos.y-1,z=spawn_pos.z})
  setGlobalStorageValue(arena_room+100, monster)
  doTeleportThing(cid, spawn_pos, TRUE)
  setGlobalStorageValue(arena_room, cid)
  setGlobalStorageValue(arena_room-1, 0)
  setPlayerStorageValue(cid, 42350, os.time()+arena_room_max_time)
 else
  doTeleportThing(cid, fromPosition, TRUE)
  doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_ORANGE,getCreatureName(getGlobalStorageValue(cid, arena_room))..' is now in next room. Wait a moment and try again.')
 end
else
 doTeleportThing(cid, fromPosition, TRUE)
 doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_ORANGE,'First kill monster!')
end
if arena_room == 42300 then
 setPlayerStorageValue(cid, 42351, 0)
 setPlayerStorageValue(cid, 42352, 1)
end
return TRUE
end
function checkArenaRooms(param)
addEvent(checkArenaRooms, 1000, {})
for i = 42300, 42309 do
 local player = getGlobalStorageValue(i)
 if isPlayer(player) == TRUE then
  local player_storage = getPlayerStorageValue(player, 42350)
  if player_storage <= os.time() then
   doTeleportThing(player, leave, TRUE)
   setPlayerStorageValue(player, 42350, 0)
   setGlobalStorageValue(i, 0)
   doPlayerSendTextMessage(player,MESSAGE_STATUS_CONSOLE_ORANGE,'You have been kicked from arena! You have only ' .. arena_room_max_time .. ' seconds for one room.')
  elseif player_storage - 10 <= os.time() then
   doPlayerSendTextMessage(player,MESSAGE_EVENT_DEFAULT,'Masz ' .. player_storage - os.time() .. ' sekund, zeby przejsc do kolejnego pokoju!')
  end
 else
  setGlobalStorageValue(i, 0)
 end
end
end

LuckOakeL
05 de agosto de 2012 às 19:47

Rapaz, eu não sei direito como funcionam os scripts dessa arena, mas pelo que eu entendi, acho que isso deve resolver.

 

Você tem só que pegar as coordenadas de toda a arena (todos os rooms juntos).

 

Creaturescripts.xml:

 

<event type="preparedeath" name="ArenaDie" event="script" value="arenadie.lua"/>

 

arenadie.lua:

 

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)

area1 = {x = 998, y = 998, z = 7} -- Ponta superior esquerda da area de toda a arena

area2 = {x = 1002, y = 1002, z = 7} -- Ponta inferior direita da area de toda a arena

if isInArea(cid, area1, area2) then

for i = 0,9 do

setGlobalStorageValue(42300+i, 0)

setGlobalStorageValue(42400+i, 0)

end

return true

end

 

 

PS: Não garanto que funciona.

Editado Agosto 5 por LuckOake

cs007C
05 de agosto de 2012 às 20:07

Lek valeu pela ajuda mas descobri o que era... kkkkk'

 

 

local leave = {x=32312, y=31134, z=6}

LuckOakeL
05 de agosto de 2012 às 20:09

Ah, ok.

 

Dúvida Sanada.

9 meses depois...
DemolidoresD
08 de maio de 2013 às 14:03

Comigo acontece a mesma coisa...

 

cs007

 

tem como me explicar como que tu arrumo a sua ???