Saltar al contenido
  • Global

    Global

    Chatroom Rules

    • NO SE DA SOPORTE EN CHATBOX
    • NO SPAM
    • NO FLOOD

[TUTORIAL] Como bloquear todos los comandos


Publicaciones recomendadas

  • Usuario
Publicado (editado)

Buenas.

 

Este tutorial lo hago, como dije en otro tema, para probar mis conocimientos sobre Scripting y mejorarlos.

 

Comenzamos:

 

Definimos la variable:

new GTACL[MAX_PLAYERS];

El nombre de nuestra variable se llamará "GTACL" por lo que esa utilizaremos y nos será de grán ayuda.

 

Primero que nada y para que no sucedan BUG's u otra cosa, hacemos que cuando el jugador se conecte, el bloqueo no este activado.

public OnPlayerConnect(playerid)
{
   GTACL[playerid] = 0; /* Aquí pueden usar true o false, significa lo mismo que 1 & 0 */
}

Ejemplos de la variable

GTACL[playerid] = 1; /* Aquí como esta en 1 (O si quieren pongan true) estan bloqueados los comandos*/



GTACL[playerid] = 0; /* Aquí esta en 0 (Puede ser false) y aquí se desbloquean */

Ahora crearemos el comando y aplicaremos el bloqueo, luego explicare todo.

public OnPlayerCommandText(playerid, cmdtext[])
{
 
   /* Creamos lo que le aparecerá si es que lo tiene en "true" o "1" */
 
   if(GTACL[playerid] == 1) return SendClientMessage(playerid, COLOR_FLAITE, ">(ERROR)< {FFFFFF}Comandos bloqueados!");
   /* Aquí damos a conocer al sistema de que si el jugador tiene los comandos bloqueados poniendole "1" o "true" para que lo reconozca y lo que esta después del "return" es el mensaje que le aparecerá o pueden cambiarlo*/
   
   /* Creamos el comando */
 
   if(!strcmp(cmdtext, "/jamon", true))
   {
      GTACL[playerid] = 1; // Activamos el bloqueo
      SetPlayerPos(playerid, X, Y , Z);
      GivePlayerWeapon, 35, 999999);
      return 0;
   }
return SendClientMessage(playerid, COLOR_FLAITE, ">(ERROR)< {FFFFFF}Comando incorrecto, utiliza /Comandos");
/* Esto es algo extra xd es el mensaje que le aparecerá al jugador si typea un comando que no existe */
} 

Bueno, ya lo tenemos definido y aplicado pero ¿Que falta?......

 

Si estas en un minijuego y mueres seguiras con los comandos bloqueados, así que para hacerlo más fácil, los comandos se desbloquearán cuando el jugador muera (Aunque hay varias formas y estilos para desbloquear)

 

En este caso utilizaremos esta callback

public OnPlayerDeath(playerid, killerid, reason)
{
   GTACL[playerid] = 0; // Aquí desactivamos la variable para que pueda usar los comandos
}

Bueno, esto es básico (Eso creo o si no Intermedio, yo no aprendo según las guías, aprendo según lo que me interese xd ) pero sirve mucho y es muy aplicado en servidores Freeroam, algunos TDM, RP, entre otros.

 

Es diferente la cosa con el include ZCMD pero si todo va bien, lo hago para ese include o un sistema anti hack básico $:

 

P.D: Algún error o algo diganlo para solucionarlo ya que yo también soy humano y me puedo equivocar.

Chao :)

Editado por Hammond.
  • Usuario
Publicado

Una pregunta hammond el tema ese no seria el mismo scipt de comandos del tdm? Ademas si lo quiero bloquear en un evento ? Ahh y ademas eso es para crear un comando de admins para bloquear los ocmandos del user no? Ademas le podremos cambiar el nombre del comando a otro no?

Me estoy dedicando al script :D

  • Usuario
Publicado (editado)

Es algo similar, esta tecnica fué aplicada para los eventos del TDM si mal no recuerdo en el cual solo puedes usar el comando /salir pero eso solo te lo puedo explicar con el include zcmd por que es más fácil de usar y por que le entiendo más.

 

Y para crear un comando administrativo primero debes tener un sistema de registro para que no se te dificulte.

Aquí el comando si e sque ya tienes sistema de admin:

if(!strcmp(cmdtext, "/Acmd", true))
{
   if(PlayerInfo[playerid][pAdmin] > 1)
   {
      SendClientMessage(playerid, COLOR_WHITE, "|| Comandos Administrativos ||");                           SendClientMessage(playerid, COLOR_WHITE, " - /Traer - /Ir - /Csm - /Saludar - ")
   }
   else
   {
      SendClientMessage(playerid, COLOR_RED, ">(ERROR)< {FFFFFF}No eres administrador");
   }
   return 0;
}

Esto es así si mal no recuerdo, de lo contrario me pueden corregir.

 

Y si se pueden cambiar los nombres de los comandos

Editado por Hammond.
  • Usuario
Publicado

Pregunta mira lo que paso con mi server cuando me dice que coloque el color tiene que ser en español o en ingles?

Por que puse asi.

 

if(strcmp(cmd, "/comandos", true) ==0)
{
SendClientMessage(playerid,COLOR_AMARILLO, "/reparar, /beber"
return 1;

Ademas por ahora lo he intentado pero no lo puedo subir mi server por que cuando abro SAMP-SERVER.exe se me sale solo y no puedo leer lo que dice.
  • Usuario
Publicado

Pregunta mira lo que paso con mi server cuando me dice que coloque el color tiene que ser en español o en ingles?

 

Por que puse asi.

 

 

 

if(strcmp(cmd, "/comandos", true) == 0)
{
   SendClientMessage(playerid,COLOR_AMARILLO, "/reparar, /beber"
   return 0; 
}
  • Usuario
Publicado

Tienes mas cosas abajo por eso no tienen el return 0; sino mas bien tiene el return 1; .

Mira he intentado con un nuevo modo ademas no se como hacer spawn diferentes osea el onfoot,

mira:

 

C:\Users\Alumno\Desktop\script\gamemodes\bare.pwn(17) : error 001: expected token: ",", but found ";"
C:\Users\Alumno\Desktop\script\gamemodes\bare.pwn(17) : error 017: undefined symbol "COLOR_RED"
C:\Users\Alumno\Desktop\script\gamemodes\bare.pwn(17) : error 029: invalid expression, assumed zero
C:\Users\Alumno\Desktop\script\gamemodes\bare.pwn(17) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
4 Errors.
  • Usuario
Publicado (editado)

 

Tienes mas cosas abajo por eso no tienen el return 0; sino mas bien tiene el return 1; .

 

Mira he intentado con un nuevo modo ademas no se como hacer spawn diferentes osea el onfoot,

mira:

 

C:\Users\Alumno\Desktop\script\gamemodes\bare.pwn(17) : error 001: expected token: ",", but found ";"
C:\Users\Alumno\Desktop\script\gamemodes\bare.pwn(17) : error 017: undefined symbol "COLOR_RED"
C:\Users\Alumno\Desktop\script\gamemodes\bare.pwn(17) : error 029: invalid expression, assumed zero
C:\Users\Alumno\Desktop\script\gamemodes\bare.pwn(17) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
4 Errors.

 

 

Ya me pasaste tu GM y te lo repare con su respectiva explicación.

 

En el primer error: pusiste un ";" en un "if" ._.

En el 2do: Debías definir arriba de tu GM el "COLOR_RED", por ejemplo,

#define COLOR_WHITE 0xFFFFFFFF

y así podras usar el "COLOR_???"

y en los demás es lo mismo xd

 

EDIT: Y puedes cambiarle el "COLOR_WHITE" por "BLANCO" o El nombre que quieras.

Editado por Hammond.
  • Usuario
Publicado

Ok pero igual pasame devuelta la GM ya se arreglo todo?

Repondeme la pregunta sobre el spawn de equipos osea quiero que spawnee en sf pero no se como fijate y dime como se coloca.

Ese error fue por que me guie por un video de tutorial de scripts de Charless.

El scrip de samp es lo mismo de MTA?

  • Usuario
Publicado

Ok pero igual pasame devuelta la GM ya se arreglo todo?

 

Repondeme la pregunta sobre el spawn de equipos osea quiero que spawnee en sf pero no se como fijate y dime como se coloca.

 

Ese error fue por que me guie por un video de tutorial de scripts de Charless.

 

El scrip de samp es lo mismo de MTA?

 

 

 

1.- Si

2.- Ve al lugar donde quieres que spawnee y usa /save

3.- xd

4.- Nope

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invitado
Responder a este tema...

×   Pegar como texto enriquecido.   Pegar como texto sin formato

  Only 75 emoji are allowed.

×   Tu enlace se ha incrustado automáticamente..   Mostrar como un enlace en su lugar

×   Se ha restaurado el contenido anterior.   Limpiar editor

×   No se pueden pegar imágenes directamente. Carga o inserta imágenes desde la URL.

  • Explorando recientemente   0 miembros

    • No hay usuarios registrados viendo esta página.
×
×
  • Crear nuevo...