Хех! Была моя глупейшая ошибка. Место "Address" написал Adress с одной d, теперь все работает. И еще вопрос: вот я взял задание у ПЕРВОГО человека. Пошел в таверну, отдал предмет, мне надо пойти к ПЕРВОМУ, но чтобы у него был другой диалог, а не такой же как был при даче задания.
Как после (или в середине) диалога запустить настройку PIRATES? Я создал НПС который подходит к ГГ сразу после начала игры (ну в общем как изначально на палубе только в порту). Написал диалог. В начале диалога добавил вот эту переменную:
После определённой фразы врубается окно интерфейса и можно настраивать. Но когда я закрываю окно, вместо продолжения диалога в углу вылазит примерно следующее: Error: не находит IDcharacter - Sailor_1 Error: не находит IDcharacter - none И после этого ГГ не реагирует ни на какие просьбы сдвинуться с места или совершить действие.
Sailor_1 это ID Сандро Торна... Но я не пойму причём тут он? Я ведь создал совершенно нового НПС и написал ему совершенно новый диалог... А вот если закончить диалог по другой ветке (без использования ChangePIRATES) то всё работает.
Как после (или в середине) диалога запустить настройку PIRATES?
Ну смотри, у меня такой пример сделан: В диалоге:
Код
case "Mark_Krinberg_dialog3_inPrison_1": AddDialogExitQuest("SHonStarkLine_Quest1_16"); dialog.text = "Ну что ж, Шон, собирайтесь."; link.l1 = "Погодите, тут моё добро..."; link.l1.go = "Exit"; break;
В quests_reaction.c прописан такой код:
Код
case "SHonStarkLine_Quest1_18": //Настроим систему PIRATES для нашего ГГ pchar.SystemInfo.ChangePIRATES = true; LaunchCharacter(pchar); LAi_QuestDelay("SHonStarkLine_Quest1_19", 1.4); break;
После изменений пиратес, будет диалог с нпс. все работает, без каких-либо ошибок.
Цитата (WMC)
Error: не находит IDcharacter - Sailor_1 Error: не находит IDcharacter - none
не помню, может в гпк где еще прописано что-то по этому вводному персонажу Sailor_1. Поэтому после вызова изменений пиратес, идут действия с этим нпс. Единственное, что можно сказать об удаче с уверенностью — она изменит. --------
Сообщение отредактировал korsary4 - Понедельник, 31.12.2012, 17:00
case "Node_2": AddDialogExitQuest("pirates"); dialog.text = "И назови своё имя!"; link.l1 = "Может сразу три шиллинга? А имя - черт с ним?"; link.l2 = "Я капитан Джек Воробей! Смекаешь?"; link.l1.go = "Node_3"; link.l2.go = "Node_4"; break;
case "Node_3": dialog.text = "Добро пожаловать в Порт-Ройал, мистер Смит!"; link.l1 = "Разрешите откланяться!"; link.l1.go = "Exit"; break;
Друзья, не мог бы кто-нибудь помочь разобраться в следующем вопросе!.. Я написал для К:ГПК 1.2.12 алгоритм выбора интервала времени для отдыха по аналогии с тем, как это сделано у BlackMark Studio и других разработок, но без окна задания времени. У меня время будет задаваться с клавиатуры, стандартно...
Сам алгоритм работает, но не могу убрать ограничение. Пример: 1) правки в файле tavern.c:
case "TalkSelf_room_day": NextDiag.CurrentNode = NextDiag.TempNode; //AddDialogExitQuestFunction("TavernWaitDate_Day"); TavernWaitDate("wait_day"); DialogExit_Self(); break;
Добавленные куски отмечены... Меня конкретно интересует замена условий в первой части второго куска... Необходимо добиться того, чтобы возможность выбора интервала времени была всегда (пока, на данном этапе). Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор. Но я не нашёл там никого, кто не был бы моим другом!
Сообщение отредактировал Nathaniel - Среда, 02.01.2013, 16:30
Не могу разобраться с добавлением ветки диалога ростовщику: ветка должна появиться после того как я поговорил с НПС на Бермудах.
В диалог ростовщика добавил условие и ветку, которая должна выполняться:
Код
case "quests": dialog.text = NPCStringReactionRepeat(RandPhraseSimple("Какие вопросы?", "Что вам угодно?"), "Совсем недавно вы пытались задать мне вопрос...", "М-да, позвольте угадаю... Опять ничего существенного?", "Послушайте, я финансами оперирую, а не на вопросы отвечаю...", "block", 1, npchar, Dialog.CurrentNode); link.l1 = HeroStringReactionRepeat(RandPhraseSimple("Я передумал...", "Сейчас мне не о чем говорить"), "Хм, что-то с памятью моей стало...", "Вы угадали, простите...", "Я понимаю...", npchar, Dialog.CurrentNode); link.l1.go = "exit"; // ==> Проверяем состояние квеста. if (pchar.questTemp.State = "pirates_quest") { //Пиратский квест. link.l2 = "Послушай, у меня тут такое дело..."; link.l2.go = "Step_H3_1"; } // <== Проверяем состояние квеста. break;
case "Step_H3_1": dialog.text = "Я слушаю вас, капитан..."; link.l1 = "Я прибыл по поручению Эмара "+Pchar.lastname+". Я хотел бы забрать его вклад. Вот ваш договор, а вот перстень Эмара."; link.l1.go = "Step_H3_2"; break;
case "Step_H3_2":
Но ветка не появляется. Я не совсем понял, что нужно писать на месте "pirates_quest".
Код
if (pchar.questTemp.State = "pirates_quest")
Я указал "pirates_quest", как кейс из квест_реакшн.
Добавлено (09.01.2013, 18:49) --------------------------------------------- Всё, вопрос снят. Меня осенило
Кейс "proverka" запускается из диалога. При попадании в локацию fortfrance_town, я так понимаю, должен выполниться кейс "bandit_1", в котором НПС должен сам подойти к ГГ и начать диалог. Что не так? НПС не хочет сам подходить. Или я что-то упустил? Просто еще не до конца с проверками разобрался...
Сообщение отредактировал WMC - Воскресенье, 13.01.2013, 08:03
подскажите пожалуйста, как сделать чтобы второй ГГ тоже проходил линейку Блада
Это сложно... Не получится без очень большого количества правок в коде это сделать... Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор. Но я не нашёл там никого, кто не был бы моим другом!
Как можно через диалог закрыть выход из локации? И открыть?
Код
//закрыть выход из локи chrDisableReloadToLocation = true;
false, соответственно, открывает выходы из локации.
Цитата (Jam)
подскажите пожалуйста, как сделать чтобы второй ГГ тоже проходил линейку Блада, но! стартовая локация не дом в англии, а палуба абортируемого корабля?
И как по твоему новый ГГ должен пройти оригинальную линейку блада стартовав с палубы корабля? А вообще, найди где Бладу дается новое начала. Там в 2 или 3-х файлах это расписано. По аналогии с Бладом, прописываешь нового ГГ. Единственное, что можно сказать об удаче с уверенностью — она изменит. --------
По этим идентификаторам и следует ориентироваться... Эти же id можно и нужно задавать в верхней строке ввода в дебаггере... Например, чтобы попасть в резиденцию в Каракасе, нужно ввести:
Caracas_townhall,reload,reload1_back и нажать кнопку справа... Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор. Но я не нашёл там никого, кто не был бы моим другом!
Сообщение отредактировал Nathaniel - Воскресенье, 27.01.2013, 00:30
Здравствуйте! Я хотел спросить вот я написал начало //------------------------------------------------------------------------------- // ПОМОЩЬ СТАРОМУ ДРУГУ //------------------------------------------------------------------------------- case "HelpToSpainCaptain": SetQuestHeader("HelpToSpainCaptain"); AddQuestRecord("HelpToSpainCaptain", "1"); Pchar.quest.HelpToSpainCaptain = "1"; break;
case "HelpToSpainCaptain1": AddQuestRecord("HelpToSpainCaptain", "2"); Pchar.quest.HelpToSpainCaptain = "2"; break;
Добавлено (04.02.2013, 16:54) --------------------------------------------- Но он у меня даже до роликов в игре не доходит, вылет просто на рабочий стол, нз что это такое?
если на то пошло, то ChangeCharacterAddress(characterFromID("JanKrosie"), "None", "", "");
т.е. надо две пустые ковычки, т.к. ChangeCharacterAddress(id персонажа, локация, группа локаторов, локатор); Что толку, если не можешь сделать мир лучше.