SHARE
TWEET

#alchemy2

zigwin Jul 23rd, 2019 92 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
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