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

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 Код:
#include <a_samp>
Esse й o bбsico de qualquer script escrito em Pawn. Ele inclui a livraria do SA:MP no script.

pawn Код:
#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 Код:
#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 Код:
#define         Register        1
#define         Login           2
Aqui eu estou definindo os IDs dos dialogs.

pawn Код:
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 Код:
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 Код:
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 Код:
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 Код:
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 Код:
Player_IsRegistered ( playerid )
Й nativa da y_users, nгo precisa ser declarada.

pawn Код:
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 Код:
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 Код:
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.

Downloads
Gamemode
YSI

Abraзos!
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)