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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

 
 

Stalkerin. Там есть много хороших статей касательно данной темы.
Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения.

 

Справочное руководство по языку Lua 5.1
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
Справочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены.

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

 

Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу.

 

Вопросы которые будут удалятся, следовательно их задавать не нужно:
-- Где находится та или иная функция?
Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;
-- Как сделать что-то/то-то?
С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;
-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.
-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.
Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов?
В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос.

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий
https://www.amk-team.ru/forum/topic/6185-skriptovanie/

Colder
on_death(), видимо, подразумевает, событие?
а оно есть?

Изменено пользователем Shadowman
31 минуту назад, Colder сказал:

Как в труп заспавнить предмет?

как вариант, в файлах characrer desc в описании непися которому ты хочешь дать предмет, ты же я так понимаю хочешь дать предмет конкретному неписю-трупу ,а не просто рандомному созданной на этой секции, так вот в файлах описании в секции [spawn] прописываешь нужные предметы, а потому убиваешь непися через спавн ставя ему health = -1 , и вещи из этого файла должны быть при нём + те которые заспавнит death_manager.script

@Colder В death_manager.create_release_item(npc) где нибудь в конце сделай что то подобное

 

    if npc:name() == "esc_shilo_band" then
        ogse.spawn_item_in_inv("part6", npc)
        ogse.spawn_item_in_inv("money_gg", npc)
        ogse.spawn_item_in_inv("wpn_ks23", npc)
    end

 

  • Спасибо 1
  • Полезно 1
09.02.2024 в 16:11, Colder сказал:

Как в труп заспавнить предмет?

Всё проще. Вызов alife():create(аргументы с ID владельца, кому спавним.)

И во всех "обертках" со времен амк и до сих пор, делается именно так.

  • Спасибо 1

HUD скрывается при использовании оптики, даже если заткнуть ссылки в начале [xr_effects.script] – остается только править движок.

Трассеры читаются из конфига патронов при запуске игры: без правок движка они либо всегда есть, либо всегда нет. Разве что скриптом добавлять к пуле движущийся партикл… Надо спрашивать кого-то, кто работает с эффектами и светом.

  • Полезно 1
  • Смешно 1
09.02.2024 в 20:11, Colder сказал:

obj:on_death()

а где ты откопал метод on_death() для а-лайфного объекта, и что он должен делать? так спавнили трупы в старых солянках, но там ещё был и файл логики, где прописывали скрипт по которому убивали непися, так что я не уверен что этот метод рабочий остался для ОГСР.

@tyto Все это делается только через движок.

Скриптами, без лютых костылей никак (А костыли, если их все же делать, получатся настолько лютыми, что результат вас все равно не обрадует).

5 часов назад, Zander_driver сказал:

делается

спасибо.

ss-user-2024-02-12-20-10-48-l01-escape.p

но эти как-то стоят

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

То, что повешено на худ пользователем, именно при использовании оптики не скрывается, хотя в катсценах, диалогах и т. д. скрывается и это (кроме ЗП – там всегда только вручную). В старых модах вроде "Фотографа" можно наблюдать на худе самодельные часы при использовании прицела без черной заливки снаружи.

  • Согласен 1

Доброй ночи, сталкерА, и не очень! :drinks:

 

Прошу подсказки - как вывести в лог ВСЕ имеющиеся в памяти у игрока инфопоршни?

if has_alife_info (...) then

Это построение вызывает у меня некое недоумение, явно что-то не правильно ведь? Нужен шаблон на любое строковое выражение вроде. :unknw:

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

1. Мудреный вариант: взять список [system.ltx] [info_portions] files и перебрать все указанные файлы как текст через getFS():r_open(путь):r_stringZ() с проверкой "есть/нет" по каждому info_id.

2. Ленивый вариант: добавить вывод всех инфо-поршней в консоль в actor_binder:info_callback() и "слушать" с начала новой игры.

3. Неясный вариант: в ЧН вскоре после загрузки в консоль высыпается этот самый список – можно там посмотреть, но вроде как это движковый вызов. Единственное, что можно понять из самого списка – у инфо-поршней есть фиксированные id: [0]=[global_dialogs] … [1350]=[info_up_ac_spas12].

  • Спасибо 1

@Norman Eisenherz  спасибо за ответ. К сожалению, ни один из вариантов не подойдёт. Нужно здесь и сейчас, как говорится, получить весь список, чтобы потом чесать репу - насколько велика проблема, и как её решить. У меня мод на основе ТЧ, сюжет не вырезан, проверил - в скриптах ПЫСов выдаётся 805 порций инфы, а удаляется 18. Хочу победить переполнение стека, давнюю болячку мода. Перевод на движок ОГСР проблему не решил, либо я криворуко наплодил где-то сущностей (хотя вроде не должен был - не совсем дурак :biggrin: )

