#include <a_samp>
#include <a_mysql>
#include <zcmd>
// == Configurações do FS
// => Mysql
#define Host "localhost"
#define Usuario "root"
#define DataBase "samp"
#define Senha ""
//Registro
#define SKIN_INICIAL 26 //Mude para a skin desejada
#define LEVEL_INICIAL 1 // ||
#define DINHEIRO_INICIAL 5000 // ||
#define POSX_INICIAL 1721.8422 //Pos X de spawn de registro
#define POSY_INICIAL -1880.1793 //Pos Y de spawn de registro
#define POSZ_INICIAL 13.5649 //Pos Z de spawn de registro
#define WHATSAPP "edite" // troque pelo whats desejado
#define FORUM "edite" // troque pelo seu endereço do forum
#define DIALOG_REGISTRO 100
#define DIALOG_SEXO 101
#define DIALOG_IDADE 102
#define DIALOG_SENHA 103
#define DIALOG_NICK 104
#define DIALOG_LOGIN 200
#define DIALOG_FORUM 201
#define DIALOG_WHATS 202
#define SKIN_USADA PlayerInfo[playerid][Skin]
new Conexao;
new DigitouSenha[ MAX_PLAYERS] , DigitouSexo[ MAX_PLAYERS] ;
new DigitouIdade[ MAX_PLAYERS] , DigitouLogin[ MAX_PLAYERS] ;
new ClicouWhats[ MAX_PLAYERS] , ClicouForum[ MAX_PLAYERS] ;
new Text: Draw_Fundo[ MAX_PLAYERS] [ 8 ] ;
new Text: Draw_Registro[ MAX_PLAYERS] [ 7 ] ;
new Text: Draw_Login[ MAX_PLAYERS] [ 7 ] ;
enum pInfo
{
ID,
pPassword[ 129 ] ,
Sexo,
Idade,
Dinheiro,
Skin,
Matou,
Morreu,
Level,
Admin,
bool: Logado
} ;
new PlayerInfo[ MAX_PLAYERS] [ pInfo] ;
public OnFilterScriptInit( )
{
print ( "\n --------------------------------------" ) ;
print ( " FS Registro/Login por Cleyson Stein" ) ;
print ( "--------------------------------------\n " ) ;
mysql_query ( Conexao
, "CREATE TABLE IF NOT EXISTS `usuarios`(`ID`int AUTO_INCREMENT PRIMARY KEY, `Nome` varchar(24) NOT NULL, `Senha` varchar(129) NOT NULL, `Admin` int(11) NOT NULL, `Sexo` int(11) NOT NULL, `Idade` int(11) NOT NULL, `Dinheiro` int(11) NOT NULL, `Skin` int(11) NOT NULL, `Matou` int(11) NOT NULL, `Morreu` int(11) NOT NULL, `PosX` float NOT NULL,`PosY` float NOT NULL,`PosZ` float NOT NULL)" , false ) ; return 1 ;
}
public OnFilterScriptExit( )
{
for ( new i = 0 ; i < MAX_PLAYERS; i++ )
{
SalvarDados( i) ;
}
return 1 ;
}
public OnPlayerRequestClass( playerid, classid)
{
SetPlayerPos( playerid, 1958.3783 , 1343.1572 , 15.3746 ) ;
SetPlayerCameraPos( playerid, 1958.3783 , 1343.1572 , 15.3746 ) ;
SetPlayerCameraLookAt( playerid, 1958.3783 , 1343.1572 , 15.3746 ) ;
return 1 ;
}
public OnPlayerConnect( playerid)
{
CriarTextDraw( playerid) ;
new Query[ 70 ] ;
mysql_format
( Conexao
, Query
, sizeof ( Query
) , "SELECT * FROM usuarios WHERE Nome='%e '" , Nome
( playerid
) ) ; mysql_tquery( Conexao, Query, "Mysql_Verificar" , "d" , playerid) ;
return 1 ;
}
forward Mysql_Verificar( playerid) ;
public Mysql_Verificar( playerid)
{
SelectTextDraw( playerid, 0xFF0000FF ) ;
TextDrawShowForPlayer( playerid, Draw_Fundo[ playerid] [ 0 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Fundo[ playerid] [ 1 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Fundo[ playerid] [ 2 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Fundo[ playerid] [ 3 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Fundo[ playerid] [ 4 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Fundo[ playerid] [ 5 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Fundo[ playerid] [ 6 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Fundo[ playerid] [ 7 ] ) ;
if ( cache_get_row_count( Conexao) == 1 )
{
new tmp[ 129 ] ;
cache_get_field_content( 0 , "Senha" , tmp) ; format( PlayerInfo[ playerid] [ pPassword] , 129 , "%s " , tmp) ;
PlayerInfo[ playerid] [ ID] = cache_get_field_content_int( 0 , "ID" ) ;
PlayerInfo[ playerid] [ Skin] = cache_get_field_content_int( 0 , "Skin" ) ;
TextDrawShowForPlayer( playerid, Draw_Login[ playerid] [ 0 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Login[ playerid] [ 1 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Login[ playerid] [ 2 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Login[ playerid] [ 3 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Login[ playerid] [ 4 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Login[ playerid] [ 5 ] ) ;
} else {
TextDrawShowForPlayer( playerid, Draw_Registro[ playerid] [ 0 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Registro[ playerid] [ 1 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Registro[ playerid] [ 2 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Registro[ playerid] [ 3 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Registro[ playerid] [ 4 ] ) ;
TextDrawShowForPlayer( playerid, Draw_Registro[ playerid] [ 5 ] ) ;
}
return 1 ;
}
public OnPlayerDisconnect( playerid, reason)
{
SalvarDados( playerid) ;
return 1 ;
}
public OnPlayerDeath( playerid, killerid, reason)
{
PlayerInfo[ playerid] [ Morreu] ++;
PlayerInfo[ killerid] [ Matou] ++;
return 1 ;
}
public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
{
new Msg_format[ 128 ] ;
switch ( dialogid)
{
case DIALOG_REGISTRO:
{
if ( ! response) return SendClientMessage( playerid, - 1 , "Você não quis digitar uma senha" ) ;
{
SendClientMessage( playerid, - 1 , "Sua senha deve conter entre 4 e 16 caracteres!!!" ) ;
ShowPlayerDialog( playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Digite uma senha:" , "Digite uma senha abaixo para registrar-se.\n \n Obs: Ela deve conter no mínimo 4 e no máximo 16 caracteres." , "Registrar" , "Voltar" ) ;
return 1 ;
}
if ( response)
{
DigitouSenha[ playerid] = 1 ;
TextDrawSetString( Draw_Registro[ playerid] [ 2 ] , inputtext) ;
new Query[ 200 ] ;
mysql_format
( Conexao
, Query
, sizeof ( Query
) , "INSERT INTO `usuarios` (`Nome`, `Senha`) VALUES ('%e ','%e ')" , Nome
( playerid
) , inputtext
) ; mysql_tquery( Conexao, Query, "DadosRegistrados" , "i" , playerid) ;
return 1 ;
}
return 1 ;
}
case DIALOG_SEXO:
{
if ( ! response)
{
DigitouSexo[ playerid] = 1 ;
SendClientMessage( playerid, - 1 , "Seu sexo é feminino." ) ;
TextDrawSetString( Draw_Registro[ playerid] [ 3 ] , "Feminino" ) ;
PlayerInfo[ playerid] [ Sexo] = 1 ;
} else {
DigitouSexo[ playerid] = 1 ;
SendClientMessage( playerid, - 1 , "Seu sexo é masculino." ) ;
TextDrawSetString( Draw_Registro[ playerid] [ 3 ] , "Masculino" ) ;
PlayerInfo[ playerid] [ Sexo] = 2 ;
}
return 1 ;
}
case DIALOG_IDADE:
{
if ( ! response) return SendClientMessage( playerid, - 1 , "Você não quis digitar a idade do seu personagem." ) ;
{
SendClientMessage( playerid, - 1 , "Você não digitou nada, digite uma idade!" ) ;
ShowPlayerDialog( playerid, DIALOG_IDADE, DIALOG_STYLE_INPUT, "Digite sua idade" , "Digite a idade do seu personagem abaixo.\n \n Obs: Mínimo 12 e máximo 80 anos." , "Registrar" , "Voltar" ) ;
return 1 ;
}
{
SendClientMessage( playerid, - 1 , "Sua idade deve ser entre 10 e 100 anos." ) ;
ShowPlayerDialog( playerid, DIALOG_IDADE, DIALOG_STYLE_INPUT, "Digite sua idade" , "Digite a idade do seu personagem abaixo.\n \n Obs: Mínimo 12 e máximo 80 anos." , "Registrar" , "Voltar" ) ;
return 1 ;
}
DigitouIdade[ playerid] = 1 ;
TextDrawSetString( Draw_Registro[ playerid] [ 4 ] , inputtext) ;
PlayerInfo
[ playerid
] [ Idade
] = strval ( inputtext
) ; return 1 ;
}
case DIALOG_LOGIN:
{
if ( ! response) return ShowPlayerDialog( playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:" , "Você já é um player registrado, digite uma senha abaixo para logar-se" , "Logar" , "Voltar" ) ;
if ( ! strcmp ( PlayerInfo
[ playerid
] [ pPassword
] , inputtext
, true , 129 ) ) {
DigitouLogin[ playerid] = 1 ;
TextDrawSetString( Draw_Login[ playerid] [ 2 ] , inputtext) ;
} else {
SendClientMessage( playerid, - 1 , "[ERRO] Senha incorreta !" ) ;
ShowPlayerDialog( playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:" , "Você já é um player registrado, digite uma senha abaixo para logar-se" , "Logar" , "Voltar" ) ;
}
return 1 ;
}
case DIALOG_SENHA:
{
if ( ! response) return SendClientMessage( playerid, - 1 , "Você não quis digitar uma senha" ) ;
{
SendClientMessage( playerid, - 1 , "Sua senha deve conter entre 4 e 16 caracteres!!!" ) ;
ShowPlayerDialog( playerid, DIALOG_SENHA, DIALOG_STYLE_PASSWORD, "Digite uma senha:" , "Digite sua nova senha abaixo\n \n Obs: Ela deve conter no mínimo 4 e no máximo 16 caracteres." , "Trocar" , "Voltar" ) ;
return 1 ;
}
if ( response)
{
new Query[ 120 ] ;
mysql_format
( Conexao
, Query
, sizeof ( Query
) , "UPDATE `usuarios` SET `Senha`='%e ' WHERE `ID`='%d '" , inputtext
, PlayerInfo
[ playerid
] [ ID
] ) ; mysql_tquery( Conexao, Query, "" , "" ) ;
format
( Msg_format
, sizeof ( Msg_format
) , "Sua senha foi alterada com sucesso, nova senha: %s !!!" , inputtext
) ; SendClientMessage( playerid, - 1 , Msg_format) ;
return 1 ;
}
return 1 ;
}
case DIALOG_NICK:
{
if ( ! response) return SendClientMessage( playerid, - 1 , "Você não quis digitar uma senha" ) ;
{
SendClientMessage( playerid, - 1 , "Seu novo nick name deve conter ate 25 caracteres!!!" ) ;
ShowPlayerDialog( playerid, DIALOG_NICK, DIALOG_STYLE_PASSWORD, "Digite um novo nick:" , "Digite seu novo nick abaixo\n \n Obs: Ele deve conter no máximo 25 caracteres." , "Trocar" , "Voltar" ) ;
return 1 ;
}
if ( response)
{
SetPlayerName( playerid, inputtext) ;
new Query[ 120 ] ;
mysql_format
( Conexao
, Query
, sizeof ( Query
) , "UPDATE `usuarios` SET `Nome`='%e ' WHERE `ID`='%d '" , inputtext
, PlayerInfo
[ playerid
] [ ID
] ) ; mysql_tquery( Conexao, Query, "" , "" ) ;
format
( Msg_format
, sizeof ( Msg_format
) , "Seu nick foi alterado com sucesso, novo nick: %s !!!" , inputtext
) ; SendClientMessage( playerid, - 1 , Msg_format) ;
return 1 ;
}
return 1 ;
}
}
return 1 ;
}
forward Mysql_Carregar( playerid) ;
public Mysql_Carregar( playerid)
{
PlayerInfo[ playerid] [ Admin] = cache_get_field_content_int( 0 , "Admin" ) ;
PlayerInfo[ playerid] [ Sexo] = cache_get_field_content_int( 0 , "Sexo" ) ;
PlayerInfo[ playerid] [ Idade] = cache_get_field_content_int( 0 , "Idade" ) ;
PlayerInfo[ playerid] [ Dinheiro] = cache_get_field_content_int( 0 , "Dinheiro" ) ;
PlayerInfo[ playerid] [ Skin] = cache_get_field_content_int( 0 , "Skin" ) ;
PlayerInfo[ playerid] [ Matou] = cache_get_field_content_int( 0 , "Matou" ) ;
PlayerInfo[ playerid] [ Morreu] = cache_get_field_content_int( 0 , "Morreu" ) ;
PlayerInfo
[ playerid
] [ Pos ] [ 0 ] = cache_get_field_content_int
( 0 , "PosX" ) ; PlayerInfo
[ playerid
] [ Pos ] [ 1 ] = cache_get_field_content_int
( 0 , "PosY" ) ; PlayerInfo
[ playerid
] [ Pos ] [ 2 ] = cache_get_field_content_int
( 0 , "PosZ" ) ; CarregarDados( playerid) ;
return 1 ;
}
stock SalvarDados( playerid)
{
if ( PlayerInfo[ playerid] [ Logado] == false ) return 1 ;
new Float: X, Float: Y, Float: Z, Query[ 320 ] ;
GetPlayerPos( playerid, Float: X, Float: Y, Float: Z) ;
mysql_format
( Conexao
, Query
, sizeof ( Query
) , "UPDATE `usuarios` SET `Admin`='%d ', `Sexo`='%d ', `Idade`='%d ', `Dinheiro`='%d ', `Skin`='%d ', `Matou`='%d ', `Morreu`='%d ', `PosX`=%.1f , `PosY`=%.1f , `PosZ`=%.1f WHERE `ID`='%d '" , PlayerInfo[ playerid] [ Admin] ,
PlayerInfo[ playerid] [ Sexo] ,
PlayerInfo[ playerid] [ Idade] ,
GetPlayerMoney( playerid) ,
PlayerInfo[ playerid] [ Skin] ,
PlayerInfo[ playerid] [ Matou] ,
PlayerInfo[ playerid] [ Morreu] ,
Float: X,
Float: Y,
Float: Z,
PlayerInfo[ playerid] [ ID] ) ;
mysql_tquery( Conexao, Query, "DadosSalvos" , "d" , playerid) ;
return 1 ;
}
stock CarregarDados( playerid)
{
TirarTextDraw( playerid) ;
CancelSelectTextDraw( playerid) ;
SetPlayerScore( playerid, PlayerInfo[ playerid] [ Level] ) ;
GivePlayerMoney( playerid, PlayerInfo[ playerid] [ Dinheiro] ) ;
SetSpawnInfo
( playerid
, 0 , PlayerInfo
[ playerid
] [ Skin
] , PlayerInfo
[ playerid
] [ Pos ] [ 0 ] , PlayerInfo
[ playerid
] [ Pos ] [ 1 ] , PlayerInfo
[ playerid
] [ Pos ] [ 2 ] , 269.15 , 0 , 0 , 0 , 0 , 0 , 0 ) ; SpawnPlayer( playerid) ;
SendClientMessage( playerid, - 1 , "Sua conta foi carregada com sucesso!" ) ;
PlayerInfo[ playerid] [ Logado] = true ;
return 1 ;
}
forward DadosRegistrados( playerid) ;
public DadosRegistrados( playerid)
{
PlayerInfo[ playerid] [ ID] = cache_insert_id( ) ;
printf ( "-> Nova conta registrada ID: %d " , PlayerInfo
[ playerid
] [ ID
] ) ; return 1 ;
}
forward DadosSalvos( playerid) ;
public DadosSalvos( playerid)
{
printf ( "-> Conta salva ID: %d " , PlayerInfo
[ playerid
] [ ID
] ) ; return 1 ;
}
stock Nome( playerid)
{
new name[ MAX_PLAYER_NAME] ;
return ( GetPlayerName
( playerid
, name
, sizeof ( name
) ) , name
) ; }
stock CriarTextDraw( playerid)
{
// == Text draws box fundo ou seja nao irao alterar se for login ou registro
Draw_Fundo[ playerid] [ 0 ] = TextDrawCreate( 130.000000 , 80.000000 , "#" ) ;
TextDrawBackgroundColor( Draw_Fundo[ playerid] [ 0 ] , 255 ) ;
TextDrawFont( Draw_Fundo[ playerid] [ 0 ] , 0 ) ;
TextDrawLetterSize( Draw_Fundo[ playerid] [ 0 ] , 0.800000 , 30.799999 ) ;
TextDrawColor( Draw_Fundo[ playerid] [ 0 ] , - 1 ) ;
TextDrawSetOutline( Draw_Fundo[ playerid] [ 0 ] , 0 ) ;
TextDrawSetProportional( Draw_Fundo[ playerid] [ 0 ] , 1 ) ;
TextDrawSetShadow( Draw_Fundo[ playerid] [ 0 ] , 1 ) ;
TextDrawUseBox( Draw_Fundo[ playerid] [ 0 ] , 1 ) ;
TextDrawBoxColor( Draw_Fundo[ playerid] [ 0 ] , - 120 ) ;
TextDrawTextSize( Draw_Fundo[ playerid] [ 0 ] , 508.000000 , 81.000000 ) ;
Draw_Fundo[ playerid] [ 1 ] = TextDrawCreate( 130.000000 , 80.000000 , "#" ) ;
TextDrawBackgroundColor( Draw_Fundo[ playerid] [ 1 ] , 255 ) ;
TextDrawFont( Draw_Fundo[ playerid] [ 1 ] , 0 ) ;
TextDrawLetterSize( Draw_Fundo[ playerid] [ 1 ] , 0.800000 , 2.299995 ) ;
TextDrawColor( Draw_Fundo[ playerid] [ 1 ] , - 1 ) ;
TextDrawSetOutline( Draw_Fundo[ playerid] [ 1 ] , 0 ) ;
TextDrawSetProportional( Draw_Fundo[ playerid] [ 1 ] , 1 ) ;
TextDrawSetShadow( Draw_Fundo[ playerid] [ 1 ] , 1 ) ;
TextDrawUseBox( Draw_Fundo[ playerid] [ 1 ] , 1 ) ;
TextDrawBoxColor( Draw_Fundo[ playerid] [ 1 ] , 102 ) ;
TextDrawTextSize( Draw_Fundo[ playerid] [ 1 ] , 508.000000 , 81.000000 ) ;
Draw_Fundo[ playerid] [ 2 ] = TextDrawCreate( 130.000000 , 337.000000 , "#" ) ;
TextDrawBackgroundColor( Draw_Fundo[ playerid] [ 2 ] , 255 ) ;
TextDrawFont( Draw_Fundo[ playerid] [ 2 ] , 0 ) ;
TextDrawLetterSize( Draw_Fundo[ playerid] [ 2 ] , 0.800000 , 2.299995 ) ;
TextDrawColor( Draw_Fundo[ playerid] [ 2 ] , - 1 ) ;
TextDrawSetOutline( Draw_Fundo[ playerid] [ 2 ] , 0 ) ;
TextDrawSetProportional( Draw_Fundo[ playerid] [ 2 ] , 1 ) ;
TextDrawSetShadow( Draw_Fundo[ playerid] [ 2 ] , 1 ) ;
TextDrawUseBox( Draw_Fundo[ playerid] [ 2 ] , 1 ) ;
TextDrawBoxColor( Draw_Fundo[ playerid] [ 2 ] , 102 ) ;
TextDrawTextSize( Draw_Fundo[ playerid] [ 2 ] , 508.000000 , 81.000000 ) ;
Draw_Fundo[ playerid] [ 3 ] = TextDrawCreate( 123.000000 , 96.000000 , "-" ) ;
TextDrawBackgroundColor( Draw_Fundo[ playerid] [ 3 ] , 255 ) ;
TextDrawFont( Draw_Fundo[ playerid] [ 3 ] , 1 ) ;
TextDrawLetterSize( Draw_Fundo[ playerid] [ 3 ] , 27.550069 , 0.899999 ) ;
TextDrawColor( Draw_Fundo[ playerid] [ 3 ] , 65535 ) ;
TextDrawSetOutline( Draw_Fundo[ playerid] [ 3 ] , 1 ) ;
TextDrawSetProportional( Draw_Fundo[ playerid] [ 3 ] , 1 ) ;
Draw_Fundo[ playerid] [ 4 ] = TextDrawCreate( 123.000000 , 331.000000 , "-" ) ;
TextDrawBackgroundColor( Draw_Fundo[ playerid] [ 4 ] , 255 ) ;
TextDrawFont( Draw_Fundo[ playerid] [ 4 ] , 1 ) ;
TextDrawLetterSize( Draw_Fundo[ playerid] [ 4 ] , 27.550069 , 0.899999 ) ;
TextDrawColor( Draw_Fundo[ playerid] [ 4 ] , 65535 ) ;
TextDrawSetOutline( Draw_Fundo[ playerid] [ 4 ] , 1 ) ;
TextDrawSetProportional( Draw_Fundo[ playerid] [ 4 ] , 1 ) ;
Draw_Fundo[ playerid] [ 5 ] = TextDrawCreate( 255.000000 , 77.000000 , "~b~Bem Vindo" ) ;
TextDrawBackgroundColor( Draw_Fundo[ playerid] [ 5 ] , 255 ) ;
TextDrawFont( Draw_Fundo[ playerid] [ 5 ] , 0 ) ;
TextDrawLetterSize( Draw_Fundo[ playerid] [ 5 ] , 0.959999 , 2.299998 ) ;
TextDrawColor( Draw_Fundo[ playerid] [ 5 ] , - 1 ) ;
TextDrawSetOutline( Draw_Fundo[ playerid] [ 5 ] , 0 ) ;
TextDrawSetProportional( Draw_Fundo[ playerid] [ 5 ] , 1 ) ;
TextDrawSetShadow( Draw_Fundo[ playerid] [ 5 ] , 1 ) ;
Draw_Fundo[ playerid] [ 6 ] = TextDrawCreate( 256.000000 , 335.000000 , "~b~Bom Jogo !" ) ;
TextDrawBackgroundColor( Draw_Fundo[ playerid] [ 6 ] , 255 ) ;
TextDrawFont( Draw_Fundo[ playerid] [ 6 ] , 0 ) ;
TextDrawLetterSize( Draw_Fundo[ playerid] [ 6 ] , 0.959999 , 2.299998 ) ;
TextDrawColor( Draw_Fundo[ playerid] [ 6 ] , - 1 ) ;
TextDrawSetOutline( Draw_Fundo[ playerid] [ 6 ] , 0 ) ;
TextDrawSetProportional( Draw_Fundo[ playerid] [ 6 ] , 1 ) ;
TextDrawSetShadow( Draw_Fundo[ playerid] [ 6 ] , 1 ) ;
Draw_Fundo[ playerid] [ 7 ] = TextDrawCreate( 450.000000 , 310.000000 , " Cancelar" ) ;
TextDrawBackgroundColor( Draw_Fundo[ playerid] [ 7 ] , 255 ) ;
TextDrawFont( Draw_Fundo[ playerid] [ 7 ] , 2 ) ;
TextDrawLetterSize( Draw_Fundo[ playerid] [ 7 ] , 0.209999 , 1.600000 ) ;
TextDrawColor( Draw_Fundo[ playerid] [ 7 ] , - 1 ) ;
TextDrawSetOutline( Draw_Fundo[ playerid] [ 7 ] , 0 ) ;
TextDrawSetProportional( Draw_Fundo[ playerid] [ 7 ] , 1 ) ;
TextDrawSetShadow( Draw_Fundo[ playerid] [ 7 ] , 1 ) ;
TextDrawUseBox( Draw_Fundo[ playerid] [ 7 ] , 1 ) ;
TextDrawBoxColor( Draw_Fundo[ playerid] [ 7 ] , 153 ) ;
TextDrawTextSize( Draw_Fundo[ playerid] [ 7 ] , 500.000000 , 10.000000 ) ;
// ===== TextDraw Registroo
Draw_Registro[ playerid] [ 0 ] = TextDrawCreate( 211.000000 , 110.000000 , "Ola, sua conta ainda nao e registrada" ) ;
TextDrawBackgroundColor( Draw_Registro[ playerid] [ 0 ] , 255 ) ;
TextDrawFont( Draw_Registro[ playerid] [ 0 ] , 2 ) ;
TextDrawLetterSize( Draw_Registro[ playerid] [ 0 ] , 0.219999 , 1.899999 ) ;
TextDrawColor( Draw_Registro[ playerid] [ 0 ] , 255 ) ;
TextDrawSetOutline( Draw_Registro[ playerid] [ 0 ] , 0 ) ;
TextDrawSetProportional( Draw_Registro[ playerid] [ 0 ] , 1 ) ;
TextDrawSetShadow( Draw_Registro[ playerid] [ 0 ] , 0 ) ;
Draw_Registro[ playerid] [ 1 ] = TextDrawCreate( 385.000000 , 310.000000 , " Registrar" ) ;
TextDrawBackgroundColor( Draw_Registro[ playerid] [ 1 ] , 255 ) ;
TextDrawFont( Draw_Registro[ playerid] [ 1 ] , 2 ) ;
TextDrawLetterSize( Draw_Registro[ playerid] [ 1 ] , 0.209999 , 1.600000 ) ;
TextDrawColor( Draw_Registro[ playerid] [ 1 ] , - 1 ) ;
TextDrawSetOutline( Draw_Registro[ playerid] [ 1 ] , 0 ) ;
TextDrawSetProportional( Draw_Registro[ playerid] [ 1 ] , 1 ) ;
TextDrawSetShadow( Draw_Registro[ playerid] [ 1 ] , 1 ) ;
TextDrawUseBox( Draw_Registro[ playerid] [ 1 ] , 1 ) ;
TextDrawBoxColor( Draw_Registro[ playerid] [ 1 ] , 153 ) ;
TextDrawTextSize( Draw_Registro[ playerid] [ 1 ] , 437.000000 , 10.000000 ) ;
Draw_Registro[ playerid] [ 2 ] = TextDrawCreate( 170.000000 , 144.000000 , " Senha" ) ;
TextDrawBackgroundColor( Draw_Registro[ playerid] [ 2 ] , 255 ) ;
TextDrawFont( Draw_Registro[ playerid] [ 2 ] , 2 ) ;
TextDrawLetterSize( Draw_Registro[ playerid] [ 2 ] , 0.500000 , 3.000000 ) ;
TextDrawColor( Draw_Registro[ playerid] [ 2 ] , - 1 ) ;
TextDrawSetOutline( Draw_Registro[ playerid] [ 2 ] , 0 ) ;
TextDrawSetProportional( Draw_Registro[ playerid] [ 2 ] , 1 ) ;
TextDrawSetShadow( Draw_Registro[ playerid] [ 2 ] , 1 ) ;
TextDrawUseBox( Draw_Registro[ playerid] [ 2 ] , 1 ) ;
TextDrawBoxColor( Draw_Registro[ playerid] [ 2 ] , 153 ) ;
TextDrawTextSize( Draw_Registro[ playerid] [ 2 ] , 335.000000 , 30.000000 ) ;
Draw_Registro[ playerid] [ 3 ] = TextDrawCreate( 170.000000 , 206.000000 , " Sexo" ) ;
TextDrawBackgroundColor( Draw_Registro[ playerid] [ 3 ] , 255 ) ;
TextDrawFont( Draw_Registro[ playerid] [ 3 ] , 2 ) ;
TextDrawLetterSize( Draw_Registro[ playerid] [ 3 ] , 0.500000 , 3.000000 ) ;
TextDrawColor( Draw_Registro[ playerid] [ 3 ] , - 1 ) ;
TextDrawSetOutline( Draw_Registro[ playerid] [ 3 ] , 0 ) ;
TextDrawSetProportional( Draw_Registro[ playerid] [ 3 ] , 1 ) ;
TextDrawSetShadow( Draw_Registro[ playerid] [ 3 ] , 1 ) ;
TextDrawUseBox( Draw_Registro[ playerid] [ 3 ] , 1 ) ;
TextDrawBoxColor( Draw_Registro[ playerid] [ 3 ] , 153 ) ;
TextDrawTextSize( Draw_Registro[ playerid] [ 3 ] , 335.000000 , 30.000000 ) ;
Draw_Registro[ playerid] [ 4 ] = TextDrawCreate( 170.000000 , 267.000000 , " Idade" ) ;
TextDrawBackgroundColor( Draw_Registro[ playerid] [ 4 ] , 255 ) ;
TextDrawFont( Draw_Registro[ playerid] [ 4 ] , 2 ) ;
TextDrawLetterSize( Draw_Registro[ playerid] [ 4 ] , 0.500000 , 3.000000 ) ;
TextDrawColor( Draw_Registro[ playerid] [ 4 ] , - 1 ) ;
TextDrawSetOutline( Draw_Registro[ playerid] [ 4 ] , 0 ) ;
TextDrawSetProportional( Draw_Registro[ playerid] [ 4 ] , 1 ) ;
TextDrawSetShadow( Draw_Registro[ playerid] [ 4 ] , 1 ) ;
TextDrawUseBox( Draw_Registro[ playerid] [ 4 ] , 1 ) ;
TextDrawBoxColor( Draw_Registro[ playerid] [ 4 ] , 153 ) ;
TextDrawTextSize( Draw_Registro[ playerid] [ 4 ] , 335.000000 , 30.000000 ) ;
Draw_Registro[ playerid] [ 5 ] = TextDrawCreate( 390.000000 , 146.000000 , "New Textdraw" ) ;
TextDrawBackgroundColor( Draw_Registro[ playerid] [ 5 ] , 255 ) ;
TextDrawFont( Draw_Registro[ playerid] [ 5 ] , 5 ) ;
TextDrawLetterSize( Draw_Registro[ playerid] [ 5 ] , 0.600000 , - 5.099998 ) ;
TextDrawColor( Draw_Registro[ playerid] [ 5 ] , - 1 ) ;
TextDrawSetOutline( Draw_Registro[ playerid] [ 5 ] , 0 ) ;
TextDrawSetProportional( Draw_Registro[ playerid] [ 5 ] , 1 ) ;
TextDrawSetShadow( Draw_Registro[ playerid] [ 5 ] , 1 ) ;
TextDrawUseBox( Draw_Registro[ playerid] [ 5 ] , 1 ) ;
TextDrawBoxColor( Draw_Registro[ playerid] [ 5 ] , 255 ) ;
TextDrawTextSize( Draw_Registro[ playerid] [ 5 ] , 105.000000 , 145.000000 ) ;
TextDrawSetPreviewModel( Draw_Registro[ playerid] [ 5 ] , SKIN_INICIAL) ;
TextDrawSetPreviewRot( Draw_Registro[ playerid] [ 5 ] , - 16.000000 , 0.000000 , - 55.000000 , 1.000000 ) ;
Draw_Registro[ playerid] [ 6 ] = TextDrawCreate( 139.000000 , 310.000000 , "~r~Por favor preencha todos os dados !" ) ;
TextDrawBackgroundColor( Draw_Registro[ playerid] [ 6 ] , 255 ) ;
TextDrawFont( Draw_Registro[ playerid] [ 6 ] , 2 ) ;
TextDrawLetterSize( Draw_Registro[ playerid] [ 6 ] , 0.270000 , 1.300000 ) ;
TextDrawColor( Draw_Registro[ playerid] [ 6 ] , - 1 ) ;
TextDrawSetOutline( Draw_Registro[ playerid] [ 6 ] , 1 ) ;
TextDrawSetProportional( Draw_Registro[ playerid] [ 6 ] , 1 ) ;
// ==== TextDraw Login
Draw_Login[ playerid] [ 0 ] = TextDrawCreate( 211.000000 , 110.000000 , "Ola, sua conta ja esta registrada." ) ;
TextDrawBackgroundColor( Draw_Login[ playerid] [ 0 ] , 255 ) ;
TextDrawFont( Draw_Login[ playerid] [ 0 ] , 2 ) ;
TextDrawLetterSize( Draw_Login[ playerid] [ 0 ] , 0.219999 , 1.899999 ) ;
TextDrawColor( Draw_Login[ playerid] [ 0 ] , 255 ) ;
TextDrawSetOutline( Draw_Login[ playerid] [ 0 ] , 0 ) ;
TextDrawSetProportional( Draw_Login[ playerid] [ 0 ] , 1 ) ;
TextDrawSetShadow( Draw_Login[ playerid] [ 0 ] , 0 ) ;
Draw_Login[ playerid] [ 1 ] = TextDrawCreate( 385.000000 , 310.000000 , " Logar" ) ;
TextDrawBackgroundColor( Draw_Login[ playerid] [ 1 ] , 255 ) ;
TextDrawFont( Draw_Login[ playerid] [ 1 ] , 2 ) ;
TextDrawLetterSize( Draw_Login[ playerid] [ 1 ] , 0.209999 , 1.600000 ) ;
TextDrawColor( Draw_Login[ playerid] [ 1 ] , - 1 ) ;
TextDrawSetOutline( Draw_Login[ playerid] [ 1 ] , 0 ) ;
TextDrawSetProportional( Draw_Login[ playerid] [ 1 ] , 1 ) ;
TextDrawSetShadow( Draw_Login[ playerid] [ 1 ] , 1 ) ;
TextDrawUseBox( Draw_Login[ playerid] [ 1 ] , 1 ) ;
TextDrawBoxColor( Draw_Login[ playerid] [ 1 ] , 153 ) ;
TextDrawTextSize( Draw_Login[ playerid] [ 1 ] , 437.000000 , 10.000000 ) ;
Draw_Login[ playerid] [ 2 ] = TextDrawCreate( 170.000000 , 144.000000 , " Senha" ) ;
TextDrawBackgroundColor( Draw_Login[ playerid] [ 2 ] , 255 ) ;
TextDrawFont( Draw_Login[ playerid] [ 2 ] , 2 ) ;
TextDrawLetterSize( Draw_Login[ playerid] [ 2 ] , 0.500000 , 3.000000 ) ;
TextDrawColor( Draw_Login[ playerid] [ 2 ] , - 1 ) ;
TextDrawSetOutline( Draw_Login[ playerid] [ 2 ] , 0 ) ;
TextDrawSetProportional( Draw_Login[ playerid] [ 2 ] , 1 ) ;
TextDrawSetShadow( Draw_Login[ playerid] [ 2 ] , 1 ) ;
TextDrawUseBox( Draw_Login[ playerid] [ 2 ] , 1 ) ;
TextDrawBoxColor( Draw_Login[ playerid] [ 2 ] , 153 ) ;
TextDrawTextSize( Draw_Login[ playerid] [ 2 ] , 335.000000 , 30.000000 ) ;
Draw_Login[ playerid] [ 3 ] = TextDrawCreate( 170.000000 , 206.000000 , " Forum" ) ;
TextDrawBackgroundColor( Draw_Login[ playerid] [ 3 ] , 255 ) ;
TextDrawFont( Draw_Login[ playerid] [ 3 ] , 2 ) ;
TextDrawLetterSize( Draw_Login[ playerid] [ 3 ] , 0.500000 , 3.000000 ) ;
TextDrawColor( Draw_Login[ playerid] [ 3 ] , - 1 ) ;
TextDrawSetOutline( Draw_Login[ playerid] [ 3 ] , 0 ) ;
TextDrawSetProportional( Draw_Login[ playerid] [ 3 ] , 1 ) ;
TextDrawSetShadow( Draw_Login[ playerid] [ 3 ] , 1 ) ;
TextDrawUseBox( Draw_Login[ playerid] [ 3 ] , 1 ) ;
TextDrawBoxColor( Draw_Login[ playerid] [ 3 ] , 153 ) ;
TextDrawTextSize( Draw_Login[ playerid] [ 3 ] , 335.000000 , 30.000000 ) ;
Draw_Login[ playerid] [ 4 ] = TextDrawCreate( 170.000000 , 267.000000 , " WhatsApp" ) ;
TextDrawBackgroundColor( Draw_Login[ playerid] [ 4 ] , 255 ) ;
TextDrawFont( Draw_Login[ playerid] [ 4 ] , 2 ) ;
TextDrawLetterSize( Draw_Login[ playerid] [ 4 ] , 0.500000 , 3.000000 ) ;
TextDrawColor( Draw_Login[ playerid] [ 4 ] , - 1 ) ;
TextDrawSetOutline( Draw_Login[ playerid] [ 4 ] , 0 ) ;
TextDrawSetProportional( Draw_Login[ playerid] [ 4 ] , 1 ) ;
TextDrawSetShadow( Draw_Login[ playerid] [ 4 ] , 1 ) ;
TextDrawUseBox( Draw_Login[ playerid] [ 4 ] , 1 ) ;
TextDrawBoxColor( Draw_Login[ playerid] [ 4 ] , 153 ) ;
TextDrawTextSize( Draw_Login[ playerid] [ 4 ] , 335.000000 , 30.000000 ) ;
Draw_Login[ playerid] [ 5 ] = TextDrawCreate( 390.000000 , 146.000000 , "New Textdraw" ) ;
TextDrawBackgroundColor( Draw_Login[ playerid] [ 5 ] , 255 ) ;
TextDrawFont( Draw_Login[ playerid] [ 5 ] , 5 ) ;
TextDrawLetterSize( Draw_Login[ playerid] [ 5 ] , 0.600000 , - 5.099998 ) ;
TextDrawColor( Draw_Login[ playerid] [ 5 ] , - 1 ) ;
TextDrawSetOutline( Draw_Login[ playerid] [ 5 ] , 0 ) ;
TextDrawSetProportional( Draw_Login[ playerid] [ 5 ] , 1 ) ;
TextDrawSetShadow( Draw_Login[ playerid] [ 5 ] , 1 ) ;
TextDrawUseBox( Draw_Login[ playerid] [ 5 ] , 1 ) ;
TextDrawBoxColor( Draw_Login[ playerid] [ 5 ] , 255 ) ;
TextDrawTextSize( Draw_Login[ playerid] [ 5 ] , 105.000000 , 145.000000 ) ;
TextDrawSetPreviewModel( Draw_Login[ playerid] [ 5 ] , SKIN_USADA) ;
TextDrawSetPreviewRot( Draw_Login[ playerid] [ 5 ] , - 16.000000 , 0.000000 , - 55.000000 , 1.000000 ) ;
Draw_Login[ playerid] [ 6 ] = TextDrawCreate( 139.000000 , 310.000000 , "~r~Por favor coloque sua senha !" ) ;
TextDrawBackgroundColor( Draw_Login[ playerid] [ 6 ] , 255 ) ;
TextDrawFont( Draw_Login[ playerid] [ 6 ] , 2 ) ;
TextDrawLetterSize( Draw_Login[ playerid] [ 6 ] , 0.270000 , 1.300000 ) ;
TextDrawColor( Draw_Login[ playerid] [ 6 ] , - 1 ) ;
TextDrawSetOutline( Draw_Login[ playerid] [ 6 ] , 1 ) ;
TextDrawSetProportional( Draw_Login[ playerid] [ 6 ] , 1 ) ;
TextDrawSetSelectable( Text: Draw_Fundo[ playerid] [ 7 ] , true ) ;
TextDrawSetSelectable( Text: Draw_Registro[ playerid] [ 1 ] , true ) ;
TextDrawSetSelectable( Text: Draw_Registro[ playerid] [ 2 ] , true ) ;
TextDrawSetSelectable( Text: Draw_Registro[ playerid] [ 3 ] , true ) ;
TextDrawSetSelectable( Text: Draw_Registro[ playerid] [ 4 ] , true ) ;
TextDrawSetSelectable( Text: Draw_Login[ playerid] [ 1 ] , true ) ;
TextDrawSetSelectable( Text: Draw_Login[ playerid] [ 2 ] , true ) ;
TextDrawSetSelectable( Text: Draw_Login[ playerid] [ 3 ] , true ) ;
TextDrawSetSelectable( Text: Draw_Login[ playerid] [ 4 ] , true ) ;
return 1 ;
}
stock TirarTextDraw( playerid)
{
TextDrawHideForPlayer( playerid, Draw_Registro[ playerid] [ 0 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Registro[ playerid] [ 1 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Registro[ playerid] [ 2 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Registro[ playerid] [ 3 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Registro[ playerid] [ 4 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Registro[ playerid] [ 5 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Registro[ playerid] [ 6 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Login[ playerid] [ 0 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Login[ playerid] [ 1 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Login[ playerid] [ 2 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Login[ playerid] [ 3 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Login[ playerid] [ 4 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Login[ playerid] [ 5 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Login[ playerid] [ 6 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Fundo[ playerid] [ 0 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Fundo[ playerid] [ 1 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Fundo[ playerid] [ 2 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Fundo[ playerid] [ 3 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Fundo[ playerid] [ 4 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Fundo[ playerid] [ 5 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Fundo[ playerid] [ 6 ] ) ;
TextDrawHideForPlayer( playerid, Draw_Fundo[ playerid] [ 7 ] ) ;
return 1 ;
}
public OnPlayerClickTextDraw( playerid, Text: clickedid)
{
// === Draw registro
if ( clickedid == Draw_Registro[ playerid] [ 2 ] ) ShowPlayerDialog( playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Digite uma senha:" , "Digite uma senha abaixo para registrar-se.\n \n Obs: Ela deve conter no mínimo 4 e no máximo 16 caracteres." , "Registrar" , "Voltar" ) ;
if ( clickedid == Draw_Registro[ playerid] [ 3 ] ) ShowPlayerDialog( playerid, DIALOG_SEXO, DIALOG_STYLE_MSGBOX, "Escolha seu sexo:" , "Escolhe seu sexo clicando nos botões abaixo." , "Masculino" , "Feminino" ) ;
if ( clickedid == Draw_Registro[ playerid] [ 4 ] ) ShowPlayerDialog( playerid, DIALOG_IDADE, DIALOG_STYLE_INPUT, "Digite sua idade" , "Digite a idade do seu personagem abaixo.\n \n Obs: Mínimo 10 e máximo 100 anos." , "Registrar" , "Voltar" ) ;
if ( clickedid == Draw_Fundo[ playerid] [ 7 ] ) Kick( playerid) ; //box canxelar
if ( clickedid == Draw_Registro[ playerid] [ 1 ] ) // Registrar
{
if ( DigitouSenha[ playerid] == 1 && DigitouSexo[ playerid] == 1 && DigitouIdade[ playerid] == 1 )
{
TirarTextDraw( playerid) ;
DigitouSenha[ playerid] = 0 ;
DigitouSexo[ playerid] = 0 ;
DigitouIdade[ playerid] = 0 ;
PlayerInfo[ playerid] [ Level] = LEVEL_INICIAL;
PlayerInfo[ playerid] [ Skin] = SKIN_INICIAL;
PlayerInfo[ playerid] [ Dinheiro] = DINHEIRO_INICIAL;
PlayerInfo
[ playerid
] [ Pos ] [ 0 ] = POSX_INICIAL
; PlayerInfo
[ playerid
] [ Pos ] [ 1 ] = POSY_INICIAL
; PlayerInfo
[ playerid
] [ Pos ] [ 2 ] = POSZ_INICIAL
; SendClientMessage( playerid, - 1 , "Sua conta foi registrada com sucesso!" ) ;
CarregarDados( playerid) ;
} else {
TextDrawShowForPlayer( playerid, Draw_Registro[ playerid] [ 6 ] ) ; // mensagem de erro preencha todos os dados
}
}
// === TextDraw Login
if ( clickedid == Draw_Login[ playerid] [ 2 ] ) ShowPlayerDialog( playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:" , "Você já é um player registrado, digite uma senha abaixo para logar-se" , "Logar" , "Voltar" ) ;
if ( clickedid == Draw_Login[ playerid] [ 1 ] ) // LOGIN
{
if ( DigitouLogin[ playerid] == 1 )
{
new Query[ 70 ] ;
mysql_format
( Conexao
, Query
, sizeof ( Query
) , "SELECT * FROM usuarios WHERE Nome='%s '" , Nome
( playerid
) ) ; mysql_tquery( Conexao, Query, "Mysql_Carregar" , "d" , playerid) ;
DigitouLogin[ playerid] = 0 ;
} else {
TextDrawShowForPlayer( playerid, Draw_Login[ playerid] [ 6 ] ) ; // mensagem de erro, esqueceu de digitar senha
}
}
if ( clickedid == Draw_Login[ playerid] [ 4 ] ) // WhatsApp
{
if ( ClicouWhats[ playerid] == 0 )
{
TextDrawSetString( Draw_Login[ playerid] [ 4 ] , WHATSAPP) ;
ClicouWhats[ playerid] = 1 ;
} else if ( ClicouWhats[ playerid] == 1 ) {
TextDrawSetString( Draw_Login[ playerid] [ 4 ] , "WhatsApp" ) ;
ClicouWhats[ playerid] = 0 ;
}
}
if ( clickedid == Draw_Login[ playerid] [ 3 ] ) // Forum
{
if ( ClicouForum[ playerid] == 0 )
{
TextDrawSetString( Draw_Login[ playerid] [ 3 ] , FORUM) ;
ClicouForum[ playerid] = 1 ;
} else if ( ClicouForum[ playerid] == 1 ) {
TextDrawSetString( Draw_Login[ playerid] [ 3 ] , "Forum" ) ;
ClicouForum[ playerid] = 0 ;
}
}
return 1 ;
}
CMD: trocarsenha( playerid)
{
ShowPlayerDialog( playerid, DIALOG_SENHA, DIALOG_STYLE_PASSWORD, "Digite uma senha:" , "Digite sua nova senha abaixo\n \n Obs: Ela deve conter no mínimo 4 e no máximo 16 caracteres." , "Trocar" , "Voltar" ) ;
return 1 ;
}
CMD: trocarnick( playerid)
{
ShowPlayerDialog( playerid, DIALOG_NICK, DIALOG_STYLE_PASSWORD, "Digite um novo nick:" , "Digite seu novo nick abaixo\n \n Obs: Ele deve conter no máximo 25 caracteres." , "Trocar" , "Voltar" ) ;
return 1 ;
}
I2luY2x1ZGUgPGFfc2FtcD4KI2luY2x1ZGUgPGFfbXlzcWw+CiNpbmNsdWRlIDx6Y21kPgogCi8vID09IENvbmZpZ3VyYcOnw7VlcyBkbyBGUwovLyA9PiBNeXNxbAojZGVmaW5lIEhvc3QgICAgCSJsb2NhbGhvc3QiCiNkZWZpbmUgVXN1YXJpbyAgICAJInJvb3QiCiNkZWZpbmUgRGF0YUJhc2UgICAgInNhbXAiCiNkZWZpbmUgU2VuaGEgICAgCSIiCiAKLy9SZWdpc3RybwojZGVmaW5lIFNLSU5fSU5JQ0lBTCAgICAgCSAgMjYgIC8vTXVkZSBwYXJhIGEgc2tpbiBkZXNlamFkYQojZGVmaW5lIExFVkVMX0lOSUNJQUwgICAgICAgICAgIDEgIC8vIHx8CiNkZWZpbmUgRElOSEVJUk9fSU5JQ0lBTCAgCTUwMDAgIC8vIHx8CiAKI2RlZmluZSBQT1NYX0lOSUNJQUwgCTE3MjEuODQyMiAgLy9Qb3MgWCBkZSBzcGF3biBkZSByZWdpc3RybwojZGVmaW5lIFBPU1lfSU5JQ0lBTCAJLTE4ODAuMTc5MyAvL1BvcyBZIGRlIHNwYXduIGRlIHJlZ2lzdHJvCiNkZWZpbmUgUE9TWl9JTklDSUFMIAkxMy41NjQ5ICAgIC8vUG9zIFogZGUgc3Bhd24gZGUgcmVnaXN0cm8KIAojZGVmaW5lIFdIQVRTQVBQICAgICJlZGl0ZSIgLy8gdHJvcXVlIHBlbG8gd2hhdHMgZGVzZWphZG8KI2RlZmluZSBGT1JVTSAgICAgICAiZWRpdGUiICAgLy8gdHJvcXVlIHBlbG8gc2V1IGVuZGVyZcOnbyBkbyBmb3J1bQogCiNkZWZpbmUgRElBTE9HX1JFR0lTVFJPIAkxMDAKI2RlZmluZSBESUFMT0dfU0VYTyAgICAgCTEwMQojZGVmaW5lIERJQUxPR19JREFERSAgICAJMTAyCiNkZWZpbmUgRElBTE9HX1NFTkhBCSAgCTEwMwojZGVmaW5lIERJQUxPR19OSUNLICAJICAJMTA0CiAKI2RlZmluZSBESUFMT0dfTE9HSU4gCQkyMDAKI2RlZmluZSBESUFMT0dfRk9SVU0gICAgCTIwMQojZGVmaW5lIERJQUxPR19XSEFUUyAgICAJMjAyCiNkZWZpbmUgU0tJTl9VU0FEQSBQbGF5ZXJJbmZvW3BsYXllcmlkXVtTa2luXQogCm5ldyBDb25leGFvOwpuZXcgRGlnaXRvdVNlbmhhW01BWF9QTEFZRVJTXSwgRGlnaXRvdVNleG9bTUFYX1BMQVlFUlNdOwpuZXcgRGlnaXRvdUlkYWRlW01BWF9QTEFZRVJTXSwgRGlnaXRvdUxvZ2luW01BWF9QTEFZRVJTXTsKbmV3IENsaWNvdVdoYXRzW01BWF9QTEFZRVJTXSwgQ2xpY291Rm9ydW1bTUFYX1BMQVlFUlNdOwogCm5ldyBUZXh0OkRyYXdfRnVuZG9bTUFYX1BMQVlFUlNdWzhdOwpuZXcgVGV4dDpEcmF3X1JlZ2lzdHJvW01BWF9QTEFZRVJTXVs3XTsKbmV3IFRleHQ6RHJhd19Mb2dpbltNQVhfUExBWUVSU11bN107CiAKZW51bSBwSW5mbwp7CglJRCwKCXBQYXNzd29yZFsxMjldLAoJU2V4bywKCUlkYWRlLAoJRGluaGVpcm8sCglTa2luLAoJTWF0b3UsCglNb3JyZXUsCglMZXZlbCwKCUFkbWluLAoJRmxvYXQ6UG9zWzNdLAoJYm9vbDpMb2dhZG8KfTsKbmV3IFBsYXllckluZm9bTUFYX1BMQVlFUlNdW3BJbmZvXTsKIAogCnB1YmxpYyBPbkZpbHRlclNjcmlwdEluaXQoKQp7CglwcmludCgiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOwoJcHJpbnQoIiAgIEZTIFJlZ2lzdHJvL0xvZ2luIHBvciBDbGV5c29uIFN0ZWluIik7CglwcmludCgiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogCglDb25leGFvID0gbXlzcWxfY29ubmVjdChIb3N0LCBVc3VhcmlvLCBEYXRhQmFzZSwgU2VuaGEpOwogICAgbXlzcWxfcXVlcnkoQ29uZXhhbywgIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGB1c3Vhcmlvc2AoYElEYGludCBBVVRPX0lOQ1JFTUVOVCBQUklNQVJZIEtFWSwgYE5vbWVgIHZhcmNoYXIoMjQpIE5PVCBOVUxMLCBgU2VuaGFgIHZhcmNoYXIoMTI5KSBOT1QgTlVMTCwgYEFkbWluYCBpbnQoMTEpIE5PVCBOVUxMLCBgU2V4b2AgaW50KDExKSBOT1QgTlVMTCwgYElkYWRlYCBpbnQoMTEpIE5PVCBOVUxMLCBgRGluaGVpcm9gIGludCgxMSkgTk9UIE5VTEwsIGBTa2luYCBpbnQoMTEpIE5PVCBOVUxMLCBgTWF0b3VgIGludCgxMSkgTk9UIE5VTEwsIGBNb3JyZXVgIGludCgxMSkgTk9UIE5VTEwsIGBQb3NYYCBmbG9hdCBOT1QgTlVMTCxgUG9zWWAgZmxvYXQgTk9UIE5VTEwsYFBvc1pgIGZsb2F0IE5PVCBOVUxMKSIsIGZhbHNlKTsKCXJldHVybiAxOwp9CiAKcHVibGljIE9uRmlsdGVyU2NyaXB0RXhpdCgpCnsKICAgIGZvcihuZXcgaSA9IDA7IGkgPCBNQVhfUExBWUVSUzsgaSsrKQogICAgewogICAgICAgIFNhbHZhckRhZG9zKGkpOwoJfQoJbXlzcWxfY2xvc2UoQ29uZXhhbyk7CglyZXR1cm4gMTsKfQogCnB1YmxpYyBPblBsYXllclJlcXVlc3RDbGFzcyhwbGF5ZXJpZCwgY2xhc3NpZCkKewoJU2V0UGxheWVyUG9zKHBsYXllcmlkLCAxOTU4LjM3ODMsIDEzNDMuMTU3MiwgMTUuMzc0Nik7CglTZXRQbGF5ZXJDYW1lcmFQb3MocGxheWVyaWQsIDE5NTguMzc4MywgMTM0My4xNTcyLCAxNS4zNzQ2KTsKCVNldFBsYXllckNhbWVyYUxvb2tBdChwbGF5ZXJpZCwgMTk1OC4zNzgzLCAxMzQzLjE1NzIsIDE1LjM3NDYpOwoJcmV0dXJuIDE7Cn0KIApwdWJsaWMgT25QbGF5ZXJDb25uZWN0KHBsYXllcmlkKQp7CglDcmlhclRleHREcmF3KHBsYXllcmlkKTsKCW5ldyBRdWVyeVs3MF07CiAgICBteXNxbF9mb3JtYXQoQ29uZXhhbywgUXVlcnksIHNpemVvZihRdWVyeSksICJTRUxFQ1QgKiBGUk9NIHVzdWFyaW9zIFdIRVJFIE5vbWU9JyVlJyIsIE5vbWUocGxheWVyaWQpKTsKICAgIG15c3FsX3RxdWVyeShDb25leGFvLCBRdWVyeSwgIk15c3FsX1ZlcmlmaWNhciIsICJkIiwgcGxheWVyaWQpOwoJcmV0dXJuIDE7Cn0KIApmb3J3YXJkIE15c3FsX1ZlcmlmaWNhcihwbGF5ZXJpZCk7CnB1YmxpYyBNeXNxbF9WZXJpZmljYXIocGxheWVyaWQpCnsKICAgIFNlbGVjdFRleHREcmF3KHBsYXllcmlkLCAweEZGMDAwMEZGKTsKCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19GdW5kb1twbGF5ZXJpZF1bMF0pOwoJVGV4dERyYXdTaG93Rm9yUGxheWVyKHBsYXllcmlkLCBEcmF3X0Z1bmRvW3BsYXllcmlkXVsxXSk7CglUZXh0RHJhd1Nob3dGb3JQbGF5ZXIocGxheWVyaWQsIERyYXdfRnVuZG9bcGxheWVyaWRdWzJdKTsKCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19GdW5kb1twbGF5ZXJpZF1bM10pOwoJVGV4dERyYXdTaG93Rm9yUGxheWVyKHBsYXllcmlkLCBEcmF3X0Z1bmRvW3BsYXllcmlkXVs0XSk7CglUZXh0RHJhd1Nob3dGb3JQbGF5ZXIocGxheWVyaWQsIERyYXdfRnVuZG9bcGxheWVyaWRdWzVdKTsKCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19GdW5kb1twbGF5ZXJpZF1bNl0pOwoJVGV4dERyYXdTaG93Rm9yUGxheWVyKHBsYXllcmlkLCBEcmF3X0Z1bmRvW3BsYXllcmlkXVs3XSk7CiAKICAgIGlmKGNhY2hlX2dldF9yb3dfY291bnQoQ29uZXhhbykgPT0gMSkKCXsKCSAgICBuZXcgdG1wWzEyOV07CiAgICAJY2FjaGVfZ2V0X2ZpZWxkX2NvbnRlbnQoMCwgIlNlbmhhIiwgdG1wKTsgZm9ybWF0KFBsYXllckluZm9bcGxheWVyaWRdW3BQYXNzd29yZF0sIDEyOSwgIiVzIiwgdG1wKTsKICAgIAlQbGF5ZXJJbmZvW3BsYXllcmlkXVtJRF0gPSBjYWNoZV9nZXRfZmllbGRfY29udGVudF9pbnQoMCwgIklEIik7CiAgICAJUGxheWVySW5mb1twbGF5ZXJpZF1bU2tpbl0gPSBjYWNoZV9nZXRfZmllbGRfY29udGVudF9pbnQoMCwgIlNraW4iKTsKIAoJCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19Mb2dpbltwbGF5ZXJpZF1bMF0pOwoJCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19Mb2dpbltwbGF5ZXJpZF1bMV0pOwoJCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19Mb2dpbltwbGF5ZXJpZF1bMl0pOwoJCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19Mb2dpbltwbGF5ZXJpZF1bM10pOwoJCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19Mb2dpbltwbGF5ZXJpZF1bNF0pOwoJCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19Mb2dpbltwbGF5ZXJpZF1bNV0pOwogCgkJfSBlbHNlIHsKIAoJCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMF0pOwoJCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMV0pOwoJCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMl0pOwoJCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bM10pOwoJCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNF0pOwoJCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNV0pOwogICAgfQogICAgcmV0dXJuIDE7Cn0KIAogCnB1YmxpYyBPblBsYXllckRpc2Nvbm5lY3QocGxheWVyaWQsIHJlYXNvbikKewoJU2FsdmFyRGFkb3MocGxheWVyaWQpOwoJcmV0dXJuIDE7Cn0KIApwdWJsaWMgT25QbGF5ZXJEZWF0aChwbGF5ZXJpZCwga2lsbGVyaWQsIHJlYXNvbikKewogICAgUGxheWVySW5mb1twbGF5ZXJpZF1bTW9ycmV1XSsrOwoJUGxheWVySW5mb1traWxsZXJpZF1bTWF0b3VdKys7CglyZXR1cm4gMTsKfQogCnB1YmxpYyBPbkRpYWxvZ1Jlc3BvbnNlKHBsYXllcmlkLCBkaWFsb2dpZCwgcmVzcG9uc2UsIGxpc3RpdGVtLCBpbnB1dHRleHRbXSkKewogCW5ldyBNc2dfZm9ybWF0WzEyOF07Cglzd2l0Y2goZGlhbG9naWQpCgl7CgkJY2FzZSBESUFMT0dfUkVHSVNUUk86CgkJewoJCQlpZighcmVzcG9uc2UpIHJldHVybiBTZW5kQ2xpZW50TWVzc2FnZShwbGF5ZXJpZCwgLTEsICJWb2PDqiBuw6NvIHF1aXMgZGlnaXRhciB1bWEgc2VuaGEiKTsKCQkJaWYoc3RybGVuKGlucHV0dGV4dCkgPCA0IHx8IHN0cmxlbihpbnB1dHRleHQpID4gMTYpCgkJCXsKCQkJCVNlbmRDbGllbnRNZXNzYWdlKHBsYXllcmlkLCAtMSwgIlN1YSBzZW5oYSBkZXZlIGNvbnRlciBlbnRyZSA0IGUgMTYgY2FyYWN0ZXJlcyEhISIpOwogICAgICAgICAgICAgICAgU2hvd1BsYXllckRpYWxvZyhwbGF5ZXJpZCwgRElBTE9HX1JFR0lTVFJPLCBESUFMT0dfU1RZTEVfUEFTU1dPUkQsICJEaWdpdGUgdW1hIHNlbmhhOiIsICJEaWdpdGUgdW1hIHNlbmhhIGFiYWl4byBwYXJhIHJlZ2lzdHJhci1zZS5cblxuT2JzOiBFbGEgZGV2ZSBjb250ZXIgbm8gbcOtbmltbyA0IGUgbm8gbcOheGltbyAxNiBjYXJhY3RlcmVzLiIsICJSZWdpc3RyYXIiLCAiVm9sdGFyIik7CgkJCQlyZXR1cm4gMTsKCQkJfQoJCQlpZihyZXNwb25zZSkKCQkJewogICAgICAgICAgICAJRGlnaXRvdVNlbmhhW3BsYXllcmlkXSA9IDE7CiAgICAgICAgICAgIAlUZXh0RHJhd1NldFN0cmluZyhEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsyXSwgaW5wdXR0ZXh0KTsKICAgICAgICAgICAgCW5ldyBRdWVyeVsyMDBdOwogICAgICAgICAgICAJbXlzcWxfZm9ybWF0KENvbmV4YW8sIFF1ZXJ5LCBzaXplb2YoUXVlcnkpLCAiSU5TRVJUIElOVE8gYHVzdWFyaW9zYCAoYE5vbWVgLCBgU2VuaGFgKSBWQUxVRVMgKCclZScsJyVlJykiLCBOb21lKHBsYXllcmlkKSwgaW5wdXR0ZXh0KTsKICAgIAkJCW15c3FsX3RxdWVyeShDb25leGFvLCBRdWVyeSwgIkRhZG9zUmVnaXN0cmFkb3MiLCAiaSIsIHBsYXllcmlkKTsKCQkJCXJldHVybiAxOwoJCQl9CgkJCXJldHVybiAxOwoJCX0KIAoJCWNhc2UgRElBTE9HX1NFWE86CiAgICAgICAgewogICAgICAgIAlpZighcmVzcG9uc2UpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgCURpZ2l0b3VTZXhvW3BsYXllcmlkXSA9IDE7CiAgICAgICAgICAgICAgICBTZW5kQ2xpZW50TWVzc2FnZShwbGF5ZXJpZCwgLTEsICJTZXUgc2V4byDDqSBmZW1pbmluby4iKTsKICAgICAgICAgICAgICAgIFRleHREcmF3U2V0U3RyaW5nKERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzNdLCAiRmVtaW5pbm8iKTsKICAgICAgICAgICAgICAgIFBsYXllckluZm9bcGxheWVyaWRdW1NleG9dID0gMTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBEaWdpdG91U2V4b1twbGF5ZXJpZF0gPSAxOwogICAgICAgICAgICAgICAgU2VuZENsaWVudE1lc3NhZ2UocGxheWVyaWQsIC0xLCAiU2V1IHNleG8gw6kgbWFzY3VsaW5vLiIpOwogICAgICAgICAgICAgICAgVGV4dERyYXdTZXRTdHJpbmcoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bM10sICJNYXNjdWxpbm8iKTsKICAgICAgICAgICAgICAgIFBsYXllckluZm9bcGxheWVyaWRdW1NleG9dID0gMjsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gMTsKCQl9CiAKICAgICAgICBjYXNlIERJQUxPR19JREFERToKICAgICAgICB7CgkJCWlmKCFyZXNwb25zZSkgcmV0dXJuIFNlbmRDbGllbnRNZXNzYWdlKHBsYXllcmlkLCAtMSwgIlZvY8OqIG7Do28gcXVpcyBkaWdpdGFyIGEgaWRhZGUgZG8gc2V1IHBlcnNvbmFnZW0uIik7CiAgICAgICAgICAgIGlmKCFzdHJsZW4oaW5wdXR0ZXh0KSkKICAgICAgICAgICAgewoJCQkJU2VuZENsaWVudE1lc3NhZ2UocGxheWVyaWQsIC0xLCAiVm9jw6ogbsOjbyBkaWdpdG91IG5hZGEsIGRpZ2l0ZSB1bWEgaWRhZGUhIik7CiAgICAgICAgICAgICAgICBTaG93UGxheWVyRGlhbG9nKHBsYXllcmlkLCBESUFMT0dfSURBREUsIERJQUxPR19TVFlMRV9JTlBVVCwgIkRpZ2l0ZSBzdWEgaWRhZGUiLCAiRGlnaXRlIGEgaWRhZGUgZG8gc2V1IHBlcnNvbmFnZW0gYWJhaXhvLlxuXG5PYnM6IE3DrW5pbW8gMTIgZSBtw6F4aW1vIDgwIGFub3MuIiwgIlJlZ2lzdHJhciIsICJWb2x0YXIiKTsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKHN0cnZhbChpbnB1dHRleHQpIDwgMTAgfHwgc3RydmFsKGlucHV0dGV4dCkgPiAxMDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgCVNlbmRDbGllbnRNZXNzYWdlKHBsYXllcmlkLCAtMSwgIlN1YSBpZGFkZSBkZXZlIHNlciBlbnRyZSAxMCBlIDEwMCBhbm9zLiIpOwogICAgICAgICAgICAgICAgU2hvd1BsYXllckRpYWxvZyhwbGF5ZXJpZCwgRElBTE9HX0lEQURFLCBESUFMT0dfU1RZTEVfSU5QVVQsICJEaWdpdGUgc3VhIGlkYWRlIiwgIkRpZ2l0ZSBhIGlkYWRlIGRvIHNldSBwZXJzb25hZ2VtIGFiYWl4by5cblxuT2JzOiBNw61uaW1vIDEyIGUgbcOheGltbyA4MCBhbm9zLiIsICJSZWdpc3RyYXIiLCAiVm9sdGFyIik7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKCQkJfQogICAgICAgICAgICBEaWdpdG91SWRhZGVbcGxheWVyaWRdID0gMTsKICAgICAgICAgICAgVGV4dERyYXdTZXRTdHJpbmcoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNF0sIGlucHV0dGV4dCk7CiAgICAgICAgICAgIFBsYXllckluZm9bcGxheWVyaWRdW0lkYWRlXSA9IHN0cnZhbChpbnB1dHRleHQpOwogICAgICAgICAgICByZXR1cm4gMTsKCQl9CiAKCQljYXNlIERJQUxPR19MT0dJTjoKCQl7CgkJICAgIGlmKCFyZXNwb25zZSkgcmV0dXJuIFNob3dQbGF5ZXJEaWFsb2cocGxheWVyaWQsIERJQUxPR19MT0dJTiwgRElBTE9HX1NUWUxFX1BBU1NXT1JELCAiRGlnaXRlIHN1YSBzZW5oYToiLCAiVm9jw6ogasOhIMOpIHVtIHBsYXllciByZWdpc3RyYWRvLCBkaWdpdGUgdW1hIHNlbmhhIGFiYWl4byBwYXJhIGxvZ2FyLXNlIiwgIkxvZ2FyIiwgIlZvbHRhciIpOwoJCSAgICBpZighc3RyY21wKFBsYXllckluZm9bcGxheWVyaWRdW3BQYXNzd29yZF0sIGlucHV0dGV4dCwgdHJ1ZSwgMTI5KSkKCQkgICAgewoJCSAgICAgICAgRGlnaXRvdUxvZ2luW3BsYXllcmlkXSA9IDE7CgkJICAgICAgICBUZXh0RHJhd1NldFN0cmluZyhEcmF3X0xvZ2luW3BsYXllcmlkXVsyXSwgaW5wdXR0ZXh0KTsKCQkgICAgICAgIH0gZWxzZSB7CgkJICAgICAgICBTZW5kQ2xpZW50TWVzc2FnZShwbGF5ZXJpZCwgLTEsICJbRVJST10gU2VuaGEgaW5jb3JyZXRhICEiKTsKICAgICAgICAgICAgICAgIFNob3dQbGF5ZXJEaWFsb2cocGxheWVyaWQsIERJQUxPR19MT0dJTiwgRElBTE9HX1NUWUxFX1BBU1NXT1JELCAiRGlnaXRlIHN1YSBzZW5oYToiLCAiVm9jw6ogasOhIMOpIHVtIHBsYXllciByZWdpc3RyYWRvLCBkaWdpdGUgdW1hIHNlbmhhIGFiYWl4byBwYXJhIGxvZ2FyLXNlIiwgIkxvZ2FyIiwgIlZvbHRhciIpOwoJCQl9CgkJCXJldHVybiAxOwoJCX0KCQljYXNlIERJQUxPR19TRU5IQToKCQl7CgkJCWlmKCFyZXNwb25zZSkgcmV0dXJuIFNlbmRDbGllbnRNZXNzYWdlKHBsYXllcmlkLCAtMSwgIlZvY8OqIG7Do28gcXVpcyBkaWdpdGFyIHVtYSBzZW5oYSIpOwoJCQlpZihzdHJsZW4oaW5wdXR0ZXh0KSA8IDQgfHwgc3RybGVuKGlucHV0dGV4dCkgPiAxNikKCQkJewoJCQkJU2VuZENsaWVudE1lc3NhZ2UocGxheWVyaWQsIC0xLCAiU3VhIHNlbmhhIGRldmUgY29udGVyIGVudHJlIDQgZSAxNiBjYXJhY3RlcmVzISEhIik7CiAgICAgICAgICAgICAgICBTaG93UGxheWVyRGlhbG9nKHBsYXllcmlkLCBESUFMT0dfU0VOSEEsIERJQUxPR19TVFlMRV9QQVNTV09SRCwgIkRpZ2l0ZSB1bWEgc2VuaGE6IiwgIkRpZ2l0ZSBzdWEgbm92YSBzZW5oYSBhYmFpeG9cblxuT2JzOiBFbGEgZGV2ZSBjb250ZXIgbm8gbcOtbmltbyA0IGUgbm8gbcOheGltbyAxNiBjYXJhY3RlcmVzLiIsICJUcm9jYXIiLCAiVm9sdGFyIik7CgkJCQlyZXR1cm4gMTsKCQkJfQoJCQlpZihyZXNwb25zZSkKCQkJewogICAgICAgICAgICAJbmV3IFF1ZXJ5WzEyMF07CiAgICAJCQlteXNxbF9mb3JtYXQoQ29uZXhhbywgUXVlcnksIHNpemVvZihRdWVyeSksICJVUERBVEUgYHVzdWFyaW9zYCBTRVQgYFNlbmhhYD0nJWUnIFdIRVJFIGBJRGA9JyVkJyIsaW5wdXR0ZXh0LCBQbGF5ZXJJbmZvW3BsYXllcmlkXVtJRF0pOwogICAgCQkJbXlzcWxfdHF1ZXJ5KENvbmV4YW8sIFF1ZXJ5LCIiLCIiKTsKICAgIAkJCWZvcm1hdChNc2dfZm9ybWF0LCBzaXplb2YoTXNnX2Zvcm1hdCksICJTdWEgc2VuaGEgZm9pIGFsdGVyYWRhIGNvbSBzdWNlc3NvLCBub3ZhIHNlbmhhOiAlcyEhISIsIGlucHV0dGV4dCk7CiAgICAgICAgICAgICAgICBTZW5kQ2xpZW50TWVzc2FnZShwbGF5ZXJpZCwgLTEsIE1zZ19mb3JtYXQpOwoJCQkJcmV0dXJuIDE7CgkJCX0KCQkJcmV0dXJuIDE7CgkJfQoJCWNhc2UgRElBTE9HX05JQ0s6CgkJewoJCQlpZighcmVzcG9uc2UpIHJldHVybiBTZW5kQ2xpZW50TWVzc2FnZShwbGF5ZXJpZCwgLTEsICJWb2PDqiBuw6NvIHF1aXMgZGlnaXRhciB1bWEgc2VuaGEiKTsKCQkJaWYoc3RybGVuKGlucHV0dGV4dCkgPiAyNSkKCQkJewoJCQkJU2VuZENsaWVudE1lc3NhZ2UocGxheWVyaWQsIC0xLCAiU2V1IG5vdm8gbmljayBuYW1lIGRldmUgY29udGVyIGF0ZSAyNSBjYXJhY3RlcmVzISEhIik7CiAgICAgICAgICAgICAgICBTaG93UGxheWVyRGlhbG9nKHBsYXllcmlkLCBESUFMT0dfTklDSywgRElBTE9HX1NUWUxFX1BBU1NXT1JELCAiRGlnaXRlIHVtIG5vdm8gbmljazoiLCAiRGlnaXRlIHNldSBub3ZvIG5pY2sgYWJhaXhvXG5cbk9iczogRWxlIGRldmUgY29udGVyIG5vIG3DoXhpbW8gMjUgY2FyYWN0ZXJlcy4iLCAiVHJvY2FyIiwgIlZvbHRhciIpOwoJCQkJcmV0dXJuIDE7CgkJCX0KCQkJaWYocmVzcG9uc2UpCgkJCXsKCQkJICAgIFNldFBsYXllck5hbWUocGxheWVyaWQsIGlucHV0dGV4dCk7CiAgICAgICAgICAgIAluZXcgUXVlcnlbMTIwXTsKICAgIAkJCW15c3FsX2Zvcm1hdChDb25leGFvLCBRdWVyeSwgc2l6ZW9mKFF1ZXJ5KSwgIlVQREFURSBgdXN1YXJpb3NgIFNFVCBgTm9tZWA9JyVlJyBXSEVSRSBgSURgPSclZCciLCBpbnB1dHRleHQsIFBsYXllckluZm9bcGxheWVyaWRdW0lEXSk7CiAgICAJCQlteXNxbF90cXVlcnkoQ29uZXhhbywgUXVlcnksIiIsIiIpOwogICAgCQkJZm9ybWF0KE1zZ19mb3JtYXQsIHNpemVvZihNc2dfZm9ybWF0KSwgIlNldSBuaWNrIGZvaSBhbHRlcmFkbyBjb20gc3VjZXNzbywgbm92byBuaWNrOiAlcyEhISIsIGlucHV0dGV4dCk7CiAgICAgICAgICAgICAgICBTZW5kQ2xpZW50TWVzc2FnZShwbGF5ZXJpZCwgLTEsIE1zZ19mb3JtYXQpOwoJCQkJcmV0dXJuIDE7CgkJCX0KCQkJcmV0dXJuIDE7CgkJfQoJfQoJcmV0dXJuIDE7Cn0KIApmb3J3YXJkIE15c3FsX0NhcnJlZ2FyKHBsYXllcmlkKTsKcHVibGljIE15c3FsX0NhcnJlZ2FyKHBsYXllcmlkKQp7CiAgICBQbGF5ZXJJbmZvW3BsYXllcmlkXVtBZG1pbl0gPSBjYWNoZV9nZXRfZmllbGRfY29udGVudF9pbnQoMCwgIkFkbWluIik7CiAgICBQbGF5ZXJJbmZvW3BsYXllcmlkXVtTZXhvXSA9IGNhY2hlX2dldF9maWVsZF9jb250ZW50X2ludCgwLCAiU2V4byIpOwogICAgUGxheWVySW5mb1twbGF5ZXJpZF1bSWRhZGVdID0gY2FjaGVfZ2V0X2ZpZWxkX2NvbnRlbnRfaW50KDAsICJJZGFkZSIpOwogICAgUGxheWVySW5mb1twbGF5ZXJpZF1bRGluaGVpcm9dID0gY2FjaGVfZ2V0X2ZpZWxkX2NvbnRlbnRfaW50KDAsICJEaW5oZWlybyIpOwogICAgUGxheWVySW5mb1twbGF5ZXJpZF1bU2tpbl0gPSBjYWNoZV9nZXRfZmllbGRfY29udGVudF9pbnQoMCwgIlNraW4iKTsKICAgIFBsYXllckluZm9bcGxheWVyaWRdW01hdG91XSA9IGNhY2hlX2dldF9maWVsZF9jb250ZW50X2ludCgwLCAiTWF0b3UiKTsKICAgIFBsYXllckluZm9bcGxheWVyaWRdW01vcnJldV0gPSBjYWNoZV9nZXRfZmllbGRfY29udGVudF9pbnQoMCwgIk1vcnJldSIpOwogICAgUGxheWVySW5mb1twbGF5ZXJpZF1bUG9zXVswXSA9IGNhY2hlX2dldF9maWVsZF9jb250ZW50X2ludCgwLCAiUG9zWCIpOwogICAgUGxheWVySW5mb1twbGF5ZXJpZF1bUG9zXVsxXSA9IGNhY2hlX2dldF9maWVsZF9jb250ZW50X2ludCgwLCAiUG9zWSIpOwogICAgUGxheWVySW5mb1twbGF5ZXJpZF1bUG9zXVsyXSA9IGNhY2hlX2dldF9maWVsZF9jb250ZW50X2ludCgwLCAiUG9zWiIpOwogICAgQ2FycmVnYXJEYWRvcyhwbGF5ZXJpZCk7CglyZXR1cm4gMTsKfQogCnN0b2NrIFNhbHZhckRhZG9zKHBsYXllcmlkKQp7CglpZihQbGF5ZXJJbmZvW3BsYXllcmlkXVtMb2dhZG9dID09IGZhbHNlKSByZXR1cm4gMTsKICAgIG5ldyBGbG9hdDpYLCBGbG9hdDpZLCBGbG9hdDpaLCBRdWVyeVszMjBdOwoJR2V0UGxheWVyUG9zKHBsYXllcmlkLCBGbG9hdDpYLCBGbG9hdDpZLCBGbG9hdDpaKTsKICAgIG15c3FsX2Zvcm1hdChDb25leGFvLCBRdWVyeSwgc2l6ZW9mKFF1ZXJ5KSwgIlVQREFURSBgdXN1YXJpb3NgIFNFVCBgQWRtaW5gPSclZCcsIGBTZXhvYD0nJWQnLCBgSWRhZGVgPSclZCcsIGBEaW5oZWlyb2A9JyVkJywgYFNraW5gPSclZCcsIGBNYXRvdWA9JyVkJywgYE1vcnJldWA9JyVkJywgYFBvc1hgPSUuMWYsIGBQb3NZYD0lLjFmLCBgUG9zWmA9JS4xZiBXSEVSRSBgSURgPSclZCciLAoJUGxheWVySW5mb1twbGF5ZXJpZF1bQWRtaW5dLAoJUGxheWVySW5mb1twbGF5ZXJpZF1bU2V4b10sCglQbGF5ZXJJbmZvW3BsYXllcmlkXVtJZGFkZV0sCglHZXRQbGF5ZXJNb25leShwbGF5ZXJpZCksCglQbGF5ZXJJbmZvW3BsYXllcmlkXVtTa2luXSwKCVBsYXllckluZm9bcGxheWVyaWRdW01hdG91XSwKCVBsYXllckluZm9bcGxheWVyaWRdW01vcnJldV0sCglGbG9hdDpYLAoJRmxvYXQ6WSwKCUZsb2F0OlosCglQbGF5ZXJJbmZvW3BsYXllcmlkXVtJRF0pOwogICAgbXlzcWxfdHF1ZXJ5KENvbmV4YW8sIFF1ZXJ5LCJEYWRvc1NhbHZvcyIsImQiLCBwbGF5ZXJpZCk7CglyZXR1cm4gMTsKfQogCnN0b2NrIENhcnJlZ2FyRGFkb3MocGxheWVyaWQpCnsKICAgIFRpcmFyVGV4dERyYXcocGxheWVyaWQpOwogICAgQ2FuY2VsU2VsZWN0VGV4dERyYXcocGxheWVyaWQpOwoJU2V0UGxheWVyU2NvcmUocGxheWVyaWQsIFBsYXllckluZm9bcGxheWVyaWRdW0xldmVsXSk7CglHaXZlUGxheWVyTW9uZXkocGxheWVyaWQsIFBsYXllckluZm9bcGxheWVyaWRdW0RpbmhlaXJvXSk7CglTZXRTcGF3bkluZm8ocGxheWVyaWQsIDAsIFBsYXllckluZm9bcGxheWVyaWRdW1NraW5dLCBQbGF5ZXJJbmZvW3BsYXllcmlkXVtQb3NdWzBdLCBQbGF5ZXJJbmZvW3BsYXllcmlkXVtQb3NdWzFdLCBQbGF5ZXJJbmZvW3BsYXllcmlkXVtQb3NdWzJdLCAyNjkuMTUsIDAsIDAsIDAsIDAsIDAsIDApOwogICAgU3Bhd25QbGF5ZXIocGxheWVyaWQpOwogICAgU2VuZENsaWVudE1lc3NhZ2UocGxheWVyaWQsIC0xLCAiU3VhIGNvbnRhIGZvaSBjYXJyZWdhZGEgY29tIHN1Y2Vzc28hIik7CglQbGF5ZXJJbmZvW3BsYXllcmlkXVtMb2dhZG9dID0gdHJ1ZTsKCXJldHVybiAxOwp9CiAKZm9yd2FyZCBEYWRvc1JlZ2lzdHJhZG9zKHBsYXllcmlkKTsKcHVibGljIERhZG9zUmVnaXN0cmFkb3MocGxheWVyaWQpCnsKICAgIFBsYXllckluZm9bcGxheWVyaWRdW0lEXSA9IGNhY2hlX2luc2VydF9pZCgpOwogICAgcHJpbnRmKCItPiBOb3ZhIGNvbnRhIHJlZ2lzdHJhZGEgSUQ6ICVkIiwgUGxheWVySW5mb1twbGF5ZXJpZF1bSURdKTsKICAgIHJldHVybiAxOwp9CiAKZm9yd2FyZCBEYWRvc1NhbHZvcyhwbGF5ZXJpZCk7CnB1YmxpYyBEYWRvc1NhbHZvcyhwbGF5ZXJpZCkKewoJcHJpbnRmKCItPiBDb250YSBzYWx2YSBJRDogJWQiLCBQbGF5ZXJJbmZvW3BsYXllcmlkXVtJRF0pOwoJcmV0dXJuIDE7Cn0KIApzdG9jayBOb21lKHBsYXllcmlkKQp7CgluZXcgbmFtZVtNQVhfUExBWUVSX05BTUVdOwoJcmV0dXJuKEdldFBsYXllck5hbWUocGxheWVyaWQsIG5hbWUsIHNpemVvZihuYW1lKSksIG5hbWUpOwp9CiAKc3RvY2sgQ3JpYXJUZXh0RHJhdyhwbGF5ZXJpZCkKewoJLy8gPT0gVGV4dCBkcmF3cyBib3ggZnVuZG8gb3Ugc2VqYSBuYW8gaXJhbyBhbHRlcmFyIHNlIGZvciBsb2dpbiBvdSByZWdpc3RybwoJRHJhd19GdW5kb1twbGF5ZXJpZF1bMF0gPSBUZXh0RHJhd0NyZWF0ZSgxMzAuMDAwMDAwLCA4MC4wMDAwMDAsICIjIik7CglUZXh0RHJhd0JhY2tncm91bmRDb2xvcihEcmF3X0Z1bmRvW3BsYXllcmlkXVswXSwgMjU1KTsKCVRleHREcmF3Rm9udChEcmF3X0Z1bmRvW3BsYXllcmlkXVswXSwgMCk7CglUZXh0RHJhd0xldHRlclNpemUoRHJhd19GdW5kb1twbGF5ZXJpZF1bMF0sIDAuODAwMDAwLCAzMC43OTk5OTkpOwoJVGV4dERyYXdDb2xvcihEcmF3X0Z1bmRvW3BsYXllcmlkXVswXSwgLTEpOwoJVGV4dERyYXdTZXRPdXRsaW5lKERyYXdfRnVuZG9bcGxheWVyaWRdWzBdLCAwKTsKCVRleHREcmF3U2V0UHJvcG9ydGlvbmFsKERyYXdfRnVuZG9bcGxheWVyaWRdWzBdLCAxKTsKCVRleHREcmF3U2V0U2hhZG93KERyYXdfRnVuZG9bcGxheWVyaWRdWzBdLCAxKTsKCVRleHREcmF3VXNlQm94KERyYXdfRnVuZG9bcGxheWVyaWRdWzBdLCAxKTsKCVRleHREcmF3Qm94Q29sb3IoRHJhd19GdW5kb1twbGF5ZXJpZF1bMF0sIC0xMjApOwoJVGV4dERyYXdUZXh0U2l6ZShEcmF3X0Z1bmRvW3BsYXllcmlkXVswXSwgNTA4LjAwMDAwMCwgODEuMDAwMDAwKTsKIAoJRHJhd19GdW5kb1twbGF5ZXJpZF1bMV0gPSBUZXh0RHJhd0NyZWF0ZSgxMzAuMDAwMDAwLCA4MC4wMDAwMDAsICIjIik7CglUZXh0RHJhd0JhY2tncm91bmRDb2xvcihEcmF3X0Z1bmRvW3BsYXllcmlkXVsxXSwgMjU1KTsKCVRleHREcmF3Rm9udChEcmF3X0Z1bmRvW3BsYXllcmlkXVsxXSwgMCk7CglUZXh0RHJhd0xldHRlclNpemUoRHJhd19GdW5kb1twbGF5ZXJpZF1bMV0sIDAuODAwMDAwLCAyLjI5OTk5NSk7CglUZXh0RHJhd0NvbG9yKERyYXdfRnVuZG9bcGxheWVyaWRdWzFdLCAtMSk7CglUZXh0RHJhd1NldE91dGxpbmUoRHJhd19GdW5kb1twbGF5ZXJpZF1bMV0sIDApOwoJVGV4dERyYXdTZXRQcm9wb3J0aW9uYWwoRHJhd19GdW5kb1twbGF5ZXJpZF1bMV0sIDEpOwoJVGV4dERyYXdTZXRTaGFkb3coRHJhd19GdW5kb1twbGF5ZXJpZF1bMV0sIDEpOwoJVGV4dERyYXdVc2VCb3goRHJhd19GdW5kb1twbGF5ZXJpZF1bMV0sIDEpOwoJVGV4dERyYXdCb3hDb2xvcihEcmF3X0Z1bmRvW3BsYXllcmlkXVsxXSwgMTAyKTsKCVRleHREcmF3VGV4dFNpemUoRHJhd19GdW5kb1twbGF5ZXJpZF1bMV0sIDUwOC4wMDAwMDAsIDgxLjAwMDAwMCk7CiAKCURyYXdfRnVuZG9bcGxheWVyaWRdWzJdID0gVGV4dERyYXdDcmVhdGUoMTMwLjAwMDAwMCwgMzM3LjAwMDAwMCwgIiMiKTsKCVRleHREcmF3QmFja2dyb3VuZENvbG9yKERyYXdfRnVuZG9bcGxheWVyaWRdWzJdLCAyNTUpOwoJVGV4dERyYXdGb250KERyYXdfRnVuZG9bcGxheWVyaWRdWzJdLCAwKTsKCVRleHREcmF3TGV0dGVyU2l6ZShEcmF3X0Z1bmRvW3BsYXllcmlkXVsyXSwgMC44MDAwMDAsIDIuMjk5OTk1KTsKCVRleHREcmF3Q29sb3IoRHJhd19GdW5kb1twbGF5ZXJpZF1bMl0sIC0xKTsKCVRleHREcmF3U2V0T3V0bGluZShEcmF3X0Z1bmRvW3BsYXllcmlkXVsyXSwgMCk7CglUZXh0RHJhd1NldFByb3BvcnRpb25hbChEcmF3X0Z1bmRvW3BsYXllcmlkXVsyXSwgMSk7CglUZXh0RHJhd1NldFNoYWRvdyhEcmF3X0Z1bmRvW3BsYXllcmlkXVsyXSwgMSk7CglUZXh0RHJhd1VzZUJveChEcmF3X0Z1bmRvW3BsYXllcmlkXVsyXSwgMSk7CglUZXh0RHJhd0JveENvbG9yKERyYXdfRnVuZG9bcGxheWVyaWRdWzJdLCAxMDIpOwoJVGV4dERyYXdUZXh0U2l6ZShEcmF3X0Z1bmRvW3BsYXllcmlkXVsyXSwgNTA4LjAwMDAwMCwgODEuMDAwMDAwKTsKIAoJRHJhd19GdW5kb1twbGF5ZXJpZF1bM10gPSBUZXh0RHJhd0NyZWF0ZSgxMjMuMDAwMDAwLCA5Ni4wMDAwMDAsICItIik7CglUZXh0RHJhd0JhY2tncm91bmRDb2xvcihEcmF3X0Z1bmRvW3BsYXllcmlkXVszXSwgMjU1KTsKCVRleHREcmF3Rm9udChEcmF3X0Z1bmRvW3BsYXllcmlkXVszXSwgMSk7CglUZXh0RHJhd0xldHRlclNpemUoRHJhd19GdW5kb1twbGF5ZXJpZF1bM10sIDI3LjU1MDA2OSwgMC44OTk5OTkpOwoJVGV4dERyYXdDb2xvcihEcmF3X0Z1bmRvW3BsYXllcmlkXVszXSwgNjU1MzUpOwoJVGV4dERyYXdTZXRPdXRsaW5lKERyYXdfRnVuZG9bcGxheWVyaWRdWzNdLCAxKTsKCVRleHREcmF3U2V0UHJvcG9ydGlvbmFsKERyYXdfRnVuZG9bcGxheWVyaWRdWzNdLCAxKTsKIAoJRHJhd19GdW5kb1twbGF5ZXJpZF1bNF0gPSBUZXh0RHJhd0NyZWF0ZSgxMjMuMDAwMDAwLCAzMzEuMDAwMDAwLCAiLSIpOwoJVGV4dERyYXdCYWNrZ3JvdW5kQ29sb3IoRHJhd19GdW5kb1twbGF5ZXJpZF1bNF0sIDI1NSk7CglUZXh0RHJhd0ZvbnQoRHJhd19GdW5kb1twbGF5ZXJpZF1bNF0sIDEpOwoJVGV4dERyYXdMZXR0ZXJTaXplKERyYXdfRnVuZG9bcGxheWVyaWRdWzRdLCAyNy41NTAwNjksIDAuODk5OTk5KTsKCVRleHREcmF3Q29sb3IoRHJhd19GdW5kb1twbGF5ZXJpZF1bNF0sIDY1NTM1KTsKCVRleHREcmF3U2V0T3V0bGluZShEcmF3X0Z1bmRvW3BsYXllcmlkXVs0XSwgMSk7CglUZXh0RHJhd1NldFByb3BvcnRpb25hbChEcmF3X0Z1bmRvW3BsYXllcmlkXVs0XSwgMSk7CiAKCURyYXdfRnVuZG9bcGxheWVyaWRdWzVdID0gVGV4dERyYXdDcmVhdGUoMjU1LjAwMDAwMCwgNzcuMDAwMDAwLCAifmJ+QmVtIFZpbmRvIik7CglUZXh0RHJhd0JhY2tncm91bmRDb2xvcihEcmF3X0Z1bmRvW3BsYXllcmlkXVs1XSwgMjU1KTsKCVRleHREcmF3Rm9udChEcmF3X0Z1bmRvW3BsYXllcmlkXVs1XSwgMCk7CglUZXh0RHJhd0xldHRlclNpemUoRHJhd19GdW5kb1twbGF5ZXJpZF1bNV0sIDAuOTU5OTk5LCAyLjI5OTk5OCk7CglUZXh0RHJhd0NvbG9yKERyYXdfRnVuZG9bcGxheWVyaWRdWzVdLCAtMSk7CglUZXh0RHJhd1NldE91dGxpbmUoRHJhd19GdW5kb1twbGF5ZXJpZF1bNV0sIDApOwoJVGV4dERyYXdTZXRQcm9wb3J0aW9uYWwoRHJhd19GdW5kb1twbGF5ZXJpZF1bNV0sIDEpOwoJVGV4dERyYXdTZXRTaGFkb3coRHJhd19GdW5kb1twbGF5ZXJpZF1bNV0sIDEpOwogCglEcmF3X0Z1bmRvW3BsYXllcmlkXVs2XSA9IFRleHREcmF3Q3JlYXRlKDI1Ni4wMDAwMDAsIDMzNS4wMDAwMDAsICJ+Yn5Cb20gSm9nbyAhIik7CglUZXh0RHJhd0JhY2tncm91bmRDb2xvcihEcmF3X0Z1bmRvW3BsYXllcmlkXVs2XSwgMjU1KTsKCVRleHREcmF3Rm9udChEcmF3X0Z1bmRvW3BsYXllcmlkXVs2XSwgMCk7CglUZXh0RHJhd0xldHRlclNpemUoRHJhd19GdW5kb1twbGF5ZXJpZF1bNl0sIDAuOTU5OTk5LCAyLjI5OTk5OCk7CglUZXh0RHJhd0NvbG9yKERyYXdfRnVuZG9bcGxheWVyaWRdWzZdLCAtMSk7CglUZXh0RHJhd1NldE91dGxpbmUoRHJhd19GdW5kb1twbGF5ZXJpZF1bNl0sIDApOwoJVGV4dERyYXdTZXRQcm9wb3J0aW9uYWwoRHJhd19GdW5kb1twbGF5ZXJpZF1bNl0sIDEpOwoJVGV4dERyYXdTZXRTaGFkb3coRHJhd19GdW5kb1twbGF5ZXJpZF1bNl0sIDEpOwogCglEcmF3X0Z1bmRvW3BsYXllcmlkXVs3XSA9IFRleHREcmF3Q3JlYXRlKDQ1MC4wMDAwMDAsIDMxMC4wMDAwMDAsICIgQ2FuY2VsYXIiKTsKCVRleHREcmF3QmFja2dyb3VuZENvbG9yKERyYXdfRnVuZG9bcGxheWVyaWRdWzddLCAyNTUpOwoJVGV4dERyYXdGb250KERyYXdfRnVuZG9bcGxheWVyaWRdWzddLCAyKTsKCVRleHREcmF3TGV0dGVyU2l6ZShEcmF3X0Z1bmRvW3BsYXllcmlkXVs3XSwgMC4yMDk5OTksIDEuNjAwMDAwKTsKCVRleHREcmF3Q29sb3IoRHJhd19GdW5kb1twbGF5ZXJpZF1bN10sIC0xKTsKCVRleHREcmF3U2V0T3V0bGluZShEcmF3X0Z1bmRvW3BsYXllcmlkXVs3XSwgMCk7CglUZXh0RHJhd1NldFByb3BvcnRpb25hbChEcmF3X0Z1bmRvW3BsYXllcmlkXVs3XSwgMSk7CglUZXh0RHJhd1NldFNoYWRvdyhEcmF3X0Z1bmRvW3BsYXllcmlkXVs3XSwgMSk7CglUZXh0RHJhd1VzZUJveChEcmF3X0Z1bmRvW3BsYXllcmlkXVs3XSwgMSk7CglUZXh0RHJhd0JveENvbG9yKERyYXdfRnVuZG9bcGxheWVyaWRdWzddLCAxNTMpOwoJVGV4dERyYXdUZXh0U2l6ZShEcmF3X0Z1bmRvW3BsYXllcmlkXVs3XSwgNTAwLjAwMDAwMCwgMTAuMDAwMDAwKTsKIAoJLy8gPT09PT0gVGV4dERyYXcgUmVnaXN0cm9vCiAKCURyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzBdID0gVGV4dERyYXdDcmVhdGUoMjExLjAwMDAwMCwgMTEwLjAwMDAwMCwgIk9sYSwgc3VhIGNvbnRhIGFpbmRhIG5hbyBlIHJlZ2lzdHJhZGEiKTsKCVRleHREcmF3QmFja2dyb3VuZENvbG9yKERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzBdLCAyNTUpOwoJVGV4dERyYXdGb250KERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzBdLCAyKTsKCVRleHREcmF3TGV0dGVyU2l6ZShEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVswXSwgMC4yMTk5OTksIDEuODk5OTk5KTsKCVRleHREcmF3Q29sb3IoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMF0sIDI1NSk7CglUZXh0RHJhd1NldE91dGxpbmUoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMF0sIDApOwoJVGV4dERyYXdTZXRQcm9wb3J0aW9uYWwoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMF0sIDEpOwoJVGV4dERyYXdTZXRTaGFkb3coRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMF0sIDApOwogCglEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsxXSA9IFRleHREcmF3Q3JlYXRlKDM4NS4wMDAwMDAsIDMxMC4wMDAwMDAsICIgUmVnaXN0cmFyIik7CglUZXh0RHJhd0JhY2tncm91bmRDb2xvcihEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsxXSwgMjU1KTsKCVRleHREcmF3Rm9udChEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsxXSwgMik7CglUZXh0RHJhd0xldHRlclNpemUoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMV0sIDAuMjA5OTk5LCAxLjYwMDAwMCk7CglUZXh0RHJhd0NvbG9yKERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzFdLCAtMSk7CglUZXh0RHJhd1NldE91dGxpbmUoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMV0sIDApOwoJVGV4dERyYXdTZXRQcm9wb3J0aW9uYWwoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMV0sIDEpOwoJVGV4dERyYXdTZXRTaGFkb3coRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMV0sIDEpOwoJVGV4dERyYXdVc2VCb3goRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMV0sIDEpOwoJVGV4dERyYXdCb3hDb2xvcihEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsxXSwgMTUzKTsKCVRleHREcmF3VGV4dFNpemUoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMV0sIDQzNy4wMDAwMDAsIDEwLjAwMDAwMCk7CiAKCURyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzJdID0gVGV4dERyYXdDcmVhdGUoMTcwLjAwMDAwMCwgMTQ0LjAwMDAwMCwgIiAgICAgICAgU2VuaGEiKTsKCVRleHREcmF3QmFja2dyb3VuZENvbG9yKERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzJdLCAyNTUpOwoJVGV4dERyYXdGb250KERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzJdLCAyKTsKCVRleHREcmF3TGV0dGVyU2l6ZShEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsyXSwgMC41MDAwMDAsIDMuMDAwMDAwKTsKCVRleHREcmF3Q29sb3IoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMl0sIC0xKTsKCVRleHREcmF3U2V0T3V0bGluZShEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsyXSwgMCk7CglUZXh0RHJhd1NldFByb3BvcnRpb25hbChEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsyXSwgMSk7CglUZXh0RHJhd1NldFNoYWRvdyhEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsyXSwgMSk7CglUZXh0RHJhd1VzZUJveChEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsyXSwgMSk7CglUZXh0RHJhd0JveENvbG9yKERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzJdLCAxNTMpOwoJVGV4dERyYXdUZXh0U2l6ZShEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsyXSwgMzM1LjAwMDAwMCwgMzAuMDAwMDAwKTsKIAoJRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bM10gPSBUZXh0RHJhd0NyZWF0ZSgxNzAuMDAwMDAwLCAyMDYuMDAwMDAwLCAiICAgICAgICAgU2V4byIpOwoJVGV4dERyYXdCYWNrZ3JvdW5kQ29sb3IoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bM10sIDI1NSk7CglUZXh0RHJhd0ZvbnQoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bM10sIDIpOwoJVGV4dERyYXdMZXR0ZXJTaXplKERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzNdLCAwLjUwMDAwMCwgMy4wMDAwMDApOwoJVGV4dERyYXdDb2xvcihEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVszXSwgLTEpOwoJVGV4dERyYXdTZXRPdXRsaW5lKERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzNdLCAwKTsKCVRleHREcmF3U2V0UHJvcG9ydGlvbmFsKERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzNdLCAxKTsKCVRleHREcmF3U2V0U2hhZG93KERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzNdLCAxKTsKCVRleHREcmF3VXNlQm94KERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzNdLCAxKTsKCVRleHREcmF3Qm94Q29sb3IoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bM10sIDE1Myk7CglUZXh0RHJhd1RleHRTaXplKERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzNdLCAzMzUuMDAwMDAwLCAzMC4wMDAwMDApOwogCglEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs0XSA9IFRleHREcmF3Q3JlYXRlKDE3MC4wMDAwMDAsIDI2Ny4wMDAwMDAsICIgICAgICAgIElkYWRlIik7CglUZXh0RHJhd0JhY2tncm91bmRDb2xvcihEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs0XSwgMjU1KTsKCVRleHREcmF3Rm9udChEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs0XSwgMik7CglUZXh0RHJhd0xldHRlclNpemUoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNF0sIDAuNTAwMDAwLCAzLjAwMDAwMCk7CglUZXh0RHJhd0NvbG9yKERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzRdLCAtMSk7CglUZXh0RHJhd1NldE91dGxpbmUoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNF0sIDApOwoJVGV4dERyYXdTZXRQcm9wb3J0aW9uYWwoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNF0sIDEpOwoJVGV4dERyYXdTZXRTaGFkb3coRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNF0sIDEpOwoJVGV4dERyYXdVc2VCb3goRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNF0sIDEpOwoJVGV4dERyYXdCb3hDb2xvcihEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs0XSwgMTUzKTsKCVRleHREcmF3VGV4dFNpemUoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNF0sIDMzNS4wMDAwMDAsIDMwLjAwMDAwMCk7CiAKCURyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzVdID0gVGV4dERyYXdDcmVhdGUoMzkwLjAwMDAwMCwgMTQ2LjAwMDAwMCwgIk5ldyBUZXh0ZHJhdyIpOwoJVGV4dERyYXdCYWNrZ3JvdW5kQ29sb3IoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNV0sIDI1NSk7CglUZXh0RHJhd0ZvbnQoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNV0sIDUpOwoJVGV4dERyYXdMZXR0ZXJTaXplKERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzVdLCAwLjYwMDAwMCwgLTUuMDk5OTk4KTsKCVRleHREcmF3Q29sb3IoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNV0sIC0xKTsKCVRleHREcmF3U2V0T3V0bGluZShEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs1XSwgMCk7CglUZXh0RHJhd1NldFByb3BvcnRpb25hbChEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs1XSwgMSk7CglUZXh0RHJhd1NldFNoYWRvdyhEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs1XSwgMSk7CglUZXh0RHJhd1VzZUJveChEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs1XSwgMSk7CglUZXh0RHJhd0JveENvbG9yKERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzVdLCAyNTUpOwoJVGV4dERyYXdUZXh0U2l6ZShEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs1XSwgMTA1LjAwMDAwMCwgMTQ1LjAwMDAwMCk7CglUZXh0RHJhd1NldFByZXZpZXdNb2RlbChEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs1XSwgU0tJTl9JTklDSUFMKTsKCVRleHREcmF3U2V0UHJldmlld1JvdChEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs1XSwgLTE2LjAwMDAwMCwgMC4wMDAwMDAsIC01NS4wMDAwMDAsIDEuMDAwMDAwKTsKIAoJRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNl0gPSBUZXh0RHJhd0NyZWF0ZSgxMzkuMDAwMDAwLCAzMTAuMDAwMDAwLCAifnJ+UG9yIGZhdm9yIHByZWVuY2hhIHRvZG9zIG9zIGRhZG9zICEiKTsKCVRleHREcmF3QmFja2dyb3VuZENvbG9yKERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzZdLCAyNTUpOwoJVGV4dERyYXdGb250KERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzZdLCAyKTsKCVRleHREcmF3TGV0dGVyU2l6ZShEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs2XSwgMC4yNzAwMDAsIDEuMzAwMDAwKTsKCVRleHREcmF3Q29sb3IoRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNl0sIC0xKTsKCVRleHREcmF3U2V0T3V0bGluZShEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs2XSwgMSk7CglUZXh0RHJhd1NldFByb3BvcnRpb25hbChEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs2XSwgMSk7CiAKCS8vID09PT0gVGV4dERyYXcgTG9naW4KIAoJRHJhd19Mb2dpbltwbGF5ZXJpZF1bMF0gPSBUZXh0RHJhd0NyZWF0ZSgyMTEuMDAwMDAwLCAxMTAuMDAwMDAwLCAiT2xhLCBzdWEgY29udGEgamEgZXN0YSByZWdpc3RyYWRhLiIpOwoJVGV4dERyYXdCYWNrZ3JvdW5kQ29sb3IoRHJhd19Mb2dpbltwbGF5ZXJpZF1bMF0sIDI1NSk7CglUZXh0RHJhd0ZvbnQoRHJhd19Mb2dpbltwbGF5ZXJpZF1bMF0sIDIpOwoJVGV4dERyYXdMZXR0ZXJTaXplKERyYXdfTG9naW5bcGxheWVyaWRdWzBdLCAwLjIxOTk5OSwgMS44OTk5OTkpOwoJVGV4dERyYXdDb2xvcihEcmF3X0xvZ2luW3BsYXllcmlkXVswXSwgMjU1KTsKCVRleHREcmF3U2V0T3V0bGluZShEcmF3X0xvZ2luW3BsYXllcmlkXVswXSwgMCk7CglUZXh0RHJhd1NldFByb3BvcnRpb25hbChEcmF3X0xvZ2luW3BsYXllcmlkXVswXSwgMSk7CglUZXh0RHJhd1NldFNoYWRvdyhEcmF3X0xvZ2luW3BsYXllcmlkXVswXSwgMCk7CiAKCURyYXdfTG9naW5bcGxheWVyaWRdWzFdID0gVGV4dERyYXdDcmVhdGUoMzg1LjAwMDAwMCwgMzEwLjAwMDAwMCwgIiAgICBMb2dhciIpOwoJVGV4dERyYXdCYWNrZ3JvdW5kQ29sb3IoRHJhd19Mb2dpbltwbGF5ZXJpZF1bMV0sIDI1NSk7CglUZXh0RHJhd0ZvbnQoRHJhd19Mb2dpbltwbGF5ZXJpZF1bMV0sIDIpOwoJVGV4dERyYXdMZXR0ZXJTaXplKERyYXdfTG9naW5bcGxheWVyaWRdWzFdLCAwLjIwOTk5OSwgMS42MDAwMDApOwoJVGV4dERyYXdDb2xvcihEcmF3X0xvZ2luW3BsYXllcmlkXVsxXSwgLTEpOwoJVGV4dERyYXdTZXRPdXRsaW5lKERyYXdfTG9naW5bcGxheWVyaWRdWzFdLCAwKTsKCVRleHREcmF3U2V0UHJvcG9ydGlvbmFsKERyYXdfTG9naW5bcGxheWVyaWRdWzFdLCAxKTsKCVRleHREcmF3U2V0U2hhZG93KERyYXdfTG9naW5bcGxheWVyaWRdWzFdLCAxKTsKCVRleHREcmF3VXNlQm94KERyYXdfTG9naW5bcGxheWVyaWRdWzFdLCAxKTsKCVRleHREcmF3Qm94Q29sb3IoRHJhd19Mb2dpbltwbGF5ZXJpZF1bMV0sIDE1Myk7CglUZXh0RHJhd1RleHRTaXplKERyYXdfTG9naW5bcGxheWVyaWRdWzFdLCA0MzcuMDAwMDAwLCAxMC4wMDAwMDApOwogCglEcmF3X0xvZ2luW3BsYXllcmlkXVsyXSA9IFRleHREcmF3Q3JlYXRlKDE3MC4wMDAwMDAsIDE0NC4wMDAwMDAsICIgICAgICAgIFNlbmhhIik7CglUZXh0RHJhd0JhY2tncm91bmRDb2xvcihEcmF3X0xvZ2luW3BsYXllcmlkXVsyXSwgMjU1KTsKCVRleHREcmF3Rm9udChEcmF3X0xvZ2luW3BsYXllcmlkXVsyXSwgMik7CglUZXh0RHJhd0xldHRlclNpemUoRHJhd19Mb2dpbltwbGF5ZXJpZF1bMl0sIDAuNTAwMDAwLCAzLjAwMDAwMCk7CglUZXh0RHJhd0NvbG9yKERyYXdfTG9naW5bcGxheWVyaWRdWzJdLCAtMSk7CglUZXh0RHJhd1NldE91dGxpbmUoRHJhd19Mb2dpbltwbGF5ZXJpZF1bMl0sIDApOwoJVGV4dERyYXdTZXRQcm9wb3J0aW9uYWwoRHJhd19Mb2dpbltwbGF5ZXJpZF1bMl0sIDEpOwoJVGV4dERyYXdTZXRTaGFkb3coRHJhd19Mb2dpbltwbGF5ZXJpZF1bMl0sIDEpOwoJVGV4dERyYXdVc2VCb3goRHJhd19Mb2dpbltwbGF5ZXJpZF1bMl0sIDEpOwoJVGV4dERyYXdCb3hDb2xvcihEcmF3X0xvZ2luW3BsYXllcmlkXVsyXSwgMTUzKTsKCVRleHREcmF3VGV4dFNpemUoRHJhd19Mb2dpbltwbGF5ZXJpZF1bMl0sIDMzNS4wMDAwMDAsIDMwLjAwMDAwMCk7CiAKCURyYXdfTG9naW5bcGxheWVyaWRdWzNdID0gVGV4dERyYXdDcmVhdGUoMTcwLjAwMDAwMCwgMjA2LjAwMDAwMCwgIiAgICAgICAgRm9ydW0iKTsKCVRleHREcmF3QmFja2dyb3VuZENvbG9yKERyYXdfTG9naW5bcGxheWVyaWRdWzNdLCAyNTUpOwoJVGV4dERyYXdGb250KERyYXdfTG9naW5bcGxheWVyaWRdWzNdLCAyKTsKCVRleHREcmF3TGV0dGVyU2l6ZShEcmF3X0xvZ2luW3BsYXllcmlkXVszXSwgMC41MDAwMDAsIDMuMDAwMDAwKTsKCVRleHREcmF3Q29sb3IoRHJhd19Mb2dpbltwbGF5ZXJpZF1bM10sIC0xKTsKCVRleHREcmF3U2V0T3V0bGluZShEcmF3X0xvZ2luW3BsYXllcmlkXVszXSwgMCk7CglUZXh0RHJhd1NldFByb3BvcnRpb25hbChEcmF3X0xvZ2luW3BsYXllcmlkXVszXSwgMSk7CglUZXh0RHJhd1NldFNoYWRvdyhEcmF3X0xvZ2luW3BsYXllcmlkXVszXSwgMSk7CglUZXh0RHJhd1VzZUJveChEcmF3X0xvZ2luW3BsYXllcmlkXVszXSwgMSk7CglUZXh0RHJhd0JveENvbG9yKERyYXdfTG9naW5bcGxheWVyaWRdWzNdLCAxNTMpOwoJVGV4dERyYXdUZXh0U2l6ZShEcmF3X0xvZ2luW3BsYXllcmlkXVszXSwgMzM1LjAwMDAwMCwgMzAuMDAwMDAwKTsKIAoJRHJhd19Mb2dpbltwbGF5ZXJpZF1bNF0gPSBUZXh0RHJhd0NyZWF0ZSgxNzAuMDAwMDAwLCAyNjcuMDAwMDAwLCAiICAgIFdoYXRzQXBwIik7CglUZXh0RHJhd0JhY2tncm91bmRDb2xvcihEcmF3X0xvZ2luW3BsYXllcmlkXVs0XSwgMjU1KTsKCVRleHREcmF3Rm9udChEcmF3X0xvZ2luW3BsYXllcmlkXVs0XSwgMik7CglUZXh0RHJhd0xldHRlclNpemUoRHJhd19Mb2dpbltwbGF5ZXJpZF1bNF0sIDAuNTAwMDAwLCAzLjAwMDAwMCk7CglUZXh0RHJhd0NvbG9yKERyYXdfTG9naW5bcGxheWVyaWRdWzRdLCAtMSk7CglUZXh0RHJhd1NldE91dGxpbmUoRHJhd19Mb2dpbltwbGF5ZXJpZF1bNF0sIDApOwoJVGV4dERyYXdTZXRQcm9wb3J0aW9uYWwoRHJhd19Mb2dpbltwbGF5ZXJpZF1bNF0sIDEpOwoJVGV4dERyYXdTZXRTaGFkb3coRHJhd19Mb2dpbltwbGF5ZXJpZF1bNF0sIDEpOwoJVGV4dERyYXdVc2VCb3goRHJhd19Mb2dpbltwbGF5ZXJpZF1bNF0sIDEpOwoJVGV4dERyYXdCb3hDb2xvcihEcmF3X0xvZ2luW3BsYXllcmlkXVs0XSwgMTUzKTsKCVRleHREcmF3VGV4dFNpemUoRHJhd19Mb2dpbltwbGF5ZXJpZF1bNF0sIDMzNS4wMDAwMDAsIDMwLjAwMDAwMCk7CiAKCURyYXdfTG9naW5bcGxheWVyaWRdWzVdID0gVGV4dERyYXdDcmVhdGUoMzkwLjAwMDAwMCwgMTQ2LjAwMDAwMCwgIk5ldyBUZXh0ZHJhdyIpOwoJVGV4dERyYXdCYWNrZ3JvdW5kQ29sb3IoRHJhd19Mb2dpbltwbGF5ZXJpZF1bNV0sIDI1NSk7CglUZXh0RHJhd0ZvbnQoRHJhd19Mb2dpbltwbGF5ZXJpZF1bNV0sIDUpOwoJVGV4dERyYXdMZXR0ZXJTaXplKERyYXdfTG9naW5bcGxheWVyaWRdWzVdLCAwLjYwMDAwMCwgLTUuMDk5OTk4KTsKCVRleHREcmF3Q29sb3IoRHJhd19Mb2dpbltwbGF5ZXJpZF1bNV0sIC0xKTsKCVRleHREcmF3U2V0T3V0bGluZShEcmF3X0xvZ2luW3BsYXllcmlkXVs1XSwgMCk7CglUZXh0RHJhd1NldFByb3BvcnRpb25hbChEcmF3X0xvZ2luW3BsYXllcmlkXVs1XSwgMSk7CglUZXh0RHJhd1NldFNoYWRvdyhEcmF3X0xvZ2luW3BsYXllcmlkXVs1XSwgMSk7CglUZXh0RHJhd1VzZUJveChEcmF3X0xvZ2luW3BsYXllcmlkXVs1XSwgMSk7CglUZXh0RHJhd0JveENvbG9yKERyYXdfTG9naW5bcGxheWVyaWRdWzVdLCAyNTUpOwoJVGV4dERyYXdUZXh0U2l6ZShEcmF3X0xvZ2luW3BsYXllcmlkXVs1XSwgMTA1LjAwMDAwMCwgMTQ1LjAwMDAwMCk7CglUZXh0RHJhd1NldFByZXZpZXdNb2RlbChEcmF3X0xvZ2luW3BsYXllcmlkXVs1XSwgU0tJTl9VU0FEQSk7CglUZXh0RHJhd1NldFByZXZpZXdSb3QoRHJhd19Mb2dpbltwbGF5ZXJpZF1bNV0sIC0xNi4wMDAwMDAsIDAuMDAwMDAwLCAtNTUuMDAwMDAwLCAxLjAwMDAwMCk7CiAKCURyYXdfTG9naW5bcGxheWVyaWRdWzZdID0gVGV4dERyYXdDcmVhdGUoMTM5LjAwMDAwMCwgMzEwLjAwMDAwMCwgIn5yflBvciBmYXZvciBjb2xvcXVlIHN1YSBzZW5oYSAhIik7CglUZXh0RHJhd0JhY2tncm91bmRDb2xvcihEcmF3X0xvZ2luW3BsYXllcmlkXVs2XSwgMjU1KTsKCVRleHREcmF3Rm9udChEcmF3X0xvZ2luW3BsYXllcmlkXVs2XSwgMik7CglUZXh0RHJhd0xldHRlclNpemUoRHJhd19Mb2dpbltwbGF5ZXJpZF1bNl0sIDAuMjcwMDAwLCAxLjMwMDAwMCk7CglUZXh0RHJhd0NvbG9yKERyYXdfTG9naW5bcGxheWVyaWRdWzZdLCAtMSk7CglUZXh0RHJhd1NldE91dGxpbmUoRHJhd19Mb2dpbltwbGF5ZXJpZF1bNl0sIDEpOwoJVGV4dERyYXdTZXRQcm9wb3J0aW9uYWwoRHJhd19Mb2dpbltwbGF5ZXJpZF1bNl0sIDEpOwogCglUZXh0RHJhd1NldFNlbGVjdGFibGUoVGV4dDpEcmF3X0Z1bmRvW3BsYXllcmlkXVs3XSwgdHJ1ZSk7CglUZXh0RHJhd1NldFNlbGVjdGFibGUoVGV4dDpEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsxXSwgdHJ1ZSk7CglUZXh0RHJhd1NldFNlbGVjdGFibGUoVGV4dDpEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsyXSwgdHJ1ZSk7CglUZXh0RHJhd1NldFNlbGVjdGFibGUoVGV4dDpEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVszXSwgdHJ1ZSk7CglUZXh0RHJhd1NldFNlbGVjdGFibGUoVGV4dDpEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs0XSwgdHJ1ZSk7CglUZXh0RHJhd1NldFNlbGVjdGFibGUoVGV4dDpEcmF3X0xvZ2luW3BsYXllcmlkXVsxXSwgdHJ1ZSk7CglUZXh0RHJhd1NldFNlbGVjdGFibGUoVGV4dDpEcmF3X0xvZ2luW3BsYXllcmlkXVsyXSwgdHJ1ZSk7CglUZXh0RHJhd1NldFNlbGVjdGFibGUoVGV4dDpEcmF3X0xvZ2luW3BsYXllcmlkXVszXSwgdHJ1ZSk7CglUZXh0RHJhd1NldFNlbGVjdGFibGUoVGV4dDpEcmF3X0xvZ2luW3BsYXllcmlkXVs0XSwgdHJ1ZSk7CglyZXR1cm4gMTsKfQogCnN0b2NrIFRpcmFyVGV4dERyYXcocGxheWVyaWQpCnsKCVRleHREcmF3SGlkZUZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMF0pOwoJVGV4dERyYXdIaWRlRm9yUGxheWVyKHBsYXllcmlkLCBEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsxXSk7CglUZXh0RHJhd0hpZGVGb3JQbGF5ZXIocGxheWVyaWQsIERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzJdKTsKCVRleHREcmF3SGlkZUZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bM10pOwoJVGV4dERyYXdIaWRlRm9yUGxheWVyKHBsYXllcmlkLCBEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVs0XSk7CglUZXh0RHJhd0hpZGVGb3JQbGF5ZXIocGxheWVyaWQsIERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzVdKTsKCVRleHREcmF3SGlkZUZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNl0pOwoJVGV4dERyYXdIaWRlRm9yUGxheWVyKHBsYXllcmlkLCBEcmF3X0xvZ2luW3BsYXllcmlkXVswXSk7CglUZXh0RHJhd0hpZGVGb3JQbGF5ZXIocGxheWVyaWQsIERyYXdfTG9naW5bcGxheWVyaWRdWzFdKTsKCVRleHREcmF3SGlkZUZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19Mb2dpbltwbGF5ZXJpZF1bMl0pOwoJVGV4dERyYXdIaWRlRm9yUGxheWVyKHBsYXllcmlkLCBEcmF3X0xvZ2luW3BsYXllcmlkXVszXSk7CglUZXh0RHJhd0hpZGVGb3JQbGF5ZXIocGxheWVyaWQsIERyYXdfTG9naW5bcGxheWVyaWRdWzRdKTsKCVRleHREcmF3SGlkZUZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19Mb2dpbltwbGF5ZXJpZF1bNV0pOwoJVGV4dERyYXdIaWRlRm9yUGxheWVyKHBsYXllcmlkLCBEcmF3X0xvZ2luW3BsYXllcmlkXVs2XSk7CglUZXh0RHJhd0hpZGVGb3JQbGF5ZXIocGxheWVyaWQsIERyYXdfRnVuZG9bcGxheWVyaWRdWzBdKTsKCVRleHREcmF3SGlkZUZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19GdW5kb1twbGF5ZXJpZF1bMV0pOwoJVGV4dERyYXdIaWRlRm9yUGxheWVyKHBsYXllcmlkLCBEcmF3X0Z1bmRvW3BsYXllcmlkXVsyXSk7CglUZXh0RHJhd0hpZGVGb3JQbGF5ZXIocGxheWVyaWQsIERyYXdfRnVuZG9bcGxheWVyaWRdWzNdKTsKCVRleHREcmF3SGlkZUZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19GdW5kb1twbGF5ZXJpZF1bNF0pOwoJVGV4dERyYXdIaWRlRm9yUGxheWVyKHBsYXllcmlkLCBEcmF3X0Z1bmRvW3BsYXllcmlkXVs1XSk7CglUZXh0RHJhd0hpZGVGb3JQbGF5ZXIocGxheWVyaWQsIERyYXdfRnVuZG9bcGxheWVyaWRdWzZdKTsKCVRleHREcmF3SGlkZUZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19GdW5kb1twbGF5ZXJpZF1bN10pOwoJcmV0dXJuIDE7Cn0KIApwdWJsaWMgT25QbGF5ZXJDbGlja1RleHREcmF3KHBsYXllcmlkLCBUZXh0OmNsaWNrZWRpZCkKewoJLy8gPT09IERyYXcgcmVnaXN0cm8KICAgIGlmKGNsaWNrZWRpZCA9PSBEcmF3X1JlZ2lzdHJvW3BsYXllcmlkXVsyXSkgIFNob3dQbGF5ZXJEaWFsb2cocGxheWVyaWQsIERJQUxPR19SRUdJU1RSTywgRElBTE9HX1NUWUxFX1BBU1NXT1JELCAiRGlnaXRlIHVtYSBzZW5oYToiLCAiRGlnaXRlIHVtYSBzZW5oYSBhYmFpeG8gcGFyYSByZWdpc3RyYXItc2UuXG5cbk9iczogRWxhIGRldmUgY29udGVyIG5vIG3DrW5pbW8gNCBlIG5vIG3DoXhpbW8gMTYgY2FyYWN0ZXJlcy4iLCAiUmVnaXN0cmFyIiwgIlZvbHRhciIpOwogICAgaWYoY2xpY2tlZGlkID09IERyYXdfUmVnaXN0cm9bcGxheWVyaWRdWzNdKSAgU2hvd1BsYXllckRpYWxvZyhwbGF5ZXJpZCwgRElBTE9HX1NFWE8sIERJQUxPR19TVFlMRV9NU0dCT1gsICJFc2NvbGhhIHNldSBzZXhvOiIsICJFc2NvbGhlIHNldSBzZXhvIGNsaWNhbmRvIG5vcyBib3TDtWVzIGFiYWl4by4iLCAiTWFzY3VsaW5vIiwgIkZlbWluaW5vIik7CiAgICBpZihjbGlja2VkaWQgPT0gRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNF0pICBTaG93UGxheWVyRGlhbG9nKHBsYXllcmlkLCBESUFMT0dfSURBREUsIERJQUxPR19TVFlMRV9JTlBVVCwgIkRpZ2l0ZSBzdWEgaWRhZGUiLCAiRGlnaXRlIGEgaWRhZGUgZG8gc2V1IHBlcnNvbmFnZW0gYWJhaXhvLlxuXG5PYnM6IE3DrW5pbW8gMTAgZSBtw6F4aW1vIDEwMCBhbm9zLiIsICJSZWdpc3RyYXIiLCAiVm9sdGFyIik7CiAgICBpZihjbGlja2VkaWQgPT0gRHJhd19GdW5kb1twbGF5ZXJpZF1bN10pIEtpY2socGxheWVyaWQpOyAvL2JveCBjYW54ZWxhcgogCiAgICBpZihjbGlja2VkaWQgPT0gRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bMV0pIC8vIFJlZ2lzdHJhcgogICAgewogICAgICAgIGlmKERpZ2l0b3VTZW5oYVtwbGF5ZXJpZF0gPT0gMSAmJiBEaWdpdG91U2V4b1twbGF5ZXJpZF0gPT0gMSAmJiBEaWdpdG91SWRhZGVbcGxheWVyaWRdID09IDEpCiAgICAgICAgewogICAgICAgIAlUaXJhclRleHREcmF3KHBsYXllcmlkKTsKICAgIAkJRGlnaXRvdVNlbmhhW3BsYXllcmlkXSA9IDA7CiAgICAgICAgCURpZ2l0b3VTZXhvW3BsYXllcmlkXSA9IDA7CiAgICAgICAgCURpZ2l0b3VJZGFkZVtwbGF5ZXJpZF0gPSAwOwogICAJCQlQbGF5ZXJJbmZvW3BsYXllcmlkXVtMZXZlbF0gPSBMRVZFTF9JTklDSUFMOwoJCQlQbGF5ZXJJbmZvW3BsYXllcmlkXVtTa2luXSA9IFNLSU5fSU5JQ0lBTDsKCQkJUGxheWVySW5mb1twbGF5ZXJpZF1bRGluaGVpcm9dID0gRElOSEVJUk9fSU5JQ0lBTDsKCQkJUGxheWVySW5mb1twbGF5ZXJpZF1bUG9zXVswXSA9IFBPU1hfSU5JQ0lBTDsKCQkJUGxheWVySW5mb1twbGF5ZXJpZF1bUG9zXVsxXSA9IFBPU1lfSU5JQ0lBTDsKCQkJUGxheWVySW5mb1twbGF5ZXJpZF1bUG9zXVsyXSA9IFBPU1pfSU5JQ0lBTDsKCQkJU2VuZENsaWVudE1lc3NhZ2UocGxheWVyaWQsIC0xLCAiU3VhIGNvbnRhIGZvaSByZWdpc3RyYWRhIGNvbSBzdWNlc3NvISIpOwoJCQlDYXJyZWdhckRhZG9zKHBsYXllcmlkKTsKICAJCQl9IGVsc2UgewogIAkJCVRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19SZWdpc3Ryb1twbGF5ZXJpZF1bNl0pOyAvLyBtZW5zYWdlbSBkZSBlcnJvIHByZWVuY2hhIHRvZG9zIG9zIGRhZG9zCgkJfQogICAgfQogCgkvLyA9PT0gVGV4dERyYXcgTG9naW4KICAgIGlmKGNsaWNrZWRpZCA9PSBEcmF3X0xvZ2luW3BsYXllcmlkXVsyXSkgU2hvd1BsYXllckRpYWxvZyhwbGF5ZXJpZCwgRElBTE9HX0xPR0lOLCBESUFMT0dfU1RZTEVfUEFTU1dPUkQsICJEaWdpdGUgc3VhIHNlbmhhOiIsICJWb2PDqiBqw6Egw6kgdW0gcGxheWVyIHJlZ2lzdHJhZG8sIGRpZ2l0ZSB1bWEgc2VuaGEgYWJhaXhvIHBhcmEgbG9nYXItc2UiLCAiTG9nYXIiLCAiVm9sdGFyIik7CiAKCWlmKGNsaWNrZWRpZCA9PSBEcmF3X0xvZ2luW3BsYXllcmlkXVsxXSkgLy8gTE9HSU4KICAgIHsKICAgICAgICBpZihEaWdpdG91TG9naW5bcGxheWVyaWRdID09IDEpCgkJewoJCSAgICBuZXcgUXVlcnlbNzBdOwoJCQlteXNxbF9mb3JtYXQoQ29uZXhhbywgUXVlcnksIHNpemVvZihRdWVyeSksICJTRUxFQ1QgKiBGUk9NIHVzdWFyaW9zIFdIRVJFIE5vbWU9JyVzJyIsIE5vbWUocGxheWVyaWQpKTsKCQkJbXlzcWxfdHF1ZXJ5KENvbmV4YW8sIFF1ZXJ5LCAiTXlzcWxfQ2FycmVnYXIiLCAiZCIsIHBsYXllcmlkKTsKICAgICAgICAgICAJRGlnaXRvdUxvZ2luW3BsYXllcmlkXSA9IDA7CiAgICAgICAgCX0gZWxzZSB7CiAgICAgICAgICAgIFRleHREcmF3U2hvd0ZvclBsYXllcihwbGF5ZXJpZCwgRHJhd19Mb2dpbltwbGF5ZXJpZF1bNl0pOyAvLyBtZW5zYWdlbSBkZSBlcnJvLCBlc3F1ZWNldSBkZSBkaWdpdGFyIHNlbmhhCiAgICAgICAgfQogICAgfQogCiAgICBpZihjbGlja2VkaWQgPT0gRHJhd19Mb2dpbltwbGF5ZXJpZF1bNF0pIC8vIFdoYXRzQXBwCiAgICB7CiAgICAgICAgaWYoQ2xpY291V2hhdHNbcGxheWVyaWRdID09IDApCgkJewoJCQlUZXh0RHJhd1NldFN0cmluZyhEcmF3X0xvZ2luW3BsYXllcmlkXVs0XSwgV0hBVFNBUFApOwoJCQlDbGljb3VXaGF0c1twbGF5ZXJpZF0gPSAxOwoJCQl9IGVsc2UgaWYoQ2xpY291V2hhdHNbcGxheWVyaWRdID09IDEpewogICAgICAgICAgICBUZXh0RHJhd1NldFN0cmluZyhEcmF3X0xvZ2luW3BsYXllcmlkXVs0XSwgIldoYXRzQXBwIik7CiAgICAgICAgICAgIENsaWNvdVdoYXRzW3BsYXllcmlkXSA9IDA7CgkJfQogICAgfQogCiAgICBpZihjbGlja2VkaWQgPT0gRHJhd19Mb2dpbltwbGF5ZXJpZF1bM10pIC8vIEZvcnVtCiAgICB7CiAgICAgICAgaWYoQ2xpY291Rm9ydW1bcGxheWVyaWRdID09IDApCiAgICAgICAgewoJCQlUZXh0RHJhd1NldFN0cmluZyhEcmF3X0xvZ2luW3BsYXllcmlkXVszXSwgRk9SVU0pOwoJCQlDbGljb3VGb3J1bVtwbGF5ZXJpZF0gPSAxOwoJCX0gZWxzZSBpZihDbGljb3VGb3J1bVtwbGF5ZXJpZF0gPT0gMSl7CiAgICAgICAgICAgIFRleHREcmF3U2V0U3RyaW5nKERyYXdfTG9naW5bcGxheWVyaWRdWzNdLCAiRm9ydW0iKTsKICAgICAgICAgICAgQ2xpY291Rm9ydW1bcGxheWVyaWRdID0gMDsKCQl9CiAgICB9CiAgICByZXR1cm4gMTsKfQogCkNNRDp0cm9jYXJzZW5oYShwbGF5ZXJpZCkKewogICAgU2hvd1BsYXllckRpYWxvZyhwbGF5ZXJpZCwgRElBTE9HX1NFTkhBLCBESUFMT0dfU1RZTEVfUEFTU1dPUkQsICJEaWdpdGUgdW1hIHNlbmhhOiIsICJEaWdpdGUgc3VhIG5vdmEgc2VuaGEgYWJhaXhvXG5cbk9iczogRWxhIGRldmUgY29udGVyIG5vIG3DrW5pbW8gNCBlIG5vIG3DoXhpbW8gMTYgY2FyYWN0ZXJlcy4iLCAiVHJvY2FyIiwgIlZvbHRhciIpOwoJcmV0dXJuIDE7Cn0KIApDTUQ6dHJvY2FybmljayhwbGF5ZXJpZCkKewoJU2hvd1BsYXllckRpYWxvZyhwbGF5ZXJpZCwgRElBTE9HX05JQ0ssIERJQUxPR19TVFlMRV9QQVNTV09SRCwgIkRpZ2l0ZSB1bSBub3ZvIG5pY2s6IiwgIkRpZ2l0ZSBzZXUgbm92byBuaWNrIGFiYWl4b1xuXG5PYnM6IEVsZSBkZXZlIGNvbnRlciBubyBtw6F4aW1vIDI1IGNhcmFjdGVyZXMuIiwgIlRyb2NhciIsICJWb2x0YXIiKTsKCXJldHVybiAxOwp9
stdout
#include <a_samp>
#include <a_mysql>
#include <zcmd>
// == Configurações do FS
// => Mysql
#define Host "localhost"
#define Usuario "root"
#define DataBase "samp"
#define Senha ""
//Registro
#define SKIN_INICIAL 26 //Mude para a skin desejada
#define LEVEL_INICIAL 1 // ||
#define DINHEIRO_INICIAL 5000 // ||
#define POSX_INICIAL 1721.8422 //Pos X de spawn de registro
#define POSY_INICIAL -1880.1793 //Pos Y de spawn de registro
#define POSZ_INICIAL 13.5649 //Pos Z de spawn de registro
#define WHATSAPP "edite" // troque pelo whats desejado
#define FORUM "edite" // troque pelo seu endereço do forum
#define DIALOG_REGISTRO 100
#define DIALOG_SEXO 101
#define DIALOG_IDADE 102
#define DIALOG_SENHA 103
#define DIALOG_NICK 104
#define DIALOG_LOGIN 200
#define DIALOG_FORUM 201
#define DIALOG_WHATS 202
#define SKIN_USADA PlayerInfo[playerid][Skin]
new Conexao;
new DigitouSenha[MAX_PLAYERS], DigitouSexo[MAX_PLAYERS];
new DigitouIdade[MAX_PLAYERS], DigitouLogin[MAX_PLAYERS];
new ClicouWhats[MAX_PLAYERS], ClicouForum[MAX_PLAYERS];
new Text:Draw_Fundo[MAX_PLAYERS][8];
new Text:Draw_Registro[MAX_PLAYERS][7];
new Text:Draw_Login[MAX_PLAYERS][7];
enum pInfo
{
ID,
pPassword[129],
Sexo,
Idade,
Dinheiro,
Skin,
Matou,
Morreu,
Level,
Admin,
Float:Pos[3],
bool:Logado
};
new PlayerInfo[MAX_PLAYERS][pInfo];
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" FS Registro/Login por Cleyson Stein");
print("--------------------------------------\n");
Conexao = mysql_connect(Host, Usuario, DataBase, Senha);
mysql_query(Conexao, "CREATE TABLE IF NOT EXISTS `usuarios`(`ID`int AUTO_INCREMENT PRIMARY KEY, `Nome` varchar(24) NOT NULL, `Senha` varchar(129) NOT NULL, `Admin` int(11) NOT NULL, `Sexo` int(11) NOT NULL, `Idade` int(11) NOT NULL, `Dinheiro` int(11) NOT NULL, `Skin` int(11) NOT NULL, `Matou` int(11) NOT NULL, `Morreu` int(11) NOT NULL, `PosX` float NOT NULL,`PosY` float NOT NULL,`PosZ` float NOT NULL)", false);
return 1;
}
public OnFilterScriptExit()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
SalvarDados(i);
}
mysql_close(Conexao);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerConnect(playerid)
{
CriarTextDraw(playerid);
new Query[70];
mysql_format(Conexao, Query, sizeof(Query), "SELECT * FROM usuarios WHERE Nome='%e'", Nome(playerid));
mysql_tquery(Conexao, Query, "Mysql_Verificar", "d", playerid);
return 1;
}
forward Mysql_Verificar(playerid);
public Mysql_Verificar(playerid)
{
SelectTextDraw(playerid, 0xFF0000FF);
TextDrawShowForPlayer(playerid, Draw_Fundo[playerid][0]);
TextDrawShowForPlayer(playerid, Draw_Fundo[playerid][1]);
TextDrawShowForPlayer(playerid, Draw_Fundo[playerid][2]);
TextDrawShowForPlayer(playerid, Draw_Fundo[playerid][3]);
TextDrawShowForPlayer(playerid, Draw_Fundo[playerid][4]);
TextDrawShowForPlayer(playerid, Draw_Fundo[playerid][5]);
TextDrawShowForPlayer(playerid, Draw_Fundo[playerid][6]);
TextDrawShowForPlayer(playerid, Draw_Fundo[playerid][7]);
if(cache_get_row_count(Conexao) == 1)
{
new tmp[129];
cache_get_field_content(0, "Senha", tmp); format(PlayerInfo[playerid][pPassword], 129, "%s", tmp);
PlayerInfo[playerid][ID] = cache_get_field_content_int(0, "ID");
PlayerInfo[playerid][Skin] = cache_get_field_content_int(0, "Skin");
TextDrawShowForPlayer(playerid, Draw_Login[playerid][0]);
TextDrawShowForPlayer(playerid, Draw_Login[playerid][1]);
TextDrawShowForPlayer(playerid, Draw_Login[playerid][2]);
TextDrawShowForPlayer(playerid, Draw_Login[playerid][3]);
TextDrawShowForPlayer(playerid, Draw_Login[playerid][4]);
TextDrawShowForPlayer(playerid, Draw_Login[playerid][5]);
} else {
TextDrawShowForPlayer(playerid, Draw_Registro[playerid][0]);
TextDrawShowForPlayer(playerid, Draw_Registro[playerid][1]);
TextDrawShowForPlayer(playerid, Draw_Registro[playerid][2]);
TextDrawShowForPlayer(playerid, Draw_Registro[playerid][3]);
TextDrawShowForPlayer(playerid, Draw_Registro[playerid][4]);
TextDrawShowForPlayer(playerid, Draw_Registro[playerid][5]);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SalvarDados(playerid);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
PlayerInfo[playerid][Morreu]++;
PlayerInfo[killerid][Matou]++;
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new Msg_format[128];
switch(dialogid)
{
case DIALOG_REGISTRO:
{
if(!response) return SendClientMessage(playerid, -1, "Você não quis digitar uma senha");
if(strlen(inputtext) < 4 || strlen(inputtext) > 16)
{
SendClientMessage(playerid, -1, "Sua senha deve conter entre 4 e 16 caracteres!!!");
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Digite uma senha:", "Digite uma senha abaixo para registrar-se.\n\nObs: Ela deve conter no mínimo 4 e no máximo 16 caracteres.", "Registrar", "Voltar");
return 1;
}
if(response)
{
DigitouSenha[playerid] = 1;
TextDrawSetString(Draw_Registro[playerid][2], inputtext);
new Query[200];
mysql_format(Conexao, Query, sizeof(Query), "INSERT INTO `usuarios` (`Nome`, `Senha`) VALUES ('%e','%e')", Nome(playerid), inputtext);
mysql_tquery(Conexao, Query, "DadosRegistrados", "i", playerid);
return 1;
}
return 1;
}
case DIALOG_SEXO:
{
if(!response)
{
DigitouSexo[playerid] = 1;
SendClientMessage(playerid, -1, "Seu sexo é feminino.");
TextDrawSetString(Draw_Registro[playerid][3], "Feminino");
PlayerInfo[playerid][Sexo] = 1;
} else {
DigitouSexo[playerid] = 1;
SendClientMessage(playerid, -1, "Seu sexo é masculino.");
TextDrawSetString(Draw_Registro[playerid][3], "Masculino");
PlayerInfo[playerid][Sexo] = 2;
}
return 1;
}
case DIALOG_IDADE:
{
if(!response) return SendClientMessage(playerid, -1, "Você não quis digitar a idade do seu personagem.");
if(!strlen(inputtext))
{
SendClientMessage(playerid, -1, "Você não digitou nada, digite uma idade!");
ShowPlayerDialog(playerid, DIALOG_IDADE, DIALOG_STYLE_INPUT, "Digite sua idade", "Digite a idade do seu personagem abaixo.\n\nObs: Mínimo 12 e máximo 80 anos.", "Registrar", "Voltar");
return 1;
}
if(strval(inputtext) < 10 || strval(inputtext) > 100)
{
SendClientMessage(playerid, -1, "Sua idade deve ser entre 10 e 100 anos.");
ShowPlayerDialog(playerid, DIALOG_IDADE, DIALOG_STYLE_INPUT, "Digite sua idade", "Digite a idade do seu personagem abaixo.\n\nObs: Mínimo 12 e máximo 80 anos.", "Registrar", "Voltar");
return 1;
}
DigitouIdade[playerid] = 1;
TextDrawSetString(Draw_Registro[playerid][4], inputtext);
PlayerInfo[playerid][Idade] = strval(inputtext);
return 1;
}
case DIALOG_LOGIN:
{
if(!response) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Você já é um player registrado, digite uma senha abaixo para logar-se", "Logar", "Voltar");
if(!strcmp(PlayerInfo[playerid][pPassword], inputtext, true, 129))
{
DigitouLogin[playerid] = 1;
TextDrawSetString(Draw_Login[playerid][2], inputtext);
} else {
SendClientMessage(playerid, -1, "[ERRO] Senha incorreta !");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Você já é um player registrado, digite uma senha abaixo para logar-se", "Logar", "Voltar");
}
return 1;
}
case DIALOG_SENHA:
{
if(!response) return SendClientMessage(playerid, -1, "Você não quis digitar uma senha");
if(strlen(inputtext) < 4 || strlen(inputtext) > 16)
{
SendClientMessage(playerid, -1, "Sua senha deve conter entre 4 e 16 caracteres!!!");
ShowPlayerDialog(playerid, DIALOG_SENHA, DIALOG_STYLE_PASSWORD, "Digite uma senha:", "Digite sua nova senha abaixo\n\nObs: Ela deve conter no mínimo 4 e no máximo 16 caracteres.", "Trocar", "Voltar");
return 1;
}
if(response)
{
new Query[120];
mysql_format(Conexao, Query, sizeof(Query), "UPDATE `usuarios` SET `Senha`='%e' WHERE `ID`='%d'",inputtext, PlayerInfo[playerid][ID]);
mysql_tquery(Conexao, Query,"","");
format(Msg_format, sizeof(Msg_format), "Sua senha foi alterada com sucesso, nova senha: %s!!!", inputtext);
SendClientMessage(playerid, -1, Msg_format);
return 1;
}
return 1;
}
case DIALOG_NICK:
{
if(!response) return SendClientMessage(playerid, -1, "Você não quis digitar uma senha");
if(strlen(inputtext) > 25)
{
SendClientMessage(playerid, -1, "Seu novo nick name deve conter ate 25 caracteres!!!");
ShowPlayerDialog(playerid, DIALOG_NICK, DIALOG_STYLE_PASSWORD, "Digite um novo nick:", "Digite seu novo nick abaixo\n\nObs: Ele deve conter no máximo 25 caracteres.", "Trocar", "Voltar");
return 1;
}
if(response)
{
SetPlayerName(playerid, inputtext);
new Query[120];
mysql_format(Conexao, Query, sizeof(Query), "UPDATE `usuarios` SET `Nome`='%e' WHERE `ID`='%d'", inputtext, PlayerInfo[playerid][ID]);
mysql_tquery(Conexao, Query,"","");
format(Msg_format, sizeof(Msg_format), "Seu nick foi alterado com sucesso, novo nick: %s!!!", inputtext);
SendClientMessage(playerid, -1, Msg_format);
return 1;
}
return 1;
}
}
return 1;
}
forward Mysql_Carregar(playerid);
public Mysql_Carregar(playerid)
{
PlayerInfo[playerid][Admin] = cache_get_field_content_int(0, "Admin");
PlayerInfo[playerid][Sexo] = cache_get_field_content_int(0, "Sexo");
PlayerInfo[playerid][Idade] = cache_get_field_content_int(0, "Idade");
PlayerInfo[playerid][Dinheiro] = cache_get_field_content_int(0, "Dinheiro");
PlayerInfo[playerid][Skin] = cache_get_field_content_int(0, "Skin");
PlayerInfo[playerid][Matou] = cache_get_field_content_int(0, "Matou");
PlayerInfo[playerid][Morreu] = cache_get_field_content_int(0, "Morreu");
PlayerInfo[playerid][Pos][0] = cache_get_field_content_int(0, "PosX");
PlayerInfo[playerid][Pos][1] = cache_get_field_content_int(0, "PosY");
PlayerInfo[playerid][Pos][2] = cache_get_field_content_int(0, "PosZ");
CarregarDados(playerid);
return 1;
}
stock SalvarDados(playerid)
{
if(PlayerInfo[playerid][Logado] == false) return 1;
new Float:X, Float:Y, Float:Z, Query[320];
GetPlayerPos(playerid, Float:X, Float:Y, Float:Z);
mysql_format(Conexao, Query, sizeof(Query), "UPDATE `usuarios` SET `Admin`='%d', `Sexo`='%d', `Idade`='%d', `Dinheiro`='%d', `Skin`='%d', `Matou`='%d', `Morreu`='%d', `PosX`=%.1f, `PosY`=%.1f, `PosZ`=%.1f WHERE `ID`='%d'",
PlayerInfo[playerid][Admin],
PlayerInfo[playerid][Sexo],
PlayerInfo[playerid][Idade],
GetPlayerMoney(playerid),
PlayerInfo[playerid][Skin],
PlayerInfo[playerid][Matou],
PlayerInfo[playerid][Morreu],
Float:X,
Float:Y,
Float:Z,
PlayerInfo[playerid][ID]);
mysql_tquery(Conexao, Query,"DadosSalvos","d", playerid);
return 1;
}
stock CarregarDados(playerid)
{
TirarTextDraw(playerid);
CancelSelectTextDraw(playerid);
SetPlayerScore(playerid, PlayerInfo[playerid][Level]);
GivePlayerMoney(playerid, PlayerInfo[playerid][Dinheiro]);
SetSpawnInfo(playerid, 0, PlayerInfo[playerid][Skin], PlayerInfo[playerid][Pos][0], PlayerInfo[playerid][Pos][1], PlayerInfo[playerid][Pos][2], 269.15, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
SendClientMessage(playerid, -1, "Sua conta foi carregada com sucesso!");
PlayerInfo[playerid][Logado] = true;
return 1;
}
forward DadosRegistrados(playerid);
public DadosRegistrados(playerid)
{
PlayerInfo[playerid][ID] = cache_insert_id();
printf("-> Nova conta registrada ID: %d", PlayerInfo[playerid][ID]);
return 1;
}
forward DadosSalvos(playerid);
public DadosSalvos(playerid)
{
printf("-> Conta salva ID: %d", PlayerInfo[playerid][ID]);
return 1;
}
stock Nome(playerid)
{
new name[MAX_PLAYER_NAME];
return(GetPlayerName(playerid, name, sizeof(name)), name);
}
stock CriarTextDraw(playerid)
{
// == Text draws box fundo ou seja nao irao alterar se for login ou registro
Draw_Fundo[playerid][0] = TextDrawCreate(130.000000, 80.000000, "#");
TextDrawBackgroundColor(Draw_Fundo[playerid][0], 255);
TextDrawFont(Draw_Fundo[playerid][0], 0);
TextDrawLetterSize(Draw_Fundo[playerid][0], 0.800000, 30.799999);
TextDrawColor(Draw_Fundo[playerid][0], -1);
TextDrawSetOutline(Draw_Fundo[playerid][0], 0);
TextDrawSetProportional(Draw_Fundo[playerid][0], 1);
TextDrawSetShadow(Draw_Fundo[playerid][0], 1);
TextDrawUseBox(Draw_Fundo[playerid][0], 1);
TextDrawBoxColor(Draw_Fundo[playerid][0], -120);
TextDrawTextSize(Draw_Fundo[playerid][0], 508.000000, 81.000000);
Draw_Fundo[playerid][1] = TextDrawCreate(130.000000, 80.000000, "#");
TextDrawBackgroundColor(Draw_Fundo[playerid][1], 255);
TextDrawFont(Draw_Fundo[playerid][1], 0);
TextDrawLetterSize(Draw_Fundo[playerid][1], 0.800000, 2.299995);
TextDrawColor(Draw_Fundo[playerid][1], -1);
TextDrawSetOutline(Draw_Fundo[playerid][1], 0);
TextDrawSetProportional(Draw_Fundo[playerid][1], 1);
TextDrawSetShadow(Draw_Fundo[playerid][1], 1);
TextDrawUseBox(Draw_Fundo[playerid][1], 1);
TextDrawBoxColor(Draw_Fundo[playerid][1], 102);
TextDrawTextSize(Draw_Fundo[playerid][1], 508.000000, 81.000000);
Draw_Fundo[playerid][2] = TextDrawCreate(130.000000, 337.000000, "#");
TextDrawBackgroundColor(Draw_Fundo[playerid][2], 255);
TextDrawFont(Draw_Fundo[playerid][2], 0);
TextDrawLetterSize(Draw_Fundo[playerid][2], 0.800000, 2.299995);
TextDrawColor(Draw_Fundo[playerid][2], -1);
TextDrawSetOutline(Draw_Fundo[playerid][2], 0);
TextDrawSetProportional(Draw_Fundo[playerid][2], 1);
TextDrawSetShadow(Draw_Fundo[playerid][2], 1);
TextDrawUseBox(Draw_Fundo[playerid][2], 1);
TextDrawBoxColor(Draw_Fundo[playerid][2], 102);
TextDrawTextSize(Draw_Fundo[playerid][2], 508.000000, 81.000000);
Draw_Fundo[playerid][3] = TextDrawCreate(123.000000, 96.000000, "-");
TextDrawBackgroundColor(Draw_Fundo[playerid][3], 255);
TextDrawFont(Draw_Fundo[playerid][3], 1);
TextDrawLetterSize(Draw_Fundo[playerid][3], 27.550069, 0.899999);
TextDrawColor(Draw_Fundo[playerid][3], 65535);
TextDrawSetOutline(Draw_Fundo[playerid][3], 1);
TextDrawSetProportional(Draw_Fundo[playerid][3], 1);
Draw_Fundo[playerid][4] = TextDrawCreate(123.000000, 331.000000, "-");
TextDrawBackgroundColor(Draw_Fundo[playerid][4], 255);
TextDrawFont(Draw_Fundo[playerid][4], 1);
TextDrawLetterSize(Draw_Fundo[playerid][4], 27.550069, 0.899999);
TextDrawColor(Draw_Fundo[playerid][4], 65535);
TextDrawSetOutline(Draw_Fundo[playerid][4], 1);
TextDrawSetProportional(Draw_Fundo[playerid][4], 1);
Draw_Fundo[playerid][5] = TextDrawCreate(255.000000, 77.000000, "~b~Bem Vindo");
TextDrawBackgroundColor(Draw_Fundo[playerid][5], 255);
TextDrawFont(Draw_Fundo[playerid][5], 0);
TextDrawLetterSize(Draw_Fundo[playerid][5], 0.959999, 2.299998);
TextDrawColor(Draw_Fundo[playerid][5], -1);
TextDrawSetOutline(Draw_Fundo[playerid][5], 0);
TextDrawSetProportional(Draw_Fundo[playerid][5], 1);
TextDrawSetShadow(Draw_Fundo[playerid][5], 1);
Draw_Fundo[playerid][6] = TextDrawCreate(256.000000, 335.000000, "~b~Bom Jogo !");
TextDrawBackgroundColor(Draw_Fundo[playerid][6], 255);
TextDrawFont(Draw_Fundo[playerid][6], 0);
TextDrawLetterSize(Draw_Fundo[playerid][6], 0.959999, 2.299998);
TextDrawColor(Draw_Fundo[playerid][6], -1);
TextDrawSetOutline(Draw_Fundo[playerid][6], 0);
TextDrawSetProportional(Draw_Fundo[playerid][6], 1);
TextDrawSetShadow(Draw_Fundo[playerid][6], 1);
Draw_Fundo[playerid][7] = TextDrawCreate(450.000000, 310.000000, " Cancelar");
TextDrawBackgroundColor(Draw_Fundo[playerid][7], 255);
TextDrawFont(Draw_Fundo[playerid][7], 2);
TextDrawLetterSize(Draw_Fundo[playerid][7], 0.209999, 1.600000);
TextDrawColor(Draw_Fundo[playerid][7], -1);
TextDrawSetOutline(Draw_Fundo[playerid][7], 0);
TextDrawSetProportional(Draw_Fundo[playerid][7], 1);
TextDrawSetShadow(Draw_Fundo[playerid][7], 1);
TextDrawUseBox(Draw_Fundo[playerid][7], 1);
TextDrawBoxColor(Draw_Fundo[playerid][7], 153);
TextDrawTextSize(Draw_Fundo[playerid][7], 500.000000, 10.000000);
// ===== TextDraw Registroo
Draw_Registro[playerid][0] = TextDrawCreate(211.000000, 110.000000, "Ola, sua conta ainda nao e registrada");
TextDrawBackgroundColor(Draw_Registro[playerid][0], 255);
TextDrawFont(Draw_Registro[playerid][0], 2);
TextDrawLetterSize(Draw_Registro[playerid][0], 0.219999, 1.899999);
TextDrawColor(Draw_Registro[playerid][0], 255);
TextDrawSetOutline(Draw_Registro[playerid][0], 0);
TextDrawSetProportional(Draw_Registro[playerid][0], 1);
TextDrawSetShadow(Draw_Registro[playerid][0], 0);
Draw_Registro[playerid][1] = TextDrawCreate(385.000000, 310.000000, " Registrar");
TextDrawBackgroundColor(Draw_Registro[playerid][1], 255);
TextDrawFont(Draw_Registro[playerid][1], 2);
TextDrawLetterSize(Draw_Registro[playerid][1], 0.209999, 1.600000);
TextDrawColor(Draw_Registro[playerid][1], -1);
TextDrawSetOutline(Draw_Registro[playerid][1], 0);
TextDrawSetProportional(Draw_Registro[playerid][1], 1);
TextDrawSetShadow(Draw_Registro[playerid][1], 1);
TextDrawUseBox(Draw_Registro[playerid][1], 1);
TextDrawBoxColor(Draw_Registro[playerid][1], 153);
TextDrawTextSize(Draw_Registro[playerid][1], 437.000000, 10.000000);
Draw_Registro[playerid][2] = TextDrawCreate(170.000000, 144.000000, " Senha");
TextDrawBackgroundColor(Draw_Registro[playerid][2], 255);
TextDrawFont(Draw_Registro[playerid][2], 2);
TextDrawLetterSize(Draw_Registro[playerid][2], 0.500000, 3.000000);
TextDrawColor(Draw_Registro[playerid][2], -1);
TextDrawSetOutline(Draw_Registro[playerid][2], 0);
TextDrawSetProportional(Draw_Registro[playerid][2], 1);
TextDrawSetShadow(Draw_Registro[playerid][2], 1);
TextDrawUseBox(Draw_Registro[playerid][2], 1);
TextDrawBoxColor(Draw_Registro[playerid][2], 153);
TextDrawTextSize(Draw_Registro[playerid][2], 335.000000, 30.000000);
Draw_Registro[playerid][3] = TextDrawCreate(170.000000, 206.000000, " Sexo");
TextDrawBackgroundColor(Draw_Registro[playerid][3], 255);
TextDrawFont(Draw_Registro[playerid][3], 2);
TextDrawLetterSize(Draw_Registro[playerid][3], 0.500000, 3.000000);
TextDrawColor(Draw_Registro[playerid][3], -1);
TextDrawSetOutline(Draw_Registro[playerid][3], 0);
TextDrawSetProportional(Draw_Registro[playerid][3], 1);
TextDrawSetShadow(Draw_Registro[playerid][3], 1);
TextDrawUseBox(Draw_Registro[playerid][3], 1);
TextDrawBoxColor(Draw_Registro[playerid][3], 153);
TextDrawTextSize(Draw_Registro[playerid][3], 335.000000, 30.000000);
Draw_Registro[playerid][4] = TextDrawCreate(170.000000, 267.000000, " Idade");
TextDrawBackgroundColor(Draw_Registro[playerid][4], 255);
TextDrawFont(Draw_Registro[playerid][4], 2);
TextDrawLetterSize(Draw_Registro[playerid][4], 0.500000, 3.000000);
TextDrawColor(Draw_Registro[playerid][4], -1);
TextDrawSetOutline(Draw_Registro[playerid][4], 0);
TextDrawSetProportional(Draw_Registro[playerid][4], 1);
TextDrawSetShadow(Draw_Registro[playerid][4], 1);
TextDrawUseBox(Draw_Registro[playerid][4], 1);
TextDrawBoxColor(Draw_Registro[playerid][4], 153);
TextDrawTextSize(Draw_Registro[playerid][4], 335.000000, 30.000000);
Draw_Registro[playerid][5] = TextDrawCreate(390.000000, 146.000000, "New Textdraw");
TextDrawBackgroundColor(Draw_Registro[playerid][5], 255);
TextDrawFont(Draw_Registro[playerid][5], 5);
TextDrawLetterSize(Draw_Registro[playerid][5], 0.600000, -5.099998);
TextDrawColor(Draw_Registro[playerid][5], -1);
TextDrawSetOutline(Draw_Registro[playerid][5], 0);
TextDrawSetProportional(Draw_Registro[playerid][5], 1);
TextDrawSetShadow(Draw_Registro[playerid][5], 1);
TextDrawUseBox(Draw_Registro[playerid][5], 1);
TextDrawBoxColor(Draw_Registro[playerid][5], 255);
TextDrawTextSize(Draw_Registro[playerid][5], 105.000000, 145.000000);
TextDrawSetPreviewModel(Draw_Registro[playerid][5], SKIN_INICIAL);
TextDrawSetPreviewRot(Draw_Registro[playerid][5], -16.000000, 0.000000, -55.000000, 1.000000);
Draw_Registro[playerid][6] = TextDrawCreate(139.000000, 310.000000, "~r~Por favor preencha todos os dados !");
TextDrawBackgroundColor(Draw_Registro[playerid][6], 255);
TextDrawFont(Draw_Registro[playerid][6], 2);
TextDrawLetterSize(Draw_Registro[playerid][6], 0.270000, 1.300000);
TextDrawColor(Draw_Registro[playerid][6], -1);
TextDrawSetOutline(Draw_Registro[playerid][6], 1);
TextDrawSetProportional(Draw_Registro[playerid][6], 1);
// ==== TextDraw Login
Draw_Login[playerid][0] = TextDrawCreate(211.000000, 110.000000, "Ola, sua conta ja esta registrada.");
TextDrawBackgroundColor(Draw_Login[playerid][0], 255);
TextDrawFont(Draw_Login[playerid][0], 2);
TextDrawLetterSize(Draw_Login[playerid][0], 0.219999, 1.899999);
TextDrawColor(Draw_Login[playerid][0], 255);
TextDrawSetOutline(Draw_Login[playerid][0], 0);
TextDrawSetProportional(Draw_Login[playerid][0], 1);
TextDrawSetShadow(Draw_Login[playerid][0], 0);
Draw_Login[playerid][1] = TextDrawCreate(385.000000, 310.000000, " Logar");
TextDrawBackgroundColor(Draw_Login[playerid][1], 255);
TextDrawFont(Draw_Login[playerid][1], 2);
TextDrawLetterSize(Draw_Login[playerid][1], 0.209999, 1.600000);
TextDrawColor(Draw_Login[playerid][1], -1);
TextDrawSetOutline(Draw_Login[playerid][1], 0);
TextDrawSetProportional(Draw_Login[playerid][1], 1);
TextDrawSetShadow(Draw_Login[playerid][1], 1);
TextDrawUseBox(Draw_Login[playerid][1], 1);
TextDrawBoxColor(Draw_Login[playerid][1], 153);
TextDrawTextSize(Draw_Login[playerid][1], 437.000000, 10.000000);
Draw_Login[playerid][2] = TextDrawCreate(170.000000, 144.000000, " Senha");
TextDrawBackgroundColor(Draw_Login[playerid][2], 255);
TextDrawFont(Draw_Login[playerid][2], 2);
TextDrawLetterSize(Draw_Login[playerid][2], 0.500000, 3.000000);
TextDrawColor(Draw_Login[playerid][2], -1);
TextDrawSetOutline(Draw_Login[playerid][2], 0);
TextDrawSetProportional(Draw_Login[playerid][2], 1);
TextDrawSetShadow(Draw_Login[playerid][2], 1);
TextDrawUseBox(Draw_Login[playerid][2], 1);
TextDrawBoxColor(Draw_Login[playerid][2], 153);
TextDrawTextSize(Draw_Login[playerid][2], 335.000000, 30.000000);
Draw_Login[playerid][3] = TextDrawCreate(170.000000, 206.000000, " Forum");
TextDrawBackgroundColor(Draw_Login[playerid][3], 255);
TextDrawFont(Draw_Login[playerid][3], 2);
TextDrawLetterSize(Draw_Login[playerid][3], 0.500000, 3.000000);
TextDrawColor(Draw_Login[playerid][3], -1);
TextDrawSetOutline(Draw_Login[playerid][3], 0);
TextDrawSetProportional(Draw_Login[playerid][3], 1);
TextDrawSetShadow(Draw_Login[playerid][3], 1);
TextDrawUseBox(Draw_Login[playerid][3], 1);
TextDrawBoxColor(Draw_Login[playerid][3], 153);
TextDrawTextSize(Draw_Login[playerid][3], 335.000000, 30.000000);
Draw_Login[playerid][4] = TextDrawCreate(170.000000, 267.000000, " WhatsApp");
TextDrawBackgroundColor(Draw_Login[playerid][4], 255);
TextDrawFont(Draw_Login[playerid][4], 2);
TextDrawLetterSize(Draw_Login[playerid][4], 0.500000, 3.000000);
TextDrawColor(Draw_Login[playerid][4], -1);
TextDrawSetOutline(Draw_Login[playerid][4], 0);
TextDrawSetProportional(Draw_Login[playerid][4], 1);
TextDrawSetShadow(Draw_Login[playerid][4], 1);
TextDrawUseBox(Draw_Login[playerid][4], 1);
TextDrawBoxColor(Draw_Login[playerid][4], 153);
TextDrawTextSize(Draw_Login[playerid][4], 335.000000, 30.000000);
Draw_Login[playerid][5] = TextDrawCreate(390.000000, 146.000000, "New Textdraw");
TextDrawBackgroundColor(Draw_Login[playerid][5], 255);
TextDrawFont(Draw_Login[playerid][5], 5);
TextDrawLetterSize(Draw_Login[playerid][5], 0.600000, -5.099998);
TextDrawColor(Draw_Login[playerid][5], -1);
TextDrawSetOutline(Draw_Login[playerid][5], 0);
TextDrawSetProportional(Draw_Login[playerid][5], 1);
TextDrawSetShadow(Draw_Login[playerid][5], 1);
TextDrawUseBox(Draw_Login[playerid][5], 1);
TextDrawBoxColor(Draw_Login[playerid][5], 255);
TextDrawTextSize(Draw_Login[playerid][5], 105.000000, 145.000000);
TextDrawSetPreviewModel(Draw_Login[playerid][5], SKIN_USADA);
TextDrawSetPreviewRot(Draw_Login[playerid][5], -16.000000, 0.000000, -55.000000, 1.000000);
Draw_Login[playerid][6] = TextDrawCreate(139.000000, 310.000000, "~r~Por favor coloque sua senha !");
TextDrawBackgroundColor(Draw_Login[playerid][6], 255);
TextDrawFont(Draw_Login[playerid][6], 2);
TextDrawLetterSize(Draw_Login[playerid][6], 0.270000, 1.300000);
TextDrawColor(Draw_Login[playerid][6], -1);
TextDrawSetOutline(Draw_Login[playerid][6], 1);
TextDrawSetProportional(Draw_Login[playerid][6], 1);
TextDrawSetSelectable(Text:Draw_Fundo[playerid][7], true);
TextDrawSetSelectable(Text:Draw_Registro[playerid][1], true);
TextDrawSetSelectable(Text:Draw_Registro[playerid][2], true);
TextDrawSetSelectable(Text:Draw_Registro[playerid][3], true);
TextDrawSetSelectable(Text:Draw_Registro[playerid][4], true);
TextDrawSetSelectable(Text:Draw_Login[playerid][1], true);
TextDrawSetSelectable(Text:Draw_Login[playerid][2], true);
TextDrawSetSelectable(Text:Draw_Login[playerid][3], true);
TextDrawSetSelectable(Text:Draw_Login[playerid][4], true);
return 1;
}
stock TirarTextDraw(playerid)
{
TextDrawHideForPlayer(playerid, Draw_Registro[playerid][0]);
TextDrawHideForPlayer(playerid, Draw_Registro[playerid][1]);
TextDrawHideForPlayer(playerid, Draw_Registro[playerid][2]);
TextDrawHideForPlayer(playerid, Draw_Registro[playerid][3]);
TextDrawHideForPlayer(playerid, Draw_Registro[playerid][4]);
TextDrawHideForPlayer(playerid, Draw_Registro[playerid][5]);
TextDrawHideForPlayer(playerid, Draw_Registro[playerid][6]);
TextDrawHideForPlayer(playerid, Draw_Login[playerid][0]);
TextDrawHideForPlayer(playerid, Draw_Login[playerid][1]);
TextDrawHideForPlayer(playerid, Draw_Login[playerid][2]);
TextDrawHideForPlayer(playerid, Draw_Login[playerid][3]);
TextDrawHideForPlayer(playerid, Draw_Login[playerid][4]);
TextDrawHideForPlayer(playerid, Draw_Login[playerid][5]);
TextDrawHideForPlayer(playerid, Draw_Login[playerid][6]);
TextDrawHideForPlayer(playerid, Draw_Fundo[playerid][0]);
TextDrawHideForPlayer(playerid, Draw_Fundo[playerid][1]);
TextDrawHideForPlayer(playerid, Draw_Fundo[playerid][2]);
TextDrawHideForPlayer(playerid, Draw_Fundo[playerid][3]);
TextDrawHideForPlayer(playerid, Draw_Fundo[playerid][4]);
TextDrawHideForPlayer(playerid, Draw_Fundo[playerid][5]);
TextDrawHideForPlayer(playerid, Draw_Fundo[playerid][6]);
TextDrawHideForPlayer(playerid, Draw_Fundo[playerid][7]);
return 1;
}
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
// === Draw registro
if(clickedid == Draw_Registro[playerid][2]) ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Digite uma senha:", "Digite uma senha abaixo para registrar-se.\n\nObs: Ela deve conter no mínimo 4 e no máximo 16 caracteres.", "Registrar", "Voltar");
if(clickedid == Draw_Registro[playerid][3]) ShowPlayerDialog(playerid, DIALOG_SEXO, DIALOG_STYLE_MSGBOX, "Escolha seu sexo:", "Escolhe seu sexo clicando nos botões abaixo.", "Masculino", "Feminino");
if(clickedid == Draw_Registro[playerid][4]) ShowPlayerDialog(playerid, DIALOG_IDADE, DIALOG_STYLE_INPUT, "Digite sua idade", "Digite a idade do seu personagem abaixo.\n\nObs: Mínimo 10 e máximo 100 anos.", "Registrar", "Voltar");
if(clickedid == Draw_Fundo[playerid][7]) Kick(playerid); //box canxelar
if(clickedid == Draw_Registro[playerid][1]) // Registrar
{
if(DigitouSenha[playerid] == 1 && DigitouSexo[playerid] == 1 && DigitouIdade[playerid] == 1)
{
TirarTextDraw(playerid);
DigitouSenha[playerid] = 0;
DigitouSexo[playerid] = 0;
DigitouIdade[playerid] = 0;
PlayerInfo[playerid][Level] = LEVEL_INICIAL;
PlayerInfo[playerid][Skin] = SKIN_INICIAL;
PlayerInfo[playerid][Dinheiro] = DINHEIRO_INICIAL;
PlayerInfo[playerid][Pos][0] = POSX_INICIAL;
PlayerInfo[playerid][Pos][1] = POSY_INICIAL;
PlayerInfo[playerid][Pos][2] = POSZ_INICIAL;
SendClientMessage(playerid, -1, "Sua conta foi registrada com sucesso!");
CarregarDados(playerid);
} else {
TextDrawShowForPlayer(playerid, Draw_Registro[playerid][6]); // mensagem de erro preencha todos os dados
}
}
// === TextDraw Login
if(clickedid == Draw_Login[playerid][2]) ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Você já é um player registrado, digite uma senha abaixo para logar-se", "Logar", "Voltar");
if(clickedid == Draw_Login[playerid][1]) // LOGIN
{
if(DigitouLogin[playerid] == 1)
{
new Query[70];
mysql_format(Conexao, Query, sizeof(Query), "SELECT * FROM usuarios WHERE Nome='%s'", Nome(playerid));
mysql_tquery(Conexao, Query, "Mysql_Carregar", "d", playerid);
DigitouLogin[playerid] = 0;
} else {
TextDrawShowForPlayer(playerid, Draw_Login[playerid][6]); // mensagem de erro, esqueceu de digitar senha
}
}
if(clickedid == Draw_Login[playerid][4]) // WhatsApp
{
if(ClicouWhats[playerid] == 0)
{
TextDrawSetString(Draw_Login[playerid][4], WHATSAPP);
ClicouWhats[playerid] = 1;
} else if(ClicouWhats[playerid] == 1){
TextDrawSetString(Draw_Login[playerid][4], "WhatsApp");
ClicouWhats[playerid] = 0;
}
}
if(clickedid == Draw_Login[playerid][3]) // Forum
{
if(ClicouForum[playerid] == 0)
{
TextDrawSetString(Draw_Login[playerid][3], FORUM);
ClicouForum[playerid] = 1;
} else if(ClicouForum[playerid] == 1){
TextDrawSetString(Draw_Login[playerid][3], "Forum");
ClicouForum[playerid] = 0;
}
}
return 1;
}
CMD:trocarsenha(playerid)
{
ShowPlayerDialog(playerid, DIALOG_SENHA, DIALOG_STYLE_PASSWORD, "Digite uma senha:", "Digite sua nova senha abaixo\n\nObs: Ela deve conter no mínimo 4 e no máximo 16 caracteres.", "Trocar", "Voltar");
return 1;
}
CMD:trocarnick(playerid)
{
ShowPlayerDialog(playerid, DIALOG_NICK, DIALOG_STYLE_PASSWORD, "Digite um novo nick:", "Digite seu novo nick abaixo\n\nObs: Ele deve conter no máximo 25 caracteres.", "Trocar", "Voltar");
return 1;
}