| Урок № 3. Пишем диалоги персонажам | 
|  | 
| 
| Nathaniel | Дата: Четверг, 21.03.2013, 23:22 | Сообщение # 81 |  |  Контр-адмирал Группа: Капитан Сообщений: 8077 Награды: 347 Репутация: 1849 Статус: В открытом море | Цитата (Loisomer) есть ли функция на вывод полного имени персонажа в винительном падеже?Есть!.. GetMainCharacterNameGen()
 
 
 Цитата (Loisomer) Как сделать, что бы во время диалога с другим персонажем вывелось имя "Solder"+i?Как вариант, забить это имя предварительно во временную переменную...
 
 Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор.
 Но я не нашёл там никого, кто не был бы моим другом!
 |  |  |  |  | 
| 
| PeterPan | Дата: Пятница, 16.08.2013, 14:46 | Сообщение # 82 |  |  Пороховая обезьяна Группа: Пират Сообщений: 2 Награды: 0 Репутация: 0 Статус: В открытом море | Добрый день всем. В диалоге с мэром появляется фраза:
 "Это есть баг, известите Эдди о наличие оного"
 Можно ли как-то поправить скрипт, чтобы устранить причину появления оной ?
 Откат к ранним сэйвам помогает ненадолго.
 |  |  |  |  | 
| 
| Nathaniel | Дата: Суббота, 17.08.2013, 14:03 | Сообщение # 83 |  |  Контр-адмирал Группа: Капитан Сообщений: 8077 Награды: 347 Репутация: 1849 Статус: В открытом море | Цитата (PeterPan) Можно ли как-то поправить скрипт, чтобы устранить причину появления оной ?Попробуйте просто удалить (закомментировать) эту ветку из диалога!..
 
 Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор.
 Но я не нашёл там никого, кто не был бы моим другом!
 
 
 Сообщение отредактировал Nathaniel - Суббота, 17.08.2013, 14:03 |  |  |  |  | 
| 
| PeterPan | Дата: Суббота, 17.08.2013, 23:45 | Сообщение # 84 |  |  Пороховая обезьяна Группа: Пират Сообщений: 2 Награды: 0 Репутация: 0 Статус: В открытом море | Цитата (Nathaniel) Попробуйте просто удалить (закомментировать) эту ветку из диалога!..Пробовал, только комментированием ограничиться не проходит.
 Вообще вопрос снят. Нашел варианты.
 Благодаря этой ветке, поразбирался с диалогом. Есть непроверенные предположения:
 1) Ветка с case "work" глючит. Удалить её нельзя, там собственно все основные миниквесты мера. Поэтому некто в начало ветки поместил диалог с фразой о баге. С одной стороны как бы предупреждение для разработчика Эдди (?!), а с другой принудительный exit из глючной ветки.
 2) Вероятная причина глюка (глубоко не копал):
 Квесты мера по switch(i) c кейсами от 0 до 4 (числовые)
 Ни один не отрабатывает, т.е. в i либо вообще не число, либо число не из диапазона 0-4
 Как проверить, что возвращает функция i = CheckAvailableTaskForNPC(NPChar, PGG_TASK_WORKONMAYOR), не соображу.
 Как вариант, можно рандомно устанавливать i, либо вообще добавить диалог, в котором сам будешь выбирать задание мера.
 Пока тупо поставил i=4 (нравится мне задание про пиратский корабль)
 Насколько правильный такой обход ситуации, время покажет. Пока устраивает.
 Во всяком случае разбираться с функцией CheckAvailableTaskForNPC знаний не хватает.
 
 
 Сообщение отредактировал PeterPan - Воскресенье, 18.08.2013, 21:26 |  |  |  |  | 
| 
| JQeen | Дата: Вторник, 17.09.2013, 16:00 | Сообщение # 85 |  |  Матрос Группа: Корсар Сообщений: 26 Награды: 5 Репутация: 46 Статус: В открытом море | Доброго времени суток. Подскажите пожалуйста что нужно прописать в кейсе, что бы НПС присоединился к ГГ вместе с кораблем.
 
 P.S. - Пытался сделать по аналогии с диалогом ПГГ, ничего дельного не получилось.
 
 
   |  |  |  |  | 
| 
| Phenixx | Дата: Вторник, 17.09.2013, 16:37 | Сообщение # 86 |  |  Пороховая обезьяна Группа: Пират Сообщений: 7 Награды: 0 Репутация: 1 Статус: В открытом море | Цитата (JQeen)  НПС присоединился к ГГ вместе с кораблем.корабль в порт: SetCharacterShipLocation("перс", "локация");
 в компаньоны: SetCompanionIndex(к кому добавили, -1, GetCharacterIndex("компаньон"));
 |  |  |  |  | 
| 
| JQeen | Дата: Вторник, 17.09.2013, 16:43 | Сообщение # 87 |  |  Матрос Группа: Корсар Сообщений: 26 Награды: 5 Репутация: 46 Статус: В открытом море | Цитата (Phenixx) корабль в порт: SetCharacterShipLocation("перс", "локация"); в компаньоны: SetCompanionIndex(к кому добавили, -1, GetCharacterIndex("компаньон"));
 Я как понимаю
 "перс" - это ID НПС
 "к кому добавили" - это писать ch или blaze?
 "компаньон" - это ID НПС
 "локация" - это ID локации где находиться НПС
 
 
   
 
 Сообщение отредактировал JQeen - Вторник, 17.09.2013, 16:58 |  |  |  |  | 
| 
| Mett | Дата: Вторник, 17.09.2013, 17:07 | Сообщение # 88 |  |  Капитан I ранга Группа: Корсар Сообщений: 586 Награды: 91 Репутация: 565 Статус: В открытом море | Цитата "к кому добавили" - это писать ch или blaze?в данном случае лучше написать pchar
 
 
 Цитата "локация" - это ID локации где находиться НПСэто локация из которой будет виден корабль НПС, пиши ту, в которой стоит судно ГГ
 
 Что толку, если не можешь сделать мир лучше.
 |  |  |  |  | 
| 
| JQeen | Дата: Вторник, 17.09.2013, 18:01 | Сообщение # 89 |  |  Матрос Группа: Корсар Сообщений: 26 Награды: 5 Репутация: 46 Статус: В открытом море | Mett Огромное спасибо!!
 
 Добавлено (17.09.2013, 17:37)
 ---------------------------------------------
 case "011":
 AddMoneyToCharacter(pchar, -300000);
 dialog.text = "Я буду служить вам верой и честью!";
 link.l1 = "Я верю вам Джеймс Баллантре.";
 link.l1.go = "exit_hire";
 NPChar.Dialog.FileName = "Enc_Officer_dialog.c";
 NPChar.Money = 0;
 SetCharacterShipLocation("heroJQ_02", "santacatalina_town");
 SetCompanionIndex(pchar, -1, GetCharacterIndex("heroJQ_02"));
 break;
 
 case "exit_hire":
 Pchar.questTemp.HiringOfficerIDX = GetCharacterIndex(Npchar.id);
 AddDialogExitQuestFunction("LandEnc_OfficerHired");
 NextDiag.CurrentNode = NextDiag.TempNode;
 NPChar.quest.meeting = true;
 DialogExit();
 break;
 
 Подскажите что здесь изменить, что бы не было одновременно компаньена и его копии офицера??
 
 
   
 
 Сообщение отредактировал JQeen - Вторник, 17.09.2013, 19:59 |  |  |  |  | 
| 
| Mett | Дата: Вторник, 17.09.2013, 21:38 | Сообщение # 90 |  |  Капитан I ранга Группа: Корсар Сообщений: 586 Награды: 91 Репутация: 565 Статус: В открытом море | 2 JQeen, 
 Код case "011":  AddMoneyToCharacter(pchar, -300000);
 dialog.text = "Я буду служить вам верой и честью!";
 link.l1 = "Я верю вам Джеймс Баллантре.";
 link.l1.go = "exit_hire";
 NPChar.Dialog.FileName = "Enc_Officer_dialog.c";
 NPChar.Money = 0;
 break;
 
 case "exit_hire":
 SetCharacterShipLocation(CharacterFromID("heroJQ_02"), "santacatalina_town");
 SetCompanionIndex(pchar, -1, GetCharacterIndex("heroJQ_02"));
 NextDiag.CurrentNode = NextDiag.TempNode;
 NPChar.quest.meeting = true;
 DialogExit();
 break;
 Что толку, если не можешь сделать мир лучше.
 |  |  |  |  | 
| 
| JQeen | Дата: Четверг, 19.09.2013, 17:20 | Сообщение # 91 |  |  Матрос Группа: Корсар Сообщений: 26 Награды: 5 Репутация: 46 Статус: В открытом море | Mett 
 Тогда получается что следующий диалог начинается со слов "Офицер не нужен капитан?"
 
 
   |  |  |  |  | 
| 
| Mett | Дата: Четверг, 19.09.2013, 18:44 | Сообщение # 92 |  |  Капитан I ранга Группа: Корсар Сообщений: 586 Награды: 91 Репутация: 565 Статус: В открытом море | Цитата Подскажите что здесь изменить, что бы не было одновременно компаньена и его копии офицера??ну так копии офицера теперь же нет, а вопрос стоял именно так ;)
 
 
 Цитата Тогда получается что следующий диалог начинается со слов "Офицер не нужен капитан?"а чтоб диалог был не "офицеркий" убери это:
 NPChar.Dialog.FileName = "Enc_Officer_dialog.c";
 
 и если не секрет, зачем тебе нуление денег (NPChar.Money = 0;)?
 это ж тоже отрывок из "офицерского" кода
 
 Что толку, если не можешь сделать мир лучше.
 |  |  |  |  | 
