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

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

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


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

  Информация (Показать)

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

 

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

  Читать рекомендуется. (Показать)

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


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

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

Просто, что-то они не появились. Скажу сразу спауню на новой локации Болото для ТЧ.

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

Black Hunter

Все параметры и в том числе параметр 'idle_spawn' считывается сразу при старте новой игры.

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

Далее 'idle_spawn' пропишется в параметры респавнера и запомнится (при сэйвах в его нет-пакете).

Преиодичность спавна для чистой ТЧ: medium = 60*60 секунд (т.е. 1 час игрового времени).

Можно указать в 'idle_spawn' свои времена, типа 'idle_spawn = 360,720' - тогда период будет рандомно выбираться из диапазона 1...2 часа.

 

Ну а то, что не появились - и сам проверяй свои вертексы и коорлдинаты, у меня твооей карты нет. И в тот же лог в респавнере можешь вывести факт спавна и даже простановку меток на заспавненные объекты. Вот и проверяй - ищи ...

 

P.S. Про 'respawn_check' - вынужден признать, что опять дал промашку. Это для модифицированного скрипта респавнера прокатит, а для оригинального нет. Требуется этот параметр вносить в кастом-дату секции спавнящихся объектов. Если у тебя там нет отвязки от гулагов и нет гулагов или в них свободной работы для плотей - все спавнящиеся будут уничтожаться сразу же.

Создай секции для своих плотей типа:

[flesh_my_respawn]:flesh_weak

custom_data = scripts\flesh_my_respawn.ltx

 

а в этом конфиге:

[smart_terrains]

respawn_check = false

 

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

Если добавишь 'none = true' - будут свободно гулять постоянно.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий
  Респаун (Показать)
Ссылка на комментарий

Black Hunter

перепрочти пару раз то, что выше.

Респавнер, который уже в all.spawn'е - ни в какой config/scripts добавлять не нужно.

А вот секции плотей тебе придется и добавить (например в config\creatures\spawn_sections.ltx), т.к. дефолтные не отвязаны от гулагов и прописать новым секциям конфиги в 'config\scripts\*.ltx', дабы отвязать от гулагов и/или разрешить спавниться без привязки к гулагам.

 

Добавлено через 3 мин.:

  Цитата
Black Hunter: А может лучше будет добавить прямо в секцию_респауна в all.spawn [smart_terrains] none = true?
Ты собираешься респавнер от гулага отвязать? :crazy: Ну-ну ...

Отвязывают объекты спавна (в их секциях/логике), а не то, что спавнит.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Спасибо всем, кто откликнулся на мой вопрос! Отследить глючный арт и правда не было возможности, ибо комп зависал наглухо. Однако проблема решилась удалением тех аномалий, у которых в координатах xyz маячили всякие нехорошие -e2-557 и прочие инородные вкрапления. От греха подальше убрал и подчистил все аномалии с подобными координатами. После этого проблема вроде как решилась.

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

Привет. Копаюсь в логике, возникли такие вопросы :)

Мне нужно чтобы радио приемник выключился от выстрела в него. Я сделал ему такую логику (пробовал разные варианты, последним был этот):

  тут (Показать)
Изменено пользователем amik

Мой архив

Сталкером не занимаюсь.

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

amik.

1. Радио.

Я сталкивался с подобным вопросом и решение его существует...

Дело в том, что для подобной логики, объект должен быть physic_destroyable_object, почему так - я не знаю, но это так.

Еще один нюанс: вот это:

snd = $no_sound

вероятнее всего выдаст тебе ошибку, поскольку сюда необходимо писать не сами файлы, а звуковую схему из файла sound_theme.script, тебя должно интересовать ph_snd_themes. Если ты заглянешь туда, тебе сразу станет все предельно ясно, как и что в таком случае писать...

Хорошим вариантом будет добавить свою звуковую тему, которая бы включала в себя звук какого-нибудь "шипения", мол после выстрела радио поломалось и зашипело :)

Готовая схема будет выглядеть так:

  Код (Показать)
Изменено пользователем ColR_iT
дополнил...
Ссылка на комментарий

ColR_iT Я проверял, на монолите ведет себя очень хорошо, вариант с зомби, тоже оказался прикольным, нпс идет на тебя бесстрашно и стреляет как терминатор.

Кампер глючит, по крайней мере на новичке. Я имел в виду так сделать:

  так (Показать)
Изменено пользователем amik

Мой архив

Сталкером не занимаюсь.

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

Нужна готовая функция изменения параметров объекта через нет-пакет.

 

Переписывать нужно параметры "position", "level_vertex_id", "game_vertex_id" и "parent_id" объектов находящихся в инвентарном боксе.

 

всё легко

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

amik, да, я понял, что ты имеешь ввиду.

К сожалению мне не встречались случаи, чтобы в секции [combat] было переключение на другую схему. Повторюсь, что данная схема лишь задает тип боя (см. выше), также можно сделать выдачу инфопорции или вызов функции когда НПС срывается в бой, например так:

[logic]
on_combat = combat
[combat]
on_info = %+infoportion%

.

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

7.9

А вариант удалить в инвентаре прежнего владельца и заспавнить в инвентаре нового, не подойдет?

Реализация попроще, и результат тот же.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

Ссылка на комментарий
Zander_driver, "владельцы" находятся на разных локациях. Часть предметов - просто пересоздаётся, а функция нужна для (очень) "уникальных" предметов. Функция вызывается из actor_binder:save(packet). Изменено пользователем 7.9

всё легко

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

7.9, нет и не может быть готовых функций для изменения параметров (из секции 'cse_abstract') объекта через нет-пакет.

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

Если ты говоришь именно про 'изменение' - то это подразумевает чтение всего(!) нет-пакета объекта. Т.к. объекты бывают самого разного класса - то и для чтения применяются эксклюзивные для каждого класса наборы методов.

 

1. Изменить параметры 'position', 'level_vertex_id', 'game_vertex_id' можно при сохранении объекта в сэйв, но для этого придется ловить объект в его биндере (xxx_binder:save(packet)) и в этот момент изменять. Пример для сталкеров можно глянуть в Симбионе.

2. А вот для 'parent_id' вариант изменения при создании сэйва не прокатит, т.к. для этого параметра нет штатного метода, как для 'position'.

Чтение секции 'cse_abstract' нет-пакета, в котором и имеется 'parent_id', для каждого объекта не производится по-байтово, а получается автоматически в методе 'STATE_Read' в составе уже прочитанной части пакета.

По сути, возможно изменение (перепаковка) только в момент первичного спавна (появления) объекта при старте игры. Если интересует - смотрим перепаковку аномалий в AMK/Zenobian/...

 

В общем, если твои предметы не биндятся - то и вообще заморачиваться бессмысленно, ну а в противном случае - морока не маленькая с каждысм классом предметов.

 

Если очень нужно, то ... можно попробовать заморочиться с подменой нет-пакетов, т.е. запоминать доступные параметра (нет-пакет) прежнего предмета -> удалять его (предмет) -> спавнить новый аналогичный предмет -> разбирать нет-пакет и переписывать ему нужные параметры из запомненного.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Возникла проблема. Есть некий скрипт, в нём функция, которая возвращает строку. Файл компилируется нормально, ошибок нету, игрой читается.

При вызове функции из нужного мне места, игра вылетает с логом, что не найдена данная функция. Хотя при вызове этой же функции из другого места всё нормально.

  Лог ошибки (Показать)
Изменено пользователем Real Wolf
Ссылка на комментарий

Real Wolf,

  Цитата
При вызове функции из нужного мне места, игра вылетает с логом, что не найдена данная функция. Хотя при вызове этой же функции из другого места всё нормально.

Если вызываемая функция - локальная, то убедись, что она стоит перед местом, откуда вызывается.

  Полезный утиль (Показать)
Ссылка на комментарий

Artos

 

  Цитата
Чтение секции 'cse_abstract' нет-пакета, в котором и имеется 'parent_id', для каждого объекта не производится по-байтово, а получается автоматически в методе 'STATE_Read' в составе уже прочитанной части пакета.

По сути, возможно изменение (перепаковка) только в момент первичного спавна (появления) объекта при старте игры.

Значит-ли это, что после создания объекта доступны параметры не всех (его) серверных классов?

То-есть, например, прочитав где-нибудь в процессе игры, пакет объекта с серверным классом, например, cse_alife_item_pda, и начав его разбирать с начала, я уже не прочитаю данные класса cse_abstract ? Например, параметры section_name, position и прочие... Или спрошу так: "Какие параметры останутся доступными для чтения\записи в нет-пакете объекта с серверным классом cse_alife_item_pda после его создания?

 

Добавлено через 124 мин.:

Ладно, попробую переписать только вертексы, если position будет зафиксированным - его переписывать не надо будет.

всё легко

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

7.9

Не перемешивай все в кучу.

1. Если класс создаваемого объекта не имеет своего 'server_object_class', зарегистрированного в файле 'class_registrator.script' - то доступ к его параметрам из секции 'cse_abstract' невозможен (нет ни читалки ни писалки).

Для таких объектов возможно чтение (и изменение) нет-пакетов только начиная с секции 'cse_alife_object'.

 

Например, для фонариков можно получить полный нет-пакет, а вот для КПК - мне не удалось, даже зарегистрировав этот класс (CPda). Т.о. для КПК вообще недоступна секция 'cse_abstract'.

 

2. Если даже для объекта имеется доступный 'server_object_class', то далеко не все объекты имеют апдейты после их создания (появления в игре). Изменив параметр(ы) для серверного объекта как минимум требуется синхонизировать с клиентским объектом ... что тоже и не всегда просто и не имеет 'готового универсального' решения.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Такой вопрос. В результате некоторых моих изменений, в инвентаре всех скриптовых трупов стал автоматически спавниться Болт. Корни этой проблемы уходят далеко в глубь скриптов, найти источник вопроса не получается, поэтому вопрос к вам, уважаемые скриптеры.

Что и куда нужно прописать, чтобы созданный Болт удалялся?

Изменено пользователем ColR_iT
Ссылка на комментарий

Во первых - откуда тут знают что ты изменял в коде?

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

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

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

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

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

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

Войти

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

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

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