[FilterScript] LTFS - Sistema de Horas Jogadas/Level/Salario
#1

Nome do FilterScript:

LTFS - Sistema de Horas Jogadas/Level/Salarior
Descriзгo:

Este FilterScript se Consiste em um Sistema que salva seus segundos jogados, a cada 3600 segundos, 1 hora vc upa de Level, simples nгo?.
Um Belo Print:

Autor:

Lucas Totola '-'
Configuraзгo:

pawn Код:
#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"
}
Download:

pawn Код:
#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"
}
Reply
#2

Cool

#Edit isso й como um PayDay ?
Reply
#3

Quote:
Originally Posted by @LucasVinicius
Посмотреть сообщение
Cool

#Edit isso й como um PayDay ?
й um sistema que salva as horas jogadas de um player, vc pode fazer como um payday se quiser, vai da sua criatividade =)
Reply
#4

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.
Reply
#5

Quote:
Originally Posted by Murilo_sousa
Посмотреть сообщение
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.
eu sei, mas as vezes varia de um gm para o outro, entгo resolvi deixar separado, obrigado!
Reply
#6

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 Код:
for ( new i = 0; i < MAX_PLAYERS; i++ )
Nгo sгo otimizados, jб que irгo dar loops 500x ou atй 1000x dependendo da versгo do servidor, independente da capacidade do server. O ideal seria:

pawn Код:
for ( new slots = GetMaxPlayers ( ), i; i < slots; i++  )
Jб que GetMaxPlayers irб obter a quantidade de slots do servidor e dar loop somente naquele valor.

Vocк poderia ter simplificado isso tudo:

pawn Код:
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;
}
Em apenas:

pawn Код:
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;
}
E na minha opiniгo, nгo era necessбrio criar 1 enum para alocar 2 variбveis...

--

Bom script, parece funcional, estude oque eu disse acima e tente melhora-lo
Reply
#7

Quote:
Originally Posted by Los
Посмотреть сообщение
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 Код:
for ( new i = 0; i < MAX_PLAYERS; i++ )
Nгo sгo otimizados, jб que irгo dar loops 500x ou atй 1000x dependendo da versгo do servidor, independente da capacidade do server. O ideal seria:

pawn Код:
for ( new slots = GetMaxPlayers ( ), i; i < slots; i++  )
Jб que GetMaxPlayers irб obter a quantidade de slots do servidor e dar loop somente naquele valor.

Vocк poderia ter simplificado isso tudo:

pawn Код:
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;
}
Em apenas:

pawn Код:
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;
}
E na minha opiniгo, nгo era necessбrio criar 1 enum para alocar 2 variбveis...

--

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.
Reply
#8

Quote:
Originally Posted by LucasTotola
Посмотреть сообщение
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.
O uso da include й muito simples, na verdade basta adiciona-la ao script:

pawn Код:
#include <timerfix>
Acabou ai.

--

Dъvidas, sу dizer
Reply
#9

Quote:
Originally Posted by Los
Посмотреть сообщение
O uso da include й muito simples, na verdade basta adiciona-la ao script:

pawn Код:
#include <timerfix>
Acabou ai.

--

Dъvidas, sу dizer
pode deixar

Quote:
Originally Posted by [NVC]iTrevaS
Посмотреть сообщение
Estб muito bom.

Reputado
thx
Reply
#10

Код:
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.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)