CMD:alefoglal(playerid){new nearestvehicle, engine, lights, alarm, doors, bonnet, boot, objective;nearestvehicle = NearestCar(playerid);Uzenet(playerid,-1,\"%d %d\",nearestvehicle,MAX_VEHICLES);if(nearestvehicle == -2) return Uzenet(playerid,-1,\"(( Több jármű is van a közeledben! ))\");else if(nearestvehicle == -1) return Uzenet(playerid,-1,\"(( Nincs a közeledben jármű! ))\");else{GetVehicleParamsEx(nearestvehicle, engine, lights, alarm, doors, bonnet, boot, objective);PutPlayerInVehicle(playerid, nearestvehicle, 0);SetVehicleParamsEx(nearestvehicle, 1, lights, alarm, doors, bonnet, boot, objective); } return 1;}
NearestCar(playerid){new Float:Pos[3],eredmeny,mennyinel,vegeredmeny;for(new carid = 1; carid < MAX_VEHICLES+1; carid++){GetVehiclePos(carid,Pos[0],Pos[1],Pos[2]);if(IsPlayerInRangeOfPoint(playerid, 5,Pos[0],Pos[1],Pos[2])){ eredmeny = carid; mennyinel ++;}}if(eredmeny != 0){if(mennyinel == 1){ vegeredmeny = eredmeny;}else{ vegeredmeny = -2;}}else{vegeredmeny = -1;}return vegeredmeny;}
#include <a_samp>new veh[3];public OnFilterScriptInit(){// 1: Létrehozok 3 járművetveh[0] = CreateVehicle(560,10,20,30,40,50,60,0,0);veh[1] = CreateVehicle(561,10,20,30,40,50,60,0,0);veh[2] = CreateVehicle(562,10,20,30,40,50,60,0,0);// 2: Törlöm a középső járművetDestroyVehicle(veh[1]);// 3: kiírom a pozíciótnew Float:Pos[3];for(new i = 1; i <= 4; i++){ GetVehiclePos(i,Pos[0],Pos[1],Pos[2]); printf(\"[%d. jármű, model: %d] %.4f,%.4f,%.4f\",i,GetVehicleModel(i),Pos[0],Pos[1],Pos[2]);}return 1;}public OnFilterScriptExit(){ for(new i = 1; i < 4; i++) {if(GetVehicleModel(i)) { DestroyVehicle(i); } }return 1;}
[1. jármű, model: 560] 10.0000,20.0000,30.0000[2. jármű, model: 0] 10.0000,20.0000,30.0000[3. jármű, model: 562] 10.0000,20.0000,30.0000[4. jármű, model: 0] 10.0000,20.0000,30.0000[/quote]figyeld meg: 2. és 4. jármű nem létezik, mert NINCS MODEL ID-ja! (2. jármű amit töröltem a 2. lépésnél)de mégis van pozíció...igen mert a Pos tömböt a cikluson kívül hoztam létre és ha nem tudja felül írni a GetVehiclePos függvény akkor az előző adat marad benne...ezért kellene ellenőrizni, hogy létezik e a jármű if(GetVehicleModel(i))
if(GetVehicleModel(i))
if(IsValidVehicle(i))
native IsValidVehicle(playerid);NearestCar(playerid){new Float:Pos[3],eredmeny,mennyinel,vegeredmeny;for(new carid = 1; carid < MAX_VEHICLES; carid++){ if(!IsValidVehicle(carid)) continue;GetVehiclePos(carid,Pos[0],Pos[1],Pos[2]);if(IsPlayerInRangeOfPoint(playerid, 5,Pos[0],Pos[1],Pos[2])){ eredmeny = carid; mennyinel ++;}}if(eredmeny != 0){if(mennyinel == 1){ vegeredmeny = eredmeny;}else{ vegeredmeny = -2;}}else{vegeredmeny = -1;}return vegeredmeny;}