mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-31 13:01:39 +09:00
Fixing in progress
This commit is contained in:
85
control.lua
85
control.lua
@@ -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'})
|
||||||
|
|||||||
BIN
script.dat
BIN
script.dat
Binary file not shown.
Reference in New Issue
Block a user