Создание нового таланта

Тема в разделе "Скриптинг", создана пользователем Defman, 29 май 2013.

  1. Defman

    Defman
    New Member
    Регистрация:
    29 май 2013
    Сообщения:
    5
    Баллы:
    1
    Лучших ответов:
    0
    Как создать новый талант такого же типа как взлом (т.е. ему можно обучится и все),или как создать абсолютно новый перк (как сила,прокачиваемая) и реализуемо это вообще,просто в моде "Возвращение" был новый талант,вот и я хочу тоже такой сделать.
     
  2. Yelawolf

    Yelawolf
    Well-Known Member
    Регистрация:
    29 янв 2012
    Сообщения:
    4.530
    Баллы:
    113
    Лучших ответов:
    0
    Декомпилируй датник Возвращения, и через поиск посмотри как реализовано. Тебе нужен Gothic.Dat и Menu.Dat.
     
  3. Defman

    Автор
    Автор
    Defman
    New Member
    Регистрация:
    29 май 2013
    Сообщения:
    5
    Баллы:
    1
    Лучших ответов:
    0
    Про 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 файл,который отвечает за функцию изучения перка,в свою очередь которая вызывается у НПС в диалоге.
     
    Последнее редактирование модератором: 29 май 2013
  4. Yelawolf

    Yelawolf
    Well-Known Member
    Регистрация:
    29 янв 2012
    Сообщения:
    4.530
    Баллы:
    113
    Лучших ответов:
    0
    А стоит думать :) Ведь, именно через Меню.дат добавляют разные категории и прочие фишки в статус игрока, и в саму менюшку в игре.
     
  5. Defman

    Автор
    Автор
    Defman
    New Member
    Регистрация:
    29 май 2013
    Сообщения:
    5
    Баллы:
    1
    Лучших ответов:
    0
    Чтож,буду знать.А по теме - разобрался.Спасибо за верное направление в этих датниках.
     
  6. Defman

    Автор
    Автор
    Defman
    New Member
    Регистрация:
    29 май 2013
    Сообщения:
    5
    Баллы:
    1
    Лучших ответов:
    0
    Теперь осталось только,чтобы умный человек проверил правильность всех скриптов:
    в 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
     
    Последнее редактирование модератором: 29 май 2013
  7. Yelawolf

    Yelawolf
    Well-Known Member
    Регистрация:
    29 янв 2012
    Сообщения:
    4.530
    Баллы:
    113
    Лучших ответов:
    0
    Как умный человек, дам тебе практичный совет: компилируй свое творение и проверяй. Это намного проще, чем ждать на форуме пока кто нибудь проверит. tost^75?
    И еще на последок.. Не пиши по два поста подряд, ибо это запрещено Правилами Форума, которые ты должен прочитать. На первый раз прощаю так как ты "свеженький" на форуме :DD
     
    Последнее редактирование модератором: 8 авг 2018

Поделиться этой страницей