From 336bbed051cbd1ffe85e199679e0fc8c5ce03497 Mon Sep 17 00:00:00 2001 From: Cooldude2606 Date: Wed, 3 Jan 2018 21:30:33 +0000 Subject: [PATCH] Added Admin Buttons --- Addons/Admin/admin.lua | 147 +++++++++++++++++++++++++++++++++++++++++ Addons/load.lua | 2 + locale/en/admin.cfg | 10 +++ 3 files changed, 159 insertions(+) create mode 100644 Addons/Admin/admin.lua create mode 100644 locale/en/admin.cfg diff --git a/Addons/Admin/admin.lua b/Addons/Admin/admin.lua new file mode 100644 index 00000000..4f7a4bf3 --- /dev/null +++ b/Addons/Admin/admin.lua @@ -0,0 +1,147 @@ +--[[ +Explosive Gaming + +This file can be used with permission but this and the credit below must remain in the file. +Contact a member of management on our discord to seek permission to use our code. +Any changes that you may make to the code are yours but that does not make the script yours. +Discord: https://discord.gg/r6dC2uK +]] +--Please Only Edit Below This Line----------------------------------------------------------- + +Admin = Admin or {} + +local function append_name(reason,player) + local name = Game.get_player(player).name + local reason = reason or 'No Reason' + if not string.find(string.lower(reason),string.lower(name)) then return reason..' - '..name + else return reason end +end + +local function open(player,pre_select_player,pre_select_action) + if Admin.center then Gui.center.clear(player) Admin.center.open(player,pre_select_player,pre_select_action) end +end + +function Admin.allowed(player) + local player = Game.get_player(player) + return player.admin +end + +function Admin.btn_flow(frame,buttons) + local frame = frame.add{ + type='flow', + name='admin' + } + frame.add{ + type='label', + caption='', + name='player' + }.style.visible = false + local function format(btn) + btn.style.height = 30 + btn.style.width = 30 + end + if not buttons or buttons.ban then format(Admin.ban_btn:draw(frame)) end + if not buttons or buttons.kick then format(Admin.kick_btn:draw(frame)) end + if not buttons or buttons.jail then format(Admin.jail_btn:draw(frame)) end + if not buttons or buttons.go_to then format(Admin.go_to_btn:draw(frame)) end + if not buttons or buttons.bring then format(Admin.bring_btn:draw(frame)) end + return frame.player +end + +function Admin.take_action(action,player,by_player,reason) + if action == 'Ban' then Admin.ban(player,by_player,reason) + elseif action == 'Kick' then Admin.kick(player,by_player,reason) + elseif action == 'Jail' then Admin.jail(player,by_player,reason) + elseif action == 'Go To' then Admin.go_to(player,by_player) + elseif action == 'Bring' then Admin.bring(player,by_player) + end +end + +Admin.ban_btn = Gui.inputs.add{ + type='button', + name='admin-ban', + caption='utility/danger_icon' +}:on_event('click',function(event) + local parent = event.element.parent + pre_select_player = parent.player and parent.player.caption or nil + open(event.player_index,pre_select_player,'Ban') +end) + +function Admin.ban(player,by_player,reason) + local player = Game.get_player(player) + local _player = Game.get_player(by_player) + local reason = append_name(reason,_player) + local color = Color.to_hex(defines.text_color.crit) + discord_emit{title='Player Ban',color=color,description='There was a player banned.',['Player:']='<>'..player.name,['By:']='<>'.._player.name,['Reason:']=reason} + game.ban_player(player,reason) +end + +Admin.kick_btn = Gui.inputs.add{ + type='button', + name='admin-kick', + caption='utility/warning_icon' +}:on_event('click',function(event) + local parent = event.element.parent + pre_select_player = parent.player and parent.player.caption or nil + open(event.player_index,pre_select_player,'Kick') +end) + +function Admin.kick(player,by_player,reason) + local player = Game.get_player(player) + local _player = Game.get_player(by_player) + local reason = append_name(reason,_player) + local color = Color.to_hex(defines.text_color.high) + discord_emit{title='Player Kick',color=color,description='There was a player kicked.',['Player:']='<>'..player.name,['By:']='<>'.._player.name,['Reason:']=reason} + game.kick_player(player,reason) +end + +Admin.jail_btn = Gui.inputs.add{ + type='button', + name='admin-jail', + caption='utility/clock' +}:on_event('click',function(event) + local parent = event.element.parent + pre_select_player = parent.player and parent.player.caption or nil + open(event.player_index,pre_select_player,'Jail') +end) + +function Admin.jail(player,by_player,reason) + local player = Game.get_player(player) + local _player = Game.get_player(by_player) + local reason = append_name(reason,_player) + local color = Color.to_hex(defines.text_color.med) + discord_emit{title='Player Jail',color=color,description='There was a player jailed.',['Player:']=player.name,['By:']='<>'.._player.name,['Reason:']=reason} + Ranking.give_rank(player,'Jail',_player) +end + +Admin.go_to_btn = Gui.inputs.add{ + type='button', + name='admin-go-to', + caption='utility/export_slot' +}:on_event('click',function(event) + local parent = event.element.parent + pre_select_player = parent.player and parent.player.caption or nil + Admin.go_to(pre_select_player,event.player_index) +end) + +function Admin.go_to(player,by_player) + local player = Game.get_player(player) + local _player = Game.get_player(by_player) + _player.teleport(player.surface.find_non_colliding_position('player',player.position,32,1),player.surface) +end + +Admin.bring_btn = Gui.inputs.add{ + type='button', + name='admin-bring', + caption='utility/import_slot' +}:on_event('click',function(event) + local parent = event.element.parent + pre_select_player = parent.player and parent.player.caption or nil + Admin.bring(pre_select_player,event.player_index) +end) + +function Admin.bring(player,by_player) + local player = Game.get_player(player) + local _player = Game.get_player(by_player) + player.teleport(_player.surface.find_non_colliding_position('player',_player.position,32,1),_player.surface) +end \ No newline at end of file diff --git a/Addons/load.lua b/Addons/load.lua index cc8390e2..11b66d23 100644 --- a/Addons/load.lua +++ b/Addons/load.lua @@ -18,6 +18,7 @@ end -- admin dir require('Admin/player-info') +require('Admin/admin') -- used with Guis/admin-gui, but can work without -- commands dir @@ -28,5 +29,6 @@ require('Guis/rockets') require('Guis/player-list') require('Guis/tasklist') require('Guis/rank-changer') +require('Guis/admin-gui') -- used with Admin/admin, requires Admin/admin -- other \ No newline at end of file diff --git a/locale/en/admin.cfg b/locale/en/admin.cfg new file mode 100644 index 00000000..025cd2eb --- /dev/null +++ b/locale/en/admin.cfg @@ -0,0 +1,10 @@ +[admin-commands] +name=Admin Commands +tooltip=Very powerful commands make their home here +no-info-file=No info file was found +message=Please select a player and an action to take, make sure to chose the correct one! +warning=Warning, this player is a higher rank so you cant change their rank. +short-reason=Warning, this is a short reason please think i it could be made more clear. +rank-high=This player is a higher rank, please use in game command if you are sure about this! +invalid=The player or the action is invalid please try again! +take-action=Take Action