+ RPG Russia – Русский форум по РПГ / RPG играм » Форум » Готика и ее модификации » Готика - Модостроение » Скриптинг modostroy -
|- Создание нового таланта
Чтобы иметь возможность размещать сообщения, а также воспользоваться расширенными функциями форума, войдите под своим аккаунтом или зарегистрируйтесь!

* Последнее сообщение на форуме

Опубликовано: Vidockiy, Сегодня в 15:02:20
Ответов: 6865

Просмотров: 202990

Репутация
Пользователь:  
Что вы думаете об этом сообщении?
Одобряю
Не одобряю  

На сколько прибавить/отнять
Комментарий к сообщению:

Автор Тема:  modostroy - Создание нового таланта  (Прочитано 1923 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Как создать новый талант такого же типа как взлом (т.е. ему можно обучится и все),или как создать абсолютно новый перк (как сила,прокачиваемая) и реализуемо это вообще,просто в моде "Возвращение" был новый талант,вот и я хочу тоже такой сделать.

 

Пользователь VIP

    • Оффлайн
    • Мужской
    • Modostroy
Декомпилируй датник Возвращения, и через поиск посмотри как реализовано. Тебе нужен Gothic.Dat и Menu.Dat.

Про Gothic.dat уже поискал,все таланты лежат в constants.d,но вот про menu.dat я вообще не думал ._.
Вроде вотconst int NPC_TALENT_UNKNOWN            = 0;    //Отсутствует
const int NPC_TALENT_1H                 = 1;    //Владение одноручным оружием
const int NPC_TALENT_2H                 = 2;    //Владение двуручным оружием
const int NPC_TALENT_BOW                = 3;    //Владение луком
const int NPC_TALENT_CROSSBOW           = 4;    //Владение арбалетом
const int NPC_TALENT_PICKLOCK           = 5;    //Умение вскрывать замки
//const int NPC_TALENT_PICKPOCKET       = 6;    //Карманная кража (из Готики 1, не используется)
const int NPC_TALENT_MAGE               = 7;    //Маг
const int NPC_TALENT_SNEAK              = 8;    //Подкрадывание
const int NPC_TALENT_REGENERATE         = 9;    //Регенерация
const int NPC_TALENT_FIREMASTER         = 10;   //Владение огнем
const int NPC_TALENT_ACROBAT            = 11;   //Акробатика
const int NPC_TALENT_PICKPOCKET         = 12;   //Карманная кража
const int NPC_TALENT_SMITH              = 13;   //Кузнечное дело
const int NPC_TALENT_RUNES              = 14;   //Изготовление рун
const int NPC_TALENT_ALCHEMY            = 15;   //Алхимия
const int NPC_TALENT_TAKEANIMALTROPHY   = 16;   //Разделка животных
const int NPC_TALENT_FOREIGNLANGUAGE    = 17;   //Изучение иностранных языков
const int NPC_TALENT_WISPDETECTOR       = 18;   //Поиск предметов
const int NPC_TALENT_C                  = 19;   //(пусто)
const int NPC_TALENT_D                  = 20;   //(пусто)
const int NPC_TALENT_E                  = 21;   //(пусто)

const int NPC_TALENT_MAX                = 22;   //Макс. число талантов
Вставлять сюда свой талант в constants.d,но что это за цифры рядом с талантами? Я так понял это их ID,но чтобы добавить новый талант нужно увеличить NPC_TALENT_MAX наверно.
UPD:
Так и есть.3 неиспользуемых таланта были задействованы в "Возвращении",и в B_story есть b_***.d файл,который отвечает за функцию изучения перка,в свою очередь которая вызывается у НПС в диалоге.
Последний раз редактировалось: Defman; 29 мая 2013

Пользователь VIP

    • Оффлайн
    • Мужской
    • Modostroy
про menu.dat я вообще не думал
Читать далее...
А стоит думать  :) Ведь, именно через Меню.дат добавляют разные категории и прочие фишки в статус игрока, и в саму менюшку в игре.

Чтож,буду знать.А по теме - разобрался.Спасибо за верное направление в этих датниках.

Теперь осталось только,чтобы умный человек проверил правильность всех скриптов:
в constants.d прописал
const int NPC_TALENT_INTELEKT = 19;потом создал в папке Story\B_story файл b_teachPlayerTalentIntelekt с таким кодом:
func int B_TeachIntelektTalent(var C_Npc slf,var C_Npc oth,var int talent)
{
var int kosten;
kosten = B_GetLearnCostTalent(oth,talent,1);
if((talent != NPC_TALENT_INTELEKT))
{
Print("*** ERROR: Wrong Parameter ***");
return FALSE;
};
if(oth.lp < kosten)
{
PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);
B_Say(slf,oth,"$NOLEARNNOPOINTS");
return FALSE;
};
oth.lp = oth.lp - kosten;
if(talent == NPC_TALENT_INTELEKT)
{
Npc_SetTalentSkill(oth,NPC_TALENT_INTELEKT,1);
PrintScreen(PRINT_LearnPicklock,-1,-1,FONT_Screen,2);
return TRUE;
};
И добавил отображение навыка в menu.dat\Menu_menu_status.d.Все ли тут правильно?
Окей,проверять буду сам,дубляции постов буду избегать :3
Последний раз редактировалось: Defman; 29 мая 2013

Пользователь VIP

    • Оффлайн
    • Мужской
    • Modostroy
Теперь осталось только,чтобы умный человек проверил правильность всех скриптов:
Читать далее...
Как умный человек, дам тебе практичный совет: компилируй свое творение и проверяй. Это намного проще, чем ждать на форуме пока кто нибудь проверит.  tost^75?
И еще на последок.. Не пиши по два поста подряд, ибо это запрещено Правилами Форума, которые ты должен прочитать. На первый раз прощаю так как ты "свеженький" на форуме  :DD

 


* Ваши права в разделе

  • Вы не можете создавать новые темы.
  • Вы не можете отвечать в темах.
  • Вы не можете прикреплять вложения.
  • Вы не можете изменять свои сообщения.

Имя пользователя:
Пароль:

Поиск