someone me may help to fuse the code to ban serial to the cmmds of my sistem admin.
what thi ist it what I want ? I want that giving ban and rban banee the serial.
Код:
#include <a_samp>
#include <sscanf2>
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
native gpci(playerid, serial[], maxlen);
new Location[100] = "/Serial_Bans/%s.lock";
public OnPlayerConnect(playerid)
{
new Code[50], Line[256];
gpci(playerid, Code, sizeof Code);
format(Line, sizeof(Line), Location, Code);
if(fexist(Line)) return Kick(playerid);
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(Ban, 3, cmdtext);
dcmd(Code, 4, cmdtext);
return 0;
}
dcmd_Ban(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return 0;
new Code[50], Line[128], User, Nickname[MAX_PLAYER_NAME];
if(sscanf(params, "u", User)) return SendClientMessage(playerid, 0xFF0000FF, "Comando: /Ban <Nickname / ID>{FFFFFF}");
if(!IsPlayerConnected(User)) return SendClientMessage(playerid, 0xFF0000FF, "El usuario no se ha encontrado. Por favor, compruebe los datos del serial.");
gpci(User, Code, sizeof(Code));
format(Line, sizeof(Line), Location, Code);
GetPlayerName(User, Nickname, sizeof(Nickname));
new File:Datoteka = fopen(Line, io_write);
fwrite(Datoteka, Nickname);
fclose(Datoteka);
Kick(User);
SendClientMessage(playerid, 0xFFFFFF, "Usuario se ha aсadido correctamente a Banlist.");
return 1;
}
dcmd_Code(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return 0;
new Code[50], Line[128], User;
if(sscanf(params, "u", User)) return SendClientMessage(playerid, 0xFF0000FF, "{FF0000}Komanda:{FF0000} {FFFFFF}/Code <Nickname / ID>{FFFFFF}");
if(!IsPlayerConnected(User)) return SendClientMessage(playerid, 0xFF0000FF, "User was not fount. Please check input data.");
gpci(User, Code, sizeof(Code));
format(Line, sizeof(Line), "User Serial: %s", Code);
SendClientMessage(playerid, 0xFFFFFF, Line);
return 1;
}
//*********************** Aсadir eso a estos comandos **************************
dcmd_ban(playerid,params[])
{
if(PlayerInfo[playerid][LoggedIn] == 1)
{
if(PlayerInfo[playerid][Level] >= 10)
{
new temporal[256], temporal2[256], Index;
temporal = strtok(params,Index),
temporal2 = strtok(params,Index);
if(!strlen(params))
return SendClientMessage(playerid, COLOR_RED, ""USOMSG" /ban [playerid] [razon]");
if(!strlen(temporal2))
return SendClientMessage(playerid, COLOR_RED, ""ERRORMSG" Debe especificar la razon");
new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], dmasjust[256];
player1 = strval(temporal);
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID)
{
GetPlayerName(player1, playername, sizeof(playername));
GetPlayerName(playerid, adminname, sizeof(adminname));
new year,month,day,hour,minuite,second;
getdate(year, month, day);
gettime(hour,minuite,second);
CMDMessageToAdmins(playerid,"BAN");
format(dmasjust,sizeof(dmasjust),"%s ha sido baneado por el administrador %s [Razon: %s] [Dia: %d/%d/%d] [Hora: %d:%d]",playername,adminname,params[2],day,month,year,hour,minuite);
SendClientMessageToAll(COLOR_RED,dmasjust);
SaveToFile("BanLog",dmasjust);
print(dmasjust);
new nbaneado[MAX_PLAYER_NAME], abaneado[256];
GetPlayerName(player1, nbaneado, sizeof(nbaneado));
format(abaneado, sizeof(abaneado), "sadmin/usuarios/%s.ini", nbaneado);
if(dini_Exists(abaneado) && PlayerInfo[player1][LoggedIn] == 1)
dini_IntSet(abaneado, "banned", 1);
format(dmasjust,sizeof(dmasjust),"baneado por el administrador %s. Razon: %s", adminname, params[2]);
return BanEx(player1, dmasjust);
}
else return SendClientMessage(playerid, COLOR_RED, ""ERRORMSG" El jugador no esta conectado");
}
else return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" Tienes que ser administrador nivel 10 para usar este comando");
}
else return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" Debes estar logueado para usar este comando");
}
//
dcmd_rban(playerid,params[])
{
if(PlayerInfo[playerid][LoggedIn] == 1)
{
if(PlayerInfo[playerid][Level] >= 11)
{
new ip[128], temporal[256], temporal2[256], Index;
temporal = strtok(params,Index),
temporal2 = strtok(params,Index);
if(!strlen(params))
return SendClientMessage(playerid, COLOR_RED, ""USOMSG" /rban [playerid] [razon]");
if(!strlen(temporal2))
return SendClientMessage(playerid, COLOR_RED, ""ERRORMSG" Debes especificar la razon");
new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], dmajust[256];
player1 = strval(temporal);
GetPlayerName(player1, playername, sizeof(playername));
GetPlayerName(playerid, adminname, sizeof(adminname));
new year,month,day,hour,minuite,second;
getdate(year, month, day);
gettime(hour,minuite,second);
CMDMessageToAdmins(playerid,"RBAN");
format(dmajust,sizeof(dmajust),"%s ha sido baneado su rango por el administrador %s [Razon: %s] [Dia: %d/%d/%d] [Hora: %d:%d]",playername,adminname,params[2],day,month,year,hour,minuite);
SendClientMessageToAll(COLOR_RED,dmajust);
SaveToFile("BanLog",dmajust);
print(dmajust);
new nbaneado[MAX_PLAYER_NAME], abaneado[256];
GetPlayerName(player1, nbaneado, sizeof(nbaneado));
format(abaneado, sizeof(abaneado), "sadmin/usuarios/%s.ini", nbaneado);
if(dini_Exists(abaneado) && PlayerInfo[player1][LoggedIn] == 1)
dini_IntSet(abaneado, "banned", 1);
RangeBan(player1);
SendRconCommand(ip);
return 1;
}
else return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" Tienes que ser administrador nivel 11 para usar este comando");
}
else return SendClientMessage(playerid,COLOR_RED,""ERRORMSG" Nesesitas estar logueado para usar este comando");
}