[Ajuda] Loop
#1

Boa tarde,

Criei um timer de verificaзгo dos jogadores que estгo no evento... Ele й executado sempre que o player pega um RaceCheckpoint.

Eu gostaria que ele funcionasse da seguinte maneira:

Pegar o ID de todos os jogadores online, e depois pegasse o ID de todos os jogadores exceto o do playerid (Player que pegou o RaceCheckpoint). Ele estб funcionando normal, exceto para o ID 0, que aparece o prуprio ID e o do outro jogador no evento.

obs: Estou usando SetTimerEx.

Segue a callback do timer:

PHP код:
public VerificarPosicao(playerid){
    
Cont[playerid]++;
    
format(Strsizeof(Str), "Executou o timer: {AA0000}%d"Cont[playerid]);
    
SendClientMessage(playerid, -1Str);
    for(new 
IMAX_PLAYERSI++){
        if(!
IsPlayerConnected(I)) continue;
        
format(Strsizeof(Str), "** Loop ID jogadores no evento: {AA0000}%d"I);
        
SendClientMessage(playerid, -1Str);
        
        for(new 
XIX++){ // Se X for menor que o nє de jogadores no evento, adiciona +1 ao X
            
if(== playerid) continue; // Se X for igual ao ID do player ele ignora
            
format(Strsizeof(Str), "** {FFFFFF}Loop ID jogadores exceto playerid: {AA0000}%d"X);
            
SendClientMessage(playeridRedStr);
        }
        
    }
    return 
1;

Reply
#2

Era isso que queria? eu nгo entendi bem a duvida...

PHP код:
for(new i=0MAX_PLAYERSi++) {
    if ( ! 
IsPlayerConnected(i)) continue; //tem que melhorar essa condiзao para saber se estб no evento ou nao...
    
format(Strsizeof(Str), "** ID de um jogador no evento: {AA0000}%d"i);
    
SendClientMessage(playerid, -1Str);
}
for(new 
i=0MAX_PLAYERSi++) {
    if (
== playerid) continue;
    
format(Strsizeof(Str), "** {FFFFFF}ID do um jogador exceto playerid: {AA0000}%d"i);
    
SendClientMessage(playeridRedStr);

Reply
#3

Quote:
Originally Posted by klap
Посмотреть сообщение
Era isso que queria? eu nгo entendi bem a duvida...

PHP код:
for(new i=0MAX_PLAYERSi++) {
    if ( ! 
IsPlayerConnected(i)) continue; //tem que melhorar essa condiзao para saber se estб no evento ou nao...
    
format(Strsizeof(Str), "** ID de um jogador no evento: {AA0000}%d"i);
    
SendClientMessage(playerid, -1Str);
}
for(new 
i=0MAX_PLAYERSi++) {
    if (
== playerid) continue;
    
format(Strsizeof(Str), "** {FFFFFF}ID do um jogador exceto playerid: {AA0000}%d"i);
    
SendClientMessage(playeridRedStr);

Funcionou!

"//tem que melhorar essa condiзao para saber se estб no evento ou nao..." Eu sei disso, tenho a variбvel booleana se ele estiver no evento ou nгo. Sу nгo coloquei ainda porque estou testando outras coisas.

Grato pelo ajuda... Nгo sei porque fiz uma loop dentro da outra '-' asuhasu

Enfim, +REP!
Reply
#4

de nada '-'
Reply
#5

Para que vocк tб usando dois loops assim? Totalmente desnecessбrio.
PHP код:
for(new i=0MAX_PLAYERSi++) { 
    if ( ! 
IsPlayerConnected(i)) continue; //tem que melhorar essa condiзao para saber se estб no evento ou nao...
    
if(== playerid) continue; //Sу adicionar essa linha neste loop e o segundo torna-se desnecessбrio
    
format(Strsizeof(Str), "** ID de um jogador no evento: {AA0000}%d"i); 
    
SendClientMessage(playerid, -1Str); 

Reply
#6

Quote:
Originally Posted by renatog
Посмотреть сообщение
Para que vocк tб usando dois loops assim? Totalmente desnecessбrio.
PHP код:
for(new i=0MAX_PLAYERSi++) { 
    if ( ! 
IsPlayerConnected(i)) continue; //tem que melhorar essa condiзao para saber se estб no evento ou nao...
    
if(== playerid) continue; //Sу adicionar essa linha neste loop e o segundo torna-se desnecessбrio
    
format(Strsizeof(Str), "** ID de um jogador no evento: {AA0000}%d"i); 
    
SendClientMessage(playerid, -1Str); 

PHP код:
for(new i=0MAX_PLAYERSi++) { 
    if ( ! 
IsPlayerConnected(i)) continue; //tem que melhorar essa condiзao para saber se estб no evento ou nao...
    
format(Strsizeof(Str), "** ID de um jogador no evento: {AA0000}%d"i); 
    
SendClientMessage(playerid, -1Str); 
    if (
== playerid) continue;
    
format(Strsizeof(Str), "** {FFFFFF}ID do um jogador exceto playerid: {AA0000}%d"i); 
    
SendClientMessage(playerid, -1Str); 

para o que ele quer, seria assim...
eu so tentei simplificar ne '-' (para mais fбcil compreensгo, deu para ver que ele nгo й experiente nem lб perto)


PS: "if" nгo й uma funзгo ou um mйtodo, evite juntar o parкnteses ao "if" , faзa "if (" e nao "if(" ...
nгo й que esteja errado fazer junto... mas sгo standards da programaзгo
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)