mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-27 11:35:22 +09:00
Rank debug added
This commit is contained in:
@@ -21,6 +21,7 @@ local function credit_loop(reg) for _,cred in pairs(reg) do table.insert(credits
|
||||
--Return the rank of a given player
|
||||
function get_rank(player)
|
||||
if player then
|
||||
debug_write({'RANK','PLAYER-GET'},player.name)
|
||||
for _,rank in pairs(get_ranks()) do
|
||||
if player.permission_group == game.permissions.get_group(rank.name) then return rank end
|
||||
end
|
||||
@@ -61,6 +62,7 @@ end
|
||||
function rank_print(msg, rank, inv)
|
||||
local rank = string_to_rank(rank) or string_to_rank_group('Moderation').lowest_rank -- default mod or higher
|
||||
local inv = inv or false
|
||||
debug_write({'RANK','PRINT'},rank.name..': '..msg)
|
||||
for _, player in pairs(game.players) do
|
||||
--this part uses sudo to soread it other many ticks
|
||||
player_rank_power = get_rank(player).power
|
||||
@@ -87,9 +89,11 @@ function give_rank(player,rank,by_player)
|
||||
--messaging
|
||||
local message = 'demoted'
|
||||
if rank.power <= old_rank.power then message = 'promoted' end
|
||||
if by_player.name then
|
||||
if by_player.name then
|
||||
debug_write({'RANK','GIVE'},'player: '..player.name..' by player: '..by_player.name..' new rank: '..rank.name..' old rank: '..old_rank.name)
|
||||
rank_print(player.name..' was '..message..' to '..rank.name..' by '..by_player.name,'Guest')
|
||||
else
|
||||
debug_write({'RANK','GIVE'},'player: '..player.name..' by player: <server> new rank: '..rank.name..' old rank: '..old_rank.name)
|
||||
rank_print(player.name..' was '..message..' to '..rank.name..' by <server>','Guest')
|
||||
end
|
||||
if rank.name ~= 'Guest' then player.print('You have been given the '..rank.name..' Rank!') end
|
||||
@@ -107,7 +111,9 @@ function revert_rank(player,by_player)
|
||||
end
|
||||
--Give the player a new rank based on playtime and/or preset ranks
|
||||
function find_new_rank(player)
|
||||
debug_write({'RANK','NEW-RANK','START'},player.name)
|
||||
local function loop_preset_rank(players,rank)
|
||||
debug_write({'RANK','NEW-RANK','LOOP-PRESET'},rank)
|
||||
for _,p in pairs(players) do
|
||||
if player.name:lower() == p:lower() then return rank end
|
||||
end
|
||||
@@ -116,38 +122,51 @@ function find_new_rank(player)
|
||||
local old_rank = get_rank(player)
|
||||
local possible_ranks = {current_rank}
|
||||
--Loop through preset ranks only if playtime is less than 5 minutes
|
||||
debug_write({'RANK','NEW-RANK','PRESET-CHEAK'},tick_to_min(player.online_time))
|
||||
if tick_to_min(player.online_time) < 5 then
|
||||
debug_write({'RANK','NEW-RANK','PRESET-START'},player.name)
|
||||
for rank,players in pairs(global.preset_ranks) do
|
||||
local found_rank = loop_preset_rank(players, rank)
|
||||
if found_rank then table.insert(possible_ranks,string_to_rank(found_rank)) break end
|
||||
if found_rank then debug_write({'RANK','NEW-RANK','ADD'},found_rank) table.insert(possible_ranks,string_to_rank(found_rank)) break end
|
||||
end
|
||||
end
|
||||
-- to reduce lag if the player is already higher than any time rank then it does not cheak
|
||||
-- also there play time must be higher than the lowest required for a rank
|
||||
debug_write({'RANK','NEW-RANK','TIME-CHEAK'},tick_to_min(player.online_time))
|
||||
if current_rank.power > global.ranks.highest_timed_rank.power and tick_to_min(player.online_time) >= global.ranks.lowest_timed_rank.time then
|
||||
debug_write({'RANK','NEW-RANK','TIME-START'},player.name)
|
||||
--Loop through rank times
|
||||
for _,rank in pairs(get_ranks()) do
|
||||
if rank.time and tick_to_min(player.online_time) >= rank.time then table.insert(possible_ranks,rank) end
|
||||
for _,rank in pairs(get_ranks()) do
|
||||
if rank.time then debug_write({'RANK','NEW-RANK','START'},rank.name..' '..rank.time) end
|
||||
if rank.time and tick_to_min(player.online_time) >= rank.time then debug_write({'RANK','NEW-RANK','ADD'},rank.name) table.insert(possible_ranks,rank) end
|
||||
end
|
||||
end
|
||||
--Loop through possible ranks
|
||||
debug_write({'RANK','NEW-RANK','JAIL-CHEAK'},current_rank.name)
|
||||
if current_rank.name ~='Jail' then
|
||||
debug_write({'RANK','NEW-RANK','GIVE','START'},possible_ranks)
|
||||
local highest_rank = possible_ranks[1]
|
||||
for _,rank in pairs(possible_ranks) do
|
||||
debug_write({'RANK','NEW-RANK','GIVE','POSSIBLE-CHEAK'},rank.name)
|
||||
if rank.power < highest_rank.power then highest_rank = rank end
|
||||
end
|
||||
debug_write({'RANK','NEW-RANK','GIVE','HIGHEST'},highest_rank.name)
|
||||
--Give player new rank if availble
|
||||
if highest_rank.name == 'Guest' then
|
||||
-- to avoid spam in chat
|
||||
debug_write({'RANK','NEW-RANK','GIVE','VIA-SERVER'},player.name..' '..highest_rank.name)
|
||||
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})
|
||||
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
|
||||
end
|
||||
debug_write({'RANK','NEW-RANK','GIVE','END'},player.name)
|
||||
end
|
||||
--Lose ends
|
||||
if get_rank(player).power <= string_to_rank_group('Moderation').lowest_rank.power and not player.admin then rank_print(player.name..' needs to be promoted.') end
|
||||
if old_rank.name ~= get_rank(player).name then global.old_ranks[player.index]=old_rank.name end
|
||||
debug_write({'RANK','NEW-RANK','END'},player.name)
|
||||
end
|
||||
-- returns a list with every players current rank, or just the players of the rank given, includes online time
|
||||
function get_ranked_players(rank)
|
||||
@@ -162,6 +181,7 @@ end
|
||||
--Event handlers
|
||||
Event.rank_change = script.generate_event_name()
|
||||
Event.register(Event.rank_change,function(event)
|
||||
debug_write({'RANK','EVENT'},event)
|
||||
if event.new_rank == event.old_rank then return end
|
||||
if event.by_player == 'server' then
|
||||
game.write_file('rank-change.log','\n'..game.tick..' Player: '..event.player.name..' Was given rank: '..event.new_rank.name..' By: <server> Their rank was: '..event.old_rank.name, true, 0)
|
||||
@@ -169,11 +189,14 @@ Event.register(Event.rank_change,function(event)
|
||||
game.write_file('rank-change.log','\n'..game.tick..' Player: '..event.player.name..' Was given rank: '..event.new_rank.name..' By: '..event.by_player.name..' Their rank was: '..event.old_rank.name, true, 0)
|
||||
end
|
||||
end)
|
||||
Event.register(-1,function()
|
||||
Event.register(-1,function()
|
||||
debug_write({'RANK','SETUP'},'start')
|
||||
global.old_ranks = {}
|
||||
for _,rank in pairs(get_ranks()) do
|
||||
debug_write({'RANK','SETUP'},'added: '..rank.name)
|
||||
game.permissions.create_group(rank.name)
|
||||
for _,toRemove in pairs(rank.disallow) do
|
||||
debug_write({'RANK','SETUP'},'blocked: '..toRemove)
|
||||
game.permissions.get_group(rank.name).set_allows_action(defines.input_action[toRemove],false)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user