Перейти к содержанию

И вновь диалоги=)


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

Сорри за создание очередной темы про диалоги, но в поиске честно искал ответ на внезапно возникший вопрос и не нашел. :1anim_ad:

Дело вот в чем. Мне надо, чтобы при первом использовании топика из кричера выпадал предмет, а при втором и всех последующих юзаниях - чтобы ничего не выпадало, а сам текст мессаги был бы другим. Подскажите, как это можно реализовать через диалоговые переменные. Заранее спасибо. :1anim_ad:

ЗЫ. Саму передачу предмета я, конечно, сделал, проблема в том, что этот железный идиот дает мне упомянутый предмет каждый раз при активации этого топика, что не совсем хорошо. :1anim_ad:

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

  • Ответов 52
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Очень просто... Нам нужна переменная... Создаем тему, в ней новую фразу... Переменная для этой фразы равна нулю... В результате пишем placeatme "предмет" (лучше перепроверь по хелпу, я точно команду не помню)... Создаем вторую фразу, для которой переменная равна 1...

 

Исправьте, если я ошибся...

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

Журнал я юзать не люблю и не умею, а вот как насчет других, попроще? Ну, самое банальное, что можно привязать?
Ссылка на комментарий
Поделиться на другие сайты

Наверное, локальную переменную... =) (но если честно - я не знаю, какую переменную лучше использовать) Легче всего все-таки через журнал...
Ссылка на комментарий
Поделиться на другие сайты

Блин, ну это несколько тупо: "Ваш журнал дополнен" - "Из центуриона выпали две двемерские монеты". :1anim_ag:
Ссылка на комментарий
Поделиться на другие сайты

  • 4 месяца спустя...
Наверное, локальную переменную... =) (но если честно - я не знаю, какую переменную лучше использовать) Легче всего все-таки через журнал...

 

Я делал это через локальную переменную:

вешаешь скрипт на непися:

 

begin Your_script

sort Once

end

 

в настройках диалога выбираешь Local ищешь Once <1

 

в Results:

 

PlaceAtPC, "твоя монета", Х, У, кол-во

set Once to 1

 

для другого ответа выбираешь условие

Local Once >= 1

 

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

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

Поставь условие для говорящего - talkedToPC = 0

Это значит - произносить только если говорящий не разговаривал с игроком ранее

 

Ну, как через результат диалога устроить передачу предмета, ты знаешь.

 

Правда есть 2 нюанса. Игрок должен встретится с кричеров впервые.

Если после контакта игрок провел больше 72 часа в другой ячейке, функция talkedToPC опять сбросится на ноль.

Это хорошо использовать, если кричер должен появитсья эпизодически, отдать предмет, а потом исчезнуть.

disable -

кстати, команду disable можно использовать через результат диалога с любым другим говорящим. Тогда это будет выглядеть "My_creature"->disable

 

Хотя с другой стороны, можно ввести такие условия диалога, чтобы этот топик для кричера впоследствии стал недоступен (ограничения по индексу журнала и т.д.).

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

Хотя с другой стороны, можно ввести такие условия диалога, чтобы этот топик для кричера впоследствии стал недоступен (ограничения по индексу журнала и т.д.).

 

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

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

Не буду создавать новую тему, так как мой вопрос тоже по диалогам. :1anim_ad:

 

В общем, что надо написать в результах, что бы и пись и не пись игрок и непись перенеслись в определенное место после разговора?? Но должно работать для всех неписей, а не для конкретного. :1anim_al: (AI Wander не подходит.)

По имеющимся диалогам из ДракандросВойс ничего выцепить не сумел... :1anim_al: :1anim_ac:

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

Всегда пожалуйста. :1anim_aj:

 

ЗЫ: если прога начнет капризничать по необъяснимой причине, причиной может быть наличие пробелов. Надо будет написать без пробелов player->positionCell и т.д.

 

Не знаю, что такое settravel, можкт быть, set aitravel... Это еще хоть на что-то похоже.

Но aiwander aitravel aifollow - отвечают за анимацию непися, в то время как нужна ведь телепортация

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

Лофз, благодарю, сам все обыскал, ничего такого не видел, только какие-то settravel... :1anim_am:

В DracandrosVoice travel - локальная переменная нацеленного на NPC скрипта телепортации, если не ошибаюсь...

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

Еще один вопросик... Проблемы типа, как у ФФ... :1anim_ah:

 

Надо чтобы топик появился один раз, то есть подхожу к неписю выбираю "поболтать", выскакивает все, что нужно и прощание, а в дальнейшем этого топика быть не должно. А топик не убирается, то есть он так и остается, а нужно, чтоб только один раз появился... Я поигрался с функшн/вариэйбл и в результах пытался как-нибудь это сделать и что-то ничего не получилось... Или хотя бы, чтоб при последующем выборе топика "поболтать" непись говорил мне совсем другое или может есть скриптовая команда, которая убирает топик... :1anim_ah:

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

