09.05.2013, 13:47
(
Последний раз редактировалось Lуs; 09.05.2013 в 14:48.
)
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
Esse й o bбsico de qualquer script escrito em Pawn. Ele inclui a livraria do SA:MP no script.
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.
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.
Aqui eu estou definindo os IDs dos dialogs.
Aqui eu declarei que as variбveis plr_lvl e plr_exp estгo dentro do enumerator 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.
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.
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.
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:
Й nativa da y_users, nгo precisa ser declarada.
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).
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.
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!
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>
pawn Код:
#define PP_YSI
MD5_Hash - Criptografa a senha usando MD5.
PP_WP ou PP_WHIRLPOOL - Utiliza Whirlpool para criptografia.
pawn Код:
#define MODE_NAME y_users
pawn Код:
#define Register 1
#define Login 2
pawn Код:
enum E_DATA
{
plr_lvl,
plr_exp
}
pawn Код:
uvar player_data[MAX_PLAYERS][E_DATA];
OBS.: y_users e y_uvar trabalham juntas, assim como y_text, y_colors e y_lang.
pawn Код:
main ( ) { }
pawn Код:
Langs_AddLanguage ( "PT", "Portuguкs" );
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" );
OBS.: A funзгo:
pawn Код:
Player_IsRegistered ( playerid )
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 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 ] ++;
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;
}
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!