SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 28/06/2019, 01:06 AM   #1
Aaron
Little Clucker
 
Join Date: Jun 2019
Posts: 11
Reputation: 0
Question [Ajuda] Bloquear entrada no server de nomes errados

Bem... tenho uma noção básica de programação. Queria saber como faço para bloquear a entrada de nomes que não estejam neste formato: Nome_Sobrenome, ou seja, se o nome não estiver como neste exemplo: Jordan_Douglas ele é kickado do servidor.

Não faço a mínima ideia de como começar, se pudessem me ajudar galera...

Uso esta GM:

Quote:
PHP Code:
#include <a_samp>
#include <a_mysql>
#include <zcmd>
#include <streamer>
#include <sscanf2>

//Configuracion
#define SQL_HOST "localhost"
#define SQL_USUARIO "root"
#define SQL_CONTRA ""
#define SQL_DB "pcu"
//Colores
#define VERDECLARO 0x00FF00FF
#define CINZACLARO 0xF2F2F2AA
//Atajos
#define SCM SendClientMessage
#define SPP SetPlayerPos
//Dialogos
#define DIALOG_REGISTRO   0
#define DIALOG_GENERO     1
#define DIALOG_EDAD       2
#define DIALOG_INGRESO    3
//news
new MySQL;
//Enum
enum jInfo
{
Contra[128],
Genero,
Edad,
Ropa,
Float:X,
Float:Y,
Float:Z,
Float:Vida,
Float:Chaleco,
Muertes,
Asesinatos,
Faccion,
Rango,
Trabajo,
Dinero,
Int,
VW,
Nivel
}
new 
Jugador[MAX_PLAYERS][jInfo];
//Forward
forward VerificarUsuario(playerid);
forward CrearCuenta(playerid);
forward IngresoJugador(playerid);
forward IngresarJugador(playerid);
forward GuardarJugador(playerid);
//
main()
{
print(
"GameMode em desenvolvimento");
}

public 
OnGameModeInit()
{
    
DisableInteriorEnterExits();
    
UsePlayerPedAnims();
    
SetGameModeText("Story:RP");
    
MySQL mysql_connect(SQL_HOST,SQL_USUARIO,SQL_DB,SQL_CONTRA);
    print(
"MYSQL CONFIGURADA.");
    if(
mysql_errno() != 0)
    {
    print(
"No se pudo conectar.");
    }
    else
    {
    print(
"MYSQL CONECTADA.");
    }
    return 
1;
}

public 
OnGameModeExit()
{
    return 
1;
}

public 
OnPlayerRequestClass(playeridclassid)
{
    return 
1;
}

public 
OnPlayerConnect(playerid)
{
   new 
query[520],nombre[MAX_PLAYER_NAME];
   
GetPlayerName(playeridnombresizeof(nombre));
   
mysql_format(MySQLquerysizeof(query), "SELECT * FROM `cuentas` WHERE `Nombre`='%s'"nombre);
   
mysql_pquery(MySQLquery"VerificarUsuario","d"playerid);
   return 
1;
}

public 
OnPlayerDisconnect(playeridreason)
{
    
GuardarJugador(playerid);
    return 
1;
}

public 
OnPlayerSpawn(playerid)
{
    if(
GetPVarInt(playerid"PuedeIngresar") == 0)
    {
    
Kick(playerid);
    }
    return 
1;
}

public 
OnPlayerDeath(playeridkilleridreason)
{
    
Jugador[playerid][Muertes]++;
    
Jugador[killerid][Asesinatos]++;
    return 
1;
}

public 
OnVehicleSpawn(vehicleid)
{
    return 
1;
}

public 
OnVehicleDeath(vehicleidkillerid)
{
    return 
1;
}

public 
OnPlayerText(playeridtext[])
{
    
SetPlayerColor(playerid0xFFFFFFAA);
    new 
str[128], name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(strsizeof(str), "%s disse: {FFFFFF}%s"nametext);
    
SendClientMessageToAll(GetPlayerColor(playerid), str);
    return 
0;
}

public 
OnPlayerEnterVehicle(playeridvehicleidispassenger)
{
    return 
1;
}

