Vehicle Spawning with name
#1

Good day! I am having an problem. my vehicle command is giving out error 035: argument type mismatch (argument 1)

pawn Код:
CMD:veh(playerid, params[])
{
    new Vehicle[50], color1, color2;
    if(sscanf(params, "s[50]dd", Vehicle, color1, color2)) return SendClientMessage(playerid, COLOR_RED, "[SERVER]: /veh [car] [color1] [color2]");
    else
    {
        new string[128], angle;
        new veh = GetVehicleModel(Vehicle); // The problem is here
        new Float:X, Float:Y, Float:Z;
        GetPlayerPos(playerid, X, Y, Z);
        new PVeh = CreateVehicle(veh, X+3, Y, Z, angle, -1, -1, -1);
        LinkVehicleToInterior(PVeh, GetPlayerInterior(playerid)); SetVehicleVirtualWorld(PVeh, GetPlayerVirtualWorld(playerid));
        format(string, sizeof(string), "[SERVER]: You have spawned a %s. ID: %i. ", VehicleNames[veh - 400], veh);
        SendClientMessage(playerid, COLOR_GREEN, string);
        PutPlayerInVehicle(playerid, veh, 0);
        ChangeVehicleColor(veh, color1, color2);
        if(veh < 400 || veh > 611) return SendClientMessage(playerid, COLOR_RED, "Invalid Vehicle ID / Name.");
    }
    return 1;
}
Whats wrong?
Reply
#2

https://sampwiki.blast.hk/wiki/GetVehicleModel
Reply
#3

Quote:
Originally Posted by AeroBlast
Посмотреть сообщение
How should I be doing this then, if not using GetVehicleModel ?
Reply
#4

First, you add this at the top of your script:

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"
};
Then, you put this somewhere in your script:
pawn Код:
GetVehicleModelIDFromName(vname[])
{
    for(new i = 0; i < 211; i++)
    {
        if ( strfind(VehicleNames[i], vname, true) != -1 )
            return i + 400;
    }
    return -1;
}
And the command:
pawn Код:
CMD:veh(playerid, params[])
{
    new Vehicle[50], color1, color2;
    if(sscanf(params, "s[50]dd", Vehicle, color1, color2)) return SendClientMessage(playerid, COLOR_RED, "[SERVER]: /veh [car] [color1] [color2]");
    else
    {
        new string[128], angle;
        new veh = GetVehicleModelIDFromName(Vehicle);
        new Float:X, Float:Y, Float:Z;
        GetPlayerPos(playerid, X, Y, Z);
        new PVeh = CreateVehicle(veh, X+3, Y, Z, angle, -1, -1, -1);
        LinkVehicleToInterior(PVeh, GetPlayerInterior(playerid));
        SetVehicleVirtualWorld(PVeh, GetPlayerVirtualWorld(playerid));
        format(string, sizeof(string), "[SERVER]: You have spawned a %s. ID: %i. ", VehicleNames[veh - 400], veh);
        SendClientMessage(playerid, COLOR_GREEN, string);
        PutPlayerInVehicle(playerid, veh, 0);
        ChangeVehicleColor(veh, color1, color2);
        if(veh < 400 || veh > 611) return SendClientMessage(playerid, COLOR_RED, "Invalid Vehicle ID / Name.");
    }
    return 1;
}
This should work. (I think, haven't tested it)
Reply
#5

GetVehicelModel doesn't accept string vehicle names, only vehicleids. Ideally, you'd need an array with all the vehicle names in order to check your input against, and to get the right model id.
Reply
#6

That's because GetVehicleModel can only be used with integers. But your variable: "Vehicle" is a string.

Edit: too late..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)