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

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


Купить игры
 



Чат
 
500


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

Модератор форума: NikK  
Addon Maker. Урок № 2. Добавить НПС-игрока
korsary4Дата: Пятница, 03.06.2011, 19:26 | Сообщение # 81
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В бухте
Quote (Ybrbnf19962009)
новичок в этом деле помогите когда создаешь НПС куда нужно диалог прописывать?

Читай подробнее этот урок, все рассказано.



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
Ybrbnf19962009Дата: Пятница, 03.06.2011, 19:36 | Сообщение # 82
Пороховая обезьяна
Группа: Пират
Сообщений: 8
Награды: 0
Репутация: 0
Статус: В открытом море
Quote (korsary4)
Читай подробнее этот урок, все рассказано.

может я что то не понял korsary4, но я не увидел в этом уроке как привязывать диалог к персонажу диалог то я создал, а что дальше не знаю!
korsary4Дата: Пятница, 03.06.2011, 19:39 | Сообщение # 83
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В бухте
Quote (Ybrbnf19962009)
как привязывать диалог к персонажу диалог то я создал

В коде нпс прописываешь путь к файлу диалога
Code
      ch.Dialog.Filename = "Quest\MainLine\Fergus_Bolter.c";

где Quest\MainLine это папка в котором находится файл, а Fergus_Bolter.c название диалога. Соотвественно меняешь на своё.



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
Ybrbnf19962009Дата: Пятница, 03.06.2011, 20:13 | Сообщение # 84
Пороховая обезьяна
Группа: Пират
Сообщений: 8
Награды: 0
Репутация: 0
Статус: В открытом море
и последний вопрос, как сделать так что бы после диалога можно было переместить персонажей, например в таверну, и там продолжить разговор?
korsary4Дата: Пятница, 03.06.2011, 20:21 | Сообщение # 85
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В бухте
Quote (Ybrbnf19962009)
переместить персонажей, например в таверну

Code
    
sld =  CharacterFromID("Foreteller");  
sld.dialog.currentnode = "Girl_Damyan_dialog_inPortoBello_1";  
ChangeCharacterAddressGroup(sld, "PortoBello_tavern", "goto", "goto3");  


CharacterFromID - указывает ID перса.
sld.dialog.currentnode - устанавливаем новую ветку диалога
ChangeCharacterAddressGroup - перемещаем в локацию в указанные локаторы.

если нужно посадить нпс, тогда не забудь сменить его тип
Code

sld =  CharacterFromID("Foreteller");  
LAi_SetSitType(sld);



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
Ybrbnf19962009Дата: Пятница, 03.06.2011, 22:02 | Сообщение # 86
Пороховая обезьяна
Группа: Пират
Сообщений: 8
Награды: 0
Репутация: 0
Статус: В открытом море
можешь написать пример диалога пожалуйста просто у меня ошибка вылетает потому что я не туда пихаю то что ты выложил заранее спасибо?
korsary4Дата: Пятница, 03.06.2011, 22:05 | Сообщение # 87
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В бухте
Quote (Ybrbnf19962009)
пример диалога

куча диалогов уже есть в папке программ)



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
Ybrbnf19962009Дата: Суббота, 04.06.2011, 11:30 | Сообщение # 88
Пороховая обезьяна
Группа: Пират
Сообщений: 8
Награды: 0
Репутация: 0
Статус: В открытом море
а можно сделать вот так:case "dialog3";
sld = CharacterFromID("John_Silver");
sld.dialog.currentnode = "Girl_Damyan_dialog_inVillemstad_1";
ChangeCharacterAddressGroup(sld, "Villemstad_tavern", "tables", LAi_FindNearestFreeLocator("tables", locx, locy, locz));


