About vehicles
#1

I'm creating command of /v. i add [128] in scanff because i want to fix those warning by myself now i need your help guys it gives me those following warnings

Код:
[11:45:06] sscanf warning: Strings without a length are deprecated, please add a destination size.
[11:45:06] sscanf warning: Format specifier does not match parameter count.
the code is in below

pawn Код:
new VehicleNames[212][] = {
    "Landstalker","Bravura","Buffalo","Linerunner","Pereniel","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana","Infernus",
    "Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat","Mr Whoopee","BF Injection",
    "Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie",
    "Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder",
    "Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider",
    "Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR3 50","Walton","Regina",
    "Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","FBI Rancher","Virgo","Greenwood",
    "Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville","Benson","Mesa","RC Goblin","Hotring Racer A","Hotring Racer B",
    "Bloodring Banger","Rancher","Super GT","Elegant","Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain",
    "Nebula","Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune","Cadrona","FBI Truck",
    "Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight","Streak","Vortex","Vincent","Bullet","Clover",
    "Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A",
    "Monster B","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight","Trailer",
    "Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","Newsvan","Tug","Trailer A","Emperor",
    "Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C","Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)",
    "Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
    "Stair Trailer","Boxville","Farm Plow","Utility Trailer"
};

stock GetVehicleModelIDFromName(const vname[])
{
    for(new i=0; i < sizeof(VehicleNames); i++)
    {
        if (strfind(VehicleNames[i], vname, true) != -1) return i + 400;
    }
    return -1;
}

stock IsNumeric(const string[])
{
    for (new i = 0, j = strlen(string); i < j; i++)
    {
        if (string[i] > '9' || string[i] < '0') return 0;
    }
    return 1;
}

CMD:v(playerid,params[])
{
    new vID[32],modelid,color1,color2;
    if(sscanf(params,"sdd[128]",vID,color1,color2)) return SendClientMessage(playerid,COLOR_RED,"USAGE: /v <vehiclename/id> <color1> <color2>");
    if(IsNumeric(vID)) modelid = strval(vID);
    else modelid = GetVehicleModelIDFromName(vID);
    if(modelid < 400 || modelid > 611) return SendClientMessage(playerid,COLOR_RED, "Invalid Vehiclename/ID!");
    new Float:pVposX, Float:pVposY, Float:pVposZ, Float:pVposFA;
    GetPlayerPos(playerid, pVposX, pVposY, pVposZ);
    GetPlayerFacingAngle(playerid, pVposFA);
    if(IsPlayerInAnyVehicle(playerid))
    {
        new VID = GetPlayerVehicleID(playerid);
        GetVehicleZAngle(VID, pVposFA);
    }
    new CVID, pVW, pINT;
    pVW = GetPlayerVirtualWorld(playerid);
    pINT = GetPlayerInterior(playerid);
    CVID = CreateVehicle(modelid, pVposX, pVposY, pVposZ+0.6, pVposFA,color1,color2,0);
    SetVehicleVirtualWorld(CVID, pVW);
    LinkVehicleToInterior(CVID, pINT);
    PutPlayerInVehicle(playerid,CVID,0);
    new string[128];
    format(string,sizeof string,"VEHICLE: "yellow"%s "green"has been spawned!",VehicleNames[modelid-400]);
    SendClientMessage(playerid,COLOR_WHITE,string);
    return 1;
}
Also i need when player enters on a vehicle he will get a gametextforplayer
like in single player.

Please help me guys ASAP
Reply
#2

pawn Код:
if(sscanf(params,"s[128]dd",vID,color1,color2)
Reply
#3

i have question too how to add a nitros in all vehicle when i press LMB the vehicle will have nitros then the nitros will never never lose of Nitros i mean like stunt servers they using infinite nitros also how can i do to my command /v to not include color 1 and color 2 example i type /v sultan it shows me i needed color1 color 2 i want to not include them when using the command but color1 and color2 will be still there how can i do that

sorry for fail english
Reply
#4

For the infinite nitro, you need to check if the player is holding LMB under OnPlayerKeyStateChange then add the component 1010 to the vehicle.

For the second question, looking into optional parameters of sscanf.
Reply
#5

ok i done my 1st question now i dont know how to do that 2nd question
Reply
#6

pawn Код:
if(sscanf(params,"s[128]D(-1)D(-1)",vID,color1,color2))
//Specifying -1 will make the default colour be -1 (unsynced random colour),
//if the user haven't input any colour.
//You can always change the colour value to the default colour you want.
Reply
#7

hmmm is this function will do what i want like when i type /v sultan i dont need color1 and color2?
Reply
#8

it still keep saying "/v <vehiclename/id> <color1> <color2>" i try to /v sultan but it dont work
i want to not include color1 and color2 in my command /v but the color1 and color2 is still
in command
Reply
#9

bump
Reply
#10

Put this at the top of your script where your defines are,

pawn Код:
#define green "{008000}"
#define yellow "{FAF623}"
#define COLOR_RED 0xAA3333AA
Put this where you put the commands of zcmd,

pawn Код:
stock GetVehicleModelIDFromName(const vname[])
{
    for(new i=0; i < sizeof(VehicleNames); i++)
    {
        if (strfind(VehicleNames[i], vname, true) != -1) return i + 400;
    }
    return -1;
}
stock IsNumeric(const string[])
{
    for (new i = 0, j = strlen(string); i < j; i++)
    {
        if (string[i] > '9' || string[i] < '0') return 0;
    }
    return 1;
}
CMD:v(playerid,params[])
{
    new vID[32],modelid;
    if(sscanf(params,"s[128]dd",vID)) return SendClientMessage(playerid,COLOR_RED,"USAGE: /v <vehiclename/id>");
    if(IsNumeric(vID)) modelid = strval(vID);
    else modelid = GetVehicleModelIDFromName(vID);
    if(modelid < 400 || modelid > 611) return SendClientMessage(playerid,COLOR_RED, "Invalid Vehiclename/ID!");
    new Float:pVposX, Float:pVposY, Float:pVposZ, Float:pVposFA;
    GetPlayerPos(playerid, pVposX, pVposY, pVposZ);
    GetPlayerFacingAngle(playerid, pVposFA);
    if(IsPlayerInAnyVehicle(playerid))
    {
        new VID = GetPlayerVehicleID(playerid);
        GetVehicleZAngle(VID, pVposFA);
    }
    new CVID, pVW, pINT;
    pVW = GetPlayerVirtualWorld(playerid);
    pINT = GetPlayerInterior(playerid);
    CVID = CreateVehicle(modelid, pVposX, pVposY, pVposZ+0.6, pVposFA, 0);
    SetVehicleVirtualWorld(CVID, pVW);
    LinkVehicleToInterior(CVID, pINT);
    PutPlayerInVehicle(playerid,CVID,0);
    new string[128];
    format(string,sizeof string,"VEHICLE: "yellow"%s (model id: %i) "green"has been spawned!",VehicleNames[modelid-400],modelid);
    SendClientMessage(playerid,COLOR_WHITE,string);
    return 1;
}
I didn't test it yet, but I hope that I helped
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)