BO

Dúvidas no meus script

Por Bodak Reborn, 26 de abr. de 2016 em Scripts

orientação
tfs 1.0
torneio1x1
dúvidas
meus
script
17
3.2k
26 de abril de 2016 às 13:34

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!

 

 

PoccnnP
26 de abril de 2016 às 17:44
Melhor resposta

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.

 

27 de abril de 2016 às 01:21

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

PoccnnP
27 de abril de 2016 às 09:11

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.

 

27 de abril de 2016 às 09:52

Ótimo, acho que já é o suficiente para o script, muito obrigado, @Poccnn!

lSaintyL
27 de abril de 2016 às 11:31

Bodak noob, sua mãe me comeu, aquela piranha me encoxou gostoso.

 

Dubstep aqui, vlwflw

StyloMaldosoS
27 de abril de 2016 às 14:17

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..

RigByR
27 de abril de 2016 às 14:39

É 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 Abril 27 por RigBy

27 de abril de 2016 às 14:39
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. =):

27 de abril de 2016 às 14:50
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 Abril 27 por Bodak Reborn

RigByR
27 de abril de 2016 às 14:56

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 Abril 27 por RigBy

27 de abril de 2016 às 15:06
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

RigByR
27 de abril de 2016 às 15:07
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:

27 de abril de 2016 às 15:09

Okay, vou dar uma olhada na wiki, valew bro! :laugh:

PoccnnP
27 de abril de 2016 às 15:17

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...