Сообщение отредактировал Ybrbnf19962009 - Суббота, 04.06.2011, 11:31
Brayan_RezakДата: Суббота, 04.06.2011, 20:55 | Сообщение # 89
Пороховая обезьяна
Группа: Пират
Сообщений: 9
Награды: 0
Репутация: 0
Статус: В открытом море
Здравствуйте я здесь впервые скажите пожалуйста как сделать релоад вместе с НПС с которым ведешь диалог
например вот:
Code
void ProcessDialogEvent()
{
ref NPChar;
aref Link, NextDiag;

DeleteAttribute(&Dialog,"Links");

makeref(NPChar,CharacterRef);
makearef(Link, Dialog.Links);
makearef(NextDiag, NPChar.Dialog);
switch(Dialog.CurrentNode)
{
// case "First time":
dialog.text = RandPhraseSimple("Здравствуйте, капитан! Вижу, вы здесь недавно. У нас редко встретишь отважного капитана.
Что привело вас в здешние края?",": Вам что-то нужно?";
link.l1 = "Не ваше дело! Идите куда шли, и не мешайтесь!";
link.l1.go = "dialog1";
link.l2 = "Тут я по делам."
link.l2.go = "dialog2";
break;

case "Exit":
NextDirentNode = NextDiag.TempNode;
DialogExit();
break;

case "dialog1":
dialog.text = " Прощайте."
link.l1.go = "Exit"
break;

case "dialog2";
dialog text = "Обсудим это в таверне за кружкой эля?";
link.l1 = " я согласен, пойдёмте.";
link.l1.go = "exit";
LocatorReloadEnterDisable("Villemstad_town", "tavern", false);
//ставим Браян Резак
sld = GetCharacter(NPC_GenerateCharacter("Brayan", "BaynesDaughter", "man", "man2", 10, HOLLAND, -1, false));
sld.name = "Браян";
sld.lastname = "Резак";
sld.dialog.filename = "Quest\Brayan.c";
sld.dialog.currentnode = "Edvbigin";
LAi_SetCitizenType(sld);
LAi_group_MoveCharacter(sld, "ENGLAND_CITIZENS");
ChangeCharacterAddressGroup(sld, "Charles_PirateHouse", "goto", "goto1");
break;

Добавлено (04.06.2011, 20:55)
---------------------------------------------
Заранее спасибо!


Сообщение отредактировал Brayan_Rezak - Суббота, 04.06.2011, 20:54
korsary4Дата: Суббота, 04.06.2011, 21:31 | Сообщение # 90
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В бухте
Brayan_Rezak, лучше в кейсе dialog2 сделай так:

Code
case "dialog2";
dialog text = "Обсудим это в таверне за кружкой эля?";
link.l1 = " я согласен, пойдёмте.";
link.l1.go = "dialog3";
break;  

case "dialog3";
NextDirentNode = NextDiag.TempNode;
DialogExit();  
LocatorReloadEnterDisable("Villemstad_town", "tavern", false);
//ставим Браян Резак
sld = GetCharacter(NPC_GenerateCharacter("Brayan", "BaynesDaughter", "man", "man2", 10, HOLLAND, -1, false));
sld.name = "Браян";
sld.lastname = "Резак";
sld.dialog.filename = "Quest\Brayan.c";
sld.dialog.currentnode = "Edvbigin";
LAi_SetCitizenType(sld);
LAi_group_MoveCharacter(sld, "ENGLAND_CITIZENS");
ChangeCharacterAddressGroup(sld, "Charles_PirateHouse", "goto", "goto1");  
break;


Quote (Brayan_Rezak)
релоад вместе с НПС с которым ведешь диалог

Для перемещения ГГ используй вот это:
Code
DoReloadCharacterToLocation("SentJons_town","reload","reload1");

локацию и локаторы подправь на нужные тебе.
Пропиши в dialog3 и все должно работать как ты хочешь- после разговора переместится НПС и ГГ)



Quote (Ybrbnf19962009)
а можно сделать вот так:
case "dialog3";
sld = CharacterFromID("John_Silver");
sld.dialog.currentnode = "Girl_Damyan_dialog_inVillemstad_1";
ChangeCharacterAddressGroup(sld, "Villemstad_tavern", "tables", LAi_FindNearestFreeLocator("tables", locx, locy, locz));

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



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
Brayan_RezakДата: Воскресенье, 05.06.2011, 12:06 | Сообщение # 91
Пороховая обезьяна
Группа: Пират
Сообщений: 9
Награды: 0
Репутация: 0
Статус: В открытом море
Получается что не нужно после РЕЛОАДА прописывать в диалоге3 прописывать это:
ChangeCharacterAddressGroup(sld, "Charles_PirateHouse", "goto", "goto1");
korsary4Дата: Понедельник, 06.06.2011, 08:00 | Сообщение # 92
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В бухте
Quote (Brayan_Rezak)
ChangeCharacterAddressGroup(sld, "Charles_PirateHouse", "goto", "goto1");

Так ты перемещаешь НПС, записанного в переменную sld.
А вот это, перемещает ГГ.
Code
DoReloadCharacterToLocation("SentJons_town","reload","reload1");



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
The_JokerДата: Понедельник, 06.06.2011, 10:37 | Сообщение # 93
Профессор-Икс
Группа: Корсар
Сообщений: 1532
Награды: 51
Репутация: 177
Статус: В открытом море
Ybrbnf19962009, естественно что у тебя не запуститься диалог.
Code
case "dialog3";
- после кайса надо ставить двоеточие а не точка с запятой.




korsary4Дата: Понедельник, 06.06.2011, 13:28 | Сообщение # 94
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В бухте
Quote (Aragon)
после кайса надо ставить двоеточие а не точка с запятой.

а я и не заметил)) он же сначала спросил про релоад ГГ) а потом использовал его диалог))



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
Brayan_RezakДата: Вторник, 07.06.2011, 19:41 | Сообщение # 95
Пороховая обезьяна
Группа: Пират
Сообщений: 9
Награды: 0
Репутация: 0
Статус: В открытом море
у меня опять что то не так добавил НПС написал к нему диалог а его нигде в городе нет
The_JokerДата: Среда, 08.06.2011, 00:19 | Сообщение # 96
Профессор-Икс
Группа: Корсар
Сообщений: 1532
Награды: 51
Репутация: 177
Статус: В открытом море
Brayan_Rezak, значит не правильно НПС прописал.



Vitek5Дата: Среда, 08.06.2011, 12:44 | Сообщение # 97
Матрос
Группа: Корсар
Сообщений: 58
Награды: 3
Репутация: 4
Статус: В открытом море
Brayan_Rezak,
Напиши сдесь код своего нпк, помогу...
Brayan_RezakДата: Среда, 08.06.2011, 16:04 | Сообщение # 98
Пороховая обезьяна
Группа: Пират
Сообщений: 9
Награды: 0
Репутация: 0
Статус: В открытом море
makeref(ch,Characters[n]); // Билли Бонс
ch.name = "Билли";
ch.lastname = "Бонс";
ch.id = "Billy_Bons";
ch.model = "officer_11";
ch.model.animation = "man2";
ch.sex = "man";
ch.location = "Villemstad_town";
ch.location.group = "stay";
ch.location.locator = "goto";
ch.Dialog.Filename = "Quest\Billy.c";
GiveItem2Character(ch, "blade3");
ch.equip.blade = "blade3";
ch.nation = HOLLAND;
ch.rank = 20;
ch.reputation = "45";
SetSelfSkill(ch, 10, 10, 10, 20, 20);
SetShipSkill(ch, 20, 90, 10, 10, 10, 20, 10, 10, 50);
LAi_NoRebirthDisable(ch); // воскресть при убиении
LAi_SetCitizenType(ch); //Ходит как горожанин
LAi_SetLoginTime(ch, 0.0, 24.0);
LAi_SetHP(ch, 200.0, 200.0);
LAi_SetImmortal(ch, true);
LAi_group_MoveCharacter(ch, "HOLLAND_CITIZENS");
n = n + 1;
return n;
}
korsary4Дата: Среда, 08.06.2011, 16:14 | Сообщение # 99
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В бухте
Quote (Brayan_Rezak)
ch.location.group = "stay";
ch.location.locator = "goto";

Сомневаюсь, что такой локатор существует в городе....Пропиши нормальный, который там есть.

Quote (Brayan_Rezak)
ch.model.animation = "man2";

У officer_11 обычная man-анимация. Эта строка не нужна.

Quote (Brayan_Rezak)
return n;
}

Надеюсь, это просто конец файла, а не просто так ты после кода нпс вписал)))



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
Brayan_RezakДата: Среда, 08.06.2011, 16:47 | Сообщение # 100
Пороховая обезьяна
Группа: Пират
Сообщений: 9
Награды: 0
Репутация: 0
Статус: В открытом море
Я просто не пойму где находится файл для включения бета-теста
Поиск:

Copyright Pirates-Life.Ru © 2008-2024


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