• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Не стесняюсь спросить....

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Можно конечно
 

DarkNazgul

Участник форума
Регистрация
12 Янв 2014
Сообщения
33
Благодарности
18
Баллы
160
Разобрался в чем была ошибка, загрузил аск волка в макс глянул в редакторе материалов формат текстур - DDS. Так и осталось после импорта другой модели а я наивно полагал если я в блокноте поменял dds - на тга то все стало хорошо =D

И самое наболевшее: Когда я все перенес в игру, с помощью марвина я обычно вхожу через консоль в живность и проверяю как все работает. Вот что не нравиться, так это то, что модель волка при беге подпрыгивает и падает. Как будто бежит по воздуху. Модель курицы так вообще проваливалась. А с самим волком в игре такого не происходит. Все так и должно быть, или нет?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.667
Баллы
305
Последнее редактирование:

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
DarkNazgul написал(а):
...Как будто бежит по воздуху. Модель курицы так вообще проваливалась. А с самим волком в игре такого не происходит. Все так и должно быть, или нет?
Это баг такой первой компиляции. Выйди из игры и снова зайди.
Или в консоли:
edit species --->step=200
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
EquipItem? По моему в диалоге оно не работает.
Выходит вот так https://yadi.sk/i/85Zz-Dwsbj4fF
ну да, все верно, тут тот же баг, что при одевании всяких шлемов скриптом, просто в готе что 1 что 2, функция одевания предметов, сделана очень... плохо, вобщем. И в некоторых случаях она не работает.
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.574
Благодарности
4.168
Баллы
915
Всё верно, функция EquipItem() нормально работает только в инстанциях NPC (Story\NPC\*.d). А в диалогах надо использовать функции AI_EquipBestMeleeWeapon() или AI_EquipBestRangedWeapon(), но они экипируют ГГ или перса не определённым оружием, а наилучшим ближне- или дальнобойным, для использования которого хватит силы или ловкости. Например, без использования дополнительных костылей чертовски сложно заставить ГГ экипироваться именно двуручным мечом Рода, а не другим оружием с более лучшими характеристиками (например, волчьим зубом или рапирой).
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
EquipItem? По моему в диалоге оно не работает.

Можно попробовать так (из инстанции гоблина):
Npc_SetToFightMode(self,ItMw_1H_Club_01);
Не факт, что сработает.

Есть ещё такой вариант из разряда танцев с бубном. В начале диалога уменьшаешь (увеличиваешь?) силу или ловкость непися до значения, необходимого для экипировки именно этого веапона. Реальное значение запоминаешь в специальной переменной. По ходу диалога используешь AI_EquipBestMeleeWeapon() или AI_EquipBestRangedWeapon(). Даже если в инвентаре есть более крутое оружие, оно не экипируется. Вернуть реальное значение силы или ловкости можно уже разными способами. Можно, например, попытаться прописать функцию при экипировке того веапона, который нужно экипировать. В этой функции и вернуть реальное значение силы или ловкости с учётом одноразовости события.
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.574
Благодарности
4.168
Баллы
915
В G2 реальные сила, ловкость и максимальная мана запоминаются в следующих переменных массива aivar: REAL_STRENGTH, REAL_DEXTERITY и REAL_MANA_MAX. Но предложенный Александром метод манипуляции значениями силы или ловкости может сработать неправильно, например: значение силы ГГ временно снижено до 30 единиц, ГГ получил от Рода его двуручный меч (повреждение 40, сила 30), но т.к. в его инвентаре уже есть волчий зуб (повреждение 45, сила 22), то вместо меча Рода ГГ экипируется этим одноручником.
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Dimus написал(а):
в диалогах надо использовать функции AI_EquipBestMeleeWeapon() или AI_EquipBestRangedWeapon(), но ... без использования дополнительных костылей чертовски сложно заставить ГГ экипироваться именно двуручным мечом Рода, а не другим оружием с более лучшими характеристиками (например, волчьим зубом или рапирой).
Ну вот и домашнее задание Сатурасу - запилить возможность экипировать лучшее оружие по типу (1H\2H\BOW\CBOW) и по его инстанции.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
уже давно сделана такая функция:) Верней не так, есть корректная функция экипировки, вот, а допилить до ваших требований - минутное дело
 
Последнее редактирование:

НастасьСанна

Участник форума
Регистрация
6 Дек 2012
Сообщения
350
Благодарности
521
Баллы
325
Долго вспоминала, как же делала подобную штуку без Икаруса и Экста, и наконец вспомнила.

