Ir para conteúdo
  • 0

Bodak Reborn

Pergunta

Hey,

 

então, eu estou tentando aprender lua e passei de teoria para scripts básicos/fuçar em scripts que encontro aqui no fórum.

Eu pretendo fazer um script para torneio 1x1 semanal para pokémon, já tenho o script basicamente montado na minha cabeça, só tem duas coisas que eu não faço ideia de como programar.

 

Primeira:

Vai ter um NPC para inscrição para o torneio, esse NPC vai te dar um storage caso você pague a taxa de inscrição e tal. Gostaria de saber como faço para puxar apenas dois players com esse storage e se estiverem na sala de espera.

Exemplo:

Spoiler
if getPlayerStorageValue (cid, 180000) == 1 then	if getPlayersInArea(cid,torneio.saladeespera) >= 2 then		--Algum jeito para sortear apenas DOIS players que estão na sala de espera para duelar, usa-se math.random? Ou ainda, como faço para contar quantos players tem X storage?	endend

 

 

Segunda:

Como eu faço para depois de 1 minuto, o duelo começar?

E caso algum deles não coloque algum pokémon até 59 segundos, este ser desclassificado e ser teleportado para fora da arena?

 

Agradeço!

 

 

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Crie uma tabela global e insira os nomes dos jogadores dentro dela.

Use math.random para sorteia os players para o duelo.

Para resolver o problema de tempo, crie uma função e usa a função addEvent (function-name, tempo, parâmetros da função) para chamar essa função com um tempo.

Essa função pode "puxar" dois players para a batalha e também verificar se após tal tempo se os pokemons foram sumonados.

 

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa pela demora, @Poccnn, não tinha visto a notificação.

Agradeço por responder!

Só mais uma coisa, como eu iria inserir o nome dos participantes nessa tabela? Há alguma função que pega os nomes dos jogadores com X storage?

Sou meio que iniciante, desculpe pela perguntas bobas uahauha

Link para o comentário
Compartilhar em outros sites

  • 0

GetPlayerStorageValue (cid)

 

Essa função pega a storage do player. 

Existe ainda a função getPlayersOnline () que retorna uma tabela com o cid de cada player online.

 

Faz dessa forma:

Citar

Table_combat = {}

 

E insere os nomes dos players nela:

Citar

table.insert (Table_combat, getCreatureName (cid))

 

Essa linha de comando você coloca ela dentro de um loop que vai varrer a tabela retornada pela função getPlayersOnline ().

Use uma condição que no seu caso é verificar a storage do player para que ela possa inseri na tabela o nome do player.

 

Citar

if getPlayerStorageValue (cid) == o valor necessário then

Adicione na tabela o nome do player.

 

Link para o comentário
Compartilhar em outros sites

  • 0

PS: se tu tiver pensando em fazer um torneio igual ao da pxg/svke vo te dá umas fica:

Na parte do NPC, vc cria só a parte de inscrição,

No global events você chamaria a fuc que startaria o torneio, (essa função de starta o evento, e o resto do script do torneio ficaria na lib)

 

Não tem necessidade o NPC faze o trampo de puxa os player pra arena..

Link para o comentário
Compartilhar em outros sites

  • 0

É bom passa de relance no fórum e ver que tem pessoas ainda com gosto de aprender e outras com gosto de ensinar

para não acusarem meu comentário de flood, ai um rascunho:

 

não lembro como funciona o sistema de quem vem primeiro no looping, mas se faz oque o poccnn falo pra ter uma variação maior

    player = 0	    for _, pid in pairs(getPlayersOnline()) do	        if player =< 2 then	            if getPlayerStorageValue(cid, STORAGE_DOS_PLAYER) == 1 then	                doTeleportThing(cid, LOCAL)	                player = player + 1	            end	        end	    end	

 

ali ta escrito: if player =< 2 then, acho que o site do xt ainda ta com alguns bug :thinking:

 

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

  • 0
16 minutos atrás, StyloMaldoso disse:

PS: se tu tiver pensando em fazer um torneio igual ao da pxg/svke vo te dá umas fica:

Na parte do NPC, vc cria só a parte de inscrição,

No global events você chamaria a fuc que startaria o torneio, (essa função de starta o evento, e o resto do script do torneio ficaria na lib)

 

Não tem necessidade o NPC faze o trampo de puxa os player pra arena..

Eu comentei sobre o NPC apenas para explicar como o jogador ganharia o storage, se eu teleportasse o player para a arena depois de ele falar com o npc, acho que daria meio errado AISDHAIUSD

Sim, pretendo fazer um torneio estilo ao do svke,

obrigado pelas dicas. =):

Link para o comentário
Compartilhar em outros sites

  • 0
11 minutos atrás, RigBy disse:

É bom passa de relance no fórum e ver que tem pessoas ainda com gosto de aprender e outras com gosto de ensinar

para não acusarem meu comentário de flood, ai um rascunho:

 

não lembro como funciona o sistema de quem vem primeiro no looping, mas se faz oque o poccnn falo pra ter uma variação maior

    player = 0	    for _, pid in pairs(getPlayersOnline()) do	        if player =< 2 then	            if getPlayerStorageValue(cid, STORAGE_DOS_PLAYER) == 1 then	                doTeleportThing(cid, LOCAL)	                player = player + 1	            end	        end	    end	

 

ali ta escrito: if player =< 2 then, acho que o site do xt ainda ta com alguns bug :thinking:

 

Obrigado, @RigBy!

Tenho uma dúvida, pra que serve o "pid in pairs" exatamente?

Às vezes quando eu travo em algum código, pesquiso para saber o jeito certo de fazer e me deparo com esse "in pairs", só que eu não sei a funcionalidade dele =\

E outra, a variável player não deveria ser "= 1" invés de "= 0"? Ou então "if player < 2 then"?

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

  • 0

burrei ali é pra fica assim = esqueci de coloca o pid no lugar do cid, infelizmente não da pra eu edita :thinking:

 

possa ta falando besteira porque ja tem muito tempo que não mecho com isso

 

for... while ... repeat são lopping, eles vão fica repitindo oque você quer até quando você quiser que termine

 

exemplo:

for i = 1, 3 do

     print(i)

end

 

ele vai printa 1, 2 ,3

 

"pid", é apenas um novo paramento que você ta criando, do mesmo jeito que o "i" no exemplo que eu dei ali em cima, você pode usar qualquer palavra.

 

pairs e ipairs são usado geralmente em tabelas ( não sei se é usada em outra coisa, eu uso apenas nisso) que é a forma que ele vai printa a tabela pra você

ipairs = segue a tabela em ordem (se eu não me engano, string não funciona aqui), exemplo : 1, 2, 3, 4 

pairs = segue a tabela na ordem que ela foi definida exemplo : 2, 1, 4, 3

 

Lembre-se posso ta falando besteira, pois ja tem muito tempo que eu não mexo nisso, mas qualquer erro meu pode avisa.

leia esse site:

http://lua-users.org/wiki/ForTutorial

 

ou procure tutorias aqui, tem vários tutorias.

 

 

 

 

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

  • 0
9 minutos atrás, RigBy disse:

burrei ali é pra fica assim = esqueci de coloca o pid no lugar do cid, infelizmente não da pra eu edita :thinking:

 

possa ta falando besteira porque ja tem muito tempo que não mecho com isso

 

for... while ... repeat são lopping, eles vão fica repitindo oque você quer até quando você quiser que termine

 

exemplo:

for i = 1, 3 do

     print(i)

end

 

ele vai printa 1, 2 ,3

 

ainda to escrevendo, so que bugo, to editando

 

 

 

Sim, sim, loop eu sei o que é, to no 5º semestre de PHP. :laugh:

A questão é o "in pairs" mesmo

Link para o comentário
Compartilhar em outros sites

  • 0
Agora, Bodak Reborn disse:

Sim, sim, loop eu sei o que é, to no 5º semestre de PHP. :laugh:

A questão é o "in pairs" mesmo

 

editei lá em cima, sou a pior pessoa pra ensina alguém :thinking:

Link para o comentário
Compartilhar em outros sites

  • 0

Pairs é um iterator de lua.

 

in = em (ingles)

 

Quando se diz: "in" quer dizer "em".

 

O "pid" no loop faz a função de variável para pegar o que o iterator (pairs) envia de volta.

Você poderia usar qualquer nome do lugar de pid como cid, outronome, etc...

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...