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;
}
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]);
}
}
#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