Насколько мне известно, нет команды удалить топик. Есть ClearInfoActor, про кторую в мануале написано "Эта функция используется в окне результата редактора диалогов. С её помощью можно удалить тему из раздела «Темы» журнала игрока. Полезно для избежания переполнения этой секции ненужной информацией."

 

Самое простое - это создать новую журнальную запись, типа "1a_boltovnja" с индексом 1 примерно такого содержания: "Я побеседовал с таким-то. Он рассказал мне, что..."

 

Написать фразу для непися, и в резульате: "1a_boltovnja" 1

goodbye

 

Затем создать выше новую фразу для этого непися с условиями "1a_boltovnja" >= 1 содержания "Я уже говорил тебе, что..."

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

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

Можно, но методы зачастую приходится подбирать индивидуально.

 

Можно создать выше несколько фраз с условиями Global Random100 < 20 или 50 и т.д. Тогда фразы непися будут немного непредсказуемыми.

 

Можно объявить новую глобальную переменную (gameplay -> global -> new), типа MyNPCTalk c исходным значением 0.

Потом в результате диалога с неписем написать MyNPCTalk to 1

и выше писать для него фразы с условием Global MyNPCTalk >= 1

 

Можно новую локальную переменную. Правда нужно будет на непися вешать скрипт, или дописывать в уже существующий новые строки

 

begin TalkLocal

 

short MyNPCTalkLocal

 

end

Поступать также, как с глобальной.

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

В общем вот мой скрипт

Begin TorAddTopicPrison

		short doOnce
		
if ( GetPCRank "Imperial Legion" >= 10 )
	else return

If ( GetDistance Player < 250 )
	If ( doOnce == 0 )
		
addtopic "мои полномочия"
		short MyNPCTalk
		set doOnce to 1
		
	endif
endif
endif

End

 

В диалогах, в результах поставил MyNPCTalk to 1, а он мне все равно одну и ту же фразу гоняет... :1anim_ac:

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

Сложный скрипт :1anim_ab:

 

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

begin TalkLocal

 

short MyNPCTalkLocal

 

end

 

 

Потом в результате диалога с неписем написать MyNPCTalk to 1

и выше писать для него фразы с условием Function MyNPCTalk >= 1

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

Я думал из-за порядка, так нет, местами менял строчки в диалоге, толку ни какого... :1anim_ac:

Со скриптами тоже помухлевал, ничего...

И во втором варианте поставил Local MyNPCTalk >=1 один черт он мне первую фразу шарашит... :1anim_ac:

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

И во втором варианте поставил Local MyNPCTalk >=1 один черт он мне первую фразу шарашит... :1anim_ac:

Это признак того, что скрипт не работает.

Второй вариант - это предложенный мой скрипт? Странно...

Может, не условие должно быть не local, а function. Все ли точно сделано: может быть не написано в результате диалога set MyNPCTalk to 1?

 

А с глобальной переменной получается?

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

Насколько мне известно, нет команды удалить топик. Есть ClearInfoActor, про кторую в мануале написано "Эта функция используется в окне результата редактора диалогов. С её помощью можно удалить тему из раздела «Темы» журнала игрока. Полезно для избежания переполнения этой секции ненужной информацией."

 

Самое простое - это создать новую журнальную запись, типа "1a_boltovnja" с индексом 1 примерно такого содержания: "Я побеседовал с таким-то. Он рассказал мне, что..."

 

Написать фразу для непися, и в резульате: "1a_boltovnja" 1

goodbye

 

Затем создать выше новую фразу для этого непися с условиями "1a_boltovnja" >= 1 содержания "Я уже говорил тебе, что..."

 

Не канает!!! если журнальная запись под индексом "1", то при условии >= эта единица также попадает в данный интервал... и будет выводиться тот же топик! Условие должно исключать индекс топика, который не нужен! Т.е. "1а_boltovnja" > 1 и текст, тот, который должен отличаться от начального, например, "мне нечего больше сказать по этому поводу"

 

2 Тореро

попробуй объявлять переменную в начале скрипта, а не под конец... т.е.

 

Begin TorAddTopicPrison

 

short doOnce

short MyNPCTalk

if ( GetPCRank "Imperial Legion" >= 10 )

else return

 

If ( GetDistance Player < 250 )

If ( doOnce == 0 )

 

addtopic "мои полномочия"

short MyNPCTalk

set doOnce to 1

 

endif

endif

endif

 

End

а вообще, кинь мне свой espшник, я посмотрю, что можно сделать...

 

по поводу скрипта, я бы переписал его так:

Begin TorAddTopicPrison

short doOnce
if ( GetPCRank "Imperial Legion" >= 10 )
If ( doOnce == 0 )

	addtopic "мои полномочия"
	set doOnce to 1

endif
endif

End

 

а в диалогах использовал бы doOnce

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

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

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

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

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

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

Войти

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

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

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