Ir para conteúdo
  • Cadastre-se

Posts Recomendados

<globalevent name="clean" interval="5000" event="script" value="pvp.lua"/>  Interval e para teleporta os player pra arena 

 

 

explica mas mano tem pessoas que n vão intender .

Link para o post
Compartilhar em outros sites
  • Respostas 69
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Arena War Informações: Todos os Players Falam com o NPC, e vão param em uma sala de espera, após um período todos são teleportados para uma arena, quando todos se matarem e só restar 1 ele ganhara

gabisa00 e pessoal que ta usando o script:   Dei uma olhada no script e achei um bug, quando o evento é fechado (por falta de players) ele só tira o valor da storage global, não mandando os jogadore

Amigo imagine o seguinte, você esta colocando as coordenadas erradas.   veja isso imagine que isso seja a arena.                . <- aqui é a coordenada do canto superior esquerdo            

Posted Images

Ja postei os 2

 

[Error- Talkaction Interface]

data/talkactions/scripts/pvp.lua:onthink

data/talkactions/scripts/pvp.lua:19 attempt to index global 'player' <a nill value>

m9r2.png

            Acesse já e seja o domine seu póprio destino !

Link para o post
Compartilhar em outros sites

Somente está com o erro na talk ok? se sim pegue a nova que coloquei agora, e teste, se a global estiver dando pal também tente colocar de novo, alterei os 2.


<globalevent name="clean" interval="5000" event="script" value="pvp.lua"/>  Interval e para teleporta os player pra arena 

 

 

explica mas mano tem pessoas que n vão intender .

 

 

Eu já alterei essa parte está correta agora.

Link para o post
Compartilhar em outros sites

Ja postei os 2

 

[Error- Talkaction Interface]

data/talkactions/scripts/pvp.lua:onthink

data/talkactions/scripts/pvp.lua:19 attempt to index global 'player' <a nill value>

 Aguardo sua resposta com a confirmação ou não do funcionamento.

mas mesmo assim VLW MAno +Rep mas tenta arruma ai pra n da bug errors

Muito Obrigado, sua generosidade me faz querer ajudar cada vez mais.

Link para o post
Compartilhar em outros sites

Mano tenta arruma ai no globalevents linha 36


if total_players == 1 then
      setGlobalStorageValue(storage, -1)
      doTeleportThing(player_escolhido, pos_templo)
      doPlayerAddItem(player_escolhido, item_premio, item_quantidade_premio)
      doPlayerAddItem(cid,2160,dinheiro premio)         <<<<<<<<<<<<<<
 
 
doplayeradditem 
 
quando liguei meu ot deu error falo que linha 36 n sei ajuda ai
Link para o post
Compartilhar em outros sites

arrumei, substitui esse arquivo por esse.

function onThink(interval, lastExecution)
 
local total_players = 0
local storage = 24658                        -- ALTERAR storage usado no sistema deixar todos iguais
local item_premio = 1234                     -- ALTERAR item dado de premio, caso não queira dar item, coloque 2160
local item_quantidade_premio = 1             -- ALTERAR quantidade do item ganho, caso não queira dar item , coloque 0
local dinheiro_premio = 0                    -- ALTERAR dinheiro dado de premio, caso não queira deixe 0
local player_escolhido = 0
local players = getPlayersOnline()
local i = 1
local pos_templo = {x = , y = , z = }        -- ALTERAR coordenada do templo do seu ot server
 
if getGlobalStorageValue(storage) == 1 then
else
    return TRUE
end
 
while i <= #players do
      local pos_player = getPlayerPosition(players)
      local pos1_arena = {x = , y = , z = }   -- ALTERAR pos do canto superior esquerdo da arena
      local pos2_arena = {x = , y = , z = }   -- ALTERAR pos do canto inferior direito da arena
      if pos_player.x >= pos1_arena.x and pos_player.y >= pos1_arena.y and pos_player.x <= pos2_arena.x and pos_player.y <= pos2_arena.y then
                if getPlayerGroupId(cid) <= 1 then
                      total_players = total_player + 1
                      player_escolhido = players
                end      
 
      end
      i = i + 1
end
 