Идея в том, что среди типов урона есть неиспользуемый DAM_INDEX_BARRIER = 0. При нанесении урона он не учитывается, если не указано в damagetype, а вот при выборе лучшего оружия - учитывается.

Соответственно, если в инстанции оружия прописать какое-нибудь больше значение в damage[0], то такое оружие всегда будет экипироваться как лучшее.
Обязательно присваивать damage[0] после damageTotal и damagetype, иначе значение затрется.

Сработает ли, если поменять damage[0] непосредственно в диалоге, я не уверена.

Например, так я заставляла NPC учитывать бонус к владению оружием:
Код:
instance ItMw_1H_Common_01(C_Item)
{
    name = NAME_ItMw_1H_Common_01;
    mainflag = ITEM_KAT_NF;
    flags = ITEM_SWD;
    material = MAT_METAL;
    value = Value_Common1;
    damageTotal = Damage_Common1;
    damagetype = DAM_EDGE;
    damage[DAM_INDEX_EDGE] = damageTotal;
    range = Range_Common1;
    cond_atr[2] = ATR_STRENGTH;
    cond_value[2] = Condition_Common1;
    visual = "ItMw_030_1h_Common_Sword_01.3DS";
    description = name;
    text[2] = NAME_Damage;
    text[3] = NAME_Str_needed;
    text[4] = NAME_ADDON_BONUS_1H;
    text[5] = NAME_Value;
    count[2] = damageTotal;
    count[3] = cond_value[2];
    count[4] = Waffenbonus_05;
    count[5] = value;
    damage[0] = (damageTotal + cond_value[2]) * Waffenbonus_05 / 100; //доп.урон от крита
};
 

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.667
Баллы
305
Еще вопрос. я добавил в свой мод ищущий огонек, но не как не могу сделать так, чтоб на него не нападали, гильдия у него шершень, и изменить ее нельзя(летать не будет) Подскажите, как решить эту проблему? Во второй готике есть функция AIV_NoFightParker, но можно-ли перенести ее в первую?
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Можно ли использовать два и более UVW Map для одного мультиматериала? (для одних полигонов один UVW Map, для других соответственно другой).
Разобрался. Достаточно установить Map Channel в каждой карте саб-материала и в настройках UVW Map указать этот канал.
 
Последнее редактирование:

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Во второй готике есть функция AIV_NoFightParker, но можно-ли перенести ее в первую?
AIV_NoFightParker - это не функция, а всего лишь константа. С помощью этой константы можно идентифицировать одну из переменных aivar-массива непися. А уже значение этой переменной, в свою очередь, можно учитывать в функциях ИИ. ;)

Еще вопрос. я добавил в свой мод ищущий огонек, но не как не могу сделать так, чтоб на него не нападали, гильдия у него шершень, и изменить ее нельзя(летать не будет) Подскажите, как решить эту проблему?

Нужно прописывать игнор данного существа в алгоритмах ИИ. Для людей реакция на твоего "шершня" сведётся, скорее всего, к функции ZS_AssessMonster. Прописываешь в функции что-то типа:
Код:
func void ZS_AssessMonster()
{
   ...
   PrintGlobals(PD_ZS_Check);
   if(C_NpcIsDown(other) || (Hlp_GetInstanceID(ХХХХХ) == Hlp_GetInstanceID(other)))
   {
     return;
   };
  ...
};
где ХХХХХ - инстанция "Огонька". Нападать на него люди не будут, но возможны глюки ИИ - неписи перестанут правильно реагировать на ГГ, поскольку их внимание будет отвлечено на "Огонька".

Чтобы на "Огонька" не нападали монстры, нужно прописать игнор в функции B_MM_AssessEnemy.

По-хорошему, "Огонёк" должен иметь нейтральную гильдию и не находиться в боевом режиме, что-то типа мясного жука, на которого никто не обращает внимание. Если он так важен, то, возможно, стоит пожертвовать ради него одной из монстрячих гильдий.
 

NicolasRage

Участник форума
Регистрация
10 Окт 2014
Сообщения
2
Благодарности
0
Баллы
150
Здравствуйте,заранее извините за глупый вопрос, не подскажете как добавить в игру свое оружие? Насчет моделирования в максе все понятно, но дальше у меня возникают сложности со скриптом. Вернее я даже не могу его найти. Прочитал что нужно прописать свое оружие в Items/IT_Melee_weapons.d но сама папка где должен быть файл пуста.
То же самое с папкой с текстурами. Куда положить сам 3ds на форумах вообще не нашел.
 

Leonion

