Szerző Téma: Autó lekérésénél az elõzõleg lekért autó törlõdjön, hogyan?  (Megtekintve 938 alkalommal)

Nem elérhető Don

0 Show voters
Üdv mindenkinek! :)
Neharagudjatok, hogy ilyen (talán) alap dologgal fordulok hozzátok, csak teljesen tanácstalan vagyok ezügyben.
Azt szeretném megoldani, hogy ha valaki másodszor lekér egy autót, akkor az elõzõ eltörlõdjön, így megelõzve a feleslegess lagg-okat.
Viszont sajnos fogalmam sincs, hogy tudnám megoldani, mert nekem minden kocsira külön parancs van és ezt szeretném is megtartani.
Valaki tudna segíteni? Elõre is köszönöm! :)
« Utoljára szerkesztve: 2014. október 18. - 19:09:20 írta Flash »

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Autó lekérésénél az elõzõleg lekért autó törlõdjön, hogyan?
« Válasz #1 Dátum: 2014. október 06. - 16:03:21 »
0 Show voters
Semmi probléma, kérdezz bátran, akár alap dolgokat is, ezért is van ez a fórumrész.
 
new Jarmu[MAX_PLAYERS]; // Deklarálás
Jarmu[playerid] = CreateVehicle/AddStaticVehicle(Ex)(...); // A jármû létrehozása
DestroyVehicle(Jarmu[playerid]); // A létrehozott jármû törlése
Jarmu[playerid] = CreateVehicle/AddStaticVehicle(Ex)(...); // Új jármû létrehozása

Nem elérhető Don

Autó lekérésénél az elõzõleg lekért autó törlõdjön, hogyan?
« Válasz #2 Dátum: 2014. október 06. - 16:36:19 »
0 Show voters
És ezt hova is kell beillesztenem?

Nem elérhető rayle

  • 174
    • Profil megtekintése
Autó lekérésénél az elõzõleg lekért autó törlõdjön, hogyan?
« Válasz #3 Dátum: 2014. október 06. - 16:52:31 »
+1 Show voters
new Jarmu[MAX_PLAYERS];

Ezt a mod elejére, gondolom van több globális változód.
 
Jarmu[playerid] = CreateVehicle/AddStaticVehicle(Ex)(...);

Ezt pedig amikor a megadott paranccsal létrehozod neki a jármûvet, pl. látom írtad hogy minden kocsira külön parancsod van, tehát jelenleg egy parancs hasonlóan nézhet ki:
 
CMD:infernus(playerid, params[])
{
    GetPlayerPos(...);
    CreateVehicle(...);
    return 1;
}

A jármû létrehozásakor a CreateVehicle függvény visszatér a létrehozott jármû azonosítójával, így azt kell eltárolni a Jarmu változóba minden játékosnak. Tehát:
 
CMD:infernus(playerid, params[])
{
    GetPlayerPos(...);
    Jarmu[playerid] = CreateVehicle(...);
    return 1;
}

 
Majd a parancs beírásánál le kell ellenõrzni, hogy a játékos hozott -e létre jármûvet, és ha igen, töröljük.
 
CMD:infernus(playerid, params[])
{
    GetPlayerPos(...);
    if(IsValidVehicle(Jarmu[playerid])) DestroyVehicle(Jarmu[playerid]); // ha van létrehozott jármûve, töröljük
    Jarmu[playerid] = CreateVehicle(...);
    return 1;
}

 
Illetve célszerû kilépésnél is törölni a létrehozott jármûvet:
 
public OnPlayerDisconnect(playerid, reason)
{
    if(IsValidVehicle(Jarmu[playerid])) DestroyVehicle(Jarmu[playerid]); // ha van létrehozott jármûve, töröljük
    return 1;
}

 



Ha az IsValidVehicle függvényre hibát írna ki, írd a mod elejére:
 
native IsValidVehicle(vehicleid);

Nem elérhető Don

Autó lekérésénél az elõzõleg lekért autó törlõdjön, hogyan?
« Válasz #4 Dátum: 2014. október 06. - 17:02:05 »
0 Show voters
Köszi a választ!
Nálam egy kocsi lekérése így néz ki pontosan:
 
