SA-MP Forums Archive
Como Puedo Hacer Este Comando - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Como Puedo Hacer Este Comando (/showthread.php?tid=183830)



Como Puedo Hacer Este Comando - LSM_naxo_rap - 16.10.2010

Hola ,Pues como puedo crear un comando asi /v [Id/nombre] [Color1 [Color2]
Pero Para Que Lo Usen Todos Pues intente sacarlo de un fs pero me marca Error en el stock GetVehicleModelIDFromName. Pues si tienen ese comando me lo podran pasar por favor :$.

Saludos


Re: Como Puedo Hacer Este Comando - SeQualX - 17.10.2010

Ese comando es solo para los vehiculos que tienen la variable de venta, si lo usas con un vehiculo del pawno obviamente votara error ya que la funsion guarda el cambio del color via scriptfile.


Re: Como Puedo Hacer Este Comando - TheChaoz - 17.10.2010

Quote:
Originally Posted by SeQualX
Посмотреть сообщение
Ese comando es solo para los vehiculos que tienen la variable de venta, si lo usas con un vehiculo del pawno obviamente votara error ya que la funsion guarda el cambio del color via scriptfile.
FAIL, no es asi.

mira el Ladmin4v2 que tiene un comando similar que cumple con lo que vos pedis. creo q es "/car"


Re: Como Puedo Hacer Este Comando - SeQualX - 17.10.2010

pawn Код:
else if(strcmp(x_nr,"color",true) == 0)
            {
                if(PlayerInfo[playerid][pPcarkey] == 999 && PlayerInfo[playerid][pPcarkey2] == 999 && PlayerInfo[playerid][pPcarkey3] == 999)
                {
                    SendClientMessage(playerid, COLOR_GREY,"No tienes un coche para pintar!");
                    return 1;
                }
                if(GetPlayerMoney(playerid) < 99)
                {
                    SendClientMessage(playerid, COLOR_GREY,"No Tienes Tanto Dinero Para Pintar Este Coche.");
                    return 1;
                }
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COLOR_WHITE, "Utiliza: /V Color [Color 1] [Color 2]");
                    return 1;
                }
                new color1;
                color1 = strval(tmp);
                if(color1 < 0 && color1 > 126)
                {
                    SendClientMessage(playerid, COLOR_GREY, "Color Erronea. Utilize: Numero 0 ~ 126.");
                    return 1;
                }
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COLOR_WHITE, "Utiliza: /V Color [Color 1] [Color 2]");
                    return 1;
                }
                new color2;
                color2 = strval(tmp);
                if(color2 < 0 && color2 > 126)
                {
                    SendClientMessage(playerid, COLOR_GREY, "Color Erronea. Utilize: Numero 0 ~ 126.");
                    return 1;
                }

                new vehid;
                if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey]) { vehid = PlayerInfo[playerid][pPcarkey]; }
                else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey2]) { vehid = PlayerInfo[playerid][pPcarkey2]; }
                else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey3]) { vehid = PlayerInfo[playerid][pPcarkey3]; }
                else { return 1; }

                if(IsPlayerInVehicle(playerid, vehid))
                {
                    CarInfo[vehid][cColorOne] = color1;
                    CarInfo[vehid][cColorTwo] = color2;
                    SafeGivePlayerMoney(playerid, -100);
                    GameTextForPlayer(playerid, "~w~Vehiculo Pintado Por~n~~r~-$100", 5000, 1);
                    ChangeVehicleColor(vehid, color1, color2);
                    OnPropUpdate();
                    OnPlayerUpdate(playerid);
                    return 1;
                }
                else
                {
                    SendClientMessage(playerid, COLOR_GREY," Este Coche No Es Tuyo.");
                    return 1;
                }
            }
Si es asi

CarInfo[vehid][cColorOne] = color1;
CarInfo[vehid][cColorTwo] = color2;

esa es la info de cada color que modifica en el script poreso no se puede usar con carros que no sean de venta...


Re: Como Puedo Hacer Este Comando - mamc_crazy - 17.10.2010

Mm Solo define lo que te tira error

pawn Код:
GetVehicleModelIDFromName(vname[])
{
   for(new i = 0; i < 211; i++)
   {
      if(strfind(aVehicleNames[i], vname, true) != -1)
      return i + 400;
   }
   return -1;
}
Y si kieres todo el comando

pawn Код:
if(strcmp(cmd, "/v", true, 10) == 0)//Comando!
{
      new String[200];
      new tmp[256];
      new Float:x, Float:y, Float:z;
      new v[MAX_PLAYERS];
      DestroyVehicle(v[playerid]);
      tmp = strtok(cmdtext, idx);
      if(!strlen(tmp)) return SendClientMessage(playerid, BLANCO, "Use /v [Nombre/Modelo]");

      new vehicle = GetVehicleModelIDFromName(tmp);
      if(vehicle < 400 || vehicle > 611) return SendClientMessage(playerid, COLOR_ROJO, "Nombre invalido.");


      new Float:a;
      GetPlayerFacingAngle(playerid, a);
      GetPlayerPos(playerid, x, y, z);
      DestroyVehicle(v[playerid]);
      if(IsPlayerInAnyVehicle(playerid) == 1)
      {
         GetXYInFrontOfPlayer(playerid, x, y, 8);
      }
      else
      {
         GetXYInFrontOfPlayer(playerid, x, y, 5);
      }
      if(strcmp(cmd, "/v", true, 10) == 0)
      DestroyVehicle(v[playerid]);
      v[playerid] = CreateVehicle(vehicle, x, y, z, a, -1, -1, 60);
      LinkVehicleToInterior(v[playerid], GetPlayerInterior(playerid));
      PutPlayerInVehicle(playerid,v[playerid],0);

      format(String, sizeof(String), "Toma tu %s", aVehicleNames[vehicle - 400]);
      SendClientMessage(playerid, COLOR_VERDE, String);
      return 1;
}



Re: Como Puedo Hacer Este Comando - SuperMarioRol - 17.10.2010

Es esto?
pawn Код:
if(strcmp(cmd, "/veh", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if (PlayerInfo[playerid][pAdmin] < 4)
            {
                SendClientMessage(playerid, COLOR_GRAD1, "   No estas autorizado a usar ese comando!");
                return 1;
            }
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USO: /veh [carid] [color1] [color2]");
                return 1;
            }
            new car;
            car = strval(tmp);
            if(car < 400 || car > 611) { SendClientMessage(playerid, COLOR_GREY, "   El numero de vehiclo solo puede estar entre 400 y 611 !"); return 1; }
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USO: /veh [carid] [color1] [color2]");
                return 1;
            }
            new color1;
            color1 = strval(tmp);
            if(color1 < 0 || color1 > 126) { SendClientMessage(playerid, COLOR_GREY, "   El numero de la pintura solo puede estar entre 0 y 126!"); return 1; }
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USO: /veh [carid] [color1] [color2]");
                return 1;
            }
            new color2;
            color2 = strval(tmp);
            if(color2 < 0 || color2 > 126) { SendClientMessage(playerid, COLOR_GREY, "   El numero de la pintura solo puede estar entre 0 y 126"); return 1; }
            new Float:X,Float:Y,Float:Z;
            GetPlayerPos(playerid, X,Y,Z);
            new carid = CreateVehicle(car, X,Y,Z, 0.0, color1, color2, 600000);
            CreatedCars[CreatedCar] = carid;
            CreatedCar ++;
            format(string, sizeof(string), "   Vehiculo %d spawneado.", carid);
            SendClientMessage(playerid, COLOR_GREY, string);
        }
        return 1;
    }
Versiуn Para RP


Re: Como Puedo Hacer Este Comando - LSM_naxo_rap - 17.10.2010

mamc_crazy Me Da Los Mismo Errores El Que Tenia

SuperMarioRol Sii ese es pero no lo tendras para no version de rp??

Saludos


Re: Como Puedo Hacer Este Comando - SuperMarioRol - 17.10.2010

No, no lo tengo pero solo quitando lo de admin y poco mбs deberia ir...o no...no lo sй

Leyendo el codigo tal vez sea con la funcion createdcars, luego te lo miro mejor


Re: Como Puedo Hacer Este Comando - cocolabush - 17.10.2010

Por que no vas por partes?? ...

-Crea un comando que sea /v [id] y te cree el vehiculo en negro. (funciones que vas a usar strtok y strcmp)
NOTA: Puede que no tengas strtok en tu gm... intenta conseguirlo de algun

-Una vez hecho esto estoy podes agregarle los nombres: Los ordenas alfabeticamente y vas reduciendo los nombres al minimo hasta para que sean lo mas cortos posibles, pero no se "choquen" con otros nombres de autos similares. ("infernus" va a pasar a ser "inf", no podria ser "in" porque chocaria con "intruder")
Les definis el modelo a cada nombre...
Finalmente unis el comando anterior con este.

-Ahora podes agregarle el [color1] y [color2]...
Es realmente muy simple. Ya teniendo de base que los autos que creas salgan negros tenes ya habilitada que si el jugador no llena los casilleros de color le salga negro.
Para crear los casilleros tenes que usar la misma funcion que en el primer paso: strtok. Tambien vas a tener que usar strval para pasar el texto en donde dice el color a un numero.

Si pudiste hacer que el comando funcione correctamente lo unico que queda es restringir los modelos para admins .. etc ...

suerte!.


Re: Como Puedo Hacer Este Comando - mamc_crazy - 17.10.2010

Talves Te falto definir esto:

pawn Код:
stock GetXYInFrontOfPlayer(playerid, &Float:x2, &Float:y2, Float:distance)
{
   new Float:a;

   GetPlayerPos(playerid, x2, y2, a);
   GetPlayerFacingAngle(playerid, a);

   if(GetPlayerVehicleID(playerid))
   {
      GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
   }

   x2 += (distance * floatsin(-a, degrees));
   y2 += (distance * floatcos(-a, degrees));
}