if total_players == 1 then
      setGlobalStorageValue(storage, -1)
      doTeleportThing(player_escolhido, pos_templo)
      doPlayerAddItem(player_escolhido, item_premio, item_quantidade_premio)
      doPlayerAddItem(cid,2160,dinheiro_premio)
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você é o Vencedor do Evento.")        -- ALTERAR frase para o vencedor do premio
      doBroadcastMessage("O Player"..(getPlayerName(player_escolhido)).." é o Vencedor do Evento.",22) -- ALTERAR frase para todos, do ganhador do premio
      return TRUE
else
    if total_players <= 0 then
      setGlobalStorageValue(storage, -1)
      doBroadcastMessage("Todos os Jogadores Se mataram, fim do Evento.",22) -- ALTERAR frase para todos, do ganhador do premio
      return TRUE       
    end      
end
 
return TRUE
end

Link para o post
Compartilhar em outros sites

Sem erros durante a iniação do evento, teleporta certinho e talz, mas quando mato o ultimo player não recebo o premio nem sou teleportado e acontece isso:

 

[Error- Globalevent Interface]

data/globalevents/scripts/pvp.lua:onthink

data/globalevents/scripts/pvp.lua:23 attempt attempt to compare boolean with number

data/globalevents/scripts/pvp.lua:23 in function pvp.lua:1

Couldn't execute event 'arenawar'

m9r2.png

            Acesse já e seja o domine seu póprio destino !

Link para o post
Compartilhar em outros sites

Tente isso pf.

 

function onThink(interval, lastExecution)



local total_players = 0
local storage = 24658 -- ALTERAR storage usado no sistema deixar todos iguais
local item_premio = 1234 -- ALTERAR item dado de premio, caso não queira dar item, coloque 2160
local item_quantidade_premio = 1 -- ALTERAR quantidade do item ganho, caso não queira dar item , coloque 0
local dinheiro_premio = 0 -- ALTERAR dinheiro dado de premio, caso não queira deixe 0
local player_escolhido = 0
local players = getPlayersOnline()
local i = 1
local pos_templo = {x = , y = , z = } -- ALTERAR coordenada do templo do seu ot server

if getGlobalStorageValue(storage) == 1 then
else
return TRUE
end

while i <= #players do
local pos_player = getPlayerPosition(players)
local pos1_arena = {x = , y = , z = } -- ALTERAR pos do canto superior esquerdo da arena
local pos2_arena = {x = , y = , z = } -- ALTERAR pos do canto inferior direito da arena
if pos_player.x >= pos1_arena.x and pos_player.y >= pos1_arena.y and pos_player.x <= pos2_arena.x and pos_player.y <= pos2_arena.y then
total_players = total_player + 1
player_escolhido = players

end
i = i + 1
end

if total_players == 1 then
setGlobalStorageValue(storage, -1)
doTeleportThing(player_escolhido, pos_templo)
doPlayerAddItem(player_escolhido, item_premio, item_quantidade_premio)
doPlayerAddItem(cid,2160,dinheiro_premio)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você é o Vencedor do Evento.") -- ALTERAR frase para o vencedor do premio
doBroadcastMessage("O Player"..(getPlayerName(player_escolhido)).." é o Vencedor do Evento.",22) -- ALTERAR frase para todos, do ganhador do premio
return TRUE
else
if total_players <= 0 then
setGlobalStorageValue(storage, -1)
doBroadcastMessage("Todos os Jogadores Se mataram, fim do Evento.",22) -- ALTERAR frase para todos, do ganhador do premio
return TRUE
end
end

return TRUE
end

 

Me avise se funcionar por favor.

Editado por gabisa00 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

[Error- Globalevent Interface]

data/globalevents/scripts/pvp.lua:onthink

data/globalevents/scripts/pvp.lua:23 attempt to perform arithmet on global 'total_player' <a nil value>

data/globalevents/scripts/pvp.lua:23 in function pvp.lua:1

Couldn't execute event 'arenawar'

m9r2.png

            Acesse já e seja o domine seu póprio destino !

Link para o post
Compartilhar em outros sites

achei outro erro, tenta esse agora, desculpa cara, pelos erros tentei te enviar o mais rápido possivel.

function onThink(interval, lastExecution)



