naxac 2 605 Опубликовано 29 Июня 2019 @Norman Eisenherz, код из солянки: В amk.get_weapon_data читается нетпакет активной пушки ГГ, чтобы узнать, установлен ли на ней прицел, а в rx_utils.get_addon_status читается значение scope_status из конфига пушки, чтобы проверить, есть ли на ней несъёмный прицел. local accuracy = math_ceil(db.actor:accuracy()*1000) if accuracy == 1 then if not scopeUsed then local item = db.actor:active_item() if item then --get_console():execute("load ~#I#: db.actor:active_item():section()="..tostring(item:section())) if item:section() == "wpn_binoc" then scopeUsed = true elseif IAmAWeapon[item:clsid()] then local t = amk.get_weapon_data(alife():object(item:id())) scopeUsed = (bit_and(t.addon_flags, 1) == 1 or rx_utils.get_addon_status(item, "sc") == 1) --amk.dump_table(t) end end end else scopeUsed = false end 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 10 Июля 2019 (изменено) @Norman Eisenherz, в db.storage не только живые онлайновые объекты, а вообще все объекты, имеющие логику: ящики, рестрикторы, вертолёты, двери и прочие физ. объекты. Так что надо проверять ещё и по классу (isStalker, isMonster). Изменено 10 Июля 2019 пользователем naxac 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 23 Сентября 2019 @Баба ЯГА, для ТЧ: level.start_stop_menu( level.main_input_receiver(), true ) Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 24 Сентября 2019 @_Sk8_AsTeR_, можно и деньги в таблицу записать. Например, table.insert(tab, {id = sobj.id, name = data.character_name, money = data.money}) Ну, а дальше так же, как с именем. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 25 Сентября 2019 @AndreySol, тогда ещё проще. npc:give_money( -math.min(npc:money(), sum) ) 1 1 2 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 1 Октября 2019 Цитата как узнать на карте произвольный level_vertex_id @Баба ЯГА, например так local v = math.random(1, vertex_count) Количество вертексов фиксированное, т ч. можно составить табличку [имя уровня] = кол-во вертексов. Позиция вертекса: level.vertex_position(level_vertex) Обратной функции в ТЧ точно нет, про ЧН/ЗП не в курсе. Есть в X-Ray Extensions: level.vertex_id_by_pos = function ( position ) db.actor:set_vector_global_arg_1( position ) return level.vertex_id() end Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 1 Октября 2019 (изменено) @Баба ЯГА, level_vertex не может быть невалидным по определению. Невалидным для AI может быть game_vertex, если он расположен вне аи-сетки. Цитата Я не знаю что это такое... https://www.amk-team.ru/forum/topic/10538-x-ray-extensions/ Изменено 1 Октября 2019 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 1 Октября 2019 (изменено) @Баба ЯГА, так оно и не покажет реальное количество нод, это же только вертексы точек графа. Реальное количество нужно смотреть в level.gct локации (или в level.ai, не помню, склероз, чтоб его...), с помощью, например, Graph Viewer, скриптами его не получить. Изменено 1 Октября 2019 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 1 Октября 2019 @Баба ЯГА, почему же не выйдет. Перебирай все вертексы локации и проверяй расстояние. Если меньше 3х, то выводи на экран. for i = 1, count do if level.vertex_position(i):distance_to(db.actor:position()) <= 3 then -- тут выводишь клетку ... Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 1 Октября 2019 (изменено) @Баба ЯГА, вот так только что попробовал, всё работает: Скрытый текст function ggg() local pos = db.actor:position() local vpos local n = 0 for i = 1, 595499 do -- для Кордона vpos = level.vertex_position(i) if vpos and vpos:distance_to_sqr(pos) < 9 then n = n + 1 log(i) end end log("found %s vertexes", n) end вот что получил: Скрытый текст 385291 386206 386207 386208 386209 386210 387120 387121 387122 387123 387124 387125 387126 388033 388034 388035 388036 388037 388038 388039 388945 388946 388947 388948 388949 388950 388951 389852 389853 389854 389855 389856 389857 389858 389859 390747 390748 390749 390750 390751 390752 390753 391639 391640 391641 391642 391643 391644 391645 392549 392550 392551 392552 found 53 vertexes Изменено 1 Октября 2019 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 1 Октября 2019 @Баба ЯГА, https://yadi.sk/d/jriWu9cMSPglHg Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 12 Октября 2019 @_Sk8_AsTeR_, в солянке используется другая схема. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 14 Октября 2019 @_Sk8_AsTeR_, смотри amk_anoms.script, там, где неписю назначаются рестрикторы. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 25 Ноября 2019 @Капрал Хикс, при заклинивании выводится статик "weapon_jammed" - на апдейте лови момент его появления (if get_hud():GetCustomStatic("weapon_jammed") then...). можешь звуками поделиться, тоже давно хотел это сделать?) 4 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 26 Ноября 2019 (изменено) @Капрал Хикс, договорились. Изменено 26 Ноября 2019 пользователем naxac 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 12 Декабря 2019 (изменено) @Капрал Хикс, это,вернее всего, происходит из-за превышения размера пакета сохранения клиентских данных у актера: информация о заданиях там сохраняется: см. task_manager.script Решение: для сохранения этих данных подключить , допустим, хранилище от Artos'а. Либо оптимизировать сохранение: выкинуть лишнее, для строк использовать хэши, булевы значения побитово записывать в u8, и прочие изощрения... Но хранилище, по-моему, лучший вариант. Сейчас ещё глянул - там количество записей при сохранении ограничено u8 - т.е. 255, так что если заданий в конфиге больше - будут глюки. Решение: нужно заменить в сохранении/загрузке количества записей с r(w)_u8 на r(w)_u16 - тогда лимит будет 65535. Изменено 12 Декабря 2019 пользователем naxac 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 12 Декабря 2019 (изменено) @Капрал Хикс, смотря сколько у тебя тасков. Я проверял на ОП-2, там 165 квестов, на сохранение по старой схеме (но там уже строки сохранялись хэшами) данные занимали около 2kb, активных заданий при этом было всего 2, Пакет актёра - максимум 8kb, так туда обычно ещё много чего сохраняют: таймеры там всякие, переменные разные и т.д. Вот тут я переделал немного сохранение: ссылка. Места стало занимать почти в два раза меньше. А по сравнению с чистым ТЧ - разница, наверное, раза в четыре, потому что там всё строками сохранялось. @DMT, у тебя функция ASSERT не рабочая. Если бы она работала - в логе было бы написано, что в папке scripts нет подключаемого модуля (файла), и было бы написано, какого именно. Изменено 12 Декабря 2019 пользователем naxac 3 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 12 Декабря 2019 @DMT, я ж тебе объясняю: сделай рабочей функцию ASSERT, и станет понятно, какой модуль отсутствует в скриптах. Вот тут: local module = _G[ module_name ] Определяется переменная этого самого модуля. module_name - название скрипта. Выведи его в лог, и станет понятно, чего не хватает. Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 12 Декабря 2019 @DMT, потому что эта функция в огсе предназначена для проверки: если первый аргумент - это false или nil, то выводится сообщение об ошибке, заданное остальными аргументами. Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение
naxac 2 605 Опубликовано 12 Декабря 2019 @DMT, https://xray-engine.org/index.php?title=X-Ray_extensions 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Поделиться этим сообщением Ссылка на сообщение