[Ajuda] Salvar exp por play
#1

Bom galera peguei um sistema de experiкncia de xp aki no forum samp e botei no meu gm eu queria por para salva o xp de cada play
PHP код:
forward Upar(playerid);
public 
Upar(playerid)
{
    new 
str[256];
    
XP[playerid] ++;
    if(
XP[playerid] == 11)
    {
        new 
Score GetPlayerScore(playerid);
        
SetPlayerScore(playerid,Score+3);
        
XP[playerid] = 0;
        
format(strsizeof(str), "{90EE90}|UP|Vocк juntou 10 experiкncias, e ganhou +2 leveis.(Score atual: %i)."GetPlayerScore(playerid));
        
SendClientMessage(playerid, -1str);
        
PlayerPlaySound(playerid,1149,0.0,0.0,0.0), GameTextForPlayer(playerid,"~w~Level ~p~UP!",5000,6);
        return 
false;
    }
    
format(strsizeof(str), "{00EE76}|EXPERIКNCIA|Vocк ganhou +1 de experiкncia! (EXP: %i/10)."XP[playerid]);
    
GameTextForPlayer(playerid"~w~+1 ~p~XP"20001);
    
SendClientMessage(playerid, -1str);
    
PlayerPlaySound(playerid,1139,0.0,0.0,0.0), GameTextForPlayer(playerid,"+1 XP",5000,6);
    return 
true;
}
tentei bota pra salvar mas deu uns erros
    exptotal
,
    
DOF2_SetInt(String,"TotalExps"Player[playerid][exptotal]);
        
Player[playerid][exptotal] = DOF2_GetInt(String"TotalExps"); 
Reply
#2

Quote:
Originally Posted by henrique22157
Посмотреть сообщение
Bom galera peguei um sistema de experiкncia de xp aki no forum samp e botei no meu gm eu queria por para salva o xp de cada play
PHP код:
forward Upar(playerid);
public 
Upar(playerid)
{
    new 
str[256];
    
XP[playerid] ++;
    if(
XP[playerid] == 11)
    {
        new 
Score GetPlayerScore(playerid);
        
SetPlayerScore(playerid,Score+3);
        
XP[playerid] = 0;
        
format(strsizeof(str), "{90EE90}|UP|Vocк juntou 10 experiкncias, e ganhou +2 leveis.(Score atual: %i)."GetPlayerScore(playerid));
        
SendClientMessage(playerid, -1str);
        
PlayerPlaySound(playerid,1149,0.0,0.0,0.0), GameTextForPlayer(playerid,"~w~Level ~p~UP!",5000,6);
        return 
false;
    }
    
format(strsizeof(str), "{00EE76}|EXPERIКNCIA|Vocк ganhou +1 de experiкncia! (EXP: %i/10)."XP[playerid]);
    
GameTextForPlayer(playerid"~w~+1 ~p~XP"20001);
    
SendClientMessage(playerid, -1str);
    
PlayerPlaySound(playerid,1139,0.0,0.0,0.0), GameTextForPlayer(playerid,"+1 XP",5000,6);
    return 
true;
}
tentei bota pra salvar mas deu uns erros
    exptotal
,
    
DOF2_SetInt(String,"TotalExps"Player[playerid][exptotal]);
        
Player[playerid][exptotal] = DOF2_GetInt(String"TotalExps"); 
Onde vocк estб colocando? Quais sгo os erros? Coloque o cуdigo completo.
Reply
#3

