Sistema de level UP
#1

eu vim aqui pra falar sobre um sistema de level que achei e queria colocar ele pra salvar os leveis quando o player sai e entra novamente do server, sera que tem como alguem me ajudar por favor ?
Reply
#2

Pega um sist de registro e login simples e estuda
Reply
#3

eu ja fiz isso o dia inteiro e nгo estou conseguindo. eu nunca mexi com sistema de level й a primeira vez.

se puder me ajudr ao maximo nisso ficarei agradeзido
Reply
#4

[b]Vou procurar algo... Tambйm nгo entendo... =)
Reply
#5

eu so quero que os level sejam salvos e nгo perdidos depois de ganhos, mas nгo estou conseguindo fazer isto.

presciso da ajuda de vcs
Reply
#6

Cara Voce Pode usar o PDG й um muito bom Sistema MySql porйm Potugues




Cria Uma New
Код:
new Level[MAX_PLAYERS];
Agora uma Forward
Quote:

forward GanharLevel(playerid);

Agora Coloca as Funcoes do Forward/New
Quote:

public GanharLevel(playerid)
{
if(Level[playerid] < 100) //caso o level do player for menor que 100 ele ganha 1 level
{
Level[playerid]++;
}
if(Level[playerid] == 100) //se o level do player chegar a 100 ele para de ganhar level
{
SendClientMessage(playerid, COR, "Vocк chegou ao level mбximo(100)!");
}// chave para fexar o if
return 1;
}//chave para fexar o public

No OndeGameModeInit
Quote:

SetTimer("GanharLevel",1200000, true); //a cada 20 minutos o gamemode vai chamar a funзгo GanharLevel, assim fazendo o player ganhar um level a cada 20 minutos

Enquanto ao salvar Voce Pode Baixar o PGD (Protioso Gerenciamento de Dados)
http://forum.sa-mp.com/index.php?topic=132831.0

E usar :
Quote:

pgd_CriarArquivo(nome_arquivo[]);



Tuto Retirado do Cronos
http://cronosbr.blogspot.com/2008/08...l-simples.html


Reply
#7

eu tenho dois sistemas de registro aqui comigo, so que eles estгo em fs e o sistema de level que tenho esta no meu gm.

uma pergunta que tenho a fazer.

o sistema de level tem que estar dentro do sistema de registro ou vice versa?

mas o unico problema que estou tendo й de salvar os level, que nгo estгo sendo salvos.

ja tentei colocar o sistema de level dentro de um fs de registro que uso que й de includes "PGD" E "PAP" , mas so que sempre que tento colocalos juntos nгo compila
Reply
#8

Tente Colocar denovo entгo se nao compilar mostra os Erros para nуs ver...
Reply
#9

O sistema de registro que uso й esse !


#include "PAP"

#define DIALOGO_REGISTRO 1
#define DIALOGO_LOGIN 2

#define vermelho 0xFF0000FF
#define verde 0x00CC00AA

enum j_info
{
j_Skin,
j_Matou,
j_Morreu,
bool:j_Logado,
Float:j_pos[4], // X, Y, Z e вngulo.
};

new JogadorInfo[MAX_PLAYERS][j_info];

/*
Lembre-se de que if(JogadorInfo[playerid][j_Logado]) й a mesma coisa de if(JogadorInfo[playerid][j_Logado] == 1)
e que if(!JogadorInfo[playerid][j_Logado]) й a mesma coisa de if(JogadorInfo[playerid][j_Logado] == 0)
*/

