Kirgudu 1 217 Опубликовано 8 Ноября 2022 Поделиться Опубликовано 8 Ноября 2022 (изменено) Изменения, внесённые подменой, учитываются в процессе игры, но только от загрузки, во время которой произошла подмена, до следующей загрузки из сохранения (когда, в свою очередь, может произойти очередная подмена). Для кого-то это может быть существенной разницей, если полезно для осуществления тех или иных сюжетных/игровых решений. Аналогичного результата можно добиться (не)сохраняемыми флагами, условиями и т. п., но это уж кому что удобней и привычней. Изменено 8 Ноября 2022 пользователем Kirgudu 1 Инструмент Ссылка на комментарий
Biblia 4 Опубликовано 13 Ноября 2022 Поделиться Опубликовано 13 Ноября 2022 Всем привет. Хочу обратиться с вопросом: как осуществляется(ЗП) скриптовая проверка на предмет наличия на оружии /брони апгрейдов техника? Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 13 Ноября 2022 Поделиться Опубликовано 13 Ноября 2022 (изменено) 1. Предустановленные апгрейды в конфиге оружия: installed_upgrades. 2. Новые апгрейды в нетпакете: STATE-часть, список сразу после значения condition: заголовок типа s32, значения тип stringZ. Примеры нужны? Изменено 13 Ноября 2022 пользователем Norman Eisenherz Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Biblia 4 Опубликовано 13 Ноября 2022 Поделиться Опубликовано 13 Ноября 2022 (изменено) 1 час назад, Norman Eisenherz сказал: Примеры нужны? Да, спасибо, не помешают. Изменено 13 Ноября 2022 пользователем Biblia Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 13 Ноября 2022 Поделиться Опубликовано 13 Ноября 2022 Вариант для оружия. Аналогично с броней, только слот (7). Если подключен модуль [m_netpk.script], список новых апгрейдов можно получить из таблицы data.upgrades вместо чтения нетпакета вручную. Spoiler -- пример чтения значений типа chunk: список апгрейдов (ЧН) local wpn = db.actor:item_in_slot(2) if not wpn then return end -- выйти, если слот пуст local up_list = {} -- предустановленные апгрейды (конфиг) if not system_ini():line_exist(wpn:section(), "installed_upgrades") then return end -- выйти, если апгрейд невозможен (РПГ, РГ-6) local up_mod = system_ini():r_string(wpn:section(), "installed_upgrades") if up_mod then -- строка не пуста for up_sect in string.gfind(up_mod, "[%w_]+") do -- тексты вида "буквы, цифры, _" up_list[#up_list +1] = up_sect end end -- новые апгрейды (нетпакет) local sobj = alife():object( wpn:id() ) local pk = net_packet() pk:w_begin(0) -- обязательный сброс позиции sobj:STATE_Write(pk) pk:r_seek(18) pk:r_stringZ() -- custom data pk:r_advance(8) pk:r_stringZ() -- visual name pk:r_advance(5) local n = pk:r_s32() -- размер списка апгрейдов if n > 0 then for i = 1, n do up_list[#up_list +1] = pk:r_stringZ() end end -- вывод списка в строку (по желанию) if #up_list > 0 then news_manager.send_tip( table.concat(up_list, ", ") ) end -- результат up_b_lr300, up_e_lr300, up_i_lr300, up_g_lr300, up_eg_lr300, up_c_lr300 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Homtaro 0 Опубликовано 15 Ноября 2022 Поделиться Опубликовано 15 Ноября 2022 Доброго времени суток. Новичок в создании скриптов, поредачить еще могу, а вот самому написать уже сложно. Хочу сделать артефакт, который повышает урон от оружия на условные 10%, как проверить наличие артефакта на поясе я еще представляю, а вот как сделать скрипт на повышение урона нет. По идеи, в функции :on_hit надо ввести проверку надет ли арт, если да, то увеличить урон. Вот только не знаю как мне реализовать этот :on_hit и само повышение урона. Буду благодарен любой подсказке. Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 15 Ноября 2022 Поделиться Опубликовано 15 Ноября 2022 Здрасьте. [ТЧ 1.0006] В [scripts\task_manager.script] есть проверка CRandomTask:task_fail(p1, p2), которая каждый апдейт читает состояние активных циклических заданий. Откуда эта проверка вызывается и куда возвращает true/false? В других скриптах и движке следов не обнаружено. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
imcrazyhoudini 209 Опубликовано 15 Ноября 2022 Поделиться Опубликовано 15 Ноября 2022 @Homtaro ищите в моде "золотой шар". Там повышался урон из определённой винтовки по некоторым мутантам. ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
Kirgudu 1 217 Опубликовано 15 Ноября 2022 Поделиться Опубликовано 15 Ноября 2022 55 минут назад, Norman Eisenherz сказал: Откуда эта проверка вызывается и куда возвращает true/false? См. элементы function_fail в game_tasks_by_vendor.xml Вызывается движком. Инструмент Ссылка на комментарий
Опричник 5 337 Опубликовано 15 Ноября 2022 Поделиться Опубликовано 15 Ноября 2022 34 минуты назад, imcrazyhoudini сказал: @Homtaro ищите в моде "золотой шар" И "Возвращение в Зону". Там тоже есть. Desktop: i7-11700k/Gigabyte Z590 D/64 Гб DDR4-3600 (2х32Гб)/GTX 1070Ti 8Гб/30" WQXGA+24" WUXGA (portrait)/ADATA Legend 960 4 Тб + 4HDD (17 Тб)/Thermaltake smart BM2 - 650Вт/Win10+QtTab \\\ Дополнения к ОГСЕ 0693 /// \\\ OGSRmod ///\\\АМК-дискорд///\\\Балкон/// Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 15 Ноября 2022 Поделиться Опубликовано 15 Ноября 2022 @Kirgudu Точнее, пожалуйста. Единственное совпадение по части названия – фильтры для списка заданий в [xrGame\ui\UITaskItem.cpp]. Нашел в конфигах: [config\gameplay\game_tasks_by_vendor.xml]. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Kirgudu 1 217 Опубликовано 15 Ноября 2022 Поделиться Опубликовано 15 Ноября 2022 @Norman Eisenherz всё здесь: xrGame\GameTask.cpp 1 Инструмент Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 19 Ноября 2022 Поделиться Опубликовано 19 Ноября 2022 Здрасьте. Метод alife():spawn_id(story_id) должен вернуть значение spawn_id из секции объекта в [all.spawn]: например, для Сидоровича в ТЧ при story_id = 3 должно вернуть spawn_id = 2263. На деле метод не возвращает ничего и вешает обработку других функций, работающих через тот же колбэк. Рабочий и с виду такой же код есть в OGSR – спавн дополнительных переходов. В чем может быть проблема? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Kirgudu 1 217 Опубликовано 22 Ноября 2022 Поделиться Опубликовано 22 Ноября 2022 20.11.2022 в 00:47, Norman Eisenherz сказал: В чем может быть проблема? В невнимательности. Аргумент, передаваемый в метод alife():spawn_id(), должен прописываться в all.spawn как spawn_story_id = xxx. А story_id может использоваться в методе alife():story_object() для получения объекта, но не его spawn_id. 1 Инструмент Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 22 Ноября 2022 Поделиться Опубликовано 22 Ноября 2022 О невнимательности можно говорить, когда в игре есть хоть какая-то подсказка по формату значения. В [lua_help.script] в обоих методах аргумент number, в распакованном [all.spawn] нет ни одной записи spawn_story_id – только spawn_id, разные названия метода spawn_id() и таблицы spawn_story_id тоже не помогают. Только в движке аргумент указан как spawn_story_id. Еще вопрос: в ТЧ можно отспавнить объект из [all.spawn] через alife():create(spawn_id), в ЧН на такую же запись никакой реакции. Почему? https://www.amk-team.ru/forum/topic/6138-cs-kovyryaemsya-v-faylah/page/64/#comment-1443024 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Kirgudu 1 217 Опубликовано 23 Ноября 2022 Поделиться Опубликовано 23 Ноября 2022 Внимательно стоит читать не только документацию по игре в случае её наличия, но и посты, на которые сам же ссылаешься, например, тут: https://www.amk-team.ru/forum/topic/6138-cs-kovyryaemsya-v-faylah/?do=findComment&comment=1443031 Всё в ЧН работает, проверено личным опытом модостроя, а Malandrinus в своём посте разжевал вопрос так, что дальше некуда. Не нужно путать spawn_id, задаваемый отдельным параметром в секции объекта в all.spawn и тот виртуальный spawn_id, который является порядковым номером этой секции объекта и который при распаковке, например, средствами acdc (с SDK не работал, но, возможно, там тоже) можно увидеть в квадратных скобках в начале секции. Поскольку при перепаковке all.spawn этот номер может измениться, единственно правильным способом получить его при исполнении будет вызов метода alife():spawn_id(spawn_story_id), где spawn_story_id, в свою очередь, также прописан отдельным параметром в секции объекта в all.spawn. Никакие spawn_id, прописанные там же отдельным параметром, не должны использоваться в данном механизме ни в ТЧ, ни в ЧН, ни в ЗП, а story_id можно использовать только для поиска уже заспавненного объенкта перед его удалением, но не для повторного спавна. Инструмент Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 24 Ноября 2022 Поделиться Опубликовано 24 Ноября 2022 8 hours ago, Kirgudu said: Не нужно путать spawn_id, задаваемый отдельным параметром в секции объекта в all.spawn и тот виртуальный spawn_id, который является порядковым номером этой секции объекта Из чего следует, что я их путаю? Номер в квадратных скобках я даже не упоминал. Насчет оригинального поста Malandrinus – действительно, не дочитал. 8 hours ago, Kirgudu said: Никакие spawn_id, прописанные там же отдельным параметром, не должны использоваться Тем не менее, такие записи зачем-то есть; можно было бы считать обозначения аргументов простой путаницей в названиях, если бы спавн через spawn_id не работал вообще, но он работает в ТЧ. Видимо, "неучтенка" из ранних билдов… Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 25 Ноября 2022 Поделиться Опубликовано 25 Ноября 2022 On 11/14/2013 at 9:32 AM, Malandrinus said: local spawn_id = alife():spawn_id(spawn_story_ids.some_level_changer) alife():create(spawn_id) Если метод spawn_id() принимает только аргумент spawn_story_id, то как работает следующий код из OGSR и почему такой код, в отличие от ТЧ/ЧН, не вешает скрипты? Spoiler [ogse_lc_mngr.script] function lc_create(sid, spot, hint) local sim = alife() if not sim:story_object(sid) then -- ссылка на story_id local spawn_id = sim:spawn_id(sid) -- снова ссылка на story_id local lc = sim:create (spawn_id) if lc then … end end end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Kirgudu 1 217 Опубликовано 25 Ноября 2022 Поделиться Опубликовано 25 Ноября 2022 https://github.com/OGSR/OGSR-Engine/commit/1e0477aff92a233ca6fd062a546f54229f2b0bcb Qui quaerit, reperit. 1 Инструмент Ссылка на комментарий
dsh 3 824 Опубликовано 25 Ноября 2022 Поделиться Опубликовано 25 Ноября 2022 Ну, если уж ссылаться на OGSR, то там же можно, если не путаю, спаунить и по имени, без всяких story и spawn id. А нет, я таки путаю. Не нахожу этого в OGSR. Это я только у себя добавлял получения spawn_id по имени: https://github.com/dsh2dsh/OGSR-Engine/commit/be0d672ca18c80289cfa0c8bd7e6552b513f4587 Quote Добавил alife():spawn_id( имя ) которая возвращает spawn_id из all.spawn по имени объекта. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти