Наверняка кто-нибудь из анонов разбирается LUA.Имеется форма с добавленными из онлайн игроками, необходимо сделать кнопку, которая бы реагировала (кикала, например) после выбора игрока из списка.С меня тонна нефти.
код: minetest.register_tool("form:tool", { description = "Tool", inventory_image = "default_flint.png", range = 0, on_use = function(itemstack, user, pointed_thing) local player = user:get_player_name() local players = {} local formspec = { "size[7.4,7.1] bgcolor[#080808BB;true]box[0.075,0;7.05,0.65;#111111] label[3.5,0.1;TEST] background[5,5;1,1;gui_formbg.png;true]button[0.1,5.8;1.5,1.5;kick;kick] textlist[0.1,1;7.03,4.5;playerlist;" } local is_first = true for _ , player in pairs(minetest.get_connected_players()) do local player_name = player:get_player_name() players[#players + 1] = player_name if not is_first then formspec[#formspec + 1] = "," end formspec[#formspec + 1] = minetest.formspec_escape(player_name) is_first = false end formspec[#formspec + 1] = "]" minetest.show_formspec(user:get_player_name(), "tool_form2",table.concat(formspec, ""), false) end,})minetest.register_on_player_receive_fields(function(player, formname, fields) if formname=="tool_form2" then if fields.kick then -- ... end endend)
>>197400058 (OP)Еба. А он жив до сих пор?В последний раз я о нём слышал, когда писал говноскрипты для своего школомода на Сталкер.
>>197402803Я только Hello World могу на Lua написать. Только вкатываюсь. На дваче по этому языку даже в /pr/ не встречал тредов. А чатик живой.
>>197403142Для nodemcu. Потом хочу тоже моды писать для minetest. Ну и вообще, нравится минималистичность интерпретатора.
>>1974051692-й пик - это уже написанная на луа форма, код в постенужно только связать кнопку и игрока из формырабочий вариант, только специальной формы (мода) выглядит вот такhttps://pastebin.com/ZMNcZ23b>>197405129вот этой button[0.1,5.8;1.5,1.5;kick;kick]
>>197405382Игроки лежат в players[ ], удалить элемент можно по разному, например с помощью Table.remove, тогда после удаления все элементы сместятся. Можно просто указать players[ 1] = nil, тогда если нет ссылок на элемент его убьет garbage collector.Чтобы ассоциировать какого именно игрока удалять нужно кешировать индекс выбранного пользователем элемента интерфейса. Например определяешь размер кнопки и высчитываешь на какую кнопку было нажатие, кэшируешь индекс и удаляешь по этому индексу из таблицы players[]. Таблицы players[] и порядок отрисовки элементов интерфейса симметричные. Тебе это нужно?
>>197405973Типа того, только проще.Кнопки, либо игроков из списка после нажатия удалять не нужно. Нужно только осуществить действие на игрока, после его выбора в списке и нажатия кнопки. Например убить его, либо кикнуть.
>>197406285Кароче, Слева то что ты рисуешь на экране.Справа то как это устроено в коде.Когда пользователь выбирает игрока в левой таблице, ты сохраняешь номер кнопки по которой было нажатие.Потом жмешь на допустим "кикнуть" - функция кикнуть берет номер выбранного элемента в левой таблице, получает по этому номеру выбраного игрока из таблицы players[ ] а дальше уже делай что хочешь, хоть кикай, хоть меняй имя.
>>197407270Как это все работает - понятно.Проблема в том как это реализовать для minetest. Не секу как работать с таблицами.
>>197408265Тут похуй minetest или что-то другое, таблицы в луа одинаковые.Представь что таблица это шкаф с ящиками, все ящики пронумерованы от 1 до n в луа не обязательно, можно получать достп к ящику по имени т .д. в ящике может храниться что угодно.Таблица это просто математическая абстракция. Потренируйся без основ дальше не пройдешь.например -https://sheepolution.com/learn/book/7
>>197405638Я не люблю мейлач. По душе борды с доступом из скрытосетей. Если зоздам тред, то не здесь.
>>197411587Как утверждают разрабы - да. Платными будут всякие донатопомойки для школьников, а они наверняка будут. Мол купи админку за 50 рублей.