Alapból nem kapcsolja rá a V-s autót ugyan úgy azt írja hogy vontató 89 vontatni való 89De ha odaállunk egy frakciós vagy munka jármûvel, nagyon közel a V-s autóhoz és úgy próbáljuk meg megint felcsatolni akkor sikeresen felcsatolja és azt írja vontató 89 vontatni való 159 (a v-s autó) így már tudunk vontatni…….Olyan mintha valamiért a frakciós jármûvet akarná rácsatolni de mégis a V-st teszi rá De néha van úgy hogy a frakkisat csatolja rá és ilyenkor egybe megy a két jármû mint egy szendvics…..kb ennyi az észrevétel[/quote]A V-s autó annyiból különbözik a sima autótól, hogy a hozzá tartozó változóknál lévõ ID változó értéké nem 0. (de ennek nem kéne befolyásoló tényezõnek lennie.)A frakciójármû pedig annyiból különbözik, hogy létrehozásukkor eltárolom az id-jüket egy tömbben, hogy késõbb hivatkozni tudjak rájuk.
CMD:vontat(playerid){// ha nincs belépve a játékosif(Belepve[playerid] == 0) { return Logolj(playerid); }// ha nincs jármûbenif(!IsPlayerInAnyVehicle(playerid)) { return SendClientMessage(playerid,HIBA,\"Nem vagy autóban!\"); }// játékos jármûvének lekérdezésenew vehid = GetPlayerVehicleID(playerid);// ha nem vontatóban ül a játékosif(GetVehicleModel(vehid) != 525) { return SendClientMessage(playerid,HIBA,\"Ez nem vontatókocsi!\"); }// ha nem vontat a jármûif(GetVehicleTrailer(vehid) == 0){ new vid = GetClosestVehicle(playerid); // ha nincs jármû a közelében if(vid == -1 || GetDistanceToVehicle(playerid,vid) > 10.0) { return SendClientMessage(playerid, HIBA, \"A közelben nincs jármû!\"); }AttachTrailerToVehicle(vid, vehid);SendClientMessage(playerid,SIKERES,\"Felcsatolva.\");}// ha vontat a jármûelse{DetachTrailerFromVehicle(vehid);SendClientMessage(playerid,SIKERES,\"Lecsatolva.\");}return 1;}stock GetClosestVehicle(playerid){if(!IsPlayerConnected(playerid)) { return -1; } // ha nincs csatlakozva a játékos// Ezt kihagynám ebben az esetben, mert akkor a játékos a saját autóját vontatná...csak így máshol kell ellenõrizni, hogy jármûben van e//if(IsPlayerInAnyVehicle(playerid)) { return GetPlayerVehicleID(playerid); } // ha jármûben van a játékosnew closestvehicle = -1; // legközelebbi jármûnew Float:closestdist = 5000.0; // legközelebbi távolságfor(new v = 1; v < MAX_VEHICLES; v++){ if(!GetVehicleModel(v)) { continue; } // Ha nincs létrehozva a jármûnew Float:dist = GetDistanceToVehicle(playerid,v); // a játékos és a jármû közötti távolság lekérdezéseif(dist < closestdist) // ha közelebb van mint az elõzõ \'legközelebbi jármû\'{ closestdist = dist; closestvehicle = v;}}return closestvehicle; // legközelebbi jármû ID-val tér vissza, vagy ha nincs jármû akkor -1-el}
new kocsi = -1;if(IsPlayerInAnyVehicle(playerid)) kocsi = GetPlayerVehicleID(playerid);if(kocsi != -1)return kocsi;
new kocsi = GetClosestVehicle(playerid);new vehid = GetPlayerVehicleID(playerid);
if(IsPlayerInAnyVehicle(playerid)) kocsi = GetPlayerVehicleID(playerid);if(kocsi != -1)return kocsi;
// ha nincs a közelében jármû// ez hibás...mivel az elõzõ ciklusban az elsõ if miatt az id lehet a saját jármû >>> if(id == -1) { id = x; }// tehát ez nem fut le soha...plusz ha a saját kocsi 1-es akkor hiába van másik jármû a közelébe mivel// if(GetDistanceToVehicle(playerid,id) > GetDistanceToVehicle(playerid,x) && kocsi != x)// feltétel nem lesz igaz ebben az esetben// tehát saját jármû id után nem ellenõrzi a jármûveket, valószínûleg ez a hiba...// pl 100-as a kocsi akkor 1-99-ig tudja csatolni, de 100 fölött már nem, mivel a saját kocsinál egyik sem lesz közelebb
// vontat parancsCMD:vontat(playerid){// Ha a játékos be van lépve if(Belepve[playerid]!= 0) { // Ha a játékos jármûben van if(IsPlayerInAnyVehicle(playerid)) { // játékos jármûvének lekérdezése new vehid = GetPlayerVehicleID(playerid); // Ha vontatóban ül a játékos if(GetVehicleModel(vehid) == 525) { // legközelebbi jármû lekérdezése (ugyanaz mint a játékos jármûve!) new kocsi = GetClosestVehicle(playerid); // legközelebbi jármû változó new id= -1; // jármûvek bejárása for(new x=0;x<MAX_VEHICLES;x++) { // ha közelebb van a játékoshoz a jármû mint 10 méter if(GetDistanceToVehicle(playerid, x) < 10) { // ha a jármû -1 if(id == -1) { // legközelebbi jármû változó = éppen ellenõrzött jármû id = x; } // ha a jármû nem -1 else { // ha a \'legközelebbi jármû\' messzebb van mint az éppen ellenõrzött jármû ÉS nem a játékos jármûve if(GetDistanceToVehicle(playerid,id) > GetDistanceToVehicle(playerid,x) && kocsi != x) { // legközelebbi jármû változó = éppen ellenõrzött jármû id=x; } } } } // ha nincs a közelében jármû // ez hibás...mivel az elõzõ ciklusban az elsõ if miatt az id lehet a saját jármû >>> if(id == -1) { id = x; } // tehát ez nem fut le soha...plusz ha a saját kocsi 1-es akkor hiába van másik jármû a közelébe mivel // if(GetDistanceToVehicle(playerid,id) > GetDistanceToVehicle(playerid,x) && kocsi != x) // feltétel nem lesz igaz ebben az esetben // tehát saját jármû id után nem ellenõrzi a jármûveket, valószínûleg ez a hiba... // pl 100-as a kocsi akkor 1-99-ig tudja csatolni, de 100 fölött már nem, mivel a saját kocsinál egyik sem lesz közelebb if(id == -1) return SendClientMessage(playerid, HIBA, \"A közelben nincs jármû!\"); // ha nincs trailer csatolva a játékos jármûvéhez if(GetVehicleTrailer(vehid) == 0) { // jármû csatolás AttachTrailerToVehicle(id, vehid); SendClientMessage(playerid,SIKERES,\"Felcsatolva.\"); new string[256]; format(string,sizeof(string),\"TESZT: Vontató: %d | Vontatni való: %d\",kocsi,id); SendClientMessage(playerid,-1,string); return 1; } // ha van trailer csatolva a játékos jármûvéhez else { // jármû leválasztása DetachTrailerFromVehicle(vehid); SendClientMessage(playerid,SIKERES,\"Lecsatolva.\"); new string[256]; format(string,sizeof(string),\"TESZT: Vontató: %d | Vontatni való: %d\",kocsi,id); SendClientMessage(playerid,-1,string); return 1; } } else SendClientMessage(playerid,HIBA,\"Ez nem vontatókocsi!\"); } else SendClientMessage(playerid,HIBA,\"Nem vagy autóban!\"); } else Logolj(playerid); return 1;}