Egy kisebb észrevétel:
 
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid)
 
Ez akkor fog teljesülni, ha az 1-es jármûben ülsz (de még az se biztos). A GetPlayerVehicleID 0-ával tér vissza, ha nem ül, és nagyobb számokkal, ha valamelyikben ül.
 
És, mi a probléma?
Az if true értékkel tér vissza, ha 0-nál nagyobb érték szerepel a feltételben.
Edit:
Ha nem hiszed, akkor teszteld le, íme: 
   new
vehicleid;
for(new i; i < 100; i++)
{
vehicleid = random(4);
if(vehicleid)
{
   printf(\"TESZT: %d\", vehicleid);
}
}