22.05.2014, 09:37
pawn Код:
forward checkpointUpdate();
public checkpointUpdate()
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(!IsPlayerConnected(i)) continue;
if(!pInfo[i][pSpawn]) continue;
new j = GetClosestCheckpoint(i);
if(j)
{
if(pInfo[i][pCheckpoint] != j)
{
pInfo[i][pCheckpoint] = j;
SetPlayerCheckpoint(i, HouseInfo[j][h_cpx], HouseInfo[j][h_cpy], HouseInfo[j][h_cpz], HouseInfo[j][h_cpsize]);
//format(string, sizeof(string), "Checkpoint %d",j);
//SendClientMessage(i, COLOR_YELLOW, string);
}
}
else
{
if(pInfo[i][pCheckpoint])
{
pInfo[i][pCheckpoint] = 0;
DisablePlayerCheckpoint(i);
}
}
}
return 1;
}
stock GetClosestCheckpoint(playerid)
{
new Float:tmpdis, Float:curdis = 9000.0, cpid = 0;
for(new i = 0; i < sizeof(HouseInfo); i++)
{
GetDistanceToPoint(playerid, HouseInfo[i][h_cpx], HouseInfo[i][h_cpy], HouseInfo[i][h_cpz], tmpdis);
if(tmpdis < HouseInfo[i][h_cp_radius])
{
if(tmpdis < curdis)
{
curdis = tmpdis;
cpid = i;
}
}
}
return cpid;
}