Перейти к содержанию
Авторизация  
IncognitaGames

Логика НПС - "use"

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

 

Всем привет. Народ, подскажите, блин, скоро голова взорвется))) В общем, есть у меня два нпс эксклюзивных. Мне нужно что бы, если актер подойдет ко второму нпс, ничего не происходило, то есть, был обычный диалог приветствия и "бывай" - дефолтный. Но если актер подойдет к первому нпс и поговорит с ним, на определенном предложении актер должен получить инфопоршень, который активирует второго нпс. То есть, после разговора с первым нпс, актер подходит ко второму, второй его САМ юзает и ведет специальный, сюжетный диалог, по окончанию которого диалоговое окно закрывается, и если еще раз заговорить со вторым нпс, снова будет обычный дефолтный диалог. Короче, у меня это все получилось, все работает, НО когда я снова подхожу ко второму нпс, уже после диалога, он снова меня САМ юзает и ведет обычный дефолтный диалог. Именно что дефолтный. Это мне и нужно, но мне не нужно, что бы он снова (постоянно) меня юзал. Как мне избавится от этого? Фуф, надеюсь понятно объяснил. Еще мне нужно выдать задание, после оканчания этого диалога...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Во-первых, это ТЧ или ЗП или что? 

Во-вторых, нужны конфиги профилей НПС, логики НПС (с секцией meet и все вот это) и сами профили диалогов. Без них сложно что-либо сказать. Как вообще сделана инициализация диалога от второго НПС? Это важно, ведь все можно реализовывать разными способами, и без конкретики сложно понять, в чем проблема. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
28 минут назад, IncognitaGames сказал:

мне не нужно, что бы он снова (постоянно) меня юзал

Переведи его в новую секцию схемы  и используй новую секцию meet, но без use = self 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
Только что, Mass сказал:

Переведи его в новую секцию схемы  и используй новую секцию meet, но без use = self 

Я еще нуб в кодинге, больше занимался 3д моделированием. Как это сделать? Перевести в новую схему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
Только что, IncognitaGames сказал:

Перевести в новую схему?

По поршню например:  on_info = {+поршен} walker. Примеров в оригинале предастаточно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
6 минут назад, Mass сказал:

По поршню например:  on_info = {+поршен} walker. Примеров в оригинале предастаточно

Да, это я понял, вопрос, где прописать эту штуку? Понятно, что в логике, но после чего? В общем, вот логика этого второго нпс. В use стоит инфопоршень, который не дает нпс юзнуть актера до получения определенного инфопоршня. Так же и сюжетный диалог не появится, пока актер не поговорит с первым нпс. Это все работает. Только вот юзает он актера постоянно, кроме первого раза. Нужно это убрать. Один раз юзнул, рассказал что нужно, актер получил задание с меткой и все. Дальше обычный дефолтный диалог с нажатие F

 

[logic@pred_sim_9_stalker_ne_bear]
active = walker
suitable = {=check_npc_name(pred_sim_9_stalker_ne_bear) !surge_started}
prior = 200

[walker]
path_walk = stalker_ne_bear_walk
path_look = stalker_ne_bear_look
use_camp = false
combat_ignore_cond = false
combat_ignore = combat_ignore
combat_ignore_keep_when_attacked = false
invulnerable = false   ; бессмертие
;gather_items_enabled = false   
;help_wounded_enabled = false   
;corpse_detection_enabled = false  
meet = meet

[meet]
meet_on_talking = false
no_move = true
abuse = false
allow_break = false
trade_enable = false
close_distance  = 5
close_anim  =  guard_na
close_victim     = actor
far_anim = guard
use = {=actor_has_weapon} false, true
snd_on_use = {=actor_has_weapon} meet_hello, nill
use = {+pred_samostrel_hodunok_start_info !actor_enemy = dist_to_actor_le(7)} self, true

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Если ты имеешь виду дать доступ к диалогу у второго нпс то в его скелете диалога в dialogs_локация придется добавить has_info после чего пишешь свой поршень от диалога первого нпс

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

А как нужно переключать стартовые диалоги? Ну, тоесть у меня их к примеру три, и я хочу, что бы после каждого выхода из диалогового окна, при повторном разговоре с нпс, у него включался уже второй стартовый диалог, потом третий... У меня почему то они все начинают диалоги с первого стартового. Я понимаю, что нужно выдать в конце каждого диалога инфопоршень, и в начало следующего сделать проверку. Но у меня не работает так(( 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
18 минут назад, IncognitaGames сказал:

pred_samostrel_hodunok_start_info

Гляди у тебя тут постоянный инфопоршен активирован. Тебе надо выдать инфо когда закончится диалог. и в условии проверять нет ли инфо

Как-то так:

use = {+pred_samostrel_hodunok_start_info -new_info !actor_enemy = dist_to_actor_le(7)} self, true

Где new_info это инфопоршен который ты пропишешь после диалога или по какому-то событию, не важно

snd_on_use = {=actor_has_weapon} meet_hello, nill

Правильно nil

combat_ignore_cond = false
combat_ignore = combat_ignore; Бред сивой кабылы
combat_ignore_keep_when_attacked = false
invulnerable = false   ; бессмертие

А также no_move = true ; Это тоже мусор

Совсем нужно удалить

Изменено пользователем Mass
  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, IncognitaGames сказал:

use = {=actor_has_weapon} false, true
snd_on_use = {=actor_has_weapon} meet_hello, nill
use = {+pred_samostrel_hodunok_start_info !actor_enemy = dist_to_actor_le(7)} self, true

У меня еще вопрос, почему тут два use? Нужно, чтобы был один.

1 час назад, IncognitaGames сказал:

У меня почему то они все начинают диалоги с первого стартового. Я понимаю, что нужно выдать в конце каждого диалога инфопоршень, и в начало следующего сделать проверку. Но у меня не работает так(( 

Файлы диалогов покажите пожалуйста. Эдитор диалогов создает\изменяет файлы. Я рекомендую их изучить и вообще редактировать вручную через Notepad++. В них понятная xml структура.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
12 минут назад, Mawrak сказал:

почему тут два use?

Это тоже мусор! затрется другой строчкой

12 минут назад, Mawrak сказал:

use = {+pred_samostrel_hodunok_start_info !actor_enemy = dist_to_actor_le(7)} self, true

Вот тут логическая ошибка! если актор враг, то гг может юзнуть нпс  Иногда схема xr_meet может перебить другие схемы так как имеет высокий приоритет, поэтому проверку на условия я бы всё-таки поставил

Нужно дополнить условие 

use = {+pred_samostrel_hodunok_start_info !actor_enemy = dist_to_actor_le(7)} self, {=actor_enemy} false,  true

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
13 минут назад, Mass сказал:

Гляди у тебя тут постоянный инфопоршен активирован. Тебе надо выдать инфо когда закончится диалог. и в условии проверять нет ли инфо

Как-то так:

use = {+pred_samostrel_hodunok_start_info -new_info !actor_enemy = dist_to_actor_le(7)} self, true

Где new_info это инфопоршен который ты пропишешь после диалога или по какому-то событию, не важно

snd_on_use = {=actor_has_weapon} meet_hello, nill

Правильно nil

combat_ignore_cond = false
combat_ignore = combat_ignore; Бред сивой кабылы
combat_ignore_keep_when_attacked = false
invulnerable = false   ; бессмертие

А также no_move = true ; Это тоже мусор

Совсем нужно удалить

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

IncognitaGames 

Условия надо ставить в каждой ветке.

Обычно использую <has_info>, <dont_has_info>...

Нужно действовать аккуратно чтобы не получить знаменитую ошибку с логом No available phrase to say

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Ну у меня вот к примеру, я поговорил с нпс (например Ходунок)- у него первый стартовый диалог, который не повторяется. При повторном с ним разговоре, идет дефолтная реплика приветствия. Это выполнено. Потом я поговорил со вторым нпс (с этим, который выше в посте))), и получаю в конце диалога инфопоршень. Он должен активировать у Ходунка второй стартовый диалог, который в свою очередь в конце диалога даст задание. И при выполнении этого задания, при диалоге с Ходунком, открывается третий стартовый диалог со всеми ветками актера. Инфопоршень я дал игроку в конце диалога со вторым нпс, так же в начале второго диалога я сделал проверку, есть ли этот поршень, но Ходунок (после первого диалога, который уже не повторяется), все равно разговаривает дефолтной стартовой фразой, и нет реплик актера, потому что не активирован второй стартовый. Как то так))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

IncognitaGames это ребусы какие-то, кинь файлы пожалуйста(((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
4 часа назад, Mawrak сказал:

IncognitaGames это ребусы какие-то, кинь файлы пожалуйста(((

ВОПРОС СНЯТ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу