-
if(strcmp(cmd, \"/parkol\", true) == 0)
{
new Float:x,Float:y,Float:z;
new Float:a;
new carid;
new getcarid;
if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey]) { carid = PlayerInfo[playerid][pPcarkey]; }
else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey2]) { carid = PlayerInfo[playerid][pPcarkey2]; }
else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey3]) { carid = PlayerInfo[playerid][pPcarkey3]; }
else { return 1; }
getcarid = GetPlayerVehicleID(playerid);
GetPlayerName(playerid, playername, sizeof(playername));
GetVehiclePos(carid, x, y, z);
//GetPlayerFacingAngle(playerid, a);
GetVehicleZAngle(carid, a);
if(IsPlayerInVehicle(playerid,carid) && CarInfo[carid][cOwned] == 1)
{
if(PlayerInfo[playerid][pPcarkey] == 999 && PlayerInfo[playerid][pPcarkey2] == 999 & PlayerInfo[playerid][pPcarkey3])
{
SendClientMessage(playerid, COLOR_GRAD2, \"Nincs jármûved!\");
return 1;
}
if(getcarid == carid)
{
CarInfo[carid][cLocationx] = x;
CarInfo[carid][cLocationy] = y;
CarInfo[carid][cLocationz] = z;
CarInfo[carid][cAngle] = a;
SendClientMessage(playerid,COLOR_WHITE,\"Sikeresen leparkoltad a jármûvedet! Legközelebb is itt fogod megtalálni!\");
SaveCarCoords();
OnPlayerUpdate(playerid);
DestroyVehicle(carid);
CreateVehicle(CarInfo[carid][cModel],CarInfo[carid][cLocationx],CarInfo[carid][cLocationy],CarInfo[carid][cLocationz]+1.0,CarInfo[carid][cAngle],CarInfo[carid][cColorOne],CarInfo[carid][cColorTwo],-1);
TogglePlayerControllable(playerid, 1);
format(string, sizeof(string), \"ALR-%d\", carid);
SetVehicleNumberPlate(carid, string);
AddVehicleComponent(carid,CarInfo[carid][cKerek]);
ChangeVehiclePaintjob(carid, CarInfo[carid][cPaintjob]-1);
AddVehicleComponent(carid,CarInfo[carid][cKinezet1]);
AddVehicleComponent(carid,CarInfo[carid][cKinezet2]);
AddVehicleComponent(carid,CarInfo[carid][cKinezet3]);
AddVehicleComponent(carid,CarInfo[carid][cKinezet4]);
AddVehicleComponent(carid,CarInfo[carid][cKinezet5]);
AddVehicleComponent(carid,CarInfo[carid][cKinezet6]);
AddVehicleComponent(carid,CarInfo[carid][cKinezet7]);
AddVehicleComponent(carid,CarInfo[carid][cKinezet8]);
AddVehicleComponent(carid,CarInfo[carid][cKinezet9]);
AddVehicleComponent(carid,CarInfo[carid][cKinezet10]);
AddVehicleComponent(carid,CarInfo[carid][cNitro]);
AddVehicleComponent(carid,CarInfo[carid][cHidraulika]);
format(string, sizeof(string), \"ALR-%d\", carid);
SetVehicleNumberPlate(carid, string);
return 1;
}
}
}
Helló! Ez a parancs buggol nem tudom miért van amikor le engedi parkolni de eltünik a kocsi vagy át változik kérem valaki segitsen KÖszönöm elöre is
[mod]Két perce írtam le ezt egy másik témádba: \"Már rengetegszer szóltam érte, hogy ne spoilerbe hanem
tagbe tedd a pawn nyelven íródott forráskódokat, még figyelmeztetést is kellett adnom 8-10 eset után, erre folytatod? Javíottam ismét helyetted. Legközelebb már használj code taget!\" Moderálok tovább és már megint ezt látom. Arról nem is beszélve, hogy ezt a témát is rossz helyre nyitottad az elõzõhöz hasonlóan.[/mod]
-
Tipikus Goudlyne hiba.. Általában ez a bug olyankor szokott elõjönni mikor nem megfelelõ kocsit hozunk le. Ilyen például az Infernus(általában ez szokott lenni a hunyó) de lehet akár a Hydra is. Szóval érdemes újra rakni a kocsikat, és nem lehozni többet infernust (vagy hydrát). Ennek a hibának az okát még mai napig nem sikerült megfejtenünk, de próbálgatjuk megoldani valahogy. Remélem segítettem :D
-
nem teljesen értem a logikáját a parancsnak...
new carid;
new getcarid;
if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey]) { carid = PlayerInfo[playerid][pPcarkey]; }
else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey2]) { carid = PlayerInfo[playerid][pPcarkey2]; }
else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey3]) { carid = PlayerInfo[playerid][pPcarkey3]; }
else { return 1; }
getcarid = GetPlayerVehicleID(playerid);
carid a 3 kocsi lehet amihez van kulcsa a játékosnak...és ha olyanban ül amihez nincs kulcsa akkor nem fut tovább a parancs...akkor miért van getcarid is?
õõõ tovább nézve a parancsot több hibát is találtam...
CreateVehicle visszatérési értékét nem tároltad el...ez volt a hiba forrása...azt feltételezted ugyanazon az ID-n hozta létre a jármûvet...
módosítottam, de ezzel az a gond, hogy a mentett kulcsokkal probléma lehet...mivel változik az ID...
2 megoldást ajánlok...
1: a saját jármû azonosítás (tömb cella) nem sa-mp-s jármû id alapján
2: nem törlöd a jármûvet, hanem a parkolásnál csak XYZA adatokat mentesz és OnVehicleSpawn alatt odarakod a jármûvet...
if(strcmp(cmd, \"/parkol\", true) == 0)
{
// jármû id
new carid = GetPlayerVehicleID(playerid);
// Ha nincs kulcsa a jármûhöz
if(carid != PlayerInfo[playerid][pPcarkey] && carid != PlayerInfo[playerid][pPcarkey2] || carid != PlayerInfo[playerid][pPcarkey3]) { return 1; }
//
GetPlayerName(playerid, playername, sizeof(playername));
// Ha van tulaja a jármûnek
if(CarInfo[carid][cOwned] == 1)
{
GetVehiclePos(carid, CarInfo[carid][cLocationx], CarInfo[carid][cLocationy], CarInfo[carid][cLocationz]);
GetVehicleZAngle(carid, CarInfo[carid][cAngle]);
//
SendClientMessage(playerid,COLOR_WHITE,\"Sikeresen leparkoltad a jármûvedet! Legközelebb is itt fogod megtalálni!\");
SaveCarCoords();
OnPlayerUpdate(playerid);
DestroyVehicle(carid);
//
new newcarid = CreateVehicle(CarInfo[carid][cModel],CarInfo[carid][cLocationx],CarInfo[carid][cLocationy],CarInfo[carid][cLocationz]+1.0,CarInfo[carid][cAngle],CarInfo[carid][cColorOne],CarInfo[carid][cColorTwo],-1);
TogglePlayerControllable(playerid, 1);
// Rendszám
format(string, sizeof(string), \"ALR-%d\", newcarid);
SetVehicleNumberPlate(newcarid, string);
// Kinézet
AddVehicleComponent(newcarid,CarInfo[carid][cKerek]);
ChangeVehiclePaintjob(newcarid,CarInfo[carid][cPaintjob]-1);
AddVehicleComponent(newcarid,CarInfo[carid][cKinezet1]);
AddVehicleComponent(newcarid,CarInfo[carid][cKinezet2]);
AddVehicleComponent(newcarid,CarInfo[carid][cKinezet3]);
AddVehicleComponent(newcarid,CarInfo[carid][cKinezet4]);
AddVehicleComponent(newcarid,CarInfo[carid][cKinezet5]);
AddVehicleComponent(newcarid,CarInfo[carid][cKinezet6]);
AddVehicleComponent(newcarid,CarInfo[carid][cKinezet7]);
AddVehicleComponent(newcarid,CarInfo[carid][cKinezet8]);
AddVehicleComponent(newcarid,CarInfo[carid][cKinezet9]);
AddVehicleComponent(newcarid,CarInfo[carid][cKinezet10]);
AddVehicleComponent(newcarid,CarInfo[carid][cNitro]);
AddVehicleComponent(newcarid,CarInfo[carid][cHidraulika]);
// CarInfo frissítés
CarInfo[newcarid] = CarInfo[carid];
}
return 1;
}
ja és itt még a régi carid adatait törölni kellene...
-
Végülis nekünk is ez volt a definíciónk, de elvetettük... De mint látom mások szerint jó :D
-
én pl úgy alkalmazom, hogy a jármû tulajdonságokat egy tömbben tárolom és nem az SA-MP-s jármû ID-val címzem meg...hanem van egy tömb ami csak az SA-MP-s jármû és a saját jármû tulajdonságokat összeköti, hogy ne ciklussal kelljen bejárni...
enum x
{
JarmuTulajdonsag1,
JarmuTulajdonsag2,
JarmuTulajdonsag3,
JarmuTulajdonsag4,
SAMPVehicleID
}
new SajatJarmuRendszerJarmuAdatok[100]
new SAMPJarmuSajatJarmu[MAX_VEHICLES];
public OnVehicleSpawn(vehicleid)
{
SajatJarmuRendszerJarmuAdatok[sAMPJarmuSajatJarmu[vehicleid]][JarmuTulajdonsag1] = 1;
return 1;
}
// SA-MP jármûre hivatkozás:
SajatJarmuRendszerJarmuAdatok[id][sAMPVehicleID]
remélem érthetõ
-
[gmod]Megkérném a kedves témanyitót hogy ne hanyagolja el a témáját ha már megnyitotta![/gmod]