How to fix car spawning spamming issue?
#1

Hello. This is a command I created so that players in my server can spawn their cars they've purchased. I want to make it so that if a player already has a car spawned, it won't allow them to spawn a new one until they park it.

Can someone help me?

pawn Код:
CMD:getcar(playerid, params[])
{
    new engine, vehicleid, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
    if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
    if(sscanf(params, "mj", params)) return SendClientMessage(playerid, -1, "USAGE: /getcar [1-2]");
    if(!strcmp(params, "1", true))
    {
        if(PlayerInfo[playerid][vModel])
        {
            PlayerInfo[playerid][pVeh] = CreateVehicle(PlayerInfo[playerid][vModel], PlayerInfo[playerid][vX],PlayerInfo[playerid][vY],PlayerInfo[playerid][vZ],PlayerInfo[playerid][vA],PlayerInfo[playerid][vC1],PlayerInfo[playerid][vC2],1200);
            ChangeVehiclePaintjob(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][vPJ]);
            if(PlayerInfo[playerid][vLocked]) SetVehicleParamsEx(PlayerInfo[playerid][pVeh], 0, 0, 0, 1, 0, 0, 0);
            SetVehicleParamsEx(vehicleid, 0, lights, alarm, doors, bonnet, boot, objective);
            for(new i=0; i<14; i++)
            {
                AddVehicleComponent(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][pVehMod][i]);
            }
        }
        return 1;
    }
    else if(!strcmp(params, "2", true))
    {
        if(PlayerInfo[playerid][vVModel])
        {
            PlayerInfo[playerid][pVVeh] = CreateVehicle(PlayerInfo[playerid][vVModel], PlayerInfo[playerid][vVX],PlayerInfo[playerid][vVY],PlayerInfo[playerid][vVZ],PlayerInfo[playerid][vVA],PlayerInfo[playerid][vVC1],PlayerInfo[playerid][vVC2],1200);
            ChangeVehiclePaintjob(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][vVPJ]);
            if(PlayerInfo[playerid][vVLocked]) SetVehicleParamsEx(PlayerInfo[playerid][pVVeh], 0, 0, 0, 1, 0, 0, 0);
            SetVehicleParamsEx(vehicleid, 0, lights, alarm, doors, bonnet, boot, objective);
            for(new i=0; i<14; i++)
            {
                AddVehicleComponent(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][pVVehMod][i]);
            }
        }
        return 1;
    }
    return 1;
}
Reply
#2

Make the following addition

pawn Код:
CMD:getcar(playerid, params[])
{
    new engine, vehicleid, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
    if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
    if(sscanf(params, "mj", params)) return SendClientMessage(playerid, -1, "USAGE: /getcar [1-2]");
    if(!strcmp(params, "1", true))
    {
        if(PlayerInfo[playerid][vModel])
        {
            if(PlayerInfo[playerid][pVeh] != INVALID_VEHICLE_ID) DestroyVehicle(PlayerInfo[playerid][pVeh]);
            PlayerInfo[playerid][pVeh] = CreateVehicle(PlayerInfo[playerid][vModel], PlayerInfo[playerid][vX],PlayerInfo[playerid][vY],PlayerInfo[playerid][vZ],PlayerInfo[playerid][vA],PlayerInfo[playerid][vC1],PlayerInfo[playerid][vC2],1200);
            ChangeVehiclePaintjob(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][vPJ]);
            if(PlayerInfo[playerid][vLocked]) SetVehicleParamsEx(PlayerInfo[playerid][pVeh], 0, 0, 0, 1, 0, 0, 0);
            SetVehicleParamsEx(vehicleid, 0, lights, alarm, doors, bonnet, boot, objective);
            for(new i=0; i<14; i++)
            {
                AddVehicleComponent(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][pVehMod][i]);
            }
        }
        return 1;
    }
    else if(!strcmp(params, "2", true))
    {
        if(PlayerInfo[playerid][vVModel])
        {
            if(PlayerInfo[playerid][pVVeh] != INVALID_VEHICLE_ID) DestroyVehicle(PlayerInfo[playerid][pVVeh]);
            PlayerInfo[playerid][pVVeh] = CreateVehicle(PlayerInfo[playerid][vVModel], PlayerInfo[playerid][vVX],PlayerInfo[playerid][vVY],PlayerInfo[playerid][vVZ],PlayerInfo[playerid][vVA],PlayerInfo[playerid][vVC1],PlayerInfo[playerid][vVC2],1200);
            ChangeVehiclePaintjob(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][vVPJ]);
            if(PlayerInfo[playerid][vVLocked]) SetVehicleParamsEx(PlayerInfo[playerid][pVVeh], 0, 0, 0, 1, 0, 0, 0);
            SetVehicleParamsEx(vehicleid, 0, lights, alarm, doors, bonnet, boot, objective);
            for(new i=0; i<14; i++)
            {
                AddVehicleComponent(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][pVVehMod][i]);
            }
        }
        return 1;
    }
    return 1;
}
Add next code to OnPlayerConnect and OnPlayerDisconnect

pawn Код:
if(PlayerInfo[playerid][pVVeh] != INVALID_VEHICLE_ID)
{
    DestroyVehicle(PlayerInfo[playerid][pVVeh])
    PlayerInfo[playerid][pVVeh] = INVALID_VEHICLE_ID;
}
if(PlayerInfo[playerid][pVeh] != INVALID_VEHICLE_ID)
{
    DestroyVehicle(PlayerInfo[playerid][pVeh])
    PlayerInfo[playerid][pVeh] = INVALID_VEHICLE_ID;
}
In other cases where transport is removed, do = INVALID_VEHICLE_ID, for example like this PlayerInfo[playerid][pVeh] = INVALID_VEHICLE_ID
Reply
#3

Alright, thanks.
Reply
#4

One more thing, When I type "/getcar" the

pawn Код:
if(sscanf(params, "mj", params)) return SendClientMessage(playerid, -1, "USAGE: /getcar [1-2]");
part of the script is not showing up. Any help?
Reply
#5

Quote:
Originally Posted by EAsT-OAK_510
Посмотреть сообщение
One more thing, When I type "/getcar" the

pawn Код:
if(sscanf(params, "mj", params)) return SendClientMessage(playerid, -1, "USAGE: /getcar [1-2]");
part of the script is not showing up. Any help?
Try like this:

pawn Код:
new num;
if(sscanf(params, "d", num)) return SendClientMessage(playerid, -1, "USAGE: /getcar [1-2]");
if(num != 1 && num != 2) return SendClientMessage(playerid, -1, "USAGE: /getcar [1-2]");
Replace if(!strcmp(params, "1", true)) to if(num == 1)
Replace else if(!strcmp(params, "2", true)) to else if(num == 2)
Reply
#6

Alright, thanks. This is really weird, there is yet another bug located in this. Do you have Skype so that I can fully explain what's wrong?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)