[Ajuda] Travamento com loop
#2

Quote:
Originally Posted by Ley
Посмотреть сообщение
Boa noite!

Estou com um problema em um comando que estou a desenvolver para veнculos...
O que ocorre й que a define tem um mбximo de 250 veнculos, com isso, o loop busca em todas elas, assim, causando um delay durante essa procura.

Minha dъvida й se tem como amenizar isto, pois fica entre 10 segundos travado enquanto estб fazendo a verificaзгo.

Код:
#define MAX_VEICULOS 250

for(new i; i < MAX_VEICULOS; i++)
{
         format(fCarro, sizeof(fCarro), "Veiculos/%i.ini", i);
   	 if(DOF2_GetBool(fCarro, "Trancado") == true)
	 {
	     SCM(playerid, -1, "Macarena");
	 }
}
Grato desde jб!
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.
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: 3 Guest(s)