Unknown Plate Showing -
lwilson - 19.05.2016
I made a vehicle by myself, but when I made a command to check the vehicle's registration including the vehicle's plate, it shows different plate from what it really is.
COMMAND THAT SHOWS DIFFERENT PLATE
PHP код:
CMD:vreg(playerid, params[])
{
if(IsACop(playerid) || IsALVMPDCop(playerid) || (PlayerInfo[playerid][pMember] == 6 && PlayerInfo[playerid][pRank] >= 1) || PlayerInfo[playerid][pMember] == 20 || PlayerInfo[playerid][pMember] == 14)
{
if(isnull(params)) return Syntax(playerid,"vreg", "[vehicle registration]");
new Float: x, Float: y, Float: z, cext[32], vehicleid = strval(params);
GetVehiclePos(vehicleid, x, y, z);
if(vehicleid != INVALID_VEHICLE_ID)
{
foreach(Player, i)
{
new v = GetPlayerVehicle(i, vehicleid);
if(v != -1)
{
new string[78 + MAX_PLAYER_NAME];
if(PlayerVehicleInfo[i][v][pvInsurance] == 1) { cext = "Valid"; } else { cext = "Invalid"; }
format(string, sizeof(string), "Vehicle registration: %d | Make/Model: %s | Plate: %d | Owner: %s | Insurance: %s",vehicleid,GetVehicleName(PlayerVehicleInfo[i][v][pvId]),PlayerVehicleInfo[i][v][pvPlate],GetPlayerNameEx(i),cext); // LINE WHERE PLATE IS LISTED
SendClientMessageEx(playerid, COLOR_WHITE, string);
return 1;
}
}
for(new f = 0; f < MAX_FAMILY; f++)
{
new v = GetGangVehicle(f, vehicleid);
if(v != -1)
{
new string[72 + MAX_PLAYER_NAME];
format(string, sizeof(string), "Vehicle registration: %d | Make/Model: %s | Family Owner: %s",vehicleid,GetVehicleName(FamilyVehicleInfo[f][v][fvId]), FamilyInfo[f][FamilyLeader]);
SendClientMessageEx(playerid, COLOR_WHITE, string);
return 1;
}
}
SendClientMessageEx(playerid, COLOR_GRAD2, "This vehicle does not have any registration!");
}
}
return 1;
}
POSSIBLE CONNECTED CODES
PHP код:
stock LoadPlayerVehicles(playerid)
{
new plate = random(899999)+100000;
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
printf(" Loading %s's vehicles.", playername);
for(new v = 0; v < MAX_PLAYERVEHICLES; v++)
{
if(PlayerVehicleInfo[playerid][v][pvModelId] != 0 && PlayerVehicleInfo[playerid][v][pvImpounded] == 0)
{
PlayerCars++;
new carcreated = AddStaticVehicleEx(PlayerVehicleInfo[playerid][v][pvModelId], PlayerVehicleInfo[playerid][v][pvPosX], PlayerVehicleInfo[playerid][v][pvPosY], PlayerVehicleInfo[playerid][v][pvPosZ], PlayerVehicleInfo[playerid][v][pvPosAngle],PlayerVehicleInfo[playerid][v][pvColor1], PlayerVehicleInfo[playerid][v][pvColor2], -1);
PlayerVehicleInfo[playerid][v][pvId] = carcreated;
if(PlayerVehicleInfo[playerid][v][pvPlate] != 0)
{
SetVehicleNumberPlate(carcreated, PlayerVehicleInfo[playerid][v][pvPlate]);
}
else
{
format(PlayerVehicleInfo[playerid][v][pvPlate], 32, "%d", plate);
SetVehicleNumberPlate(carcreated, PlayerVehicleInfo[playerid][v][pvPlate]);
}
SetVehicleNumberPlate(carcreated, PlayerVehicleInfo[playerid][v][pvPlate]);
if(PlayerVehicleInfo[playerid][v][pvLocked] == 1 && !IsABike(PlayerVehicleInfo[playerid][v][pvId])) LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][v][pvId], PlayerVehicleInfo[playerid][v][pvLock]);
}
else if(PlayerVehicleInfo[playerid][v][pvModelId] == 0 && PlayerVehicleInfo[playerid][v][pvImpounded] != 0)
PlayerVehicleInfo[playerid][v][pvImpounded] = 0;
}
//LoadAllPlayerVehicleMods(playerid);
}
stock UnloadPlayerVehicles(playerid)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
printf(" Unloading %s's vehicles.", playername);
for(new v = 0; v < MAX_PLAYERVEHICLES; v++)
{
if(PlayerVehicleInfo[playerid][v][pvId] != INVALID_PLAYER_VEHICLE_ID && PlayerVehicleInfo[playerid][v][pvImpounded] == 0)
{
//new Float:x, Float:y, Float:z, Float:angle;
//GetVehiclePos(PlayerVehicleInfo[playerid][v][pvId], x, y, z);
//GetVehicleZAngle(PlayerVehicleInfo[playerid][v][pvId], angle);
//UpdatePlayerVehicleParkPosition(playerid, v, x, y, z, angle);
PlayerCars--;
if(LockStatus[PlayerVehicleInfo[playerid][v][pvId]] != 0) LockStatus[PlayerVehicleInfo[playerid][v][pvId]] = 0;
//UpdatePlayerVehicleMods(playerid, v);
DestroyVehicle(PlayerVehicleInfo[playerid][v][pvId]);
Gas[PlayerVehicleInfo[playerid][v][pvId]] = 100.0;
PlayerVehicleInfo[playerid][v][pvId] = INVALID_PLAYER_VEHICLE_ID;
if(PlayerVehicleInfo[playerid][v][pvAllowedPlayerId] != INVALID_PLAYER_ID)
{
PlayerInfo[PlayerVehicleInfo[playerid][v][pvAllowedPlayerId]][pVehicleKeys] = INVALID_PLAYER_VEHICLE_ID;
PlayerInfo[PlayerVehicleInfo[playerid][v][pvAllowedPlayerId]][pVehicleKeysFrom] = INVALID_PLAYER_ID;
PlayerVehicleInfo[playerid][v][pvAllowedPlayerId] = INVALID_PLAYER_ID;
}
}
}
}
stock UpdatePlayerVehicleParkPosition(playerid, playervehicleid, Float:newx, Float:newy, Float:newz, Float:newangle, Float:health)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
if(PlayerVehicleInfo[playerid][playervehicleid][pvId] != INVALID_PLAYER_VEHICLE_ID)
{
if(PlayerVehicleInfo[playerid][playervehicleid][pvPlate] != 0) {
SetVehicleNumberPlate(playervehicleid, PlayerVehicleInfo[playerid][playervehicleid][pvPlate]);
}
new Float:oldx, Float:oldy, Float:oldz, Float: oldfuel;
oldx = PlayerVehicleInfo[playerid][playervehicleid][pvPosX];
oldy = PlayerVehicleInfo[playerid][playervehicleid][pvPosY];
oldz = PlayerVehicleInfo[playerid][playervehicleid][pvPosZ];
if(oldx == newx && oldy == newy && oldz == newz) return 0;
PlayerVehicleInfo[playerid][playervehicleid][pvPosX] = newx;
PlayerVehicleInfo[playerid][playervehicleid][pvPosY] = newy;
PlayerVehicleInfo[playerid][playervehicleid][pvPosZ] = newz;
PlayerVehicleInfo[playerid][playervehicleid][pvPosAngle] = newangle;
Gas[PlayerVehicleInfo[playerid][playervehicleid][pvId]] = 100.0;
for(new c=0; c<12; c++) {
RemoveVehicleComponent(playervehicleid, c);
}
//UpdatePlayerVehicleMods(playerid, playervehicleid);
DestroyVehicle(PlayerVehicleInfo[playerid][playervehicleid][pvId]);
new carcreated = AddStaticVehicleEx(PlayerVehicleInfo[playerid][playervehicleid][pvModelId], PlayerVehicleInfo[playerid][playervehicleid][pvPosX], PlayerVehicleInfo[playerid][playervehicleid][pvPosY], PlayerVehicleInfo[playerid][playervehicleid][pvPosZ],
PlayerVehicleInfo[playerid][playervehicleid][pvPosAngle],PlayerVehicleInfo[playerid][playervehicleid][pvColor1], PlayerVehicleInfo[playerid][playervehicleid][pvColor2], -1);
PlayerVehicleInfo[playerid][playervehicleid][pvId] = carcreated;
Gas[carcreated] = oldfuel;
SetVehicleNumberPlate(carcreated, PlayerVehicleInfo[playerid][playervehicleid][pvPlate]);
SetVehicleHealth(carcreated, health);
if(PlayerVehicleInfo[playerid][playervehicleid][pvLocked] == 1) LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][playervehicleid][pvId], PlayerVehicleInfo[playerid][playervehicleid][pvLock]);
//LoadPlayerVehicleMods(playerid, playervehicleid);
return 1;
}
return 0;
}
Re: Unknown Plate Showing -
Konstantinos - 19.05.2016
PlayerVehicleInfo[i][v][pvPlate] is a string so use %s instead of %d specifier in format.
Re: Unknown Plate Showing -
lwilson - 19.05.2016
Thankyou! One last question, how can I do xxx-000 format?
Re: Unknown Plate Showing -
Konstantinos - 19.05.2016
Currently your plate is generated as a 6-digit number. Are you planning on keeping the number generated and just add "-000" to it or are you going to use a 3-digit number as displayed above?
Re: Unknown Plate Showing -
lwilson - 19.05.2016
I want to do something like "SDA-221" but I don't know how to random letters not like what I've done to the digits.
Re: Unknown Plate Showing -
ilijap - 19.05.2016
Try like this:
Код:
new plate[15];
new LetterList[26][] =
{
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
};
new stringpl[5];
for(new i=0; i < 3; i++)
{
format(stringpl, 5, "%s", LetterList[random(26)]);
strcat(plate, stringpl);
}
strcat(plate, "-");
for(new i=0; i < 3; i++)
{
format(stringpl, 5, "%d", random(9));
strcat(plate, stringpl);
}
I am not sure if this works but try it
Re: Unknown Plate Showing -
Konstantinos - 19.05.2016
pawn Код:
RandomEx(min, max)
{
return random(max - min) + min;
}
pawn Код:
format(PlayerVehicleInfo[playerid][v][pvPlate], 32, "%c%c%c-%i", RandomEx('A', 'Z' + 1), RandomEx('A', 'Z' + 1), RandomEx('A', 'Z' + 1), RandomEx(100, 1000));
If that format will be permanent, you may want to change the size of pvPlate to 8.