Oi galera tudo bom? Espero que sim.
Bom vamos começar.
Eu fiz essa minha GM do zero estudando tudo o que a de disponível no fórum e vendo alguns videos no YouTube, mas infelizmente ela tem alguns erros que alguns eu mesmo irei resolver, mas tem um erro que esta me perturbando e que não consigo resolver de jeito nenhum. O erro é no sistema de login/registro, eu mesmo fiz o sistema de login/registro com os meus conhecimentos, abaixo estará os códios para vocês com um nível superior ao meu analisar.
Aqui esta a public "OnDialogResponse"
Aqui está o "GetPlayerArquivo"
Aqui está o "SavePlayer" como mostra na public "OnDialogResponse"
E por ultimo aqui está a public "OnPlayerDisconnect"
O erro nisso tudo, é que quando eu deslogo do servidor e logo novamente, só esta salvo o meu dinheiro em mãos, mas infelizmente não salva a skin, vou colocar o comando /setskin para vocês analisarem.
Um outro problema é quando morre com a skin. Por exemplo, eu coloco no /setskin pra me dar a skin 230 que é a do mendigo, até ai tudo bem, Posso fazer tudo o que estiver disponível no server, mas se eu morrer, eu spawno com a skin de novato(uma skin que eu escolhi pra quando logarem no server), só que tipo eu morro, mas só pra min que a skin de novato aparece, pra outra pessoa que estiver dentro do server, ela ainda vai continuar vendo a skin 230 do mendigo mas eu vou ver a de novato. Se puderem me ajudar nisso também eu agradeço. <3
Já pesquisei em tudo quanto é lugar mas infelizmente não consigo solucionar o problema.
Creio eu que o problema é no comando /setskin, pois eu fiz tudo certinho no resto.
Se alguém puder me ajudar agradeço desde ja. <3
Bom vamos começar.
Eu fiz essa minha GM do zero estudando tudo o que a de disponível no fórum e vendo alguns videos no YouTube, mas infelizmente ela tem alguns erros que alguns eu mesmo irei resolver, mas tem um erro que esta me perturbando e que não consigo resolver de jeito nenhum. O erro é no sistema de login/registro, eu mesmo fiz o sistema de login/registro com os meus conhecimentos, abaixo estará os códios para vocês com um nível superior ao meu analisar.
Aqui esta a public "OnDialogResponse"
Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid){
case DIALOG_REGISTRO:
{
if( response )
{
if( strlen( inputtext ) < 3 || strlen( inputtext ) > 15 || !strlen( inputtext ) )
{
ShowPlayerDialog( playerid, DIALOG_REGISTRO ,DIALOG_STYLE_INPUT, "» SERVER", "{FFFFFF}Sua Senha Deve Conter No Mínimo {F50717}5 {FFFFFF}Caracteres!{F50717}\nTente Novamente!","Registrar","Cancelar" );
return 1;
}
// Criar Arquivo E Colocar Os Valores //
DOF2_CreateFile( GetPlayerArquivo( playerid ) );
DOF2_SetString( GetPlayerArquivo( playerid ),"Senha", inputtext );
DOF2_SetInt( GetPlayerArquivo( playerid ), "Score" ,0 );
DOF2_SetInt( GetPlayerArquivo( playerid ), "Skin" ,0 );
DOF2_SetInt( GetPlayerArquivo( playerid ),"Dinheiro", 1500 );
DOF2_SetInt( GetPlayerArquivo( playerid ), "Admin",0 );
DOF2_SaveFile();
SendClientMessage(playerid, -1, "{16F00E} | INFO | {16F00E}Você se registrou no servidor,tenha um ótimo jogo!.");
new Loginplayer[980];
format(Loginplayer, sizeof(Loginplayer), "\n{00FF00}Sua conta foi registrada.{FFFFFF}\n\nSeja bem vindo(a) ao SERVER\n\n\n{FC8403}Usuário(a): {FFFFFF}%s\n\n\n{FC8403}Status da conta: {00FF00}Registrada\n\n{FFFFFF}Insira sua senha abaixo para logar:",GetPlayerNameEx(playerid));
ShowPlayerDialog( playerid, DIALOG_LOGAR ,DIALOG_STYLE_PASSWORD, "»{F50A0E}Conta", Loginplayer,"Entrar","Cancelar" );
}
else Kick( playerid );
}
case DIALOG_LOGAR:
{
if( response )
{
if( strlen( inputtext ) < 3 || strlen( inputtext ) > 15 || !strlen( inputtext ) )
{
SendClientMessage( playerid, -1, "{F50717} | ERRO | {F50717}Digite Sua Senha Corretamente!." );
new Loginplayer[980];
format(Loginplayer, sizeof(Loginplayer), "\n{FC8403}Usuário(a): {FFFFFF}%s\n\n\n{FC8403}Status da conta: {00FF00}Registrada\n\n{F50A0E}Insira sua senha corretamente!",GetPlayerNameEx(playerid));
ShowPlayerDialog( playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "»{F50A0E}Conta", Loginplayer,"Entrar","Cancelar" );
return 1;
}
if( strcmp( inputtext, DOF2_GetString( GetPlayerArquivo( playerid ), "Senha" )) == 0 )
{
Player[playerid][Skin] = DOF2_GetInt(GetPlayerArquivo(playerid), "Skin");
Player[playerid][Admin] = DOF2_GetInt(GetPlayerArquivo(playerid), "Admin");
Player[playerid][Dinheiro] = DOF2_GetInt(GetPlayerArquivo(playerid), "Dinheiro");
GivePlayerMoney(playerid, Player[playerid][Dinheiro]);
SetPlayerSkin(playerid, Player[playerid][Skin]);
}
else
{
Erro[ playerid ] ++; // Aquivo adiciona + 1 a variavel erro...
if ( Erro[ playerid ] == 3 ){ SavePlayer(playerid); Kick ( playerid ); } // se a variavel chegar a 3, kicka o player pois ele errou 5 vezes a senha.
new Loginplayer[980];
format(Loginplayer, sizeof(Loginplayer), "\n{FC8403}Usuário(a): {FFFFFF}%s\n\n\n{FC8403}Status da conta: {00FF00}Registrada\n\n{F50A0E}Insira sua senha corretamente!",GetPlayerNameEx(playerid));
ShowPlayerDialog( playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "»{F50A0E}Conta", Loginplayer,"Entrar","Cancelar" );
}
}
else{
SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Você exedeu a quantidade de erros, portanto você foi kickado do servidor!");
SavePlayer( playerid );
Kick( playerid );
}
}
}
return 1;
}
Aqui está o "GetPlayerArquivo"
Code:
GetPlayerArquivo(playerid)
{
new ArquivoPlayer[ 30 ];
format( ArquivoPlayer, sizeof( ArquivoPlayer ), "Contas/%s.ini", GetPlayerNameEx( playerid ) );
return ArquivoPlayer;
}
Aqui está o "SavePlayer" como mostra na public "OnDialogResponse"
Code:
SavePlayer(playerid)
{
if( DOF2_FileExists(GetPlayerArquivo(playerid))) DOF2_CreateFile(GetPlayerArquivo(playerid));
{
Player[playerid][Dinheiro] = GetPlayerMoney(playerid);
Player[playerid][Skin] = GetPlayerSkin(playerid);
DOF2_SetInt(GetPlayerArquivo(playerid), "Skin", Player[playerid][Skin]);
DOF2_SetInt(GetPlayerArquivo(playerid), "Score", Player[playerid][Score]);
DOF2_SetInt(GetPlayerArquivo(playerid), "Dinheiro", Player[playerid][Dinheiro]);
DOF2_SetInt(GetPlayerArquivo(playerid), "Admin", Player[playerid][Admin]);
DOF2_SaveFile();
}
return 1;
}
E por ultimo aqui está a public "OnPlayerDisconnect"
Code:
public OnPlayerDisconnect(playerid, reason)
{
SavePlayer(playerid);
return 1;
}
O erro nisso tudo, é que quando eu deslogo do servidor e logo novamente, só esta salvo o meu dinheiro em mãos, mas infelizmente não salva a skin, vou colocar o comando /setskin para vocês analisarem.
Um outro problema é quando morre com a skin. Por exemplo, eu coloco no /setskin pra me dar a skin 230 que é a do mendigo, até ai tudo bem, Posso fazer tudo o que estiver disponível no server, mas se eu morrer, eu spawno com a skin de novato(uma skin que eu escolhi pra quando logarem no server), só que tipo eu morro, mas só pra min que a skin de novato aparece, pra outra pessoa que estiver dentro do server, ela ainda vai continuar vendo a skin 230 do mendigo mas eu vou ver a de novato. Se puderem me ajudar nisso também eu agradeço. <3
Code:
CMD:setskin(playerid, params[])
{
if(!IsPlayerAdmin(playerid) ) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Comando inválido!");
new id, skin, jogador[24], admin[24], string[128], strg[128];
if(sscanf(params, "dd", id, skin)) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Use: /setskin [id] [skin]");
{
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Jogador invalido!");
if(skin < 0 || skin > 299) return SendClientMessage(playerid, 0xF50A0EFF,"| ERRO | Só é permidito as skin de 0 a 299!");
GetPlayerName(id, jogador, 24);
format(string, sizeof(string), "| SERVER | O(A) Administrador(a) %s trocou sua skin!", GetPlayerNameEx(playerid));
SetPlayerSkin(id, skin);
GetPlayerName(playerid, admin, 24);
SendClientMessage(playerid, 0x0099CCAA, string);
format(strg, sizeof(strg), "| INFO | Comando efetuado com sucesso!");
SendClientMessage(playerid, 0x0099CCAA, strg);
}
return 1;
}
Creio eu que o problema é no comando /setskin, pois eu fiz tudo certinho no resto.
Se alguém puder me ajudar agradeço desde ja. <3