CMD:leviathan(playerid, params [])
{
new Float:X;
new Float:Y;
new Float:Z;
new Float:A;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,A);
Car = CreateVehicle(417,X,Y,Z,A,-1,-1,-1);
PutPlayerInVehicle(playerid,Car,0);
return 1;
}

 
Nekem ott van, hogy Car = Create Vehicle(...);
Most akkor írjam oda mégegyszer, hogy Jarmu = CreateVehicle(...); ?
Aztán a car az csak úgy van a mód elején, hogy \"new Car;\"
« Utoljára szerkesztve: 2014. október 06. - 17:09:18 írta Dfoglalo »

Nem elérhető rayle

  • 174
    • Profil megtekintése
Autó lekérésénél az elõzõleg lekért autó törlõdjön, hogyan?
« Válasz #5 Dátum: 2014. október 06. - 17:07:59 »
0 Show voters
Mod eleje:
new Jarmu[MAX_PLAYERS];

 
Parancs:
 

CMD:leviathan(playerid, params [])
{
new Float:X;
new Float:Y;
new Float:Z;
new Float:A;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,A);
if(IsValidVehicle(Jarmu[playerid])) DestroyVehicle(Jarmu[playerid]);
Jarmu[playerid] = CreateVehicle(417,X,Y,Z,A,-1,-1,-1);
PutPlayerInVehicle(playerid,Jarmu[playerid],0);
return 1;
}

Ennek mintájára kell a többi parancsot is megcsinálnod.

Nem elérhető Don

Autó lekérésénél az elõzõleg lekért autó törlõdjön, hogyan?
« Válasz #6 Dátum: 2014. október 06. - 17:18:50 »
0 Show voters
Az \"if(IsValidVehicle...\" sorban elég sok hibát talál:
 
error 017: undefined symbol \"IsValidVehicle\"
warning 215: expression has no effect
error 001: expected token: \";\", but found \")\"
error 029: invalid expression, assumed zero
fatal error 107: too many error messages on one line

 
[mod]Kitettem helyetted a

taget![/mod]
« Utoljára szerkesztve: 2014. október 06. - 18:00:18 írta Dfoglalo »

Nem elérhető rayle

  • 174
    • Profil megtekintése
Autó lekérésénél az elõzõleg lekért autó törlõdjön, hogyan?
« Válasz #7 Dátum: 2014. október 06. - 17:59:11 »
0 Show voters
Idézetet írta: rayle date=1412607151\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"50888\" data-ipsquote-contentclass=\"forums_Topic
Ha az IsValidVehicle függvényre hibát írna ki, írd a mod elejére:
 
native IsValidVehicle(vehicleid);

 

Ha még ezután is hibát ír, másold be a parancsot.

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Autó lekérésénél az elõzõleg lekért autó törlõdjön, hogyan?
« Válasz #8 Dátum: 2014. október 08. - 22:11:29 »
0 Show voters
#include a_samp
#include zcmd
new Jarmu[MAX_PLAYERS];
public OnPlayerDisconnect(playerid, reason) {
if(GetVehicleModel(GetPVarInt(playerid, \"LastVeh\") != 0)) DestroyVehicle(GetPVarInt(playerid, \"LastVeh\"));
return 1;
}
CMD:leviathan(playerid, params []) {
    new Float:pos[4];
    GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
    GetPlayerFacingAngle(playerid, pos[3]);
if(GetVehicleModel(GetPVarInt(playerid, \"LastVeh\") != 0)) DestroyVehicle(GetPVarInt(playerid, \"LastVeh\"));
    Jarmu[playerid] = CreateVehicle(417, pos[0], pos[1], pos[2], pos[3], -1, -1, -1);
    PutPlayerInVehicle(playerid, Jarmu[playerid], 0);
SetPVarInt(playerid, \"LastVeh\", Jarmu[playerid]);
    return 1;
}

 
Én így oldanám meg, de kinek a pap kinek a paplan :\')

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal