[Ajuda] Travamento com loop
#3

Quote:
Originally Posted by JohnBlack
Посмотреть сообщение
Toda funзгo causa um Delay, umas com um pequeno intervalo de tempo e outras com um grande intervalo de tempo.
Essa DOF2_GetBool й uma das que causa um bom delay. Para evitar usar ela em um looping (causando a leitura dessa funзгo 250 vezes, o que nгo й muito legal), vocк poderб utilizar uma variбvel onde vai armazenar essa informaзгo.
Por exemplo, toda vez que um veнculo for trancado, vocк pode utilizar:
Код:
vTrancado[vehicleid] = true;
Assim, em vez de utilizar esse seu cуdigo atual, vocк pode utilizar o seguinte:
Код:
for(new i; i <= GetVehiclePoolSize(); i++)
{
   	 if(vTrancado[i])
	 {
	     SCM(playerid, -1, "Macarena");
	 }
}
Espero que tenha entendido o cуdigo
Se hб dъvidas quanto а funзгo GetVehiclePoolSize (https://sampwiki.blast.hk/wiki/GetVehiclePoolSize), basicamente ela retorna o maior ID do veнculo conectado, o que otimiza o cуdigo para que ao invйs de fazer um looping de 250, dos quais alguns IDs de veнculo talvez nem tenha sido criados, o GetVehiclePoolSize vai retornar o ъltimo ID do veнculo conectado.

Outra soluзгo que vocк poderia utilizar (mas que nгo recomendo) seria continuar com aquele seu cуdigo e no inнcio do looping (antes do format), vocк colocaria a condicional
Код:
if(!IsValidVehicle(i)) continue;
Isso faria com que, se o veнculo nгo existisse, ele nгo prosseguiria com o cуdigo e pularia para o prуximo ID de veнculo, dando prosseguimento ao looping.

Caso tenha restado alguma dъvida, envie-me uma MP.
Exato. Independente do sistema de salvamento, o certo й utilizar variбveis para se ter um mecanismo de aзгo mais бgil.

John, sу se esqueceu de um detalhe no seu loop, o id de veнculos inicia em 1, logo, new i = 1.

Alйm do que ele colocou, podes otimizar mais esse cуdigo definindo as strings. Irб diminuir um bom consumo, pois nгo serб necessбrio alocar memуria toda vez que o loop executar o escopo.

PHP код:
#define MAX_VEICULOS 250
#define vehicle_file "Veiculos/%i.ini"
#define key_vehicle_locked "Trancado"
for(new iMAX_VEICULOSi++)
{
         
format(fCarrosizeof(fCarro), vehicle_filei);
        if(
DOF2_GetBool(fCarrokey_vehicle_locked))
     {
         
SCM(playerid, -1"Macarena");
     }

Reply


Messages In This Thread
Travamento com loop - by Ley - 06.03.2018, 00:46
Re: Travamento com loop - by JohnBlack - 06.03.2018, 01:36
Re: Travamento com loop - by Mises - 06.03.2018, 03:11
Re: Travamento com loop - by JohnBlack - 06.03.2018, 03:24
Re: Travamento com loop - by Mises - 06.03.2018, 04:32

Forum Jump:


Users browsing this thread: 1 Guest(s)