Участник форума
Регистрация
31 Мар 2008
Сообщения
249
Благодарности
154
Баллы
195
Вопрос: что движок игры воспринимает за динамические объекты (помимо неписей и айтемов)?

Я уже ранее задавал вопрос с неработающим мувером ( https://worldofplayers.ru/threads/13198/page-174#post-768304 ), но тогда мне показалось, что вроде все исправилось, а сейчас обнаружилось, что, оказывается, я просто сделал мувер "проходимым", сквозным, что для стены не есть круто. :D

Если же я ставлю на cdDyn на TRUE (чтобы ГГ не проходил сквозь стену), мувер автоматически перестает работать.
Закончилось тем, что я удалил ВСЕ объекты, так или иначе касавшиеся мувера (какие-то коряги на потолке пещеры, красные рудные полосы на стенах, камни на земле) или находящиеся от него поблизости (пару источников света и несколько MobInter-ов), даже триггер отодвинул подальше.
Наконец я даже временно удалял мувер, чтобы посмотреть, нет ли где-то в нем самом затерявшегося объекта. Чисто.
Тем не менее, мувер в гробу видел мои приказы "Сезам откройся!". Проблемой, очевидно, является его столкновение с каким-то динамическим объектом (ибо если таковой галочки не стоит в его настройках, он нормально открывается). Есть идеи, что может быть этим динамическим объектом?

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

////
....и еще третий вопрос.
Что в Готике 2 отвечает за friendly fire?
Я все копаюсь в "Возвращении", пытаюсь его убрать (прежде всего, между неписями в битвах в 7 главе, отсюда условия в скрипте).
Пробовал прописывать вот это:
Код:
if ((other.guild < GIL_SEPERATOR_HUM) && (other.guild != GIL_DMT) && (other.guild != 0) && (self.guild < GIL_SEPERATOR_HUM) && (self.guild != GIL_BDT) && (KAPITELORCATC == TRUE))
   {
     return COLL_DONOTHING;
   };
в C_CanNpcCollideWithSpell.d
Тем не менее, маги все равно умудряются наносить урон случайным жертвам, оказавшимся на пути их спелла (и это несмотря на то, что когда разозленная жертва бросается лупить мага, видно, что урон уже НЕ наносится, т.е. скрипт работает, но как-то частично).
Тот факт, что скрипт отчасти срабатывает, видно и когда жертвой является другой маг. "Атакер" уже успевает успокоиться, но жертва продолжает поливать его спеллами, успешно не наносящимии урона, причем контратаку от бывшего нападающего это не вызывает. Таким образом, сам урон и контратака при случайном френдли файр проскальзывают каким-то волшебным образом, вопреки скрипту.
Но это - одна сторона вопроса.
С другой стороны, пробовал блокировать саму контратаку через B_AssessDamage, B_AssessFightSound (а то дружки жертвы любят подключаться), B_AssessEnemy и даже самой B_Attack при помощи похожего фрагмента скрипта (условия те же, только в фигурных скобках был либо просто return, либо пробовал Npc_ClearAIQueue(slf) в B_AssessEnemy.
Но хоть бы хны. Жертва все равно бросается на обидчика.
Может кто-нибудь работал с этим вопросом, может подсказать, где его править?

________________________________________________________________________________
UPD:
Первый вопрос снят. Ответом оказалось дерево, кусок которого застрял внутри скалы на том самом месте, куда должен был отъезжать мувер. Пришлось его срубить.
 
Последнее редактирование:

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Кто или что (движок или скрипты?) виновно в том, что трупы призванных существ остаются валяться в мире игры? И можно ли это как-то устранить?

Мёртвых неписей из мира удаляет движок, если отойти от тела на определённое расстояние. Но тело не исчезает, если в инвентаре есть предмет, помеченный, как квестовый, специальным флагом. Также в проекте GothicEngine от камрада Керракс есть такая фишка, что тела не удаляются из мира, что, кстати, может вызвать неправильную работу пары алгоритмов. Хотя речь, судя по всему, идёт о Г2.
 

Melonslise

Участник форума
Регистрация
19 Окт 2014
Сообщения
179
Благодарности
19
Баллы
175
Помогите пожалуйста.
1) Я создал карту в максе. Но когда я экспортирую её то в консоле он пишет что сократил названия текстур которые в спейсере просто заминяются камнем... как сделать так чтобы текстуры были в спейсере?
2) После того как я загрузил карту в спейсер как меш и конвертировал её то не могу вставлять вобы и мобы.
в меню "object" есть только zCMaterial и zCEventMessage. Никаких там zCMob ит.д.
3) как конвертировать .zen в .3ds?
ответьте))
 
Сверху Снизу