public OnFilterScriptExit()
{
for(new i; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SalvarDadosJogador(i);
return 1;
}

public OnPlayerConnect(playerid)
{
if(!pap_JogadorRegistrado(playerid))
{
ShowPlayerDialog(playerid, DIALOGO_REGISTRO, DIALOG_STYLE_INPUT, "Registrando nova conta", " Digite uma senha para criar sua conta.", "Cancelar", "Logar");
// SendClientMessage(playerid, vermelho, "Nгo possui conta, use /registrar <senha>");
}
else
{
ShowPlayerDialog(playerid, DIALOGO_LOGIN, DIALOG_STYLE_INPUT, "Logando em sua conta", " Digite sua senha.", "Cancelar", "Logar");
// SendClientMessage(playerid, verde, "Possui conta, use /logar <senha>");
}
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
if(JogadorInfo[playerid][j_Logado]) // Se o jogador estб logado, seus dados serгo salvos...
{
SalvarDadosJogador(playerid);
JogadorInfo[playerid][j_Logado] = false; // Indica que o jogador deixou de ficar "logado".
}
return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
if(JogadorInfo[playerid][j_Logado]) // Se o jogador estб logado...
{
if(killerid != INVALID_PLAYER_ID) JogadorInfo[killerid][j_Matou]++; // Se o jogador foi morto por alguйm, esse alguйm terб mais 'j_Matou'
JogadorInfo[playerid][j_Morreu]++;
}
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOGO_REGISTRO)
{
if(response) return 0; // Se o jogador clicar em 'cancelar'
if(!strlen(inputtext))
{
SendClientMessage(playerid, vermelho, "Digite uma senha!");
ShowPlayerDialog(playerid, DIALOGO_REGISTRO, DIALOG_STYLE_INPUT, "Registrando nova conta", " Digite uma senha para criar sua conta.", "Cancelar", "Logar");
return 0;
}
if(strlen(inputtext) > 64)
{
SendClientMessage(playerid, vermelho, "Senha muito grande! Use no mбximo 64 caracteres.");
ShowPlayerDialog(playerid, DIALOGO_REGISTRO, DIALOG_STYLE_INPUT, "Registrando nova conta", " Digite uma senha para criar sua conta.", "Cancelar", "Logar");
return 0;
}
new senha[MAX_PCOD_CHAR];
psf_CopiarStr(senha, inputtext); // Copiando a senha que o jogador digitou (de inputtext) para a variбvel 'senha'
if(pap_IniciarConta(playerid, senha)) // Certo, a funзгo pap_IniciarConta retornou a 1, sendo assim podemos salvar os dados que queremos, jб que a conta foi iniciada!
{
new
dinheiro,
ip[18],
Float:jx,
Float:jy,
Float:jz,
Float:ja;

JogadorInfo[playerid][j_Skin] = GetPlayerSkin(playerid); // Pega a skin que o jogador possui ao registrar
dinheiro = GetPlayerMoney(playerid); // Pega o dinheiro que o jogador possui ao registrar
GetPlayerIp(playerid, ip, sizeof(ip));
GetPlayerPos(playerid, jx, jy, jz); // Pega a posiзгo que o jogador estб ao registrar
GetPlayerFacingAngle(playerid, ja);

pap_SalvarInt(playerid, "Skin", JogadorInfo[playerid][j_Skin]);
pap_SalvarInt(playerid, "Dinheiro", dinheiro);
pap_SalvarInt(playerid, "Matou", 0);
pap_SalvarInt(playerid, "Morreu", 0);
pap_SalvarFloat(playerid, "X", jx);
pap_SalvarFloat(playerid, "Y", jy);
pap_SalvarFloat(playerid, "Z", jz);
pap_SalvarFloat(playerid, "Ang", ja);
pap_SalvarStr(playerid, "IP", ip);
new str[128];
format(str, sizeof(str), "Conta criada. Senha: %s", senha);
SendClientMessage(playerid, verde, str);
JogadorInfo[playerid][j_Logado] = true;
}
return 1;
}
else if(dialogid == DIALOGO_LOGIN)
{
if(response) return 0; // Se o jogador clicar em 'cancelar'
if(!strlen(inputtext))
{
SendClientMessage(playerid, vermelho, "Digite sua senha!");
ShowPlayerDialog(playerid, DIALOGO_LOGIN, DIALOG_STYLE_INPUT, "Logando em sua conta", " Digite sua senha.", "Cancelar", "Logar");
return 0;
}
if(strlen(inputtext) > 64)
{
SendClientMessage(playerid, vermelho, "Senha muito grande! Use no mбximo 64 caracteres.");
ShowPlayerDialog(playerid, DIALOGO_LOGIN, DIALOG_STYLE_INPUT, "Logando em sua conta", " Digite sua senha.", "Cancelar", "Logar");
return 0;
}
new senha[MAX_PCOD_CHAR];
psf_CopiarStr(senha, inputtext); // Copiando a senha que o jogador digitou (de inputtext) para a variбvel 'senha'
if(pap_VerificarSenha(playerid, senha))
{
new dinheiro = pap_CarregarInt(playerid, "Dinheiro");
JogadorInfo[playerid][j_Skin] = pap_CarregarInt(playerid, "Skin");
JogadorInfo[playerid][j_Matou] = pap_CarregarInt(playerid, "Matou");
JogadorInfo[playerid][j_Morreu] = pap_CarregarInt(playerid, "Morreu");
JogadorInfo[playerid][j_pos][0] = pap_CarregarFloat(playerid, "X");
JogadorInfo[playerid][j_pos][1] = pap_CarregarFloat(playerid, "Y");
JogadorInfo[playerid][j_pos][2] = pap_CarregarFloat(playerid, "Z");
JogadorInfo[playerid][j_pos][3] = pap_CarregarFloat(playerid, "Ang");
GivePlayerMoney(playerid, dinheiro);
SetPlayerPos(playerid, JogadorInfo[playerid][j_pos][0], JogadorInfo[playerid][j_pos][1], JogadorInfo[playerid][j_pos][2]); // Serб teleportado para o ъltimo lugar salvo
SetPlayerFacingAngle(playerid, JogadorInfo[playerid][j_pos][3]);
SendClientMessage(playerid, verde, "Logado!");
JogadorInfo[playerid][j_Logado] = true;
}
else
{
SendClientMessage(playerid, vermelho, "Senha errada!");
ShowPlayerDialog(playerid, DIALOGO_LOGIN, DIALOG_STYLE_INPUT, "Logando em sua conta", " Digite sua senha.", "Cancelar", "Logar");
}
}
return 0;
}

public OnPlayerCommandText(playerid, cmdtext[])
{

new
idx,
tmp[256];

tmp = psf_strtok(cmdtext, idx);

if(!strcmp(tmp, "/papcomandos", true))
{
SendClientMessage(playerid, verde, "PAP Teste FS - Comandos");
SendClientMessage(playerid, verde, "/registrar - /logar");
// SendClientMessage(playerid, verde, "/registrar <senha> - /logar <senha>");
SendClientMessage(playerid, verde, "/mudarsenha <nova_senha> - /mudarmeunome <novo_nome>");
SendClientMessage(playerid, verde, "/salvarmeusdados - /salvartextoqualquer <chave> <o_que_quer_salvar>");
SendClientMessage(playerid, verde, "/lerdados <chave>");
return 1;
}

if(!strcmp(tmp, "/registrar", true))
{
if(pap_JogadorRegistrado(playerid)) return SendClientMessage(playerid, vermelho, "Jб estб registrado!");
if(JogadorInfo[playerid][j_Logado]) return SendClientMessage(playerid, vermelho, "Jб estб logado!");
else
{
ShowPlayerDialog(playerid, DIALOGO_REGISTRO, DIALOG_STYLE_INPUT, "Registrando nova conta", " Digite uma senha para criar sua conta.", "Cancelar", "Logar");
}
return 1;
}

/* if(!strcmp(tmp, "/registrar", true))
{
if(pap_JogadorRegistrado(playerid)) return SendClientMessage(playerid, vermelho, "Jб estб registrado!");
if(JogadorInfo[playerid][j_Logado]) return SendClientMessage(playerid, vermelho, "Jб estб logado!");
else
{
tmp = psf_strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, vermelho, "/registrar <senha>");
if(pap_IniciarConta(playerid, tmp)) // Certo, a funзгo pap_IniciarConta retornou a 1, sendo assim podemos salvar os dados que queremos, jб que a conta foi iniciada!
{
new
dinheiro,
ip[18],
Float:jx,
Float:jy,
Float:jz,
Float:ja;

JogadorInfo[playerid][j_Skin] = GetPlayerSkin(playerid);
dinheiro = GetPlayerMoney(playerid);
GetPlayerIp(playerid, ip, sizeof(ip));
GetPlayerPos(playerid, jx, jy, jz);
GetPlayerFacingAngle(playerid, ja);

pap_SalvarInt(playerid, "Skin", JogadorInfo[playerid][j_Skin]);
pap_SalvarInt(playerid, "Dinheiro", dinheiro);
pap_SalvarInt(playerid, "Matou", 0);
pap_SalvarInt(playerid, "Morreu", 0);
pap_SalvarFloat(playerid, "X", jx);
pap_SalvarFloat(playerid, "Y", jy);
pap_SalvarFloat(playerid, "Z", jz);
pap_SalvarFloat(playerid, "Ang", ja);
pap_SalvarStr(playerid, "IP", ip);
new str[128];
format(str, sizeof(str), "Conta criada. Senha: %s", tmp);
SendClientMessage(playerid, verde, str);
JogadorInfo[playerid][j_Logado] = true;
}
}
return 1;
}
*/
if(!strcmp(tmp, "/logar", true))
{
if(!pap_JogadorRegistrado(playerid)) return SendClientMessage(playerid, vermelho, "Nгo estб registrado!");
if(JogadorInfo[playerid][j_Logado]) return SendClientMessage(playerid, vermelho, "Jб estб logado!");
ShowPlayerDialog(playerid, DIALOGO_LOGIN, DIALOG_STYLE_INPUT, "Logando em sua conta", " Digite sua senha.", "Cancelar", "Logar");
return 1;
}


/*
if(!strcmp(tmp, "/logar", true))
{
if(!pap_JogadorRegistrado(playerid)) return SendClientMessage(playerid, vermelho, "Nгo estб registrado!");
if(JogadorInfo[playerid][j_Logado]) return SendClientMessage(playerid, vermelho, "Jб estб logado!");
tmp = psf_strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, vermelho, "/logar <senha>");
if(pap_VerificarSenha(playerid, tmp))
{
new dinheiro = pap_CarregarInt(playerid, "Dinheiro");
JogadorInfo[playerid][j_Skin] = pap_CarregarInt(playerid, "Skin");
JogadorInfo[playerid][j_Matou] = pap_CarregarInt(playerid, "Matou");
JogadorInfo[playerid][j_Morreu] = pap_CarregarInt(playerid, "Morreu");
JogadorInfo[playerid][j_pos][0] = pap_CarregarFloat(playerid, "X");
JogadorInfo[playerid][j_pos][1] = pap_CarregarFloat(playerid, "Y");
JogadorInfo[playerid][j_pos][2] = pap_CarregarFloat(playerid, "Z");
JogadorInfo[playerid][j_pos][3] = pap_CarregarFloat(playerid, "Ang");
GivePlayerMoney(playerid, dinheiro);
SetPlayerPos(playerid, JogadorInfo[playerid][j_pos][0], JogadorInfo[playerid][j_pos][1], JogadorInfo[playerid][j_pos][2]); // Serб teleportado para o ъltimo lugar salvo
SetPlayerFacingAngle(playerid, JogadorInfo[playerid][j_pos][3]);
SendClientMessage(playerid, verde, "Logado!");
JogadorInfo[playerid][j_Logado] = true;
}
else SendClientMessage(playerid, vermelho, "Senha errada!");
return 1;
}
*/

if(!strcmp(tmp, "/mudarsenha", true))
{
if(!pap_JogadorRegistrado(playerid)) return SendClientMessage(playerid, vermelho, "Nгo tem registro!");
if(!JogadorInfo[playerid][j_Logado]) return SendClientMessage(playerid, vermelho, "Nгo estб logado!");
tmp = psf_strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, vermelho, "/mudarsenha <nova_senha>");
pap_MudarSenha(playerid, tmp);
SendClientMessage(playerid, verde, "Senha alterada");
return 1;
}

if(!strcmp(tmp, "/mudarmeunome", true))
{
if(!pap_JogadorRegistrado(playerid)) return SendClientMessage(playerid, vermelho, "Nгo tem registro!");
if(!JogadorInfo[playerid][j_Logado]) return SendClientMessage(playerid, vermelho, "Nгo estб logado!");
tmp = psf_strtok(cmdtext, idx);
if(!strlen(tmp) || strlen(tmp) > MAX_PLAYER_NAME) return SendClientMessage(playerid, vermelho, "/mudarmeunome <novo_nome> (OBS.: nгo ultrapase o limite de caracteres do nome)");
new nome_arquivo_anterior[64];
nome_arquivo_anterior = pap_ArquivoJogador(playerid);
pap_MudarNomeArquivoJogador(nome_arquivo_anterior, tmp);
SetPlayerName(playerid, tmp);
SendClientMessage(playerid, verde, "Nome alterado.");
return 1;
}

if(!strcmp(tmp, "/salvarmeusdados", true))
{
if(!pap_JogadorRegistrado(playerid)) return SendClientMessage(playerid, vermelho, "Nгo tem registro!");
if(!JogadorInfo[playerid][j_Logado]) return SendClientMessage(playerid, vermelho, "Nгo estб logado!");
SalvarDadosJogador(playerid);
SendClientMessage(playerid, verde, "Seus dados foram salvos!");
return 1;
}

if(!strcmp(tmp, "/salvartextoqualquer", true))
{
if(!pap_JogadorRegistrado(playerid)) return SendClientMessage(playerid, vermelho, "Nгo tem registro!");
if(!JogadorInfo[playerid][j_Logado]) return SendClientMessage(playerid, vermelho, "Nгo estб logado!");
new
str[128],
chave[MAX_psf_strtok],
texto[MAX_psf_strtok];

chave = psf_strtok(cmdtext, idx);
if(!strlen(chave)) return SendClientMessage(playerid, vermelho, "/salvartextoqualquer <chave> <o_que_quer_salvar>");

texto = psf_strtok(cmdtext, idx);
if(!strlen(texto)) return SendClientMessage(playerid, vermelho, "/salvartextoqualquer <chave> <o_que_quer_salvar>");
pap_SalvarStr(playerid, chave, texto);
format(str, sizeof(str), "'%s' salvo na chave '%s' do arquivo de sua conta.", texto, chave);
SendClientMessage(playerid, verde, str);
format(str, sizeof(str), "Digite /verdados %s, para ler, do arquivo, o que vocк salvou", chave);
SendClientMessage(playerid, verde, str);
return 1;
}

if(!strcmp(tmp, "/lerdados", true))
{
if(!pap_JogadorRegistrado(playerid)) return SendClientMessage(playerid, vermelho, "Nгo tem registro!");
if(!JogadorInfo[playerid][j_Logado]) return SendClientMessage(playerid, vermelho, "Nгo estб logado!");
new
str[128],
chave[MAX_psf_strtok];
chave = psf_strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, vermelho, "/lerdados <chave>");
new valorsalvo[256];
valorsalvo = pap_CarregarStr(playerid, chave);
format(str, sizeof(str), "Valor: %s", valorsalvo);
SendClientMessage(playerid, verde, str);
return 1;
}

return 0;
}

stock SalvarDadosJogador(playerid) // Note que as funзхes sгo muito semelhantes com as do comando /registrar, pois possuem o mesmo objetivo: salvar dados.
{
new
dinheiro,
ip[18],
Float:jx,
Float:jy,
Float:jz,
Float:ja;

JogadorInfo[playerid][j_Skin] = GetPlayerSkin(playerid);
dinheiro = GetPlayerMoney(playerid);
GetPlayerIp(playerid, ip, sizeof(ip));
GetPlayerPos(playerid, jx, jy, jz);
GetPlayerFacingAngle(playerid, ja);

pap_SalvarInt(playerid, "Skin", JogadorInfo[playerid][j_Skin]);
pap_SalvarInt(playerid, "Dinheiro", dinheiro);
pap_SalvarInt(playerid, "Matou", JogadorInfo[playerid][j_Matou]);
pap_SalvarInt(playerid, "Morreu", JogadorInfo[playerid][j_Morreu]);
pap_SalvarFloat(playerid, "X", jx);
pap_SalvarFloat(playerid, "Y", jy);
pap_SalvarFloat(playerid, "Z", jz);
pap_SalvarFloat(playerid, "Ang", ja);
pap_SalvarStr(playerid, "IP", ip);
}
Reply
#10




Quote:

D:\progamas\Meus arquivos recebidos\RED NOSE\filterscripts\sistema.pwn(5 : error 017: undefined symbol "Level"
D:\progamas\Meus arquivos recebidos\RED NOSE\filterscripts\sistema.pwn(5 : warning 215: expression has no effect
D:\progamas\Meus arquivos recebidos\RED NOSE\filterscripts\sistema.pwn(5 : error 001: expected token: ";", but found "]"
D:\progamas\Meus arquivos recebidos\RED NOSE\filterscripts\sistema.pwn(5 : error 029: invalid expression, assumed zero
D:\progamas\Meus arquivos recebidos\RED NOSE\filterscripts\sistema.pwn(5 : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


4 Errors.

Quote:

58 { pap_SalvarInt(playerid, "level", Level[playerid]);

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)