/getcar not working right
#1

Okay, so the problem with this command is that when people use the command twice (once to spawn their car, and the other for the hell of it) it keeps spawning their cars. So if they use it 3 times, it spawns 3 cars.

What I need help on is basically making a function of some sort (or whatever it's called) that checks if a certain player already has their car spawned (either 1 or 2) to send them a message saying "you already have a car spawned!" and not letting them create a new car.

pawn Код:
CMD:getcar(playerid, params[])
{
    if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
    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]");
    if(num == 1)
    {
        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);
            if(PlayerInfo[playerid][vLocked]) SetVehicleParamsEx(PlayerInfo[playerid][pVeh], 0, 0, 0, 0, 0, 0, 0);
            for(new i=0; i<14; i++)
            {
                AddVehicleComponent(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][pVehMod][i]);
            }
            SendClientMessage(playerid, COLOR_GREY, "Your vehicle has been spawned.");
        }
        return 1;
    }
    else if(num == 2)
    {
        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);
            if(PlayerInfo[playerid][vVLocked]) SetVehicleParamsEx(PlayerInfo[playerid][pVVeh], 0, 0, 0, 0, 0, 0, 0);
            for(new i=0; i<14; i++)
            {
                AddVehicleComponent(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][pVVehMod][i]);
            }
            SendClientMessage(playerid, COLOR_GREY, "Your vehicle has been spawned.");
        }
        return 1;
    }
    return 1;
}
Reply
#2

Save the created car to a global player variable, then in the command, check if the variable is greater than 0... if it is, destroy the vehicle, then create the vehicle and assign it to the variable again.
Reply
#3

Quote:
Originally Posted by Nick.D
Посмотреть сообщение
Save the created car to a global player variable, then in the command, check if the variable is greater than 0... if it is, destroy the vehicle, then create the vehicle and assign it to the variable again.
Will this interfere with the other player's cars? because I used to have this and it caused the other player's cars to get destroyed:

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;
}
Reply
#4

Quote:
Originally Posted by EAsT-OAK_510
Посмотреть сообщение
Will this interfere with the other player's cars? because I used to have this and it caused the other player's cars to get destroyed:
It shouldn't do. I use a similar feature in my vehicle spawning command, and it works perfectly.
Reply
#5

So my attempt to it is this:

pawn Код:
new createdcar[MAX_PLAYERS];//top of script

CMD:getcar(playerid, params[])
{
    if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
    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]");
    if(num == 1)
    {
        if(CreatedCar == 0)
        {
            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);
                if(PlayerInfo[playerid][vLocked]) SetVehicleParamsEx(PlayerInfo[playerid][pVeh], 0, 0, 0, 0, 0, 0, 0);
                for(new i=0; i<14; i++)
                {
                    AddVehicleComponent(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][pVehMod][i]);
                }
                SendClientMessage(playerid, COLOR_GREY, "Your vehicle has been spawned.");
                CreatedCar[playerid] = 1;
            }
        )
        else if(CreatedCar == 1)
        {
            SendClientMessage(playerid, COLOR_GREY, "Your vehicle is already spawned!");
        }
    }
    else if(num == 2)
    {
        if(CreatedCar == 0)
        {
            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);
                if(PlayerInfo[playerid][vVLocked]) SetVehicleParamsEx(PlayerInfo[playerid][pVVeh], 0, 0, 0, 0, 0, 0, 0);
                for(new i=0; i<14; i++)
                {
                    AddVehicleComponent(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][pVVehMod][i]);
                }
                SendClientMessage(playerid, COLOR_GREY, "Your vehicle has been spawned.");
                CreatedCar[playerid] = 1;
            }
        )
        else if(CreatedCar == 1)
        {
            SendClientMessage(playerid, COLOR_GREY, "Your vehicle is already spawned!");
        }
    }
    return 1;
}
Will it work?
Reply
#6

Quote:
Originally Posted by EAsT-OAK_510
Посмотреть сообщение
So my attempt to it is this:

pawn Код:
new createdcar[MAX_PLAYERS];//top of script

CMD:getcar(playerid, params[])
{
    if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
    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]");
    if(num == 1)
    {
        if(CreatedCar == 0)
        {
            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);
                if(PlayerInfo[playerid][vLocked]) SetVehicleParamsEx(PlayerInfo[playerid][pVeh], 0, 0, 0, 0, 0, 0, 0);
                for(new i=0; i<14; i++)
                {
                    AddVehicleComponent(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][pVehMod][i]);
                }
                SendClientMessage(playerid, COLOR_GREY, "Your vehicle has been spawned.");
                CreatedCar[playerid] = 1;
            }
        )
        else if(CreatedCar == 1)
        {
            SendClientMessage(playerid, COLOR_GREY, "Your vehicle is already spawned!");
        }
    }
    else if(num == 2)
    {
        if(CreatedCar == 0)
        {
            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);
                if(PlayerInfo[playerid][vVLocked]) SetVehicleParamsEx(PlayerInfo[playerid][pVVeh], 0, 0, 0, 0, 0, 0, 0);
                for(new i=0; i<14; i++)
                {
                    AddVehicleComponent(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][pVVehMod][i]);
                }
                SendClientMessage(playerid, COLOR_GREY, "Your vehicle has been spawned.");
                CreatedCar[playerid] = 1;
            }
        )
        else if(CreatedCar == 1)
        {
            SendClientMessage(playerid, COLOR_GREY, "Your vehicle is already spawned!");
        }
    }
    return 1;
}
Will it work?
yeah i think it's will work. just test it
Reply
#7

Код:
native IsValidVehicle(vehicleid);

CMD:getcar(playerid, params[])
{
    if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
    if(IsValidVehicle(PlayerInfo[playerid][pVeh]) DestroyVehicle(PlayerInfo[playerid][pVeh]);
    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]");
    if(num == 1)
    {
        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);
            if(PlayerInfo[playerid][vLocked]) SetVehicleParamsEx(PlayerInfo[playerid][pVeh], 0, 0, 0, 0, 0, 0, 0);
            for(new i=0; i<14; i++)
            {
                AddVehicleComponent(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][pVehMod][i]);
            }
            SendClientMessage(playerid, COLOR_GREY, "Your vehicle has been spawned.");
        }
        return 1;
    }
    else if(num == 2)
    {
        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);
            if(PlayerInfo[playerid][vVLocked]) SetVehicleParamsEx(PlayerInfo[playerid][pVVeh], 0, 0, 0, 0, 0, 0, 0);
            for(new i=0; i<14; i++)
            {
                AddVehicleComponent(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][pVVehMod][i]);
            }
            SendClientMessage(playerid, COLOR_GREY, "Your vehicle has been spawned.");
        }
        return 1;
    }
    return 1;
}
IM not sure if IsValidVehicle works

https://sampwiki.blast.hk/wiki/IsValidVehicle
Reply
#8

pawn Код:
if(IsValidVehicle(PlayerInfo[playerid][pVeh]) DestroyVehicle(PlayerInfo[playerid][pVeh]);
This give me an error

Код:
error 001: expected token: ")", but found "-identifier-"
Reply
#9

if(IsValidVehicle(PlayerInfo[playerid][pVeh])) DestroyVehicle(PlayerInfo[playerid][pVeh]);

missed a bracket :P
Reply
#10

Quote:
Originally Posted by eesh
Посмотреть сообщение
if(IsValidVehicle(PlayerInfo[playerid][pVeh])) DestroyVehicle(PlayerInfo[playerid][pVeh]);

missed a bracket :P
It still gives me the same problem. If another player also has their car spawned near me when i use /getcar 1 it destroys their car and spawns mine.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)