| 
| Phenixx | Дата: Четверг, 19.09.2013, 20:43 | Сообщение # 93 |  |  Пороховая обезьяна Группа: Пират Сообщений: 7 Награды: 0 Репутация: 1 Статус: В открытом море | создал ветку для своего ответа: link.l1.edit = 1;
 link.l1 = "";
 link.l1.go = "222";
 Как потом сохранить в переменную то, что написал?
 |  |  |  |  | 
| 
| JQeen | Дата: Среда, 08.01.2014, 18:04 | Сообщение # 94 |  |  Матрос Группа: Корсар Сообщений: 26 Награды: 5 Репутация: 46 Статус: В открытом море | Спасибо Добавлено (08.01.2014, 18:04)---------------------------------------------
 Доброго времени суток.
 Немогли бы вы мне подсказать
 нужна функция диалога на проверку в кармане ГГ определенного кол-ва предметов (например алмазов)
 
 и функция собственно убирающая определенное кол-во предметов из кармана ГГ
 
 
   |  |  |  |  | 
| 
| korsar01 | Дата: Среда, 08.01.2014, 19:14 | Сообщение # 95 |  |  Мичман Группа: Корсар Сообщений: 186 Награды: 6 Репутация: 46 Статус: В открытом море | Цитата JQeen (  ) нужна функция диалога на проверку в кармане ГГ определенного кол-ва предметов (например алмазов) 
 и функция собственно убирающая определенное кол-во предметов из кармана ГГ
 Вот проверка
 
 Код if (GetCharacterItem(Pchar, "ID предмета")=количество)
 А эта функция убирает предмет
 
 Код TakeItemFromCharacter(pchar, "id item")
 если нужно убрать несколько предметов, то
 
 Код TakeNItems(pchar, "ID", -количество);
 
 Сообщение отредактировал korsar01 - Среда, 08.01.2014, 19:18 |  |  |  |  | 
| 
| Mett | Дата: Среда, 08.01.2014, 21:48 | Сообщение # 96 |  |  Капитан I ранга Группа: Корсар Сообщений: 586 Награды: 91 Репутация: 565 Статус: В открытом море | только лучше будет использовать такую проверку 
 Код if(GetCharacterItem(Pchar, "ID предмета") >= количество)а потом просто удалить нужное кол-во этих самых итемов
 
 Что толку, если не можешь сделать мир лучше.
 |  |  |  |  | 
| 
| JQeen | Дата: Четверг, 09.01.2014, 19:38 | Сообщение # 97 |  |  Матрос Группа: Корсар Сообщений: 26 Награды: 5 Репутация: 46 Статус: В открытом море | Большое человеческое тебе спасибо за такой довольно быстрый ответ!
 
 
 И тебе большое спасибо, эта проверка у меня работает!
 Добавлено (09.01.2014, 19:01)---------------------------------------------
 
 Цитата Есть еще один вопрос!
 Есть ли такая функция (если да то пожалуйста напишите ее) что бы ветка диалога появилась после достижения определенного ранга ГГ?
 Добавлено (09.01.2014, 19:38)---------------------------------------------
 
 Цитата case "Имя кейса": dialog.text = "Тест1";
 if(PChar.rank <= 35)
 {
 link.l1 = "Текст до 35 ранга";
 link.l1.go = "exit1";
 }
 else
 {
 link.l1 = "тест после 35 ранга";
 link.l1.go = "exit2";
 }
 break;
 Вопрос отменяю, тк нашел ответ
 
 
   |  |  |  |  | 
| 
| IvanCorsair29GL | Дата: Вторник, 14.01.2014, 20:03 | Сообщение # 98 |  |  Матрос Группа: Корсар Сообщений: 58 Награды: 5 Репутация: 35 Статус: В открытом море | Всем привет корсары! :-) Подскажите, что не так… Написал диалог (ПКМ). По другому образцу, но перс при диалоге выдаёт, что не возможно открыть (Название диалога.с) Перепроверял все раз 100. Не меньше... Сравнивал с другими, тоже ничего отрицательного не заметил…
 
 Из-за чего это может быть?
 Если не трудно,можете скинуть пример диалога (ПКМ) хотя врятли у кого есть:) ….
 
 05
 |  |  |  |  | 
| 
| Mett | Дата: Среда, 15.01.2014, 00:15 | Сообщение # 99 |  |  Капитан I ранга Группа: Корсар Сообщений: 586 Награды: 91 Репутация: 565 Статус: В открытом море | что пишет лог error? 
 Что толку, если не можешь сделать мир лучше.
 |  |  |  |  | 
| 
| IvanCorsair29GL | Дата: Среда, 15.01.2014, 00:52 | Сообщение # 100 |  |  Матрос Группа: Корсар Сообщений: 58 Награды: 5 Репутация: 35 Статус: В открытом море | "что пишет лог error" 
 Mett, уж не помню, вобщем по русски, что невозможно открыть файл с диалогом. А по английски не помню…
 
 05
 |  |  |  |  |