- -- Playtime interval
- local interval = 1200;
- -- Event constants
- local ELUNA_EVENT_ON_LUA_STATE_OPEN = 33;
- local PLAYER_EVENT_ON_LOGIN = 3;
- -- Data table.
- local wage = {};
- -- Add all players currently in world to table.
- local function onElunaStateOpen()
- for _, player in pairs(GetPlayersInWorld()) do
- wage[player:GetGUIDLow()] = {
- session_time = 0,
- update_time = os.time() + interval
- };
- end
- end
- RegisterServerEvent(ELUNA_EVENT_ON_LUA_STATE_OPEN, onElunaStateOpen);
- -- Add player to table on login.
- local function onLogin(_, player)
- wage[player:GetGUIDLow()] = {
- session_time = 0,
- update_time = os.time() + interval
- };
- end
- RegisterPlayerEvent(PLAYER_EVENT_ON_LOGIN, onLogin);
- -- Function that will reward players if needed.
- local function rewardPlayers()
- for _, player in pairs(GetPlayersInWorld()) do
- local player_wage = wage[player:GetGUIDLow()];
- if player_wage and player_wage.update_time <= os.time() then
- wage[player:GetGUIDLow()].session_time = wage[player:GetGUIDLow()].session_time + interval / 60;
- player:ModifyMoney(20);
- player:SendBroadcastMessage("You have played for " .. player_wage.session_time .. " minutes this session and have earned 20 copper.");
- wage[player:GetGUIDLow()].update_time = os.time() + interval;
- end
- end
- end
- CreateLuaEvent(rewardPlayers, 60000, 0);