[Ajuda] Public
#1

Estou com uma dъvida que eu nгo imaginava estar, como eu inicio um timer quando a gm ligar com o parвmetro playerid? sempre da erro pois na public ongamemodeinit n tem playerid
Reply
#2

Quote:
Originally Posted by Scorpion659
Посмотреть сообщение
Estou com uma dъvida que eu nгo imaginava estar, como eu inicio um timer quando a gm ligar com o parвmetro playerid? sempre da erro pois na public ongamemodeinit n tem playerid
coloque na public OnPlayerConnect oras.
Reply
#3

Quote:
Originally Posted by SammyJ
Посмотреть сообщение
coloque na public OnPlayerConnect oras.
olha nгo era o que eu queria mas vc me deu uma ideia boa, vou por pro primeiro player que entrar ligar o tiver e setar uma variavel bool como true, se tiver true ele nгo executa mais, vlw pela dica
Reply
#4

Recomendo um loop nessa funзгo sem parвmetro em vez de criar um timer para cada jogador.
Код:
public OnGameModeInit()
{
	SetTimer("Function", 1000, true); //executar a funзгo "Function" a cada 1000ms (1 segundo) repetindo sempre (repeating = true)
	return 1;
}

forward Function();
public Function()
{
	for(new i = 0; i < MAX_PLAYERS; i++) //percorrer do ID 0 ao mбximo de jogadores
	{
	    if(IsPlayerConnected(i))
	    {
	        //i й o novo playerid
	    }
	}
	return 1;
}
Reply
#5

Quote:
Originally Posted by RodrigoMSR
Посмотреть сообщение
Recomendo um loop nessa funзгo sem parвmetro em vez de criar um timer para cada jogador.
Код:
public OnGameModeInit()
{
	SetTimer("Function", 1000, true); //executar a funзгo "Function" a cada 1000ms (1 segundo) repetindo sempre (repeating = true)
	return 1;
}

forward Function();
public Function()
{
	for(new i = 0; i < MAX_PLAYERS; i++) //percorrer do ID 0 ao mбximo de jogadores
	{
	    if(IsPlayerConnected(i))
	    {
	        //i й o novo playerid
	    }
	}
	return 1;
}
sim foi oque eu fiz olha:
PHP код:

//inicio da gm
SetTimer("timerserver"1000true);
//end
public timerserver()
{
    
relogioserver();
    
infocarro();
    
UpdateActors();
    return 
1;
}
stock relogioserver()
{
    new 
time[6], data[32], hora[32];
    
gettime(time[0], time[1], time[2]);
    
getdate(time[3], time[4], time[5]);
    
format(horasizeof(hora), "%02d:%02d"time[0], time[1]);
    
format(datasizeof(data), "%02d/%02d/%d"time[5], time[4], time[3]);
    
TextDrawSetString(Textdraw24hora);
    
TextDrawSetString(Textdraw25data);
    return 
1;
}
//forward infocarro(playerid);
stock infocarro()
{
    new 
string[32], velocidade[32], velmodel;
    new 
Float:xPos[3];
    for(new 
0MAX_PLAYERSi++){
        if(
IsPlayerInAnyVehicle(i)){
            if(
playernoveh[i] != 1){
                
PlayerTextDrawShow(iTextdraw26);
                
PlayerTextDrawShow(iTextdraw27);
                
PlayerTextDrawShow(iTextdraw28);
                
PlayerTextDrawShow(iTextdraw29);
                
PlayerTextDrawShow(iTextdraw30);
                
PlayerTextDrawShow(iTextdraw31);
                
playernoveh[i] = 1;
            }
            
model GetVehicleModel(GetPlayerVehicleID(i));
            
GetVehicleVelocity(GetPlayerVehicleID(i), xPos[0], xPos[1], xPos[2]);
            
vel floatround(floatsqroot(xPos[0] * xPos[0] + xPos[1] * xPos[1] + xPos[2] * xPos[2]) * 170.00);
            
format(stringsizeof(string), "%d"model);
            
format(velocidadesizeof(velocidade), "%d Km/H"vel);
            
PlayerTextDrawSetString(iTextdraw29string);
            
PlayerTextDrawSetString(iTextdraw31velocidade);
        }else{
            if(
playernoveh[i] == ){
            
PlayerTextDrawHide(iTextdraw26);
            
PlayerTextDrawHide(iTextdraw27);
            
PlayerTextDrawHide(iTextdraw28);
            
PlayerTextDrawHide(iTextdraw29);
            
PlayerTextDrawHide(iTextdraw30);
            
PlayerTextDrawHide(iTextdraw31);
            
playernoveh[i] = 0;}
        }
    }
    return 
1;

mas uma pergunta, se comeзar a por muita coisa pra atualizar a cada segundo, serб que a velocidade de leitura do cуdigo vai ser rбpida pra ler um for? se ler mt cуdigo dentro do for pra cada jogador?

digo, qual a velocidade de leitura que o pc lк a gm? e se ele nгo der tempo de ler tudo em um segundo e jб acumular com outros segundos? existe esse perigo?
Reply
#6

A funзгo й chamada pelo timer a cada tantos milissegundos, o tempo de execuзгo desta sua, em casos extremos, nгo passa de 20ms. Um loop com 100.000.000 de iteraзхes leva 2 segundos para ser concluнdo, entгo um de 100 seria insignificante (demoraria menos de 1ms para ser executado).

Abaixo um exemplo prбtico de um timer que atualiza vбrios minigames e jogadores, veja no chat que quase sempre demora menos de 1ms, mas pode acontecer de demorar atй 10ms: http://imgur.com/zILeMam
Reply
#7

Quote:
Originally Posted by RodrigoMSR
Посмотреть сообщение
A funзгo й chamada pelo timer a cada tantos milissegundos, o tempo de execuзгo desta sua, em casos extremos, nгo passa de 20ms. Um loop com 100.000.000 de iteraзхes leva 2 segundos para ser concluнdo, entгo um de 100 seria insignificante (demoraria menos de 1ms para ser executado).

Abaixo um exemplo prбtico de um timer que atualiza vбrios minigames e jogadores, veja no chat que quase sempre demora menos de 1ms, mas pode acontecer de demorar atй 10ms: http://imgur.com/zILeMam
atah kk й pq me deu esse medo pois ainda tem mtt codigo que vai dentro desse for, ele vai atualizar o tempo vivo de todos os jogadores, assim como localizaзгo, horбrio do server, hud de carro, painel de vida, temperatura, kills entre outros, mas creio que nгo darб problema obg
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)