Ate que emfim um comando util kksksks esse topico ta mais pars CODIGOS INUTEIS
|
public OnPlayerConnect(playerid)
{
if(IsPlayerConnected(playerid))
{
SendClientMessage(playerid,-1,"Vouse tб conequitado!");
return 1;
}
return 1;
}
Inuteis? o meu й inъtil?
PHP Code:
|
Inuteis? o meu й inъtil?
PHP Code:
|
if(IsPlayerConnected(playerid))
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, -1, " Vocк logou ");
return 1; //
}
new AFK[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
AFK[playerid] = gettime();
return 1;
}
IsPlayerESC(playerid)
{
if(gettime() - AFK[playerid] > 3)
{
return 1;
}
return 0;
}
CMD:command(playerid)
{
if(IsPlayerESC(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo pode usar isso de esc");
SendClientMessage(playerid, -1, "Exito");
return 1;
}
Espero mesmo que vocк esteja zuando.....
Para fazer uma mensagem que diz que ele logou nгo precisa de Code:
if(IsPlayerConnected(playerid)) Jeito Otimizado. PHP Code:
|
/// <author>Bruno "Bruno13" Travi.</author>
/// <summary>
/// Valida se um email especнfico й vбlido.
/// </summary>
/// <param name="email">Email.</param>
/// <returns>True se for, False se nгo.</returns>
IsValidEmail(const email[])
{
new size = strlen(email);
if(size < 7)
return false;
new atFinded,
i;
for(i = 0; i < size; i++)
{
switch(email[i])
{
case 'A'..'Z', 'a'..'z', '0'..'9', '_', '.', '-': continue;
default:
{
if(email[i] == '@')
{
atFinded++;
continue;
}
return false;
}
}
}
return (atFinded == 1);
}
IsValidEmail
Estive a procura de um validador de email, mas sу encontrei funзхes que continham informaзхes erradas, alйm de cуdigos horrнveis de desoptimizados. Dei uma procurada nos principais provedores sobre os caracteres aceitos no endereзo de email, e entгo inseri somente os que encontrei. PHP Code:
|
stock IsEmailBlackList(const email[], const domain[])
{
if(IsValidEmail(email)) {
if(strfind(email, domain, false) != -1)
return 1;
}
else
return 1;
return 0;
}
/*
Retorno 1 => Nгo permitido
Returno 0 => Permitido
*/
CMD:vemail(playerid, params[]) {
new mail[64], Msg[144], bool:perm = true;
if(sscanf(params, "s[64]", mail)) return SendClientMessage(playerid, -1, "/vemail [email]");
new BlackListDomain[][] = { // Adicionar os domнnios
{"yopmail.com"},{"mailna.biz"}
};
for(new i; i < sizeof(BlackListDomain); i++)
if(IsEmailBlackList(mail, BlackListDomain[i]))
perm = false;
format(Msg, sizeof(Msg), "E-mail: %s [%s]", mail, (perm == true ? ("PERMITIDO") : ("NГO PERMITIDO")));
return SendClientMessage(playerid, -1, Msg);
}
Utilizando sua stock, implementei uma nova, para verificar se o dominio consta em alguma blasklist (no caso, sua).
Verifiquei a existкncia de sites que disponibilizam e-mails de graзa e aleatуrios. Entгo, й fбcil definir uma variaveis com estes dominios e verificar se o que a pessoa irб utilizar й um destes. PHP Code:
PHP Code:
|
//Topo do seu GM.
#define Kick(%0) SetTimerEx("Kickar", 200, false, "i", %0)
#define Ban(%0) SetTimerEx("Banir", 200, false, "i", %0)
//Junto com as outras forwards
forward Kickar(playerid);
forward Banir(playerid);
//Final do GM
public Kickar(playerid)
{
#undef Kick
Kick(playerid);
#define Kick(%0) SetTimerEx("Kickar", 150, false, "i", %0)
return 1;
}
public Banir(playerid)
{
#undef Ban
Kick(playerid);
#define Ban(%0) SetTimerEx("Banir", 150, false, "i", %0)
return 1;
}
// Junto as outras Stocks
stock LimparChat(playerid, linhas)
{
for(new b = 0; b <= linhas; b++) SendClientMessage(playerid,CINZA, " ");
}
LimparChat(playerid, Linhas) //Quando for usar o comando, basta adicionar este comando, o 'Linhas' seria as linhas, normalmente eu deixo no 100, no caso 'LimparChat(playerid, 100)' que estбria limpando 100 linhas.
//Juntos as Stocks
AntiDeAMX()
{
new a[][] =
{
"Unarmed (Fist)",
"Brass K"
};
#pragma unused a
}
//OnGameModeInit
AntiDeAMX();
import os import argparse import time def main(): parser = argparse.ArgumentParser() parser.add_argument( '-d', '--directory', help="path to \"accounts\" folder") parser.add_argument( '-t', '--time', default=30*24*60*60, # 30 days help="unmodified time, in seconds", type=int) args = parser.parse_args() if not os.path.exists(args.directory): print("Directory not found.", args.directory) return 0 if args.time <= 0: print("Invalid time. ", args.time) return 0 t = time.time() - args.time newfolder = "old files - {}".format(time.strftime("%d-%m-%Y %H:%M")) os.mkdir(os.path.join(args.directory, newfolder)) files = [-1,0] for f in os.listdir(args.directory): file = os.path.join(args.directory, f) files[0] += 1 if(os.path.getmtime(file) < t): files[1] += 1 os.rename(file, os.path.join(args.directory, newfolder, f)) print("{} files found, {} deleted".format(files[0], files[1])) if __name__ == "__main__": main()
python3 file_name.py -d [Diretуrio das contas] -t [Tempo inativo, em segundos]
#define ret_enum_arr(%0[%1]); emit CONST.alt variable; emit CONST.pri b; emit retn;
#pragma naked
func(var)
{
if(var)
{
new ret[32]="world";
return ret;
}
ret_enum_arr(variable[b]);
//return variable[b]; // error 079: inconsistent return types (array & non-array)
}
stock TempObj(objectid, tempo=100)
SetTimerEx("TMP_OBJ_DEST", tempo, false, "d", objectid);
forward TMP_OBJ_DEST(objectid);
public TMP_OBJ_DEST(objectid)
return DestroyDynamicObject(objectid);
CMD:setadmin(playerid, params[])
{
new id, level, string[200], pname[20], iname[20], file[50];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Comando invбlido.");
if(IsPlayerAdmin(playerid) || pAdmin[playerid] == 4)
{
if(sscanf(params, "ud", id, level)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Use: /setadmin [id] [level 0-4]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Esse ID nгo conectado.");
if(level > 4 || level < 0) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Apenas leveis de 0 a 4.");
format(file, sizeof(file), "Contas/%s.ini", iname);
GetPlayerName(playerid, pname, 20);
GetPlayerName(id, iname, 20);
if(level == 0)
{
format(string, sizeof(string), "| Admin | Vocк removeu o(a) jogador(a) %s(%d) da Staff.", iname, id);
SendClientMessage(playerid, 0xFF0000AA, string);
format(string, sizeof(string), "| Admin | Vocк foi removido(a) da Staff pelo(a) Dono(a) %s(%d).", pname, playerid);
SendClientMessage(id, 0xFF0000AA, string);
DOF2_SetInt(file, "CargoAdm", 0);
DOF2_SaveFile();
pAdmin[id] = 0;
}
if(level == 1)
{
format(string, sizeof(string), "| Admin | Vocк promoveu o(a) jogador(a) %s(%d) a Ajudante.", iname, id);
SendClientMessage(playerid, 0xFF0000AA, string);
format(string, sizeof(string), "| Admin | Vocк foi promovido(a) a Ajudante pelo(a) Dono(a) %s(%d)", pname, playerid);
SendClientMessage(id, 0xFF0000AA, string);
DOF2_SetInt(file, "CargoAdm", 1);
DOF2_SaveFile();
pAdmin[id] = 1;
}
if(level == 2)
{
format(string, sizeof(string), "| Admin | Vocк promoveu o(a) jogador(a) %s(%d) a Moderador(a).", iname, id);
SendClientMessage(playerid, 0xFF0000AA, string);
format(string, sizeof(string), "| Admin | Vocк foi promovido(a) a Moderador(a) pelo(a) Dono(a) %s(%d)", pname, playerid);
SendClientMessage(id, 0xFF0000AA, string);
DOF2_SetInt(file, "CargoAdm", 2);
DOF2_SaveFile();
pAdmin[id] = 2;
}
if(level == 3)
{
format(string, sizeof(string), "| Admin | Vocк promoveu o(a) jogador(a) %s(%d) a Administrador(a).", iname, id);
SendClientMessage(playerid, 0xFF0000AA, string);
format(string, sizeof(string), "| Admin | Vocк foi promovido(a) a Administrador(a) pelo(a) Dono(a) %s(%d)", pname, playerid);
SendClientMessage(id, 0xFF0000AA, string);
DOF2_SetInt(file, "CargoAdm", 3);
DOF2_SaveFile();
pAdmin[id] = 3;
}
if(level == 4)
{
format(string, sizeof(string), "| Admin | Vocк promoveu o(a) jogador(a) %s(%d) a Dono(a)", iname, id);
SendClientMessage(playerid, 0xFF0000AA, string);
format(string, sizeof(string), "| Admin | Vocк foi promovido(a) a Dono(a) pelo(a) Dono(a) %s(%d)", pname, playerid);
SendClientMessage(id, 0xFF0000AA, string);
DOF2_SetInt(file, "CargoAdm", 4);
DOF2_SaveFile();
pAdmin[id] = 4;
}
}
return 1;
}
Comando /setadmin bem simples.
Algumas prints: Digitando o comando /setadmin sem estar logado na RCON ou sem ser pAdmin = 4. https://imgur.com/a/k6BLv Digitando o comando /setadmin sem os parвmetros estando logado na RCON. https://imgur.com/a/2onND /setadmin id 0: https://imgur.com/a/1cleB /setadmin id 1: https://imgur.com/a/KfzkY /setadmin id 2: https://imgur.com/a/faxVr /setadmin id 3: https://imgur.com/a/sO33B /setadmin id 4: https://imgur.com/a/tglZZ ... |
CMD:setadmin(playerid, params[]) { new id, level, string[200], pname[20], iname[20], file[50]; if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Comando invбlido."); if(sscanf(params, "ud", id, level)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Use: /setadmin [id] [level 0-4]"); if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Esse ID nгo conectado."); if(level > 4 || level < 0) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Apenas leveis de 0 a 4."); format(file, sizeof(file), "Contas/%s.ini", iname); GetPlayerName(playerid, pname, 20); GetPlayerName(id, iname, 20); if(level > 0) { format(string, sizeof(string), "| Admin | Vocк promoveu o(a) jogador(a) %s(%d) a Administrador(a).", iname, id); SendClientMessage(playerid, 0xFF0000AA, string); format(string, sizeof(string), "| Admin | Vocк foi promovido(a) a Administrador(a) pelo(a) Dono(a) %s(%d)", pname, playerid); SendClientMessage(id, 0xFF0000AA, string); } else { format(string, sizeof(string), "| Admin | Vocк removeu o(a) jogador(a) %s(%d) da Staff.", iname, id); SendClientMessage(playerid, 0xFF0000AA, string); format(string, sizeof(string), "| Admin | Vocк foi removido(a) da Staff pelo(a) Dono(a) %s(%d).", pname, playerid); SendClientMessage(id, 0xFF0000AA, string); } DOF2_SetInt(file, "CargoAdm", level); DOF2_SaveFile(); pAdmin[id] = level; return 1; }
Otimizaзгo, jovem.
Code:
CMD:setadmin(playerid, params[]) { new id, level, string[200], pname[20], iname[20], file[50]; if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Comando invбlido."); if(sscanf(params, "ud", id, level)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Use: /setadmin [id] [level 0-4]"); if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Esse ID nгo conectado."); if(level > 4 || level < 0) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Apenas leveis de 0 a 4."); format(file, sizeof(file), "Contas/%s.ini", iname); GetPlayerName(playerid, pname, 20); GetPlayerName(id, iname, 20); if(level > 0) { format(string, sizeof(string), "| Admin | Vocк promoveu o(a) jogador(a) %s(%d) a Administrador(a).", iname, id); SendClientMessage(playerid, 0xFF0000AA, string); format(string, sizeof(string), "| Admin | Vocк foi promovido(a) a Administrador(a) pelo(a) Dono(a) %s(%d)", pname, playerid); SendClientMessage(id, 0xFF0000AA, string); } else { format(string, sizeof(string), "| Admin | Vocк removeu o(a) jogador(a) %s(%d) da Staff.", iname, id); SendClientMessage(playerid, 0xFF0000AA, string); format(string, sizeof(string), "| Admin | Vocк foi removido(a) da Staff pelo(a) Dono(a) %s(%d).", pname, playerid); SendClientMessage(id, 0xFF0000AA, string); } DOF2_SetInt(file, "CargoAdm", level); DOF2_SaveFile(); pAdmin[id] = level; return 1; } |
Nгo sei se percebeu mas nгo й apenas Administrador o cargo que eu coloquei... Existe Ajudante, Moderador, Administrador E Dono. Caso fosse apenas Administrador, aн sim eu iria otimizar desse jeito. ^^
|
CMD:pm(playerid, params[])
{
new rName[MAX_PLAYER_NAME], ID, MSG[128], text[128];
if(sscanf(params, "us[128]", ID, MSG))
return SendClientMessage(playerid, -1,"/PM [ID] [TEXTO]");
if(!IsPlayerConnected(ID))
return SendClientMessage(playerid, -1, "Jogador nгo conectado.");
if(ID == playerid)
return SendClientMessage(playerid, -1, "Vocк nгo pode enviar mensagem para sн mesmo.");
GetPlayerName(ID, rName, sizeof(rName));
format(text, sizeof(text), "»»%s(%d): %s", rName, ID, MSG);
SendClientMessage(playerid, COLOR_YELLOW, text);
GameTextForPlayer(playerid, "~y~MENSAGEM ENVIADA", 3000, 4);
PlayerPlaySound(playerid, 1057, 0.0, 0.0, 10.0);
format(text, sizeof(text), "**%s(%d): %s", Nome[playerid], playerid, MSG);
SendClientMessage(ID, COLOR_YELLOW, text);
GameTextForPlayer(ID, "~g~MENSAGEM RECEBIDA", 3000, 4);
PlayerPlaySound(playerid, 1057, 0.0, 0.0, 10.0);
return 1;
}
//Exemplo de USO:
#define TABELA_CONTAS "Contas"
new MySQL:IDConexao;
//------------------------------------------------------------------------------------------------------------------------------------//
CMD:valorint(playerid, params[])
{
new quantidade, str[30];
if(sscanf(params, "d", quantidade)) return SCM(playerid, -1, "| ERRO | Digite: /ValorInt [quantidade]");
format(str, sizeof(str), "Voce digitou %d de valor int.", quantidade);
SCM(playerid, -1, str);
MySQL_SetInt(PlayerName(playerid), "Level", quantidade, TABELA_CONTAS); // Irб Setar na coluna ' Level ' o valor ' quantidade ' do comando: /Level
return true;
}
//------------------------------------------------------------------------------------------------------------------------------------//
CMD:valorfloat(playerid, params[])
{
new Float:quantidade, str[30];
if(sscanf(params, "f", quantidade)) return SCM(playerid, -1, "| ERRO | Digite: /ValorFloat [valor float, exemplo: 0.005]");
format(str, sizeof(str), "Voce digitou um valor aleatorio de %f.", quantidade);
SCM(playerid, -1, str);
MySQL_SetFloat(PlayerName(playerid), "Gasolina", quantidade, TABELA_CONTAS); // Irб Setar na Coluna ' Gasolina ' o valor Float ' quantidade ' do comando: /ValorFloat
return true;
}
//------------------------------------------------------------------------------------------------------------------------------------//
CMD:valorstring(playerid, params[])
{
new string[30], str[60];
if(sscanf(params, "s[30]", string)) return SCM(playerid, -1, "| ERRO | Digite: /ValorString [digite algo aqui]");
if(strlen(string) < 1 || strlen(string) > 30) return SCM(playerid, -1, "Texto entre 1 e 30.");
format(str, sizeof(str), "Voce digitou %s.", string);
SCM(playerid, -1, str);
MySQL_SetString(PlayerName(playerid), "SenhaBanco", string, TABELA_CONTAS); // Irб Setar na Coluna ' SenhaBanco ' o valor String ' string ' do Comando: /ValorString
return true;
}
//------------------------------------------------------------------------------------------------------------------------------------//
stock MySQL_SetInt(pNick[], Variavel[], Valor, TABELA[])
{
new Query[120];
format(Query, sizeof(Query), "UPDATE `%s` SET `%s` = '%d' WHERE `Nome` = BINARY '%s'", TABELA, Variavel, Valor, pNick);
mysql_query(IDConexao, Query);
return true;
}
stock MySQL_SetFloat(pNick[], Variavel[], Float:Valor, TABELA[])
{
new Query[120];
format(Query, sizeof(Query), "UPDATE `%s` SET `%s' = '%f' WHERE `Nome` = BINARY '%s'", TABELA, Variavel, Valor, pNick);
mysql_query(IDConexao, Query);
return true;
}
stock MySQL_SetString(pNick[], Variavel[], Resultado[], TABELA[])
{
new Query[120];
format(Query, sizeof(Query), "UPDATE `%s` SET '%s' = '%s' WHERE `Nome` = BINARY '%s'", TABELA, Variavel, Resultado, pNick);
mysql_query(IDConexao, Query);
return true;
}
stock PlayerName(playerid){
new gName[MAX_PLAYER_NAME + 1];
GetPlayerName(playerid, gName, sizeof(gName));
return gName;
}
new sprintfmysql[128];
#define msprintf(%0,%1) (mysql_format(mysql_handle, sprintfmysql, sizeof(sprintfmysql), %0, %1), sprintfmysql) // use to escape strings
result = mysql_query(mysql_handle, msprintf("SELECT `player`, `player_skin` FROM players WHERE player_name = '%e'", PlayerName(playerid))); // do %e to escape strings