[GameMode] Registro e login em YSI (y_users, y_uvar)

Esse gamemode é uma base da base, para quem quer aprender YSI, algo bem simples mesm.

Ele salva "XP e level", sendo que você ganha XP a cada jogador que você mata, e a cada 5 pontos de experiência, você ganha um level. É algo simples, somente para vocês verem como funciona.

Tutorial

pawn Code:


#include <a_samp>


Esse é o básico de qualquer script escrito em Pawn. Ele inclui a livraria do SA:MP no script.
pawn Code:


#define  PP_YSI


PP_YSI é o método de criptografia da senha do usuário. PP_YSI é a padrão, além dela existem outras 2.

MD5_Hash - Criptografa a senha usando MD5.
PP_WP ou PP_WHIRLPOOL - Utiliza Whirlpool para criptografia.

pawn Code:


#define  MODE_NAME y_users


A include y_users precisa saber qual gamemode os usuários estão sendo referidos, então ele precisa que você declare o nome do gamemode que está na pasta gamemodes.
pawn Code:


#define         Register        1
#define         Login           2


Aqui eu estou definindo os IDs dos dialogs.
pawn Code:


enum E_DATA
{
        plr_lvl,
        plr_exp
}


Aqui eu declarei que as variáveis plr_lvl e plr_exp estão dentro do enumerator E_DATA.
pawn Code:


uvar player_data[MAX_PLAYERS][E_DATA];


O uvar precisa de um enumerator para trabalhar salvando todas as alterações que são feitas nas variáveis do jogador, e então não precisar de includes de salvamento.

OBS.: y_users e y_uvar trabalham juntas, assim como y_text, y_colors e y_lang.

pawn Code:


main ( ) { }


Esse é o básico de qualquer gamemode, eu não costumo escrever nada dentro do main e ele também é o causador de muitos problemas na inicialização do servidor. TODO e qualquer gamemode deve conter o main.
pawn Code:


Langs_AddLanguage ( "PT", "Português" );


Aqui estou declarando que o servidor irá utilizar a língua portuguesa, você pode adicionar várias línguas ao mesmo tempo. Essa função é usada no y_languages e você pode saber mais sobre ela aqui.
pawn Code:


if ( !Player_IsRegistered ( playerid ) )
    return ShowPlayerDialog ( playerid, Register, DIALOG_STYLE_PASSWORD, "Registro", \
        "Digite uma senha para criar uma nova conta", \
        "Registrar", "Sair" );

else
    return ShowPlayerDialog ( playerid, Login, DIALOG_STYLE_PASSWORD, "Login", \
        "Digite sua senha para logar.", \
        "Logar", "Sair" );


Eu estou checando se o jogador está registrado , caso negativo, eu mostro para o jogador o dialog para efetuar o registro, caso contrário, o de login.

OBS.: A função:

pawn Code:


Player_IsRegistered ( playerid )


É nativa da y_users, não precisa ser declarada.
pawn Code:


case Register:
{
    if ( !response )
            return 1;

    Player_TryRegister ( playerid, inputtext );

    return 1;
}
case Login:
{
    if ( !response )
            return 1;

    Player_TryLogin ( playerid, inputtext );

    return 1;
}


Caso o jogador responda o dialog de registro, o y_users vai tentar registra-lo, caso não consiga, ele irá retornar o erro que ocorreu ao usuário. A mesma coisa para o login, a diferença é que o sistema vai tentar loga-lo e não registra-lo.

Caso o usuário não responda o dialog, ele será fechado (recomendo expulsar o jogador do servidor).

pawn Code:


SendClientMessage ( killerid, -1, "Você ganhou 1xp por matar 1 jogador" );
player_data [ killerid ] [ plr_exp ] ++;


Quando um jogador é assassinado, eu mostrarei a mensagem acima ao assassino (killerid), e aumentarei um valor na variável plr_exp. Lembre-se que y_uvar salva as variáveis assim que são alteradas.
pawn Code:


if ( player_data [ killerid ] [ plr_exp ] == 5 )//Estou checando se o valor da variável plr_exp é igual a 5.
{
    player_data [ killerid ] [ plr_lvl ]++;//Caso for, eu aumento um valor na variável plr_lvl
    player_data [ killerid ] [ plr_exp ] = 0;//E zero a variável plr_exp.

    SendClientMessage ( killerid, -1, "Parabéns, você evoluiu 1 level." );//E então envio uma mensagem ao jogador assassino, avisando que ele aumentou um level.

    return 1;
}


Essa é a parte mais complicada do código eu acho, então preferi fazer por comentários.

OBS.: A variável plr_exp representa a experiência do jogador, já a plr_lvl, representa o level.

É basicamente isto, caso tenha dúvidas é só postar.

Creditos:
Lós - GameMode.
Y_Less - Include.

Downloads
Gamemode
YSI


Espero que gostem! Oficial SAMP

0 comentários:

Postar um comentário

 
▲ Subir