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

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


Купить игры
 



Чат
 
500


Статистика
 
Пользователи, посетившие сайт за текущий день:
Maydg, egor-but, ВИТар, nkbaka, BOPOH50, Andrey__3010, Badgert, ukdouble1, Solar_Wind, Vika
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

  • Страница 23 из 23
  • «
  • 1
  • 2
  • 21
  • 22
  • 23
Модератор форума: NikK  
Форум » Ад-доны для игр серии Корсары » FAQ по модам - "Сделай мод сам" » Кодинг квестов (Рассмотрим написание квестов)
Кодинг квестов
ЛамбадаДата: Среда, 16.08.2017, 22:37 | Сообщение # 441
Пороховая обезьяна
Группа: Пират
Сообщений: 7
Награды: 0
Репутация: 0
Статус: В открытом море
Привет всем! Решил я значит поковыряться в скриптах ККС и сразу же натолкнулся на проблему.
В начальном диалоге прописал включении функции:
Код
// --> матрос на корабле, прибытие в Сен-Пьер
  case "Startsailor":
   dialog.text = "Эх, первым делом, как сойду на берег - напьюсь!.. Просыпайтесь, месье... как вас там... Прибыли!";
   link.l1 = "А-ах! Что, уже? Чертова жара...";
   link.l1.go = "Startsailor_1";
   DoQuestFunctionDelay("pirateline", 0.1);  
  break;

Затем прописал саму функцию в quest_reaction:
Код
void pirateline()
{
     //ref sld;
  sld = GetCharacter(NPC_GenerateCharacter("ogersailor1", "citiz_50", "man", "man", 25, PIRATE, 0, true, "quest"));
  //sld = GetCharacter(NPC_GenerateCharacter("ogersailor1", "Adolf", "man", "man", 1, FRANCE, -1, false));
  ChangeCharacterAddressGroup(sld, "Fortfrance_town", "goto", "goto16");
  //FantomMakeCoolFighter(sld, 10, 10, 10, "blade_10", "pistol1", "bullet", 10);
  sld.Dialog.Filename = "Quest\none.c";
  sld.Dialog.currentnode = "First visit";
  sld.name = "Рудольф";
  sld.lastname = "Шмидт";
  LAi_SetActorType(sld);
  Log_Info("работает");
}

Комментарии - это следствие экспериментов с кодом, дабы он наконец заработал. Но он, на удивление, не работает. Строчка "работает" появляется, а персонаж не генерируется
Вот что говорит error log:
Код
RUNTIME ERROR - file: quests\quests_reaction.c; line: 13149
function 'pirateline' stack error

Прошу помочь разобраться
NathanielДата: Четверг, 17.08.2017, 16:07 | Сообщение # 442
Контр-адмирал
Группа: Капитан
Сообщений: 8036
Награды: 347
Репутация: 1845
Статус: В открытом море
Цитата Ламбада ()
Строчка "работает" появляется, а персонаж не генерируется...

Я бы для начала попробовал поставить NPC в какой-нибудь локатор, в котором персонаж гарантированно залогинится. Например, в пустой дом или в постоянно пустой существующий локатор. Если появится - значит всё хорошо; нет - искать причину более глубоко. А уже после этого проверять основной квест.

В городе же указанный локатор может быть или занят кем-то, или вообще не обрабатываться...


Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор.
Но я не нашёл там никого, кто не был бы моим другом!


Сообщение отредактировал Nathaniel - Четверг, 17.08.2017, 16:09
ЛамбадаДата: Четверг, 17.08.2017, 18:26 | Сообщение # 443
Пороховая обезьяна
Группа: Пират
Сообщений: 7
Награды: 0
Репутация: 0
Статус: В открытом море
Цитата Nathaniel ()
Я бы для начала попробовал поставить NPC в какой-нибудь локатор, в котором персонаж гарантированно залогинится.

Ставил сперва в джунглях, проверял на двух разных локаторах goto. Все равно не логинится.
Ошибка выдает лог, но видимой ошибки в коде я не вижу
Странно

Добавлено (17.08.2017, 18:26)
---------------------------------------------
Что ж, проблема решена, логика не понята. Скопировал вслепую код Грегуара и все заработало, даже на том локаторе, который отказывался работать.

korsar328Дата: Понедельник, 30.07.2018, 00:39 | Сообщение # 444
Мичман
Группа: Корсар
Сообщений: 102
Награды: 5
Репутация: 30
Статус: В открытом море
Ребят, назрел такого рода вопрос.
Мне нужно:
1. Пойти к НПЦ, поговорить с ним.
2. В процессе диалога он говорит что положил 25000 песо в свой сундук.
3. Забрать эти деньги из сундука.

Вопрос: как эти деньги в этот сундук добавить.


Жизнь - как божественная комедия...
ReborodaДата: Среда, 08.08.2018, 18:47 | Сообщение # 445
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
Поскольку у меня мало свободного времени, дам только некоторые советы:
1. Найди в коде похожего по геймплею квеста весь его функционал и открой эти файлы в своем Notepad++ (или похожем по функционалу блокноте). Найти можно по запомнившейся фразе например, а потом, отталкиваясь от диалога - найти все нужные функции будет не сложно.
2. По уже рабочему образцу создать свои функции наполнения сундука монетами и задействовать их в своем квесте.


- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться?
- Да я вообще только одним глазком...
korsar328Дата: Четверг, 09.08.2018, 04:36 | Сообщение # 446
Мичман
Группа: Корсар
Сообщений: 102
Награды: 5
Репутация: 30
Статус: В открытом море
Reboroda, Я уже по другому реализовал этот момент. Просто добавил деньги самому НПЦ и после его убийства снимаю их с него

Добавлено (12.08.2018, 04:27)
---------------------------------------------
Ламбада, У тебя ошибка в названии
Нужно поставить вот так
Код
void pirateline(string qName)


Добавлено (12.08.2018, 04:45)
---------------------------------------------
Может кому интересно будет, я методом проб и ошибок, откопал вот такие функции:
1. Как сделать НПЦ игроком, т.е. дать управление над ним


2. Экран "На следующий день"

3. Экран "На следующий день" с перезагрузкой в локацию

4. Даём корабль и ставим корабль в локацию (Я наконец-то разобрался как это сделать!!!)


Продолжение следует...


Жизнь - как божественная комедия...

Сообщение отредактировал korsar328 - Воскресенье, 12.08.2018, 04:47
mcleod-sДата: Воскресенье, 30.06.2019, 13:32 | Сообщение # 447
Матрос
Группа: Корсар
Сообщений: 49
Награды: 0
Репутация: 1
Статус: В открытом море
кто подскажет - во время абордажа не переходит на вторую палубу . замочек появляется , а нажимаю на мышь - замок просто пропадает и всё. и ошибка только на большой палубе ,может как то можно заменить палубы в коде? с остальных палуб всё нормально.
NathanielДата: Вторник, 02.07.2019, 16:53 | Сообщение # 448
Контр-адмирал
Группа: Капитан
Сообщений: 8036
Награды: 347
Репутация: 1845
Статус: В открытом море
Цитата mcleod-s ()
как то можно заменить палубы в коде?

Палубы-то заменить не проблема. Переиницилизировать их придётся. А это лично у меня всегда сопровождалось пропажей лута из капитанских рундуков... Просто способа переиницилизировать только конкретные локации я не нашёл.

Цитата mcleod-s ()
во время абордажа не переходит на вторую палубу...

Стоит проверить оба варианта. И "reload.go" (куда выгружаете NPC), и, похоже, сам файл локаторов. Может, ещё есть какой-то нюанс, но уже не помню...


Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор.
Но я не нашёл там никого, кто не был бы моим другом!
GladValakasДата: Суббота, 13.07.2019, 18:27 | Сообщение # 449
Пороховая обезьяна
Группа: Пират
Сообщений: 3
Награды: 0
Репутация: 0
Статус: В открытом море
Я сделал так чтоб НПС подбегал к ГГ герою и начинал диалог (LAi_ActorDialog), после диалога НПС меняет местоположение (ChangeCharacterAddress), когда я добираюсь на новое местоположение НПС, я не могу с ним заговорить, что используется чтобы с ним можно было заговорить? Я так думаю это из-за изначального скрипта с подбеганием НПС к ГГ ???
Captain_BeltropДата: Суббота, 13.07.2019, 19:51 | Сообщение # 450
Пороховая обезьяна
Группа: Пират
Сообщений: 6
Награды: 0
Репутация: 0
Статус: В открытом море
GladValakas, перво-наперво спрошу: Вы меняли ему ноду диалога? Если нет, то поменяйте, думаю, понятно как это сделать. Ну и тип стоячего ему поставьте.
GladValakasДата: Суббота, 13.07.2019, 20:37 | Сообщение # 451
Пороховая обезьяна
Группа: Пират
Сообщений: 3
Награды: 0
Репутация: 0
Статус: В открытом море
Цитата Captain_Beltrop ()
GladValakas, перво-наперво спрошу: Вы меняли ему ноду диалога? Если нет, то поменяйте, думаю, понятно как это сделать. Ну и тип стоячего ему поставьте.


Вы имеете ввиду NextDiag.TempNode ???

Добавлено (13.07.2019, 20:51)
---------------------------------------------
там если даже обычного горожанина при входе в город заставить идти к ГГ, а точнее не идти а первым начать диалог с помощью LAi_ActorDialog, то он после разговора становится неактивным (стоит на месте и с ним нельзя опять заговорить)

Captain_BeltropДата: Суббота, 13.07.2019, 22:13 | Сообщение # 452
Пороховая обезьяна
Группа: Пират
Сообщений: 6
Награды: 0
Репутация: 0
Статус: В открытом море
Цитата GladValakas ()
Вы имеете ввиду NextDiag.TempNode ???

Нет. Вот пример:
Код
sld = characterFromID("ID перса");
sld.dialog.currentnode = "название ноды диалога";
.
Цитата GladValakas ()
там если даже обычного горожанина при входе в город заставить идти к ГГ, а точнее не идти а первым начать диалог с помощью LAi_ActorDialog, то он после разговора становится неактивным (стоит на месте и с ним нельзя опять заговорить)

Это абсолютно нормально. Что конкретно Вы хотите сделать после диалога? Просто навскидку понять невозможно...
GladValakasДата: Суббота, 13.07.2019, 22:29 | Сообщение # 453
Пороховая обезьяна
Группа: Пират
Сообщений: 3
Награды: 0
Репутация: 0
Статус: В открытом море
Цитата Captain_Beltrop ()
Это абсолютно нормально. Что конкретно Вы хотите сделать после диалога? Просто навскидку понять невозможно...


хотел что бы он со мной снова разговаривал, а не стоял на одном месте молча
___________________________________________________________________

проблему решил метод LAi_SetPlayerType(characterFromID("NPC_ID")); но все равно спасибо за внимание -give_rose-
mcleod-sДата: Понедельник, 05.08.2019, 17:01 | Сообщение # 454
Матрос
Группа: Корсар
Сообщений: 49
Награды: 0
Репутация: 1
Статус: В открытом море
Цитата Nathaniel ()
Палубы-то заменить не проблема. Переиницилизировать их придётся. А это лично у меня всегда сопровождалось пропажей лута из капитанских рундуков... Просто способа переиницилизировать только конкретные локации я не нашёл.

нашел способ . просто переставил "рабочую палубу" на все классы кораблей ,на места нерабочих и всё. думаю это какой то локальный баг скорее всего .

Добавлено (05.08.2019, 17:11)
---------------------------------------------
а вот ещё вопрос - почему у некоторых вестовой для регаты подходит в испанских городах,если прописан дружественный город? и при чем тут сент-джонс в этой строчке ? - if (pchar.questTemp.Regata.CureerCity == "PortRoyal") pchar.questTemp.Regata.CureerCity = "SentJons"; ... заранее спасибо за возможный ответ!)

IsnogoodДата: Пятница, 02.06.2023, 19:21 | Сообщение # 455
Пороховая обезьяна
Группа: Пират
Сообщений: 3
Награды: 0
Репутация: 0
Статус: В открытом море
Всем добра!
Подскажите, как квест к конкретному гг приписать? Какой код должен быть?
Заранее спасибо!

Добавлено (26.06.2023, 20:50)
---------------------------------------------
Подскажите пожалуйста, где именно блокируется выбор национальности гг при создании нового игрового профиля?
Ну, то есть, если мы играем за Питера Блада, то он англичанин, и сменить нацию нельзя, вот этот блок нации мне и нужен...
За ранее спасибо!

Добавлено (29.06.2023, 17:12)
---------------------------------------------
Все разобрался!
Привязать квест к конкретному гг можно через диалог используя:
if (pchar.name == "Имя ГГ") или if (startHeroType == n)
И затем прописать новую ветку диалога, для конкретного гг, которая будет доступна только ему, и через диалог дать квест.

Заблокировать нацию можно по пути: Program\INTERFACE\selectCharacter далее ищем строчку SelectNation, и пишем следующее:

void selectEngland()
{
if (startHeroType == 1) SelectNation(ENGLAND); //Питер Блад
if (startHeroType == 2) SelectNation(SPAIN); //Диего Эспиноза
if (startHeroType > 2) SelectNation(ENGLAND);
}

void selectFrance()
{
if (startHeroType == 1) SelectNation(ENGLAND); //Питер Блад
if (startHeroType == 2) SelectNation(SPAIN); //Диего Эспиноза
if (startHeroType > 2) SelectNation(FRANCE);
}

void selectSpain()
{
if (startHeroType == 1) SelectNation(ENGLAND); //Питер Блад
if (startHeroType == 2) SelectNation(SPAIN); //Диего Эспиноза
if (startHeroType > 2) SelectNation(SPAIN);
}

void selectHolland()
{
if (startHeroType == 1) SelectNation(ENGLAND); //Питер Блад
if (startHeroType == 2) SelectNation(SPAIN); //Диего Эспиноза
if (startHeroType > 2) SelectNation(HOLLAND);
}

void selectPirate()
{
if (startHeroType == 1) SelectNation(ENGLAND); //Питер Блад
if (startHeroType == 2) SelectNation(SPAIN); //Диего Эспиноза
if (startHeroType > 2) SelectNation(PIRATE);
}

Таким образом у нас будет питер англичанен, диего испанец, а всем остальным можно выбрать нацию, только Диего нужно ставить вторым в выборе персонажей после Питера.

Сообщение отредактировал Isnogood - Воскресенье, 04.06.2023, 20:54
Форум » Ад-доны для игр серии Корсары » FAQ по модам - "Сделай мод сам" » Кодинг квестов (Рассмотрим написание квестов)
  • Страница 23 из 23
  • «
  • 1
  • 2
  • 21
  • 22
  • 23
Поиск:

Copyright Pirates-Life.Ru © 2008-2024


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