Cуdigos Ъteis #1

Quote:
Originally Posted by GuilhermeNunes
View Post
Ate que emfim um comando util kksksks esse topico ta mais pars CODIGOS INUTEIS
Inuteis? o meu й inъtil?

PHP Code:
public OnPlayerConnect(playerid)
{
    if(
IsPlayerConnected(playerid))
    {
        
SendClientMessage(playerid,-1,"Vouse tб conequitado!");
        return 
1;
    }
    return 
1;

Reply

Quote:
Originally Posted by zCyan
View Post
Inuteis? o meu й inъtil?

PHP Code:
public OnPlayerConnect(playerid)
{
    if(
IsPlayerConnected(playerid))
    {
        
SendClientMessage(playerid,-1,"Vouse tб conequitado!");
        return 
1;
    }
    return 
1;

Й pra fazer graзa? A broad tб se contaminando de um jeito HUE BR jamais visto. Logo mais vai pro saco.
Reply

Quote:
Originally Posted by zCyan
View Post
Inuteis? o meu й inъtil?

PHP Code:
public OnPlayerConnect(playerid)
{
    if(
IsPlayerConnected(playerid))
    {
        
SendClientMessage(playerid,-1,"Vouse tб conequitado!");
        return 
1;
    }
    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))
Isso й um disperdicio de Variavel

Jeito Otimizado.
PHP Code:
public OnPlayerConnect(playerid)
{
  
SendClientMessage(playerid, -1" Vocк logou ");
  return 
1//

Espero mesmo que vocк esteja zuando.
Reply

Detector ESC/AFK


PHP Code:
new AFK[MAX_PLAYERS];
public 
OnPlayerUpdate(playerid)
{
    
AFK[playerid] = gettime();
    return 
1;
}
IsPlayerESC(playerid)
{
    if(
gettime() - AFK[playerid] > 3)
    {
        return 
1;
    }
    return 
0;

Modo de uso:

PHP Code:
CMD:command(playerid)
{
    if(
IsPlayerESC(playerid)) return SendClientMessage(playerid, -1"Vocк nгo pode usar isso de esc");
    
SendClientMessage(playerid, -1"Exito");
    return 
1;

Reply

Quote:
Originally Posted by C4rtm4n
View Post
Espero mesmo que vocк esteja zuando.....

Para fazer uma mensagem que diz que ele logou nгo precisa de
Code:
 if(IsPlayerConnected(playerid))
Isso й um disperdicio de Variavel

Jeito Otimizado.
PHP Code:
public OnPlayerConnect(playerid)
{
  
SendClientMessage(playerid, -1" Vocк logou ");
  return 
1//

Espero mesmo que vocк esteja zuando.
Negativo, tem que verificar se o player conecto, pra confirmar usa IsPlayerConnected
Reply

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:
/// <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(
0sizei++)
    {
        switch(
email[i])
        {
            case 
'A'..'Z''a'..'z''0'..'9''_''.''-': continue;
            default:
            {
                if(
email[i] == '@')
                {
                    
atFinded++;
                    continue;
                }
                return 
false;
            }
        }
    }
    return (
atFinded == 1);

Reply

Quote:
Originally Posted by Bruno13
View Post
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:
/// <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(
0sizei++)
    {
        switch(
email[i])
        {
            case 
'A'..'Z''a'..'z''0'..'9''_''.''-': continue;
            default:
            {
                if(
email[i] == '@')
                {
                    
atFinded++;
                    continue;
                }
                return 
false;
            }
        }
    }
    return (
atFinded == 1);

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:
stock IsEmailBlackList(const email[], const domain[])
{
    if(
IsValidEmail(email)) {
        if(
strfind(emaildomainfalse) != -1)
            return 
1;
    }
    else
        return 
1;
    return 
0;
}
/*
    Retorno 1 => Nгo permitido
    Returno 0 => Permitido
*/ 
Exemplo de uso
PHP Code:
CMD:vemail(playeridparams[]) {
    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 
isizeof(BlackListDomain); i++)
        if(
IsEmailBlackList(mailBlackListDomain[i]))
            
perm false;
    
format(Msgsizeof(Msg), "E-mail: %s [%s]"mail, (perm == true ? ("PERMITIDO") : ("NГO PERMITIDO")));
    return 
SendClientMessage(playerid, -1Msg);

Reply

Quote:
Originally Posted by NicK_
View Post
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:
stock IsEmailBlackList(const email[], const domain[])
{
    if(
IsValidEmail(email)) {
        if(
strfind(emaildomainfalse) != -1)
            return 
1;
    }
    else
        return 
1;
    return 
0;
}
/*
    Retorno 1 => Nгo permitido
    Returno 0 => Permitido
*/ 
Exemplo de uso
PHP Code:
CMD:vemail(playeridparams[]) {
    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 
isizeof(BlackListDomain); i++)
        if(
IsEmailBlackList(mailBlackListDomain[i]))
            
perm false;
    
format(Msgsizeof(Msg), "E-mail: %s [%s]"mail, (perm == true ? ("PERMITIDO") : ("NГO PERMITIDO")));
    return 
SendClientMessage(playerid, -1Msg);

Muito boa a ideia e aplicaзгo do cуdigo, nгo tinha me passado pela cabeзa.
Reply

Olб, vim postar uns cуdigo uteis que uso no meu dia a dia..

Delay para Kick/Ban

Oque seria? como a maioria sabe, o Kick do SA-MP acontece tгo rбpido que nгo envia nenhuma mensagem para o player que foi kickado, simplesmente da o Closed, entгo para aparecer, basta colocar este cуdigo em seu GM, Lуgicamente colocar a mensagem quando ele for kickado nй.

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;

Comando de Limpar Chat com Linhas.

Oque seria? simplesmente um comando para vocк limpar o seu chat no servidor SAMP sem ter que adicionar vбrios SendClientMessage e ficar ocupando espaзo em seu GameMode, com esse comando vocк pode limpar quantas linhas quiser.

PHP Code:
// Junto as outras Stocks
stock LimparChat(playeridlinhas)
{
    for(new 
0<= linhasb++) SendClientMessage(playerid,CINZA" ");
}
LimparChat(playeridLinhas//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. 
Ant AMX

Oque seria? basicamente um cуdigo antigo que trбs uma proteзгo para seu AMX, impedindo de descompila-lo,
hoje em dia pode nгo funcionar mais, mais й sempre bom usar qualquer proteзгo.


PHP Code:
//Juntos as Stocks
AntiDeAMX()
{
    new 
a[][] =
    {
        
"Unarmed (Fist)",
        
"Brass K"
    
};
    
#pragma unused a
}
//OnGameModeInit
AntiDeAMX(); 
Й isso galera, espero que algum desses cуdigos seja ъltil para alguns novatos, tmj.
Reply

AntiDeAMX nгo funciona mais
Reply

Excluir "contas" inutilizadas

Code:
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()
Para usar basta salvar o arquivo e executalo
Code:
python3 file_name.py -d [Diretуrio das contas] -t [Tempo inativo, em segundos]
NOTAS
  • Serve para qualquer tipo de arquivo e nгo somente contas.
  • Tempo por padrгo vem em 30 dias(30*24*60*60)
  • Nгo apaga os arquivos, cria uma pasta chamada old files - DD/MM/AA HH:mm e os move para lб
  • Script se baseia na ultima alteraзгo do arquivo, nгo em datas salvas ou algo similar
  • Testado apenas com datas pequenas como 1 minuto, porйm deve funcionar em qualquer arquivo
Reply

Retornar array de enum

Quando se tenta retornar um "array" de um enum, pawn trata o mesmo como inteiro, esse pequeno macro aqui contorna isto
PHP Code:
#define ret_enum_arr(%0[%1]);  emit CONST.alt variable; emit CONST.pri b; emit retn; 
Exemplo:
PHP Code:
#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)

NOTAS
  • Sу funciona no pawn 3.10.3+
  • Isto nгo й um bug do compilador.
Reply

PHP Code:
stock TempObj(objectidtempo=100)
    
SetTimerEx("TMP_OBJ_DEST"tempofalse"d"objectid);
forward TMP_OBJ_DEST(objectid);
public 
TMP_OBJ_DEST(objectid)
    return 
DestroyDynamicObject(objectid); 
ele й simples, por isso sу coloquei aqui mesmo!
Reply

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

PHP Code:
CMD:setadmin(playeridparams[])  

    new 
idlevelstring[200], pname[20], iname[20], file[50]; 
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid0xFF0000AA"| ERRO | Comando invбlido."); 
    if(
IsPlayerAdmin(playerid) || pAdmin[playerid] == 4
    { 
        if(
sscanf(params"ud"idlevel)) return SendClientMessage(playerid0xFF0000AA"| ERRO | Use: /setadmin [id] [level 0-4]"); 
        if(!
IsPlayerConnected(id)) return SendClientMessage(playerid0xFF0000AA"| ERRO | Esse ID nгo conectado."); 
        if(
level || level 0) return SendClientMessage(playerid0xFF0000AA"| ERRO | Apenas leveis de 0 a 4."); 
        
format(filesizeof(file), "Contas/%s.ini"iname); 
        
GetPlayerName(playeridpname20); 
        
GetPlayerName(idiname20); 
        if(
level == 0
        { 
            
format(stringsizeof(string), "| Admin | Vocк removeu o(a) jogador(a) %s(%d) da Staff."inameid); 
            
SendClientMessage(playerid0xFF0000AAstring); 
            
format(stringsizeof(string), "| Admin | Vocк foi removido(a) da Staff pelo(a) Dono(a) %s(%d)."pnameplayerid); 
            
SendClientMessage(id0xFF0000AAstring); 
            
DOF2_SetInt(file"CargoAdm"0); 
            
DOF2_SaveFile(); 
            
pAdmin[id] = 0
        } 
        if(
level == 1
        { 
            
format(stringsizeof(string), "| Admin | Vocк promoveu o(a) jogador(a) %s(%d) a Ajudante."inameid); 
            
SendClientMessage(playerid0xFF0000AAstring); 
            
format(stringsizeof(string), "| Admin | Vocк foi promovido(a) a Ajudante pelo(a) Dono(a) %s(%d)"pnameplayerid); 
            
SendClientMessage(id0xFF0000AAstring); 
            
DOF2_SetInt(file"CargoAdm"1); 
            
DOF2_SaveFile(); 
            
pAdmin[id] = 1
        } 
        if(
level == 2
        { 
            
format(stringsizeof(string), "| Admin | Vocк promoveu o(a) jogador(a) %s(%d) a Moderador(a)."inameid); 
            
SendClientMessage(playerid0xFF0000AAstring); 
            
format(stringsizeof(string), "| Admin | Vocк foi promovido(a) a Moderador(a) pelo(a) Dono(a) %s(%d)"pnameplayerid); 
            
SendClientMessage(id0xFF0000AAstring); 
            
DOF2_SetInt(file"CargoAdm"2); 
            
DOF2_SaveFile(); 
            
pAdmin[id] = 2
        } 
        if(
level == 3
        { 
            
format(stringsizeof(string), "| Admin | Vocк promoveu o(a) jogador(a) %s(%d) a Administrador(a)."inameid); 
            
SendClientMessage(playerid0xFF0000AAstring); 
            
format(stringsizeof(string), "| Admin | Vocк foi promovido(a) a Administrador(a) pelo(a) Dono(a) %s(%d)"pnameplayerid); 
            
SendClientMessage(id0xFF0000AAstring); 
            
DOF2_SetInt(file"CargoAdm"3); 
            
DOF2_SaveFile(); 
            
pAdmin[id] = 3
        } 
        if(
level == 4
        { 
            
format(stringsizeof(string), "| Admin | Vocк promoveu o(a) jogador(a) %s(%d) a Dono(a)"inameid); 
            
SendClientMessage(playerid0xFF0000AAstring); 
            
format(stringsizeof(string), "| Admin | Vocк foi promovido(a) a Dono(a) pelo(a) Dono(a) %s(%d)"pnameplayerid); 
            
SendClientMessage(id0xFF0000AAstring); 
            
DOF2_SetInt(file"CargoAdm"4); 
            
DOF2_SaveFile(); 
            
pAdmin[id] = 4
        } 
    } 
    return 
1

Reply

Quote:
Originally Posted by Luiiiz
View Post
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

...
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;  
}
Reply

Quote:
Originally Posted by F1N4L
View Post
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. ^^
Reply

Quote:
Originally Posted by Luiiiz
View Post
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. ^^
E no tуpico que vocк apagou eu te dei um bom exemplo de como fazer isso.
Reply

PHP Code:
CMD:pm(playeridparams[])
{
    new 
rName[MAX_PLAYER_NAME], IDMSG[128], text[128];
    if(
sscanf(params"us[128]"IDMSG))
        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(IDrNamesizeof(rName));
    
format(textsizeof(text), "»»%s(%d): %s"rNameIDMSG); 
    
SendClientMessage(playeridCOLOR_YELLOWtext);
    
GameTextForPlayer(playerid"~y~MENSAGEM ENVIADA"30004);
    
PlayerPlaySound(playerid10570.00.010.0);
    
format(textsizeof(text), "**%s(%d): %s"Nome[playerid], playeridMSG);
    
SendClientMessage(IDCOLOR_YELLOWtext);
    
GameTextForPlayer(ID"~g~MENSAGEM RECEBIDA"30004);
    
PlayerPlaySound(playerid10570.00.010.0);
    return 
1;

Reply

Fiz um MySQL_SetInt para quem quer usar ele para pequeno porte.

PHP Code:
//Exemplo de USO:

#define TABELA_CONTAS   "Contas"

new MySQL:IDConexao;

//------------------------------------------------------------------------------------------------------------------------------------//


CMD:valorint(playeridparams[])
{
    new 
quantidadestr[30];

    if(
sscanf(params"d"quantidade)) return SCM(playerid, -1"| ERRO | Digite: /ValorInt [quantidade]");
    
    
format(strsizeof(str), "Voce digitou %d de valor int."quantidade);
    
SCM(playerid, -1str);
    
    
MySQL_SetInt(PlayerName(playerid), "Level"quantidadeTABELA_CONTAS); // Irб Setar na coluna ' Level ' o valor ' quantidade ' do comando: /Level
    
return true;
}


//------------------------------------------------------------------------------------------------------------------------------------//


CMD:valorfloat(playeridparams[])
{
    new 
Float:quantidadestr[30];
    
    if(
sscanf(params"f"quantidade)) return SCM(playerid, -1"| ERRO | Digite: /ValorFloat [valor float, exemplo: 0.005]");
    
    
format(strsizeof(str), "Voce digitou um valor aleatorio de %f."quantidade);
    
SCM(playerid, -1str);
    
    
MySQL_SetFloat(PlayerName(playerid), "Gasolina"quantidadeTABELA_CONTAS); // Irб Setar na Coluna ' Gasolina ' o valor Float ' quantidade ' do comando: /ValorFloat
    
return true;
}


//------------------------------------------------------------------------------------------------------------------------------------//


CMD:valorstring(playeridparams[])
{
    new 
string[30], str[60];

    if(
sscanf(params"s[30]"string)) return SCM(playerid, -1"| ERRO | Digite: /ValorString [digite algo aqui]");
    
    if(
strlen(string) < || strlen(string) > 30) return SCM(playerid, -1"Texto entre 1 e 30.");
    
    
format(strsizeof(str), "Voce digitou %s."string);
    
SCM(playerid, -1str);
    
    
MySQL_SetString(PlayerName(playerid), "SenhaBanco"stringTABELA_CONTAS); // Irб Setar na Coluna ' SenhaBanco ' o valor String ' string ' do Comando: /ValorString
    
return true;
}


//------------------------------------------------------------------------------------------------------------------------------------//


stock MySQL_SetInt(pNick[], Variavel[], ValorTABELA[])
{
    new 
Query[120];
    
    
format(Querysizeof(Query), "UPDATE `%s` SET `%s` = '%d' WHERE `Nome` = BINARY '%s'"TABELAVariavelValorpNick);
    
mysql_query(IDConexaoQuery);
    return 
true;
}

stock MySQL_SetFloat(pNick[], Variavel[], Float:ValorTABELA[])
{
    new 
Query[120];
    
    
format(Querysizeof(Query), "UPDATE `%s` SET `%s' = '%f' WHERE `Nome` = BINARY '%s'"TABELAVariavelValorpNick);
    
mysql_query(IDConexaoQuery);
    return 
true;
}

stock MySQL_SetString(pNick[], Variavel[], Resultado[], TABELA[])
{
    new 
Query[120];
    
    
format(Querysizeof(Query), "UPDATE `%s` SET '%s' = '%s' WHERE `Nome` = BINARY '%s'"TABELAVariavelResultadopNick);
    
mysql_query(IDConexaoQuery);
    return 
true;
}


stock PlayerName(playerid){
    new 
gName[MAX_PLAYER_NAME 1];
    
GetPlayerName(playeridgNamesizeof(gName));
    return 
gName;

Pessoal, se vocкs virem algo errado ae, avisem.
Reply

Voce nгo estб formatando (escape) a query. Pode ser vitima de SQL Injection.

pawn Code:
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
https://vegibit.com/escape-strings-f...sql-injection/
https://sampforum.blast.hk/showthread.php?tid=475158

https://www.youtube.com/watch?v=sSdb74c_g7g <- aqui um cara usa isso pra ser adm de um servidor

Desse modo fica atй mais facil nгo sendo necessбrio formatar toda vez. Apesar de que na hora de compilar vai ficar a mesma coisa.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)