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

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

Добрый день.

У меня такой вопрос:

Как в зове припяти заставить нпц исчезнуть на глазах? В тенях чернобыля так срабатывал [spawner]. Но в зове он почемуто не сработал. Заранее спасибо.


Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

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

Приветствую всех.

Такой вопрос:

Можно ли заставить скриптово динамический обьект, допустим ведро, менять свои координаты вместе с ГГ и при этом иметь синхронизированый угол поворота?

Если можно, то как?

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


Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

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

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

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

korshyn-3, укажи в логике, в конкретной секции NPC (walker или кто он у тебя) параметр meet = no_meet.

strelok200, в диалоге получай инфопоршн, который будет условием переключения логики NPC на другую секцию, например:

on_info = {+infoportion} walker@go_to_new_location.

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

Desertir,

Такой вопрос, а как работает функция start_stop_menu класса CDialogHolder, т.е. прошу объяснить ее точное назначение. Как я понимаю она нужна для закрытия и открытия окон, но по конкретней пожалуйста. Да и вообще класс CDialogHolder для чего он нужен, для чего используется.

Не полное описание, но минимальный набор приёмов использования есть в этом посте справочника.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

Несколько вопросов накопилось :)

1. Где-то видел, что можно на последней точке пути НПС выдать поршень или что-то другое? Может кто сказать, как примеру поршень выдать?

2. Немного нубский вопрос, но как изменить поворот камеры в начале игры? direction меняю и ничего вообще не происходит (менял все 3 значения). :(

 

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

Disord, сам инфопоршн на "последней" точке пути NPC выдать не сможет. Но. В путях на последней точке можно установить так называемый сигнал:

[walk]
points = p0
p0:name = wp01|a=walk|sig=arrif
...

а в логической схеме NPC прописать реакцию на этот сигнал, в том числе и получение инфопоршна, примерно так:

[walker@tra_la_la]
...
on_signal = arrif | walker@tro_lo_lo %+infoportion%
...

По второму вопросу - менять нужно у ГГ не только direction, но и параметр upd:o_torso.

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

Народ, всем привет.

Как удалить предмет из инвентаря у ГГ - (название - val_zapis_n)

Черкните функцию, а я её через экшон вставлю в диалог.

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

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

Можно воспользоваться функцией amk.remove_item_from_inventory_by_name("val_zapis_n",db.actor)

Но ты сначала проверь, есть она у тебя или нет

Freedom

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

В АМК главная функция тянет за собой сервисную. Вот готовая, удаляет предмет из инвентаря ГГ по имени. Только не пытайтесь удалять болт ;):

function del_from_player_inventory(item_name)
local obj = db.actor:object(item_name)
  if obj then
   alife():release(alife():object(obj:id()), true)
  end
end

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

=VENOM= Я в скриптах не соображаю. Так ?

function del_from_player_inventory(item_val_zapis_n)
local obj = db.actor:object(item_val_zapis_n)
  if obj then
   alife():release(alife():object(obj:id()), true)
  end
end

А кавычки не надо "..." в скобках ?

А в диалог такой экшон ставить ?

<action>valerich_dialog.del_from_player_inventory(item_val_zapis_n)</action>

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

нет, не правильно

Нужно сделать функцию:

Если функция, которую кинул тебе =VENOM= лежит допустим в скрипте test1 то

function my_megatest()

test1.del_from_player_inventory("item_val_zapis_n")

end

 

<action>valerich_dialog.my_megatest</action>

Freedom

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

Valerich, не, не так :) Данную функцию суёшь в любой скрипт (чтобы потом вызвать):

function del_from_player_inventory(item_name)
local obj = db.actor:object(item_name)
  if obj then
   alife():release(alife():object(obj:id()), true)
  end
end

Затем создавай ещё одну функцию, вот такую:

function del_val_zapis()
   название_скрипта.del_from_player_inventory("val_zapis_n")
end

А в диалоге вызывай так:

<action>файл_с_функцией.del_val_zapis</action>

-------------------------

 

Какая функция заставляет НПСа ударить ГГ по лицу?

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

Disord

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

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

 

Обоснование: Проверка происходит по по клиентскому объекту актора, а удаление - у серверного объекта. Уже удаленный(!) предмет будет обнаружен и при следующей 'проверке наличия', если делается в одном и том же цикле, т.к. на синхронизацию серверного и клиентских объектов требуется время (несколько циклов апдейта актора).

Т.о. упрощенные функции имеют область ограничений на применение.

 

Более безопасный вариант может выглядеть так:

function del_from_player_inventory(item_name)
  local obj = db.actor:object(item_name)
  if obj then
    local se_obj = alife():object(obj:id() --/ получаем серверный объект искомого предмета
    if se_obj then --/ проверка наличия объекта в игре
      alife():release(se_obj, true)
    end
  end
end

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

 

Или же можно использовать методы выставления флагов 'исключения' для предметов, типа:

function del_from_player_inventory(item_name)
  local obj = db.actor:object(item_name)
  if obj and not db.actor:marked_dropped(obj) then --/ и отсутствует метка 'исключения'
    db.actor:mark_item_dropped(obj) --/ ставим метку 'исключения'
    alife():release(alife():object(obj:id()), true)
  end
end

Более надежный способ 'множественного удаления' все же предполагает итерацию по инвентарю с запоминанием требуемых идентификаторои с последующим удалением по запомненным идентификаторам.

 

---

Готовых функций 'удара по лицу' не существует, вероятно ты имеешь ввиду схему 'abuse'. Требуется вызывать соответствующие состояния/анимации (или использовать подходящее из схемы 'abuse' или самописное). Есть моды, в которых имеется схема 'мордобоя'.

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

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

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

Ситуация такая , скриптер аддона "Коллекционер" Charsi (для него это дело плевое) - пока отсутствует, а люди спросили , как запустить аддон ещё раз , но он уже установлен. Я в скриптах - "нуб" .

У меня завязано все на инфопоршнях. При нахождении в тайнике записки - предыдущая записка удаляется (скриптом) и вот так до последней . Последняя остаётся ,как бы на память. Вот её и надо удалить, чтоб начать заново. Инфопоршен изменяем и погнали по новой, но чтоб не было косяка - нужно удалить последнюю записку, чтоб скрипт не путался.

Этот экшен я повешу всего ОДИН раз в диалоге, который больше не появиться.

 

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

П.С. Может этим спутал народ val_zapis_n , а n - это конкретный номер записки (просто я его забыл когда писал тот пост, толи 18 или 17)

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

Я прописал НПСу логику и при диалоге вылет

[logic]

active = remark@lesnik

danger = danger_condition

 

[remark@lesnik]

target = actor

meet = meet

combat_ignore_cond = always

danger = danger_ignore

on_info = {+infoportion} walker@walker1

 

[danger_condition]

ignore_distance = 3

 

[walker@walker1]

path_walk = esc_bridge_kamp_way2

 

 

Создаю глобальный мод с новыми локациямЭ

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

А сам инфопоршн зарегистрировал в каком-нибудь файле с инфопоршнами? Если нет, то вот это и причина для вылета. Вторая возможная причина - отсутствие path_look в секции [walker@walker1].

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

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

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

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

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

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

Войти

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

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

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