How to make 1 player 1 Car
#1

hello guys.. i have car spawn.. :

pawn Код:
CMD:veh(playerid, params[])
{
    if(PlayerInfo[playerid][Jailed] == true) return SendClientMessage(playerid, COLOR_RED, "You can't use this command when you are in jail");
    if(PlayerInfo[playerid][World] != DMWorldID && PlayerInfo[playerid][World] != TDMWorldID)
    {
        if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) return SendClientMessage(playerid, COLOR_RED, "ERROR: you need to be the driver of the vehicle or be onfoot to use this command");
        new aVehicle[64], Color1, Color2;
        if(sscanf(params, "s[64]I(-1)I(-1)", aVehicle, Color1, Color2)) return SendClientMessage(playerid,COLOR_YELLOW, "Correct usage: /veh [car ID/name] [color1] [color2]");
        new veh = GetVehicleModelID(aVehicle);
        if(veh < 400 || veh > 611) return SendClientMessage(playerid,COLOR_RED, "ERROR: This is not a valid vehicle name! Please try again ");
        if(IsPlayerInAnyVehicle(playerid)) DestroyVehicle(GetPlayerVehicleID(playerid));
        new Float:Pos[4];
        GetPlayerPos(playerid, Pos[0],Pos[1],Pos[2]); GetPlayerFacingAngle(playerid, Pos[3]);
        new PVeh = CreateVehicle(veh, Pos[0], Pos[1], Pos[2], Pos[3]+90, Color1, Color2, -1);
        LinkVehicleToInterior(PVeh, GetPlayerInterior(playerid));
        SetVehicleVirtualWorld(PVeh, GetPlayerVirtualWorld(playerid));
        PutPlayerInVehicle(playerid, PVeh, 0);
        vehhasmissile[veh] = 0;
        vehhasminigun[veh] = 0;
        vehhascargo[veh] = 0;
        vehhaswindshieldupgrade[veh] = 0;
        vehhascarwreck[veh] = 0;
        SendCommandToAdmins(playerid,"/veh");
        GameTextForPlayer(playerid, "~y~Enjoy your new ~r~ride", 2000, 1);
        return 1;
    }
    else return SendClientMessage(playerid, COLOR_RED, "ERROR: you can't use this command in this world");
}
how to make 1 player 1 car.. example.. if i spawn a car.. and spawn car again.. old car is destroy.. and if i disconnect the car is destroy..
Reply
#2

You will need global var, something like PlayerVehicle[MAX_PLAYERS], and in OnPlayerConnect do PlayerVehicle[playerid] = INVALID_VEHICLE_ID, and then just in OnPlayerDisconnect do one if, if(IsValidVehicle(PlayerVehicle[playerid]) DestroyVehicle(PlayerVehicle[playerid]); and in veh cmd just make PlayerVehicle[playerid] = CreateVehicle(...);

It should look like this:

pawn Код:
#include <a_samp>

native IsValidVehicle(vehicleid); //you do this if you get error for IsValidVehicle function

//.....rest of code

new PlayerVehicle[MAX_PLAYERS];

//.....rest of code (OnGameModeInit() etc)

public OnPlayerConnect(playerid){
    PlayerVehicle[playerid] = INVALID_VEHICLE_ID;
    return true;
}

public OnPlayerDisconnect(playerid){
    if(IsValidVehicle(PlayerVehicle[playerid])) DestroyVehicle(PlayerVehicle[playerid]);
    return true;
}

//....rest of code

CMD:veh(playerid, params[])
{
    if(PlayerInfo[playerid][Jailed] == true) return SendClientMessage(playerid, COLOR_RED, "You can't use this command when you are in jail");
    if(PlayerInfo[playerid][World] != DMWorldID && PlayerInfo[playerid][World] != TDMWorldID)
    {
        if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) return SendClientMessage(playerid, COLOR_RED, "ERROR: you need to be the driver of the vehicle or be onfoot to use this command");
        new aVehicle[64], Color1, Color2;
        if(sscanf(params, "ddd", veh, Color1, Color2)) return SendClientMessage(playerid,COLOR_YELLOW, "Correct usage: /veh [car ID] [color1] [color2]");
        if(veh < 400 || veh > 611) return SendClientMessage(playerid,COLOR_RED, "ERROR: This is not a valid vehicle ID! Please try again ");
        if(IsPlayerInAnyVehicle(playerid)) DestroyVehicle(GetPlayerVehicleID(playerid));
        new Float:Pos[4];
        GetPlayerPos(playerid, Pos[0],Pos[1],Pos[2]); GetPlayerFacingAngle(playerid, Pos[3]);
        PlayerVehicle[playerid] = CreateVehicle(veh, Pos[0], Pos[1], Pos[2], Pos[3]+90, Color1, Color2, -1);
        LinkVehicleToInterior(PlayerVehicle[playerid], GetPlayerInterior(playerid));
        SetVehicleVirtualWorld(PlayerVehicle[playerid], GetPlayerVirtualWorld(playerid));
        PutPlayerInVehicle(playerid, PlayerVehicle[playerid], 0);
        vehhasmissile[PlayerVehicle[playerid]] = 0;
        vehhasminigun[PlayerVehicle[playerid]] = 0;
        vehhascargo[PlayerVehicle[playerid]] = 0;
        vehhaswindshieldupgrade[PlayerVehicle[playerid]] = 0;
        vehhascarwreck[PlayerVehicle[playerid]] = 0;
        SendCommandToAdmins(playerid,"/veh");
        GameTextForPlayer(playerid, "~y~Enjoy your new ~r~ride", 2000, 1);
        return 1;
    }
    else return SendClientMessage(playerid, COLOR_RED, "ERROR: you can't use this command in this world");
}
If there are any errors please let me know.
Reply
#3

thanks.. but, i have problem.. 3 eror in CMD..

Код:
E:\Server\GTA SA\SAMP\Dedicated Server\LUL\gamemodes\LUL.pwn(20069) : error 017: undefined symbol "veh"
E:\Server\GTA SA\SAMP\Dedicated Server\LUL\gamemodes\LUL.pwn(20070) : error 017: undefined symbol "veh"
E:\Server\GTA SA\SAMP\Dedicated Server\LUL\gamemodes\LUL.pwn(20074) : error 017: undefined symbol "veh"
E:\Server\GTA SA\SAMP\Dedicated Server\LUL\gamemodes\LUL.pwn(20068) : warning 204: symbol is assigned a value that is never used: "aVehicle"
E:\Server\GTA SA\SAMP\Dedicated Server\LUL\gamemodes\LUL.pwn(29098) : warning 203: symbol is never used: "GetVehicleModelID"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


3 Errors.
Reply
#4

Delete
Код:
new veh = GetVehicleModelID(aVehicle); new aVehicle[64]
Or assign them to something.
Reply
#5

i have : new veh = GetVehicleModelID(aVehicle); <- delete it ?
Reply
#6

Just a modification of CoaPsyFactor's cmd
He forgot to add new veh, and I deleted new aVeh[64]; which is not used.

pawn Код:
CMD:veh(playerid, params[])
{
    if(PlayerInfo[playerid][Jailed] == true) return SendClientMessage(playerid, COLOR_RED, "You can't use this command when you are in jail");
    if(PlayerInfo[playerid][World] != DMWorldID && PlayerInfo[playerid][World] != TDMWorldID)
    {
        if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) return SendClientMessage(playerid, COLOR_RED, "ERROR: you need to be the driver of the vehicle or be onfoot to use this command");
        new veh, Color1, Color2;
        if(sscanf(params, "ddd", veh, Color1, Color2)) return SendClientMessage(playerid,COLOR_YELLOW, "Correct usage: /veh [car ID] [color1] [color2]");
        if(veh < 400 || veh > 611) return SendClientMessage(playerid,COLOR_RED, "ERROR: This is not a valid vehicle ID! Please try again ");
        if(IsPlayerInAnyVehicle(playerid)) DestroyVehicle(GetPlayerVehicleID(playerid));
        new Float:Pos[4];
        GetPlayerPos(playerid, Pos[0],Pos[1],Pos[2]); GetPlayerFacingAngle(playerid, Pos[3]);
        PlayerVehicle[playerid] = CreateVehicle(veh, Pos[0], Pos[1], Pos[2], Pos[3]+90, Color1, Color2, -1);
        LinkVehicleToInterior(PlayerVehicle[playerid], GetPlayerInterior(playerid));
        SetVehicleVirtualWorld(PlayerVehicle[playerid], GetPlayerVirtualWorld(playerid));
        PutPlayerInVehicle(playerid, PlayerVehicle[playerid], 0);
        vehhasmissile[PlayerVehicle[playerid]] = 0;
        vehhasminigun[PlayerVehicle[playerid]] = 0;
        vehhascargo[PlayerVehicle[playerid]] = 0;
        vehhaswindshieldupgrade[PlayerVehicle[playerid]] = 0;
        vehhascarwreck[PlayerVehicle[playerid]] = 0;
        SendCommandToAdmins(playerid,"/veh");
        GameTextForPlayer(playerid, "~y~Enjoy your new ~r~ride", 2000, 1);
        return 1;
    }
    else return SendClientMessage(playerid, COLOR_RED, "ERROR: you can't use this command in this world");
}
^^ the code above will only work with ID's tho', not with names
Reply
#7

thank you.. but, i need with name and id..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)