Advertisement
zigwin

#alchemy2

Jul 23rd, 2019
446
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 13.90 KB | None | 0 0
  1.  
  2.  
  3. -- lua transformice by zigwin
  4. -- packs :
  5. -- example - zigwin
  6. -- transformice - zigwin
  7. -- cooming soon...
  8.  
  9. ------------------------------
  10. -- Настраиваемая часть кода --
  11. ------------------------------
  12.  
  13.  
  14. -- Наборы элементов от игроков и создателя
  15. -- Чтобы добавить свои смотрите документацию ниже
  16.  
  17. packs = {
  18.     {
  19.         pack_name = "Example", -- Название пака
  20.         groups = { -- Группы
  21.             {1, '#888888'}, -- Элемент группы
  22.             {2, '#4444DD'},
  23.         },
  24.         opened_elements = { -- Начальные элементы
  25.             {1, "Fire", "Начальный", 1}, -- Элемент
  26.             {2, "Water", "Начальный", 1},
  27.             {3, "Wind", "Начальный", 1},
  28.             {4, "Earth", "Начальный", 1},
  29.         },
  30.  
  31.         closed_elements = { -- Закрытые элементы
  32.             {5, "Voolcano", "", 2, "Fire", "Earth"}, -- Элемент
  33.             {6, "Steam", "", 2, "Fire", "Water"},
  34.         },
  35.     },
  36.     {
  37.         pack_name = "Transformice", -- Название пка
  38.         groups = {
  39.             {1, '#7F4003'}, -- Коричевый
  40.             {2, '#F8DE5A'}, -- Желтый
  41.             {3, '#74C5E4'}, -- Голубой
  42.             {4, '#706A5C'}, -- Серый
  43.             {5, '#0BE905'}, -- Зеленый
  44.             {6, '#9B1DA6'}, -- Фиолетовый
  45.         },
  46.         opened_elements = {
  47.         {1, "Маленькая мышь", "Tigrounette#0001", 1},
  48.         {2, "Нора", "Tigrounette#0001", 1},
  49.         {3, "Стрелка", "Tigrounette#0001", 6},
  50.         {4, "Маленький ящик", "Tigrounette#0001", 6},
  51.         {5, "Мяч", "Tigrounette#0001", 6},
  52.         {6, "Сыр", "Tigrounette#0001", 2}
  53.         },
  54.         closed_elements = {
  55.         {7, "Друзья", "", 3, "Маленькая мышь", "Маленькая мышь"},
  56.         {8, "Мышь с сыром", "", 1, "Маленькая мышь", "Сыр"},
  57.         {9, "Мышь в норе", "", 1, "Мышь с сыром", "Нора"},
  58.         {10, "Шаман", "", 1, "Стрелка", "Мышь в норе"},
  59.         {11, "Спирит", "", 6, "Руна", "Стрелка"},
  60.         {12, "Руна", "", 6, "Шар", "Ядро"},
  61.         {13, "Ядро", "", 6, "Мяч", "Стрелка"},
  62.         {14, "Шар", "", 6, "Мяч", "Ядро"},
  63.         {15, "Ящик", "", 6, "Маленький ящик", "Маленький ящик"},
  64.         {16, "Наковальня", "", 6, "Ящик", "Ящик"},
  65.         {17, "Маленькая палка", "", 6, "Наковальня", "Ящик"},
  66.         {18, "Палка", "", 6, "Маленькая палка", "Маленькая палка"},
  67.         {19, "Лёд", "", 6, "Маленькая мышь", "Руна"},
  68.         {20, "Сурвивор", "", 5, "Шаман", "Ядро"},
  69.         {22, "Буткамп", "", 5, "Рейсинг", "Сурвивор"},
  70.         {23, "Рейсинг", "", 5, "Комната", "Быстрая мышь"},
  71.         {24, "Дефиланте", "", 5, "Рейсинг", "Буткамп"},
  72.         {25, "Кафе", "", 5, "Маленькая мышь", "Племя"},
  73.         {26, "Вилладж", "", 5, "Кафе", "Комната"},
  74.         {27, "АФК", "", 1, "Кафе", "Вилладж"},
  75.         {28, "НПС", "", 1, "Маленькая мышь", "Вилладж"},
  76.         {29, "Быстрая мышь", "", 1, "Маленькая мышь", "Ядро"},
  77.         {30, "Тиг", "", 6, "Наковальня", "Сыр"},
  78.         {31, "Кидалки", "", 4, "НПС", "Сыр"},
  79.         {32, "Ванилла", "", 5, "Комната", "Сыр"},
  80.         {33, "Зигвин", "", 3, "Луа", "Маленькая мышь"},
  81.         {34, "Луа", "", 5, "Племя", "АФК"},
  82.         {35, "Модули", "", 5, "Луа", "Комната"},
  83.         {36, "Комната", "", 5, "Друзья", "Сыр"},
  84.         {37, "Племя", "", 5, "Друзья", "Друзья"},
  85.         {38, "Форум", "", 5, "Кафе", "Племя"},
  86.         {39, "Мьюсик", "", 5, "Комната", "АФК"},
  87.         {40, "Утилити", "", 5, "Модули", "Редактор карт"},
  88.         {41, "Редактор карт", "", 5, "Комната", "Шаман"},
  89.         {42, "Магазин", "", 5,  "Сыр", "Сыр"},
  90.         {43, "Модная мышь", "", 1,  "Магазин", "Маленькая мышь"},
  91.         {44, "Богатая мышь", "", 1,  "Мышь в норе", "Мышь с сыром"},
  92.         {45, "Старая мышь", "", 1,  "Модная мышь", "Богатая мышь"},
  93.         {46, "Hitler", "", 3,  "Буткамп", "Быстрая мышь"},
  94.         {47, "A_4", "", 3,  "Быстрая мышь", "Модная мышь"},
  95.         {48, "Ubivatormish", "", 3,  "Рейсинг", "Модная мышь"},
  96.         {49, "Остролист", "", 3,  "АФК", "Племя"},
  97.         {50, "Это все больше не старайся чего-то найти", "", 3,  "Утилити", "Кидалки"},
  98.         {51, "Тролль", "", 1,  "Маленькая мышь", "Кидалки"},
  99.         {52, "Агро", "", 1,  "Тролль", "Маленькая мышь"},
  100.         {53, "ПВП", "", 1,  "Шаман", "Шаман"},
  101.         {54, "Карта", "", 4,  "Редактор карт", "Маленькая мышь"},
  102.         {55, "Перм", "", 4,  "Карта", "Форум"},
  103.         },
  104.     },
  105. }
  106.  
  107. -- Чтобы выбрать один из наборов элементов впишите сюда номер или название пака
  108. -- Пример
  109. -- pack_name = "example"
  110. -- pack_name = 1
  111.  
  112. pack_name = "Transformice"
  113.  
  114. -- Тут просто код идите дальше
  115.  
  116. if type(pack_name) == "number" then
  117.  
  118.     groups = packs[pack_name].groups
  119.     opened_elements = packs[pack_name].opened_elements
  120.     closed_elements = packs[pack_name].closed_elements
  121.  
  122. else
  123.  
  124.     for number, _ in pairs(packs) do
  125.         for _, name in pairs(packs[number]) do
  126.             if tostring(name) == pack_name then
  127.                 pack_name = number
  128.             end
  129.         end
  130.     end
  131.  
  132.     groups = packs[pack_name].groups
  133.     opened_elements = packs[pack_name].opened_elements
  134.     closed_elements = packs[pack_name].closed_elements 
  135.  
  136. end
  137.  
  138. ------------------
  139. -- Документация --
  140. -------------------
  141.  
  142. -- Группы для того чтобы делить элементы по цветам
  143. -- {айди, цвет}
  144.  
  145. -- Параметры группы
  146.  
  147. -- число; айди - Номер группы по порядку (Должно быть 1 2 3 и т.д.)
  148. -- текст; цвет - Цвет в шестнадцатитричном коде (Можете воспользоваться палитрой в игре в редакторе и т.п.)
  149.  
  150. --   Пример :
  151. -- groups = {{1, '#888888'},{2, '#4444DD'}}
  152. -- ____________________
  153. -- Начальные элементы (таблица для открытых элементов)
  154. -- {айди, название, "Начальный", группа}
  155.  
  156. -- Параметры элемента
  157.  
  158. -- число; айди - Номер элемента по порядку ;
  159. -- текст; название - Название элемента ;
  160. -- "Начальный" - Для обозначения подписи элемента в таблице внизу (в будущем в этой ячейке хранится ник игрока, который открыл элемент);
  161. -- число; группа - Айди группы (см. выше)
  162.  
  163. --   Пример :
  164. -- opened_elements = {
  165.  
  166. -- {1, "Огонь", "Начальный", 1},
  167. -- {2, "Вода", "Начальный", 1},
  168. -- {3, "Ветер", "Начальный", 1},
  169. -- {4, "Земля", "Начальный", 1},}
  170. -- ____________________
  171. -- Закрытые элементы
  172. -- {айди, название, "", группа, элемент 1, элемент 2}
  173.  
  174. -- Параметры элемента
  175.  
  176. -- число; айди - Номер элемента по порядку ;
  177. -- текст; название - Название элемента ;
  178. -- "Начальный" - Для обозначения подписи элемента в таблице внизу (в будущем в этой ячейке хранится ник игрока, который открыл элемент);
  179. -- число; группа - Айди группы (см. выше)
  180. -- текст; элемент 1 - Первый элемент для слияния
  181. -- текст; элемент 2 - Второй элемент для слияния
  182.  
  183. --   Пример :
  184. -- closed_elements = {
  185. -- {5, "Вулкан", "", 2, "Огонь", "Земля"},
  186. -- {6, "Пар", "", 2, "Огонь", "Вода"},}
  187.  
  188. ------------------
  189. -- Основной код --
  190. ------------------
  191.  
  192.  
  193. data = {}
  194. idadd = 0
  195. -- Таблица с айди и ником для каждого игрока
  196. for pname, _ in pairs(tfm.get.room.playerList) do
  197.     idadd = idadd + 1
  198.     data[pname] = {
  199.     id = idadd,
  200.     name = pname,
  201.     element1 = " ",
  202.     element2 = " ",
  203.     setElement = false,
  204.     page = 1,}
  205.  
  206.     tfm.exec.setPlayerScore(pname,0)
  207. end
  208.  
  209.  
  210. function updateElementsList(delete, next_page)
  211.     if delete then
  212.         for name,_ in pairs(data) do
  213.             for i = 1, #opened_elements do
  214.                 id = data[name].id * 1000 + i
  215.                 ui.removeTextArea(id, name)
  216.             end
  217.         end
  218.     end
  219.  
  220.     for name,_ in pairs(data) do
  221.  
  222.         local startElement = 1
  223.         local endElement = #opened_elements
  224.  
  225.         if #opened_elements > 24 then
  226.             startElement = data[name].page * 24 - 24 + 1
  227.             endElement = startElement + 24 - 1
  228.             if endElement > #opened_elements then
  229.             endElement = #opened_elements
  230.             end
  231.  
  232.             if next_page then
  233.                 startElement = #opened_elements
  234.                 endElement = #opened_elements
  235.                 data[name].page = data[name].page + 1
  236.             end
  237.         end
  238.  
  239.         local x = 0
  240.         local y = 1
  241.  
  242.         for i = startElement, endElement do
  243.        
  244.             player_name = opened_elements[i][3]
  245.             color = groups[opened_elements[i][4]][2]
  246.             element_name = opened_elements[i][2]
  247.    
  248.             id = data[name].id*1000 + i
  249.    
  250.             x = x + 1
  251.             if x > 6 then x = 1 y = y + 1 end
  252.    
  253.             ui.addTextArea(id,"<a href='event:"..opened_elements[i][2].."'><p align = 'center'><font color='"..color.."'><b>"..element_name.."</b></font>\n<font size='10'><i>"..player_name.."</i></font></p></a>",data[name].name,x*100,y*60,90,50,nil,nil,0.5,true)
  254.  
  255.         end
  256.     end
  257. end
  258.  
  259. ui.addTextArea(0,"<p align = 'center'><font size = '16'>Алхимия\nlua by zigwin</font></p>",nil,200,330,400,50,nil,nil,0.5,true)
  260.  
  261. function updateDownText(name)
  262.     text = "\n<a href='event:check'><p align = 'center'><font size = '16'>"..data[name].element1.." + "..data[name].element2.."</font></p></a>"
  263.     ui.updateTextArea(0,text,name)
  264. end
  265.  
  266. function checkElements(element1, element2, name)
  267.     for i = #closed_elements , 1 , -1 do
  268.         if ( closed_elements[i][5] == element1 and closed_elements[i][6] == element2 ) or ( closed_elements[i][5] == element2 and closed_elements[i][6] == element1 ) then
  269.  
  270.             tfm.exec.setPlayerScore(name, 1, true)
  271.  
  272.             table.insert(opened_elements, {closed_elements[i][1],closed_elements[i][2],name,closed_elements[i][4]})
  273.             table.remove(closed_elements, i)
  274.  
  275.            
  276.  
  277.             if #opened_elements > data[name].page*24 then
  278.             updateElementsList(true, true)
  279.             updateElementsList(true, nil)
  280.             else
  281.             updateElementsList()
  282.             end
  283.         end
  284.     end
  285. end
  286.  
  287. function eventTextAreaCallback(textAreaId, name, callback)
  288.     if callback == "next" then
  289.         if (data[name].page+1) <= math.ceil(#opened_elements / 24) then
  290.             data[name].page = data[name].page + 1
  291.             updateElementsList(true)
  292.         end
  293.         return
  294.     elseif callback == "back" then
  295.         if (data[name].page-1) >= 1 then
  296.             data[name].page = data[name].page - 1
  297.             updateElementsList(true)
  298.         end
  299.         return
  300.     end
  301.  
  302.     local text = "<r>|</r><v>"..name.."</v> <i>"..data[name].element1.."</i> <b> ; </b> <i>"..data[name].element2.."</i>"
  303.  
  304.     if callback == "check" and data[name].element1 ~= " " and data[name].element2 ~= " " then
  305.         checkElements(data[name].element1, data[name].element2, name)
  306.  
  307.         if tfm.get.room.playerList[name].score >= 3 then tfm.exec.setNameColor(name,0x504D01) if tfm.get.room.playerList[name].score >= 5 then tfm.exec.setNameColor(name,0x7F1B14) if tfm.get.room.playerList[name].score >= 10 then tfm.exec.setNameColor(name,0xD49221) if tfm.get.room.playerList[name].score >= 15 then tfm.exec.setNameColor(name,0x9B1DA6) if tfm.get.room.playerList[name].score >= 20 then tfm.exec.setNameColor(name,0xAAF9B8) end end end end end
  308.  
  309.         return
  310.     end
  311.  
  312.     if data[name].element1 == " " or data[name].element2 == " " then
  313.         if data[name].element1 == " " then data[name].element1 = callback print(text) updateDownText(name) return end
  314.         if data[name].element2 == " " then data[name].element2 = callback print(text) updateDownText(name) return end
  315.     end
  316.  
  317.     if data[name].setElement then
  318.         data[name].element1 = callback
  319.         data[name].setElement = false
  320.  
  321.         updateDownText(name)
  322.  
  323.     print(text)
  324.  
  325.         return
  326.     elseif not data[name].setElement then
  327.         data[name].setElement = true
  328.         data[name].element2 = callback
  329.  
  330.         updateDownText(name)
  331.  
  332.     print(text)
  333.  
  334.         return
  335.     end
  336.  
  337. end
  338.  
  339. function eventNewPlayer(playerName)
  340.     tfm.exec.respawnPlayer (playerName)
  341.  
  342.     idadd = idadd + 1
  343.  
  344.     data[playerName] = {
  345.     id = idadd,
  346.     name = playerName,
  347.     element1 = " ",
  348.     element2 = " ",
  349.     setElement = false,
  350.     page = 1,}
  351.  
  352.     ui.addTextArea(0,"<p align = 'center'><font size = '16'>Алхимия\nlua by zigwin</font></p>",nil,200,330,400,50,nil,nil,0.5,true)
  353.  
  354.     ui.addTextArea(-1,"<a href='event:back'><p align = 'center'><font size = '18'><b>←</b></p></font></a>",nil,25,340,50,30,nil,nil,0.5,true)
  355.     ui.addTextArea(-2,"<a href='event:next'><p align = 'center'><font size = '18'><b>→</b></font></p></a>",nil,725,340,50,30,nil,nil,0.5,true)
  356.  
  357.     updateElementsList()
  358. end
  359.  
  360. updateElementsList()
  361. -- <- ← ; -> →
  362. ui.addTextArea(-1,"<a href='event:back'><p align = 'center'><font size = '18'><b>←</b></p></font></a>",nil,25,340,50,30,nil,nil,0.5,true)
  363. ui.addTextArea(-2,"<a href='event:next'><p align = 'center'><font size = '18'><b>→</b></font></p></a>",nil,725,340,50,30,nil,nil,0.5,true)
  364.  
  365. tfm.exec.disableAutoTimeLeft(true)
  366. tfm.exec.disableAutoNewGame(true)
  367. tfm.exec.disableAutoScore(true)
  368. tfm.exec.disableAfkDeath(true)
  369. tfm.exec.disableAutoShaman(true)
  370. tfm.exec.newGame('7444032')
  371. function eventPlayerDied(playerName)
  372.     tfm.exec.respawnPlayer (playerName)
  373. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement