From ffc9f85c72574c87dc58748a01c68bb29231c365 Mon Sep 17 00:00:00 2001 From: Cooldude2606 Date: Sat, 14 Oct 2017 22:44:21 +0100 Subject: [PATCH] Control.lua clean --- control.lua | 24 +++++++++---------- .../ExpGaming - Rank Control.lua | 12 ++++++---- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/control.lua b/control.lua index de9aee4e..25d5c360 100644 --- a/control.lua +++ b/control.lua @@ -21,26 +21,26 @@ local function credit_loop(reg) for _,cred in pairs(reg) do table.insert(credits --set up to run other code and events require("mod-gui") credit_loop(require("locale/StdLib/event")) ---allows the code to be ran on a map where the code has just been added (ie init after init) -local function init() if not global.credits then Event.dispatch({name = Event.core_events.init, tick = 0}) end end +--this is the main code that starts the softmod +Event.soft_init = script.generate_event_name() +local function init() if not global.soft_init then script.raise_event(Event.soft_init,{tick=game.tick}) global.soft_init = true global.credits = credits end end Event.register(defines.events.on_player_joined_game,init) Event.register(defines.events.on_tick,init) ---loads all the other scripts -Event.gui_update = script.generate_event_name() -credit_loop(require("locale/file-header")) --below 'game.tick/(3600*game.speed)) % 15 == 0' raises the gui_update event every 15 minutes - feel free to change the update time +Event.gui_update = script.generate_event_name() Event.register(defines.events.on_tick, function(event) - -- +(15/2) splits it into two events every 15 minutes - if (game.tick/(3600*game.speed)) % 15 == 0 then + if (event.tick/(3600*game.speed)) % 15 == 0 then + -- updates the guis for every player (if gui is linked to gui_update) local online_players = #game.connected_players for i,player in pairs(game.connected_players) do - script.raise_event(Event.gui_update,{tick=game.tick,player=player,player_loop_index=i,players_online=online_players}) - -- script.raise_event(Event.gui_update,{tick=game.tick,player=game.player,player_loop_index=1,players_online=#game.connected_players}) + script.raise_event(Event.gui_update,{tick=event.tick,player=player,player_loop_index=i,players_online=online_players}) end - elseif ((game.tick/(3600*game.speed))+(15/2))% 15 == 0 then + elseif ((event.tick/(3600*game.speed))+(15/2))% 15 == 0 then + -- this is the system to auto rank players for i,player in pairs(game.connected_players) do - sudo(find_new_rank,{player}) + sudo(find_new_rank,{player,event.tick}) end end end) -Event.register(-1,function() global.credits = credits end) +--loads all the other scripts +credit_loop(require("locale/file-header")) \ No newline at end of file diff --git a/locale/ExpGaming-Core/ExpGaming - Rank Control.lua b/locale/ExpGaming-Core/ExpGaming - Rank Control.lua index 04edc542..91c70694 100644 --- a/locale/ExpGaming-Core/ExpGaming - Rank Control.lua +++ b/locale/ExpGaming-Core/ExpGaming - Rank Control.lua @@ -80,7 +80,8 @@ function rank_print(msg, rank, inv) end end --Give the user their new rank and raise the Event.rank_change event -function give_rank(player,rank,by_player) +function give_rank(player,rank,by_player,group_tick) + local tick = group_tick or game.tick local by_player = by_player or 'server' local rank = string_to_rank(rank) or rank or string_to_rank_group('User').lowest_rank local old_rank = get_rank(player) @@ -102,7 +103,7 @@ function give_rank(player,rank,by_player) player.permission_group = game.permissions.get_group(rank.name) player.tag = get_rank(player).tag if old_rank.name ~= 'Jail' then global.old_ranks[player.index]=old_rank.name end - script.raise_event(Event.rank_change, {player=player, by_player=by_player, new_rank=rank, old_rank=old_rank}) + script.raise_event(Event.rank_change, {tick=tick, player=player, by_player=by_player, new_rank=rank, old_rank=old_rank}) end --Revert the user's rank to what it was before the lastest change function revert_rank(player,by_player) @@ -110,7 +111,7 @@ function revert_rank(player,by_player) give_rank(player,rank,by_player) end --Give the player a new rank based on playtime and/or preset ranks -function find_new_rank(player) +function find_new_rank(player,group_tick) debug_write({'RANK','NEW-RANK','START'},player.name) local function loop_preset_rank(players,rank) debug_write({'RANK','NEW-RANK','LOOP-PRESET'},rank) @@ -118,6 +119,7 @@ function find_new_rank(player) if player.name:lower() == p:lower() then return rank end end end + local tick = group_tick or game.tick local current_rank = get_rank(player) local old_rank = get_rank(player) local possible_ranks = {current_rank} @@ -157,10 +159,10 @@ function find_new_rank(player) debug_write({'RANK','NEW-RANK','GIVE','VIA-SERVER'},player.name..' '..highest_rank.name) player.tag = highest_rank.tag player.permission_group=game.permissions.get_group('Guest') - script.raise_event(Event.rank_change, {player=player, by_player='server', new_rank=string_to_rank_group('User').lowest_rank, old_rank=string_to_rank_group('User').lowest_rank}) + script.raise_event(Event.rank_change, {tick=tick, player=player, by_player='server', new_rank=string_to_rank_group('User').lowest_rank, old_rank=string_to_rank_group('User').lowest_rank}) else debug_write({'RANK','NEW-RANK','GIVE','VIA-GIVE-RANK'},player.name..' '..highest_rank.name) - if highest_rank ~= current_rank then give_rank(player,highest_rank) end + if highest_rank ~= current_rank then give_rank(player,highest_rank,nil,tick) end end debug_write({'RANK','NEW-RANK','GIVE','END'},player.name) end