const SECOND_PER_MINUTE = 60;
new const e_Bonus[DATA][] = {
{60, 120, 240}, //Bonus time (second)
{999, 456, 1341}, //Task index (do not change)
{500, 1000, 1500} //Money for time ($)
new i_BonusUser[MAX_PLAYERS + 1] = {NON_BONUS, ...};
register_plugin("Time Bonus RE", "rz 0.1", "(: [C][O][D][E] x");
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn_POST", 1);
public CBasePlayer_Spawn_POST(const id) {
if(is_user_alive(id) && i_BonusUser[id] != NON_BONUS) {
MoneyUser = get_member(id, m_iAccount),
Bonus = e_Bonus[monney_bonus][i_BonusUser[id]],
szTimeRefund[MAX_NAME_LENGTH + 1];
rg_add_account(id, min(MoneyUser + Bonus, MAX_MONEY), AS_SET);
get_bonus_time(id, szTimeRefund, MAX_NAME_LENGTH);
if(MoneyUser < MAX_MONEY)
chat(id, "^4СЕРВЕР^1** ^3Вы получили %i $, за игру более %s", Bonus, szTimeRefund);
public client_disconnected(id) {
remove_task(id + e_Bonus[taski_id][0]);
remove_task(id + e_Bonus[taski_id][1]);
remove_task(id + e_Bonus[taski_id][2]);
i_BonusUser[id] = NON_BONUS;
public client_putinserver(id) {
iTmp[0] = id + e_Bonus[taski_id][Position];
set_task(float(e_Bonus[check_time][Position++]), "set_time_bonus", .parameter = iTmp, .len = charsmax(iTmp));
public set_time_bonus(const iTmp[])
i_BonusUser[iTmp[0] - e_Bonus[taski_id][iTmp[1]]] = iTmp[1];
get_bonus_time(const id, szBuffer[], const Len) {
Time = e_Bonus[check_time][i_BonusUser[id]],
minute = Time / SECOND_PER_MINUTE,
second = Time % SECOND_PER_MINUTE;
formatex(szBuffer, Len, "%i минут%s ", minute, get_ending(minute));
add(szBuffer, Len, fmt("%i секунд%s", second, get_ending(second)));
get_ending(const Number) {
new szBuffer[MIN_LEN +1];
format(szBuffer, MIN_LEN, "ы");
stock chat(const id, const szMsg[], any:...) {
new szBuffer[MAX_LEN + 1];
vformat(szBuffer, MAX_LEN, szMsg, 3);
iMsg = get_user_msgid("SayText");
message_begin(MSG_ONE_UNRELIABLE , iMsg, .player = id);