How to make 1 player 1 Car -
Broker - 28.03.2013
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..
Re: How to make 1 player 1 Car -
CoaPsyFactor - 28.03.2013
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.
Re: How to make 1 player 1 Car -
Broker - 29.03.2013
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.
Re: How to make 1 player 1 Car -
Pawnie - 29.03.2013
Delete
Код:
new veh = GetVehicleModelID(aVehicle); new aVehicle[64]
Or assign them to something.
Re: How to make 1 player 1 Car -
Broker - 29.03.2013
i have : new veh = GetVehicleModelID(aVehicle); <- delete it ?
Re: How to make 1 player 1 Car -
greentarch - 29.03.2013
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
Re: How to make 1 player 1 Car -
Broker - 29.03.2013
thank you.. but, i need with name and id..