From 9808ea73e0610209064c1d567526f1e1139d8cb7 Mon Sep 17 00:00:00 2001 From: Cooldude2606 Date: Mon, 1 May 2017 18:28:33 +0100 Subject: [PATCH] Fixing in progress --- control.lua | 85 ++++++++++++++++++---------------------------------- script.dat | Bin 190 -> 0 bytes 2 files changed, 29 insertions(+), 56 deletions(-) delete mode 100644 script.dat diff --git a/control.lua b/control.lua index 61bcc3b1..d478cda1 100644 --- a/control.lua +++ b/control.lua @@ -4,9 +4,8 @@ local version = 1 entityRemoved = {} entityCache = {} guis = {frames={},buttons={}} ---functions can not be included in the default list or be added by code +--this is a list of what will be put into the default list defaults = { - itemRotated = {}, --for disallow add to the list the end part of the input action --example: defines.input_action.drop_item -> 'drop_item' --http://lua-api.factorio.com/latest/defines.html#defines.input_action @@ -23,11 +22,11 @@ defaults = { {name='Jail',shortHand='Jail',tag='[Jail]',power=7,colour={r=50,g=50,b=50},disallow={'open_character_gui','begin_mining','start_walking','player_leave_game','build_terrain','remove_cables','launch_rocket','cancel_research','set_auto_launch_rocket','change_programmable_speaker_alert_parameters','reset_assembling_machine','drop_item','set_allow_commands','server_command','edit_permission_group','delete_permission_group','add_permission_group'}} }, autoRanks={ - Owner={'badgamernl','BADgamerNL'}, + Owner={'badgamernl'}, ['Community Manager']={'arty714'}, Developer={'Cooldude2606'}, Admin={'eissturm','PropangasEddy'}, - Mod={'Alanore','Aquaday','cafeslacker','CrashKonijn','Drahc_pro','Flip','freek18','Hobbitkicker','hud','Matthias','MeDDish','Mindxt20','MottledPetrel','Mr_Happy_212','Phoenix27833','Sand3r205','ScarbVis','Smou','steentje77','TopHatGaming123'}, + Mod={'Alanore','Aquaday','cafeslacker','CrashKonijn','Drahc_pro','FlipHalfing90','freek18','Hobbitkicker','hud','Matthias','MeDDish','Mindxt20','MottledPetrel','Mr_Happy_212','Phoenix27833','samy115','Sand3r205','scarbvis','Smou','steentje77','tophatgaming123'}, Donator={}, Member={}, Regular={}, @@ -41,33 +40,6 @@ defaults = { warningAllowed = nil timeForRegular = 180 CHUNK_SIZE = 32 - -function loadVar(t) - if t == nil then - local g = nil - if game.players[1].gui.left.hidden then - g = game.players[1].gui.left.hidden.caption - else - g = game.players[1].gui.left.add{type='frame',name='hidden',caption=table.tostring(defaults)}.caption - game.players[1].gui.left.hidden.style.visible = false - end - gTable = loadstring('return '..g)() - else gTable = t end - itemRotated = gTable.itemRotated - ranks= gTable.ranks - autoRanks= gTable.autoRanks - selected= gTable.selected - oldRanks= gTable.oldRanks -end -loadVar(defaults) -function saveVar() - gTable.itemRotated = itemRotated - gTable.ranks = ranks - gTable.autoRanks = autoRanks - gTable.selected= selected - gTable.oldRanks= oldRanks - game.players[1].gui.left.hidden.caption = table.tostring(gTable) -end ---------------------------------------------------------------------------------------- ---------------------------Factorio Code Do Not Remove---------------------------------- ---------------------------------------------------------------------------------------- @@ -94,7 +66,7 @@ silo_script.add_remote_interface() ---------------------------------------------------------------------------------------- function getRank(player) if player then - for _,rank in pairs(ranks) do + for _,rank in pairs(global.ranks) do if player.permission_group == game.permissions.get_group(rank.name) then return rank end end return stringToRank('Guest') @@ -104,7 +76,7 @@ end function stringToRank(string) if type(string) == 'string' then local Foundranks={} - for _,rank in pairs(ranks) do + for _,rank in pairs(global.ranks) do if rank.name:lower() == string:lower() then return rank end if rank.name:lower():find(string:lower()) then table.insert(Foundranks,rank) end end @@ -143,12 +115,11 @@ function giveRank(player,rank,byPlayer) player.permission_group = game.permissions.get_group(rank.name) drawToolbar(player) drawPlayerList() - oldRanks[player.index]=oldRank.name - saveVar() + global.oldRanks[player.index]=oldRank.name end function revertRank(player,byPlayer) - local rank = stringToRank(oldRanks[player.index]) + local rank = stringToRank(global.oldRanks[player.index]) giveRank(player,rank,byPlayer) end @@ -156,10 +127,10 @@ function autoRank(player) local currentRank = getRank(player) local playerAutoRank = nil local oldRank = getRank(player) - for rank,players in pairs(autoRanks) do + for rank,players in pairs(global.autoRanks) do local Break = false for _,p in pairs(players) do - if player.name == p then playerAutoRank = stringToRank(rank) Break = true break end + if player.name:lower() == p:lower() then playerAutoRank = stringToRank(rank) Break = true break end end if Break then break end end @@ -169,14 +140,13 @@ function autoRank(player) end if currentRank.power > playerAutoRank.power and currentRank.name ~='Jail' then if playerAutoRank.name == 'Guest' then - player.permission_group=game.permissions.get_group(playerAutoRank.name) + player.permission_group=game.permissions.get_group('Guest') else giveRank(player,playerAutoRank) end end if getRank(player).power <= 3 and not player.admin then callRank(player.name..' needs to be promoted.') end - if oldRank.name ~= getRank(player).name then oldRanks[player.index]=oldRank.name end - saveVar() + if oldRank.name ~= getRank(player).name then global.oldRanks[player.index]=oldRank.name end end ---------------------------------------------------------------------------------------- ---------------------------Common use functions----------------------------------------- @@ -192,7 +162,7 @@ function ticktominutes (tick) end function clearSelection(player) - selected[player.index] = {} + global.selected[player.index] = {} end function autoMessage() @@ -340,10 +310,10 @@ script.on_event(defines.events.on_player_respawned, function(event) end) script.on_event(defines.events.on_player_joined_game, function(event) - loadVar() --runs when the first player joins to make the permission groups - if #game.players == 1 then - for _,rank in pairs(ranks) do + if #game.players == 1 and global.ranks == nil then + for name,value in pairs(defaults) do global[name] = value end + for _,rank in pairs(global.ranks) do game.permissions.create_group(rank.name) for _,toRemove in pairs(rank.disallow) do game.permissions.get_group(rank.name).set_allows_action(defines.input_action[toRemove],false) @@ -380,16 +350,16 @@ script.on_event(defines.events.on_gui_click, function(event) end elseif event.element.type == 'checkbox' then if event.element.name == 'select' then - if not selected[event.player_index] then selected[event.player_index] = {} end + global.selected[event.player_index] = global.selected[event.player_index] or {} + selected = global.selected[event.player_index] if event.element.state then - table.insert(selected[event.player_index],event.element.parent.name) + table.insert(selected,event.element.parent.name) else - for _,name in pairs(selected[event.player_index]) do - if name == event.element.parent.name then table.remove(selected[event.player_index],_) break end + for _,name in pairs(selected) do + if name == event.element.parent.name then table.remove(selected,_) break end end end end - saveVar() end end) @@ -582,7 +552,7 @@ function drawPlayerTable(player, frame, commands, select,filters) elseif filter == 'online' then if p.connected == false then addPlayer = false break end elseif filter == 'offline' then if p.connected == true then addPlayer = false break end elseif filter == 'lower' then if getRank(p).power <= getRank(player).power then addPlayer = false break end - elseif filter == 'selected' then local Break = nil for _,name in pairs(selected[player.index]) do if name == p.name then Break = true break end end if not Break then addPlayer = false break end + elseif filter == 'selected' then local Break = nil for _,name in pairs(global.selected[player.index]) do if name == p.name then Break = true break end end if not Break then addPlayer = false break end elseif type(filter)=='number' then if filter > ticktominutes(p.online_time) then addPlayer = false break end elseif type(filter)=='string' then if p.name:lower():find(filter:lower()) == nil then addPlayer = false break end end @@ -616,7 +586,7 @@ function drawPlayerTable(player, frame, commands, select,filters) elseif select then pTable.add{name=p.name, type="flow"} local state = false - for _,name in pairs(selected[player.index]) do if name == p.name then state = true break end end + for _,name in pairs(global.selected[player.index]) do if name == p.name then state = true break end end pTable[p.name].add{name='select', type="checkbox",state=state} end end @@ -699,12 +669,12 @@ addButton('btn_toolbar_automessage',function() autoMessage() end) addButton('tp_all',function(player,frame) for i,p in pairs(game.connected_players) do local pos = game.surfaces[player.surface.name].find_non_colliding_position("player", player.position, 32, 1) if p ~= player then p.teleport(pos) end end end) addButton('revive_dead_entitys_range',function(player,frame) if tonumber(frame.parent.range.text) then local range = tonumber(frame.parent.range.text) for key, entity in pairs(game.surfaces[1].find_entities_filtered({area={{player.position.x-range,player.position.y-range},{player.position.x+range,player.position.y+range}},type = "entity-ghost"})) do entity.revive() end end end) addButton('add_dev_items',function(player,frame) player.insert{name="deconstruction-planner", count = 1} player.insert{name="blueprint-book", count = 1} player.insert{name="blueprint", count = 20} end) -addButton('sendMessage',function(player,frame) local rank = stringToRank(frame.parent.message.rank.text) if rank then callRank(frame.parent.message.message.text,rank.name) else for _,rank in pairs(ranks) do player.print(rank.name) end end end) +addButton('sendMessage',function(player,frame) local rank = stringToRank(frame.parent.message.rank.items[frame.parent.message.rank.selected_index]) if rank then callRank(frame.parent.message.message.text,rank.name) end end) addButton('setRanks', function(player,frame) rank = stringToRank(frame.parent.rank_input.items[frame.parent.rank_input.selected_index]) if rank then - for _,playerName in pairs(selected[player.index]) do + for _,playerName in pairs(global.selected[player.index]) do p=game.players[playerName] if getRank(player).power < getRank(p).power and rank.power > getRank(player).power then giveRank(p,rank,player) @@ -726,7 +696,9 @@ addTab('Admin', 'Commands', 'Random useful commands', frame.add{type='textfield',name='range',text='Range'} frame.add{type='flow',name='message'} frame.message.add{type='textfield',name='message',text='Enter message'} - frame.message.add{type='textfield',name='rank',text='Enter rank'} + frame.message.add{type='drop-down',name='rank'} + for _,rank in pairs(global.ranks) do if rank.power >= getRank(player).power then frame.message.rank.add_item(rank.name) end end + frame.message.rank.selected_index = 1 drawButton(frame,'sendMessage','Send Message','Send a message to all ranks higher than the slected') drawButton(frame,'tp_all','TP All Here','Brings all players to you') end) @@ -741,7 +713,8 @@ addTab('Admin','Edit Ranks', 'Edit the ranks of players below you', frame.add{type='flow',name='rank',direction='horizontal'} frame.rank.add{name='rank_label',type='label',caption='Rank'} frame.rank.add{name='rank_input',type='drop-down'} - for _,rank in pairs(ranks) do if rank.power > getRank(player).power then frame.rank.rank_input.add_item(rank.name) end end + for _,rank in pairs(global.ranks) do if rank.power > getRank(player).power then frame.rank.rank_input.add_item(rank.name) end end + frame.rank.rank_input.selected_index = 1 drawButton(frame.rank,'setRanks','Set Ranks','Sets the rank of all selected players') drawButton(frame.rank,'clearSelection','Clear Selection','Clears all currently selected players') drawPlayerTable(player, frame, false, true, {'lower'}) diff --git a/script.dat b/script.dat deleted file mode 100644 index ebac4e5d22066b66062802934e91976648370a65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190 zcmZXL!3x4K5Jcm_v%gS!wTF5x`4W*3(v>W(S;=l%q4ab7PeTuNp>fh=Zrb*=2$($jSE4)8p88g2YZj#)tlGntiyz=uqJ}wECY0zneaWp|*CB(JoEkSk8sEe!L3RKD