More efficient car spawn
#1

Is there a more efficient way to make a dialog that has the name of the cars and you click on it the car will spawn instead of under everyone having case 1: Case 2: etc
and then each having CreateVehicle(vehicleid, x+3, y, z,angle, color1, color2, -1);
Reply
#2

You can use the following:

pawn Код:
new CarNames[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"
};

CMD:cars(playerid, params[])
{
    new carString[1024];

    for(new i = 400; i < 600; i++)
    {
        format(carString, sizeof(carString), "%s%s\n", carString, CarNames[i]);
    }

    ShowPlayerDialog(playerid, 1337, DIALOG_STYLE_LIST, "Vehicle spawner", carString, "Spawn", "Close");
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 1337)
    {
        if(response)
        {
            listitem += 400;

            new string[128];
           
            format(string, sizeof(string), "You've spawned a %d (%s)", listitem, CarNames[listitem]);
            SendClientMessage(playerid, -1, string);
           
            new
                Float: iPos[3];
               
            GetPlayerPos(playerid, iPos[0], iPos[1], iPos[2]);
           
            new vehicle = CreateVehicle(listitem, iPos[0], iPos[1], iPos[2], 0.0, -1, -1, -1);
            PutPlayerInVehicle(playerid, vehicle, 0);
        }
    }
    return 1;
}
Just one thing: I don't know how many items the DIALOG_STYLE_LIST can hold. So if I were you I would split the vehicles into 2 or 3 different dialogs.
Reply
#3

Do you mind explaining the code?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)