Форма входа
 
Приветствуем тебя, корсар Юнга!

Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!
Логин:
Пароль:


Купить игры
 



Чат
 
500


Статистика
 
Пользователи, посетившие сайт за текущий день:
DPK, ВИТар, Jigan4ik, nkbaka, LogArtS, Andrey__3010, dednick, Badgert, MarisaBel, werter707, Bendiiiiik
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Модератор форума: NikK  
Форум » Ад-доны для игр серии Корсары » FAQ по модам - "Сделай мод сам" » Урок № 3. Пишем диалоги персонажам
Урок № 3. Пишем диалоги персонажам
NathanielДата: Четверг, 21.03.2013, 23:22 | Сообщение # 81
Контр-адмирал
Группа: Капитан
Сообщений: 8036
Награды: 347
Репутация: 1845
Статус: В открытом море
Цитата (Loisomer)
есть ли функция на вывод полного имени персонажа в винительном падеже?

Есть!.. GetMainCharacterNameGen()

Цитата (Loisomer)
Как сделать, что бы во время диалога с другим персонажем вывелось имя "Solder"+i?

Как вариант, забить это имя предварительно во временную переменную...


Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор.
Но я не нашёл там никого, кто не был бы моим другом!
PeterPanДата: Пятница, 16.08.2013, 14:46 | Сообщение # 82
Пороховая обезьяна
Группа: Пират
Сообщений: 2
Награды: 0
Репутация: 0
Статус: В открытом море
Добрый день всем.
В диалоге с мэром появляется фраза:
"Это есть баг, известите Эдди о наличие оного"
Можно ли как-то поправить скрипт, чтобы устранить причину появления оной ?
Откат к ранним сэйвам помогает ненадолго.
NathanielДата: Суббота, 17.08.2013, 14:03 | Сообщение # 83
Контр-адмирал
Группа: Капитан
Сообщений: 8036
Награды: 347
Репутация: 1845
Статус: В открытом море
Цитата (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
Статус: В открытом море
Цитата
korsar01

Большое человеческое тебе спасибо за такой довольно быстрый ответ!

Цитата
Mett

И тебе большое спасибо, эта проверка у меня работает!

Добавлено (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
Форум » Ад-доны для игр серии Корсары » FAQ по модам - "Сделай мод сам" » Урок № 3. Пишем диалоги персонажам
Поиск:

Copyright Pirates-Life.Ru © 2008-2024


Семь Футов под Килем - Бухта Корсаров и Пиратов!