h0N0r 313 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 @DibokDibokin, есть другой вариант, не по модели, а по секции [drop_box], Скрытый текст -- тестовые функции по клавише из главного меню function main_menu:OnKeyboard(dik, keyboard_action) --virtual function ... -- поставить отметку на объект с логикой drop_box (лут из коробки) if dik == DIK_keys.DIK_F1 then if (level.present() and db.actor ~= nil and db.actor:alive()) then local level_actor = game_graph():vertex(alife():actor().m_game_vertex_id):level_id() for a=1,65535,1 do local obj = alife():object(a) if obj and obj ~= nil then local level_obj = game_graph():vertex(obj.m_game_vertex_id):level_id() if level_obj == level_actor then -- отметки только на текущей карте local obj_name = obj:name() if (obj.parent_id and obj.parent_id == 65535) then local ini = obj:spawn_ini() if (obj:spawn_ini() ~= nil and obj:spawn_ini():section_exist("drop_box") == true) then level.map_add_object_spot(obj.id, "obj_location", tostring(obj_name)) -- obj_location, ид метки из map_spots.xml --[[ <obj_location> <level_map spot="obj_location_spot"/> <mini_map spot="obj_location_spot"/> </obj_location> <obj_location_spot x="0" y="0" width="4" height="4" alignment="c" stretch="1"> <texture r="0" g="255" b="255">ui_minimap_point</texture> </obj_location_spot> ]]-- end end end end end end end -- удалить отметку if dik == DIK_keys.DIK_F2 then if (level.present() and db.actor ~= nil and db.actor:alive()) then for a=1,65535,1 do local obj = alife():object(a) if obj and obj ~= nil then if (obj.parent_id and obj.parent_id == 65535) then if (obj:spawn_ini() ~= nil and obj:spawn_ini():section_exist("drop_box") == true and level.map_has_object_spot(obj.id, "obj_location")) then level.map_remove_object_spot(obj.id, "obj_location", "") end end end end end end 1 https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий
Zander_driver 10 325 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 35 минут назад, DibokDibokin сказал: тоже не сработало. А вы свой же код хотя бы читаете? Пробежаться глазами по строчкам и прикинуть, что там происходит, не? В вашей функции, первая же строчка: 36 минут назад, DibokDibokin сказал: local s_obj = alife():object(i) Чему здесь равно i ? Не определено. Что вам вернет в s_obj - ничего. Я так понимаю, этот совет 14.08.2020 в 00:52, Zander_driver сказал: Когда код творит что-то не то, что от него ожидается, полезно его снабдить выводами в лог интересующей информации. Пусть пишет, как у него дела, у кода этого. Тогда и дебаг быстрее делается Решили игнорировать. Ваше право. Но тогда никакие "варианты" в скриптах не сработают, если только случайно. Любой код отладки требует, это нормально. Но отладки не будет без лога. И не будет понимания, что могло пойти не так, если не смотрели что код вообще делает, откуда в нем те или иные значения берутся. 1 3 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
mdm64 579 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 (изменено) Доброго времени! Задаю вопрос здесь, потому как тема по вылетам закрыта, а ошибка, судя по всему, связана со скриптами - через небольшое время после начала игры такой вылет: Скрытый текст FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : ..\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : .... world over world\gamedata\scripts\state_mgr.script:247: C stack overflow Понимаю, что ошибка где-то в анимках НПС, возможно даже, в скриптах логики неписей.Но все анимации вроде как стандартные, без изысков. И не пойму, ошибка в анимациях "обычных" неписей или квестовых, эксклюзивных, так сказать... И вдогонку - в gamedata\scripts есть набор файлов, отвечающих за анимациии НПС, может ли кто-то скинуть полный перечень файлов в этой (а если есть и в других) папках, отвечающих за эти анимации (файлы типа - smart_covers_animpoint_sit_low, smart_covers_loophole_animpoint_sit_low, state_mgr_animation и подобные им, это просто для примера). Потому как набор таких файлов в оригинале ЗП сильно отличается от аналогичного набора в исходниках СДК 0.7, в СДК он больше. Изменено 19 Августа 2020 пользователем mdm64 Ссылка на комментарий
WinCap 311 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 @DibokDibokin, попробуй так: Скрытый текст local is_box = { ["dynamics\\box\\box_wood_01"] = true, ["dynamics\\box\\box_metall_01"] = true, ["dynamics\\box\\box_paper"] = true, } function show_boxes() for i=1,65535 do local s_obj = alife():object(i) if s_obj ~= nil then local c_obj = level.object_by_id(s_obj.id) if (c_obj and is_box[c_obj:get_visual_name()]) then level.map_add_object_spot_ser(s_obj.id, "warfare_stalker_spot", "box") end end end end 1 2 S.T.A.L.K.E.R. CoP Objects (upd 28.09.24) Ссылка на комментарий
AndreySol 215 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 @WinCap, @DibokDibokin, Если есть таблица, из которой мы выдергиваем признак того, что объект у нас инв.ящик, так может правильнее сделать таким признаком story_id? Т.е. вместо перебора 65тыщ объектов перебрать несколько объектов из таблицы, получая объект по его story_id? Просмотрел несколько страниц назад, не нашел изначальный вопрос @DibokDibokin. Из обсуждения понятно, что надо поставить метку на объект, но вот условия, когда ее надо ставить? Ссылка на комментарий
Zander_driver 10 325 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 @WinCap, Среди объектов иногда бывают такие, у которых нету визуала. Смарты например. Попытка с колес использовать его "визуал" в качестве ключа таблицы, к нехорошим последствиям привести может @DibokDibokin, local is_box = { ["dynamics\\box\\box_wood_01"] = true, ["dynamics\\box\\box_metall_01"] = true, ["dynamics\\box\\box_paper"] = true, } function show_boxes() printf("show_boxes run") for i=1,65535 do local s_obj = alife():object(i) if s_obj ~= nil then local c_obj = level.object_by_id(s_obj.id) if (c_obj) then local visual = c_obj:get_visual_name() if (visual and visual ~= "" and is_box[visual]) then printf(string.format("box object [%s:%i] detected. visual=%s", c_obj:section(), s_obj.id, visual)) level.map_add_object_spot_ser(s_obj.id, "warfare_stalker_spot", "box") end end end end printf("show_boxes complete") end Готовый вариант, безопасный с точки зрения работы с таблицами, и снабженный выводами в лог, емнип, не требующими подключения сторонних библиотек к оригиналу. printf ведь работает в оригинале? кто помнит. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
UriZzz 998 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 @Zander_driver, вот и проверит, если будут вылет с руганью на эту строчку, значит не работает. Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий
Zander_driver 10 325 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 2 часа назад, AndreySol сказал: может правильнее сделать таким признаком story_id? Т.е. вместо перебора 65тыщ объектов Из вопросов @DibokDibokin, по-моему, никак не следует, что интересующие ящики вообще story_id имеют. А возникающие какие-либо задачи лучше решать без привлечения сторонних-дополнительных сущностей, если это возможно и удобно. имха. Только что, UriZzz сказал: если будут вылет Его-то точно не будет. Куча printf-ов есть в скриптах оригинала, не закомментированных. Другое дело, они там в лог пишут или молча игнорируются... я не помню. Помню что на заре моддинга зачем-то строились монструозные костыли для вывода инфы в логи через консоль. А зачем и почему это делалось, уже не помню, хоть убейте. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
abramcumner 1 120 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 56 минут назад, Zander_driver сказал: А зачем и почему это делалось, уже не помню, хоть убейте. Затем, что принтф не работает в оригиналах 1 1 Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 Господа, чет я затупил Вот так можно вернуть комьюнити НПС: npc:community(), а как вернуть уровень, на котором находится npc? Ссылка на комментарий
dsh 3 823 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 @_Sk8_AsTeR_, если движок OGSR, то sobj.level_name. Ты сразу уточняй, что за движок, что бы не гадать. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 @dsh, огср, да, извиняюсь. Ссылка на комментарий
Zander_driver 10 325 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 2 часа назад, abramcumner сказал: принтф не работает в оригиналах Ужас. И всякие log_что-нибудь тоже. Давно там не ковырялся, успел позабыть, насколько все было плохо) А ведь пожалуй, OGSR движок вообще любому начинающему ковыряльщику рекомендовать можно, дружелюбнее он к разработчику. Особенно начинающему. @DibokDibokin, возьми на заметку) 1 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Kirgudu 1 171 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 Начинающего ковыряльщика может интересовать вовсе даже не ТЧ, а, скажем, ЧН, как меня 9 лет назад, или ЗП. Инструмент Ссылка на комментарий
Expropriator 2 118 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 (изменено) @Kirgudu, про ЧН это слишком. Там я и еще пара пасонов. Вот в ЗП - это возможно. И еще, зачем вы в ОГСМ ГГ убили? Вы на ГГ, еще одного ГГ навесили? Изменено 19 Августа 2020 пользователем Опричник Ссылка на комментарий
mdm64 579 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 Никто не подскажет, что за интересное написание логики непися в поинте (ЗП) - ""wp00|a=sit_ass""? Первый раз встретил такое, это чей-то мод небольшой, старенький. Ссылка на комментарий
Expropriator 2 118 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 @mdm64, первое вейпоинт. Второе - анимация или работа (сидеть). Ссылка на комментарий
mdm64 579 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 (изменено) @Expropriator, я не об этом, это понятно, я про двойные скобки. ПыСы. Самое интересное, что этот мод работает. Изменено 19 Августа 2020 пользователем mdm64 1 Ссылка на комментарий
Expropriator 2 118 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 (изменено) @mdm64, может потому, что там один вейпоинт вообще, а не цепь. Что то даже не знаю. Изменено 19 Августа 2020 пользователем Expropriator Ссылка на комментарий
mdm64 579 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 (изменено) @Expropriator, Там плотно заселённые средних размеров две локации плюс полный ЗП. На каждой локе несколько смартов, в общей сложности десятка два отрядов плюс мутанты.... и на каждый отряд своя точка спавна, почти все неписи спавнятся через поинты, кроме уников. Да, такой вопрос - можно ли управлять в ЗП отрядом, используя цепочку поинтов, как для одно сталкера? Помнится, в ТЧ это было возможно, а в ЗП что-то не видел нигде. Если можно, то как? Изменено 19 Августа 2020 пользователем mdm64 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти