daily pastebin goal
64%
SHARE
TWEET

#bolodefchoco - bot module

Tocuto Jan 22nd, 2019 55 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. tribeModule["*\3Familia de Tocutoeltuco"] = function()
  2.     local json = (function()
  3.         local json = { _version = "0.1.1" }
  4.  
  5.         -------------------------------------------------------------------------------
  6.         -- Encode
  7.         -------------------------------------------------------------------------------
  8.  
  9.         local encode
  10.  
  11.         local escape_char_map = {
  12.           [ "\\" ] = "\\\\",
  13.           [ "\"" ] = "\\\"",
  14.           [ "\b" ] = "\\b",
  15.           [ "\f" ] = "\\f",
  16.           [ "\n" ] = "\\n",
  17.           [ "\r" ] = "\\r",
  18.           [ "\t" ] = "\\t",
  19.         }
  20.  
  21.         local escape_char_map_inv = { [ "\\/" ] = "/" }
  22.         for k, v in pairs(escape_char_map) do
  23.           escape_char_map_inv[v] = k
  24.         end
  25.  
  26.  
  27.         local function escape_char(c)
  28.           return escape_char_map[c] or string.format("\\u%04x", c:byte())
  29.         end
  30.  
  31.  
  32.         local function encode_nil(val)
  33.           return "null"
  34.         end
  35.  
  36.  
  37.         local function encode_table(val, stack)
  38.           local res = {}
  39.           stack = stack or {}
  40.  
  41.           -- Circular reference?
  42.           if stack[val] then error("circular reference") end
  43.  
  44.           stack[val] = true
  45.  
  46.           if val[1] ~= nil or next(val) == nil then
  47.             -- Treat as array -- check keys are valid and it is not sparse
  48.             local n = 0
  49.             for k in pairs(val) do
  50.               if type(k) ~= "number" then
  51.                 error("invalid table: mixed or invalid key types")
  52.               end
  53.               n = n + 1
  54.             end
  55.             if n ~= #val then
  56.               error("invalid table: sparse array")
  57.             end
  58.             -- Encode
  59.             for i, v in ipairs(val) do
  60.               table.insert(res, encode(v, stack))
  61.             end
  62.             stack[val] = nil
  63.             return "[" .. table.concat(res, ",") .. "]"
  64.  
  65.           else
  66.             -- Treat as an object
  67.             for k, v in pairs(val) do
  68.               if type(k) ~= "string" then
  69.                 error("invalid table: mixed or invalid key types")
  70.               end
  71.               table.insert(res, encode(k, stack) .. ":" .. encode(v, stack))
  72.             end
  73.             stack[val] = nil
  74.             return "{" .. table.concat(res, ",") .. "}"
  75.           end
  76.         end
  77.  
  78.  
  79.         local function encode_string(val)
  80.           return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"'
  81.         end
  82.  
  83.  
  84.         local function encode_number(val)
  85.           -- Check for NaN, -inf and inf
  86.           if val ~= val or val <= -math.huge or val >= math.huge then
  87.             error("unexpected number value '" .. tostring(val) .. "'")
  88.           end
  89.           return string.format("%.14g", val)
  90.         end
  91.  
  92.  
  93.         local type_func_map = {
  94.           [ "nil"     ] = encode_nil,
  95.           [ "table"   ] = encode_table,
  96.           [ "string"  ] = encode_string,
  97.           [ "number"  ] = encode_number,
  98.           [ "boolean" ] = tostring,
  99.         }
  100.  
  101.  
  102.         encode = function(val, stack)
  103.           local t = type(val)
  104.           local f = type_func_map[t]
  105.           if f then
  106.             return f(val, stack)
  107.           end
  108.           error("unexpected type '" .. t .. "'")
  109.         end
  110.  
  111.  
  112.         function json.encode(val)
  113.           return ( encode(val) )
  114.         end
  115.  
  116.  
  117.         -------------------------------------------------------------------------------
  118.         -- Decode
  119.         -------------------------------------------------------------------------------
  120.  
  121.         local parse
  122.  
  123.         local function create_set(...)
  124.           local res = {}
  125.           for i = 1, select("#", ...) do
  126.             res[ select(i, ...) ] = true
  127.           end
  128.           return res
  129.         end
  130.  
  131.         local space_chars   = create_set(" ", "\t", "\r", "\n")
  132.         local delim_chars   = create_set(" ", "\t", "\r", "\n", "]", "}", ",")
  133.         local escape_chars  = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u")
  134.         local literals      = create_set("true", "false", "null")
  135.  
  136.         local literal_map = {
  137.           [ "true"  ] = true,
  138.           [ "false" ] = false,
  139.           [ "null"  ] = nil,
  140.         }
  141.  
  142.  
  143.         local function next_char(str, idx, set, negate)
  144.           for i = idx, #str do
  145.             if set[str:sub(i, i)] ~= negate then
  146.               return i
  147.             end
  148.           end
  149.           return #str + 1
  150.         end
  151.  
  152.  
  153.         local function decode_error(str, idx, msg)
  154.           local line_count = 1
  155.           local col_count = 1
  156.           for i = 1, idx - 1 do
  157.             col_count = col_count + 1
  158.             if str:sub(i, i) == "\n" then
  159.               line_count = line_count + 1
  160.               col_count = 1
  161.             end
  162.           end
  163.           error( string.format("%s at line %d col %d", msg, line_count, col_count) )
  164.         end
  165.  
  166.  
  167.         local function codepoint_to_utf8(n)
  168.           -- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa
  169.           local f = math.floor
  170.           if n <= 0x7f then
  171.             return string.char(n)
  172.           elseif n <= 0x7ff then
  173.             return string.char(f(n / 64) + 192, n % 64 + 128)
  174.           elseif n <= 0xffff then
  175.             return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128)
  176.           elseif n <= 0x10ffff then
  177.             return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128,
  178.                                f(n % 4096 / 64) + 128, n % 64 + 128)
  179.           end
  180.           error( string.format("invalid unicode codepoint '%x'", n) )
  181.         end
  182.  
  183.  
  184.         local function parse_unicode_escape(s)
  185.           local n1 = tonumber( s:sub(3, 6),  16 )
  186.           local n2 = tonumber( s:sub(9, 12), 16 )
  187.           -- Surrogate pair?
  188.           if n2 then
  189.             return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000)
  190.           else
  191.             return codepoint_to_utf8(n1)
  192.           end
  193.         end
  194.  
  195.  
  196.         local function parse_string(str, i)
  197.           local has_unicode_escape = false
  198.           local has_surrogate_escape = false
  199.           local has_escape = false
  200.           local last
  201.           for j = i + 1, #str do
  202.             local x = str:byte(j)
  203.  
  204.             if x < 32 then
  205.               decode_error(str, j, "control character in string")
  206.             end
  207.  
  208.             if last == 92 then -- "\\" (escape char)
  209.               if x == 117 then -- "u" (unicode escape sequence)
  210.                 local hex = str:sub(j + 1, j + 5)
  211.                 if not hex:find("%x%x%x%x") then
  212.                   decode_error(str, j, "invalid unicode escape in string")
  213.                 end
  214.                 if hex:find("^[dD][89aAbB]") then
  215.                   has_surrogate_escape = true
  216.                 else
  217.                   has_unicode_escape = true
  218.                 end
  219.               else
  220.                 local c = string.char(x)
  221.                 if not escape_chars[c] then
  222.                   decode_error(str, j, "invalid escape char '" .. c .. "' in string")
  223.                 end
  224.                 has_escape = true
  225.               end
  226.               last = nil
  227.  
  228.             elseif x == 34 then -- '"' (end of string)
  229.               local s = str:sub(i + 1, j - 1)
  230.               if has_surrogate_escape then
  231.                 s = s:gsub("\\u[dD][89aAbB]..\\u....", parse_unicode_escape)
  232.               end
  233.               if has_unicode_escape then
  234.                 s = s:gsub("\\u....", parse_unicode_escape)
  235.               end
  236.               if has_escape then
  237.                 s = s:gsub("\\.", escape_char_map_inv)
  238.               end
  239.               return s, j + 1
  240.  
  241.             else
  242.               last = x
  243.             end
  244.           end
  245.           decode_error(str, i, "expected closing quote for string")
  246.         end
  247.  
  248.  
  249.         local function parse_number(str, i)
  250.           local x = next_char(str, i, delim_chars)
  251.           local s = str:sub(i, x - 1)
  252.           local n = tonumber(s)
  253.           if not n then
  254.             decode_error(str, i, "invalid number '" .. s .. "'")
  255.           end
  256.           return n, x
  257.         end
  258.  
  259.  
  260.         local function parse_literal(str, i)
  261.           local x = next_char(str, i, delim_chars)
  262.           local word = str:sub(i, x - 1)
  263.           if not literals[word] then
  264.             decode_error(str, i, "invalid literal '" .. word .. "'")
  265.           end
  266.           return literal_map[word], x
  267.         end
  268.  
  269.  
  270.         local function parse_array(str, i)
  271.           local res = {}
  272.           local n = 1
  273.           i = i + 1
  274.           while 1 do
  275.             local x
  276.             i = next_char(str, i, space_chars, true)
  277.             -- Empty / end of array?
  278.             if str:sub(i, i) == "]" then
  279.               i = i + 1
  280.               break
  281.             end
  282.             -- Read token
  283.             x, i = parse(str, i)
  284.             res[n] = x
  285.             n = n + 1
  286.             -- Next token
  287.             i = next_char(str, i, space_chars, true)
  288.             local chr = str:sub(i, i)
  289.             i = i + 1
  290.             if chr == "]" then break end
  291.             if chr ~= "," then decode_error(str, i, "expected ']' or ','") end
  292.           end
  293.           return res, i
  294.         end
  295.  
  296.  
  297.         local function parse_object(str, i)
  298.           local res = {}
  299.           i = i + 1
  300.           while 1 do
  301.             local key, val
  302.             i = next_char(str, i, space_chars, true)
  303.             -- Empty / end of object?
  304.             if str:sub(i, i) == "}" then
  305.               i = i + 1
  306.               break
  307.             end
  308.             -- Read key
  309.             if str:sub(i, i) ~= '"' then
  310.               decode_error(str, i, "expected string for key")
  311.             end
  312.             key, i = parse(str, i)
  313.             -- Read ':' delimiter
  314.             i = next_char(str, i, space_chars, true)
  315.             if str:sub(i, i) ~= ":" then
  316.               decode_error(str, i, "expected ':' after key")
  317.             end
  318.             i = next_char(str, i + 1, space_chars, true)
  319.             -- Read value
  320.             val, i = parse(str, i)
  321.             -- Set
  322.             res[key] = val
  323.             -- Next token
  324.             i = next_char(str, i, space_chars, true)
  325.             local chr = str:sub(i, i)
  326.             i = i + 1
  327.             if chr == "}" then break end
  328.             if chr ~= "," then decode_error(str, i, "expected '}' or ','") end
  329.           end
  330.           return res, i
  331.         end
  332.  
  333.  
  334.         local char_func_map = {
  335.           [ '"' ] = parse_string,
  336.           [ "0" ] = parse_number,
  337.           [ "1" ] = parse_number,
  338.           [ "2" ] = parse_number,
  339.           [ "3" ] = parse_number,
  340.           [ "4" ] = parse_number,
  341.           [ "5" ] = parse_number,
  342.           [ "6" ] = parse_number,
  343.           [ "7" ] = parse_number,
  344.           [ "8" ] = parse_number,
  345.           [ "9" ] = parse_number,
  346.           [ "-" ] = parse_number,
  347.           [ "t" ] = parse_literal,
  348.           [ "f" ] = parse_literal,
  349.           [ "n" ] = parse_literal,
  350.           [ "[" ] = parse_array,
  351.           [ "{" ] = parse_object,
  352.         }
  353.  
  354.  
  355.         parse = function(str, idx)
  356.           local chr = str:sub(idx, idx)
  357.           local f = char_func_map[chr]
  358.           if f then
  359.             return f(str, idx)
  360.           end
  361.           decode_error(str, idx, "unexpected character '" .. chr .. "'")
  362.         end
  363.  
  364.  
  365.         function json.decode(str)
  366.           if type(str) ~= "string" then
  367.             error("expected argument of type string, got " .. type(str))
  368.           end
  369.           local res, idx = parse(str, next_char(str, 1, space_chars, true))
  370.           idx = next_char(str, idx, space_chars, true)
  371.           if idx <= #str then
  372.             decode_error(str, idx, "trailing garbage")
  373.           end
  374.           return res
  375.         end
  376.  
  377.  
  378.         return json
  379.     end)()
  380.    
  381.     local split_message_at = 600
  382.    
  383.     local function splitMessage(msg)
  384.         local messagesIndex = 0
  385.         local messages = {}
  386.        
  387.         for index = 1, #msg, split_message_at do
  388.             messagesIndex = messagesIndex + 1
  389.             messages[messagesIndex] = string.sub(msg, index, index + split_message_at - 1)
  390.         end
  391.        
  392.         return messages
  393.     end
  394.    
  395.     local function chatMessage(msgId, msg)
  396.         local messages
  397.         if #msg > split_message_at then
  398.             messages = splitMessage(msg)
  399.         else
  400.             messages = {msg}
  401.         end
  402.        
  403.         local messagesLength = #messages
  404.         for index = 1, messagesLength do
  405.             tfm.exec.chatMessage(msgId .. " " .. messagesLength .. " " .. messages[index])
  406.         end
  407.     end
  408.    
  409.     local eventLoopCount = 0
  410.     local staff_teams = {
  411.         ["translators"] = {
  412.             ["Abdeljalil6#0000"] = true,
  413.             ["Acer#0010"] = true,
  414.             ["Ae_86#5182"] = true,
  415.             ["Beachair#0000"] = true,
  416.             ["Bodykudo#0000"] = true,
  417.             ["Ctmce#0000"] = true,
  418.             ["Derpfacederp#0000"] = true,
  419.             ["Erennnnnnn#7651"] = true,
  420.             ["Faz_x#0010"] = true,
  421.             ["Flindix#0095"] = true,
  422.             ["Grabouilie#0000"] = true,
  423.             ["Grapeup#0020"] = true,
  424.             ["Jolkaebolka#0000"] = true,
  425.             ["Kanan#2167"] = true,
  426.             ["Kincslol#0000"] = true,
  427.             ["Leila#6251"] = true,
  428.             ["Linkaito#4129"] = true,
  429.             ["Lothcat#0000"] = true,
  430.             ["Majzer#3179"] = true,
  431.             ["Mikumaly#0000"] = true,
  432.             ["Millenios#7956"] = true,
  433.             ["Nicor22#0000"] = true,
  434.             ["Peanut_butter#0015"] = true,
  435.             ["Rkubi#0000"] = true,
  436.             ["Ryuuzaki#1216"] = true,
  437.             ["Sebafrancuz#0000"] = true,
  438.             ["Tocutoeltuco#0000"] = true,
  439.             ["Unidentified#8421"] = true,
  440.             ["Unlocker001#0000"] = true,
  441.             ["Usmiechnij_sie#9743"] = true,
  442.             ["Vajisco0#0000"] = true,
  443.             ["Wassimevicw#0000"] = true,
  444.             ["Wrfg#0000"] = true,
  445.             ["Yuba#2381"] = true,
  446.             ["Zimmer#9770"] = true,
  447.             ["Zutto#4451"] = true
  448.         },
  449.         ["fashion_squad"] = {
  450.             ["Alfiecakes#0000"] = true,
  451.             ["Bobbyxsoxer#0000"] = true,
  452.             ["Etyla#0015"] = true,
  453.             ["Eyeground#0000"] = true,
  454.             ["Iuliluca#0000"] = true,
  455.             ["Ikke#0015"] = true,
  456.             ["Katow#0020"] = true,
  457.             ["Kiddoru#0000"] = true,
  458.             ["Kingapysia#0000"] = true,
  459.             ["Kurt#0015"] = true,
  460.             ["Lou#3859"] = true,
  461.             ["Mlledebby#0015"] = true,
  462.             ["Papero#9240"] = true,
  463.             ["Perlchen#0000"] = true,
  464.             ["Roberta#0113"] = true,
  465.             ["Silvyna#0020"] = true,
  466.             ["Tini#8387"] = true,
  467.             ["Unlocker001#0000"] = true,
  468.             ["Venusise#0000"] = true
  469.         },
  470.         ["module_team"] = {
  471.             ["Athesdrake#0000"] = true,
  472.             ["Bodykudo#0000"] = true,
  473.             ["Bolodefchoco#0000"] = true,
  474.             ["Brenower#0000"] = true,
  475.             ["Drgenius#0000"] = true,
  476.             ["Esh#0095"] = true,
  477.             ["Gekkeiju#0000"] = true,
  478.             ["Haku#0807"] = true,
  479.             ["Heniyengui#0000"] = true,
  480.             ["Jordy#0010"] = true,
  481.             ["Laagaadoo#0000"] = true,
  482.             ["Makinit#0095"] = true,
  483.             ["Nettoork#0000"] = true,
  484.             ["Ninguem#0095"] = true,
  485.             ["Rkubi#0000"] = true,
  486.             ["Rufflesdqjo#0000"] = true,
  487.             ["Saintgio#0000"] = true,
  488.             ["Sebafrancuz#0000"] = true,
  489.             ["Sebaisseba#0020"] = true,
  490.             ["Shamousey#0015"] = true,
  491.             ["Sharpiepoops#0020"] = true,
  492.             ["Tat#0020"] = true,
  493.             ["Thanos#1306"] = true,
  494.             ["Tortuegreen#0000"] = true,
  495.             ["Turkitutu#0000"] = true,
  496.             ["Unlocker001#0000"] = true,
  497.             ["Velspar#0000"] = true,
  498.             ["Ctmce#0000"] = true
  499.         },
  500.         ["funcorp"] = {
  501.             ["Bodykudo#0000"] = true,
  502.             ["Papero#9240"] = true,
  503.             ["Arcanacra#0010"] = true,
  504.             ["Jordy#0010"] = true,
  505.             ["Lezzly#0010"] = true,
  506.             ["Lummit#0010"] = true,
  507.             ["Miau#0010"] = true,
  508.             ["Mousey#0010"] = true,
  509.             ["Philae#0010"] = true,
  510.             ["Pop#0010"] = true,
  511.             ["Staszekowaty#0010"] = true,
  512.             ["Tarmac#0010"] = true,
  513.             ["Titivillus#0010"] = true,
  514.             ["Visne#0010"] = true,
  515.             ["Lightwood#0010"] = true,
  516.             ["Ikke#0015"] = true,
  517.             ["Mesmera#0015"] = true,
  518.             ["Milkycoffee#0015"] = true,
  519.             ["Bemmh#0020"] = true,
  520.             ["Grapeup#0020"] = true,
  521.             ["Sebaisseba#0020"] = true,
  522.             ["Charbz#3144"] = true
  523.         },
  524.         ["mapcrew"] = {
  525.             ["A_801#0015"] = true,
  526.             ["Bemmh#0020"] = true,
  527.             ["Goondad#0020"] = true,
  528.             ["Grapeup#0020"] = true,
  529.             ["Katow#0020"] = true,
  530.             ["Leetinsanity#0020"] = true,
  531.             ["Mapcrew#0020"] = true,
  532.             ["Mapcrewone#0020"] = true,
  533.             ["Mapcrewtwo#0020"] = true,
  534.             ["Sebaisseba#0020"] = true,
  535.             ["Sharpiepoops#0020"] = true,
  536.             ["Sherr#0020"] = true,
  537.             ["Uskil#0020"] = true,
  538.             ["Vividia#0015"] = true,
  539.             ["Mquk#0020"] = true,
  540.             ["Vvarriorw#0020"] = true,
  541.             ["Ikke#0015"] = true,
  542.             ["Kurt#0015"] = true,
  543.             ["Grimmaro#0020"] = true,
  544.             ["Reshman#0020"] = true,
  545.             ["Silvyna#0020"] = true,
  546.             ["Tat#0020"] = true
  547.         },
  548.         ["sentinel"] = {
  549.             ["A_801#0015"] = true,
  550.             ["Altercorp#0015"] = true,
  551.             ["Bog#0015"] = true,
  552.             ["Doraemons#0010"] = true,
  553.             ["Etyla#0015"] = true,
  554.             ["Obemice#0015"] = true,
  555.             ["Sentihu#0015"] = true,
  556.             ["Vividia#0015"] = true,
  557.             ["Winjid#0015"] = true,
  558.             ["Hollya#0015"] = true,
  559.             ["Mlledebby#0015"] = true,
  560.             ["Sentinonyme#0015"] = true,
  561.             ["Thallium#0015"] = true,
  562.             ["Centr#0015"] = true,
  563.             ["Jerry#0015"] = true,
  564.             ["Bortverde#0015"] = true,
  565.             ["Daisy#0015"] = true,
  566.             ["Daydream#0015"] = true,
  567.             ["Excasr#0010"] = true,
  568.             ["Grastfetry#0015"] = true,
  569.             ["Ikke#0015"] = true,
  570.             ["Kiwrimai#0015"] = true,
  571.             ["Kurt#0015"] = true,
  572.             ["Miau#0010"] = true,
  573.             ["Naiyme#0015"] = true,
  574.             ["Pandoraa#0015"] = true,
  575.             ["Ratacp#0015"] = true,
  576.             ["Xiezi#0010"] = true,
  577.             ["Sha#0010"] = true,
  578.             ["Visne#0010"] = true,
  579.             ["Amegake#0015"] = true,
  580.             ["Coska#0015"] = true,
  581.             ["Lament#0010"] = true,
  582.             ["Mesmera#0015"] = true,
  583.             ["Milkycoffee#0015"] = true,
  584.             ["Peanut_butter#0015"] = true,
  585.             ["Wooferx#0015"] = true,
  586.             ["Jordy#0010"] = true,
  587.             ["Chibi#0015"] = true,
  588.             ["Hotaru#0015"] = true,
  589.             ["Tarmac#0010"] = true,
  590.             ["Xiaojiemei#0015"] = true,
  591.             ["Archaeron#0010"] = true,
  592.             ["Mrslouzifer#0010"] = true,
  593.             ["Batt_mellamy#0015"] = true,
  594.             ["Calysis#0015"] = true,
  595.             ["Chiara#0010"] = true,
  596.             ["Dracoleaf#0010"] = true,
  597.             ["Gavin#0015"] = true,
  598.             ["Jacob#0010"] = true,
  599.             ["Katburger#0015"] = true,
  600.             ["Null#0010"] = true,
  601.             ["Rutabega#0015"] = true,
  602.             ["Shamousey#0015"] = true,
  603.             ["Vulli#0015"] = true,
  604.             ["Pitchou#0015"] = true,
  605.             ["Matekooo#0015"] = true,
  606.             ["Bembija#0010"] = true,
  607.             ["Layora#0010"] = true
  608.         },
  609.         ["moderation"] = {
  610.             ["Adami#0010"] = true,
  611.             ["Charissa#0010"] = true,
  612.             ["Darthmod#0010"] = true,
  613.             ["Djealvi#0010"] = true,
  614.             ["Doraemons#0010"] = true,
  615.             ["Eclipseclock#0010"] = true,
  616.             ["Faz_x#0010"] = true,
  617.             ["Frankenshtein#0010"] = true,
  618.             ["Jackgt20#0010"] = true,
  619.             ["Link#0010"] = true,
  620.             ["Meekoru#0010"] = true,
  621.             ["Mouseori#0010"] = true,
  622.             ["Mushi#0010"] = true,
  623.             ["Nattorei#0010"] = true,
  624.             ["Poomph#0010"] = true,
  625.             ["Pyjin#0010"] = true,
  626.             ["Sav#0010"] = true,
  627.             ["Sommersby#0010"] = true,
  628.             ["Tachiyukan#0010"] = true,
  629.             ["Teo#0010"] = true,
  630.             ["Titivillus#0010"] = true,
  631.             ["Tomatosin#0010"] = true,
  632.             ["Yosska#0010"] = true,
  633.             ["Chamsouris#0010"] = true,
  634.             ["Fiarb#0010"] = true,
  635.             ["Iceweasel#0010"] = true,
  636.             ["Miwakiko#0010"] = true,
  637.             ["Myulaw#0010"] = true,
  638.             ["Nuhy#0010"] = true,
  639.             ["Philae#0010"] = true,
  640.             ["Ihaya#0010"] = true,
  641.             ["Mishska#0010"] = true,
  642.             ["Balerion#0010"] = true,
  643.             ["Bijububu#0010"] = true,
  644.             ["Cosmo#0010"] = true,
  645.             ["Excasr#0010"] = true,
  646.             ["Iupi#0010"] = true,
  647.             ["Lucas#0010"] = true,
  648.             ["Lummit#0010"] = true,
  649.             ["Miau#0010"] = true,
  650.             ["Midnight#0010"] = true,
  651.             ["Morningstar#0010"] = true,
  652.             ["Pop#0010"] = true,
  653.             ["Jefitou#0010"] = true,
  654.             ["Lezzly#0010"] = true,
  655.             ["Lightwood#0010"] = true,
  656.             ["Makis#0010"] = true,
  657.             ["Piratearthur#0010"] = true,
  658.             ["Xiezi#0010"] = true,
  659.             ["Lexa#0010"] = true,
  660.             ["Sha#0010"] = true,
  661.             ["Visne#0010"] = true,
  662.             ["Mistle#0010"] = true,
  663.             ["Arcanacra#0010"] = true,
  664.             ["Lament#0010"] = true,
  665.             ["Meow#0010"] = true,
  666.             ["Migotka#0010"] = true,
  667.             ["Staszekowaty#0010"] = true,
  668.             ["Esoisdown#0010"] = true,
  669.             ["Flare#0010"] = true,
  670.             ["Jordy#0010"] = true,
  671.             ["Santa#0010"] = true,
  672.             ["Zoefke#0010"] = true,
  673.             ["Ceicu#0010"] = true,
  674.             ["Dandelion#0010"] = true,
  675.             ["Ildubbio#0010"] = true,
  676.             ["Tarmac#0010"] = true,
  677.             ["Archaeron#0010"] = true,
  678.             ["Mrslouzifer#0010"] = true,
  679.             ["Acer#0010"] = true,
  680.             ["Charlen#0010"] = true,
  681.             ["Chiara#0010"] = true,
  682.             ["Christine#0010"] = true,
  683.             ["Dracoleaf#0010"] = true,
  684.             ["Etoile#0010"] = true,
  685.             ["Exsilium#0010"] = true,
  686.             ["Faierey#0010"] = true,
  687.             ["Jacob#0010"] = true,
  688.             ["Jiro#0010"] = true,
  689.             ["Kim#0010"] = true,
  690.             ["Kloure#0010"] = true,
  691.             ["Mousey#0010"] = true,
  692.             ["Null#0010"] = true,
  693.             ["Plisette#0010"] = true,
  694.             ["Rachel#0010"] = true,
  695.             ["Sam#0010"] = true,
  696.             ["Secretive#0010"] = true,
  697.             ["Bembija#0010"] = true,
  698.             ["Layora#0010"] = true
  699.         },
  700.         ["admin"] = {
  701.             ["Azrou#0001"] = true,
  702.             ["Gimnir#0001"] = true,
  703.             ["Pxstardust#0001"] = true,
  704.             ["Stardev7#0001"] = true,
  705.             ["Streaxx#0001"] = true,
  706.             ["Melibellule#0001"] = true,
  707.             ["Pikashu#0001"] = true,
  708.             ["Tigrounette#0001"] = true
  709.         }
  710.     }
  711.     local online_players = {}
  712.     local player_requests = {}
  713.     local commands = {
  714.         ["get_team"] = function(args)
  715.             local result = {success = true, message = nil, members = {}}
  716.            
  717.             for member, isIn in next, staff_teams[args[3]] do
  718.                 if isIn then
  719.                     result.members[member] = online_players[member]
  720.                 end
  721.             end
  722.            
  723.             chatMessage(args[1], json.encode(result))
  724.         end,
  725.        
  726.         ["online"] = function(args)
  727.             local result = {success = true, message = nil, online = {}}
  728.            
  729.             local onlineIndex = 0
  730.             for member, isIn in next, staff_teams[args[3]] do
  731.                 if isIn then
  732.                     if online_players[member] then
  733.                         onlineIndex = onlineIndex + 1
  734.                         result.online[onlineIndex] = member
  735.                     end
  736.                 end
  737.             end
  738.            
  739.             chatMessage(args[1], json.encode(result))
  740.         end,
  741.        
  742.         ["get_user"] = function(args)
  743.             if not player_requests[args[3]] then
  744.                 player_requests[args[3]] = {{args[1]}, 0}
  745.             else
  746.                 player_requests[args[3]][1][#player_requests[args[3]][1]] = args[1]
  747.             end
  748.         end,
  749.        
  750.         ["team_add"] = function(args)
  751.             for index = 4, #args do
  752.                 staff_teams[args[3]][args[index]] = true
  753.             end
  754.            
  755.             chatMessage(args[1], '{"success":true,"message":null}')
  756.         end,
  757.        
  758.         ["team_remove"] = function(args)
  759.             for index = 4, #args do
  760.                 staff_teams[args[3]][args[index]] = nil
  761.             end
  762.            
  763.             chatMessage(args[1], '{"success":true,"message":null}')
  764.         end
  765.     }
  766.    
  767.     function eventPlayerDataLoaded(player)
  768.         online_players[player] = true
  769.     end
  770.    
  771.     function eventLoop()
  772.         local rem = {}
  773.        
  774.         for player, request in next, player_requests do
  775.             request[2] = request[2] + 1
  776.            
  777.             if request[2] == 2 then
  778.                 local result = {success = true, message = nil, roles = {}, isOnline = online_players[player] or false}
  779.            
  780.                 local rolesIndex = 0
  781.                 for teamName, teamData in next, staff_teams do
  782.                     if teamData[player] then
  783.                         rolesIndex = rolesIndex + 1
  784.                         result.roles[rolesIndex] = teamName
  785.                     end
  786.                 end
  787.                
  788.                 result = json.encode(result)
  789.                
  790.                 for index, msgId in next, request[1] do
  791.                     chatMessage(msgId, result)
  792.                 end
  793.                
  794.                 rem[player] = true
  795.             elseif request[2] == 1 then
  796.                 system.loadPlayerData(player)
  797.             end
  798.         end
  799.        
  800.         for player in next, rem do
  801.             player_requests[player] = nil
  802.         end
  803.        
  804.         eventLoopCount = eventLoopCount + 1
  805.        
  806.         if eventLoopCount == 20 then
  807.             eventLoopCount = 0
  808.             local onlinePlayersTable = {}
  809.            
  810.             for teamName, team in next, staff_teams do
  811.                 for member, isIn in next, team do
  812.                     if isIn then
  813.                         onlinePlayersTable[member] = false
  814.                     end
  815.                 end
  816.             end
  817.            
  818.             online_players = onlinePlayersTable
  819.             for member in next, online_players do
  820.                 system.loadPlayerData(member)
  821.             end
  822.         end
  823.     end
  824.    
  825.     function eventChatMessage(player, msg)
  826.         if player == "Tocutoeltuco#5730" then
  827.             local spl = string.split(msg, "%S+")
  828.            
  829.             commands[spl[2]](spl)
  830.         end
  831.     end
  832. end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top