local total_players = 0
local storage = 24658 -- ALTERAR storage usado no sistema deixar todos iguais
local item_premio = 1234 -- ALTERAR item dado de premio, caso não queira dar item, coloque 2160
local item_quantidade_premio = 1 -- ALTERAR quantidade do item ganho, caso não queira dar item , coloque 0
local dinheiro_premio = 0 -- ALTERAR dinheiro dado de premio, caso não queira deixe 0
local player_escolhido = 0
local players = getPlayersOnline()
local i = 1
local pos_templo = {x = , y = , z = } -- ALTERAR coordenada do templo do seu ot server

if getGlobalStorageValue(storage) == 1 then
else
return TRUE
end

while i <= #players do
local pos_player = getPlayerPosition(players)
local pos1_arena = {x = , y = , z = } -- ALTERAR pos do canto superior esquerdo da arena
local pos2_arena = {x = , y = , z = } -- ALTERAR pos do canto inferior direito da arena
if pos_player.x >= pos1_arena.x and pos_player.y >= pos1_arena.y and pos_player.x <= pos2_arena.x and pos_player.y <= pos2_arena.y then
total_players = total_players + 1
player_escolhido = players

end
i = i + 1
end

if total_players == 1 then
setGlobalStorageValue(storage, -1)
doTeleportThing(player_escolhido, pos_templo)
doPlayerAddItem(player_escolhido, item_premio, item_quantidade_premio)
doPlayerAddItem(cid,2160,dinheiro_premio)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você é o Vencedor do Evento.") -- ALTERAR frase para o vencedor do premio
doBroadcastMessage("O Player"..(getPlayerName(player_escolhido)).." é o Vencedor do Evento.",22) -- ALTERAR frase para todos, do ganhador do premio
return TRUE
else
if total_players <= 0 then
setGlobalStorageValue(storage, -1)
doBroadcastMessage("Todos os Jogadores Se mataram, fim do Evento.",22) -- ALTERAR frase para todos, do ganhador do premio
return TRUE
end
end

return TRUE
end

Link para o post
Compartilhar em outros sites

Funcionou perfeitamente rep+ até meus dedos cairem.

 

Agora será q eu poderia pedir alguns detalhes?

1. Teleportar os jogadores randomicamente na sala de espera para evitar flood

2.Teleportar os jogadores randomicamente na arena para evitar flood

3. Evento se iniciar automaticamente de 3 em 3 horas

m9r2.png

            Acesse já e seja o domine seu póprio destino !

Link para o post
Compartilhar em outros sites

Spam, muitos players juntos

m9r2.png

            Acesse já e seja o domine seu póprio destino !

Link para o post
Compartilhar em outros sites

quando os players vão para a arena eles já podem ir pro pal, mas na área de espera é meio foda, por que vai lagar seu servidor, ficar teleportando toda hora, e se forem muitos players vai ferrar tudo, para acontecer de 3 em 3 horas já posto

tag globalevents.xml

<globalevent name="arenawar1" interval="10800000" event="script" value="arenawar1.lua"/>

 

data/globalevents/scripts/arenawar1.lua

function onThink(interval, lastExecution)
  
local tempo_espera = 60 * 1000 -- ALTERAR tempo de espera na sala, 1 minuto
 
doBroadcastMessage("Evento PVP foi Ativado.",22)                 -- ALTERAR frase que aparece para todos quando usar o comando
setGlobalStorageValue(24658, 0)                                  -- ALTERAR storage usado no sistema, deixar todos iguais
addEvent(
function ()
 
         doBroadcastMessage("Evento Iniciado.",22)               -- ALTERAR frase quando todos forem para a arena
         setGlobalStorageValue(24658, 1)                         -- ALTERAR storage usado no sistema, deixar todos iguais
         local players = getPlayersOnline()
         local i = 1
         while i <= #players do
               local pos_player = getPlayerPosition(players)
               local pos1_espera = {x = , y = , z = }           -- ALTERAR pos do canto superior esquerdo da sala de espera
               local pos2_espera = {x = , y = , z = }           -- ALTERAR pos do canto inferior direito da sala de espera
               local pos_arena = {x = , y = , z = }             -- ALTERAR
               if pos_player.x >= pos1_espera.x and pos_player.y >= pos1_espera.y and pos_player.x <= pos2_espera.x and pos_player.y <= pos2_espera.y then
                  doTeleportThing(players, pos_arena)
                  doPlayerSendTextMessage(players, MESSAGE_STATUS_CONSOLE_BLUE, "Batalhe pela sua vida.")   -- ALTERAR frase que vai aparecer para o player quando ele entrar na arena
               end
               
               i = i + 1
         end
 
end
,tempo_espera)
   
return true
end

Editado por gabisa00 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Ok, vou fazer o seguinte, tenho o sistema de teleport random aqui, então vou colocar para todos os players entrarem num teleport para serem teleportados randomicamente, ou seja, teleportados 2 vezes.

m9r2.png

            Acesse já e seja o domine seu póprio destino !

Link para o post
Compartilhar em outros sites

post-80963-0-56251300-1406864616_thumb.p

 

 

 

Mano esse eo erro que ta dando no meu ot.

 

 

 

ai tem como fala quanto e interval=5000 quantos minutos da ? 

 

 

e pq n quer teleporta os Players pra arena 

 

 

function onSay(cid, words, param)
 
if getGlobalStorageValue(24658) >= 0 then
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Evento Já esta Online.")
end
 
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Evento Acabou de Ser Ativado.") 
local tempo_espera = 60 * 1000 -- ALTERAR tempo de espera na sala, 1 minuto
 
doBroadcastMessage("Evento PVP foi Ativado.",22)                 -- ALTERAR frase que aparece para todos quando usar o comando
setGlobalStorageValue(24658, 0)                                  -- ALTERAR storage usado no sistema, deixar todos iguais
addEvent(
function ()
 
         doBroadcastMessage("Evento Iniciado.",22)               -- ALTERAR frase quando todos forem para a arena
         setGlobalStorageValue(24658, 1)                         -- ALTERAR storage usado no sistema, deixar todos iguais
         local players = getPlayersOnline()
         local i = 1
         while i <= #player do
               local pos_player = getPlayerPosition(players)
               local pos1_espera = {x=478 , y=566 , z=7 }           -- ALTERAR pos do canto superior esquerdo da sala de espera
               local pos2_espera = {x=499 , y=566 , z=7 }           -- ALTERAR pos do canto inferior direito da sala de espera
               local pos_arena = {x=488 , y=508 , z=7 }             -- ALTERAR
               if pos_player.x >= pos1_espera.x and pos_player.y >= pos1_espera.y and pos_player.x <= pos2_espera.x and pos_player.y <= pos2_espera.y then
                  doTeleportThing(players, pos_arena)
                  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Batalhe pela sua vida.")   -- ALTERAR frase que vai aparecer para o player quando ele entrar na arena
               end
               
               i = i + 1
         end
 
end
,tempo_espera)
   
return true
end
 
 
 
 
 
 
aqui o meu epvp.lua talkations.
 
 
 
 
 
+rep se consegui resolve o problema do bug 

mano n quer teleporta o player pra arena aparece uma mensagem evento iniciado MAs n teleporta ninguem AFF seriu ajuda ai pls 

Link para o post
Compartilhar em outros sites

Não consegui fazer teleportar randomicamente, mas vc poderia fazer com que o evento começasse automatico de 3 em 3 horas?

m9r2.png

            Acesse já e seja o domine seu póprio destino !

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por xWhiteWolf
      Fala galera, hoje vim trazer o projeto pronto do Magnus Challenger pra vocês instalarem no servidor de vocês!   

      Pra quem não conhece é um sistema de Tasks baseado no Zezenia onde você pode escolher entre tasks de matar monstros ou de coletar certos items para o npc Magnus, um guerreiro famoso da cidade que está atolado de tarefas e precisa da sua ajuda!

      Peguei os aspectos que eu julguei serem os principais do modelo do Zezenia e editei com algumas coisas que eu achei que ficariam melhores.
      Quem quiser pode ver um vídeo comentado de como o sistema funciona:




      Dito isso vou ensinar vocês como instalar isso no server:
      Pra começar vá em data\creaturescripts\scripts e procure login.lua, agora vá até o final do arquivo e antes do último return true coloque essas linhas abaixo

      ainda em creaturescripts procure creaturescripts.xml e adicione essa linha junto com as outras que já estão lá (seguindo o padrão)
      <!-- TASK SYSTEM --> <event type="kill" name="tasksystem" script="tasksystem.lua"/> Agora crie um arquivo em creaturescripts\scripts com o nome de tasksystem.lua e adicione o seguinte à ele:




      Terminada a parte da contagem de kill vamos ao NPC em si.
      Crie um arquivo chamado Magnus.xml em data\npc e coloque isso dentro dele:




      Agora em data\npc\scripts crie um arquivo chamado zezeniaa.lua e adicione esse conteúdo dentro do arquivo:





      ~~~~~~~~~~~~~~~~ FEITO ISSO ESTÁ TERMINADO ~~~~~~~~~~~~~~~~~~

      Agora aprendendo a configurar:
       
      No tasksystem vc pode editar isso daqui:
      Eu fiz um sistema onde se vc estiver em party com alguém e a pessoa matar os bixos conta como se você tivesse matado; Assim incentiva o pessoal a ir numa cave de Dragon e ao invés de matar quem está lá pra ficar sozinho na cave, eles vão chamar party pra fazerem a task juntos.. assim fazer amigos fica mais fácil e com maiores laços é maior a chance do povo não abandonar o seu server.

      Apenas digite "true" ou "false" pra ativar/desativar esse sistema e em baixo temos a distancia máxima pro monstro estar do cara que está fazendo a task pra contar o kill. Se a distancia entre o monstro e a pessoa for maior que 7 não vai contar pra ele a kill.


      No zezeniaa.lua as coisas que dão pra configurar são maiores mas são igualmente simples:
      Toda vez que vc pedir uma task short (curta) vc vai ter de 100 a 400 monstros pra matar, ele gera um número de 0 a 6 e multiplica por 5 e soma com os 100 iniciais.. o mesmo vale pra todos os outros valores.

      levelcollect é o level mínimo pra fazer tasks do tipo collect.
      time é o tempo em segundos que você vai ficar sem poder falar com o npc caso desista de alguma task, o padrão é 8 * 60 * 60 (8 horas)
      bonus é por quanto vai multiplicar caso vc permita que o npc escolha aleatoriamente entre todas as opções.. o padrão é 20% de bonus (1.2)
      multiplicador é uma coisa que eu adicionei pra ficar mais fácil mexer na fórmula sem cometer cagadas, se vc tá ganhando 10% de exp e quer ganhar 80% é só colocar 8 no multiplicador.

       
      Isso daqui é o banco de dados principal do sistema de kill, toda vez que vc escolher uma task do tipo fácil, médio, dificil ele vai acessar essas tabelas contendo o nome das criaturas.. vc pode facilmente adicionar novos nomes, o npc já está programado pra lidar com isso, apenas siga o padrão e mantenha sempre o último sem vírgula!

      Ex: adicionando Morgaroth na tabela de hard
      local hard = { [1] = "Giant Spider", [2] = "Dragon Lord", [3] = "Grim Reaper", [4] = "Demon", [5] = "Crystal Spider", [6] = "Demon Skeleton", [7] = "Juggernaut", [8] = "Destroyer", [9] = "Hand of Cursed Fate", [10] = "Morgaroth" } atente-se também pra não repetir o número no index.. se o anterior era [9] use [10].

      O restante das tabelas são separadas para o banco de dados das tasks de collect:
       
      segue a mesma lógica da de kill só que aqui você tem o id dos itens que serão usados... aquela count não tem nada a ver com o item pois ele vai gerar tanto o item aleatoriamente quanto à count;
      Ex: 
      [1] = {id = 5880, count = 20}, -- iron ore isso não significa que se cair iron ore (id 5880) irá cair sempre 20.. até porque eu poderia escolher uma task long e easy e pegar a task de trazer até 50 iron ores, apenas tente manter os padrões que são os intervalos definidos.
      No easy ele varia de 10 a 20, no medium ele varia de 20 a 35 e no hard de 40 a 50.



      Espero que vocês tenham curtido, é um sistema grande mas bem simples de se mexer... se tiverem quaisquer problemas podem comentar aqui. Deu trabalho fazer isso então se você gostou deixe o seu comentário aí e o seu "Gostei" que vai me incentivar a trazer mais coisas desse tipo pra cá. Abraços do lobo.


      PS: Pra sumonar o npc digite com o GOD: /n Magnus ou coloque ele pelo map editor.



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo