vamos che no es tan complicado...
pawn Код:
//DEBAJO DE LOS INCLUDES (O FUERA DE CUALQUIER FUNCION & CALLBACK)
#define TIME 180 //segundos que permanece callado inicialmente cualquier jugador
new Time[MAX_PLAYERS], Timer[MAX_PLAYERS], Veces[MAX_PLAYERS];
//CALLBACK OnPlayerText
public OnPlayerText(playerid, text[]){
if(Callado[playerid]){
Veces[playerid]++;
SendClientMessage(playerid, 0xFF0000FF, "No puedes hablar, ahora como castigo estaras callado 1 minuto mas");
Time+=60*Veces[playerid];
return 0;
}return 1;
}
//Comando
if(!strcmp(cmd, "/callar", true)){
NivelAdmin[playerid] = 321;
if(NivelAdmin[playerid] >= 3){
new tmp[2][256];
tmp[0] = strtok(cmdtext, idx);
tmp[1] = strtok(cmdtext, idx);
if(!strlen(tmp[0]) || !strlen(tmp[1]) || !IsNumeric(tmp[0]))return SendClientMessage(playerid, 0xFFFFFFFF, "Usa: {00FF00}/callar [ID] [Razon]. Para que deje de estar callado, usa /callar [ID].");
new id = strval(tmp[0]);
if(id==playerid)return SendClientMessage(playerid, 0xFFFFFFFF, "No puedes callarte {FFFF00}a ti mismo.");
new name[2][MAX_PLAYER_NAME];
GetPlayerName(playerid, name[0], MAX_PLAYER_NAME);
GetPlayerName(id, name[1], MAX_PLAYER_NAME);
if(IsPlayerConnected(id)){
new str[128];
if(!Callado[id]){
format(str, 128, "%s ha sido callado. (Razon: %s.)", name[1], cmdtext[9+strlen(tmp[0])]);
SendClientMessage(playerid, COLOR_AZUL, str);
format(str, 256, "Has sido callado por %s. (Razon: %s.)", name[0], cmdtext[9+strlen(tmp[0])]);
SendClientMessage(id, COLOR_VERDE_CLARO, str);
format(str, 256, "%s ha sido callado por %s. (Razon: %s.)", name[1], name[0], cmdtext[9+strlen(tmp[0])]);
SendClientMessageToAll(0xFFFFFFFF, str);
Timer[playerid] = SetTimerEx("Callar", 1000, true, "i", id);
Callado[id] = 1;
Veces[id] = 0;
Time[id] = TIME;
MensajeAdmin(playerid, "/callar");
PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
return PlayerPlaySound(id, 1057, 0.0, 0.0, 0.0);
}
else{
format(str, 128, "%s ha dejado de ser callado.", name[1], cmdtext[9+strlen(tmp[0])]);
SendClientMessage(playerid, COLOR_AZUL, str);
format(str, 128, "Has dejado de estar callado por %s.", name[0], cmdtext[9+strlen(tmp[0])]);
SendClientMessage(id, COLOR_VERDE_CLARO, str);
format(str, 128, "%s ha dejado de estar callado por %s.", name[1], name[0], cmdtext[9+strlen(tmp[0])]);
SendClientMessageToAll(0xFFFFFFFF, str);
Callado[id] = 0;
Veces[id] = 0;
Time[id] = 0;
PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
return PlayerPlaySound(id, 1057, 0.0, 0.0, 0.0);
}
}return SendClientMessage(playerid, 0xFFFFFFFF, "El jugador no se encuentra conectado.");
}return SendClientMessage(playerid, 0xFFFFFFFF, "Necesitas ser administrador nivel 3 para usar este comando.");
}
//Timer
forward Callar(playerid);
public Callar(playerid)
{
Time[playerid]--;
if(!Time[playerid]){
Callado[playerid] = 0;
SendClientMessage(playerid, 0x00FF00FF, "Ahora puedes hablar");
KillTimer(Timer[playerid]);
}
}