Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- lua transformice by zigwin
- -- packs :
- -- example - zigwin
- -- transformice - zigwin
- -- cooming soon...
- ------------------------------
- -- Настраиваемая часть кода --
- ------------------------------
- -- Наборы элементов от игроков и создателя
- -- Чтобы добавить свои смотрите документацию ниже
- packs = {
- {
- pack_name = "Example", -- Название пака
- groups = { -- Группы
- {1, '#888888'}, -- Элемент группы
- {2, '#4444DD'},
- },
- opened_elements = { -- Начальные элементы
- {1, "Fire", "Начальный", 1}, -- Элемент
- {2, "Water", "Начальный", 1},
- {3, "Wind", "Начальный", 1},
- {4, "Earth", "Начальный", 1},
- },
- closed_elements = { -- Закрытые элементы
- {5, "Voolcano", "", 2, "Fire", "Earth"}, -- Элемент
- {6, "Steam", "", 2, "Fire", "Water"},
- },
- },
- {
- pack_name = "Transformice", -- Название пка
- groups = {
- {1, '#7F4003'}, -- Коричевый
- {2, '#F8DE5A'}, -- Желтый
- {3, '#74C5E4'}, -- Голубой
- {4, '#706A5C'}, -- Серый
- {5, '#0BE905'}, -- Зеленый
- {6, '#9B1DA6'}, -- Фиолетовый
- },
- opened_elements = {
- {1, "Маленькая мышь", "Tigrounette#0001", 1},
- {2, "Нора", "Tigrounette#0001", 1},
- {3, "Стрелка", "Tigrounette#0001", 6},
- {4, "Маленький ящик", "Tigrounette#0001", 6},
- {5, "Мяч", "Tigrounette#0001", 6},
- {6, "Сыр", "Tigrounette#0001", 2}
- },
- closed_elements = {
- {7, "Друзья", "", 3, "Маленькая мышь", "Маленькая мышь"},
- {8, "Мышь с сыром", "", 1, "Маленькая мышь", "Сыр"},
- {9, "Мышь в норе", "", 1, "Мышь с сыром", "Нора"},
- {10, "Шаман", "", 1, "Стрелка", "Мышь в норе"},
- {11, "Спирит", "", 6, "Руна", "Стрелка"},
- {12, "Руна", "", 6, "Шар", "Ядро"},
- {13, "Ядро", "", 6, "Мяч", "Стрелка"},
- {14, "Шар", "", 6, "Мяч", "Ядро"},
- {15, "Ящик", "", 6, "Маленький ящик", "Маленький ящик"},
- {16, "Наковальня", "", 6, "Ящик", "Ящик"},
- {17, "Маленькая палка", "", 6, "Наковальня", "Ящик"},
- {18, "Палка", "", 6, "Маленькая палка", "Маленькая палка"},
- {19, "Лёд", "", 6, "Маленькая мышь", "Руна"},
- {20, "Сурвивор", "", 5, "Шаман", "Ядро"},
- {22, "Буткамп", "", 5, "Рейсинг", "Сурвивор"},
- {23, "Рейсинг", "", 5, "Комната", "Быстрая мышь"},
- {24, "Дефиланте", "", 5, "Рейсинг", "Буткамп"},
- {25, "Кафе", "", 5, "Маленькая мышь", "Племя"},
- {26, "Вилладж", "", 5, "Кафе", "Комната"},
- {27, "АФК", "", 1, "Кафе", "Вилладж"},
- {28, "НПС", "", 1, "Маленькая мышь", "Вилладж"},
- {29, "Быстрая мышь", "", 1, "Маленькая мышь", "Ядро"},
- {30, "Тиг", "", 6, "Наковальня", "Сыр"},
- {31, "Кидалки", "", 4, "НПС", "Сыр"},
- {32, "Ванилла", "", 5, "Комната", "Сыр"},
- {33, "Зигвин", "", 3, "Луа", "Маленькая мышь"},
- {34, "Луа", "", 5, "Племя", "АФК"},
- {35, "Модули", "", 5, "Луа", "Комната"},
- {36, "Комната", "", 5, "Друзья", "Сыр"},
- {37, "Племя", "", 5, "Друзья", "Друзья"},
- {38, "Форум", "", 5, "Кафе", "Племя"},
- {39, "Мьюсик", "", 5, "Комната", "АФК"},
- {40, "Утилити", "", 5, "Модули", "Редактор карт"},
- {41, "Редактор карт", "", 5, "Комната", "Шаман"},
- {42, "Магазин", "", 5, "Сыр", "Сыр"},
- {43, "Модная мышь", "", 1, "Магазин", "Маленькая мышь"},
- {44, "Богатая мышь", "", 1, "Мышь в норе", "Мышь с сыром"},
- {45, "Старая мышь", "", 1, "Модная мышь", "Богатая мышь"},
- {46, "Hitler", "", 3, "Буткамп", "Быстрая мышь"},
- {47, "A_4", "", 3, "Быстрая мышь", "Модная мышь"},
- {48, "Ubivatormish", "", 3, "Рейсинг", "Модная мышь"},
- {49, "Остролист", "", 3, "АФК", "Племя"},
- {50, "Это все больше не старайся чего-то найти", "", 3, "Утилити", "Кидалки"},
- {51, "Тролль", "", 1, "Маленькая мышь", "Кидалки"},
- {52, "Агро", "", 1, "Тролль", "Маленькая мышь"},
- {53, "ПВП", "", 1, "Шаман", "Шаман"},
- {54, "Карта", "", 4, "Редактор карт", "Маленькая мышь"},
- {55, "Перм", "", 4, "Карта", "Форум"},
- },
- },
- }
- -- Чтобы выбрать один из наборов элементов впишите сюда номер или название пака
- -- Пример
- -- pack_name = "example"
- -- pack_name = 1
- pack_name = "Transformice"
- -- Тут просто код идите дальше
- if type(pack_name) == "number" then
- groups = packs[pack_name].groups
- opened_elements = packs[pack_name].opened_elements
- closed_elements = packs[pack_name].closed_elements
- else
- for number, _ in pairs(packs) do
- for _, name in pairs(packs[number]) do
- if tostring(name) == pack_name then
- pack_name = number
- end
- end
- end
- groups = packs[pack_name].groups
- opened_elements = packs[pack_name].opened_elements
- closed_elements = packs[pack_name].closed_elements
- end
- ------------------
- -- Документация --
- -------------------
- -- Группы для того чтобы делить элементы по цветам
- -- {айди, цвет}
- -- Параметры группы
- -- число; айди - Номер группы по порядку (Должно быть 1 2 3 и т.д.)
- -- текст; цвет - Цвет в шестнадцатитричном коде (Можете воспользоваться палитрой в игре в редакторе и т.п.)
- -- Пример :
- -- groups = {{1, '#888888'},{2, '#4444DD'}}
- -- ____________________
- -- Начальные элементы (таблица для открытых элементов)
- -- {айди, название, "Начальный", группа}
- -- Параметры элемента
- -- число; айди - Номер элемента по порядку ;
- -- текст; название - Название элемента ;
- -- "Начальный" - Для обозначения подписи элемента в таблице внизу (в будущем в этой ячейке хранится ник игрока, который открыл элемент);
- -- число; группа - Айди группы (см. выше)
- -- Пример :
- -- opened_elements = {
- -- {1, "Огонь", "Начальный", 1},
- -- {2, "Вода", "Начальный", 1},
- -- {3, "Ветер", "Начальный", 1},
- -- {4, "Земля", "Начальный", 1},}
- -- ____________________
- -- Закрытые элементы
- -- {айди, название, "", группа, элемент 1, элемент 2}
- -- Параметры элемента
- -- число; айди - Номер элемента по порядку ;
- -- текст; название - Название элемента ;
- -- "Начальный" - Для обозначения подписи элемента в таблице внизу (в будущем в этой ячейке хранится ник игрока, который открыл элемент);
- -- число; группа - Айди группы (см. выше)
- -- текст; элемент 1 - Первый элемент для слияния
- -- текст; элемент 2 - Второй элемент для слияния
- -- Пример :
- -- closed_elements = {
- -- {5, "Вулкан", "", 2, "Огонь", "Земля"},
- -- {6, "Пар", "", 2, "Огонь", "Вода"},}
- ------------------
- -- Основной код --
- ------------------
- data = {}
- idadd = 0
- -- Таблица с айди и ником для каждого игрока
- for pname, _ in pairs(tfm.get.room.playerList) do
- idadd = idadd + 1
- data[pname] = {
- id = idadd,
- name = pname,
- element1 = " ",
- element2 = " ",
- setElement = false,
- page = 1,}
- tfm.exec.setPlayerScore(pname,0)
- end
- function updateElementsList(delete, next_page)
- if delete then
- for name,_ in pairs(data) do
- for i = 1, #opened_elements do
- id = data[name].id * 1000 + i
- ui.removeTextArea(id, name)
- end
- end
- end
- for name,_ in pairs(data) do
- local startElement = 1
- local endElement = #opened_elements
- if #opened_elements > 24 then
- startElement = data[name].page * 24 - 24 + 1
- endElement = startElement + 24 - 1
- if endElement > #opened_elements then
- endElement = #opened_elements
- end
- if next_page then
- startElement = #opened_elements
- endElement = #opened_elements
- data[name].page = data[name].page + 1
- end
- end
- local x = 0
- local y = 1
- for i = startElement, endElement do
- player_name = opened_elements[i][3]
- color = groups[opened_elements[i][4]][2]
- element_name = opened_elements[i][2]
- id = data[name].id*1000 + i
- x = x + 1
- if x > 6 then x = 1 y = y + 1 end
- 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)
- end
- end
- end
- ui.addTextArea(0,"<p align = 'center'><font size = '16'>Алхимия\nlua by zigwin</font></p>",nil,200,330,400,50,nil,nil,0.5,true)
- function updateDownText(name)
- text = "\n<a href='event:check'><p align = 'center'><font size = '16'>"..data[name].element1.." + "..data[name].element2.."</font></p></a>"
- ui.updateTextArea(0,text,name)
- end
- function checkElements(element1, element2, name)
- for i = #closed_elements , 1 , -1 do
- 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
- tfm.exec.setPlayerScore(name, 1, true)
- table.insert(opened_elements, {closed_elements[i][1],closed_elements[i][2],name,closed_elements[i][4]})
- table.remove(closed_elements, i)
- if #opened_elements > data[name].page*24 then
- updateElementsList(true, true)
- updateElementsList(true, nil)
- else
- updateElementsList()
- end
- end
- end
- end
- function eventTextAreaCallback(textAreaId, name, callback)
- if callback == "next" then
- if (data[name].page+1) <= math.ceil(#opened_elements / 24) then
- data[name].page = data[name].page + 1
- updateElementsList(true)
- end
- return
- elseif callback == "back" then
- if (data[name].page-1) >= 1 then
- data[name].page = data[name].page - 1
- updateElementsList(true)
- end
- return
- end
- local text = "<r>|</r><v>"..name.."</v> <i>"..data[name].element1.."</i> <b> ; </b> <i>"..data[name].element2.."</i>"
- if callback == "check" and data[name].element1 ~= " " and data[name].element2 ~= " " then
- checkElements(data[name].element1, data[name].element2, name)
- 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
- return
- end
- if data[name].element1 == " " or data[name].element2 == " " then
- if data[name].element1 == " " then data[name].element1 = callback print(text) updateDownText(name) return end
- if data[name].element2 == " " then data[name].element2 = callback print(text) updateDownText(name) return end
- end
- if data[name].setElement then
- data[name].element1 = callback
- data[name].setElement = false
- updateDownText(name)
- print(text)
- return
- elseif not data[name].setElement then
- data[name].setElement = true
- data[name].element2 = callback
- updateDownText(name)
- print(text)
- return
- end
- end
- function eventNewPlayer(playerName)
- tfm.exec.respawnPlayer (playerName)
- idadd = idadd + 1
- data[playerName] = {
- id = idadd,
- name = playerName,
- element1 = " ",
- element2 = " ",
- setElement = false,
- page = 1,}
- ui.addTextArea(0,"<p align = 'center'><font size = '16'>Алхимия\nlua by zigwin</font></p>",nil,200,330,400,50,nil,nil,0.5,true)
- 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)
- 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)
- updateElementsList()
- end
- updateElementsList()
- -- <- ← ; -> →
- 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)
- 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)
- tfm.exec.disableAutoTimeLeft(true)
- tfm.exec.disableAutoNewGame(true)
- tfm.exec.disableAutoScore(true)
- tfm.exec.disableAfkDeath(true)
- tfm.exec.disableAutoShaman(true)
- tfm.exec.newGame('7444032')
- function eventPlayerDied(playerName)
- tfm.exec.respawnPlayer (playerName)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement