PayDay fora de hora - xxxjhonatan_wi - 04/11/2021
Criei um sisteminha de payday para o player ganhar score e dinheiro a cada minuto(esse tempo pra fazer o teste), porém, o payday cai em momentos diferentes, sem seguir o cronograma de 1 minuto.
Ex: ele cai em em 1minuto e 5 segundos, 55 segundos, 1 minuto e 10 segundos...
CÓDIGO:
Parte: public OnGameModeInit()
Código: SetTimer("PayDay", 60000, true);
O RESTO ABAIXO::
Código: forward PayDay(playerid);
//--------------------------------------
public PayDay(playerid)
{
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
SendClientMessage(playerid, -1, "Voce recebeu + 1 score e $6500");
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
for(new i = 0, p = GetPlayerPoolSize(); i <= p; i++)
{
if(IsPlayerConnected(i)){
new scoreantigo = GetPlayerScore(i);
SetPlayerScore(i, scoreantigo+1);
GivePlayerMoney(i, 6500);
}
}
if(PlayerInfo[playerid][Vip] == 1)
{
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
SendClientMessage(playerid, -1, "Player vip: Ganhou +2 score e mais $4250");
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
for(new i = 0, p = GetPlayerPoolSize(); i <= p; i++)
{
if(IsPlayerConnected(i)){
new scoreantigo = GetPlayerScore(i);
SetPlayerScore(i, scoreantigo+2);
GivePlayerMoney(i, 4250);
}
}
}
if(PlayerInfo[playerid][Acionista] == 1)
{
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
SendClientMessage(playerid, -1, "Player Acionista: Ganhou +2 score e mais $4250");
SendClientMessage(playerid, -1, "============== PAYDAY ============== ");
for(new i = 0, p = GetPlayerPoolSize(); i <= p; i++)
{
if(IsPlayerConnected(i)){
new scoreantigo = GetPlayerScore(i);
SetPlayerScore(i, scoreantigo+2);
GivePlayerMoney(i, 4250);
}
}
}
}
RE: PayDay fora de hora - MrThúúG - 04/11/2021
Eu faria assim...
Código PHP: new TIMERPAYDAY[MAX_PLAYERS]; // Topo do GM
TIMERPAYDAY[playerid] = SetTimerEx( "PayDay", 60000 , true, "d", playerid); // Em On Player Spawn
KillTimer(TIMERPAYDAY[playerid]); // OnPlayerDisconnect
forward PayDay(playerid); public PayDay(playerid) { if(PlayerInfo[playerid][Vip] < 1 || PlayerInfo[playerid][Acionista] < 1) {
SendClientMessage(playerid, -1, "============== PAYDAY ============== "); SendClientMessage(playerid, -1, "Voce recebeu + 1 score e $6500"); SendClientMessage(playerid, -1, "============== PAYDAY ============== "); new scoreantigo = GetPlayerScore(playerid); SetPlayerScore(playerid, scoreantigo+1); GivePlayerMoney(playerid, 6500); } else if(PlayerInfo[playerid][Vip] == 1) {
SendClientMessage(playerid, -1, "============== PAYDAY ============== "); SendClientMessage(playerid, -1, "Player vip: Ganhou +2 score e mais $4250"); SendClientMessage(playerid, -1, "============== PAYDAY ============== "); new scoreantigo = GetPlayerScore(playerid); SetPlayerScore(playerid, scoreantigo+2); GivePlayerMoney(playerid, 4250);
} else if(PlayerInfo[playerid][Acionista] == 1) {
SendClientMessage(playerid, -1, "============== PAYDAY ============== "); SendClientMessage(playerid, -1, "Player Acionista: Ganhou +2 score e mais $4250"); SendClientMessage(playerid, -1, "============== PAYDAY ============== "); new scoreantigo = GetPlayerScore(playerid); SetPlayerScore(playerid, scoreantigo+2); GivePlayerMoney(playerid, 4250);
} return 1; }
RE: PayDay fora de hora - xbruno1000x - 04/11/2021
Quando for chamar um timer para uma public que tenha variáveis, use SetTimerEx. O exemplo acima, do MrThúúG, está perfeito.
RE: PayDay fora de hora - Flenexg - 04/11/2021
utilize a include timerfix, ela arruma esse problema com os timers.
RE: PayDay fora de hora - xxxjhonatan_wi - 05/11/2021
(04/11/2021 21:09)MrThúúG Escreveu: Eu faria assim...
Código PHP: new TIMERPAYDAY[MAX_PLAYERS]; // Topo do GM
TIMERPAYDAY[playerid] = SetTimerEx( "PayDay", 60000 , true, "d", playerid); // Em On Player Spawn
KillTimer(TIMERPAYDAY[playerid]); // OnPlayerDisconnect
forward PayDay(playerid); public PayDay(playerid) { if(PlayerInfo[playerid][Vip] < 1 || PlayerInfo[playerid][Acionista] < 1) {
SendClientMessage(playerid, -1, "============== PAYDAY ============== "); SendClientMessage(playerid, -1, "Voce recebeu + 1 score e $6500"); SendClientMessage(playerid, -1, "============== PAYDAY ============== "); new scoreantigo = GetPlayerScore(playerid); SetPlayerScore(playerid, scoreantigo+1); GivePlayerMoney(playerid, 6500); } else if(PlayerInfo[playerid][Vip] == 1) {
SendClientMessage(playerid, -1, "============== PAYDAY ============== "); SendClientMessage(playerid, -1, "Player vip: Ganhou +2 score e mais $4250"); SendClientMessage(playerid, -1, "============== PAYDAY ============== "); new scoreantigo = GetPlayerScore(playerid); SetPlayerScore(playerid, scoreantigo+2); GivePlayerMoney(playerid, 4250);
} else if(PlayerInfo[playerid][Acionista] == 1) {
SendClientMessage(playerid, -1, "============== PAYDAY ============== "); SendClientMessage(playerid, -1, "Player Acionista: Ganhou +2 score e mais $4250"); SendClientMessage(playerid, -1, "============== PAYDAY ============== "); new scoreantigo = GetPlayerScore(playerid); SetPlayerScore(playerid, scoreantigo+2); GivePlayerMoney(playerid, 4250);
} return 1; }
Ele da mais de um payday mesmo sem estar setado como acionista ou vip e continua sem ser na hora certa ;-;
(04/11/2021 22:50)Flenexg Escreveu: utilize a include timerfix, ela arruma esse problema com os timers.
eu baixei a include e fui testar com o meu código, mas se eu ativo a include, qnd eu abro o servidor ele consta sem "gamemode", ele volta com o botão de spawn e faz eu spawnar naquele lugar no nada. ele ignora tudo que tem na gamemode pronto
RE: PayDay fora de hora - MrThúúG - 06/11/2021
(05/11/2021 15:16)xxxjhonatan_wi Escreveu: (04/11/2021 21:09)MrThúúG Escreveu: Eu faria assim...
Código PHP: new TIMERPAYDAY[MAX_PLAYERS]; // Topo do GM
TIMERPAYDAY[playerid] = SetTimerEx( "PayDay", 60000 , true, "d", playerid); // Em On Player Spawn
KillTimer(TIMERPAYDAY[playerid]); // OnPlayerDisconnect
forward PayDay(playerid); public PayDay(playerid) { if(PlayerInfo[playerid][Vip] < 1 || PlayerInfo[playerid][Acionista] < 1) {
SendClientMessage(playerid, -1, "============== PAYDAY ============== "); SendClientMessage(playerid, -1, "Voce recebeu + 1 score e $6500"); SendClientMessage(playerid, -1, "============== PAYDAY ============== "); new scoreantigo = GetPlayerScore(playerid); SetPlayerScore(playerid, scoreantigo+1); GivePlayerMoney(playerid, 6500); } else if(PlayerInfo[playerid][Vip] == 1) {
SendClientMessage(playerid, -1, "============== PAYDAY ============== "); SendClientMessage(playerid, -1, "Player vip: Ganhou +2 score e mais $4250"); SendClientMessage(playerid, -1, "============== PAYDAY ============== "); new scoreantigo = GetPlayerScore(playerid); SetPlayerScore(playerid, scoreantigo+2); GivePlayerMoney(playerid, 4250);
} else if(PlayerInfo[playerid][Acionista] == 1) {
SendClientMessage(playerid, -1, "============== PAYDAY ============== "); SendClientMessage(playerid, -1, "Player Acionista: Ganhou +2 score e mais $4250"); SendClientMessage(playerid, -1, "============== PAYDAY ============== "); new scoreantigo = GetPlayerScore(playerid); SetPlayerScore(playerid, scoreantigo+2); GivePlayerMoney(playerid, 4250);
} return 1; }
Ele da mais de um payday mesmo sem estar setado como acionista ou vip e continua sem ser na hora certa ;-;
(04/11/2021 22:50)Flenexg Escreveu: utilize a include timerfix, ela arruma esse problema com os timers.
eu baixei a include e fui testar com o meu código, mas se eu ativo a include, qnd eu abro o servidor ele consta sem "gamemode", ele volta com o botão de spawn e faz eu spawnar naquele lugar no nada. ele ignora tudo que tem na gamemode pronto
Se o server é em windows você tem que por o arquivo timerfix.dll na pasta plugins e no server.cfg, e se for linux timerfix.so no server.cfg e na pasta plugins.
RE: PayDay fora de hora - xxxjhonatan_wi - 06/11/2021
(06/11/2021 10:13)MrThúúG Escreveu: (05/11/2021 15:16)xxxjhonatan_wi Escreveu: (04/11/2021 21:09)MrThúúG Escreveu: Eu faria assim...
Código PHP: new TIMERPAYDAY[MAX_PLAYERS]; // Topo do GM
TIMERPAYDAY[playerid] = SetTimerEx( "PayDay", 60000 , true, "d", playerid); // Em On Player Spawn
KillTimer(TIMERPAYDAY[playerid]); // OnPlayerDisconnect
forward PayDay(playerid); public PayDay(playerid) { if(PlayerInfo[playerid][Vip] < 1 || PlayerInfo[playerid][Acionista] < 1) {
SendClientMessage(playerid, -1, "============== PAYDAY ============== "); SendClientMessage(playerid, -1, "Voce recebeu + 1 score e $6500"); SendClientMessage(playerid, -1, "============== PAYDAY ============== "); new scoreantigo = GetPlayerScore(playerid); SetPlayerScore(playerid, scoreantigo+1); GivePlayerMoney(playerid, 6500); } else if(PlayerInfo[playerid][Vip] == 1) {
SendClientMessage(playerid, -1, "============== PAYDAY ============== "); SendClientMessage(playerid, -1, "Player vip: Ganhou +2 score e mais $4250"); SendClientMessage(playerid, -1, "============== PAYDAY ============== "); new scoreantigo = GetPlayerScore(playerid); SetPlayerScore(playerid, scoreantigo+2); GivePlayerMoney(playerid, 4250);
} else if(PlayerInfo[playerid][Acionista] == 1) {
SendClientMessage(playerid, -1, "============== PAYDAY ============== "); SendClientMessage(playerid, -1, "Player Acionista: Ganhou +2 score e mais $4250"); SendClientMessage(playerid, -1, "============== PAYDAY ============== "); new scoreantigo = GetPlayerScore(playerid); SetPlayerScore(playerid, scoreantigo+2); GivePlayerMoney(playerid, 4250);
} return 1; }
Ele da mais de um payday mesmo sem estar setado como acionista ou vip e continua sem ser na hora certa ;-;
(04/11/2021 22:50)Flenexg Escreveu: utilize a include timerfix, ela arruma esse problema com os timers.
eu baixei a include e fui testar com o meu código, mas se eu ativo a include, qnd eu abro o servidor ele consta sem "gamemode", ele volta com o botão de spawn e faz eu spawnar naquele lugar no nada. ele ignora tudo que tem na gamemode pronto
Se o server é em windows você tem que por o arquivo timerfix.dll na pasta plugins e no server.cfg, e se for linux timerfix.so no server.cfg e na pasta plugins.
você pode mandar o download? o único que eu acho é timerfix.inc
RE: PayDay fora de hora - MrThúúG - 06/11/2021
Compilei do: github.com/udan11/samp-plugin-timerfix
.dll https://www.mediafire.com/file/4vxd32iyt22rnoc/timerfix.dll/file
.inc https://www.mediafire.com/file/9buxnlu1jnizw78/timerfix.inc/file
RE: PayDay fora de hora - Cesar157 - 17/06/2023
Será que você pode renovar o link amigo por gentileza
|