public 
OnPlayerExitVehicle(playeridvehicleid)
{
    return 
1;
}

public 
OnPlayerStateChange(playeridnewstateoldstate)
{
    return 
1;
}

public 
OnPlayerEnterCheckpoint(playerid)
{
    return 
1;
}

public 
OnPlayerLeaveCheckpoint(playerid)
{
    return 
1;
}

public 
OnPlayerEnterRaceCheckpoint(playerid)
{
    return 
1;
}

public 
OnPlayerLeaveRaceCheckpoint(playerid)
{
    return 
1;
}

public 
OnRconCommand(cmd[])
{
    return 
1;
}

public 
OnPlayerRequestSpawn(playerid)
{
    return 
1;
}

public 
OnObjectMoved(objectid)
{
    return 
1;
}

public 
OnPlayerObjectMoved(playeridobjectid)
{
    return 
1;
}

public 
OnPlayerPickUpPickup(playeridpickupid)
{
    return 
1;
}

public 
OnVehicleMod(playeridvehicleidcomponentid)
{
    return 
1;
}

public 
OnVehiclePaintjob(playeridvehicleidpaintjobid)
{
    return 
1;
}

public 
OnVehicleRespray(playeridvehicleidcolor1color2)
{
    return 
1;
}

public 
OnPlayerSelectedMenuRow(playeridrow)
{
    return 
1;
}

public 
OnPlayerExitedMenu(playerid)
{
    return 
1;
}

public 
OnPlayerInteriorChange(playeridnewinterioridoldinteriorid)
{
    return 
1;
}

public 
OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    return 
1;
}

public 
OnRconLoginAttempt(ip[], password[], success)
{
    return 
1;
}

public 
OnPlayerUpdate(playerid)
{
    return 
1;
}

public 
OnPlayerStreamIn(playeridforplayerid)
{
    return 
1;
}

public 
OnPlayerStreamOut(playeridforplayerid)
{
    return 
1;
}

public 
OnVehicleStreamIn(vehicleidforplayerid)
{
    return 
1;
}

public 
OnVehicleStreamOut(vehicleidforplayerid)
{
    return 
1;
}

public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    switch(
dialogid)
    {
    
//
    
case DIALOG_REGISTRO:
    {
        if(
response)
        {
        new 
contra[128];
        
SCM(playerid0xF2F2F2AA"Muito bem! Agora informe qual o sexo você deseja que seu personagem tenha.");
        
ShowPlayerDialog(playeridDIALOG_GENERODIALOG_STYLE_MSGBOX"Gênero""Selecione um sexo para o personagem""Masculino""Femenino");
        
format(contra,sizeof(contra),"%s",inputtext);
        
Jugador[playerid][Contra] = contra;
        }
        else
        {
        
Kick(playerid);        }
    }
    
//
    
case DIALOG_GENERO:
    {
        if(
response)
        {
        
Jugador[playerid][Genero] = 0;
        
Jugador[playerid][Ropa] = 295;
        
SCM(playerid0xF2F2F2AA,"Você selecionou o sexo {FFFF00}masculino{FFFFFF}.");
        
ShowPlayerDialog(playeridDIALOG_EDADDIALOG_STYLE_INPUT"Idade""Coloque a idade do personagem\n\nMínimo: 18 anos\n\nMáximo: 90 anos""Continuar""Cancelar");
        }
        else
        {
        
Jugador[playerid][Genero] = 1;
        
Jugador[playerid][Ropa] = 93;
        
SCM(playerid0xF2F2F2AA,"Você selecionou o sexo {FFFF00}femenino{FFFFFF}.");
        
ShowPlayerDialog(playeridDIALOG_EDADDIALOG_STYLE_INPUT"Idade""Coloque a idade do personagem\n\nMínimo: 18 anos\n\nMáximo 90 anos""Continuar""Cancelar");
        }
      }
    
//
    
case DIALOG_EDAD:
    {
         if(
response)
         {
         if(
strval(inputtext) < 18 || strval(inputtext) > 100) return ShowPlayerDialog(playeridDIALOG_EDADDIALOG_STYLE_INPUT"Edad""Ingrese su edad\n\n{FF0000}Minimo 18 - Maximo 90.""Continuar""Cancelar");
         
Jugador[playerid][Edad] = strval(inputtext);
         
SetSpawnInfo(playerid0Jugador[playerid][Ropa], 820.1622, -1334.456313.5469341.56950,0,0,0,0,0);
         
SetPVarInt(playerid"PuedeIngresar"1);
         
SpawnPlayer(playerid);
         
CrearCuenta(playerid);
         }
         else
         {
         
Kick(playerid);
         }
    }
    
//
    
case DIALOG_INGRESO:
    {
        if(
response)
        {
        new 
query[520];
        
mysql_format(MySQL,query,sizeof(query),"SELECT * FROM `cuentas` WHERE `Nombre`='%s' AND `Contra`='%s'",NombreJugador(playerid),inputtext);
        
mysql_pquery(MySQLquery"IngresoJugador","d"playerid);
        }
        else
        {
        
Kick(playerid);
        }
    }
    
//
    
}
    return 
