/createcar with 'Car name'
#1

Hi guys. I have made a command to create different cars by their ID.
Question: How to make instead ID , car's name ?!!

Pawno code:

Код:
if(strcmp(cmd,"/createcar",true)==0) {
	if(IsPlayerLevel(playerid,10)) {
	tmp = strtok(cmdtext,idx);	if (!strlen(tmp)) { SendClientMessage(playerid,COLOUR_ORANGE,"Usage: /CREATCAR <ID> (400-604)"); return 1; }
	if (strval(tmp)<400) { SendClientMessage(playerid,COLOUR_ORANGE,"Usage: /CREATCAR <ID> (400-604)"); return 1; }
	if (strval(tmp)>604) { SendClientMessage(playerid,COLOUR_ORANGE,"Usage: /CREATCAR <ID> (400-604)"); return 1; }

	new State = GetPlayerState(playerid);
	if (State>1) { SendClientMessage(playerid,red," Error: Invlaid ID"); return 1; }

	if(creatcar!=-1) DestroyVehicle(creatcar);

	new Float:pos[4];
	GetPlayerPos(playerid, pos[0],pos[1],pos[2]);
	GetPlayerFacingAngle(playerid,pos[3]);
	creatcar = CreateVehicle(strval(tmp),pos[0],pos[1],pos[2],pos[3],-1,-1,10);
	PutPlayerInVehicle(playerid,creatcar,0);

			new i;
			for(i=0;i<MAX_PLAYERS;i++)
			{
				if(i != playerid)
				{
					SetVehicleParamsForPlayer(creatcar,i, 0, 1);
				}
			}

	} else AdminError(playerid,10);
return 1;
}
Reply
#2

Try this:
pawn Код:
#include <a_samp>

#define COLOUR_ORANGE 0xFF9900AA
#define COLOUR_BLUE 0x0099FFAA
new
    CreateCar[MAX_PLAYERS] = {-1,...};

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"
};

public OnFilterScriptInit() { return 1; }

public OnPlayerDisconnect(playerid, reason)
{
  if(CreateCar[playerid] != -1)
    {
        DestroyVehicle(CreateCar[playerid]);
        CreateCar[playerid] = -1;
    }
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new
      cmd[128],
      tmp[32],
      idx;
     
    cmd = strtok(cmdtext, idx);
   
    if(strcmp(cmd, "/createcar", true)==0)
    {
        if(IsPlayerAdmin(playerid)) // if(IsPlayerLevel(playerid, 10))
        {
            if(IsPlayerInAnyVehicle(playerid)) { return SendClientMessage(playerid, COLOUR_ORANGE, "Do not use command, in a vehicle!"); }

            tmp = strtok(cmdtext, idx);

            if(!strlen(tmp) || strlen(tmp) > 32) { return SendClientMessage(playerid, COLOUR_ORANGE, "Usage: /CREATCAR <ID/NAME> (400-611)"); }

            new
              car;

            if(!IsNumeric(tmp)) { car = GetVehicleModelIDFromName(tmp); } else { car = strval(tmp); }

            if(car > 611 || car < 400) { return SendClientMessage(playerid, COLOUR_ORANGE, "Invalid Vehicle ID or Vehicle Name! Usage: /CREATCAR <ID/NAME> (400-611)"); }
           
            if(CreateCar[playerid] != -1) { DestroyVehicle(CreateCar[playerid]); }

            new
                Float:pos[4];
            GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
            GetPlayerFacingAngle(playerid, pos[3]);
           
            CreateCar[playerid] = CreateVehicle(car, pos[0], pos[1], pos[2], pos[3], -1, -1, 50000);
            PutPlayerInVehicle(playerid, CreateCar[playerid], 0);

            new
              MaxPlayers = GetMaxPlayers();
            for(new i; i < MaxPlayers; i++)
            {
              if(!IsPlayerConnected(i) || i == playerid) continue;

              SetVehicleParamsForPlayer(CreateCar[playerid], i, 0, true);
            }
           
            new
              string[144];
            format(string, sizeof string, "Created vehicle type: %s", VehicleNames[car-400]);
            SendClientMessage(playerid, COLOUR_BLUE, string);

            return 1;
        } else return SendClientMessage(playerid, COLOUR_ORANGE, "You are not RCON Admin!"); // AdminError(playerid,10);
    }
    return 0;
}

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

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

stock strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[32];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
Reply
#3

Okay i will try, anyway some other variants?!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)