Ayuda con el comando /jail por favor
#1

Bueno chicos, tengo este comando /jail

pawn Код:
dcmd_jail(playerid, params[])
    {
        new
            pName[ MAX_PLAYER_NAME ];

        if ( IsPlayerAdmin( playerid ) || pData[ playerid ][ P_LEVEL ] >= _:P_LEVEL_MOD )
        {
            new targetid, minutes;
            if(sscanf(params, "ri", targetid, minutes)) return SendClientMessage(playerid, COLOR_WHITE,"USO: /jail [id] [minutos]");
            if(minutes <= 3 || minutes > 5) return SendClientMessage(playerid, COLOR_RED, "Minutos validos: {FFFFFF}3, 4, 5");
            if(targetid == playerid) return SendClientMessage(playerid, COLOR_RED, "ERROR: No te puedes encarcelar a ti mismo.");
            else
            {
                new str[128];
                format(str, sizeof(str), ">> %s ha sido encarcelado %d minutos", pName, minutes);
                SendClientMessageToAll(COLOR_ORANGE,str);
                JailTimer[targetid] = SetTimer("Unjail", minutes*60*1000, false);
                SetPlayerPos(targetid, 264.4176, 77.8930, 1001.0391);
                SetPlayerInterior(playerid, 6);
                inJail[targetid] = true;
                GameTextForPlayer(playerid, "~p~HAS SIDO ENCARCELADO", 10000, 6);
                PlayerPlaySound(targetid,1057,0.0,0.0,0.0);
            }
        }
        return 1;
}
el problema es que cuando pongo.. ejemplo: "/jail 4 5" me sale el mensaje de cantidad de minutos invalida " Minutos validos: 3, 4, 5 " no se por que sale ese mensaje si he intentado con las 3 cifras que admite (3,4 y 5) alguien me podrнa decir donde esta el error? compila bien y todo
Reply
#2

Creo que el codigo dice solo numeros entre 3 y 5
Reply
#3

Efectivamente, yo he colocado esos nъmeros y he utilizado el comando de manera correcta:

/jail 1 3
/jail 1 4
/jail 1 5

tal y como lo indica la linea:
Quote:

if(minutes <= 3 || minutes > 5) return SendClientMessage(playerid, COLOR_RED, "Minutos validos: {FFFFFF}3, 4, 5");

Pero no funciona
Reply
#4

pawn Код:
if(minutes >= 3 || minutes <= 5) return SendClientMessage(playerid, COLOR_RED, "Minutos validos: {FFFFFF}3, 4, 5");
Reply
#5

Quote:
Originally Posted by xTexTx
Посмотреть сообщение
pawn Код:
if(minutes >= 3 || minutes <= 5) return SendClientMessage(playerid, COLOR_RED, "Minutos validos: {FFFFFF}3, 4, 5");
Estб mal, en todo caso serнa:

pawn Код:
if(minutes < 3 || minutes > 5) return SendClientMessage(playerid, COLOR_RED, "Minutos validos: {FFFFFF}3, 4, 5");
Reply
#6

їNo se supone que serнa 3, 4 y 5?, creo que tu cуdigo solo dejarнa poner 4.

EDIT: Quizas mal interpreto yo esto:


Quote:

A < B - Retorna verdadero si A es menor que B, de lo contrario retorna falso
A > B - Retorna verdadero si A es mayor que B, de lo contrario retorna falso

Reply
#7

Quote:
Originally Posted by xTexTx
Посмотреть сообщение
їNo se supone que serнa 3, 4 y 5?, creo que tu cуdigo solo dejarнa poner 4.
Pruйbalo tъ mismo.
Reply
#8

Supongo que tienes razуn, igual de todas formas no puedo entrar al SA-MP, me anda lento.
Reply
#9

No ha funcionado de ninguna de las 2 maneras jajaja, pero gracias por intentar ayudarme

EDITO:

He decididio usar otro cуdigo, que encontre aquн mismo en el foro... este de Miguel, por cierto.

y es este (Ya acomodado con mi gm):

Variable Global

pawn Код:
new bool: Jailed [MAX_PLAYERS];
Callback
pawn Код:
forward Libre(playerid);
public Libre( playerid )
{

    Jailed = false;
    GameTextForPlayer( playerid, "eres libre", 7500, 0 );
    SetPlayerPos(playerid, 1681.3818, 1447.7876, 10.7729);
 
  return 1;
}
Comando
pawn Код:
dcmd_jail(playerid, params[])
{
  new id,
    tiempo,
    string[128];

  if(sscanf(params, "ud", id, tiempo))
  {
    SendClientMessage(playerid, COLOR_WHITE, "USO: /jail [id] [minutos]");
  }
  else if(id == INVALID_PLAYER_ID)
  {
    SendClientMessage(playerid, COLOR_RED, "Ese jugador no estб conectado!");
  }
  else if(Jailed[id] == true)
  {
    SendClientMessage(playerid, COLOR_RED, "Ese jugador ya estб encarcelado!");
  }
  else
  {
    SetTimerEx("Libre", 1000 * tiempo, false, "d", id);
    format(string, sizeof(string), "Has encarcelado al ID: %d!", id);
    SendClientMessage(playerid, COLOR_RED, string);
    GameTextForPlayer(playerid, "HAS SIDO ENCARCELADO", 7500, 0);
  }
  return 1;
}

Y me da este error:

pawn Код:
(629) : error 033: array must be indexed (variable "Jailed")
La linea 629 es esta:
pawn Код:
Jailed = false;
Entonces, si borro la linea compila.. pero cuando pongo, ejemplo; /jail 2 5 solo me pone el GameTextForPlayer y no me manda a la carcel.
Reply
#10

Quote:
Originally Posted by FlavioCesar
Посмотреть сообщение
No ha funcionado de ninguna de las 2 maneras jajaja, pero gracias por intentar ayudarme

EDITO:

He decididio usar otro cуdigo, que encontre aquн mismo en el foro... este de Miguel, por cierto.

y es este (Ya acomodado con mi gm):

Variable Global

pawn Код:
new bool: Jailed [MAX_PLAYERS];
Callback
pawn Код:
forward Libre(playerid);
public Libre( playerid )
{

    Jailed = false;
    GameTextForPlayer( playerid, "eres libre", 7500, 0 );
    SetPlayerPos(playerid, 1681.3818, 1447.7876, 10.7729);
 
  return 1;
}
Comando
pawn Код:
dcmd_jail(playerid, params[])
{
  new id,
    tiempo,
    string[128];

  if(sscanf(params, "ud", id, tiempo))
  {
    SendClientMessage(playerid, COLOR_WHITE, "USO: /jail [id] [minutos]");
  }
  else if(id == INVALID_PLAYER_ID)
  {
    SendClientMessage(playerid, COLOR_RED, "Ese jugador no estб conectado!");
  }
  else if(Jailed[id] == true)
  {
    SendClientMessage(playerid, COLOR_RED, "Ese jugador ya estб encarcelado!");
  }
  else
  {
    SetTimerEx("Libre", 1000 * tiempo, false, "d", id);
    format(string, sizeof(string), "Has encarcelado al ID: %d!", id);
    SendClientMessage(playerid, COLOR_RED, string);
    GameTextForPlayer(playerid, "HAS SIDO ENCARCELADO", 7500, 0);
  }
  return 1;
}

Y me da este error:

pawn Код:
(629) : error 033: array must be indexed (variable "Jailed")
La linea 629 es esta:
pawn Код:
Jailed = false;
Entonces, si borro la linea compila.. pero cuando pongo, ejemplo; /jail 2 5 solo me pone el GameTextForPlayer y no me manda a la carcel.
Quiero que me respondas algo.

їPor quй definis una variable para cada jugador, si luego vas a usarla simplemente como un texto y no la vas a definir para cada playerid?.

Jailed[MAX_PLAYERS]; estбs definiendo la variable 'Jailed' para cada jugador.

їEntonces como se usarнa? (Si, volvimos a primer grado)

Jailed[playerid] = false;
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)