PHP код:
dcmd_meuxp(playeridparams[])
{
    
#pragma unused params
    
new dialogrande[600];
    if(
Player[playerid][pLogged] == false)
        return 
SendClientMessage(playeridCOR_ERRO"ERRO: Vocк nгo estб logado para utilizar este comando!");

    
format(dialogrande600"%s {CDC9C9}Nome: %s\n"dialograndegetPName(playerid));
    
format(dialogrande600"%s {4EEE94}Level {FFFFFF}atual: %d\n",dialograndeGetPlayerScore(playerid));
    
format(dialogrande600"%s {6B8E23}Total de XP: (%d/10).\n"dialograndeexptotal[playerid]);  // aki eu queria por para conta quantos xp o play tem , mas quando desloga zera tudo
    
ShowPlayerDialog(playeridDIALOG_CREDITOSDIALOG_STYLE_MSGBOX"{FFFFFF}» Seu level"dialogrande"Sair""");
    return 
1;

Код:
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(7811) : error 028: invalid subscript (not an array or too many subscripts): "exptotal"
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(7811) : warning 215: expression has no effect
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(7811) : error 001: expected token: ";", but found "]"
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(7811) : error 029: invalid expression, assumed zero
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(7811) : fatal error 107: too many error messages on one line

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


4 Errors.
Reply
#4

PHP код:
dcmd_meuxp(playeridparams[])
{
    
#pragma unused params
    
new dialogrande[600];
    if(
Player[playerid][pLogged] == false)
        return 
SendClientMessage(playeridCOR_ERRO"ERRO: Vocк nгo estб logado para utilizar este comando!");

    
format(dialogrande600"%s {CDC9C9}Nome: %s\n"dialograndegetPName(playerid));
    
format(dialogrande600"%s {4EEE94}Level {FFFFFF}atual: %d\n",dialograndeGetPlayerScore(playerid));
    
format(dialogrande600"%s {6B8E23}Total de XP: (%d/10).\n"dialograndePlayer[playerid][exptotal]);  // aki eu queria por para conta quantos xp o play tem , mas quando desloga zera tudo
    
ShowPlayerDialog(playeridDIALOG_CREDITOSDIALOG_STYLE_MSGBOX"{FFFFFF}» Seu level"dialogrande"Sair""");
    return 
1;

Reply
#5

Quote:
Originally Posted by henrique22157
Посмотреть сообщение
PHP код:
dcmd_meuxp(playeridparams[])
{
    
#pragma unused params
    
new dialogrande[600];
    if(
Player[playerid][pLogged] == false)
        return 
SendClientMessage(playeridCOR_ERRO"ERRO: Vocк nгo estб logado para utilizar este comando!");
    
format(dialogrande600"%s {CDC9C9}Nome: %s\n"dialograndegetPName(playerid));
    
format(dialogrande600"%s {4EEE94}Level {FFFFFF}atual: %d\n",dialograndeGetPlayerScore(playerid));
    
format(dialogrande600"%s {6B8E23}Total de XP: (%d/10).\n"dialograndeexptotal[playerid]);  // aki eu queria por para conta quantos xp o play tem , mas quando desloga zera tudo
    
ShowPlayerDialog(playeridDIALOG_CREDITOSDIALOG_STYLE_MSGBOX"{FFFFFF}» Seu level"dialogrande"Sair""");
    return 
1;

Код:
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(7811) : error 028: invalid subscript (not an array or too many subscripts): "exptotal"
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(7811) : warning 215: expression has no effect
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(7811) : error 001: expected token: ";", but found "]"
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(7811) : error 029: invalid expression, assumed zero
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(7811) : fatal error 107: too many error messages on one line

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


4 Errors.
Fiz rapidinho aqui e nгo tentei compilar, mas qualquer coisa, me fala.
Tenta aн:

PHP код:
forward Upar(playerid);
public 
Upar(playerid)
{
    new 
str[256];
    
XP[playerid] ++;
    if(
XP[playerid] == 11)
    {
        new 
Score GetPlayerScore(playerid);
        
SetPlayerScore(playeridScore+2);
        
XP[playerid] = 0;
        
format(strsizeof(str), "{90EE90}|UP|Vocк juntou 10 experiкncias, e ganhou +2 leveis.(Score atual: %i)."GetPlayerScore(playerid));
        
SendClientMessage(playerid, -1str);
        
PlayerPlaySound(playerid,1149,0.0,0.0,0.0);
        
GameTextForPlayer(playerid,"~w~Level ~p~UP!",5000,6)
    }
    else
    {
        
format(strsizeof(str), "{00EE76}|EXPERIКNCIA|Vocк ganhou +1 de experiкncia! (EXP: %i/10)."XP[playerid]);
        
GameTextForPlayer(playerid"~w~+1 ~p~XP"20001);
        
SendClientMessage(playerid, -1str);
        
PlayerPlaySound(playerid,1139,0.0,0.0,0.0);
        
GameTextForPlayer(playerid,"+1 XP",5000,6);
    }
    new 
contas[56], nomep[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomepsizeof(nomep));
    
format(contassizeof(contas), "Contas/%s.ini"nomep);
    if(!
DOF2_FileExists(contas)) return SendClientMessage(playerid, -1"ERRO: Caray, maluco. Sua conta existe nгo.");
    
DOF2_SetInt(contas"Level"GetPlayerScore(playerid));
    
DOF2_SetInt(contas"XP"XP[playerid]);
    
DOF2_SaveFile();
    return 
true;
}
//OnPlayerConnect ou Dialog de Login (onde vc quer que carregue os dados)
new contas[56], nomep[MAX_PLAYER_NAME];
GetPlayerName(playeridnomepsizeof(nomep));
format(contassizeof(contas), "Contas/%s.ini"nomep);
//if(!DOF2_FileExists(contas)) return SendClientMessage(playerid, -1, "ERRO: Caray, maluco. Sua conta existe nгo.");
SetPlayerScore(playeridDOF2_GetInt(contas"Level"));
XP[playerid] = DOF2_GetInt(contas"XP");
//Comando
dcmd_meuxp(playeridparams[])
{
    
#pragma unused params
    
new deustopzissimo[600], deusetop[90];
    if(
Player[playerid][pLogged] == false)
        return 
SendClientMessage(playeridCOR_ERRO"ERRO: Vocк nгo estб logado para utilizar este comando!");
    new 
nomep[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomepsizeof(nomep));
    
format(deusetopsizeof(deusetop), "{CDC9C9}Nome: %s\n"nomep);
    
strcat(deustopzissimodeusetop);
    
format(deusetopsizeof(deusetop), "{4EEE94}Level {FFFFFF}atual: %d\n"GetPlayerScore(playerid));
    
strcat(deustopzissimodeusetop);
    
    
format(deusetopsizeof(deusetop), "{6B8E23}Total de XP: (%d/10).\n"XP[playerid]);
    
strcat(deustopzissimodeusetop);
    
    
ShowPlayerDialog(playeridDIALOG_CREDITOSDIALOG_STYLE_MSGBOX"{FFFFFF}» Seu level"deustopzissimo"Sair""");
    return 
1;

Reply
#6

Quote:
Originally Posted by humildadeforever
Посмотреть сообщение
Fiz rapidinho aqui e nгo tentei compilar, mas qualquer coisa, me fala.
Tenta aн:

PHP код:
forward Upar(playerid);
public 
Upar(playerid)
{
    new 
str[256];
    
XP[playerid] ++;
    if(
XP[playerid] == 11)
    {
        new 
Score GetPlayerScore(playerid);
        
SetPlayerScore(playeridScore+2);
        
XP[playerid] = 0;
        
format(strsizeof(str), "{90EE90}|UP|Vocк juntou 10 experiкncias, e ganhou +2 leveis.(Score atual: %i)."GetPlayerScore(playerid));
        
SendClientMessage(playerid, -1str);
        
PlayerPlaySound(playerid,1149,0.0,0.0,0.0);
        
GameTextForPlayer(playerid,"~w~Level ~p~UP!",5000,6)
    }
    else
    {
        
format(strsizeof(str), "{00EE76}|EXPERIКNCIA|Vocк ganhou +1 de experiкncia! (EXP: %i/10)."XP[playerid]);
        
GameTextForPlayer(playerid"~w~+1 ~p~XP"20001);
        
SendClientMessage(playerid, -1str);
        
PlayerPlaySound(playerid,1139,0.0,0.0,0.0);
        
GameTextForPlayer(playerid,"+1 XP",5000,6);
    }
    new 
contas[56], nomep[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomepsizeof(nomep));
    
format(contassizeof(contas), "Contas/%s.ini"nomep);
    if(!
DOF2_FileExists(contas)) return SendClientMessage(playerid, -1"ERRO: Caray, maluco. Sua conta existe nгo.");
    
DOF2_SetInt(contas"Level"GetPlayerScore(playerid));
    
DOF2_SetInt(contas"XP"XP[playerid]);
    
DOF2_SaveFile();
    return 
true;
}
//OnPlayerConnect ou Dialog de Login (onde vc quer que carregue os dados)
new contas[56], nomep[MAX_PLAYER_NAME];
GetPlayerName(playeridnomepsizeof(nomep));
format(contassizeof(contas), "Contas/%s.ini"nomep);
//if(!DOF2_FileExists(contas)) return SendClientMessage(playerid, -1, "ERRO: Caray, maluco. Sua conta existe nгo.");
SetPlayerScore(playeridDOF2_GetInt(contas"Level"));
XP[playerid] = DOF2_GetInt(contas"XP");
//Comando
dcmd_meuxp(playeridparams[])
{
    
#pragma unused params
    
new deustopzissimo[600], deusetop[90];
    if(
Player[playerid][pLogged] == false)
        return 
SendClientMessage(playeridCOR_ERRO"ERRO: Vocк nгo estб logado para utilizar este comando!");
    new 
nomep[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomepsizeof(nomep));
    
format(deusetopsizeof(deusetop), "{CDC9C9}Nome: %s\n"nomep);
    
strcat(deustopzissimodeusetop);
    
format(deusetopsizeof(deusetop), "{4EEE94}Level {FFFFFF}atual: %d\n"GetPlayerScore(playerid));
    
strcat(deustopzissimodeusetop);
    
    
format(deusetopsizeof(deusetop), "{6B8E23}Total de XP: (%d/10).\n"XP[playerid]);
    
strcat(deustopzissimodeusetop);
    
    
ShowPlayerDialog(playeridDIALOG_CREDITOSDIALOG_STYLE_MSGBOX"{FFFFFF}» Seu level"deustopzissimo"Sair""");
    return 
1;

deu esses erros
Код:
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(7798) : error 001: expected token: ";", but found "}"
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(17606) : error 036: empty statement
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(17687) : error 017: undefined symbol "contas"
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(17688) : error 017: undefined symbol "contas"
Reply
#7

Quote:
Originally Posted by henrique22157
Посмотреть сообщение
deu esses erros
Код:
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(7798) : error 001: expected token: ";", but found "}"
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(17606) : error 036: empty statement
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(17687) : error 017: undefined symbol "contas"
C:\Users\Henrique Guedes\Desktop\GameMode\gamemodes\gamemodehenrique.pwn(17688) : error 017: undefined symbol "contas"
PHP код:
forward Upar(playerid);
public 
Upar(playerid)
{
    new 
str[256];
    
XP[playerid] ++;
    if(
XP[playerid] == 11)
    {
        new 
Score GetPlayerScore(playerid);
        
SetPlayerScore(playeridScore+2);
        
XP[playerid] = 0;
        
format(strsizeof(str), "{90EE90}|UP|Vocк juntou 10 experiкncias, e ganhou +2 leveis.(Score atual: %i)."GetPlayerScore(playerid));
        
SendClientMessage(playerid, -1str);
        
PlayerPlaySound(playerid,1149,0.0,0.0,0.0);
        
GameTextForPlayer(playerid,"~w~Level ~p~UP!",5000,6);
    }
    else
    {
        
format(strsizeof(str), "{00EE76}|EXPERIКNCIA|Vocк ganhou +1 de experiкncia! (EXP: %i/10)."XP[playerid]);
        
GameTextForPlayer(playerid"~w~+1 ~p~XP"20001);
        
SendClientMessage(playerid, -1str);
        
PlayerPlaySound(playerid,1139,0.0,0.0,0.0);
        
GameTextForPlayer(playerid,"+1 XP",5000,6);
    }
    new 
contas[56], nomep[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomepsizeof(nomep));
    
format(contassizeof(contas), "Contas/%s.ini"nomep);
    if(!
DOF2_FileExists(contas)) return SendClientMessage(playerid, -1"ERRO: Caray, maluco. Sua conta existe nгo.");
    
DOF2_SetInt(contas"Level"GetPlayerScore(playerid));
    
DOF2_SetInt(contas"XP"XP[playerid]);
    
DOF2_SaveFile();
    return 
true;
}
//OnPlayerConnect ou Dialog de Login (onde vc quer que carregue os dados)
new contas[56], nomep[MAX_PLAYER_NAME];
GetPlayerName(playeridnomepsizeof(nomep));
format(contassizeof(contas), "Contas/%s.ini"nomep);
//if(!DOF2_FileExists(contas)) return SendClientMessage(playerid, -1, "ERRO: Caray, maluco. Sua conta existe nгo.");
SetPlayerScore(playeridDOF2_GetInt(contas"Level"));
XP[playerid] = DOF2_GetInt(contas"XP");
//Comando
dcmd_meuxp(playeridparams[])
{
    
#pragma unused params
    
new deustopzissimo[600], deusetop[90];
    if(
Player[playerid][pLogged] == false)
        return 
SendClientMessage(playeridCOR_ERRO"ERRO: Vocк nгo estб logado para utilizar este comando!");
    new 
nomep[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomepsizeof(nomep));
    
format(deusetopsizeof(deusetop), "{CDC9C9}Nome: %s\n"nomep);
    
strcat(deustopzissimodeusetop);
    
format(deusetopsizeof(deusetop), "{4EEE94}Level {FFFFFF}atual: %d\n"GetPlayerScore(playerid));
    
strcat(deustopzissimodeusetop);
    
    
format(deusetopsizeof(deusetop), "{6B8E23}Total de XP: (%d/10).\n"XP[playerid]);
    
strcat(deustopzissimodeusetop);
    
    
ShowPlayerDialog(playeridDIALOG_CREDITOSDIALOG_STYLE_MSGBOX"{FFFFFF}» Seu level"deustopzissimo"Sair""");
    return 
1;

Tenta agora... Aqui compilou direitinho... Vк aн o que estб fazendo de errado. E nгo apaga o 'contas'.
Reply
#8

Quote:
Originally Posted by humildadeforever
Посмотреть сообщение
PHP код:
forward Upar(playerid);
public 
Upar(playerid)
{
    new 
str[256];
    
XP[playerid] ++;
    if(
XP[playerid] == 11)
    {
        new 
Score GetPlayerScore(playerid);
        
SetPlayerScore(playeridScore+2);
        
XP[playerid] = 0;
        
format(strsizeof(str), "{90EE90}|UP|Vocк juntou 10 experiкncias, e ganhou +2 leveis.(Score atual: %i)."GetPlayerScore(playerid));
        
SendClientMessage(playerid, -1str);
        
PlayerPlaySound(playerid,1149,0.0,0.0,0.0);
        
GameTextForPlayer(playerid,"~w~Level ~p~UP!",5000,6);
    }
    else
    {
        
format(strsizeof(str), "{00EE76}|EXPERIКNCIA|Vocк ganhou +1 de experiкncia! (EXP: %i/10)."XP[playerid]);
        
GameTextForPlayer(playerid"~w~+1 ~p~XP"20001);
        
SendClientMessage(playerid, -1str);
        
PlayerPlaySound(playerid,1139,0.0,0.0,0.0);
        
GameTextForPlayer(playerid,"+1 XP",5000,6);
    }
    new 
contas[56], nomep[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomepsizeof(nomep));
    
format(contassizeof(contas), "Contas/%s.ini"nomep);
    if(!
DOF2_FileExists(contas)) return SendClientMessage(playerid, -1"ERRO: Caray, maluco. Sua conta existe nгo.");
    
DOF2_SetInt(contas"Level"GetPlayerScore(playerid));
    
DOF2_SetInt(contas"XP"XP[playerid]);
    
DOF2_SaveFile();
    return 
true;
}
//OnPlayerConnect ou Dialog de Login (onde vc quer que carregue os dados)
new contas[56], nomep[MAX_PLAYER_NAME];
GetPlayerName(playeridnomepsizeof(nomep));
format(contassizeof(contas), "Contas/%s.ini"nomep);
//if(!DOF2_FileExists(contas)) return SendClientMessage(playerid, -1, "ERRO: Caray, maluco. Sua conta existe nгo.");
SetPlayerScore(playeridDOF2_GetInt(contas"Level"));
XP[playerid] = DOF2_GetInt(contas"XP");
//Comando
dcmd_meuxp(playeridparams[])
{
    
#pragma unused params
    
new deustopzissimo[600], deusetop[90];
    if(
Player[playerid][pLogged] == false)
        return 
SendClientMessage(playeridCOR_ERRO"ERRO: Vocк nгo estб logado para utilizar este comando!");
    new 
nomep[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomepsizeof(nomep));
    
format(deusetopsizeof(deusetop), "{CDC9C9}Nome: %s\n"nomep);
    
strcat(deustopzissimodeusetop);
    
format(deusetopsizeof(deusetop), "{4EEE94}Level {FFFFFF}atual: %d\n"GetPlayerScore(playerid));
    
strcat(deustopzissimodeusetop);
    
    
format(deusetopsizeof(deusetop), "{6B8E23}Total de XP: (%d/10).\n"XP[playerid]);
    
strcat(deustopzissimodeusetop);
    
    
ShowPlayerDialog(playeridDIALOG_CREDITOSDIALOG_STYLE_MSGBOX"{FFFFFF}» Seu level"deustopzissimo"Sair""");
    return 
1;

Tenta agora... Aqui compilou direitinho... Vк aн o que estб fazendo de errado. E nгo apaga o 'contas'.
Nгo deu nem um erro mas quando eu dou gmx na gm nгo salva o xp continua do zero ajuda ai pfv
Reply
#9

Creio que vocк tem que salvar no OnPlayerDisconnect.
Reply
#10

Quote:
Originally Posted by Cycle
Посмотреть сообщение
Porque salvar a experiкncia ao jogador estar upando mais algum nнvel?

Nгo seria melhor salvar no OnPlayerDisconnect?

Faзa os armazenamentos no OnPlayerConnect e OnPlayerDisconnect.

Na OnGameModeExit, vocк apenas finaliza o uso do DOF2.

PHP код:
public OnGameModeExit()
{
     
DOF2::Exit();
     return 
true;

pow mano nгo conseguir tem como me ajuda nгo pfv?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)