na xD para hacer eso cambia todo, si no te volves ****, (lo cual no significa que no se pueda hacer).
1є forma: siguiendo el modelo anterior:
Nota: Si lo vas a hacer para varios autos te recomiendo la otra forma ya que es mucho menos codigo.
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
new idx, cmd[256];
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/auto", true) == 0){
new tmp[256], modelo;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFF0000FF, "Uso: /auto [1-4]");
if(strcmp(tmp, "411", true) == 0 || strcmp(tmp, "Inferno", true) == 0) modelo = 1;
else if(strcmp(tmp, "522", true) == 0 || strcmp(tmp, "NRG", true) == 0) ) modelo = 2;
else if(strcmp(tmp, "481", true) == 0 || strcmp(tmp, "BMX", true) == 0) modelo = 3;
else if(strcmp(tmp, "562", true) == 0 || strcmp(tmp, "Elegy", true) == 0) modelo = 4;
else return SendClientMessage(playerid, 0xFF0000FF, "Uso: /auto [1-4]");
new Float:X, Float:Y, Float:Z, W, I, A, Auto[MAX_PLAYERS];
GetPlayerPos(playerid, X, Y, Z);
GetPlayerVirtualWorld(playerid, W);
GetPlayerInterior(playerid, I);
GetPlayerFacingAngle(playerid, A);
if(modelo == 1){
if(Auto[playerid] != 0) DestroyVehicle(Auto[playerid]);
Auto[playerid] = CreateVehicle(411, X, Y, Z, A, 0, 1, 15);
SetVehicleVirtualWorld(Auto[playerid], W);
LinkVehicleToInterior(Auto[playerid], I);
PutPlayerInVehicle(playerid, Auto[playerid]);
}
if(modelo == 2){
if(Auto[playerid] != 0) DestroyVehicle(Auto[playerid]);
Auto[playerid] = CreateVehicle(522, X, Y, Z, A, 0, 1, 15);
SetVehicleVirtualWorld(Auto[playerid], W);
LinkVehicleToInterior(Auto[playerid], I);
PutPlayerInVehicle(playerid, Auto[playerid]);
}
if(modelo == 3){
if(Auto[playerid] != 0) DestroyVehicle(Auto[playerid]);
Auto[playerid] = CreateVehicle(481, X, Y, Z, A, 0, 1, 15);
SetVehicleVirtualWorld(Auto[playerid], W);
LinkVehicleToInterior(Auto[playerid], I);
PutPlayerInVehicle(playerid, Auto[playerid]);
}
if(modelo == 4){
if(Auto[playerid] != 0) DestroyVehicle(Auto[playerid]);
Auto[playerid] = CreateVehicle(562, X, Y, Z, A, 0, 1, 15);
SetVehicleVirtualWorld(Auto[playerid], W);
LinkVehicleToInterior(Auto[playerid], I);
PutPlayerInVehicle(playerid, Auto[playerid]);
}
return 1;
}
return 0;
}
2є forma: para spawnear cualquier auto con 1 solo comando:
pawn Код:
//dcmd
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
pawn Код:
//array para guardar el vehiculo spawneado
Auto[MAX_PLAYERS];
//nombre de vehiculos
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","Securiauto","Banshee","P0xFF0000FFator","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","autogobob","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 auto (LSPD)",
"Police auto (SFPD)","Police auto (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"
};
pawn Код:
//definicion del comando
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(car, 3, cmdtext);
return 0;
}
pawn Код:
//comando en si
dcmd_auto(playerid,params[]) {
new tmp[256], Index;
tmp = strtok(params,Index);
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFF0000FF, "USO: /Auto <modelo>");
new auto, string[128];
if(!IsNumeric(tmp)) auto = GetVehicleModelIDFromName(tmp);
else auto = strval(tmp);
if(auto < 400 || auto > 611) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Modelo invalido");
if(Auto[playerid] != -1) DestroyVehicle(Auto[playerid]);
new Float:X,Float:Y,Float:Z, Float:A, W, I;
GetPlayerPos(playerid, X,Y,Z);
GetPlayerFacingAngle(playerid,A);
W = GetPlayerVirtualWorld(playerid);
I = GetPlayerInterior(playerid);
Auto[playerid] = CreateVehicle(auto, X+3,Y,Z, A, 0, 1, -1);
SetVehicleVirtualWorld(Auto[playerid], W);
LinkVehicleToInterior(Auto[playerid],I);
format(string, sizeof(string), "Has obtenido un %s", VehicleNames[auto-400]);
return SendClientMessage(playerid,0x07AAF8FF, string);
}
pawn Код:
//funciones necesarias
stock IsNumeric(string[])
{
for(new i = 0, j = strlen(string); i < j; i++){
if (string[i] > '9' || string[i] < '0') return 0;
}
return 1;
}
GetVehicleModelIDFromName(vname[])
{
for(new i = 0; i < 211; i++){
if(strfind(VehicleNames[i], vname, true) != -1) return i + 400;
}
return -1;
}
espero que te sirva, si hay algo mal decime que lo arreglo porque lo hice rapido y no lo chequie.