Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- print("ElunaGate GM Addon loaded!")
- local GMAddon = {
- Prefix = "GMAddon",
- Cache = {};
- };
- -- [[OnChat Trigger]]
- function OnChat(Event, Player, Message, Type, Language, Misc)
- if (string.lower(Message) == "gmaddon") then
- if (Player:IsGM()) then
- RenderMainMenu(Player)
- else
- Player:SendBroadcastMessage("You do not have the correct permissions to access this addon!")
- end
- end
- end
- RegisterPlayerEvent(18, OnChat)
- -- [[ MAIN MENU ]]
- function RenderMainMenu(Player)
- GMAddon.MainButtons = {
- "Ports",
- "Tickets",
- "Items",
- "Skills",
- "Spells",
- "Game Objects",
- "NPCs",
- "Players",
- "Pets",
- "Comms",
- "Ban Stick",
- "Server",
- "Overrides",
- "Modify",
- };
- local YOffset = 320
- local Frame = CreateFrame(GMAddon.Prefix.."MainFrame")
- Frame:SetText("ElunaGate GM")
- Frame:SetCantMove(false)
- Frame:SetHeight(YOffset)
- Frame:SetWidth(150)
- for k, v in pairs(GMAddon.MainButtons) do
- local Button = Frame:CreateButton(GMAddon.Prefix..v)
- Button:SetText(v)
- Button:SetHeight(15)
- Button:SetWidth(130)
- Button:SetYOffset(YOffset-200)
- Button:SetXOffset(2)
- Button:SetEvent("OnClick", function(self, event, player,_)
- RenderSubMenu(Player, v)
- Frame:Hide(Player)
- end
- )
- YOffset = YOffset - 20
- end
- Frame:Send(Player)
- end
- function RenderSubMenu(Player, Type)
- local Frame = CreateFrame(GMAddon.Prefix.."SelectFrame")
- Frame:SetText(Type)
- Frame:SetCantMove(false)
- -- [[ Insert a case for each MAIN button below! ]]
- if(Type == "Ports") then
- Frame:SetHeight(320)
- Frame:SetWidth(150)
- -- [[ PORT NAME EDIT BOX ]]
- local PortNameBox = Frame:CreateEditBox(GMAddon.Prefix..Type.."PortName")
- PortNameBox:SetStatusLink(GMAddon.Prefix..Type.."PortButton")
- PortNameBox:SetHeight(15)
- PortNameBox:SetWidth(100)
- PortNameBox:SetYOffset(120)
- PortNameBox:SetXOffset(3)
- PortNameBox:SetTooltip("Input port name here.")
- -- [[ PORT BUTTON ]]
- local PortButton = Frame:CreateButton(GMAddon.Prefix..Type.."PortButton")
- PortButton:SetText("Port To")
- PortButton:SetHeight(15)
- PortButton:SetWidth(100)
- PortButton:SetYOffset(100)
- PortButton:SetXOffset(0)
- PortButton:SetEvent("OnClick", function(self, event, player, Cache)
- end
- )
- -- [[ PLAYER NAME EDIT BOX ]]
- local PlayerNameBox = Frame:CreateEditBox(GMAddon.Prefix..Type.."PlayerName")
- PlayerNameBox:SetStatusLink(GMAddon.Prefix..Type.."SummonButton")
- PlayerNameBox:SetStatusLink(GMAddon.Prefix..Type.."AppearButton")
- PlayerNameBox:SetStatusLink(GMAddon.Prefix..Type.."WPPlayerButton")
- PlayerNameBox:SetHeight(15)
- PlayerNameBox:SetWidth(100)
- PlayerNameBox:SetYOffset(80)
- PlayerNameBox:SetXOffset(3)
- PlayerNameBox:SetTooltip("Input player name here.")
- -- [[ SUMMON BUTTON ]]
- local SummonButton = Frame:CreateButton(GMAddon.Prefix..Type.."SummonButton")
- SummonButton:SetText("Summon")
- SummonButton:SetHeight(15)
- SummonButton:SetWidth(100)
- SummonButton:SetYOffset(60)
- SummonButton:SetXOffset(0)
- SummonButton:SetEvent("OnClick", function(self, event, player, Cache)
- local PlayerNameBox = Cache[3]
- if(PlayerNameBox == nil) then
- player:SendBroadcastMessage("Please enter a player name to use this feature.")
- return;
- end
- local SelectedPlayer = GetPlayerByName(PlayerNameBox)
- if not SelectedPlayer then
- player:SendBroadcastMessage(PlayerNameBox.." is currently not in game.")
- return;
- end
- SelectedPlayer:Teleport(player:GetMapId(), player:GetX(), player:GetY(), player:GetZ(), player:GetO())
- player:SendBroadcastMessage("Summoning "..PlayerNameBox..".")
- end
- )
- -- [[ APPEAR BUTTON ]]
- local AppearButton = Frame:CreateButton(GMAddon.Prefix..Type.."AppearButton")
- AppearButton:SetText("Appear")
- AppearButton:SetHeight(15)
- AppearButton:SetWidth(100)
- AppearButton:SetYOffset(40)
- AppearButton:SetXOffset(0)
- AppearButton:SetEvent("OnClick", function(self, event, player, Cache)
- local PlayerNameBox = Cache[3]
- if(PlayerNameBox == nil) then
- player:SendBroadcastMessage("Please enter a player name to use this feature.")
- return;
- end
- local SelectedPlayer = GetPlayerByName(PlayerNameBox)
- if not SelectedPlayer then
- player:SendBroadcastMessage(PlayerNameBox.." is currently not in game.")
- return;
- end
- player:Teleport(SelectedPlayer:GetMapId(), SelectedPlayer:GetX(), SelectedPlayer:GetY(), SelectedPlayer:GetZ(), SelectedPlayer:GetO())
- player:SendBroadcastMessage("Appearing to "..PlayerNameBox..".")
- end
- )
- -- [[ MAP EDIT BOX ]]
- local MapEditBox = Frame:CreateEditBox(GMAddon.Prefix..Type.."MapId")
- MapEditBox:SetStatusLink(GMAddon.Prefix..Type.."WPPlayerButton")
- MapEditBox:SetHeight(15)
- MapEditBox:SetWidth(100)
- MapEditBox:SetYOffset(20)
- MapEditBox:SetXOffset(3)
- MapEditBox:SetTooltip("Input Map ID name here.")
- -- [[ X EDIT BOX ]]
- local XEditBox = Frame:CreateEditBox(GMAddon.Prefix..Type.."XEditBox")
- XEditBox:SetStatusLink(GMAddon.Prefix..Type.."WPPlayerButton")
- XEditBox:SetHeight(15)
- XEditBox:SetWidth(100)
- XEditBox:SetYOffset(0)
- XEditBox:SetXOffset(3)
- XEditBox:SetTooltip("Input X value here.")
- -- [[ Y EDIT BOX ]]
- local YEditBox = Frame:CreateEditBox(GMAddon.Prefix..Type.."YEditBox")
- YEditBox:SetStatusLink(GMAddon.Prefix..Type.."WPPlayerButton")
- YEditBox:SetHeight(15)
- YEditBox:SetWidth(100)
- YEditBox:SetYOffset(-20)
- YEditBox:SetXOffset(3)
- YEditBox:SetTooltip("Input Y value here.")
- -- [[ Z EDIT BOX ]]
- local ZEditBox = Frame:CreateEditBox(GMAddon.Prefix..Type.."ZEditBox")
- ZEditBox:SetStatusLink(GMAddon.Prefix..Type.."WPPlayerButton")
- ZEditBox:SetHeight(15)
- ZEditBox:SetWidth(100)
- ZEditBox:SetYOffset(-40)
- ZEditBox:SetXOffset(3)
- ZEditBox:SetTooltip("Input Z value here.")
- -- [[ WORLDPORT PLAYER ]]
- local WPPlayerButton = Frame:CreateButton(GMAddon.Prefix..Type.."WPPlayerButton")
- WPPlayerButton:SetText("Port Player")
- WPPlayerButton:SetHeight(15)
- WPPlayerButton:SetWidth(120)
- WPPlayerButton:SetYOffset(-60)
- WPPlayerButton:SetXOffset(0)
- WPPlayerButton:SetEvent("OnClick", function(self, event, player, Cache)
- for k, v in pairs(Cache) do
- print(k, v)
- end
- local PlayerNameBox, Map, X, Y, Z = Cache[7], Cache[3], Cache[11], Cache[5], Cache[9]
- local SelectedPlayer = GetPlayerByName(PlayerNameBox)
- if #Cache < 11 then
- player:SendBroadcastMessage("All fields (Player name and coordinates) must be filled out to teleport a player!")
- else
- if not SelectedPlayer or SelectedPlayer == nil then
- player:SendBroadcastMessage(PlayerNameBox.." is currently not in game.")
- else
- SelectedPlayer:Teleport(SelectedPlayer:GetMapId(), SelectedPlayer:GetX(), SelectedPlayer:GetY(), SelectedPlayer:GetZ(), SelectedPlayer:GetO())
- player:SendBroadcastMessage("Teleporting "..PlayerNameBox.." to coordinates: "..Map.." "..X.." "..Y.." "..Z..".")
- end
- end
- end
- )
- -- [[ WORLDPORT SELF ]]
- local WPSelfButton = Frame:CreateButton(GMAddon.Prefix..Type.."WPSelfButton")
- WPSelfButton:SetText("Port Self")
- WPSelfButton:SetHeight(15)
- WPSelfButton:SetWidth(120)
- WPSelfButton:SetYOffset(-80)
- WPSelfButton:SetXOffset(0)
- WPSelfButton:SetEvent("OnClick", function(self, event, player, Cache)
- for k, v in pairs(Cache) do
- print(k, v)
- end
- local PlayerNameBox = Cache[3]
- local SelectedPlayer = GetPlayerByName(PlayerNameBox)
- if not SelectedPlayer or SelectedPlayer == nil then
- player:SendBroadcastMessage(PlayerNameBox.." is currently not in game.")
- else
- player:Teleport(SelectedPlayer:GetMapId(), SelectedPlayer:GetX(), SelectedPlayer:GetY(), SelectedPlayer:GetZ(), SelectedPlayer:GetO())
- player:SendBroadcastMessage("Appearing to "..PlayerNameBox..".")
- end
- end
- )
- -- [[ BACK BUTTON ]]
- local BackButton = Frame:CreateButton(GMAddon.Prefix..Type.."BackButton")
- BackButton:SetText("Back")
- BackButton:SetHeight(15)
- BackButton:SetWidth(100)
- BackButton:SetYOffset(-120)
- BackButton:SetXOffset(0)
- BackButton:SetEvent("OnClick", function(self, event, player, Cache)
- RenderMainMenu(Player)
- Frame:Hide(Player)
- end
- )
- end
- Frame:Send(Player)
- end
Advertisement
Add Comment
Please, Sign In to add comment