А перебор поршней поимённо, это, как сам понимаешь - тот ещё ёжик..

@kenguru а почему виноваты в переполнении памяти именно инфопоршни ,вылетать по памяти может и из-за скриптов (скорее всего) перегружающих проц и память, и и из-за настроек графики и информации относящейся к алайфу (неписи, монстры их память), в памяти также хранятся данные динамических физ объектов и пр. мусора, если у тебя всего этого много, вылеты последует на чистом движке ТЧ точно, ОГСР в этом плане получше, но беды со скриптами от мододелов он не исправит.

4 часа назад, kenguru сказал:

Хочу победить переполнение стека

А инфопоршни какое к этому имеют отношение?

@CiberZold да, согласен, может быть множество других причин, но вся динамика ДОЛЖНА быть в памяти для успешной игры, а старые поршни есть суть статическое зло, как правило. И только их я могу с более-менее уверенной мордой лица удалять. Если удалил и что-то заглючило с квестами - сам виноват и разбирайся. А вот эти "общие" вылеты по памяти - они подрубают, т.к. выяснить причину маловероятно..

@Zander_driver они способствуют этому переполнению, не так ли? А раз динамических записей много - нужно чистить статику от мусора.

И да, грешу на поршни вследствие многочисленных тестов. Когда набираешь много заданий, когда имеешь параллельно с сюжетом несколько веток квестов - начинаются траблы. У моего соратника Ворона, например, стали биться сейвы в самом конце сюжета, на ЧАЭС-2.

Я лично, набрал заданий выше крыши (специально в целях тестирования), и полез в сюжет. И тоже стали случаться вылеты по памяти. Это с великой долей вероятности указывает, что накопление статической инфы виновато. Вот поэтому я решил вычислить масштабы проблемы древних инфопоршней (типа таких: "tutorial_artefact_start"), висящих мёртвым грузом в памяти.:az1000106:

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

@kenguru если у тебя старый сюжет остался то ты там особо не разгуляешься, там большая часть поршней нужна чтоб этот сюжет двигать, я бы тогда вообще оригинальный сюжет вырезал вместо с поршнями и прочими хвостами, ну если в моде и так много заданий то зачем ещё и оригинальный всем надоевший сюжет тянуть, но понимаю объём работы  - вырезать все хвосты оригинала за это время можно небольшой новый мод сделать )

  • Нравится 1
5 часов назад, kenguru сказал:

нужно чистить статику от мусора

как по мне, экономия на спичках. А с кол-вом второстепенных заданий, которые сбиваются, проблему уже решали. Стоит покурить доработанные task_manager.script.

 

5 часов назад, kenguru сказал:

Если удалил и что-то заглючило с квестами - сам виноват и разбирайся.

 Игроку разбираться? :). Стоит ИМХО не резать всё подряд, чтобы оно потом глючило.

  • Согласен 1

Приветствую, сталкерА!

 

8 часов назад, Капрал Хикс сказал:

как по мне, экономия на спичках

Вот мне и хотелось бы убедиться на фактах, так сказать.. Ну, а вдруг?

Первоочередная чистка от поршней дохлых мутов и неписей реально сильно помогла на какое-то время.

8 часов назад, Капрал Хикс сказал:

Игроку разбираться?

Да нет конечно. Мне и разбираться придётся. Резать не глядя конечно не собирался, однако знать что там с этим всем творится - очень нужно.

Если не получу помощи с форматированием любой строки, и не напишу сам, то позже буду поимённо ища поршни - вычислять масштабы проблемы.

8 часов назад, Капрал Хикс сказал:

с кол-вом второстепенных заданий, которые сбиваются

Нет, ничего не сбивается, однако в моде всё на рандомах, динамично - поэтому велика нагрузка на память.

9 часов назад, CiberZold сказал:

там большая часть поршней нужна чтоб этот сюжет двигать

Да, это конечно понятно, однако трабла в том, что АФФТары игры в большинстве случаев не предусмотрели очистку от ненужных использованных инфопоршней, и мне жуть как ручонки чешутся потереть все заюзанные и окаменевшие из них. А переполнение стека как раз в конце сюжета назревает, когда они уже и не нужны, а фриплей и вся побочка с альтернативкой только начинается.

  • Не нравится 1
2 часа назад, kenguru сказал:

и мне жуть как ручонки чешутся потереть все заюзанные и окаменевшие из них

понятно, но это будет непросто, тут или удалять по ходу игры, отслеживать постоянно какой инфопоршень выдался по info_id, а потом его отключать, но чревато что в будущем можешь сломать какой-то диалог или сценку ,или уже в конце поняв какие сюжетные какие нет, перед фриплеем их все сразу задисейблить.

  • Согласен 1

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

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

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

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

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

Войти

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

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

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