Fr0st Ph0en!x Опубликовано 16 июня, 2006 Жалоба Поделиться Опубликовано 16 июня, 2006 Сорри за создание очередной темы про диалоги, но в поиске честно искал ответ на внезапно возникший вопрос и не нашел. :1anim_ad:Дело вот в чем. Мне надо, чтобы при первом использовании топика из кричера выпадал предмет, а при втором и всех последующих юзаниях - чтобы ничего не выпадало, а сам текст мессаги был бы другим. Подскажите, как это можно реализовать через диалоговые переменные. Заранее спасибо. :1anim_ad:ЗЫ. Саму передачу предмета я, конечно, сделал, проблема в том, что этот железный идиот дает мне упомянутый предмет каждый раз при активации этого топика, что не совсем хорошо. :1anim_ad: Ссылка на комментарий Поделиться на другие сайты Поделиться
Фальк Опубликовано 16 июня, 2006 Жалоба Поделиться Опубликовано 16 июня, 2006 Очень просто... Нам нужна переменная... Создаем тему, в ней новую фразу... Переменная для этой фразы равна нулю... В результате пишем placeatme "предмет" (лучше перепроверь по хелпу, я точно команду не помню)... Создаем вторую фразу, для которой переменная равна 1... Исправьте, если я ошибся... Ссылка на комментарий Поделиться на другие сайты Поделиться
Fr0st Ph0en!x Опубликовано 16 июня, 2006 Автор Жалоба Поделиться Опубликовано 16 июня, 2006 Как тип переменной называется?Журнал что ли юзать? Ссылка на комментарий Поделиться на другие сайты Поделиться
Фальк Опубликовано 16 июня, 2006 Жалоба Поделиться Опубликовано 16 июня, 2006 Можно журнал, можно другую переменную... Ссылка на комментарий Поделиться на другие сайты Поделиться
Fr0st Ph0en!x Опубликовано 16 июня, 2006 Автор Жалоба Поделиться Опубликовано 16 июня, 2006 Журнал я юзать не люблю и не умею, а вот как насчет других, попроще? Ну, самое банальное, что можно привязать? Ссылка на комментарий Поделиться на другие сайты Поделиться
Фальк Опубликовано 16 июня, 2006 Жалоба Поделиться Опубликовано 16 июня, 2006 Наверное, локальную переменную... =) (но если честно - я не знаю, какую переменную лучше использовать) Легче всего все-таки через журнал... Ссылка на комментарий Поделиться на другие сайты Поделиться
Fr0st Ph0en!x Опубликовано 16 июня, 2006 Автор Жалоба Поделиться Опубликовано 16 июня, 2006 Блин, ну это несколько тупо: "Ваш журнал дополнен" - "Из центуриона выпали две двемерские монеты". :1anim_ag: Ссылка на комментарий Поделиться на другие сайты Поделиться
Фальк Опубликовано 16 июня, 2006 Жалоба Поделиться Опубликовано 16 июня, 2006 Ну, еслиб мне центурион дал две двемерские монеты, я бы это точно записал... :)))) Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 8 ноября, 2006 Жалоба Поделиться Опубликовано 8 ноября, 2006 Наверное, локальную переменную... =) (но если честно - я не знаю, какую переменную лучше использовать) Легче всего все-таки через журнал... Я делал это через локальную переменную:вешаешь скрипт на непися: begin Your_script sort Once end в настройках диалога выбираешь Local ищешь Once <1 в Results: PlaceAtPC, "твоя монета", Х, У, кол-воset Once to 1 для другого ответа выбираешь условие Local Once >= 1 Но, это, на мой взгляд, целесообразно только в том случае, если нет желания "загаживать" журнал ненужной инфой.... Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 10 ноября, 2006 Жалоба Поделиться Опубликовано 10 ноября, 2006 Поставь условие для говорящего - talkedToPC = 0 Это значит - произносить только если говорящий не разговаривал с игроком ранее Ну, как через результат диалога устроить передачу предмета, ты знаешь. Правда есть 2 нюанса. Игрок должен встретится с кричеров впервые. Если после контакта игрок провел больше 72 часа в другой ячейке, функция talkedToPC опять сбросится на ноль. Это хорошо использовать, если кричер должен появитсья эпизодически, отдать предмет, а потом исчезнуть. disable - кстати, команду disable можно использовать через результат диалога с любым другим говорящим. Тогда это будет выглядеть "My_creature"->disable Хотя с другой стороны, можно ввести такие условия диалога, чтобы этот топик для кричера впоследствии стал недоступен (ограничения по индексу журнала и т.д.). Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 11 ноября, 2006 Жалоба Поделиться Опубликовано 11 ноября, 2006 Хотя с другой стороны, можно ввести такие условия диалога, чтобы этот топик для кричера впоследствии стал недоступен (ограничения по индексу журнала и т.д.). я так понял, что товарищ не хочет использовать журнал.... иначе и скрипт не нужен! все можно сделать используя журнальные индексы... и talckedtopc не обязателен... Ссылка на комментарий Поделиться на другие сайты Поделиться
Анархист Опубликовано 11 ноября, 2006 Жалоба Поделиться Опубликовано 11 ноября, 2006 Не буду создавать новую тему, так как мой вопрос тоже по диалогам. :1anim_ad: В общем, что надо написать в результах, что бы и пись и не пись игрок и непись перенеслись в определенное место после разговора?? Но должно работать для всех неписей, а не для конкретного. :1anim_al: (AI Wander не подходит.)По имеющимся диалогам из ДракандросВойс ничего выцепить не сумел... :1anim_al: :1anim_ac: Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 12 ноября, 2006 Жалоба Поделиться Опубликовано 12 ноября, 2006 Сработает для любого говорящего, у кого в результате темы или гритинга PositionCell x y z 0 "Cell_name" player -> positionCell x y z 0 "Cell_name" Ссылка на комментарий Поделиться на другие сайты Поделиться
Анархист Опубликовано 12 ноября, 2006 Жалоба Поделиться Опубликовано 12 ноября, 2006 Лофз, благодарю, сам все обыскал, ничего такого не видел, только какие-то settravel... :1anim_am: Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 12 ноября, 2006 Жалоба Поделиться Опубликовано 12 ноября, 2006 Всегда пожалуйста. :1anim_aj: ЗЫ: если прога начнет капризничать по необъяснимой причине, причиной может быть наличие пробелов. Надо будет написать без пробелов player->positionCell и т.д. Не знаю, что такое settravel, можкт быть, set aitravel... Это еще хоть на что-то похоже. Но aiwander aitravel aifollow - отвечают за анимацию непися, в то время как нужна ведь телепортация Ссылка на комментарий Поделиться на другие сайты Поделиться
Boma Kuro Опубликовано 13 ноября, 2006 Жалоба Поделиться Опубликовано 13 ноября, 2006 Лофз, благодарю, сам все обыскал, ничего такого не видел, только какие-то settravel... :1anim_am:В DracandrosVoice travel - локальная переменная нацеленного на NPC скрипта телепортации, если не ошибаюсь... Ссылка на комментарий Поделиться на другие сайты Поделиться
Анархист Опубликовано 13 ноября, 2006 Жалоба Поделиться Опубликовано 13 ноября, 2006 Еще один вопросик... Проблемы типа, как у ФФ... :1anim_ah: Надо чтобы топик появился один раз, то есть подхожу к неписю выбираю "поболтать", выскакивает все, что нужно и прощание, а в дальнейшем этого топика быть не должно. А топик не убирается, то есть он так и остается, а нужно, чтоб только один раз появился... Я поигрался с функшн/вариэйбл и в результах пытался как-нибудь это сделать и что-то ничего не получилось... Или хотя бы, чтоб при последующем выборе топика "поболтать" непись говорил мне совсем другое или может есть скриптовая команда, которая убирает топик... :1anim_ah: Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 13 ноября, 2006 Жалоба Поделиться Опубликовано 13 ноября, 2006 Насколько мне известно, нет команды удалить топик. Есть ClearInfoActor, про кторую в мануале написано "Эта функция используется в окне результата редактора диалогов. С её помощью можно удалить тему из раздела «Темы» журнала игрока. Полезно для избежания переполнения этой секции ненужной информацией." Самое простое - это создать новую журнальную запись, типа "1a_boltovnja" с индексом 1 примерно такого содержания: "Я побеседовал с таким-то. Он рассказал мне, что..." Написать фразу для непися, и в резульате: "1a_boltovnja" 1 goodbye Затем создать выше новую фразу для этого непися с условиями "1a_boltovnja" >= 1 содержания "Я уже говорил тебе, что..." Ссылка на комментарий Поделиться на другие сайты Поделиться
Анархист Опубликовано 13 ноября, 2006 Жалоба Поделиться Опубликовано 13 ноября, 2006 А без дневника можно обойтись, чтоб при втором выборе данного топика непись говорил совсем другое?? Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 13 ноября, 2006 Жалоба Поделиться Опубликовано 13 ноября, 2006 Можно, но методы зачастую приходится подбирать индивидуально. Можно создать выше несколько фраз с условиями Global Random100 < 20 или 50 и т.д. Тогда фразы непися будут немного непредсказуемыми. Можно объявить новую глобальную переменную (gameplay -> global -> new), типа MyNPCTalk c исходным значением 0.Потом в результате диалога с неписем написать MyNPCTalk to 1 и выше писать для него фразы с условием Global MyNPCTalk >= 1 Можно новую локальную переменную. Правда нужно будет на непися вешать скрипт, или дописывать в уже существующий новые строки begin TalkLocal short MyNPCTalkLocal endПоступать также, как с глобальной. Ссылка на комментарий Поделиться на другие сайты Поделиться
Анархист Опубликовано 13 ноября, 2006 Жалоба Поделиться Опубликовано 13 ноября, 2006 В общем вот мой скрипт 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: Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 13 ноября, 2006 Жалоба Поделиться Опубликовано 13 ноября, 2006 Сложный скрипт :1anim_ab: Сами по себе строчки правильные, но есть подозрения, что их порядок останавливает работу скритп. Дистанция зачем-то... Достаточно просто begin TalkLocal short MyNPCTalkLocal end Потом в результате диалога с неписем написать MyNPCTalk to 1 и выше писать для него фразы с условием Function MyNPCTalk >= 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Анархист Опубликовано 13 ноября, 2006 Жалоба Поделиться Опубликовано 13 ноября, 2006 Я думал из-за порядка, так нет, местами менял строчки в диалоге, толку ни какого... :1anim_ac: Со скриптами тоже помухлевал, ничего...И во втором варианте поставил Local MyNPCTalk >=1 один черт он мне первую фразу шарашит... :1anim_ac: Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 13 ноября, 2006 Жалоба Поделиться Опубликовано 13 ноября, 2006 И во втором варианте поставил Local MyNPCTalk >=1 один черт он мне первую фразу шарашит... :1anim_ac:Это признак того, что скрипт не работает. Второй вариант - это предложенный мой скрипт? Странно... Может, не условие должно быть не local, а function. Все ли точно сделано: может быть не написано в результате диалога set MyNPCTalk to 1? А с глобальной переменной получается? Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 13 ноября, 2006 Жалоба Поделиться Опубликовано 13 ноября, 2006 Насколько мне известно, нет команды удалить топик. Есть ClearInfoActor, про кторую в мануале написано "Эта функция используется в окне результата редактора диалогов. С её помощью можно удалить тему из раздела «Темы» журнала игрока. Полезно для избежания переполнения этой секции ненужной информацией." Самое простое - это создать новую журнальную запись, типа "1a_boltovnja" с индексом 1 примерно такого содержания: "Я побеседовал с таким-то. Он рассказал мне, что..." Написать фразу для непися, и в резульате: "1a_boltovnja" 1 goodbye Затем создать выше новую фразу для этого непися с условиями "1a_boltovnja" >= 1 содержания "Я уже говорил тебе, что..." Не канает!!! если журнальная запись под индексом "1", то при условии >= эта единица также попадает в данный интервал... и будет выводиться тот же топик! Условие должно исключать индекс топика, который не нужен! Т.е. "1а_boltovnja" > 1 и текст, тот, который должен отличаться от начального, например, "мне нечего больше сказать по этому поводу" 2 Тореропопробуй объявлять переменную в начале скрипта, а не под конец... т.е. Begin TorAddTopicPrison short doOnce short MyNPCTalkif ( GetPCRank "Imperial Legion" >= 10 ) else return If ( GetDistance Player < 250 ) If ( doOnce == 0 ) addtopic "мои полномочия" short MyNPCTalk set doOnce to 1 endif endifendif Endа вообще, кинь мне свой espшник, я посмотрю, что можно сделать... по поводу скрипта, я бы переписал его так:Begin TorAddTopicPrison short doOnce if ( GetPCRank "Imperial Legion" >= 10 ) If ( doOnce == 0 ) addtopic "мои полномочия" set doOnce to 1 endif endif End а в диалогах использовал бы doOnce Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти