Fixing in progress

This commit is contained in:
Cooldude2606
2017-05-01 18:28:33 +01:00
parent 95613d113c
commit 9808ea73e0
2 changed files with 29 additions and 56 deletions

View File

@@ -4,9 +4,8 @@ local version = 1
entityRemoved = {} entityRemoved = {}
entityCache = {} entityCache = {}
guis = {frames={},buttons={}} 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 = { defaults = {
itemRotated = {},
--for disallow add to the list the end part of the input action --for disallow add to the list the end part of the input action
--example: defines.input_action.drop_item -> 'drop_item' --example: defines.input_action.drop_item -> 'drop_item'
--http://lua-api.factorio.com/latest/defines.html#defines.input_action --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'}} {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={ autoRanks={
Owner={'badgamernl','BADgamerNL'}, Owner={'badgamernl'},
['Community Manager']={'arty714'}, ['Community Manager']={'arty714'},
Developer={'Cooldude2606'}, Developer={'Cooldude2606'},
Admin={'eissturm','PropangasEddy'}, 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={}, Donator={},
Member={}, Member={},
Regular={}, Regular={},
@@ -41,33 +40,6 @@ defaults = {
warningAllowed = nil warningAllowed = nil
timeForRegular = 180 timeForRegular = 180
CHUNK_SIZE = 32 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---------------------------------- ---------------------------Factorio Code Do Not Remove----------------------------------
---------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------
@@ -94,7 +66,7 @@ silo_script.add_remote_interface()
---------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------
function getRank(player) function getRank(player)
if player then 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 if player.permission_group == game.permissions.get_group(rank.name) then return rank end
end end
return stringToRank('Guest') return stringToRank('Guest')
@@ -104,7 +76,7 @@ end
function stringToRank(string) function stringToRank(string)
if type(string) == 'string' then if type(string) == 'string' then
local Foundranks={} 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() == string:lower() then return rank end
if rank.name:lower():find(string:lower()) then table.insert(Foundranks,rank) end if rank.name:lower():find(string:lower()) then table.insert(Foundranks,rank) end
end end
@@ -143,12 +115,11 @@ function giveRank(player,rank,byPlayer)
player.permission_group = game.permissions.get_group(rank.name) player.permission_group = game.permissions.get_group(rank.name)
drawToolbar(player) drawToolbar(player)
drawPlayerList() drawPlayerList()
oldRanks[player.index]=oldRank.name global.oldRanks[player.index]=oldRank.name
saveVar()
end end
function revertRank(player,byPlayer) function revertRank(player,byPlayer)
local rank = stringToRank(oldRanks[player.index]) local rank = stringToRank(global.oldRanks[player.index])
giveRank(player,rank,byPlayer) giveRank(player,rank,byPlayer)
end end
@@ -156,10 +127,10 @@ function autoRank(player)
local currentRank = getRank(player) local currentRank = getRank(player)
local playerAutoRank = nil local playerAutoRank = nil
local oldRank = getRank(player) local oldRank = getRank(player)
for rank,players in pairs(autoRanks) do for rank,players in pairs(global.autoRanks) do
local Break = false local Break = false
for _,p in pairs(players) do 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 end
if Break then break end if Break then break end
end end
@@ -169,14 +140,13 @@ function autoRank(player)
end end
if currentRank.power > playerAutoRank.power and currentRank.name ~='Jail' then if currentRank.power > playerAutoRank.power and currentRank.name ~='Jail' then
if playerAutoRank.name == 'Guest' then if playerAutoRank.name == 'Guest' then
player.permission_group=game.permissions.get_group(playerAutoRank.name) player.permission_group=game.permissions.get_group('Guest')
else else
giveRank(player,playerAutoRank) giveRank(player,playerAutoRank)
end end
end end
if getRank(player).power <= 3 and not player.admin then callRank(player.name..' needs to be promoted.') 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 if oldRank.name ~= getRank(player).name then global.oldRanks[player.index]=oldRank.name end
saveVar()
end end
---------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------
---------------------------Common use functions----------------------------------------- ---------------------------Common use functions-----------------------------------------
@@ -192,7 +162,7 @@ function ticktominutes (tick)
end end
function clearSelection(player) function clearSelection(player)
selected[player.index] = {} global.selected[player.index] = {}
end end
function autoMessage() function autoMessage()
@@ -340,10 +310,10 @@ script.on_event(defines.events.on_player_respawned, function(event)
end) end)
script.on_event(defines.events.on_player_joined_game, function(event) script.on_event(defines.events.on_player_joined_game, function(event)
loadVar()
--runs when the first player joins to make the permission groups --runs when the first player joins to make the permission groups
if #game.players == 1 then if #game.players == 1 and global.ranks == nil then
for _,rank in pairs(ranks) do for name,value in pairs(defaults) do global[name] = value end
for _,rank in pairs(global.ranks) do
game.permissions.create_group(rank.name) game.permissions.create_group(rank.name)
for _,toRemove in pairs(rank.disallow) do for _,toRemove in pairs(rank.disallow) do
game.permissions.get_group(rank.name).set_allows_action(defines.input_action[toRemove],false) 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 end
elseif event.element.type == 'checkbox' then elseif event.element.type == 'checkbox' then
if event.element.name == 'select' 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 if event.element.state then
table.insert(selected[event.player_index],event.element.parent.name) table.insert(selected,event.element.parent.name)
else else
for _,name in pairs(selected[event.player_index]) do for _,name in pairs(selected) do
if name == event.element.parent.name then table.remove(selected[event.player_index],_) break end if name == event.element.parent.name then table.remove(selected,_) break end
end end
end end
end end
saveVar()
end end
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 == '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 == '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 == '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)=='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 elseif type(filter)=='string' then if p.name:lower():find(filter:lower()) == nil then addPlayer = false break end
end end
@@ -616,7 +586,7 @@ function drawPlayerTable(player, frame, commands, select,filters)
elseif select then elseif select then
pTable.add{name=p.name, type="flow"} pTable.add{name=p.name, type="flow"}
local state = false 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} pTable[p.name].add{name='select', type="checkbox",state=state}
end end
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('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('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('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', addButton('setRanks',
function(player,frame) function(player,frame)
rank = stringToRank(frame.parent.rank_input.items[frame.parent.rank_input.selected_index]) rank = stringToRank(frame.parent.rank_input.items[frame.parent.rank_input.selected_index])
if rank then if rank then
for _,playerName in pairs(selected[player.index]) do for _,playerName in pairs(global.selected[player.index]) do
p=game.players[playerName] p=game.players[playerName]
if getRank(player).power < getRank(p).power and rank.power > getRank(player).power then if getRank(player).power < getRank(p).power and rank.power > getRank(player).power then
giveRank(p,rank,player) 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='textfield',name='range',text='Range'}
frame.add{type='flow',name='message'} frame.add{type='flow',name='message'}
frame.message.add{type='textfield',name='message',text='Enter 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,'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') drawButton(frame,'tp_all','TP All Here','Brings all players to you')
end) 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.add{type='flow',name='rank',direction='horizontal'}
frame.rank.add{name='rank_label',type='label',caption='Rank'} frame.rank.add{name='rank_label',type='label',caption='Rank'}
frame.rank.add{name='rank_input',type='drop-down'} 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,'setRanks','Set Ranks','Sets the rank of all selected players')
drawButton(frame.rank,'clearSelection','Clear Selection','Clears all currently selected players') drawButton(frame.rank,'clearSelection','Clear Selection','Clears all currently selected players')
drawPlayerTable(player, frame, false, true, {'lower'}) drawPlayerTable(player, frame, false, true, {'lower'})

Binary file not shown.