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

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


Купить игры
 



Чат
 
500


Статистика
 
Пользователи, посетившие сайт за текущий день:
Andrey__3010, Kriogener
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

  • Страница 1 из 23
  • 1
  • 2
  • 3
  • 22
  • 23
  • »
Модератор форума: NikK  
Кодинг квестов
korsary4Дата: Суббота, 05.12.2009, 21:21 | Сообщение # 1
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
Урок кодинга квестов для ГПК ( by Korsar)

Квесты можно прописывать или чисто через диалоги или в файле. Я лично предпочитаю большую часть в отдельном файле, в диалоге только по большое необходимости. Все квесты лежат в файле Quest/quest_reaction.c

Значит открываем файл quest_reaction.c листаем в самый конец. там сначала делаем комментарий:
////////////////////////////////////////////////////////////////
///////////////Квест такой-то делал тот-то//////////////////////
////////////////////////////////////////////////////////////////
А дальше пишем уже знакомое всем

Code
Case“имя кейса”:
Собственно тело кейса……
Break;

Все квесты пишутся через эти самые кейсы.
Рассмотрим какой-нибудь квест, например, Квест Адмирал Кристофер, из нашего аддона Приключения Корсаров.

Итак, квест начинается после разговора с Кристофером
У него в диалоге прописал вызов определенного кейса файла quest_reaction.c

Code

NextDiag.TempNode = "AdmiralLineKristofer_1_cont";
AddDialogExitQuest("AdmiralLineKristofer_1");
TakeItemFromCharacter(NPChar, "letter_Kristofer1");
GiveItem2Character(pchar, "letter_Kristofer1");        
dialog.text = "Будет у меня к тебе дельце, передать письмо нужно в Порт-Рояль. Его зовут Кевин Болтер, скажи, что ты от меня. Как в старые добрые вренена,  "+ GetFullName(Pchar)+"?";
link.l1 = "Как в старые добрые вренена. Будет сделано, "+ GetFullName(NPchar)+".";
link.l1.go = "exit";

AddDialogExitQuest("AdmiralLineKristofer_1"); - данная фукция вызывает срабатывание кейса case "AdmiralLineKristofer_1".

Собственно сам кейс:

Code
case "AdmiralLineKristofer_1":
// запись в журнал
SetQuestHeader("AdmiralLineKristofer");
AddQuestRecord("AdmiralLineKristofer", "1");
       
ChangeCharacterAddressGroup(characterFromID("Kevin_Bolter"), "PortRoyal_town", "goto", LAi_FindNearestFreeLocator("goto", locx, locy, locz));    
       
Characters[GetCharacterIndex("Kevin_Bolter")].Dialog.CurrentNode = "AdmiralLineKristofer_1";
break;

Итак, сначала нужна запись в журнал о квесте

SetQuestHeader("AdmiralLineKristofer");
- объявили заголовок квест
AddQuestRecord("AdmiralLineKristofer", "1"); - добавили первую запись
-------------------------------------

Судовой журнал

ChangeCharacterAddressGroup(characterFromID("Kevin_Bolter"), "PortRoyal_town", "goto", LAi_FindNearestFreeLocator("goto", locx, locy, locz));
данной фукцией ставим нужного нам перса в Порт Рояле.

LAi_FindNearestFreeLocator("goto", locx, locy, locz) - находит свободный локатор в заданной группе локаторов, в данном случае goto.

Characters[GetCharacterIndex("Kevin_Bolter")].Dialog.CurrentNode = "AdmiralLineKristofer_1"; - ставим определенную ветку диалога.
Теперь все зависит от выбранной ветки в диалоге с персом Kevin_Bolter.
Мы разобрали только первый кейс квеста. Идем дальше...

Скин из мастерской))

ПРОДОЛЖЕНИЕ ПОЗЖЕ


Прикрепления: 0386557.jpg (602.7 Kb)



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
Jack-sparrowДата: Пятница, 05.02.2010, 17:14 | Сообщение # 2
Мичман
Группа: Корсар
Сообщений: 168
Награды: 4
Репутация: 10
Статус: В открытом море
где этот файл quest_reaction.c?
korsary4Дата: Пятница, 05.02.2010, 19:27 | Сообщение # 3
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
Quote (Morgan0406)
где этот файл quest_reaction.c

