04.11.2011, 14:44
Eu fiz um sistema de mapicon para o meu sistema de casa, baseado em um do sistema de propiedades da SANDRA, e ele vem causando um lag intenso no meu server, o uso do processador com em mйdia 30 pessoa estб 100% com o sistema, sem o sistema vбria de 20 a 30%
Aqui estб o code
Alguйm poderia me ajuda?
Aqui estб o code
pawn Код:
SetTimer("MapIconStreamer", 1500, 1);
forward MapIconStreamer();
public MapIconStreamer()
{
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
new Float:SmallestDistance = 99999.9;
new CP, Float:OldDistance;
for(new c; c < 95; c++) // tem 94 casas entгo fiz um loop de 95 para nгo dar lag, mas continuou
{
OldDistance = GetDistanceToProperty(i, c);
if(OldDistance < SmallestDistance)
{
SmallestDistance = OldDistance;
CP = c;
}
}
RemovePlayerMapIcon(i, 95);
new casas[128];
format(casas, sizeof(casas), CASAS, CP);
if(dini_Int(casas, "Dono") == 1)
{
SetPlayerMapIcon(i, 95, dini_Float(casas, "X"), dini_Float(casas, "Y"), dini_Float(casas, "Z"), 32, 0);
}
else
{
SetPlayerMapIcon(i, 95, dini_Float(casas, "X"), dini_Float(casas, "Y"), dini_Float(casas, "Z"), 31, 0);
}
}
}
}
forward Float:GetDistanceToProperty(playerid, Property);
public Float:GetDistanceToProperty(playerid, Property)
{
new casas[128];
format(casas, sizeof(casas), CASAS, Property);
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
GetPlayerPos(playerid,x1,y1,z1);
x2 = dini_Float(casas, "X");
y2 = dini_Float(casas, "Y");
z2 = dini_Float(casas, "Z");
return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}