1;
}

public 
OnPlayerClickPlayer(playeridclickedplayeridsource)
{
    return 
1;
}
public 
VerificarUsuario(playerid)
{
    new 
Rows;
    
Rows cache_get_row_count();
    if(!
Rows)
    {
    
CamaraInicio(playerid);
    
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_STYLE_INPUT"Registro""Bem-vindo\n\nAdicione uma senha para se registrar""Registrar""Cancelar");
    }
    else
    {
    
CamaraInicio(playerid);
    
ShowPlayerDialog(playeridDIALOG_INGRESODIALOG_STYLE_INPUT"Entrar""Bem-vindo\n\nColoque sua senha para iniciar o jogo""Continuar""Cancelar");
    }
    return 
1;
}
stock CamaraInicio(playerid)
{
SetPlayerPos(playerid, -1328.3112,1516.0507,-67.6863);
SetPlayerCameraPos(playerid776.3071, -1493.200785.3475);
SetPlayerCameraLookAt(playerid665.0939, -1152.890034.2451);
TogglePlayerControllable(playerid,0);
return 
1;
}
stock NombreJugador(playerid)
{
new 
nombre[MAX_PLAYER_NAME];
GetPlayerName(playeridnombresizeof(nombre));
return 
nombre;
}
public 
CrearCuenta(playerid)
{
new 
query[520],aviso[125];
mysql_format(MySQLquerysizeof(query), "INSERT INTO `cuentas`(`Nombre`, `Contra`, `Ropa`, `X`, `Y`, `Z`, `Genero`, `Vida`, `Dinero`) VALUES ('%s','%s','%i','820.1622', '-1668.4976', '-1334.4563','%i','100','100000')",
NombreJugador(playerid),
Jugador[playerid][Contra],
Jugador[playerid][Ropa],
Jugador[playerid][Genero]);
mysql_query(MySQLquery);
for(new 
0100a++)
SendClientMessageToAll(-1" ");
print(
aviso);
SCM(playerid,CINZACLARO,"Sua conta foi criada corretamente.");
SCM(playerid,CINZACLARO,"Versão atual: 0.1. Confira as últimas atualizações usando /atualizacoes.");
return 
1;
}

