Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. [Сообщений: 15]
Автор Пост
Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 25 Декабрь 2006, Пн - 22:48 pm
Профиль
Поселенец
Поселенец

Аватара пользователя

Посты: 100
Откуда: Москва

Значит, как создавать новые предметы?
Для начала надо усвоить несколько правил.
    1) Все вещи и предметы (датапады, броня, оружие и т.д.) в обеих играх имеют расширение .uti
    2) Любая вещь может быть вычетерена при помощи кода giveitem имя_вещи, где имя_вещи - это имя файла без расширения.
    3) Имя файла всегда должно совпадать с его Template ResRef'ом этого файла. Чтобы не путаться, Tag желаетльно делать таким же.
    4) Имя файла без расширения не должно быть более 12 символов.
    5) Только латинскими символами .Имя файла не должно содержать пробелов и других специальных символов. Разрешена только _
    6) Каждый предмет в игре имеет свою иконку. Кол-во доступных иконок для каждого класса вещей - 255
    7) Никогда не пытайтесь ввести что-то на русском через Котор Тул (КТ)! Потом замучаетесь править Ваш предмет!


Давайте для начала создадим какой-нибудь очень простой предмет. Например, маску.
Откройте ваш Котор Тул (в будущем КТ).
Чтобы было с чего брять "плацдарм для работы", зайдём в дерево Kotor II/BIFs/templates.bif/Blueprint, Items.
Ну, первой маской нам попадается 100_mask01.uti Это такая масочка с Перагуса.
Двойной щелчок на ней.
Предположим, что мы хотим чтобы чит-код для Вашей новой маски был cheater_mask
Введите cheater_mask в полях Tag и Template ResRef[/b]. С именем мы разберёмся позже.
Видите [i]Base Item
? Там написано Mask (маска). Поскольку нам нужна маска, мы оставляем Base Item как есть.
Когда-нибудь, когда сильно захотят :lol: , я расскажу как создавать новые типы предметов.
Stolen - в КотОР'ах не используется, хлам, оставшийся от NWN (игра, на которой основан движок КотОР'ов).
Plot Item - если здесь поставить галочку, то предмет можно будет видеть в меню "Quest Items" или "Plot Items", как оно там называется? Кочроче, как важную вещь, например как Ситхские бумажки в первом КотОР'е.
Charges - используется для энергетических щитов и тому подобных вещей, пока нам не надо. Спрашивайте о создании новых эн. щитов позже.
Stack Size - а тут будьте осторожны... Это кол-во предметов в одном... Ну, как у компонентов например, вещь выпадает одна, но их там штуки 23. Кстати так, при помощи простого изменеия Stack Size'а можно например сделать, чтобы компонентов или химикатов появлялось гораздо больше. :wink:
Pallete ID - тоже от NWN осталось, в КотОР'ах не нужна. Не трогать!
Cost - базовая цена предмета в кредитах.
Additional Cost - дополнительная стоимость предмета, к деньгам отношения не имеет. :roll: :lol: Единственный найденный путь для изменения стоимости предмета в компонентах/химикатах. Больше здесь значение - больше компонентов/химикатов (химикаты не тестировал, с компонентами точно так.).
Model Variation - вариация модели. Номер, указанный здесь является идентификатором модели и иконки предмета. Наприер, зная что предмет - маска, и Model Variation - 8, мы можем сказать, что иконка от этого предмета имеет назание ii_Mask_008.tga, а модель имеет название [i]i_Mask_008.mdl[i] и дополнение модели - [i]i_Mask_008.mdx[i].
То есть, если здесь поставить 255(помните максимальной число моделей и иконок?) например, то 008 во всех предыдущих названиях можно будет мысленно заменить на 255. А теперь, давайте вы откроете Kotor II/BIFs/models.bif. Зайдём в директорию Aurora Model и найдём там файл i_mask_008.mdl. Выделяем его (один раз щёлкните) и нажимаем на кнопку Extract File. Сохраняете его куда хотите, без разницы. Но давайте договоримся, что сохранять все файлы этой маски будем в одну папку, Ок?
Теперь закрываете дерево Aurora Model, и открываете дерево Aurora Model Extension.
Найдите там файл с именем i_Mask_008.mdx
Выделите его и извлеките в Вашу папку под эту маску.
Теперь зайдите в Kotor II/ERFs/TexturePacks/swpc_tex_gui
Это не по теме, но объясню какое название spwc_* что значит.
swpc_tex_gui - текстуры/картинки/изображения, используемые как элементы интерфейса. Например, здесь находятся иконки предметов, изображения планет, карты прозрачности для меню, зхагрузочные экраны и т.п.
swpc_tex_tpa - текстуры, используемые непосредсвенно в игре. Например, текстуры пушек, лайтсаберов, Эбенового Ястреба, Сиона, Крейи и т.п. Высшее качество игровых текстур.
swpc_tex_tpb - Тоже, только здесь лежат текстуры среднего качества (напомню, что кач-во выбирается игроком зерез игровое меню. И что лично-сделанные текстуры не имеют качества, как сделаны - так и сделаны.)
swpc_tex_tpc - очень гавёные текстуры.
Итак, мы находимся в папке swpc_tex_gui.
Откройте дерево I и найдите там файл ii_Mask_008.tpc. Щёлкните по нему два раза. И нажмите Write File. Формат - .tga (targa).
Теперь открывайте в ФотоШопе или где там вы хотите, меняйте иконку как хотите.
Итак, предположим, что мы хотим, чтобы Model Variation была 73. Надо всегда стараться выбрать такое число, которое никто до тебя не использовал. :wink:
Сохраняем иконку, её старое имя было ii_Mask_008.tga делаем новое имя ii_Mask_073.tga
Переименовываем модель. И ту, что .mdl, и ту, что .mdx. Т.е. новые имена будут i_Mask_073.mdl и i_Mask_073.mdx
Модель на данном этапе менять не будем. Это потом как-нибудь. Теперь меняем Model Variation Вашей маски с 8 на 73
Upgrade Level пока не трогаем.
Идём в раскладку Properties, она около раскладки General.
Итак. Видим две строчки. Выделем их, и нажимаем на клавиатуре Del.
Теперь два раза щёлкаем по звёздочке.
Появляется новое окошко.
Предположим, что мы хотим, чтобы маска давала +2 к мудрости.
Жмём на меню под Property Name и Выбираем Attribute bonus.
Под Subtype выбираем Wisdom.
Под Value выбирем +3.
Предположим, что ещё мы хотим, чтобы маска давала Защиту Джедая (способность такая).
Выбираем в Property Name строку Bonus Feat.
В SubType выбиреаем Jedi Defense.
А ещё мы хотим, чтобы маска давала иммунитет к яду.
Выбираем в Property Name строку Immunity и в SubType выбираем Poison.
Думаю, алгоритм понятен.
Если Инглиша не знаем, то увы - путь в моддинг закрыт. Без обид.
Идём в раскладку Description. Думаю, там всё понятно.Name - имя предмета в игре. Identified Description - описание вещи в игре.
Раскладка Comment - для комментариев. На Инглише.
Теперь кликаем по кнопке Save.
В окошке сохранения идём в папку с остальными штуками от этой маски. Имя файда для сохранения помните? имя файла - cheater_mask.uti
А теперь всё, что в папке кидаем в папку Override. Готово. :roll: :wink: Для врагов - :cry:

_________________
Скриптер с Holowan Lab.


Последний раз редактировалось Lit Ridl 26 Декабрь 2006, Вт - 12:18 pm, всего редактировалось 1 раз.

Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 26 Декабрь 2006, Вт - 12:24 pm
Профиль
Поселенец
Поселенец

Аватара пользователя

Посты: 100
Откуда: Москва

Закончил описание создание простых вещей.

p.s.: модуль что за новый создать желает Йода?

_________________
Скриптер с Holowan Lab.


Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 26 Декабрь 2006, Вт - 20:12 pm
Профиль
Поселенец
Поселенец

Аватара пользователя

Посты: 100
Откуда: Москва

Vandar Tokare писал(а):
Ну например часть Набу или подводный город. НАПРИМЕР!!!

Для начала надо сказать, что создание новых моделей местности - нераеально. Пока. Команда из меня и Darkkender'а решает сейчас вопросы по программированию и ассимации моделей метсности и их .wok файлов. Также проблема с Particle Emitter'ами. Сложно...

Короче можно использовать только уже существующие в игре локации. Но можно сделать им рескин. И потом, т.к. это сложно, я могу рассказать о изменеии текстур освещения в локациях. Это максимум. После обретения некоего опыта в моделинге, Вы наверняка научитесь создавать новые placeable'ы и правильно их ставить. Это может помочь координально изменить местность. Но это сложно, предупреждаю.
Пока можешь начать с чего-нибудь простого.

Открой Котор Тул.
Kotor II/RIMs/Modules/
Ну, предположим, что мы хотим заделать модуль на основе Админгисративного Уровня Перагуса (у каждого модуля в игре есть специфическое название, у этого например 101PER. Постфикс _s говорит о том, что в данной папке находятся элементы модуля, а его отсутсвие - то, что там находится основа модуля. Т.е. 3 файла, значение которых переоценить нельзя...).
Так вот. Видите 101per.rim в развёрнутом дереве?
Выделяете его. Жмите по кнопке Extract For Module Editing.
Появляется окно. Убедитесь, что весь левый столбик с галочками. В правом столбике выберите только то, что хотите, чтобы в вашем модуле осталось от старого (например, если поставить галочку около Door, то в Вашем новом модуле останутся все двери от того, с которого вы берёте основу. ).
Дальше всё понятно. После окончания извлечения жмите F1
Жмите Ctrl+O. Он сам вылезет на нужной папке.
Дальше всё понятно.

_________________
Скриптер с Holowan Lab.


Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 26 Декабрь 2006, Вт - 21:52 pm
Профиль
Поселенец
Поселенец

Аватара пользователя

Посты: 100
Откуда: Москва

Vandar Tokare писал(а):
Lit Ridl, а скины?

Это потом. Но в любом слуачае: HEX-редактор есть?

_________________
Скриптер с Holowan Lab.


Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 27 Декабрь 2006, Ср - 8:37 am
Профиль
Поселенец
Поселенец

Аватара пользователя

Посты: 100
Откуда: Москва

Vandar Tokare писал(а):
Lit Ridl, нету. сcылку дашь?

Лчно я WinHEX-ом пользуюсь. Он мой любимый. Не помню, нужен ли кряк...
Christian писал(а):
Хотелось бы узнать у знающего человека, как создать новый вид Силы в игре Котор 2, Я скачал ваш мод с Регенерацией Дарта Сиона, и весьма впечатлен, не подскажите ли вы как сделать так, что бы Регенерация запускалась автоматически, когда жизнь почти на нуле? И реально ли сделать такую Силу под КотоР 1?

Как в первом, так и во втором которе, чтобы у гг появилась такая возможность надо перелопатить все локации и поменять их скрипты. Тем не менее это будет немного гавёно...
А вот всех чувакам, кроме гг можно с лёгкостью такое првинтить. К партийцам, например. И в данном случае эффект пассивной силы будет иметь место.
Надо так?

_________________
Скриптер с Holowan Lab.


Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 27 Декабрь 2006, Ср - 14:48 pm
Профиль
Поселенец
Поселенец

Аватара пользователя

Посты: 100
Откуда: Москва

Vandar Tokare писал(а):
Christian, а я видел, как в моде Combat Simulation Arena была эта сила, но в самой игре ее не было. Что за глюк?

Ну, для начала Christian говорил вроде бы не про это.
Во-вторых большинство сил игрой не используются. Например У Трайи, что на Малакоре есть Force Crush. Но она его хоть раз юзнула??? Применеие всех сил в игре заделано через AI. Поэтому, никто из них не стал бы использовать новые силы.
В-третьих я сейчас объясню все. Вы когда-нибудь замечали, когда Нихилус в арене использует эту силу??? Когда у него мало здоровья. Это просто-напросто OnCombatRound скрипт. Как стандартный, но добавлено условие, проверяющее, если у него здоровья не мнеьше 50. Если меньше, то выполняется то, что лежит в условии. А там лежит нечто наподобии силового скрипта. Короче юзание сил тут не при чём.
Могу выкинуть сюда этот скрипт, если хотите.
Вот он:
Код:
// ====================================================================
// ST_NIHSPECIAL - OnCombatRound special AI for Darth Nihilus
// --------------------------------------------------------------------
// Nihilus Shockwave, when at 50% and 25% health, trigger a force
// shockwave that knocks away and down nearby opponents and inflicts
// darkside damage on them, debilitates enemies and buffs Nih.
// --------------------------------------------------------------------
// Last changed: 2005-09-04
// ====================================================================

#include "st_inc_utils"


// -------------------------------------------------------------
// Substitute knockdown effect with a stun effect if the target
// is a droid or beast, since most of those lack an "dead on
// their back" animation which knockdown + kill often gives.
// -------------------------------------------------------------
effect ST_SubKnockDown(object oTarget, effect eKnockdown) {
   int nAppear = GetAppearanceType(oTarget);
   if ((GetRacialType(oTarget) == RACIAL_TYPE_DROID)
      && (nAppear != 3)
      && (nAppear != 538)
      && (nAppear != 539))
   {
      return EffectDroidStun();   
   }
   
   if (GetSubRace(oTarget) == 2)
      return EffectCutSceneHorrified();
   
   return eKnockdown;
}


// --------------------------------------------------------------------
// Strip all buff/defensive force power effects from oTarget.
// --------------------------------------------------------------------
void ST_BreachTarget(object oTarget) {
    effect eBuff = GetFirstEffect(oTarget);
    while(GetIsEffectValid(eBuff)) {
      if (   GetEffectSpellId(eBuff) == FORCE_POWER_FORCE_AURA
           || GetEffectSpellId(eBuff) == FORCE_POWER_FORCE_SHIELD
              || GetEffectSpellId(eBuff) == FORCE_POWER_FORCE_ARMOR
              || GetEffectSpellId(eBuff) == FORCE_POWER_FORCE_MIND
              || GetEffectSpellId(eBuff) == FORCE_POWER_KNIGHT_MIND
              || GetEffectSpellId(eBuff) == FORCE_POWER_MIND_MASTERY
              || GetEffectSpellId(eBuff) == FORCE_POWER_SPEED_BURST 
              || GetEffectSpellId(eBuff) == FORCE_POWER_KNIGHT_SPEED
              || GetEffectSpellId(eBuff) == FORCE_POWER_SPEED_MASTERY
              || GetEffectSpellId(eBuff) == FORCE_POWER_RESIST_COLD_HEAT_ENERGY
              || GetEffectSpellId(eBuff) == FORCE_POWER_RESIST_POISON_DISEASE_SONIC
              || GetEffectSpellId(eBuff) == FORCE_POWER_RESIST_FORCE
              || GetEffectSpellId(eBuff) == FORCE_POWER_FORCE_IMMUNITY
              || GetEffectSpellId(eBuff) == FORCE_POWER_MASTER_ENERGY_RESISTANCE
              || GetEffectSpellId(eBuff) == FORCE_POWER_FORCE_BARRIER
              || GetEffectSpellId(eBuff) == FORCE_POWER_IMPROVED_FORCE_BARRIER
              || GetEffectSpellId(eBuff) == FORCE_POWER_MASTER_FORCE_BARRIER
              || GetEffectSpellId(eBuff) == FORCE_POWER_FORCE_ENLIGHTENMENT )
         {
            RemoveEffect(oTarget, eBuff);
         }
         eBuff = GetNextEffect(oTarget);
    }
    SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, FORCE_POWER_FORCE_BREACH));   
}


// --------------------------------------------------------------------
// Force Shockwave, knocks opponents back, deals darkside damage,
// and briefly speeds Nihilus up like Master Force Speed.
// --------------------------------------------------------------------
void ST_DoShockwave() {
   location lLoc  = GetLocation(OBJECT_SELF);   
   effect eWaves  = EffectVisualEffect(3018);
   effect eShake  = EffectVisualEffect(VFX_IMP_SCREEN_SHAKE);
   effect ePush   = EffectForcePushTargeted(lLoc);
   effect eDown   = EffectKnockdown();
   effect eOuch   = EffectDamage(ST_IMax(GetHitDice(OBJECT_SELF)*2, 50), DAMAGE_TYPE_DARK_SIDE);
          eOuch   = EffectLinkEffects(eOuch, EffectDamageForcePoints(50));
          
   effect eDrain  = EffectSavingThrowDecrease(SAVING_THROW_ALL, 2);
         eDrain  = EffectLinkEffects(eDrain, EffectACDecrease(2));
         eDrain  = EffectLinkEffects(eDrain, EffectAttackDecrease(2));
   
    effect eSpeed  = EffectMovementSpeedIncrease(99);
           eSpeed  = EffectLinkEffects(eSpeed, EffectACIncrease(4, AC_ARMOUR_ENCHANTMENT_BONUS));
           eSpeed  = EffectLinkEffects(eSpeed, EffectModifyAttacks(2));
           eSpeed  = EffectLinkEffects(eSpeed, EffectAssuredDeflection(TRUE));
           eSpeed  = SetEffectIcon(eSpeed, 22);   
      
   ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FORCE_WAVE), lLoc);
   
   ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, OBJECT_SELF);
   ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(9007), OBJECT_SELF);
   ApplyEffectToObject(DURATION_TYPE_INSTANT, eWaves, OBJECT_SELF);
   
   DelayCommand(0.2, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWaves, OBJECT_SELF));
   DelayCommand(0.4, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWaves, OBJECT_SELF));
   DelayCommand(0.4, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, OBJECT_SELF));
   DelayCommand(0.6, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWaves, OBJECT_SELF));
   DelayCommand(0.8, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWaves, OBJECT_SELF));
   DelayCommand(0.8, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, OBJECT_SELF));
   DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWaves, OBJECT_SELF));
   DelayCommand(1.2, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWaves, OBJECT_SELF));
   DelayCommand(1.2, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, OBJECT_SELF));
   
   DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSpeed, OBJECT_SELF, 36.0));
   
   int nCnt = 15;
   object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 20.0, lLoc, FALSE);
   while (GetIsObjectValid(oTarget)) {
      if (!GetIsDead(oTarget)
         && !GetIsNeutral(oTarget)
         && (GetCurrentHitPoints(oTarget) > 0)
         && (oTarget != OBJECT_SELF))
      {
         ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePush, oTarget, 0.5);
         DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePush, oTarget, 0.2));
         DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ST_SubKnockDown(oTarget, eDown), oTarget, 3.0));
         
         if (GetIsEnemy(oTarget)) {
            DelayCommand(0.3, ST_ApplyEffectToHostile(DURATION_TYPE_INSTANT, eOuch, oTarget));
            DelayCommand(0.6, ST_ApplyEffectToHostile(DURATION_TYPE_INSTANT, eOuch, oTarget));
            DelayCommand(0.7, ST_BreachTarget(oTarget));
            DelayCommand(0.8, ST_ApplyEffectToHostile(DURATION_TYPE_TEMPORARY, eDrain, oTarget, 20.0));
            DelayCommand(0.9, ST_ApplyEffectToHostile(DURATION_TYPE_INSTANT, eOuch, oTarget));
            nCnt += GetHitDice(oTarget);   
         }
      }
      oTarget = GetNextObjectInShape(SHAPE_SPHERE, 20.0, lLoc, FALSE);
   }
   
   DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nCnt*4), OBJECT_SELF));
}


