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

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


Купить игры
 



Чат
 
500


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

  • Страница 1 из 14
  • 1
  • 2
  • 3
  • 13
  • 14
  • »
Модератор форума: NikK  
Addon Maker. Урок № 2. Добавить НПС-игрока
korsary4Дата: Воскресенье, 14.03.2010, 00:14 | Сообщение # 1
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
Addon Maker. Урок № 2. Добавить НПС-игрока

Сегодня мы научимся добавлять нпс-игрока в игру Корсары.

Справка:

Требуется:
1) Блокнот ( любой, с подсветкой синтаксиса, могу посоветовать Notepad++, т.к. в нем сам работаю);

2) GMViewer - программа для просмотра 3d моделей игры, файлов с расширением ".GM" и конвертирования их в формат ".OBJ", для дальнейшего редактирования в программах 3dsMax и Maya. Предвидя некоторые вопросы, дам ответы сразу. Сама программа не умеет редактировать файлы. На некоторых моделях видео-карт серии Radeon могут не отображаться текстуры.

3) Проигрыватель wav формата.

Ход работы:

Сегодня мы задействуем PROGRAM\characters (хранятся скрипты) и RESOURCE\MODELS\Characters (находятся модели персонажей)

В каталоге PROGRAM\characters\init хранятся файлы, где прописаны нпс-игроки. Добавлять можно в любой, большой разницы нет. Главное чтобы знали, где искать потом его)

Разберемся на конкретном примере,

Code
         makeref(ch,Characters[n]);  // Фергус Болтер
      ch.name  = "Фергус";
      ch.lastname = "Болтер";
      ch.id  = "Fergus_Bolter";
      ch.model    = "Resc_9";
      ch.model.animation = "man";
      ch.sex = "man";
      ch.location    = "none";
      ch.location.group = "none";
      ch.location.locator = "none";
      ch.Dialog.Filename = "Quest\MainLine\Fergus_Bolter.c";
      GiveItem2Character(ch, GUN_COMMON);
      ch.equip.gun = GUN_COMMON;
      GiveItem2Character(ch, "blade2");
      ch.equip.blade = "blade2";
      ch.nation = ENGLAND;
          ch.rank  = 45;
      ch.reputation = "15";
          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);
      ch.greeting = "GrFisherman";
      LAi_group_MoveCharacter(ch, "ENGLAND_CITIZENS");      
           
      n = n+1;      

ch.name – имя
ch.lastname – фамилия
ch.id - уникальный id персонажа
ch.model – название модели, модели хранятся в каталоге RESOURCE\MODELS\Characters, для просмотра используют программу GM Viewer .

Скриншот программы GMViewer. Пояснения в работе с программой GM Viewer.

ch.model.animation – анимация нпс, может быть: man, woman, towngirl, man2 и т.д.
ch.sex – пол героя, man или woman
ch.location – id локации, где будет находится НПС.
ch.location.group - групп локаторов немного, goto, sit, rld, Merchant, barmen, soldiers, patrol, quest и другие…
ch.location.locator – локатор, чаще всего это имя группы локатора и цифра, например , goto2, sit5 и т.п.

Как включить видимость локаторов?

ch.Dialog.Filename - путь к файлу диалога персонажа

GiveItem2Character(ch, GUN_COMMON); - дать пистолет персонажу
ch.equip.gun = GUN_COMMON; - надеть пистолет
GiveItem2Character(ch, "blade2"); дать саблю персонажу
ch.equip.blade = "blade2"; - надеть саблю

ch.nation – нация НПС
ch.rank – ранг
ch.reputation – репутация
SetSelfSkill(ch, 10, 10, 10, 20, 20); - расставить личные скиллы, идут по порядку как в меню F2
SetShipSkill(ch, 20, 90, 10, 10, 10, 20, 10, 10, 50); - расставить корабельные скиллы, идут по порядку как в меню F2
LAi_NoRebirthDisable(ch); - воскресить при убиении
LAi_SetCitizenType(ch); - анимация передвижений НПС
----------------------------
Примеры других видов типов НПС


----------------------------------------

LAi_SetLoginTime(ch, 0.0, 24.0); - время нахождения нпс, в данном случаи НПС будет весь день находится.
LAi_SetHP(ch, 200.0, 200.0); - жизнь(HP) НПС
LAi_SetImmortal(ch, true); - бессмертие(true) , false – выключить, если строчку не писать, то false

ch.greeting = "Gr_Fisherman"; - озвучка нпс прописывать в файле RESOURCE\INI\aliases\russian\Greetings_alias.ini

-------------------------------
О файле Greetings_alias.ini


-------------------

LAi_group_MoveCharacter(ch, "ENGLAND_CITIZENS"); - принадлежность группе

n = n+1; - обязательно в конце описания НПС.

---------------------------------------------------------------------------------

Итак, урок окончен. Вы разобрались, как добавить НПС-игрока в игру. В дальнейших уроках научимся писать для него диалоги, добавлять локации(на основе существующих моделей) и многое другое.

С вами был korsar, специально для сайта korsary4.ucoz.ru.
Семь футов под килем, дорогие пираты!

Автор статьи: korsary4


Прикрепления: 7750523.jpg (273.5 Kb) · 8817414.jpg (369.9 Kb) · 7038720.jpg (177.7 Kb) · 7382351.jpg (114.6 Kb) · 3236751.jpg (234.6 Kb)



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
Jack-sparrowДата: Воскресенье, 14.03.2010, 18:26 | Сообщение # 2
Мичман
Группа: Корсар
Сообщений: 168
Награды: 4
Репутация: 10
Статус: В открытом море
Интересно
dedДата: Понедельник, 15.03.2010, 12:38 | Сообщение # 3
Лейтенант
Группа: Пират
Сообщений: 291
Награды: 5
Репутация: 2
Статус: В открытом море
спосибо! я начал чтото понимать, но мне до полного понимания далеко

Добавлено (15.03.2010, 12:38)
---------------------------------------------
помогите с папкой програм! скажите что надо сделать шобы она появилась


DufreinДата: Понедельник, 15.03.2010, 15:12 | Сообщение # 4
Капитан II ранга
Группа: Корсар
Сообщений: 436
Награды: 14
Репутация: 93
Статус: В открытом море
У нас на форуме дети чтоли?
Посмотри внимательнее форум, вдруг найдёшь тему.
Кряк качай



dedДата: Понедельник, 15.03.2010, 15:19 | Сообщение # 5
Лейтенант
Группа: Пират
Сообщений: 291
Награды: 5
Репутация: 2
Статус: В открытом море
Corss, блин у меня нет медленный! мне долго искать

DufreinДата: Понедельник, 15.03.2010, 15:20 | Сообщение # 6
Капитан II ранга
Группа: Корсар
Сообщений: 436
Награды: 14
Репутация: 93
Статус: В открытом море
Кряк качай


dedДата: Понедельник, 15.03.2010, 15:21 | Сообщение # 7
Лейтенант
Группа: Пират
Сообщений: 291
Награды: 5
Репутация: 2
Статус: В открытом море
Corss, хм попытаюсь

dedДата: Понедельник, 15.03.2010, 15:28 | Сообщение # 8
Лейтенант
Группа: Пират
Сообщений: 291
Награды: 5
Репутация: 2
Статус: В открытом море
korsary4, мне надо на вл или там тоже самое

korsary4Дата: Понедельник, 15.03.2010, 15:37 | Сообщение # 9
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
Quote (ded)
korsary4, мне надо на вл или там тоже самое

в КВЛ никак не открыть папку програм!



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

Добавлено (27.03.2010, 19:30)
---------------------------------------------
а как разокрасить героя? или я не чего не понял


