Help with Admin Vehicle.
#1

hello, i've made a command /aveh whihc spawn vehicle on for admins.
but when other player enters it it doesnt remove him from vehicle. i made this using foreach please help me

My Code.

OnTop

Quote:

#define MAX_ADMIN_VEHICLES 1000
new Iterator:AdminVeh<MAX_ADMIN_VEHICLES>;

Command /aveh

Quote:

COMMAND:aveh(playerid, params[])
{
return cmd_avehicle(playerid, params);
}
COMMAND:avehicle(playerid, params[])
{
new Vehicle[50],string[128], angle;

if(PlayerInfo[playerid][pAdminlevel] < 1)
{
SendClientMessage(playerid, COLOR_ERROR, ""ERROR_MSG"");
return 1;
}
if(sscanf(params, "s", Vehicle))
{
SendClientMessage(playerid, COLOR_ERROR, "USAGE: /veh (Vehicle)");
return 1;
}

new veh = GetVehicleModelIDFromName(Vehicle);
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);

if(Iter_Count(AdminVeh)== MAX_ADMIN_VEHICLES)return 1;

Iter_Add(AdminVeh,CreateVehicle(veh, X+3, Y, Z, angle, -1, -1, -1));

format(string, sizeof(string), "You have Spawned a %s. ID: %i. ", VehicleNames[veh - 400], veh);
SendClientMessage(playerid, COLOR_SERVER_HELP_MSG, string);

if(veh < 400 || veh > 611)
{
SendClientMessage(playerid, COLOR_ERROR, "Invalid Vehicle ID / Name.");
return 1;
}
return 1;
}

OnPlayerStateChange
Quote:

public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == 2)
{
new vehicleid = GetPlayerVehicleID(playerid);

foreach(new VehID:AdminVeh)
{
if(VehID == vehicleid)
{
if(PlayerInfo[playerid][pAdminlevel] < 1)
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, COLOR_ERROR, "This Is An Admin Vehicle.");
GameTextForPlayer(playerid, "Ejected: Admin Vehicle", 3000, 3);
}
}
}
}
return 1;
}

Please Help me.
Reply
#2

i forgot to mention this one function in my last reply to your post
pawn Код:
Iter_Contains(name, value)

//Checks if the given value is present in the given iterator.
so you wont be needing the foreach loop to check if the item is in the iterator
pawn Код:
COMMAND:aveh(playerid, params[])
{
    return cmd_avehicle(playerid, params);
}
COMMAND:avehicle(playerid, params[])
{
    new Vehicle[50],string[128], angle;

    if(PlayerInfo[playerid][pAdminlevel] < 1)
    {
        SendClientMessage(playerid, COLOR_ERROR, ""ERROR_MSG"");
        return 1;
    }
    if(sscanf(params, "s[50]", Vehicle))
    {
        SendClientMessage(playerid, COLOR_ERROR, "USAGE: /veh (Vehicle)");
        return 1;
    }
   

    new veh = GetVehicleModelIDFromName(Vehicle);
    if(veh < 400 || veh > 611)
    {
        SendClientMessage(playerid, COLOR_ERROR, "Invalid Vehicle ID / Name.");
        return 1;
    }
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);

    if(Iter_Count(AdminVeh)== MAX_ADMIN_VEHICLES)return 1;

    Iter_Add(AdminVeh,CreateVehicle(veh, X+3, Y, Z, angle, -1, -1, -1));

    format(string, sizeof(string), "You have Spawned a %s. ID: %i. ", VehicleNames[veh - 400], veh);
    SendClientMessage(playerid, COLOR_SERVER_HELP_MSG, string);

    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER)
    {
        new vehicleid = GetPlayerVehicleID(playerid);
        if(Iter_Contains(AdminVeh,vehicleid)&&(PlayerInfo[playerid][pAdminlevel] < 1))
        {
            RemovePlayerFromVehicle(playerid);
            SendClientMessage(playerid, COLOR_ERROR, "This Is An Admin Vehicle.");
            GameTextForPlayer(playerid, "Ejected: Admin Vehicle", 3000, 3);
        }
    }
    return 1;
}
Reply
#3

it dosen't work. still anyone can use vehicle.
Reply
#4

bump?
Reply
#5

I am not very sure, But try to put this code in OnPlayerEnterVehicle instead.
pawn Код:
new vehicleid = GetPlayerVehicleID(playerid);
if(Iter_Contains(AdminVeh,vehicleid)&&(PlayerInfo[playerid][pAdminlevel] < 1))
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, COLOR_ERROR, "This Is An Admin Vehicle.");
Reply
#6

Add it under OnPlayerEnterVehicle.
Reply
#7

its still not working sir, still anyone can use this vehicle.
Reply
#8

help please?
Reply
#9

I would do it something like this:
pawn Код:
new AdminVeh[MAX_PLAYERS];
// commands
CMD:aveh(playerid, params[])
{
    AdminVeh[playerid] = CreateVehicle...
    return 1;
}
/////

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == 2)
    {
        if(GetPlayerVehicleID(playerid) == AdminVeh[playerid])
        {
            // code
        }
    }
    return 1;
}
Reply
#10

nah, its just for one veh, i i spawn more than one veh the currently spawned veh is admin veh but others get simple.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)