Jump to content
  • 0

Como Fazer Loop Para Checar Quais Players Têm Storage X.


iansinho

Question

Olá novamente xtibianos :D

 

Bom, eu queria saber como que faz um loop para fazer uma certa ação com os players que possuem certo storage.

 

Na linguagem .lua eu nunca vi, mas na linguagem pawn é assim que se faz:

for(new i = 0; i < PlayersOnline); ++i )
{
   if (PlayerStorage(i) == 12345)
   {
    FazerAcão(i)
   }
}

 

Obrigado desde já.

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

depende do que você quer fazer, você diz em todos os players online?, em certa position? ou checar a storage individualmente de cada player?

Link to comment
Share on other sites

  • 0

Como o vodkart depende de qual maneira vai verificar a storage se e de o player ou se uma verificaçao a todos os players.

Todos os dois sao possiveis de modo que a verificaçao de todos os players se nao estivessem online teria que fazer uma verificaçao na db.

Edited by caotic
Link to comment
Share on other sites

  • 0

Entendi a pergunta.

É para fazer o seguinte, por exemplo:

Eu quero que todos os jogadores ONLINE que têm a storage 12345, ganhem 10kk.

Neste exemplo eu poderia colocar esta função no globalevents, para dar 10kk a quem estivesse online e com a storage 12345, a cada 1 hora.

Entenderam?

Link to comment
Share on other sites

  • 0
function onThink(interval, lastExecution)
local players = {}
local storage,items = 12345, {2160, 100}
for _, pid in pairs (getPlayersOnline()) do
if getPlayerStorageValue(pid, storage) >= 1 then
table.insert(players, pid)
end
end
	if #players > 0 then
for i = 1, #players do
doPlayerAddItem(players[i], items[1], items[2])
end
	end
return TRUE
end

Edited by Vodkart
Link to comment
Share on other sites

  • 0

A logica é a mesma que na outra linguagem, sóh irá mudar as funções:

local online = getPlayersOnline()											-- retorna todos os players online
for i=1, #online do						    -- abre uma estrutura de repetição que vai de 1 até a última posição do vetor online.
if getPlayerStorageValue(online[i], 12345) > 0 then		   -- verifica se o player da posição i do vetor tem a determinada storage.
	doPlayerAddMoney(online[i], 1000000)						 -- adiciona 10kk ao player da posição i do vetor.
end												    -- finaliza o if
end																						 -- finaliza o for

 

Lista de função que pode te ajudar nos seus códigos: http://www.xtibia.co...sta-de-funcoes/

 

-edit

Tava escrevendo e nem tinha visto que o Vod postou. Agora que ja postei deixa aew, quem sabe ajuda ele a entender melhor. happy.png

Edited by Jhon992
Link to comment
Share on other sites

  • 0

Vodkart muito obrigado, mas eu não entendi nada de cada linha que você postou ali... A do Jhon922 está explicada mas está tão diferente da função que você pois.

Obrigado também Jhon922 :D

 

Mas pera ai, eu posso usar tanto a do Jhon922 quanto a do Vodkart?

Link to comment
Share on other sites

  • 0

bom a diferença do meu é que eu coloquei os jogadores que tem a storage numa tabela, porque imagina se não tiver ninguém online com essa storage?

iria dar erro no distro, enão o meu faz a checagem se tem algum online e executa o script, já o do jhon funciona perfeitamente também, mas tem esse possível bug que eu te disse.

Link to comment
Share on other sites

  • 0

Ah entendi. Mas neste caso esse bug não vai ser possível, porque aquilo foi só um exemplo rsrs.

Era pra fazer um sistema que o jogador escolhe se vai entrar no evento... se ele escolher sim (!participar) vai setar a storage nele, ai eu vou criar um comando pra fazer broadcast só pra eles entendeu? Mas as broadcasts são automaticas, e elas só vão ser ativadas quando pelo menos 1 jogador digitar !sim... Entendeu porque esse possível bug não será possível? rsrs.

 

Bom então, duvida resolvida, obrigado aos 2... Como terei que escolher apenas 1 pra dar REP+, eu vou escolher o Vodkart, mas Jhon922, relaxa que eu fico te devendo uma ;)

Link to comment
Share on other sites

  • 0

Ah entendi. Mas neste caso esse bug não vai ser possível, porque aquilo foi só um exemplo rsrs.

Era pra fazer um sistema que o jogador escolhe se vai entrar no evento... se ele escolher sim (!participar) vai setar a storage nele, ai eu vou criar um comando pra fazer broadcast só pra eles entendeu? Mas as broadcasts são automaticas, e elas só vão ser ativadas quando pelo menos 1 jogador digitar !sim... Entendeu porque esse possível bug não será possível? rsrs.

 

Bom então, duvida resolvida, obrigado aos 2... Como terei que escolher apenas 1 pra dar REP+, eu vou escolher o Vodkart, mas Jhon922, relaxa que eu fico te devendo uma ;)

 

ai já é outro script, é talkactions, globalevents é uma coisa, outra forma de fazer, talkactions é outra.

Link to comment
Share on other sites

  • 0

Ah entendi. Mas neste caso esse bug não vai ser possível, porque aquilo foi só um exemplo rsrs.

Era pra fazer um sistema que o jogador escolhe se vai entrar no evento... se ele escolher sim (!participar) vai setar a storage nele, ai eu vou criar um comando pra fazer broadcast só pra eles entendeu? Mas as broadcasts são automaticas, e elas só vão ser ativadas quando pelo menos 1 jogador digitar !sim... Entendeu porque esse possível bug não será possível? rsrs.

 

Bom então, duvida resolvida, obrigado aos 2... Como terei que escolher apenas 1 pra dar REP+, eu vou escolher o Vodkart, mas Jhon922, relaxa que eu fico te devendo uma ;)

 

ai já é outro script, é talkactions, globalevents é uma coisa, outra forma de fazer, talkactions é outra.

Mas pra fazer o loop não é a mesma coisa? Você tá falando que é diferente no sentido de que no globalevents pode ocorrer o bug né?

Link to comment
Share on other sites

  • 0

o loop é o mesmo sim, estou dizendo que o script para dar uma premio a cada uma hr é uma coisa, e outro de setar a storage pelo talk é outra coisa, envolve mais parâmetros....

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...