depende do que você quer fazer, você diz em todos os players online?, em certa position? ou checar a storage individualmente de cada player?
Como Fazer Loop Para Checar Quais Players Têm Storage X.
By iansinho, 24 de mai. de 2012 in Scripts
info
Group: Herói
Joined: 20/05/10
Posts: 3.4k
Reputation: +1.5k
Gender: Masculino

info
Group: Infante
Joined: 04/03/11
Posts: 1.6k
Reputation: +393
Tibia Character: No Have

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 Maio 24 by caotic
info
Group: Campones
Joined: 17/05/08
Posts: 21
Reputation: 0
Tibia Character: Ian Ramos

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?
info
Group: Herói
Joined: 20/05/10
Posts: 3.4k
Reputation: +1.5k
Gender: Masculino

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 Maio 24 by Vodkart
info
Group: Conde
Joined: 30/06/11
Posts: 631
Reputation: +371
Tibia Character: Warrior of Mort

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. ![]()
Edited Maio 24 by Jhon992
info
Group: Campones
Joined: 17/05/08
Posts: 21
Reputation: 0
Tibia Character: Ian Ramos

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 ![]()
Mas pera ai, eu posso usar tanto a do Jhon922 quanto a do Vodkart?
info
Group: Herói
Joined: 20/05/10
Posts: 3.4k
Reputation: +1.5k
Gender: Masculino

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.
info
Group: Campones
Joined: 17/05/08
Posts: 21
Reputation: 0
Tibia Character: Ian Ramos

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 ![]()
info
Group: Herói
Joined: 20/05/10
Posts: 3.4k
Reputation: +1.5k
Gender: Masculino

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.
info
Group: Campones
Joined: 17/05/08
Posts: 21
Reputation: 0
Tibia Character: Ian Ramos

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é?
info
Group: Herói
Joined: 20/05/10
Posts: 3.4k
Reputation: +1.5k
Gender: Masculino

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




info
Group: Campones
Joined: 17/05/08
Posts: 21
Reputation: 0
Tibia Character: Ian Ramos
Olá novamente xtibianos
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á.