#define LEVEL "Level/%s.ini" //PASTA PARA SALVAR O LEVEL.
#define SEGUNDOSLEVEL 3600 //TROQUE PARA OS SEGUNDOS DESEJADOS, 3600 SEGUNDOS = 1 HORA
LevelUP(playerid)
{
PlayerInfo[playerid][pLevel] ++;
GivePlayerMoney(playerid, 50000);
GameTextForPlayer(playerid, "~w~Level ~p~UP", 2000, 1);
// COLOQUE AQUI AS FUNЗХES QUE DESEJA NO SEU "LEVEL UP"
}
#include <a_samp>
#include <DOF2>
#define LEVEL "Level/%s.ini" //PASTA PARA SALVAR O LEVEL.
#define SEGUNDOSLEVEL 3600 //TROQUE PARA OS SEGUNDOS DESEJADOS, 3600 SEGUNDOS = 1 HORA
enum Info
{
pSegundos,
pLevel
};
new PlayerInfo[MAX_PLAYERS][Info];
new segundos;
public OnFilterScriptInit()
{
print("\n-----------------CARREGADO-----------------");
print(" Sistema de Level UP/HorasJogadas/Salario");
print("----------------LucasTotola----------------\n");
segundos = SetTimer("SegundoaMais",1000,1);
return 1;
}
public OnFilterScriptExit()
{
print("\n---------------DESCARREGADO----------------");
print(" Sistema de Level UP/HorasJogadas/Salario");
print("----------------LucasTotola----------------\n");
KillTimer(segundos);
DOF2_Exit();
return 1;
}
public OnPlayerDisconnect(playerid)
{
new arquivo[34], playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
format(arquivo, sizeof(arquivo), LEVEL, playername);
if(DOF2_FileExists(arquivo))
{
DOF2_SetInt(arquivo, "Segundos", PlayerInfo[playerid][pSegundos]);
DOF2_SetInt(arquivo, "Level", PlayerInfo[playerid][pLevel]);
DOF2_SaveFile();
}
else
{
DOF2_CreateFile(arquivo);
DOF2_SetInt(arquivo, "Segundos", PlayerInfo[playerid][pSegundos]);
DOF2_SetInt(arquivo, "Level", PlayerInfo[playerid][pLevel]);
DOF2_SaveFile();
}
return 1;
}
public OnPlayerConnect(playerid)
{
new arquivo[34], playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
format(arquivo, sizeof(arquivo), LEVEL, playername);
PlayerInfo[playerid][pSegundos] = DOF2_GetInt(arquivo, "Segundos");
PlayerInfo[playerid][pLevel] = DOF2_GetInt(arquivo, "Level");
return 1;
}
forward SegundoaMais();
public SegundoaMais()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
PlayerInfo[i][pSegundos] ++;
if(PlayerInfo[i][pSegundos] >= SEGUNDOSLEVEL)
{
PlayerInfo[i][pSegundos] = 0;
LevelUP(i);
}
}
return 1;
}
LevelUP(playerid)
{
PlayerInfo[playerid][pLevel] ++;
GivePlayerMoney(playerid, 50000);
GameTextForPlayer(playerid, "~w~Level ~p~UP", 2000, 1);
// COLOQUE AQUI AS FUNЗХES QUE DESEJA NO SEU "LEVEL UP"
}
Sempre ( pelo menos o normal й ) scriptfiles/Contas/nome.ini
Podia salvar na conta do jogador ao invйs de uma pasta somente para isso, enfim parabens. |
for ( new i = 0; i < MAX_PLAYERS; i++ )
for ( new slots = GetMaxPlayers ( ), i; i < slots; i++ )
public OnPlayerDisconnect(playerid)
{
new arquivo[34], playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
format(arquivo, sizeof(arquivo), LEVEL, playername);
if(DOF2_FileExists(arquivo))
{
DOF2_SetInt(arquivo, "Segundos", PlayerInfo[playerid][pSegundos]);
DOF2_SetInt(arquivo, "Level", PlayerInfo[playerid][pLevel]);
DOF2_SaveFile();
}
else
{
DOF2_CreateFile(arquivo);
DOF2_SetInt(arquivo, "Segundos", PlayerInfo[playerid][pSegundos]);
DOF2_SetInt(arquivo, "Level", PlayerInfo[playerid][pLevel]);
DOF2_SaveFile();
}
return 1;
}
public OnPlayerDisconnect(playerid)
{
new arquivo[34], playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
format(arquivo, sizeof(arquivo), LEVEL, playername);
if(!DOF2_FileExists(arquivo))
DOF2_CreateFile(arquivo);
DOF2_SetInt(arquivo, "Segundos", PlayerInfo[playerid][pSegundos]);
DOF2_SetInt(arquivo, "Level", PlayerInfo[playerid][pLevel]);
DOF2_SaveFile();
return 1;
}
Algumas observaзхes/crнticas.
Vocк fez uma mб utilizaзгo do timer, a variбvel segundos foi criada atoa, sendo que tava para criar/chamar/parar na prуpria public. Timers para esse tipo de sistema nгo sгo precisos, o timer pode atrasar ou adiantar, recomendo o uso da include timerfix para consertar isso, basta coloca-la no script e o problema estб resolvido. LevelUP pode atй ser uma funзгo, mas nгo deixa de necessitar de um return. Toda funзгo/public/stock e etc necessita retornar algo. Loops utilizando: pawn Код:
pawn Код:
Vocк poderia ter simplificado isso tudo: pawn Код:
pawn Код:
-- Bom script, parece funcional, estude oque eu disse acima e tente melhora-lo |
Muito Obrigado LOS, estou aprendendo a usar loops ainda, e vou estudar essa include do time fix, de qualquer jeito obrigado por gastar um certo tempo para postar isso, +rep.
|
#include <timerfix>
O uso da include й muito simples, na verdade basta adiciona-la ao script:
pawn Код:
-- Dъvidas, sу dizer |
C:\Users\JOOANT~1\Desktop\pawno\include\DOF2.inc(1) : error 010: invalid function or declaration C:\Users\Joгo Antonio Godoy\Desktop\Yves\gamemodes\GM.pwn(180) : error 017: undefined symbol "DOF2_Exit" C:\Users\Joгo Antonio Godoy\Desktop\Yves\gamemodes\GM.pwn(189) : error 017: undefined symbol "DOF2_FileExists" C:\Users\Joгo Antonio Godoy\Desktop\Yves\gamemodes\GM.pwn(191) : error 017: undefined symbol "DOF2_SetInt" C:\Users\Joгo Antonio Godoy\Desktop\Yves\gamemodes\GM.pwn(192) : error 017: undefined symbol "DOF2_SetInt" C:\Users\Joгo Antonio Godoy\Desktop\Yves\gamemodes\GM.pwn(193) : error 017: undefined symbol "DOF2_SaveFile" C:\Users\Joгo Antonio Godoy\Desktop\Yves\gamemodes\GM.pwn(197) : error 017: undefined symbol "DOF2_CreateFile" C:\Users\Joгo Antonio Godoy\Desktop\Yves\gamemodes\GM.pwn(198) : error 017: undefined symbol "DOF2_SetInt" C:\Users\Joгo Antonio Godoy\Desktop\Yves\gamemodes\GM.pwn(199) : error 017: undefined symbol "DOF2_SetInt" C:\Users\Joгo Antonio Godoy\Desktop\Yves\gamemodes\GM.pwn(200) : error 017: undefined symbol "DOF2_SaveFile" C:\Users\Joгo Antonio Godoy\Desktop\Yves\gamemodes\GM.pwn(206) : error 021: symbol already defined: "OnPlayerConnect" C:\Users\Joгo Antonio Godoy\Desktop\Yves\gamemodes\GM.pwn(210) : error 017: undefined symbol "DOF2_GetInt" C:\Users\Joгo Antonio Godoy\Desktop\Yves\gamemodes\GM.pwn(211) : error 017: undefined symbol "DOF2_GetInt" Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 13 Errors.