25.07.2016, 13:08
Bom dia!
Bom, meu GM й baseado em GF, e tem um sistema de payday, que tem um loop e pega todos os players do server, e de hora em hora ele й executado...
Gostaria de uma ajuda de vocкs, preciso que ele em vez do loop, pegar player por player, e quando a pessoa logar, comeзar uma contagem de 60 minutos, ou comeзar do 0 e chegar ao 60, tanto faz, quando bater isso, dar o payday individualmente, e esse tempo ser salvo com DOF2.
A parte de salvar o tempo eu ja fiz, mas preciso adaptar o sistema de payday, pra que cada player receba individualmente, em vez de ser de hora em hora pra todo mundo...
Esse й a public do payday, no caso eu trocaria o loop (i) por playerid?
Aqui uma base que peguei para o sistema de salvar o tempo... Mas estou com uma dъvida, quando o tempo do timer chegar a 0, como faзo pra ele iniciar a contagem de novo?
Obrigado!
Bom, meu GM й baseado em GF, e tem um sistema de payday, que tem um loop e pega todos os players do server, e de hora em hora ele й executado...
Gostaria de uma ajuda de vocкs, preciso que ele em vez do loop, pegar player por player, e quando a pessoa logar, comeзar uma contagem de 60 minutos, ou comeзar do 0 e chegar ao 60, tanto faz, quando bater isso, dar o payday individualmente, e esse tempo ser salvo com DOF2.
A parte de salvar o tempo eu ja fiz, mas preciso adaptar o sistema de payday, pra que cada player receba individualmente, em vez de ser de hora em hora pra todo mundo...
PHP код:
public PayDay()
{
new Conta, interest;
new rent = 0;
caralhodepayday = true;
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i) && !IsPlayerNPC(i))
{
if (PlayerInfo[i][pLevel] > 0)
{
if (Multa[i] > 1)
{
if (!PlayerInfo[i][pJailed])
{
SendClientMessage(i, COR_TRIADS, "Vocк devia ter debitado suas dнvidas, lhe enviaram um pedido de prisгo.");
GameTextForPlayer(i, "~r~apreendido !", 2000, 1);
PlayerInfo[i][pJailTime] = 240;
SetPlayerInterior(i, 6);
SetPlayerPos(i, 264.6288, 77.5742, 1001.0391);
PlayerInfo[i][pJailed] = 1;
ResetPlayerWeapons(i);
WantedPoints[i] = 0;
format(gstring, sizeof(gstring), "Vocк foi preso por %d segundos. Fianзa: Desativada", PlayerInfo[i][pJailTime]);
SendClientMessage(i, COLOR_LIGHTBLUE, gstring);
}
}
if (MoneyMessage[i] == 1)
{
if (!PlayerInfo[i][pJailed])
{
SendClientMessage(i, COLOR_LIGHTRED, "Vocк nгo pagou a sua dнvida e foi preso.");
GameTextForPlayer(i, "~r~Preso!", 2000, 1);
SetPlayerInterior(i, 6);
SetPlayerPos(i, 264.6288, 77.5742, 1001.0391);
PlayerInfo[i][pJailed] = 1;
ResetPlayerWeaponsEx(i);
WantedPoints[i] = 0;
SetPlayerWantedLevel(i, 0);
PlayerInfo[i][pJailTime] = 600;
format(gstring, sizeof(gstring), "Vocк foi preso por %d segundos.", PlayerInfo[i][pJailTime]);
SendClientMessage(i, COLOR_LIGHTBLUE, gstring);
}
}
new playername2[MAX_PLAYER_NAME];
GetPlayerName(i, playername2, sizeof(playername2));
Conta = PlayerInfo[i][pConta];
new key = PlayerInfo[i][pPHousekey];
if (key != 255)
{
rent = HouseInfo[key][hRent];
if (strcmp(playername2, HouseInfo[key][hOwner], true) == 0)
{
rent = 0;
}
else if (rent > GetPlayerMoney(i))
{
PlayerInfo[i][pPHousekey] = 255;
SendClientMessage(i, COLOR_WHITE, "Vocк foi expulso(a).");
rent = 0;
}
HouseInfo[key][hTakings] = HouseInfo[key][hTakings] + rent;
}
new tmpintrate;
if (PlayerInfo[i][pVIP] == 1)
{
tmpintrate = 0;
}
else if (PlayerInfo[i][pVIP] == 2)
{
tmpintrate = 0;
}
else if (PlayerInfo[i][pSocio] == 1)
{
tmpintrate = 0;
}
else if (PlayerInfo[i][pSocio] == 2)
{
tmpintrate = 0;
}
else if (PlayerInfo[i][pSocio] == 3)
{
tmpintrate = 0;
}
else
{
tmpintrate = 10;
}
if (PlayerInfo[i][pPayDay] >= 3)
{
Tax += TaxValue; //Shorld work for every player online
PlayerInfo[i][pConta] -= TaxValue;
new checks = PlayerInfo[i][pSalario];
new ebill = (PlayerInfo[i][pConta] / 50) * (PlayerInfo[i][pLevel]);
ConsumingMoney[i] = 1;
if (PlayerInfo[i][pConta] > 0)
{
PlayerInfo[i][pConta] -= ebill;
SBizzInfo[4][sbTill] += 20;
BizzInfo[3][bTill] += 20;
SBizzInfo[11][sbTill] += 20;
}
else
{
ebill = 0;
}
interest = (PlayerInfo[i][pConta] / 1000) * (tmpintrate);
PlayerInfo[i][pExp]++;
PlayerPlayMusic(i);
PlayerInfo[i][pConta] = Conta + interest;
PlayerInfo[i][pConta] += checks;
SendClientMessage(i, COR_GRO, "[_BPV_] Pagamento [_BPV_]");
format(gstring, sizeof(gstring), " [Salario]: {0FFF00}[R$%d] ", checks);
SendClientMessage(i, COLOR_WHITE, gstring);
format(gstring, sizeof(gstring), " [Juros]: {FF0005}[0.%d] {FFFFFF}por cento", tmpintrate);
SendClientMessage(i, COLOR_WHITE, gstring);
format(gstring, sizeof(gstring), " [Antigo Saldo Bancбrio]: {646464}[R$%d] {FFFFFF}| [Novo Saldo Bancбrio]: {0FFF00}[R$%d]", Conta, PlayerInfo[i][pConta]);
SendClientMessage(i, COLOR_WHITE, gstring);
format(gstring, sizeof(gstring), " [Aluguel]: {FF0005}[-R$%d]", rent);
SendClientMessage(i, COLOR_WHITE, gstring);
PlayerPlaySound(i, 1185, 0.0, 0.0, 0.0);
format(gstring, sizeof(gstring), "~p~-==- ~g~Salario ~p~ -==-");
GameTextForPlayer(i, gstring, 5000, 1);
GivePlayerMoney(i, -100);
rent = 0;
PlayerInfo[i][pPayDay] = 0;
PlayerInfo[i][pSalario] = 0;
PlayerInfo[i][pCaixinha] = 0;
PlayerInfo[i][pConnectTime] += 1;
pban[i] = 0;
if (PlayerInfo[i][pEmprego] > 0) PlayerInfo[i][pPayDay] += 1;
if (PlayerInfo[i][pPayDay] >= 5)
{
PlayerInfo[i][pExp]++;
PlayerInfo[i][pPayDay] = 0;
}
}
if (PlayerInfo[i][pSocio] == 1)
{
PlayerInfo[i][pExp] += 3;
PlayerInfo[i][pPayDay] = 0;
}
if (PlayerInfo[i][pSocio] == 2)
{
PlayerInfo[i][pExp] += 4;
PlayerInfo[i][pPayDay] = 0;
}
if (PlayerInfo[i][pSocio] == 3)
{
PlayerInfo[i][pExp] += 5;
PlayerInfo[i][pPayDay] = 0;
}
if (PlayerInfo[i][pVIP] == 1)
{
PlayerInfo[i][pExp] += 1;
PlayerInfo[i][pPayDay] = 0;
}
if (PlayerInfo[i][pVIP] == 2)
{
PlayerInfo[i][pExp] += 2;
PlayerInfo[i][pPayDay] = 0;
}
if (WantedPoints[i] > 0)
{
WantedPoints[i] -= 1;
SetPlayerWantedLevel(i, WantedPoints[i]);
format(gstring, sizeof(gstring), "Nнvel de procurado: %d", WantedPoints[i]);
SendClientMessage(i, COLOR_YELLOW, gstring);
}
else
{
SendClientMessage(i, COLOR_LIGHTRED, "* Vocк nгo jogou tempo suficiente para receber salбrio!");
}
}
}
new lolbagui;
lolbagui = PlayerInfo[i][pExp];
new nxtlevel = PlayerInfo[i][pLevel] + 1;
if (PlayerInfo[i][pSocio] == 1)
{
nxtlevel = 1;
}
else if (PlayerInfo[i][pSocio] == 2)
{
nxtlevel = 2;
}
else if (PlayerInfo[i][pSocio] == 3)
{
nxtlevel = 3;
}
if (lolbagui >= nxtlevel * levelexp)
{
GameTextForPlayer(i, "~g~Respeito Adquirido!~n~~r~Digite /comprarnivel!", 5000, 1);
}
}
return true;
}
Aqui uma base que peguei para o sistema de salvar o tempo... Mas estou com uma dъvida, quando o tempo do timer chegar a 0, como faзo pra ele iniciar a contagem de novo?
PHP код:
new TempoParaPayday[MAX_PLAYERS], timertempoonline[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
TempoParaPayday[playerid] = DOF2_GetInt(local do arquivo, "TempoOnline");
timertempoonline[playerid] = SetTimerEx("TempoOnlineTimer", 60000, true, "i", playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
DOF2_SetInt(local do arquivo, "TempoOnline", TempoParaPayday[playerid]);
KillTimer(timertempoonline[playerid]);
return 1;
}
TempoOnlineTimer(playerid);
public TempoOnlineTimer(playerid)
{
TempoParaPayday[playerid]++;
return 1;
}