korsary4Дата: Воскресенье, 28.03.2010, 13:00 | Сообщение # 11
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
Quote (ded)
а как разокрасить героя?

вот урок по созданию новых текстур, если ты про это говоришь.



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
misha95Дата: Вторник, 30.03.2010, 12:04 | Сообщение # 12
Пороховая обезьяна
Группа: Пират
Сообщений: 10
Награды: 0
Репутация: 0
Статус: В открытом море
Возможно глупый вопрос, но скажите пожалуйста, где найти папку PROGRAM???
// нашел ответ, правда где скачать NoDVD и патч 1.2 незнаю. подскажите, кто знает.


©

Сообщение отредактировал misha95 - Вторник, 30.03.2010, 14:52
dedДата: Вторник, 30.03.2010, 12:27 | Сообщение # 13
Лейтенант
Группа: Пират
Сообщений: 291
Награды: 5
Репутация: 2
Статус: В открытом море
misha95, поищи на сайте там гдето корсарыч давал ссылку

korsary4Дата: Вторник, 30.03.2010, 15:26 | Сообщение # 14
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
misha95, вот http://korsary4.ucoz.ru/Addon/Kryak_dlya_1.2.rar


Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
misha95Дата: Вторник, 30.03.2010, 19:53 | Сообщение # 15
Пороховая обезьяна
Группа: Пират
Сообщений: 10
Награды: 0
Репутация: 0
Статус: В открытом море
а где сам патч 1.2 можно скачать? ну и 1.1 раз он тоже нужен, тоже.

Добавлено (30.03.2010, 19:53)
---------------------------------------------
Помогите, пожалуйста, сделать НПЦ, который, при разговоре , допустим дал бы какой-нибудь предмет. Например денег.
На взгляд просто, но , лично мне , трудно было понять по этим урокам.
Расскажите, поподробнее.
С Уважением, Заранее Спасибо.


©

Сообщение отредактировал misha95 - Вторник, 30.03.2010, 17:51
DufreinДата: Вторник, 30.03.2010, 20:36 | Сообщение # 16
Капитан II ранга
Группа: Корсар
Сообщений: 436
Награды: 14
Репутация: 93
Статус: В открытом море
Quote (misha95)
а где сам патч 1.2 можно скачать

Google, или же stopgame.ru (всегда оттуда качаю для любой игры, там всё есть, и патчи, и nocd и т.д.)



korsary4Дата: Среда, 31.03.2010, 13:06 | Сообщение # 17
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
Quote (misha95)
лично мне , трудно было понять по этим урокам.

если ты даже по этим урокам ничего не понял, то можешь завязывать с программированием корсаров jokingly

Quote (misha95)
Помогите, пожалуйста, сделать НПЦ, который, при разговоре , допустим дал бы какой-нибудь предмет. Например денег.

Когда прописываешь НПС в строке

Code
ch.Dialog.Filename = "Quest\MainLine\Fergus_Bolter.c";

где Quest\MainLine\Fergus_Bolter.c путь к файлу диалога нпс в папке PROGRAM\dialogs\russian

содержание файла диалога

Code
void ProcessDialogEvent()
{
   ref NPChar, sld;
   aref Link, NextDiag;

   DeleteAttribute(&Dialog,"Links");

   makeref(NPChar,CharacterRef);
   makearef(Link, Dialog.Links);
   makearef(NextDiag, NPChar.Dialog);

   switch(Dialog.CurrentNode)
   {
    case "Exit":
     NextDiag.CurrentNode = NextDiag.TempNode;
     DialogExit();
    break;

    case "First time":
     dialog.text = ""Здравствуй.";     
     link.l1 = "Здравствуй, мое имя "+ GetFullName(Pchar)+". Я капитан судна " + PChar.Ship.Name + ".";
     link.l1.go = "dialog1";
    break;

      
    case "dialog1":
               AddMoneyToCharacter(pchar, +2000);
     dialog.text = "Я хотел бы дать тебе денег!";     
     link.l1 = "Сочту за честь, "+ GetFullName(NPchar)+".";
     link.l1.go = "exit";
     link.l2 = "Сочту за честь, "+ GetFullName(NPchar)+".";
     link.l2.go = "exit";
    break;   

   }
}

