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

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

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


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

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

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

 

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

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

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


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

KD87, вообще мне нужно вызвать эту самую функцию через логику нпс. ins33 мне подсказал так:

[logic]
active = sr_idle@one

[sr_idle@one]
on_actor_inside = {+поршень} nil %=имя_скрипта.функция()%

Но у меня что-то не получилось ничего. Убежал на ДР. Как буду дома, конечно, перепроверю все еще раз. Написал так, для подстраховки.

Не соответствует правилам.

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

Здравствуйте! Не знаю, куда лучше написать, поэтому написал сюда. Понадобилась Ваша помощь, т.к. сам не смог разобраться)

Ковыряю Народную Солянку в попытке сделать ОП-2. Впервые спавню скриптом квестовика. Он стоит в Баре, где Долговязый и Доцент.

  Как я его прописал: (Показать)
Изменено пользователем proper70
Ссылка на комментарий

proper70

Тут может быть такой момент. У тебя в логике не прописано:

[smart_terrains]
none = true

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

Freedom

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

Вот мой кусок из логики нпс, как видно при получении поршня {+hunter_talk_6}, проигрывается звук =play_sound(alex_54), далее он ждет 5 сек. и переходит на схему remark@suhoi_alarm_1.

[remark@hunter_4]
anim = wait
on_info = {+hunter_talk_6} %-hunter_talk_6 =play_sound(alex_54)%, %+new_restriktor%
on_timer = 5000 | remark@suhoi_alarm_1
meet = no_meet

Тут у меня проблемка, за эти 5 секунд, он проигрывает этот звук 2 раза, а то и 3 (т.к. продолжительтность его всего 1 сек.). Как сделать чтобы он проговорил его только один раз, а потом ждал 5 сек., а не повторял его в течении 5 секунд.

Делаю на Зов Припяти.

Не соответствует правилам.

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

Итак, во-первых, _Призрак_, спасибо тебе за мотивацию :) Это я о получении левел вертекса по позиции. Хоть мне это и не нужно как то, но идет развитие идеи о получении таблицы лв из зоны, что мне нужно.

Ну а во-вторых, да, я смог получить лв по позиции без полного перебора на ТЧ. Перебор идет частичный. Расскажу о фактах про аи-сетку.

  Раскрывающийся текст (Показать)
  • Нравится 1

ТЧ 1.0004. SAP и Trans mod

github

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

NaslednikTutti, тоже не стОит упорно оффтопить ... Для ковыряний в конфигах логики имеются целых три "Ковырялки" ...

И, если ковыряешь логику, то и включай в работу свою! Если твоя секция обрабатывает два события, то на каждом(!) апдейте секции эти события и будут обрабатываться.

Во-первых, таймер в 5 секунд включается не по получению инфопоршня, а сразу, по активизации этой секции.

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

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

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

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

Возвращаюсь к своему вопросу по поводу приаттачивания глушителя. Спасбо, Artos, функция m_netpk.do_switchings работает как надо и пистолетик возвращается с глушителем. Но есть один ньюанс. Я не могу отправить оружие в оффлайн, если оно находится в слоте. Приходится сперва делать дроп. Есть ли какой-нибудь способ вернуть оружие "с земли" в рюкзак? Или может есть другой способ скриптом приаттачить аддоны к оружию? (ЗП)

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

правильно ли я спавню обьект,зону и обьект в зоне? Нужно для скрипта.

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

Не совсем правильно. При спавне чего-либо клиентский объект будет доступен только на следующем апдейте, поэтому я бы заменил вот это:

alife():create( spawn_sect,zone:position(),zone:level_vertex_id(),zone:game_vertex_id()) --спавним предмет в

на вот это

alife():create( obj, zone_obj.position, zone_obj.m_level_vertex_id, zone_obj.m_game_vertex_id)

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

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

Ссылка на комментарий
  Цитата
Shredder: Есть ли какой-нибудь способ вернуть оружие "с земли" в рюкзак?

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

Простейший: дропнув оружие, тут же (на следующем апдейте) возвращай его актору и оно даже опять в слоте может оказаться.

Строка: oWeapon:transfer_item(oWeapon, oActor) - вернет оружие, хотя в логе движек и ругнется информативно, что мол нет "владельца" у передаваемого предмета.

 

panzyuza, совершенно даже неверно ...

Как уже частично сказал Shredder, тебе не будет доступен гейм-об'ект рестриктора сразу же в функции спавна, а будет доступен даже не на следующем апдейте, а тогда, когда будет проинициализирован в своем биндере и заспавнится методом 'net_spawn'.

Но не в этом суть, тебе нужно понимать что тебе нужно сделать и какими средствами этого достигнуть, а не пытаться копипастить, подставляя похожие по смыслу функции.

1. "Заспавнить зону" - хм, странное определение для спавна рестриктора, ну да ладно ... Спавнишь то ты его вначале верно (через 'create'), но упускаешь то, что при спавне таким образом все подобные об'екты НЕ имеют шейпов (shape), т.е. по сути представляют собою точку. И чтобы это было действительно зоной - тебе потребуются манипуляции с нет-пакетом, чтобы задать шейпы, тем самым задав площадь/радиус/об'ем ...

2. Спавн предмета "в зоне" ничем не отличается от спавна "вне зоны", т.е. в любом случае ты задаешь коодинаты для спавна предмета. И, если у тебя есть координаты спавна самой зоны - ну так и используй их же, чтобы спавнить в это же место и предмет. Для чего ты устраиваешь заморочку с гейм-об'ектом рестриктора? (не ясно)

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

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

Ссылка на комментарий
Artos, данная заморочка нужна для более глобальных идей. Просто пока пробую различные методы и черпаю информацию сам для себя. Суть данной заморочки в создании альтернативы тайников игры(ТЧ). Спавним набор предметов в зоне, ставим метку на рестриктор. Вот как привязать предметы к зоне - не знаю. Что бы в случае только их взятия снималась метка и данная зона удалялась. Код пока похож на стандартный treasure_manager. Что бы не было возни с ящиками и прочим.
Ссылка на комментарий

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

 

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

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

но все это уже не в этом топике. --/Artos

Изменено пользователем Artos
Ссылка на комментарий
panzyuza, чтобы замахиваться на глобальные идеи стОит озаботиться навыками не только по банальным функциям и пр. ... Однако замечу, все подобные изыскания все же следует вначале читать и пробовать "у себя" и самому, и уж если чего не получается - тогда и задавать вопросы, а не заранее ... по каждой предполагалке. Чрезмерное кол-во банальных вопросов и засоряет тему и скорее отвращает от желания давать ответы по существу, а не отписки. ИМХО.

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

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

Как правильно пользоватсья этйо функцией?

    function enable_attachable_item(boolean)

И как она вообще работает?

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

Еще раз привет! В алспауне есть параметр direction. Как я понял, он разворачивает объект относительно сетки координат при спавне. А можно ли как-то задавать этот параметр через нетпакет при скриптовом спавне? Мне нужно разворачивать рюкзаки-тайники в пространстве. Для актора есть функция set_actor_direction, а для объектов, так понимаю, нету...

 

ЗЫ: Пример задавания story_id при скриптовом спавне я нашел в НС:

  Раскрывающийся текст (Показать)
Ссылка на комментарий

iDreD, чем тебе готовые примеры из игры/модов не устраивают иль чего не понятно?

Например, в том же sr_light.script фонарик приаттачивается "ко лбу" иль наоборот убирается (гасится) у непсией ( torch:enable_attachable_item(true|false) ) .

Ну а в state_mgr_animstation.script показано как убираются предметы из рук или наоборот.

Функция то простейшая и чего ее расписывать/раз'яснять? Ну а "как работает" - это тебе и врядли нужно и к тем у кого сырцы движка имеются ...

 

proper70, ты правильно понял, что параметр direction разворачивает об'ект спавна в пространстве, однако огорчу в отношении именно тайников/инвентори-боксов - вот их нет-пакетами развернуть без танцев с бубном не получится. Поясню:

Ранее, тут уже расписывал про модуль работы с нет-пакетами (m_netpk.script), который может корректно работать с практически со всеми параметрами нет-пакетов об'ектов, в том числе и с частью пакета 'abstract', но при условии, что у серверного об'екта доступен конструктор его класса и в частности метод STATE_Write, чтобы в него можно было добавить одну строку кода.

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

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

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

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

Здравствуйте, возникло два вопроса по таймерам амк:

1)как получит значение нужного мне таймера(по имени)?Т.е ухзнать, сколько осталось времени до конца работы?

2)Слышал о проблеме игрового месяца с таймерами амк, что это, и как ее исправить?

 

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

Заранее спасибо.

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

Вампир35

1. Никак не получить, т.к. АМК-таймеры не имеют соответствующего интерфейса по доступу к ним. Ну а кто патался написать ... вероятно понимал, что проще и лучше написать свои таймеры заново, чем вставлять костыли "одряхлевшему" коду.

2. А не слышал о проблеме 2000-го года? Того же порядка, т.е. в принятом формате параметра не хватает разрядности и в какой-то момент наступает "переполнение"/сброс.

В АМК-тайрах используется 32-х битный таймер game.time() и кол-во разрядов хватает на ... немного меньше месяца игрового времени. Далее наступает обнуление бахового времени и все "новые" таймеры будут заведомо с меньшим временем, чем те, которые были до "часа Х".

Лечить таймеры в общем-то бессмысленно, т.к. эта ошибка присуща не только им а имеется во многих кодах игры и следует глобально поменять использование game.time() на 64-х битный вариант game.CTime()

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

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

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

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

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

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

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

Войти

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

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

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