Szerző Téma: Jármű törlése játékos kiszállásakor  (Megtekintve 700 alkalommal)

Jármű törlése játékos kiszállásakor
« Dátum: 2015. július 02. - 14:46:13 »
0 Show voters
Sziasztok.
Lenne egy kérdésem felétek. Van egy parancs ami nem más mint a /acar. Az adminnak ledob egy járművet. Hogyan tudom azt megoldani, hogy az admin kiszállásakor a jármű törlödjön, mert nem kéne hogy a játékosok elhordják :) ;) . Előre is köszönöm a válaszotokat.
U.I.:
A parancs:
 
CMD:acar(playerid, params[])
{
if(pInfo[playerid][pAdmin] >= 3)
{
     new alma;
        new Float:asdX, Float:asdY, Float:asdZ;
        GetPlayerPos(playerid,asdX, asdY, asdZ);
        alma = CreateVehicle(411, Float:asdX, Float:asdY, Float:asdZ, 0, 1, 1, 0);
        PutPlayerInVehicle(playerid, alma, 0);
  }
  return 1;
}
« Utoljára szerkesztve: 2015. július 02. - 16:18:35 írta Flash »

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Jármű törlése játékos kiszállásakor
« Válasz #1 Dátum: 2015. július 02. - 16:08:01 »
0 Show voters
public OnPlayerStateChange(playerid, newstate, oldstate) {
if(newstate == PLAYER_STATE_ONFOOT) {
if(GetPlayerVehicleID(playerid) == alma) DestroyVehicle(alma);
}
return 1;
}

 
Vagy még tanácsolnám, hogy ne engedd beleültetni a játékost aki kevesebb mint hármas adminnal rendelkezik. Azaz:
 
public OnPlayerEnterVehicle(playerid, vehicleid) {
    if(pInfo[playerid][pAdmin] < 3) {
if(vehicleid == alma) {
   ClearAnimations(playerid);
   SendClientMessage(playerid, 0xff0000ff, \"Ez a jármű nem a tied!\");
}
    }
return 1;
}

Jármű törlése játékos kiszállásakor
« Válasz #2 Dátum: 2015. július 02. - 18:10:06 »
0 Show voters
Köszönöm Flash de ezzel az a gond, hogy ha készítek egy változót ami ugye az \"alma\" akkor beleköt a parancsban levő new alma; cuccba, ha ezt kiveszem a parancsból akkor meg azért csesztet . Előre is köszönöm válaszod

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
Jármű törlése játékos kiszállásakor
« Válasz #3 Dátum: 2015. július 02. - 19:34:53 »
0 Show voters
Idézetet írta: Pedró date=1435854418\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"54953\" data-ipsquote-contentclass=\"forums_Topic

Szia! A változóban vannak már problémák!
Tedd a programkódod elejére, a függvénykönyvtárak betallózása alá, a következő változó deklarációját;
 
new AdminVehicle[MAX_PLAYERS] = {INVALID_VEHICLE_ID, ...};

 
Ezek után az \"acar\" parancsodat írd át a következőre;
 
CMD:acar(playerid, params[])
{
if(pInfo[playerid][pAdmin] >= 3)
{
        CheckAdminVehicle(playerid);
new Float:asdX, Float:asdY, Float:asdZ;
GetPlayerPos(playerid,asdX, asdY, asdZ);
AdminVehicle[playerid] = CreateVehicle(411, Float:asdX, Float:asdY, Float:asdZ, 0, 1, 1, 0);
PutPlayerInVehicle(playerid, AdminVehicle[playerid], 0);
}
return 1;
}

 
És egy kis védelem gyanánt tedd még a következő kódot, az OnPlayerDisconnect callbackhoz, amely azt eredményezi, hogy amikor kilép egy admin, ellenőrzi, hogy le hívott-e adminjárművet, és ha igen, törli azt;
 
CheckAdminVehicle(playerid); //Igen, még akkor is ellenőrizzük, ha nem admin. (Hogyha időközben elvették volna az adminját akkor is törli.)

 
Továbbá akkor a kérésed teljesítéséhez az OnPlayerStateChange callback alá szúrd be az alábbi kódot:
 
if(oldstate == PLAYER_STATE_DRIVER) CheckAdminVehicle(playerid);

 
És persze a CheckAdminVehicle függvény:
 
stock CheckAdminVehicle(playerid) {
    if(AdminVehicle[playerid] != INVALID_VEHICLE_ID) {
        //Ha van neki adminjárműve..
        AdminVehicle[playerid] = INVALID_VEHICLE_ID;
        DestroyVehicle(AdminVehicle[playerid]);
    }
}

 
Spoiler for Külön scriptben megírva, hogy minden érthető legyen!:
#define FILTERSCRIPT
#include <a_samp>
#include <zcmd>
new AdminVehicle[MAX_PLAYERS] = {INVALID_VEHICLE_ID, ...};
CMD:acar(playerid, params[])
{
if(pInfo[playerid][pAdmin] >= 3)
{
        CheckAdminVehicle(playerid);
   new Float:asdX, Float:asdY, Float:asdZ;
   GetPlayerPos(playerid,asdX, asdY, asdZ);
   AdminVehicle[playerid] = CreateVehicle(411, Float:asdX, Float:asdY, Float:asdZ, 0, 1, 1, 0);
   PutPlayerInVehicle(playerid, AdminVehicle[playerid], 0);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
CheckAdminVehicle(playerid); //Igen, még akkor is ellenőrizzük, ha nem admin. (Hogyha időközben elvették volna az adminját akkor is törli.)
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(oldstate == PLAYER_STATE_DRIVER) CheckAdminVehicle(playerid);
return 1;
}
stock CheckAdminVehicle(playerid) {
    if(AdminVehicle[playerid] != INVALID_VEHICLE_ID) {
        //Ha van neki adminjárműve..
        AdminVehicle[playerid] = INVALID_VEHICLE_ID;
        DestroyVehicle(AdminVehicle[playerid]);
    }
}
 
Eltolódások miatt pastebin link: http://pastebin.com/NNb6k0Ai
 

Jármű törlése játékos kiszállásakor
« Válasz #4 Dátum: 2015. július 02. - 19:59:22 »
0 Show voters
Köszönöm Pedró  :)
 

Bár jobb lett volna ha ezt mLife-n mondtad volna el!
 
[/quote]

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal