public OnGameModeInit()
{
SetTimer("UpLevel",60*10*1000,true);
return 1;
}
forward UpLevel();
public UpLevel()
{
for(new i = 0; i <= GetPlayerPoolSize; i++)
{
SetPlayerScore(i, GetPlayerScore(i) + 1);
}
return 1;
}
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");
}
*/
}
new PlayerTick[MAX_PLAYERS];
#define IsPlayerAfk(%0) (PlayerTick[%0]+1000 < GetTickCount())
public OnPlayerUpdate(playerid)
{
PlayerTick[playerid]=GetTickCount();
}
|
Код:
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. |

|
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! |