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

6 de jul. de 2013.
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

0 comentários:

Postar um comentário