[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
#2

Otimo trabalho Lуs.

Y_ini muito bom. Comecei a usar este mes no meu gm atual PlayZone DM e aprovo. Um dos melhores salvamentos. Alem disso a YSI toda й incrivel.
Reply
#3

Gostei do GM, mбs isso estб mais pra tutorial, embora nгo tenha comentбrios. Acho que se vocк fizesse realmente em forma de tutorial iria ser mais construtivo.

Preguiзosos irгo amar esse Y_Users. Nunca precisei da livraria YSI, mas a admiro bastante por ser muito completa. Agora acho ridнculo querer usa-la em tudo, como muitos do forum ficam se achando por saber usa-la...
Reply
#4

Quote:
Originally Posted by xRaZeR
Посмотреть сообщение
Otimo trabalho Lуs.

Y_ini muito bom. Comecei a usar este mes no meu gm atual PlayZone DM e aprovo. Um dos melhores salvamentos. Alem disso a YSI toda й incrivel.
Obrigado

Quote:
Originally Posted by Kuddy
Посмотреть сообщение
Gostei do GM, mбs isso estб mais pra tutorial, acho que se vocк fizesse realmente em forma de tutorial iria ser mais construtivo.

Preguiзosos irгo amar esse Y_Users. Nunca precisei da livraria YSI, mas a admiro bastante por ser muito completa.
Na verdade eu iria efetuar release como tutorial, mas eu nгo sabia exatamente o que falar, pois й algo muito simples, mesmo assim vou fazer um tutorial dentro desse tуpico

Quote:
Originally Posted by Kuddy
Посмотреть сообщение
Agora acho ridнculo querer usa-la em tudo, como muitos do forum ficam se achando por saber usa-la...
Eu costumo usar o bбsico da YSI (y_cmd, y_ini, y_users, y_uvar, y_va, y_iterate), conforme vou precisando vou aprendendo a usar outras.

Estou 100% de acordo com vocк.
Reply
#5

Quote:
Originally Posted by Lуs
Посмотреть сообщение
Obrigado



Na verdade eu iria efetuar release como tutorial, mas eu nгo sabia exatamente o que falar, pois й algo muito simples, mesmo assim vou fazer um tutorial dentro desse tуpico



Eu costumo usar o bбsico da YSI (y_cmd, y_ini, y_users, y_uvar, y_va, y_iterate), conforme vou precisando vou aprendendo a usar outras.

Estou 100% de acordo com vocк.
Confesso q so usei a ycmd e yini.
Reply
#6

Tutorial feito, atualizei o tуpico
Reply
#7

Bom tutorial LoS
Reply
#8

Ainda prefiro o MySQL -q rep++
Reply
#9

Muito bom tutorial,

Mas ainda prefiro o DOF2 e MySQL :/


Reputado
Reply
#10

Muito bem explicado.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)