public OnPlayerEnterDynamicRaceCP(playerid,checkpointid)
{
if(checkpointid == cp[0])
{
cp[1] = CreateDynamicRaceCP(0,258.1696,2502.3184,16.0474,-78.5963,2498.3335,16.0418,10,200, .streamdistance = 500);
DestroyDynamicRaceCP(cp[0]);
}
else if(checkpointid == cp[1])
{
cp[2] = CreateDynamicRaceCP(1,-78.5963,2498.3335,16.0418,-78.5963,2498.3335,16.0418,10,200, .streamdistance = 500);
DestroyDynamicRaceCP(cp[1]);
}
else if(checkpointid == cp[2]) //This one doesn't work. I didn't receive "win" message and cp[2] was not destroyed.
{
SendClientMessage(playerid,-1,"win");
DestroyDynamicRaceCP(cp[2]);
SetPlayerVirtualWorld(playerid,0);
return 1;
}
return 1;
}
How about using just 'else' on the last line (since it doesn't have any other choice) instead of 'else if'? Or using switch statements?
|
switch (checkpointid)
{
case cp[0]:
{
cp[1] = CreateDynamicRaceCP(0,258.1696,2502.3184,16.0474,-78.5963,2498.3335,16.0418,10,200, .streamdistance = 500);
DestroyDynamicRaceCP(cp[0]);
}
#include <a_samp>
#include <streamer>
new cp[3];
public OnPlayerEnterDynamicRaceCP(playerid, checkpointid)
{
for(new i = 0; i < 3; i++)
{
if(checkpointid == cp[i])
{
switch(i)
{
case 0:
{
DestroyDynamicRaceCP(cp[0]);
cp[1] = CreateDynamicRaceCP(0,258.1696,2502.3184,16.0474,-78.5963,2498.3335,16.0418,10,200, .streamdistance = 500);
}
case 1:
{
DestroyDynamicRaceCP(cp[1]);
cp[2] = CreateDynamicRaceCP(1,-78.5963,2498.3335,16.0418,-78.5963,2498.3335,16.0418,10,200, .streamdistance = 500);
}
case 2:
{
SendClientMessage(playerid, -1, "win");
DestroyDynamicRaceCP(cp[2]);
SetPlayerVirtualWorld(playerid,0);
}
}
}
}
return true;
}