SA-MP Forums Archive
[Pedido] Contagem para ganhar level - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Pedido] Contagem para ganhar level (/showthread.php?tid=574503)



Contagem para ganhar level - VinnyScript - 17.05.2015

Estou a procura de um code que em tempo altomatico fique setando score para ao PLAYER,

ex: a cada 10 minutos o player ganha um score.
( player em afk - ano Upa )

c alguem souber onde posso achar um code parecido fico grato desde ja <3


Re: Oi ? Click ae e me ajuda <3 - RebeloX - 17.05.2015

Lк as regras e aprende a usar as devidas TAGs.


Re: Oi ? Click ae e me ajuda <3 - VinnyScript - 17.05.2015

puts nen vi vey @Arrumado


Re: Oi ? Click ae e me ajuda <3 - RebeloX - 17.05.2015

simples:

PHP код:
public OnGameModeInit()
{
    
SetTimer("UpLevel",60*10*1000,true);
    return 
1;
}
forward UpLevel();
public 
UpLevel()
{
    for(new 
0<= GetPlayerPoolSizei++)
    {
        
SetPlayerScore(iGetPlayerScore(i) + 1);
    }
    return 
1;




Re: Oi ? Click ae e me ajuda <3 - n0minal - 17.05.2015

Vou te ensinar como fazer, primeiro de tudo vocк vк o que quer:

1-Timer com loop pra dar score a cada 10 minutos.
2-Saber calcular o tempo do timer.
3-Dar ou nгo o score.

Primeiro de tudo vocк precisa comeзar o temporizador (timer). A melhor forma de comeзar um timer global й na public OnGameModeInit.

Entгo precisamos saber o tempo do timer, pra isso usaremos matemбtica bбsica:

1 segundo = 1000 milisegundos
1 minuto = 60 segundos (60 segundos = 1000 * 60)
10 minutos = 10(minutos) * 60(segundos) * 1000(milisegundos)


Код:
public OnGameModeInit()
{
	SetTimer("DoarXP", 10 * 60 * 1000, true);
}

forward DoarXP();
public DoarXP()
{
        /*EXEMPLO:
        for(new player; player < GetPlayerPoolSize(); player++)
        {
            if(!IsPlayerConnected(player) || IsPlayerAfk(player)) continue;//ignora ids desconectados e afk e pula pro proximo id
            //caso a condicional acima nгo seja atendida, o script continua daqui...
	    SetPlayerScore(player, GetPlayerScore(player) + 2); //2 scores foram acrescidos na variбvel
            SendClientMessage(player, -1, "Vocк recebeu 2 scores por estar online");
         }
	*/
}
Porйm, vocк quer q jogadores inativos nгo recebam, entгo vocк precisa criar seu prуprio sistema de detecзгo AFK, geralmente dб pra fazer com macros como esta:


Код:
new PlayerTick[MAX_PLAYERS];

#define IsPlayerAfk(%0) (PlayerTick[%0]+1000 < GetTickCount())

public OnPlayerUpdate(playerid)
{
    PlayerTick[playerid]=GetTickCount();
}



Re: Oi ? Click ae e me ajuda <3 - RebeloX - 17.05.2015

Quote:
Originally Posted by ipsLeon
Посмотреть сообщение
Код:
forward DoarXP();
public DoarXP()
{
        /*EXEMPLO:
        for(new player; player < GetPlayerPoolSize(); player++)
        {
            if(!IsPlayerConnected(player) || IsPlayerAfk(player)) continue;//ignora ids desconectados e afk e pula pro proximo id
            //caso a condicional acima nгo seja atendida, o script continua daqui...
	    SetPlayerScore(player, GetPlayerScore(player) + 2); //2 scores foram acrescidos na variбvel
            SendClientMessage(player, -1, "Vocк recebeu 2 scores por estar online");
         }
	*/
}
Existem duas coisas erradas, primeiramente ao usar o GetPlayerPoolSize й necessбrio utilizar o operador <= e nгo < visto que ele pega o id mais alto e nгo a quantidade de players, logo 10 players 9 ids o que acontece й que sу 8 jogadores receberam o XP.

Depois nгo existe necessidade de utilizar a funзгo IsPlayerConnected, isto porque o GetPlayerPoolSize jб faz isto, visto que ele pega o id mais alto em uso no servidor.


Re: Oi ? Click ae e me ajuda <3 - DiegoCosta - 17.05.2015

Altere o Titulo do topico, leia as regras.


Re: Oi ? Click ae e me ajuda <3 - VinnyScript - 17.05.2015

ipsLeon Vllw mesmo obrigado a todos ae bjs 7belo


Re: Oi ? Click ae e me ajuda <3 - Gii - 17.05.2015

Quote:
Originally Posted by BlueX
Посмотреть сообщение
Existem duas coisas erradas, primeiramente ao usar o GetPlayerPoolSize й necessбrio utilizar o operador <= e nгo < visto que ele pega o id mais alto e nгo a quantidade de players, logo 10 players 9 ids o que acontece й que sу 8 jogadores receberam o XP.

Depois nгo existe necessidade de utilizar a funзгo IsPlayerConnected, isto porque o GetPlayerPoolSize jб faz isto, visto que ele pega o id mais alto em uso no servidor.
Existe uma coisa errada!

Deve-se usar IsPlayerConnected!

Digamos que existam dois jogadores conectados (ID 1 e ID 3), a funзгo retornara 3, porйm o ID 2 nгo esta conectado!



Beijos!


Re: Oi ? Click ae e me ajuda <3 - RebeloX - 17.05.2015

Quote:
Originally Posted by Gii
Посмотреть сообщение
Existe uma coisa errada!

Deve-se usar IsPlayerConnected!

Digamos que existam dois jogadores conectados (ID 1 e ID 3), a funзгo retornara 3, porйm o ID 2 nгo esta conectado!



Beijos!
Nesse aspeto tens razгo.