// --------------------------------------------------------------------
// Main function - Do Combat Round actions...
// --------------------------------------------------------------------
void main()
{      
   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   // ST: Added SABER replacement and saber form for Nihilus.
   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   if (!GetSpellAcquired(FORM_SABER_VI_NIMAN)) {
      // Block out the new AI form change routine...
      if (!GetLocalBoolean(OBJECT_SELF, 88))
         SetLocalBoolean(OBJECT_SELF, 88, TRUE);   
      
      GrantSpell(FORM_SABER_VI_NIMAN, OBJECT_SELF);
      
      if (!IsFormActive(OBJECT_SELF, FORM_SABER_VI_NIMAN))
         SetCurrentForm(OBJECT_SELF, FORM_SABER_VI_NIMAN);         
   }
   
   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   // ST: Force SHOCKWAVE when at 50% and 25% vitality.
   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   if (!GetLocalBoolean(OBJECT_SELF, 87) && GetCommandable()) {
      if (!GetLocalBoolean(OBJECT_SELF, 57) && (GetCurrentHitPoints() < (GetMaxHitPoints() / 2))) {
         if (!GetIsDebilitated(OBJECT_SELF)
            && !GetHasSpellEffect(FORCE_POWER_KILL)
            && !GetHasSpellEffect(FORCE_POWER_FORCE_WHIRLWIND)
            && !ST_GetHasEffect(EFFECT_TYPE_PARALYZE))
         {
            SetLocalBoolean(OBJECT_SELF, 57, TRUE);
            SetLocalBoolean(OBJECT_SELF, 87, TRUE); // SpawnCond: SW_FLAG_AI_OFF
            ClearAllActions();
            ST_RemoveHarmfulEffects();
            
            object oCloud = CreateObject(OBJECT_TYPE_PLACEABLE, "st_nihcloud", GetLocation(OBJECT_SELF));
            DestroyObject(oCloud, 2.7);
            
            DelayCommand(0.2, ST_DoShockwave());
            DelayCommand(0.1, ActionPlayAnimation(10033, 1.0, 3.0));
            DelayCommand(2.7, SetLocalBoolean(OBJECT_SELF, 87, FALSE)); // SpawnCond: SW_FLAG_AI_OFF
            return;
         }
      }
      else if (GetLocalBoolean(OBJECT_SELF, 57)
         && !GetLocalBoolean(OBJECT_SELF, 58)
         && (GetCurrentHitPoints() < (GetMaxHitPoints() / 4)))
      {
         if (!GetIsDebilitated(OBJECT_SELF)
            && !GetHasSpellEffect(FORCE_POWER_KILL)
            && !GetHasSpellEffect(FORCE_POWER_FORCE_WHIRLWIND)
            && !ST_GetHasEffect(EFFECT_TYPE_PARALYZE))
         {
            SetLocalBoolean(OBJECT_SELF, 58, TRUE);
            SetLocalBoolean(OBJECT_SELF, 87, TRUE); // SpawnCond: SW_FLAG_AI_OFF
            ClearAllActions();
            ST_RemoveHarmfulEffects();
            
            location lLoc = GetLocation(OBJECT_SELF);
            vector vPos = GetPositionFromLocation(lLoc);
            vPos.z += 0.5;
            lLoc = Location(vPos, GetFacingFromLocation(lLoc));
            object oCloud = CreateObject(OBJECT_TYPE_PLACEABLE, "st_nihcloud", lLoc);
            DestroyObject(oCloud, 2.7);
            
            DelayCommand(0.2, ST_DoShockwave());
            DelayCommand(0.1, ActionPlayAnimation(10033, 1.0, 2.7));
            DelayCommand(2.7, SetLocalBoolean(OBJECT_SELF, 87, FALSE)); // SpawnCond: SW_FLAG_AI_OFF
            return;
         }
      }   
   }
   
   
   // ST: Run the generic combat AI...
    ExecuteScript("st_ai_master", OBJECT_SELF, 1003);
}




_________________
Скриптер с Holowan Lab.


Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 28 Декабрь 2006, Чт - 15:48 pm
Профиль
Поселенец

Аватара пользователя

Посты: 34
Откуда: Днепр

Хотелось бы узнать, как-то можно добавить в диалоги между персами свои ветки? И если да, то как?


Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 28 Декабрь 2006, Чт - 18:03 pm
Профиль
Поселенец
Поселенец

Аватара пользователя

Посты: 100
Откуда: Москва

Для этого вот эта утилита нужна.
А как делать сказано тут.

_________________
Скриптер с Holowan Lab.


Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 28 Декабрь 2006, Чт - 20:30 pm
Профиль
Поселенец
Поселенец

Аватара пользователя

Посты: 113
Откуда: Хабаровск

Lit Ridl, давно не общались, скажи, для чего нужен НЕХ-редактор?
И немного не в тему, куда делась тема про разработку планеты с твоего форума? Или проект перешёл в закрытый режим?