Корсары Город Потерянных Кораблей\PROGRAM\quests



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
Jack-sparrowДата: Воскресенье, 07.02.2010, 12:53 | Сообщение # 4
Мичман
Группа: Корсар
Сообщений: 168
Награды: 4
Репутация: 10
Статус: В открытом море
Нашёл, а как сделать так что бы твой закзчик квеста предложил денег, а потом когда ты достанешь то что он просил он забирает это но толь ко пытается убить меня. И как на его труп добавить вещи.
korsary4Дата: Воскресенье, 07.02.2010, 19:01 | Сообщение # 5
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
Morgan0406,

нападение НПС на ГГ:

Code
//Делаем пирата воином и помещаем в группу
sld =  CharacterFromID("Pirate_01");
LAi_SetWarriorType(sld);
LAi_group_MoveCharacter(sld, "Pirate5555");  

// Бой между ГГ и Пиратами
LAi_group_FightGroups("Pirate5555", LAI_GROUP_PLAYER, true);  
LAi_group_SetCheck("Pirate5555", "Quest_1");    

Quest_1 - какой квест дальше запустится, после убийства.
Pirate5555 - id группы куда НПС присвоили
Pirate_01 - id НПС

Quote (Morgan0406)
забирает это

Code
TakeItemFromCharacter(pchar, "chest_Kristofer");

- функция забирает предмет, chest_Kristofer - id предмета,изменить.

Quote (Morgan0406)
И как на его труп добавить вещи.

Когда описывать НПС, не забыть поставить sld.SaveItemsForDead = true;(сохранять на трупе вещи)

Code
sld = GetCharacter(NPC_GenerateCharacter("Pirate_01", "Pirate_9", "man", "man", 2, PIRATE, 1, true));
sld.name  = "Робин";
sld.lastname = "Боллард";
sld.Dialog.Filename = "Quest\SearchFisherman\Pirate_SearchFisherman_01.c";
sld.SaveItemsForDead = true; // сохранять на трупе вещи
sld.DontClearDead = true;
//  FantomMakeCoolFighter(sld, 40, 100, 70, BLADE_LONG, "pistol3", 110);
GiveItem2Character( sld, GUN_COMMON);
sld.equip.gun = GUN_COMMON;
GiveItem2Character(sld, BLADE_LONG);
sld.equip.blade = BLADE_LONG;
sld.location    = "Shore38";    
sld.location.group = "goto";
sld.location.locator = "goto7";   
sld.rank  = 4;    

GiveItem2Character(sld, "id_предмета"); - id_предмета исправить на необходимый и добавить строку в верхнее описание нпс. После смерти все вещи, которые ему положили, останутся на трупе.



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
SkatДата: Воскресенье, 07.02.2010, 21:58 | Сообщение # 6
Мичман
Группа: Пират
Сообщений: 197
Награды: 8
Репутация: 10
Статус: В открытом море
а почему сдесь одно а в учебнике другое
Jack-sparrowДата: Понедельник, 08.02.2010, 17:41 | Сообщение # 7
Мичман
Группа: Корсар
Сообщений: 168
Награды: 4
Репутация: 10
Статус: В открытом море
ясно. а можно сделать нацию
korsary4Дата: Понедельник, 08.02.2010, 17:43 | Сообщение # 8
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
Quote (Skat)
а почему сдесь одно а в учебнике другое

ты насчет чего?

Quote (Morgan0406)
а можно сделать нацию

Можно, но сложно. Да и проблем с новой нацией много будет.



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
SkatДата: Понедельник, 08.02.2010, 20:02 | Сообщение # 9
Мичман
Группа: Пират
Сообщений: 197
Награды: 8
Репутация: 10
Статус: В открытом море
а я понл тут квест а в учебнике как писать диалог
Jack-sparrowДата: Понедельник, 08.02.2010, 22:31 | Сообщение # 10
Мичман
Группа: Корсар
Сообщений: 168
Награды: 4
Репутация: 10
Статус: В открытом море
но можешь помочь мне с нацией флаги я уже сделал.
korsary4Дата: Воскресенье, 21.02.2010, 19:20 | Сообщение # 11
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
Quote (Morgan0406)
но можешь помочь мне с нацией флаги я уже сделал.

не могу, я не разбирался точно, где там все это прописывать.



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
Jack-sparrowДата: Понедельник, 22.02.2010, 09:56 | Сообщение # 12
Мичман
Группа: Корсар
Сообщений: 168
Награды: 4
Репутация: 10
Статус: В открытом море
А жаль, когда продолжение урока будет
korsary4Дата: Понедельник, 22.02.2010, 14:27 | Сообщение # 13
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
Morgan0406, не скоро. сейчас кодом квестов не для уроков занят, аддоном занимаемся.


Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
AntarktidaДата: Суббота, 13.03.2010, 09:49 | Сообщение # 14
Пороховая обезьяна
Группа: Пират
Сообщений: 6
Награды: 0
Репутация: 0
Статус: В открытом море
Привет! Занимаюсь собственным преобразованием Корсаров 3, Как сделаю выложу...(уже могу сказать что круто)..но я не могу никак понять систему действий! А именно: мне нужно, чтобы после диалога с определённым человеком, у главного героя появлялся определённый предмет. Т.е. поговорил...а у тя бах...шпага в инвентаре! Это ну прямо очень нужно! Помогите пожалуйста...это сократит время создания патча! где какую строчку писать и что в этой строке?! Я уже многое перепробовал нашёл в дебрях Programm файл в котором шаблон "Взять предмет" "Отдать предмет" но не разобрался что и куда вписывать?!
korsary4Дата: Суббота, 13.03.2010, 09:59 | Сообщение # 15
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
Antarktida, вот эта строка GiveItem2Character(pchar, "id item"); вместо id item - уникальный id предмета, будь то blade25 или какой-то другой предмет.
А забрать предмет у герой вот так - TakeItemFromCharacter(pchar, "id item");, также вместо id item - уникальный id предмета



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
AntarktidaДата: Суббота, 13.03.2010, 16:29 | Сообщение # 16
Пороховая обезьяна
Группа: Пират
Сообщений: 6
Награды: 0
Репутация: 0
Статус: В открытом море
Спасибо! Я уже разобрался! Главное не эти строки...так как они на каждом шагу встречаются, а то куда ты их напишешь! Следовательно для того, что бы в начале квеста корсаров 3, мужик с картой отдал вам какой либо предмет мы идём в папку: C:\Program Files\Age of Pirates - Caribbean Tales\Program\quests открываем файл:story_line ищем там строку Case....начало квеста.... и ниже будет строка GiveItem2Character(pchar, "...map") сразу под ней пишем такуюже но с другим ID... ну вот! Додумался сам но всё равно огромное спасибо! Обещаю что патчик будет ну очень забавным и классным! Чуток доработаю и выложу!
Jack-sparrowДата: Воскресенье, 14.03.2010, 18:26 | Сообщение # 17
Мичман
Группа: Корсар
Сообщений: 168
Награды: 4
Репутация: 10
Статус: В открытом море
Молодец
dedДата: Среда, 31.03.2010, 14:19 | Сообщение # 18
Лейтенант
Группа: Пират
Сообщений: 291
Награды: 5
Репутация: 2
Статус: В открытом море
а у меня только файл quests_reaction.c или они бывают с разными названиячми

korsary4Дата: Среда, 31.03.2010, 15:33 | Сообщение # 19
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
ded, в разных корсарах есть еще файлы, где квесты прописывают, помимо quests_reaction.c. например, story_line.c и другие.


Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
dedДата: Среда, 31.03.2010, 18:25 | Сообщение # 20
Лейтенант
Группа: Пират
Сообщений: 291
Награды: 5
Репутация: 2
Статус: В открытом море
korsary4, а понятно спс

  • Страница 1 из 23
  • 1
  • 2
  • 3
  • 22
  • 23
  • »
Поиск:

Copyright Pirates-Life.Ru © 2008-2024


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