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 :)