public 
IngresoJugador(playerid)
{
if(
cache_get_row_count() == 0)
{
ShowPlayerDialog(playeridDIALOG_INGRESODIALOG_STYLE_INPUT"Ingreso""¡Error!\n\nLa contraseña no es correcta.""Continuar""Cancelar");
}
else
{
Jugador[playerid][Ropa] = cache_get_row_int(03);
Jugador[playerid][X] = cache_get_row_float(04);
Jugador[playerid][Y] = cache_get_row_float(05);
Jugador[playerid][Z] = cache_get_row_float(06);
Jugador[playerid][Genero] = cache_get_row_int(07);
Jugador[playerid][Vida] = cache_get_row_float(08);
Jugador[playerid][Chaleco] = cache_get_row_float(09);
Jugador[playerid][Muertes] = cache_get_row_int(010);
Jugador[playerid][Asesinatos] = cache_get_row_int(011);
Jugador[playerid][Faccion] = cache_get_row_int(012);
Jugador[playerid][Rango] = cache_get_row_int(013);
Jugador[playerid][Trabajo] = cache_get_row_int(014);
Jugador[playerid][Dinero] = cache_get_row_int(015);
Jugador[playerid][Int] = cache_get_row_int(016);
Jugador[playerid][VW] = cache_get_row_int(017);
Jugador[playerid][Edad] = cache_get_row_int(018);
SetPVarInt(playerid"PuedeIngresar"1);
IngresarJugador(playerid);
}
return 
1;
}
public 
IngresarJugador(playerid)
{
SetSpawnInfo(playerid0Jugador[playerid][Ropa], Jugador[playerid][X],Jugador[playerid][Y],Jugador[playerid][Z], 0.00000,0,0,0,0,0);
SpawnPlayer(playerid);
SetPlayerHealth(playerid,Jugador[playerid][Vida]);
SetPlayerArmour(playerid,Jugador[playerid][Chaleco]);
GivePlayerMoney(playerid,Jugador[playerid][Dinero]);
SetPlayerVirtualWorld(playerid,Jugador[playerid][VW]);
SetPlayerInterior(playerid,Jugador[playerid][Int]);
SetPlayerSkin(playerid,Jugador[playerid][Ropa]);
for(new 
0100a++)
SendClientMessageToAll(-1" ");
SCM(playerid,CINZACLARO,"Olá (nome), sua conta foi conectada corretamente.");
SCM(playerid,CINZACLARO,"Versão atual: 0.1. Confira as últimas atualizações usando /atualizacoes.");
return 
1;
}
public 
GuardarJugador(playerid)
{
new 
query[520],Float:jX,Float:jY,Float:jZ,Float:hp,Float:chale,pVW,pInt;
GetPlayerPos(playeridjXjYjZ);
GetPlayerHealth(playerid,hp);
GetPlayerArmour(playerid,chale);
Jugador[playerid][VW] = GetPlayerVirtualWorld(playerid);
Jugador[playerid][Int] = GetPlayerInterior(playerid);
pVW GetPlayerVirtualWorld(playerid);
pInt GetPlayerInterior(playerid);
mysql_format(MySQLquerysizeof(query), "UPDATE `cuentas` SET `Ropa`='%i',`X`='%f',`Y`='%f',`Z`='%f',`Genero`='%i',`Vida`='%f',`Chaleco`='%f',`Muertes`='%i',`Asesinatos`='%i' WHERE `Nombre`='%s'",
Jugador[playerid][Ropa],
jX,
jY,
jZ,
Jugador[playerid][Genero],
hp,
chale,
Jugador[playerid][Muertes],
Jugador[playerid][Asesinatos],
NombreJugador(playerid));
mysql_query(MySQLquery);
//
mysql_format(MySQLquerysizeof(query), "UPDATE `cuentas` SET `Edad`='%i', `Faccion`='%i', `Rango`='%i', `Trabajo`='%i', `Dinero`='%i' WHERE `Nombre`='%s'",
Jugador[playerid][Edad],
Jugador[playerid][Faccion],
Jugador[playerid][Rango],
Jugador[playerid][Trabajo],
Jugador[playerid][Dinero],
NombreJugador(playerid));
mysql_query(MySQLquery);

mysql_format(MySQLquerysizeof(query), "UPDATE `cuentas` SET `VW`='%i', `Interior`='%i' WHERE `Nombre`='%s'",
pVW,
pInt,
NombreJugador(playerid));
mysql_query(MySQLquery);

return 
1;
}
public 
OnQueryError(erroriderror[], callback[], query[], connectionHandle)
{
    switch(
errorid)
    {
        case 
CR_SERVER_GONE_ERROR:
        {
            
printf("Conexion perdida..");
            
mysql_reconnect(connectionHandle);
        }
        case 
ER_SYNTAX_ERROR:
        {
            
printf("Error en el sintaxis de la consulta: %s",query);
        }
    }
    return 
1;
}
stock MensajeFaccion(fidcolormensaje[])
{
for(new 
0MAX_PLAYERSi++)
{
if(
Jugador[i][Faccion] == fid)
{
SCM(i,color,mensaje);
}
}
return 
1;


Last edited by Aaron; 28/06/2019 at 03:49 AM.
Aaron is offline   Reply With Quote
Old 28/06/2019, 02:01 AM   #2
bruxo00
High-roller
 
bruxo00's Avatar
 
Join Date: Oct 2012
Location: Portugal
Posts: 1,120
Reputation: 152
Default Re: [Ajuda] Bloquear entrada no server de nomes errados

PHP Code:
stock IsRPName(const name[], max_underscores 1)
{
    new 
underscores 0;
    if (
name[0] < 'A' || name[0] > 'Z') return false;
    for(new 
1strlen(name); i++)
    {
        if(
name[i] != '_' && (name[i] < 'A' || name[i] > 'Z') && (name[i] < 'a' || name[i] > 'z')) return false;
        if((
name[i] >= 'A' && name[i] <= 'Z') && (name[1] != '_')) return false;
        if(
name[i] == '_')
        {
            
underscores++;
            if(
underscores max_underscores || == strlen(name)) return false;
            if(
name[1] < 'A' || name[1] > 'Z') return false;
        }
    }
    if (
underscores == 0) return false;

    return 
true;

__________________
RELEASES

[INC] SAMPMailJS
[FS] doxIT!
[GM] Paradise City Roleplay
[TOOL] bAnticheat
[TOOL] Logs Checker
[TUTORIAL] Email confirmation system

www.mp3it.cc · www.diogomartino.com
bruxo00 is offline   Reply With Quote
Old 28/06/2019, 03:51 AM   #3
Aaron
Little Clucker
 
Join Date: Jun 2019
Posts: 11
Reputation: 0
Default Re: [Ajuda] Bloquear entrada no server de nomes errados

Onde adiciono isso Bruxo? é preciso colocar alguma coisa no começo da GM?/

Eu sou bem marreco ainda man... se pude-se me explicar ficaria muito grato
Aaron is offline   Reply With Quote
Old 28/06/2019, 04:32 PM   #4
Menorzin
Little Clucker
 
Join Date: May 2019
Posts: 26
Reputation: 0
Default Re: [Ajuda] Bloquear entrada no server de nomes errados

Quote:
Originally Posted by AgaDoisZero View Post
Da próxima vez use o search, achei e em menos de 1 min encontrei esse, mas acho o do bruxo mais melhor.

https://forum.sa-mp.com/showthread.php?t=418189
Mais melhor, português ta como? Mas como ele disse, da próxima use o search e caso não achar crie o tópico.
Menorzin is offline   Reply With Quote
Old 28/06/2019, 04:56 PM   #5
Arleann
Big Clucker
 
Arleann's Avatar
 
Join Date: Feb 2018
Location: Chapadinha-ma
Posts: 181
Reputation: 2
Post Re: [Ajuda] Bloquear entrada no server de nomes errados

Quote:
Originally Posted by Aaron View Post
Onde adiciono isso Bruxo? é preciso colocar alguma coisa no começo da GM?/

Eu sou bem marreco ainda man... se pude-se me explicar ficaria muito grato

Mano já que vc é meio novo no pawno recomendo que dê uma estudada na linguagem aki

Ou então aki msm no forum tem tutoriais excelentes...

Dps que vc conhecer bastante a linguagem vc nao tera dificuldades em compreender algum codigo
__________________
Uma pessoa inteligente resolve um problema, um sábio o previne.

Albert Einstein
Arleann is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Ajuda] Bloquear entrada no veículo Life Advanced Português/Portuguese 38 26/03/2015 03:54 AM
[Ajuda] Bloquear Entrada Humildade Português/Portuguese 18 28/01/2013 07:39 PM
[AJUDA]Bloquear digitos no server [STR]Matrix Português/Portuguese 0 08/04/2012 01:19 AM
[AJUDA]Comandos Errados Mengao_Carioca Português/Portuguese 9 20/07/2010 09:18 PM


All times are GMT. The time now is 04:25 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.