Como Crear Un Comando
#1

Buenas Como Crear Un COmando Con swhit y case ose Que vos pongas /auto 1 y te de un auto /auto 2 y otro nose si se entiende que todo Forme Parte De un mismo Comando Osea
pawn Код:
if(strcmp(cdmtext,"/auto",true,10)==0)
{
new Float:X ,Float:Y,Float:O;
Swhit:Autos
{
Case 1 : CreateVeiclehid(522,x,y,o,0,1);
}
}
return 1
}
Me Avia Dado Esa Idea PERO NO Va xP
Reply
#2

Podes intentar hacer algo asi mira:
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, "1", true) == 0) modelo = 1;
    else if(strcmp(tmp, "2", true) == 0) modelo = 2;
    else if(strcmp(tmp, "3", true) == 0) modelo = 3;
    else if(strcmp(tmp, "4", 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(510, 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(modelo, 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(modelo, 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(modelo, X, Y, Z, A, 0, 1, 15);
      SetVehicleVirtualWorld(Auto[playerid], W);
      LinkVehicleToInterior(Auto[playerid], I);
      PutPlayerInVehicle(playerid, Auto[playerid]);    
    }
    return 1;
  }

  return 0;
}
espero que te sirva.

PD: era un poco mas largo de lo que habias pensado xD
Reply
#3

Bueno Muchas Gracias Me a Funciona mira E Pueso los coches Por ID :P
pawn Код:
if(strcmp(tmp, "560", true) == 0) modelo = 1;
Como ago QUe Ademas De Poner /auto 560 Pueda Poner /auto Inferno
Reply
#4

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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)