Labadal 51 Опубликовано 24 Мая 2023 Поделиться Опубликовано 24 Мая 2023 @WinCap ну я вот так и сделал, но такая проблема, что умирают они не сразу после выдачи поршня, успевают еще в округе пошарахаться от тех, кто умер первым. Оттого и думал, что может быть их скриптом как-то. (А может быть есть возможность, убить всех сталкеров - обитателей определённого смарттеррейна?) God save Hatsune Miku! Ссылка на комментарий
h0N0r 299 Опубликовано 25 Мая 2023 Поделиться Опубликовано 25 Мая 2023 19 часов назад, Labadal сказал: умирают они не сразу после выдачи поршня В логике любого объекта, хитануть на 1000 урона кого-то с сидом 100: =hit_npc(100:bip01_spine1:1000:0) В логике убиваемого, path_name - путь, от которого будет урон: =hit_npc(path_name:bip01_spine1:1000:0) 1 https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий
Norman Eisenherz 267 Опубликовано 25 Мая 2023 Поделиться Опубликовано 25 Мая 2023 [ЗП 1.6.02] Приведенный ниже код дает вылет без лога. В ТЧ и ЧН точно такой же код работает. Нужна пояснительная бригада… Spoiler [scripts\ui_load_dialog.script] function load_dialog:OnKeyboard(dik, keyboard_action) (+) перед return true if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if dik == DIK_keys.DIK_UP or dik == DIK_keys.DIK_DOWN then get_console():execute("test") end end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Nowislaw 5 Опубликовано 25 Мая 2023 Поделиться Опубликовано 25 Мая 2023 Подскажите, пожалуйста, логику для анимированного физического объекта. Пример того, что хочу получить, под спойлером. Скрытый текст [logic] active = ph_idle [ph_idle] on_info = {+info} ph_idle@animation [ph_idle@animation] anim = idle Z690 GAMING X DDR4, 12th Gen Intel(R) Core(TM) i7-12700KF, NVIDIA GeForce RTX 2060 SUPER, Windows 11. Ссылка на комментарий
imcrazyhoudini 188 Опубликовано 25 Мая 2023 Поделиться Опубликовано 25 Мая 2023 @Nowislaw пример твой не работает? Попробуй то же самое только под ph_button. Ну, если не работает пример выше. 1 ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
WinCap 309 Опубликовано 25 Мая 2023 Поделиться Опубликовано 25 Мая 2023 @Norman Eisenherz на чистом ЗП приведенный код работает без проблем, ищи причину вылета в другом. 1 S.T.A.L.K.E.R. CoP Objects (upd 02.09.24) Ссылка на комментарий
Norman Eisenherz 267 Опубликовано 25 Мая 2023 Поделиться Опубликовано 25 Мая 2023 Файл для проверки: https://drive.google.com/file/d/1rwtL6G7nwbLGTpZEV0yEOJt1lEq2f8PA Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Kirgudu 1 146 Опубликовано 25 Мая 2023 Поделиться Опубликовано 25 Мая 2023 Подтверждаю то, что написал @WinCap 1 Инструмент Ссылка на комментарий
Norman Eisenherz 267 Опубликовано 26 Мая 2023 Поделиться Опубликовано 26 Мая 2023 При нажатии указанных клавиш выводится сообщение в консоль, правильно? 2 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Labadal 51 Опубликовано 26 Мая 2023 Поделиться Опубликовано 26 Мая 2023 Здравствуйте, подскажите - возможно вообще телепортировать непися на нужные мне (walk и look) координаты? God save Hatsune Miku! Ссылка на комментарий
dsh 3 820 Опубликовано 27 Мая 2023 Поделиться Опубликовано 27 Мая 2023 @Labadal конкретно телепортировать - это зависит от используемого движка. В общем OGSR - можно. Но ведь в любом случае, даже используя оригинальный движок, можно удалить на старом месте и создать на новом. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
phalcor 56 Опубликовано 30 Мая 2023 Поделиться Опубликовано 30 Мая 2023 Доброго дня! Есть оригинальный каллбэк на смерть физических объектов (ящиков и т.п.): function generic_physics_binder:death_callback(victim, who) Хочу идентифицировать, КТО "убил" ящик, но who:id(), who.id, who:section(), who:section_name() и т.д. вызывают вылет - нет такого метода. Подскажите, кто знает, как же можно идентифицировать who? Ссылка на комментарий
Norman Eisenherz 267 Опубликовано 30 Мая 2023 Поделиться Опубликовано 30 Мая 2023 В оригинале, видимо, только через костыли. В Anomaly есть какие-то правки и рабочее испытание "разбить 200 ящиков" с проверкой who:id() = db.actor:id(). Есть вариант зацепиться за событие спавна лута в [xr_box.script] и перебрать db.storage на предмет живых объектов рядом с ящиком, но это не позволит точно определить, кто именно разбил ящик гранатой в перестрелке. 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
phalcor 56 Опубликовано 30 Мая 2023 Поделиться Опубликовано 30 Мая 2023 27 минут назад, Norman Eisenherz сказал: В оригинале, видимо, только через костыли. Самое интересное, что в том же generic_physics_binder:hit_callback(obj, amount, local_direction, who, bone_index) прекрасно работает who:id(), и тогда я сделал там сохранение своей глобальной переменной kto_ubil = who, чтобы потом в death_callback её читать, но тут снова затык: если hit убивает ящик, то нет вызова hit_callback, а сразу - death_callback Ладно, будем искать... Ссылка на комментарий
Labadal 51 Опубликовано 2 Июня 2023 Поделиться Опубликовано 2 Июня 2023 Добрый день, возможно как-то получить количество определённых вещей на поясе? (Например, количество медуз) Спасибо God save Hatsune Miku! Ссылка на комментарий
Norman Eisenherz 267 Опубликовано 5 Июня 2023 Поделиться Опубликовано 5 Июня 2023 [ТЧ 1.0006] Правка "отдавать артефакты сначала из инвентаря, потом с пояса". Spoiler [scripts\dialogs.script] function relocate_item_section(victim, section, type) … elseif type == "out" then (–) db.actor:transfer_item(db.actor:object(section), victim) (+) local inv_item = db.actor:object(section) db.actor:inventory_for_each( function(item) if item:section() == section then inv_item = item break end end ) db.actor:transfer_item(inv_item, victim) Безлоговый вылет при остановке перебора через break. В движке перебор описан как for(it = item_list.begin(); item_list.end() != it; ++it) – такой цикл должен быть совместим с break. Или нет? Как правильно остановить перебор инвентаря при обнаружении одного предмета? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Kirgudu 1 146 Опубликовано 5 Июня 2023 Поделиться Опубликовано 5 Июня 2023 @Norman Eisenherz я не знаток С++, но скорее всего break внутри выполняемой функции работает только в контексте этой функции, а поскольку никакого цикла в ней нет, такая команда приводит к исключению. Более того, поскольку в нет и обработки и возвращаемого из functor значения (можно было бы вернуть true или false для остановки, как это сделано, например, в level.add_call для проверки выполнения условия), то и этот метод не пойдёт. Отсюда ответ - никак. А потому я бы переписал код так, чтобы после первого найденного предмета он сохранял его, не меняя больше: local inv_item = nil db.actor:inventory_for_each(function(item) if inv_item == nil and item:section() == section then inv_item = item end end) if inv_item then db.actor:transfer_item(inv_item, victim) end 2 1 2 Инструмент Ссылка на комментарий
Norman Eisenherz 267 Опубликовано 6 Июня 2023 Поделиться Опубликовано 6 Июня 2023 @Kirgudu Сделал примерно то же через логический флаг; хотелось устранить лишние действия, но раз никак… Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Zander_driver 10 320 Опубликовано 15 Июня 2023 Поделиться Опубликовано 15 Июня 2023 30.05.2023 в 16:25, phalcor сказал: function generic_physics_binder:death_callback(victim, who) Хочу идентифицировать, КТО "убил" ящик, но who:id(), who.id, who:section(), who:section_name() и т.д. вызывают вылет - нет такого метода. Подскажите, кто знает, как же можно идентифицировать who? Так вы бы и разбирались для начала, передан ли вообще who, и что он из себя представляет. Вылет происходит когда вы дергаете методы не удостоверившись в их наличии, а также наличии самого объекта. if who and type(who) == 'userdata' then if type(who.id) == 'number' then log("who - серверный объект") -- НЕ КЛИЕНТСКИЙ! -- Здесь можно смело использовать who.id, who:section_name(), и другие методы и свойства СЕРВЕРНОГО объекта. elseif type(who.id) == 'function' then log("who - клиентский объект") -- НЕ СЕРВЕРНЫЙ! -- Здесь можно смело использовать who:id(), who:section(), и другие методы и свойства КЛИЕНТСКОГО объекта else log("who - объект, но не серверный и не клиентский. Вообще непонятно что.") -- Такого скорее всего не произойдет никогда. Ну, или почти. end else log("who not found") -- Объект не был передан. end -- Главное не путайте серверные и клиентские объекты между собой. 2 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
Norman Eisenherz 267 Опубликовано 15 Июня 2023 Поделиться Опубликовано 15 Июня 2023 Если в трех скриптах [bind_stalker / bind_monster / xr_motivator] это работает одинаково, то первым действием в четвертом скрипте будет все же повтор, а не проверка – какой смысл пенять новичкам, что они не знают ВСЕГО и не предполагают наличия кочки на ровном месте? Проверили: userdata неизвестного класса – та самая неведома зверушка, которая не должна существовать, но выдается при каждом срабатывании скрипта в момент разрушения ящика. Как скриптовыми методами определить класс такого объекта? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти