Перейти к контенту

[CS] Ковыряемся в файлах


Рекомендуемые сообщения

@ted.80 так подставь то, что ты взял из полной функции, в своё условие.

local actor = db.actor
+
actor:object=="gen_document_1354" and actor:object=="gen_document_1355"
=
db.actor:object=="gen_document_1354" and db.actor:object=="gen_document_1355"

db.actor:object - это функция. Мало того, что ты сравниваешь её (не результат выполнения функции, а саму функцию) со строкой, так ещё и применяешь синтаксис, характерный для вызова метода (указание функции после двоеточия), без собственно вызова (забыл про круглые скобки). Это приведёт к немедленному отказу в загрузке такого скрипта движком, потому что его синтаксис некорректен.
И даже такое написание, хоть синтаксически и правильное, будет неверным:

db.actor:object()=="gen_document_1354" and db.actor:object()=="gen_document_1355"

поскольку вызов этой функции требует передачи аргумента: db.actor:object("строка"), см. пример парой сообщений выше.

Так-то по смыслу твоё предложение верно. Правильная же реализация будет такая:

elseif ln=="l15_generators" and actor:object("gen_document_1354") and actor:object("gen_document_1355") then

 

  • Нравится 3
  • Полезно 1

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий

А что нужно дописать, чтобы при выпадении с мутантов было больше частей тел? И чтоб с того же кабана можно было всегда по разному выбить 4, 3, 2, 1

Ссылка на комментарий

@Juk_Bers0vik , что используется в качестве базы для правок? Если не изменяет память,  в ЧН оригинальной версии выпадение, вообще, изначально не предусмотрено.

Просто чтобы было понятно, от чего отталкиваться.


Простой правкой конфигов не обойтись, придётся добавлять скриптовый спаун в тело мутанта. Примеры релизации пожно подсмотреть в FS моде, старых версиях OGSM, например, или поискать отдельно smart_monser_part мод. И доработать под собственные нужды :biggrin:.

  • Нравится 2
Ссылка на комментарий

@Juk_Bers0vik Спавн имеет то же описание в движке и те же конфиги, только вероятность везде указана 0.

Для нескольких предметов надо делать обработчик в [bind_monster.script] update.

  • Нравится 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий

А зачем update коллбек у мутанта дёргать? "Одноразовый" on_death, по-моему, более чем достаточно. Или net_spawn, например.

  • Согласен 1
Ссылка на комментарий

  

Спавню НПС в скваде в смарт террейн.

Сквад:

  Показать

Собственно, а как этому скваду/НПС назначить story id?

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
  02.11.2024 в 09:35, imcrazyhoudini сказал:

как этому скваду/НПС назначить story id

Отряду никак, story_id может быть присвоен только объекту, но не группе объектов.

Одному НПС из отряда, если этот отряд симуляционный (то есть один из многих отрядов с идентичным профилем, создающийся для целей войны группировок), тоже никак. Симуляционные скрипты не смогут решить самостоятельно НПС из какого отряда должен иметь уникальный story_id.

А вот если такой отряд один на всю игру и спавнится по какому-то событию из логики или вручную, тогда есть лазейка.

Для этого можно модифицировать следующую цепочку функций (см. места с комментариями, оформленными --<< ... >>):

  xr_effects.script (Показать)
  sim_board.script (Показать)
  sim_squad_generic.script (Показать)
  sim_squad_scripted.script (Показать)
  _g.script (Показать)

Тогда, например, создание из логики уникального отряда, первому (либо единственному) НПС из состава которого будет присвоен story_id, будет выглядеть так (показано на примере Васяна со Свалки):

[sr_idle@story_messenger]
on_info = {+gar_story_searched_digger_body} sr_idle@story_messenger_dogs_spawn %=create_squad(gar_digger_messenger_man:gar_smart_terrain_8_5:731)%

где 731 - добавленный в том числе в game_story_ids.ltx персональный story_id.

 

Примечание: для модификации net-пакета и присвоения story_id в данном примере использован модуль m_netpk от Артоса:

https://www.amk-team.ru/forum/topic/13216-sborochnyj-ceh/?do=findComment&comment=971137

 

  • Полезно 3

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий

@Kirgudu https://dropmefiles.net/ru/UH7Gzws9V

Не работает почему-то, проверил пару раз, можешь взглянуть, авось прозевал чего?

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

@imcrazyhoudini придется подождать, я за компом буду уже не скоро, в лучшем случае дня через 3. Может кто быстрее подскажет.

  • Спасибо 1

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий
  02.11.2024 в 19:59, imcrazyhoudini сказал:

Не работает почему-то, проверил пару раз, можешь взглянуть, авось прозевал чего?

1. Я функцию create_npc в sim_squad_scripted.script выше сначала показал с ошибкой, затем поправил почти сразу после публикации поста, но в примере выше она осталась с ошибкой. Не исключено, что по каким-то причинам эта ошибка к вылету не ведёт, но при этом и не работать не даёт правильно, такое бывает. Рекомендую снова взять себе эту функцию из моего поста, теперь она там исправлена.

2. Не показано, где и как происходит создание нужного отряда.

3. Не показано, добавлен ли новый story_id в реестр.

В остальном модификация оригинальных функций произведена правильно, кроме вышеупомянутой других ошибок не вижу.
Опять же, по такой схеме story_id добавляется Васяну и потом используется в моде Final Stroke, там это проверено не раз и успешно работает.

  • Спасибо 1

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий

@Kirgudu 

  04.11.2024 в 12:46, Kirgudu сказал:

Не показано, добавлен ли новый story_id в реестр.

  Показать

 

  04.11.2024 в 12:46, Kirgudu сказал:

2. Не показано, где и как происходит создание нужного отряда.

  Показать

 

  04.11.2024 в 12:46, Kirgudu сказал:

теперь она там исправлена.

Поправил, не помогло.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

@imcrazyhoudini, что такое второй параметр yan_ryaboy из твоего вызова спавна отряда? Вот этот:  

  04.11.2024 в 18:25, imcrazyhoudini сказал:

%=create_squad(yan_ryaboy:yan_ryaboy:3)%

 

И ещё вопрос: что именно не работает-то? Спавн отряда? Или назначение НПС из этого отряда story_id? Если второе - как проверял?

Изменено пользователем Kirgudu

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий
  04.11.2024 в 19:43, Kirgudu сказал:

Вот этот:  

Название смарта + название сквада.

Не работает назначение стори айди. Проверял двумя способами - одновременно со спавном НПС выдаётся квест в котором цель указана как сей НПС.

И пытался такой функцией проверить:
 

  Показать

На что получаю:
 

  Показать

 

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

@imcrazyhoudini и не заработает таким образом. Ты пытаешься найти серверный объект по его story_id, но сервер ничего об этом номере не знает, поскольку ты вот только что его присвоил..

Обрати внимание на последний спойлер в моём примере, а именно _g.script и функцию level_object_by_sid, специально модифицированную для таких случаев. Используй её или, если нужен только id, можно вытащить кусочек функционала из функции с поиском в db таблице, куда мы положили нужную информацию при назначении story_id.

Либо производи нужные действия не на том апдейте, когда story_id присваивался, а позже.

  04.11.2024 в 21:25, imcrazyhoudini сказал:

Название смарта + название сквада

Самодобавленный смарт, значит. Ясно. А то одно из предположений было, что отряд не спавнится из-за указания невалидного смарта.

Изменено пользователем Kirgudu
  • Спасибо 1

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий

Извиняюсь, если не понял, но я квест позже начал инициализировать, но всё равно не помогло:
 

  Показать

Плюс, если я устанавливаю стори_ид Рябому, то он больше не является членом смарт террейна и гуляет где захочет.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

@imcrazyhoudini как связана инициализация квеста с использованием только что присвоенного story_id, непонятно: опять сделано что-то, что осталось за кулисами.
Когда будет время (скорее всего, в предстоящие выходные), постараюсь сам воспроизвести ситуацию на файлах чистой игры и предоставлю результат для изучения.
А пока дальше сам, мои советы на какое-то время иссякли. Не исключено, что успеешь сам найти решение проблемы раньше, метод-то вполне рабочий - подтверждается реальными опытами в существующем моде.

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий

@Kirgudu имеешь в виду под "за кулисами" - квест показать? Я то могу:
 

  Показать

Но вот дело в том, что ломается смарт террейн когда пытаешься назначить стори айди. И на следующую часть логики (sr_idle@3 вроде уже) не переходит.

Ещё из интересного - при сейв-лоаде до бесконечности спавнится по одному НПС (Рябой опять-таки), что даёт основание полагать, что логика рестриктора зацикливается.

Но это всё догадки.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

@imcrazyhoudini всё, я понял, что у тебя за последовательность событий, раньше как-то туманно было. Ты спавнишь отряд, и из этой же логики в следующей секции запускаешь квест, целью которого является искомый story_id.
Честно говоря, я не уверен, что между двумя частями логики проходит достаточное для получения сервером информации о story_id количество апдейтов. Если это так, рекомендую попробовать сделать запуск квеста во второй секции логики не на on_info, а, например, на on_timer с таймаутом в пару секунд.
Однако если с промежутком между секциями логики всё в порядке, предлагаю посмотреть на содержимое функции task_objects.get_inited_task, где обрабатывается параметр квеста target_story_ids. Первые несколько строчек выглядят так (остальные нам не интересны):

local sid = tonumber(self.target_story_ids) -- считываем из параметра квеста story_id
if(sid) then
	self.target = id_by_sid(sid) -- находим серверный объект по story_id и берём у него id (функция в _g.script)
	if not(self.target) then -- проверяем, что полученный id не пустой
		abort("Target for storyline task doesnt exist. Story id [%s]", tostring(self.target_story_ids))
	end
...

Получается, что если бы story_id не был присвоен нашему объекту, мы неминуемо дошли бы до вызова функции abort.

Вот и думай. Может стоит обложиться выводом в лог во всех ключевых точках и попытаться понять, что конкретно происходит.

  • Спасибо 1

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий

@Kirgudu должен признать, что когда назначаю стори айди логика рестриктора дальше не читается, Рябой в смарт не заселяется.

Куда покопать в таком случае? Могу даже мод в личку скинуть с нужным сейвом если так сказать дистанционно решить не получится.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...