пояснения:
AddMoneyToCharacter(pchar, +2000); - добавит ГГ 2000 золотых

кейс First time - с него всегда начинается диалог нпс.
кейс Exit - всегда присутствует, это выход из диалога.

dialog.text - слова нпс

link.lN - реплика ГГ, где N- порядковый номер.
link.lN.go - на какой кейс нужно перейти после выбора данной реплики.

количество реплик, длина разговора неограниченна, просто добавлять нужно по аналогии кейсы



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
misha95Дата: Среда, 31.03.2010, 14:47 | Сообщение # 18
Пороховая обезьяна
Группа: Пират
Сообщений: 10
Награды: 0
Репутация: 0
Статус: В открытом море
korsary4, спасибо.

Ещё помогите пожалуйста исправить ошибку при разговоре с нпц "Не удается открыть файл диалога FindItemQuest_dialog.c, назначенный этому персонажу".
Вроде делал так, как и в уроке.
В файл "PROGRAM\characters\init\LaVega.c" добавил код :

Code

  makeref(ch,Characters[n]);  // Фергус Болтер  
       ch.name  = "Fergus";  
       ch.lastname = "Bolter";  
       ch.id  = "Fergus_Bolter";  
       ch.model    = "Resc_9";  
       ch.model.animation = "man";  
       ch.sex = "man";
    ch.City = "LaVega";    
       ch.location    = "LaVega_Store";  
       ch.location.group = "quest";  
       ch.location.locator = "stay";  
       ch.Dialog.Filename = "Quest\MainLine\Fergus_Bolter.c";  
       GiveItem2Character(ch, GUN_COMMON);  
       ch.equip.gun = GUN_COMMON;  
       GiveItem2Character(ch, "blade2");  
       ch.equip.blade = "blade2";  
       ch.nation = ENGLAND;  
           ch.rank  = 45;  
       ch.reputation = "15";  
           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);  
       ch.greeting = "GrFisherman";  
       LAi_group_MoveCharacter(ch, "PIRATE_CITIZENS");       
             
       n = n+1;   

Файл диалога, как korsary4 и писал, добавил. ошибка не исчезает.
вообще что это за файл "FindItemQuest_dialog.c" ? где он прописан для моего нпц? >.<


©

Сообщение отредактировал misha95 - Среда, 31.03.2010, 15:15
korsary4Дата: Среда, 31.03.2010, 15:37 | Сообщение # 19
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
Quote (misha95)
Файл диалога, как korsary4 и писал, добавил

какой путь диалога у твоего нпс указан? ( ch.Dialog.Filename)
Quest\MainLine\Fergus_Bolter.c?
Он существует, этот файл?



Единственное, что можно сказать об удаче с уверенностью — она изменит.
--------
misha95Дата: Среда, 31.03.2010, 15:51 | Сообщение # 20
Пороховая обезьяна
Группа: Пират
Сообщений: 10
Награды: 0
Репутация: 0
Статус: В открытом море
korsary4, да - "ch.Dialog.Filename = "Quest\MainLine\Fergus_Bolter.c"; "
он лежит в "PROGRAM\dialogs\russian\Fergus_Bolter.c".
Может быть я криво добавил нпц...потому что :
Code

        ch.name  = "Fergus";   
        ch.lastname = "Bolter";   

а у того, к кому я подожу и выводится ошибка, имя - Жиль Веруаенн. хм


©
  • Страница 1 из 14
  • 1
  • 2
  • 3
  • 13
  • 14
  • »
Поиск:

Copyright Pirates-Life.Ru © 2008-2024


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