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.
Por iansinho, 24 de mai. de 2012 em Scripts
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: 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.
Editado Maio 24 por caotic
info
Grupo: Campones
Registrado: 17/05/08
Posts: 21
Reputação: 0
Char no Tibia: 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
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: 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
Editado Maio 24 por Vodkart
info
Grupo: Conde
Registrado: 30/06/11
Posts: 631
Reputação: +371
Char no Tibia: 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. ![]()
Editado Maio 24 por Jhon992
info
Grupo: Campones
Registrado: 17/05/08
Posts: 21
Reputação: 0
Char no Tibia: 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
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: 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
Grupo: Campones
Registrado: 17/05/08
Posts: 21
Reputação: 0
Char no Tibia: 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
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: 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
Grupo: Campones
Registrado: 17/05/08
Posts: 21
Reputação: 0
Char no Tibia: 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
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: 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
Grupo: Campones
Registrado: 17/05/08
Posts: 21
Reputação: 0
Char no Tibia: 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á.