Баба ЯГА 12 Опубликовано 30 Сентября 2019 Ребята, как узнать на карте произвольный level_vertex_id, ну например, level_vertex_id(30078) - а мне возвращает если он существует то true и его координаты, а если его не существует то возвращает просто false, как такое реализовать? upd: или как узнать по координатам ID вертекса и валидный он или нет? Например, я запрашиваю произвольные координаты на локации на которой находится ГГ, а мне возвращает по этим координатам level_vertex_id и то есть ли он там на самом деле, грубо говоря - если клетка АI сетки по этим координатам? Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 1 Октября 2019 @naxac, жаль что нельзя по координатам узнать ID вертекса 14 минут назад, naxac сказал: Количество вертексов фиксированное, т ч. можно составить табличку [имя уровня] = кол-во вертексов. Позиция вертекса: level.vertex_position(level_vertex) Я об этом думал, но, вот тут проблема,, например на Кордоне = 539254 вертекса, а при переборе показывает только 5421 из них 4702 - валидных... Если перебирать свыше 300000 - вылет. Ничего понять не могу... Я так понимаю, что клетка AI сетки - это и есть вертекс, значит на Кордоне должно быть 539254 вертекса по количеству AI клеток. 17 минут назад, naxac сказал: Есть в X-Ray Extensions: Я не знаю что это такое... Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 1 Октября 2019 @naxac, хорошо, как тогда перебрать все вертексы на Кордоне например? Вот так у меня показывает 4477 вертекса function GetLevelsVertexes(lname) local t = {} local i = 0 local graph = game_graph() local sim = alife() while graph:valid_vertex_id(i) do local v = graph:vertex(i) local ln = sim:level_name(v:level_id()) if ln == lname then t[#t+1] = v:level_vertex_id() end i = i+1 end return t, i end local t,i = GetLevelsVertexes(level.name()) а вот так показывает 5704 вертекса на Кордоне, а реально там 500000 клеток (а значит и вертексов) local colco_ver = 0 local all_colvo = 0 clear_log() while all_colvo < 350000 do if game_graph():vertex(all_colvo):level_id() == alife():level_id() then colco_ver = colco_ver + 1 --gc:execute( "load ~:> vertex_id ="..i..", " ) end all_colvo = all_colvo + 1 end upd: вот тут хотел поставить 600000 (предварительно количество посмотрел в LE) чтобы с запасом, но, как я и говорил если ставить больше чем 300000 - то вылет. while all_colvo < 350000 do Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 1 Октября 2019 @naxac, так а что тогда возвращает db.actor:level_vertex_id() ? Что-то я запутался совсем... Я смотрел реальное количество клеток АИ так: открыл Кордон в LE и выделил все клетки и там внизу показывает количество выделенных клеток. Труба, короче. Я хотел определить какие вертексы есть вокруг ГГ в радиусе, скажем 3 метра, а потом вывести АИ сетку эту (кусочек) - на экран. Но выходит - ничего не выйдет.... Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 1 Октября 2019 7 минут назад, naxac сказал: for i = 1, count do хорошо, а COUNT - сколько ставить? Если больше 300000 - вылет upd: попробуй сам перебрать вертексы и сам всё увидишь, не работает такой перебор, он всё не перебирает. Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 1 Октября 2019 @naxac, точно, проверил, всё работает! Ты меня просто спас Ничего не пойму, а чего у меня вылетало тогда? Я же вроде всё тоже-самое делал... 1 час назад, naxac сказал: с помощью, например, Graph Viewer где его взять? Чтобы каждую локацию не декомпилировать для LE? Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 1 Октября 2019 @naxac, спасибо! Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 1 Октября 2019 @abramcumner, начинаю вникать потихоньку... @Kirgudu, обязательно посмотрю. Ребята, как поставить метку на карту по заданным координатам? Не на объект, а просто в нужную точку на карте? upd: есть идея поставить пустой рестриктор и на него поставить метку, но возникает вопрос - можно ли ставить пустой рестриктор и будет ли это большая нагрузка на ресурсы если таких рестрикторов и меток будет скажем - 500 штук? upd2: где-то видел не могу найти - как заспавнить пустой рестриктор через скрипт? Нашёл, вот так можно? local sobj = alife():create( "space_restrictor", pos, lv, gv ) upd3: и ещё. можно ли поставить метку на level_vertex? Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 1 Октября 2019 @Kirgudu, понял, спасибо. Возник вопрос: как узнать gv вертекса. если я знаю ID и позицию (координаты)? local lvid = 30087 local vpos = level.vertex_position( lvid ) local sobj = alife():create( "space_restrictor", vpos, lvid, gv ) -- КАК УЗНАТЬ gv ??? Как узнать gv ?? 9 минут назад, Kirgudu сказал: сам же спрашивал и уже получал ответ здесь. я помню что спрашивал уже это, искал тут, но не нашёл, пришлось спросить ещё раз... Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 1 Октября 2019 @Kirgudu, ты не понял, это всё мне уже @naxac выше подсказал, это всё готово уже - нахожнение веретексов вокруг ГГ, в итоге я знаю веретексы вокруг ГГ и их координаты, но не знаю как получить game_vertex - для level вертекс, ну я не знаю как ещё объяснить. Вот я ж выше писал: local sobj = alife():create( "space_restrictor", ЭТО ЕСТЬ, ЭТО ЕСТЬ, ЭТО КАК УЗНАТЬ??? ) Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 1 Октября 2019 (изменено) @Kirgudu, попробую объяснить ещё раз что мне нужно, курил я твой код никуда его не смог прикрутить... Итак: 1) перебираю вокруг ГГ все вертексы в радиусе 20 метров 2) заношу их в таблицу вида = id вертекса, координаты вертекса 3) спавню пустые рестрикторы по координатам найденных вертексов и на них ставлю метки. НО. чтобы заспавнить рестриктор, мне нужен ГЕЙМ ВЕРТЕКС, вот ты перебираешь гейм вертексы. а как мне определить к какому ЛЕВЕЛ вертексу подходит ГЕЙМ вертекс которые ты перебираешь? Ещё не понял? Ну нашёл я в радиусе 20 метров по твоему скрипту 4 гейм вертекса и что мне с ними делать? У меня таблица, в ней, для примера: t = { 30087 = { -120.00,-18.00,-200.00 } } вот из твоего скрипта нашло 4 гейм вертекса = 47, 22,17,44 - и как мне узнать какой именно ГЕЙМ ВЕРТЕКС нужен для спавна -> 30087 = { -120.00,-18.00,-200.00 }? t = { 30087 = { -120.00,-18.00,-200.00 } } вот мне нужно заспавнить рестриктор: local sobj = alife():create( "space_restrictor", 30087, -120.00,-18.00,-200.00 , а сюда какой из твоих геймвертексов ставить??? их четыре - какой сюда? ) @Kirgudu ??? 5 часов назад, Kirgudu сказал: for i = gvid_min, gvid_max do -- gvid_min, gvid_max - минимальный и максимальный game-вертексы для данной локации И откуда мне знать какой минимальный гейм вертекс на локации вертекс а какой максимальный. Изменено 1 Октября 2019 пользователем W.A.S.P. красный цвет Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 31 Марта 2021 Как отловить и вывести в лог момент, когда ГГ взял в руки ящик? Есть ли такие колбэки? Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 1 Апреля 2021 @Zander_driver 17 часов назад, Zander_driver сказал(а): ... В оригинале - разве что callback.use_object подойдет. Правда, он на использование предмета, в т.ч. физ.объектов и нпс, трупов. Подойдет ли под ваши задачи - не знаю. Думаю - подойдёт. Но как реализовать? Ума не приложу... Что именно требуется: ГГ берёт в руки по SHIFT + F ящик - и в лог выводится сообщение, что ГГ взял в руки ящик, или ГГ берёт в руки труп по SHIFT + F - и в лог тоже выводится сообщение, так же когда ГГ выпускает предмет из рук (именно ящик, бочка, труп) - тоже выводится сообщение - что ГГ поставил объект на землю. Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 1 Апреля 2021 28 минут назад, AndreySol сказал(а): use_object - кэллбэк на использование предмета, как то выпивание, съедание, применение аптечки или антирада. Каким боком это связано с перетаскиванием физобъектов, где, как я понимаю, имеет место аттач объекта к ГГ? Есть предложения по решению вопроса? Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 3 Апреля 2021 И всё же я надеюсь на помощь зала. Вопрос пока не решён. Ведь каким-то образом реализовано это дело, когда труп перетаскиваешь в комбезе? Значит можно как-то отловить когда ГГ берёт в руки какой-то физ объект? Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 7 Апреля 2021 @AndreySol в соли реализовано. Когда в комбезе то ГГ роняет труп и не может тащить, если снять комбез - то нормально тягает трупы. Значит где-то в скриптах есть коллбэк на взятие ГГ в руки физобъекта. а т.к. труп - это физобъект - то значит можно отловить и то когда ГГ берёт в руки бочку или ящик - но как и где? Вот об этом и спрашиваю. 1 Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 8 Апреля 2021 (изменено) По физ-объектам - понял, спасибо, нет смысла, надо движок ковырять. Есть ещё вопрос, получил через пакет данные по level_changer, там есть: dest_position = userdata dest_direction = userdata Я пробовал так: vector(t.dest_direction).x - но оно выдаёт всё по нулям... пробовал так: t.dest_directiondirection().x - так вообще ошибку выдаёт... как вместо userdata получить данные?.. shapes = table t.shapes[1]: offset = userdata t.shapes[1]: shtype = number t.shapes[1]: v2 = userdata t.shapes[1]: v3 = userdata t.shapes[1]: v1 = userdata Так-же там есть shapes - таблица, я её распарсил - но в ней тоже userdata... Как получить данные в этих случаях из userdata? 1) хочу посмотреть как там всё устроено на переходах 2) нужно изменить точку перехода и сделать радиус метра два - не больше, пробовал так: t.level_vertex_id = 397480 t.game_vertex_id = 1811 t.shapes = { { ["shtype"] = 0, ["center"] = vector():set( 0, 0, 0 ), ["radius"] = 2 } } но ничего не вышло... Изменено 8 Апреля 2021 пользователем Баба ЯГА Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 12 Апреля 2021 Возможно ли получить в игре скриптово реальное время компьютера (не игровое время), как в Lua с помощью os.date() ? Если да, то можно пример для получения yy:MM:dd hh:mm:ss? Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 12 Апреля 2021 (изменено) @WinCap Я знаю как в Lua получать дату и время... Будь добр, прочитай ещё раз мой предыдущий вопрос, внимательно. Потом - сам проверь В ИГРЕ - то что ты рекомендуешь - и ты сам себе ответишь на свой вопрос: "... а чем os.date() не устраивает..." Если бы оно работало В ИГРЕ - я бы не спрашивал Вопрос - актуален: Возможно ли получить в игре скриптово реальное время компьютера (не игровое время) -> как в Lua с помощью os.date()? Если да, то можно пример для получения yy:MM:dd hh:mm:ss? Для "быстрых" и невнимательных: os.date() в игре STALKER - не работает. ! Unknown command: ..\gamedata\scripts\test.lua:101:_attempt_to_index_global_'os'_(a_nil_value) Изменено 12 Апреля 2021 пользователем Баба ЯГА 1 Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение
Баба ЯГА 12 Опубликовано 13 Апреля 2021 (изменено) @I am Dead ну, может, в OGSE - уже и допилили движок и там есть такое, не спорю, у меня - нет (играю в Диетическую Солянку), кстати, в оригинале - тоже нет os. Вот по-этому и спрашиваю - может кто поможет (если, конечно, кто знает). @NikitosKnyaz 12 часов назад, NikitosKnyaz сказал(а): можно ли в ОП 2-1 через скрипт выдать и показать на карте все тайники существующие в зоне?! Скрытый текст Можно, вот так, например: function find_all_tainik() local s_obj,cnt = nil, 0 for i = 1, 65534 do s_obj = alife():object(i) if (s_obj) and (s_obj:section_name():find("inventory" , 1, true) or s_obj:section_name():find("_box" , 1, true)) then cnt = cnt + 1 get_console():execute( "load ::: ".."section: "..s_obj:section_name().." | name: "..s_obj:name().." | id: "..s_obj.id) if level.map_has_object_spot( s_obj.id, "treasure" ) == 0 then -- нет метки level.map_add_object_spot_ser( s_obj.id, "treasure", "Тайник"..s_obj:name() ) -- поставим свою end end end get_console():execute( "load ::: ".."Количество найденных тайников = "..cnt) end find_all_tainik() Изменено 13 Апреля 2021 пользователем Баба ЯГА Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Поделиться этим сообщением Ссылка на сообщение