_________________
ни одно доброе дело не должно оставаться безнаказанным...
Большому кораблю - большую торпеду!


Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 28 Декабрь 2006, Чт - 21:27 pm
Профиль
Поселенец
Поселенец

Аватара пользователя

Посты: 100
Откуда: Москва

Цавонг Ла писал(а):
Lit Ridl, давно не общались, скажи, для чего нужен НЕХ-редактор?
И немного не в тему, куда делась тема про разработку планеты с твоего форума? Или проект перешёл в закрытый режим?

1) Для хаккинга моделей местности.
2) Данный раздел форума виден только для зарегистрированных.

_________________
Скриптер с Holowan Lab.


Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 28 Декабрь 2006, Чт - 21:53 pm
Профиль
Поселенец
Поселенец

Аватара пользователя

Посты: 113
Откуда: Хабаровск

Lit Ridl, можно подробнее про первое? И про второе, что, возникли какие то проблемы, гости там вроде постить не могут, только смотреть.

_________________
ни одно доброе дело не должно оставаться безнаказанным...
Большому кораблю - большую торпеду!


Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 29 Декабрь 2006, Пт - 11:16 am
Профиль
Поселенец
Поселенец

Аватара пользователя

Посты: 100
Откуда: Москва

Цавонг Ла писал(а):
Lit Ridl, можно подробнее про первое? И про второе, что, возникли какие то проблемы, гости там вроде постить не могут, только смотреть.

1) Например, вздумалось тебе делать рескин 107per. Это турельная игра на Перагусе.
Идёшь в Kotor II/BIFs/models.bif/
Разворачиваешь Aurora Model.
Находешь 107pera.mdl
Двойной щелчок.
Убедись, что нигде не стоит никаких галочек.
Посчитай, сколько этих 107per* моделей там есть. Введи этот номер в поле Number of Consecutive Models to Extract. А их там 7. Так что вводи 7.
Иди в ту папку, в которую всё извлёк. Оставь в той папке только .tga файлы, всё остальное (.mdl) - удали.
А теперь вернись в Котор Тул.
Кликни один раз по 107pera.mdl и нажми на кнопку Extract File
Извлеки в ту папку, где находятся .tga файлы.
И таким образом извлеки все 7 моделей 107per*.mdl
Теперь закрывай дерево Aurora Model и открывай Aurora Model Extension.
Найди там 107pera.mdx. И как и в предыдущем действии, извлеки все 7 файлов 107per*.mdx.
Теперь иди в ту папку с текстурами.
Меняй какие хочешь текстуры, как хочешь. Сохраняй.
Потом переименовывай по следующим правилам:
1) Новое имя файла должно иметь одну длину с предыдущим. Например, было у нас dan_grassfx, а мы делаем lit_grassfx.
2) Желательно менять только префиксы, т.е. то, что идёт до _. Например, dan_grassfx на lit_grassfx. Это не обязательно, это для удобства.
3) Никаких пробелов и прочих специальных символов! Только _
Итак. Текстуры переделаны.
Правый щелчок мышки на 107pera.mdl. Edit with WinHEX.
ctrl+h
вбивай старое название текстуры в Search и вбивай новое (без расширения) в Replace with.
И так со всеми изменёнными текстурами.
После завершения этого действия, сохраний файл. Теперь делай тоже с семью остальными .mdl файлами. .mdx'ы не трогай.
Теперь, чтобы просто посмотреть на свой рескин, можешь временно поместить все файлы (.tga, .mdl, .mdx) в папку Override.
Посмотрел? Отлично. Удали все эти файлы из папки Override.
В будущем, когда будешь строить новый модуль, грузи .mdl и .mdx файлы в .mod файл. А .tga'шники в Override.

_________________
Скриптер с Holowan Lab.


Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 29 Декабрь 2006, Пт - 20:37 pm
Профиль
Поселенец
Поселенец

Аватара пользователя

Посты: 100
Откуда: Москва

Christian писал(а):
Уважаемый Lit Ridl, насколько мне известно у Дарта Малакас(тот с которым сражаемся на ЗК), если им играть в Котор 2, то у него отсутствует анимация некоторых движений, когда сражаешся с каким-нибудь врагом(нет шквала, мощной атаки), но так как мне очень уж нравится его стиль боя и аппеаранс, не молли бы вы, исправить этот недочет. С нетерпение буду ждать вашего ответа.

К сожалению, пока в моддинге которов нет для этого подходящих утилит. :(
Очень многие просили многих моддеров о том же, но увы, невозможно. :cry:

_________________
Скриптер с Holowan Lab.


Не в сети
  Заголовок сообщения:
СообщениеДобавлено: 29 Декабрь 2006, Пт - 21:53 pm
Профиль
Поселенец
Поселенец

Аватара пользователя

Посты: 100
Откуда: Москва

Christian писал(а):
Уважаемый Lit Ridl, как вы наверное заметили, анимация Малака отличается, от всех остальных анимаций, возможно ли ее поставить для обычного перса, а то не хочется встречаться с двойником, или же потом все остальные нпс будут с этой анимацией? И не подскажите ли вы почему у Малака когда одеваешь какой-нибудь браслет или отличную робу не изменяется внешний вид?
Или для этого нет подходящих утилит? Очень интересно будет узнать ваше мнение.

1)Насчёт его анимаций. Не, невозможно перенести его анимацию кому-либо другому.
2) Насчёт предметов. Ну, во-первых у Малака действительно ГАВЁНАЯ модель, в которой нет некоторых привязок, например, привязки для масок. Во-вторых, весь Малак - одна модель. Немного о том, что такое тело в которах. Итак, например, берём Аттона. В игре есть модель его головы и соответсвующая ей колонка в heads.2da. Такие же колонки и модели есть у персонажей, NPC, партийцев и прочих чуваков, умеющих носить броню/робы. Тело - это отдельная модель. Как бы берётся тело, и к нему стыкуется голова. Например, раздетый Аттон. Что об этом думает игра? Она сканирует слот брони Аттона, и видя что он пуст, грузит из appearance.2da модель, с именем указанным в колонке modela напротив строки Аттона. Игра создаёт в игровом пространстве эту модель. Затем, так как игра читает всё это задом наперёд, игра смотрит номер, находящийся в колонке normalhead напротив строки Аттона. Номер, указанный там - это номер строки его башки в heads.2da. Из heads.2da игра считывает название модели его башки, и соответсвенно его стороне силы накладывает на эту башку текстуру, указанную для данной стороны силы в heads.2da. Когда модель башки найдена, игры инициализирует скелет тела, и соответственно все привязки, там имеющиеся. В том числе привязку для части шеи (шея частично - элемент головы). Вы можете видеть, как происходит эта инициализация. Наверняка, иногда замечали, как свеже-появившиеся в игре люди около секунды стоят без башки в "медицинской позе(руки вширь, ноги вширь.)". Затем игра прикручивает башку к привязке для шеи, и инициализирует скелет башки. Роба, одежда, броня и т.д. - такие же "тела", как и голая модель. Просто модель другая и текстура. Вот и всё. А ещё, может быть вы иногда замечали, как при исчезновении некоторых "особ" в игре они как бы растворялись, и за секудну до полного растворения, башка исчезала. Процесс тот же, только обратный.
Вернёмся к теме. Раз Малак - целостная модель, то значит его тело по умолчанию уже прикручено к башке, а башка - к телу. Этим и объясняется невозможность носить одежду Малаком. Так всё просто.

_________________
Скриптер с Holowan Lab.


  Заголовок сообщения:
СообщениеДобавлено: 24 Январь 2007, Ср - 13:06 pm


Вопрос теперь такой: если вставить в appeareance.2da два столбца, которые должны означать новый тип брони: modelo и texo - так должна обозначаться броня типа "O" (в игре последняя - N) а потом в baseitems добавить строку и там прописать O в bodyvar, то все равно из столбцов modelo и texo модель не читается - это можно как то исправить или так и должно быть? Может быть нужно еще где-нибудь что-то поменять?

см


Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас из джедаев/ситов на этой планете

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Текущее время: 01 Апрель 2025, Вт - 12:33 pm
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group — Русская поддержка phpBB
Сеть сайтов The SWKOTOR.ru Network

-- SAds2:
--