Advertisement
Mordred

GOMove

Sep 1st, 2011
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 18.19 KB | None | 0 0
  1. print("")
  2. print("-----------------------------------------------------------------------------")
  3. print("")
  4. print("@@-GAMEOBJECT-@@..Build 2.9...........")
  5. print("@@--|_MOVE_|--@@..Script by Mordred...")
  6. print("______________________________________")
  7. print("Gate required - by Kenuvis............")
  8. print("")
  9. print("-----------------------------------------------------------------------------")
  10. print("")
  11. ------------------------------------------------ Deklaration -----------------------------------------------------------
  12. local GOobject = {}
  13. local GOobjEntry = {}
  14. local GOsaved = {}
  15. local GOsavedStatic = {}
  16. --------------------------------------------------- OnChat -------------------------------------------------------------
  17. function OnChat(Event, Player, Message, Type, Language, Misc)
  18.     if (Message==".gomove") or (Message==".gom") or (Message==".GOMove") or (Message==".gomo") or (Message==".gomov") then
  19.         if (Player:IsGm()) then
  20.             Player:SendBroadcastMessage("|cFFFFAA00GO Move successfully loaded!|r")
  21.             if (GOobject[Player]~=nil) then
  22.                 GameObjectMove(Player)  --"GameObjectFind" if Menu not closed
  23.                 Player:SendBroadcastMessage("|cFFFFAA00Move your Game Object from bevor.|r")
  24.             else
  25.                 GameObjectFind(Player)                      --"GameObjectFind" start #1 function
  26.                 Player:SendBroadcastMessage("|cFFFFAA00Search now for your Game Object you want to move.|r")
  27.             end
  28.         else
  29.             Player:SendBroadcastMessage("|cFFFF0000You have no permission for this application!|r")
  30.         end
  31.     elseif (Message==".test") or (Message==".t") then
  32.         RegisterTimedEvent("Test", 1000, 0, Player)
  33.     end
  34. end
  35. RegisterServerHook(16, OnChat)
  36. --------------------------------------------------- Events -------------------------------------------------------------
  37. ----------------------------------------------------  #1  --------------------------------------------------------------
  38. function GameObjectFind(Player)
  39.     local GOFind = CreateFrame("GameObjectFind")
  40.     local SearchB = GOFind:CreateButton("SearchButton")
  41.         GOFind:SetText("GO Search")
  42.         GOFind:SetCantMove(true)
  43.         GOFind:SetYOffset(280)
  44.         GOFind:SetHeight(70)            --Frame
  45.         GOFind:SetWidth(150)
  46.         SearchB:SetText("Search")           --Button
  47.         SearchB:SetHeight(40)          
  48.         SearchB:SetWidth(139)
  49.         SearchB:SetYOffset(-8)
  50.         SearchB:SetXOffset(2)
  51.         SearchB:SetEvent("OnClick", function(self, event, player,_)
  52.                                             GOobject[Player] = Player:GetSelectedGO()
  53.                                             if (GOobject[Player]~=nil) then
  54.                                                 GameObjectMove(Player)      --"GameObjectMove" start #2 function
  55.                                                 GOFind:Hide(Player)
  56.                                             else
  57.                                                 local OK = CreateDialogFrame("OKframe")
  58.                                                 OK:SetText("No GameObject")
  59.                                                 OK:SetYOffset(260)
  60.                                                 OK:SetHeight(115)
  61.                                                 OK:SetWidth(150)
  62.                                                 OK:Send(Player)
  63.                                             end
  64.                                         end)
  65.     GOFind:Send(Player)
  66. end
  67. ----------------------------------------------------  #2  --------------------------------------------------------------
  68. function GameObjectMove(Player)
  69.     GOsaved[Player] = {}
  70.     GOsavedStatic[Player] = {}
  71.     --               Frame               --
  72.     local Main = CreateFrame("Main")
  73.         local XAxisPlus = Main:CreateButton("XAxisPlus")
  74.         local YAxisPlus = Main:CreateButton("YAxisPlus")
  75.         local XAxisMins = Main:CreateButton("XAxisMinus")                   --XY Move Buttons + EditBox + CheckBox
  76.         local YAxisMins = Main:CreateButton("YAxisMinus")
  77.             local XYEditBox = Main:CreateEditBox("XYEditBox")
  78.             local XYCheckBox = Main:CreateCheckBox("XYCheckBox")
  79.        
  80.         local ZAxisMins = Main:CreateButton("ZAxisMinus")
  81.         local ZAxisPlus = Main:CreateButton("ZAxisPlus")                    --Z Move Buttons + EditBox
  82.             local ZEditBox = Main:CreateEditBox("ZEditBox")
  83.    
  84.         local RotateClockwise = Main:CreateButton("RotateClockwise")
  85.         local RotateAntiClock = Main:CreateButton("RotateAntiClockwise")    --Rotate Buttons + EditBox
  86.             local RotateEditBox = Main:CreateEditBox("RotateEditBox")
  87.    
  88.         local ScalePlus = Main:CreateButton("ScalePlus")
  89.         local ScaleMins = Main:CreateButton("ScaleMinus")                   --Scale Buttons + EditBox
  90.             local ScaleEditBox = Main:CreateEditBox("ScaleEditBox")
  91.    
  92.         local InjectGO = Main:CreateButton("InjectGameObject")
  93.         local ReInject = Main:CreateButton("ReInjectGameObject")            --Inject Buttons + EditBox
  94.             local InjectEditBox = Main:CreateEditBox("InjectEditBox")
  95.    
  96.         local ReSearch = Main:CreateButton("ReSearch")
  97.         local Save = Main:CreateButton("Save")                          --Sideoption Buttons
  98.         local Delete = Main:CreateButton("Delete")
  99.             local SaveCheckBox = Main:CreateCheckBox("SaveCheckBox")
  100. ------------------------------------------------------------------------------------------------------------------------
  101.     --           Main Settings           --
  102.     Main:SetText("GameObject Move")
  103.     Main:SetHeight(140)
  104.     Main:SetWidth(500)
  105.     Main:SetCantMove(true)
  106.     Main:SetYOffset(318)
  107. ------------------------------------------------------------------------------------------------------------------------
  108.     --         X-Y Axis Settings         --
  109.     --               X Plus              --
  110.     XAxisPlus:SetText("N")
  111.     XAxisPlus:SetYOffset(20)
  112.     XAxisPlus:SetXOffset(-175)
  113.     XAxisPlus:SetWidth(40)
  114.     XAxisPlus:SetEvent("OnClick", function(self, event, player, ECB)
  115.                                     if ECB[5]==nil then return end
  116.                                     local x,y,z,o,entry,scale = VarsFunc(GOobject[Player])
  117.                                     if x==nil then return end
  118.                                     local x = x + (ECB[5]*0.1)
  119.                                     local GO = GOMove(Player,GOobject[Player],x,y,z,o,entry,scale)
  120.                                     GOobject[Player] = GO
  121.                                     if (ECB[3]) then
  122.                                         Player:SetPosition(Player:GetX(), Player:GetY(), Player:GetZ(), 0)
  123.                                     end
  124.                                 end)
  125.     --               Y Plus              --
  126.     YAxisPlus:SetText("E")
  127.     YAxisPlus:SetYOffset(-5)
  128.     YAxisPlus:SetXOffset(-215)
  129.     YAxisPlus:SetWidth(40)
  130.     YAxisPlus:SetEvent("OnClick", function(self, event, player, ECB)
  131.                                     if ECB[5]==nil then return end
  132.                                     local x,y,z,o,entry,scale = VarsFunc(GOobject[Player])
  133.                                     if x==nil then return end
  134.                                     local y = y + (ECB[5]*0.1)
  135.                                     local GO = GOMove(Player,GOobject[Player],x,y,z,o,entry,scale)
  136.                                     GOobject[Player] = GO
  137.                                     if (ECB[3]) then
  138.                                         Player:SetPosition(Player:GetX(), Player:GetY(), Player:GetZ(), 0)
  139.                                     end
  140.                                 end)
  141.     --               X Minus             --
  142.     XAxisMins:SetText("S")
  143.     XAxisMins:SetYOffset(-30)
  144.     XAxisMins:SetXOffset(-175)
  145.     XAxisMins:SetWidth(40)
  146.     XAxisMins:SetEvent("OnClick", function(self, event, player, ECB)
  147.                                     if ECB[5]==nil then return end
  148.                                     local x,y,z,o,entry,scale = VarsFunc(GOobject[Player])
  149.                                     if x==nil then return end
  150.                                     local x = x - (ECB[5]*0.1)
  151.                                     local GO = GOMove(Player,GOobject[Player],x,y,z,o,entry,scale)
  152.                                     GOobject[Player] = GO
  153.                                     if (ECB[3]) then
  154.                                         Player:SetPosition(Player:GetX(), Player:GetY(), Player:GetZ(), 0)
  155.                                     end
  156.                                 end)
  157.     --               Y Minus             --
  158.     YAxisMins:SetText("W")
  159.     YAxisMins:SetYOffset(-5)
  160.     YAxisMins:SetXOffset(-135)
  161.     YAxisMins:SetWidth(40)
  162.     YAxisMins:SetEvent("OnClick", function(self, event, player, ECB)
  163.                                     if ECB[5]==nil then return end
  164.                                     local x,y,z,o,entry,scale = VarsFunc(GOobject[Player])
  165.                                     if x==nil then return end
  166.                                     local y = y - (ECB[5]*0.1)
  167.                                     local GO = GOMove(Player,GOobject[Player],x,y,z,o,entry,scale)
  168.                                     GOobject[Player] = GO
  169.                                     if (ECB[3]) then
  170.                                         Player:SetPosition(Player:GetX(), Player:GetY(), Player:GetZ(), 0)
  171.                                     end
  172.                                 end)
  173.     --             X-Y CheckBox          --
  174.     XYCheckBox:SetWidth(25)
  175.     XYCheckBox:SetYOffset(-53)
  176.     XYCheckBox:SetXOffset(-225)
  177.     XYCheckBox:SetText("North Orientate")
  178.     XYCheckBox:SetStatusLink("XAxisPlus")
  179.     XYCheckBox:SetStatusLink("YAxisPlus")
  180.     XYCheckBox:SetStatusLink("XAxisMinus")
  181.     XYCheckBox:SetStatusLink("YAxisMinus")
  182.     XYCheckBox:SetTooltip("If checked you are always looking at north to have a better orientation")
  183.     --             X-Y EditBox           --
  184.     XYEditBox:SetWidth(25)
  185.     XYEditBox:SetYOffset(-5)
  186.     XYEditBox:SetXOffset(-173)
  187.     XYEditBox:SetStatusLink("XAxisPlus")
  188.     XYEditBox:SetStatusLink("YAxisPlus")
  189.     XYEditBox:SetStatusLink("XAxisMinus")
  190.     XYEditBox:SetStatusLink("YAxisMinus")
  191.     XYEditBox:SetTooltip("Enter your multiplicator here which amount you want to move the GameObject")
  192. ------------------------------------------------------------------------------------------------------------------------
  193.     --           Z Axis Settings         --
  194.     --              Z Minus              --
  195.     ZAxisMins:SetText("Down")
  196.     ZAxisMins:SetYOffset(-30)
  197.     ZAxisMins:SetXOffset(-90)
  198.     ZAxisMins:SetWidth(50)
  199.     ZAxisMins:SetEvent("OnClick", function(self, event, player, ECB)
  200.                                     if ECB[3]==nil then return end
  201.                                     local x,y,z,o,entry,scale = VarsFunc(GOobject[Player])
  202.                                     if x==nil then return end
  203.                                     local z = z - (ECB[3]*0.1)
  204.                                     local GO = GOMove(Player,GOobject[Player],x,y,z,o,entry,scale)
  205.                                     GOobject[Player] = GO
  206.                                 end)
  207.     --              Z Plus               --
  208.     ZAxisPlus:SetText("Up")
  209.     ZAxisPlus:SetYOffset(20)
  210.     ZAxisPlus:SetXOffset(-90)
  211.     ZAxisPlus:SetWidth(50)
  212.     ZAxisPlus:SetEvent("OnClick", function(self, event, player, ECB)
  213.                                     if ECB[3]==nil then return end
  214.                                     local x,y,z,o,entry,scale = VarsFunc(GOobject[Player])
  215.                                     if x==nil then return end
  216.                                     local z = z + (ECB[3]*0.1)
  217.                                     local GO = GOMove(Player,GOobject[Player],x,y,z,o,entry,scale)
  218.                                     GOobject[Player] = GO
  219.                                 end)
  220.     --             Z EditBox             --
  221.     ZEditBox:SetWidth(35)
  222.     ZEditBox:SetYOffset(-5)
  223.     ZEditBox:SetXOffset(-87)
  224.     ZEditBox:SetStatusLink("ZAxisMinus")
  225.     ZEditBox:SetStatusLink("ZAxisPlus")
  226.     ZEditBox:SetTooltip("Enter your multiplicator here which amount you want to move the GameObject up and down")
  227. ------------------------------------------------------------------------------------------------------------------------
  228.     --         Rotate Settings           --
  229.     --         Rotate Clockwise          --
  230.     RotateClockwise:SetText("Right")
  231.     RotateClockwise:SetYOffset(20)
  232.     RotateClockwise:SetXOffset(-40)
  233.     RotateClockwise:SetWidth(50)
  234.     RotateClockwise:SetEvent("OnClick", function(self, event, player, ECB)
  235.                                     if ECB[3]==nil then return end
  236.                                     local x,y,z,o,entry,scale = VarsFunc(GOobject[Player])
  237.                                     if x==nil then return end
  238.                                     local o = o - (ECB[3]*0.1)
  239.                                     local GO = GOMove(Player,GOobject[Player],x,y,z,o,entry,scale)
  240.                                     GOobject[Player] = GO
  241.                                 end)
  242.     --       Rotate Anti-Clockwise       --
  243.     RotateAntiClock:SetText("Left")
  244.     RotateAntiClock:SetYOffset(-30)
  245.     RotateAntiClock:SetXOffset(-40)
  246.     RotateAntiClock:SetWidth(50)
  247.     RotateAntiClock:SetEvent("OnClick", function(self, event, player, ECB)
  248.                                     if ECB[3]==nil then return end
  249.                                     local x,y,z,o,entry,scale = VarsFunc(GOobject[Player])
  250.                                     if x==nil then return end
  251.                                     local o = o + (ECB[3]*0.1)
  252.                                     local GO = GOMove(Player,GOobject[Player],x,y,z,o,entry,scale)
  253.                                     GOobject[Player] = GO
  254.                                 end)
  255.     --          Rotate EditBox           --
  256.     RotateEditBox:SetWidth(35)
  257.     RotateEditBox:SetYOffset(-5)
  258.     RotateEditBox:SetXOffset(-37)
  259.     RotateEditBox:SetStatusLink("RotateClockwise")
  260.     RotateEditBox:SetStatusLink("RotateAntiClockwise")
  261.     RotateEditBox:SetTooltip("Enter your multiplicator here which amount you want to rotate the GameObject")
  262. ------------------------------------------------------------------------------------------------------------------------
  263.     --          Scale Settings           --
  264.     --           Scale bigger            --
  265.     ScalePlus:SetText("Bigger")
  266.     ScalePlus:SetYOffset(20)
  267.     ScalePlus:SetXOffset(10)
  268.     ScalePlus:SetWidth(50)
  269.     ScalePlus:SetEvent("OnClick", function(self, event, player, ECB)
  270.                                     if ECB[3]==nil then return end
  271.                                     if GOobject[Player]:GetScale()==nil then return end
  272.                                     GOobject[Player]:ChangeScale(GOobject[Player]:GetScale() + (ECB[3]*0.1), true)
  273.                                 end)
  274.     --           Scale smaller           --
  275.     ScaleMins:SetText("Smaller")
  276.     ScaleMins:SetYOffset(-30)
  277.     ScaleMins:SetXOffset(10)
  278.     ScaleMins:SetWidth(50)
  279.     ScaleMins:SetEvent("OnClick", function(self, event, player, ECB)
  280.                                     if ECB[3]==nil then return end
  281.                                     if GOobject[Player]:GetScale()==nil then return end
  282.                                     GOobject[Player]:ChangeScale(GOobject[Player]:GetScale() - (ECB[3]*0.1), true)
  283.                                 end)
  284.     --           Scale EditBox           --
  285.     ScaleEditBox:SetWidth(35)
  286.     ScaleEditBox:SetYOffset(-5)
  287.     ScaleEditBox:SetXOffset(13)
  288.     ScaleEditBox:SetStatusLink("ScalePlus")
  289.     ScaleEditBox:SetStatusLink("ScaleMinus")
  290.     ScaleEditBox:SetTooltip("Enter your multiplicator here which amount you want to modify the GameObject's scale")
  291. ------------------------------------------------------------------------------------------------------------------------
  292.     --          Inject Settings          --
  293.     --              Inject               --
  294.     InjectGO:SetText("Inject")
  295.     InjectGO:SetYOffset(20)
  296.     InjectGO:SetXOffset(60)
  297.     InjectGO:SetWidth(50)
  298.     InjectGO:SetEvent("OnClick", function(self, event, player, ECB)
  299.                                     if ECB[3]==nil then return end
  300.                                     GOobjEntry[Player] = GOobject[Player]:GetEntry()
  301.                                     local x,y,z,o,entry,scale = VarsFunc(GOobject[Player])
  302.                                     if x==nil then return end
  303.                                     local GO = GOMove(Player,GOobject[Player],x,y,z,o,ECB[3],scale)
  304.                                     GOobject[Player] = GO
  305.                                 end)
  306.     --              ReInject             --
  307.     ReInject:SetText("Reinject")
  308.     ReInject:SetYOffset(-30)
  309.     ReInject:SetXOffset(60)
  310.     ReInject:SetWidth(50)
  311.     ReInject:SetEvent("OnClick", function(self, event, player, ECB)
  312.                                     if (GOobjEntry[Player]~=nil) then
  313.                                         local x,y,z,o,entry,scale = VarsFunc(GOobject[Player])
  314.                                         if x==nil then return end
  315.                                         local GO = GOMove(Player,GOobject[Player],x,y,z,o,GOobjEntry[Player],scale)
  316.                                         GOobject[Player] = GO
  317.                                     end
  318.                                 end)
  319.     --           Inject EditBox          --
  320.     InjectEditBox:SetWidth(35)
  321.     InjectEditBox:SetYOffset(-5)
  322.     InjectEditBox:SetXOffset(63)
  323.     InjectEditBox:SetStatusLink("InjectGameObject")
  324.     InjectEditBox:SetTooltip("Enter your Entry here to change the position of the GameObject with the new one")
  325. ------------------------------------------------------------------------------------------------------------------------
  326.     --       Sideoption Settings         --
  327.     --             ReSearch              --
  328.     ReSearch:SetText("Research")
  329.     ReSearch:SetYOffset(22)
  330.     ReSearch:SetXOffset(190)
  331.     ReSearch:SetWidth(70)
  332.     ReSearch:SetEvent("OnClick", function(self, event, player,_)
  333.                                         if (Player:GetSelectedGO()~=nil) then
  334.                                             GOobject[Player] = Player:GetSelectedGO()
  335.                                         else
  336.                                             local OK = CreateDialogFrame("OKframe")
  337.                                             OK:SetText("No GameObject")
  338.                                             OK:Send(Player)
  339.                                         end
  340.                                     end)
  341.     --              Save                 --
  342.     Save:SetText("Save")
  343.     Save:SetYOffset(-5)
  344.     Save:SetXOffset(190)
  345.     Save:SetWidth(70)
  346.     Save:SetEvent("OnClick", function(self, event, player,ECB)
  347.                                     local x,y,z,o,entry,scale = VarsFunc(GOobject[Player])
  348.                                     if x==nil then return end
  349.                                     if (ECB[3]) then
  350.                                         maxid = WorldDBQuery("SELECT MAX(`id`) FROM `gameobject_staticspawns`"):GetColumn(0):GetString()
  351.                                     else
  352.                                         maxid = WorldDBQuery("SELECT MAX(`id`) FROM `gameobject_spawns`"):GetColumn(0):GetString()
  353.                                     end
  354.                                     if maxid~=nil then
  355.                                         n = (tonumber(maxid)+1)
  356.                                     else
  357.                                         n = 1
  358.                                     end
  359.                                         table.insert(GOsaved[Player], {})
  360.                                         GOsaved[Player][table.getn(GOsaved[Player])][n] = GOobject[Player]
  361.                                         if (ECB[3]) then
  362.                                             table.insert(GOsavedStatic[Player], 1)
  363.                                             WorldDBQuery("INSERT INTO `gameobject_staticspawns` VALUES ('"..n.."', '"..entry.."', '"..GOobject[Player]:GetMapId().."', '"..x.."', '"..y.."', '"..z.."', '"..o.."', '0', '0', '0', '0', '1', '0', '0', '"..scale.."', '0', '"..GOobject[Player]:GetPhase().."', '0');")
  364.                                         else
  365.                                             table.insert(GOsavedStatic[Player], 0)
  366.                                             WorldDBQuery("INSERT INTO `gameobject_spawns` VALUES ('"..n.."', '"..entry.."', '"..GOobject[Player]:GetMapId().."', '"..x.."', '"..y.."', '"..z.."', '"..o.."', '0', '0', '0', '0', '1', '0', '0', '"..scale.."', '0', '"..GOobject[Player]:GetPhase().."', '0');")
  367.                                         end
  368.                                         GOobject[Player] = Player:SpawnGameObject(entry, x, y, z, o, 0, scale)
  369.                                         GOobject[Player]:ChangeScale(scale, true)
  370.                                 end)
  371.     --               Delete              --
  372.     Delete:SetText("Delete")
  373.     Delete:SetYOffset(-32)
  374.     Delete:SetXOffset(190)
  375.     Delete:SetWidth(70)
  376.     Delete:SetEvent("OnClick", function(self, event, player,_)
  377.                                     if (GOsaved[Player][table.getn(GOsaved[Player])]~=nil) then
  378.                                         for k,v in pairs(GOsaved[Player][table.getn(GOsaved[Player])]) do
  379.                                             if k~=nil and v~=nil then
  380.                                                 v:Despawn(0,0)
  381.                                                 if (GOsavedStatic[Player][table.getn(GOsavedStatic[Player])]==1) then
  382.                                                     WorldDBQuery("DELETE FROM `gameobject_staticspawns` WHERE `id` = "..k)
  383.                                                 else
  384.                                                     WorldDBQuery("DELETE FROM `gameobject_spawns` WHERE `id` = "..k)
  385.                                                 end
  386.                                                 table.remove(GOsaved[Player], table.getn(GOsaved[Player]))
  387.                                                 table.remove(GOsavedStatic[Player], table.getn(GOsavedStatic[Player]))
  388.                                             end
  389.                                         end
  390.                                     else
  391.                                         local OK = CreateDialogFrame("OKframe")
  392.                                         OK:SetText("No Saved GO")
  393.                                         OK:Send(Player)
  394.                                     end
  395.                                 end)
  396.     --            Save CheckBox          --
  397.     SaveCheckBox:SetWidth(25)
  398.     SaveCheckBox:SetYOffset(-53)
  399.     SaveCheckBox:SetXOffset(145)
  400.     SaveCheckBox:SetText("Static Save")
  401.     SaveCheckBox:SetStatusLink("Save")
  402.     SaveCheckBox:SetTooltip("If checked you will save to 'gameobject_staticspawns' table")
  403. ------------------------------------------------------------------------------------------------------------------------
  404.     Main:Send(Player)
  405. end
  406. function VarsFunc(GO)
  407.     if (GO==nil) then return end
  408.     local x = GO:GetX()
  409.     local y = GO:GetY()
  410.     local z = GO:GetZ()
  411.     local o = GO:GetO()
  412.     local entry = GO:GetEntry()
  413.     local scale = GO:GetScale()
  414.     return x,y,z,o,entry,scale
  415. end
  416. function GOMove(Player,GO,x,y,z,o,entry,scale)
  417.     GO:Despawn(0,0)
  418.     GO = Player:SpawnGameObject(entry, x, y, z, o, 0, scale)
  419.     GO:ChangeScale(scale, true)
  420.     return GO
  421. end
  422.  
  423. --[[ >CHANGES<
  424. 2.9 - Some fixes and compatible with default scripting engine 'LuaEngine'
  425. 2.8 - Tooltips fixed
  426. 2.7 - Added new Feature: 'Save to Staticspawns' and 'Delete' fixed with new features
  427. 2.6 - Compressed Code up from 798 lines to 384 lines!
  428. 2.5 - 'Save' fixed and new feature: Delete
  429. 2.4 - 'Inject' and 'ReInject' fixed and fully compatible with default scripting engine 'luabridge'
  430. 2.3 - Bug Fixes and 'Save'-Button
  431. 2.2 - Tooltips!
  432. 2.1 - Bug Fixes
  433. 2.0 - Fully rescripted
  434. ]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement