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

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

Вопросы по скриптингу

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
  • Первое сообщение
  • #1
Прежде чем задавать вопросы, ознакомьтесь с документацией..
1) Читать онлайн
2) Архив с офлайн-версией(chm) во вложении
 

Вложения

  • Vam_tutor.rar
    171,6 KB · Просмотры: 574
Последнее редактирование модератором:

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.942
Благодарности
1.470
Баллы
465
А это оружие требуется только на время диалога?
 

STARK

Участник форума
Регистрация
20 Янв 2011
Сообщения
556
Благодарности
142
Баллы
220
Beowulf, нет, нужно выдать это оружие игроку.
 

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.942
Благодарности
1.470
Баллы
465
Можно попробовать пойти таким "костыльным" путем при помощи стандартных средств:
1) Создается в скриптах служебный итем - меч с минимальным требованиям к силе, но с очень-очень большим уроном.
Если он будет в инвентаре как самый лучший, идем дальше.
2) Создается в скриптах меч, который будет по сценарию выдан игроку.
3) Служебный предмет передаешь игроку от нпс как обычно
Daedalus:
CreateInvItem(self,int itemInstance);
B_GiveInvItems(self,other,int itemInstance,1);
4) Меч, который должен быть у игрока сразу создаешь в инвентаре игрока (Это чтобы не было сообщения, что передано 2 предмета)
Daedalus:
CreateInvItem(other,int itemInstance);
Вместо int itemInstance в шаге 3 вставляешь инстанцию служебнего предмета, в шаге 4 - инстанцию меча, что останется у игрока. Ну и потом тебе надо через другой диалог удалить из инвентаря игрока служебный предмет (либо передать его нпс-собеседнику, но потом он может экипироваться таким оружием)
 

STARK

Участник форума
Регистрация
20 Янв 2011
Сообщения
556
Благодарности
142
Баллы
220
Объясните пожалуйста, как с этим работать:):
Daedalus:
const int GIL_ATTITUDES_FMTAKEN[256] =
{
    ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,
    ATT_HOSTILE,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_HOSTILE,ATT_FRIENDLY,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_NEUTRAL,
    ATT_HOSTILE,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_HOSTILE,ATT_FRIENDLY,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_NEUTRAL,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_NEUTRAL,
    ATT_HOSTILE,ATT_FRIENDLY,ATT_NEUTRAL,ATT_FRIENDLY,ATT_HOSTILE,ATT_NEUTRAL,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_NEUTRAL,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_NEUTRAL,
    ATT_FRIENDLY,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_FRIENDLY,ATT_NEUTRAL,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_NEUTRAL,
    ATT_HOSTILE,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_NEUTRAL,
    ATT_FRIENDLY,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_FRIENDLY,ATT_HOSTILE,ATT_FRIENDLY,ATT_FRIENDLY,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,
    ATT_FRIENDLY,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_FRIENDLY,ATT_HOSTILE,ATT_FRIENDLY,ATT_FRIENDLY,ATT_NEUTRAL,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,
    ATT_FRIENDLY,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_FRIENDLY,ATT_HOSTILE,ATT_NEUTRAL,ATT_NEUTRAL,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,
    ATT_FRIENDLY,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_FRIENDLY,ATT_HOSTILE,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,
    ATT_FRIENDLY,ATT_HOSTILE,ATT_NEUTRAL,ATT_NEUTRAL,ATT_FRIENDLY,ATT_HOSTILE,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,
    ATT_FRIENDLY,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_FRIENDLY,ATT_NEUTRAL,ATT_FRIENDLY,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_NEUTRAL,ATT_NEUTRAL,
    ATT_FRIENDLY,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_FRIENDLY,ATT_NEUTRAL,ATT_ANGRY,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_NEUTRAL,ATT_NEUTRAL,
    ATT_FRIENDLY,ATT_HOSTILE,ATT_HOSTILE,ATT_HOSTILE,ATT_FRIENDLY,ATT_NEUTRAL,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_FRIENDLY,ATT_NEUTRAL,ATT_NEUTRAL,
    ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_FRIENDLY,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_FRIENDLY,ATT_NEUTRAL,
    ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_NEUTRAL,ATT_FRIENDLY
};
По идее вот это как-то прописывает отношения между гильдиями. Но как-то слишком много записей для этого.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
STARK,
В декомпилированных скриптах не сохраняются комментарии, поэтому более понятно эта таблица выглядит в пакете GMDK
Массив отношений гильдий, где каждая строка и столбец означает определенную гильдию, а на их пересечении - выставлено отношение. Ну как таблица умножения нарисована в школьных тетрадках.
Daedalus:
CONST INT GIL_ATTITUDES_FMTAKEN [TAB_ANZAHL] =    // AL und NL feindlich
{       
//        None            EBr                Grd                Stt                KdF                Vlk                     KdW             Sld                Org             Bau             SfB                     Gur             Nov             Tpl                     Däm             Bab       
/*Non*/    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Non*/    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Non*/    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Non*/    ATT_NEUTRAL,    ATT_NEUTRAL,   
/*Ebr*/    ATT_HOSTILE,    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_HOSTILE,    ATT_FRIENDLY,    /*Ebr*/    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    /*Ebr*/    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    /*Ebr*/    ATT_HOSTILE,    ATT_NEUTRAL,   
/*Grd*/    ATT_HOSTILE,    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_HOSTILE,    ATT_FRIENDLY,    /*Grd*/    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    /*Grd*/    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    /*Grd*/    ATT_HOSTILE,    ATT_NEUTRAL,   
/*Stt*/    ATT_HOSTILE,    ATT_FRIENDLY,    ATT_NEUTRAL,    ATT_FRIENDLY,    ATT_HOSTILE,    ATT_NEUTRAL,    /*Stt*/    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    /*Stt*/    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    /*Stt*/    ATT_HOSTILE,    ATT_NEUTRAL,   
/*Kdf*/    ATT_FRIENDLY,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_FRIENDLY,    ATT_NEUTRAL,    /*Kdf*/    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    /*Kdf*/    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    /*Kdf*/    ATT_FRIENDLY,    ATT_NEUTRAL,   
/*Vlk*/    ATT_HOSTILE,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Vlk*/    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    /*Vlk*/    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    /*Vlk*/    ATT_HOSTILE,    ATT_NEUTRAL,   

/*Kdw*/    ATT_FRIENDLY,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_FRIENDLY,    ATT_HOSTILE,    /*Kdw*/    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Kdw*/    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    /*Kdw*/    ATT_FRIENDLY,    ATT_FRIENDLY,   
/*Sld*/    ATT_FRIENDLY,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_FRIENDLY,    ATT_HOSTILE,    /*Sld*/    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_NEUTRAL,    ATT_FRIENDLY,    ATT_FRIENDLY,    /*Sld*/    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    /*Sld*/    ATT_FRIENDLY,    ATT_FRIENDLY,   
/*Org*/    ATT_FRIENDLY,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_FRIENDLY,    ATT_HOSTILE,    /*Org*/    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    /*Org*/    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    /*Org*/    ATT_FRIENDLY,    ATT_FRIENDLY,   
/*Bau*/    ATT_FRIENDLY,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_FRIENDLY,    ATT_HOSTILE,    /*Bau*/    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    /*Bau*/    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Bau*/    ATT_NEUTRAL,    ATT_NEUTRAL,   
/*Sfb*/    ATT_FRIENDLY,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_FRIENDLY,    ATT_HOSTILE,    /*Sfb*/    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    /*Sfb*/    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Sfb*/    ATT_NEUTRAL,    ATT_NEUTRAL,   

/*Gur*/    ATT_FRIENDLY,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_FRIENDLY,    ATT_NEUTRAL,    /*Gur*/    ATT_ANGRY,        ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Gur*/    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    /*Gur*/    ATT_NEUTRAL,    ATT_NEUTRAL,   
/*Nov*/    ATT_FRIENDLY,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_FRIENDLY,    ATT_NEUTRAL,    /*Nov*/    ATT_ANGRY,        ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Nov*/    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    /*Nov*/    ATT_NEUTRAL,    ATT_NEUTRAL,   
/*Tpl*/    ATT_FRIENDLY,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_HOSTILE,    ATT_FRIENDLY,    ATT_NEUTRAL,    /*Tpl*/    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    /*Tpl*/    ATT_FRIENDLY,    ATT_FRIENDLY,    ATT_FRIENDLY,    /*Tpl*/    ATT_NEUTRAL,    ATT_NEUTRAL,   

/*Dmb*/    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Dmb*/    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_FRIENDLY,    /*Dmb*/    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Dmb*/    ATT_FRIENDLY,    ATT_NEUTRAL,   
/*Bab*/    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Mst*/    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Mst*/    ATT_NEUTRAL,    ATT_NEUTRAL,    ATT_NEUTRAL,    /*Mst*/    ATT_NEUTRAL,    ATT_FRIENDLY   

};
 

STARK

Участник форума
Регистрация
20 Янв 2011
Сообщения
556
Благодарности
142
Баллы
220
А какая реакция на параметры?
Ясно что к кому отношение Hostile, на того нападают.
Angry ?
Neutral - безразличие?
Friendly - за него заступаются?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Ясно что к кому отношение Hostile, на того нападают.
Или убегают.

Friendly - за него заступаются?
Если неписи относятся к ГГ дружественно, то могут простить ему некоторые шалости. Например,они не обращают внимание на вытащенное им оружие. Могут даже не отреагировать атакой на первый удар.

Почти ни на что не влияет.
 

STARK

Участник форума
Регистрация
20 Янв 2011
Сообщения
556
Благодарности
142
Баллы
220
Ситуация следующая: нужно избить одного из магов так, чтоб не агрились другие маги и наёмники.
В диалоге снимаю бессмертие: B_ClearImmortal(Kdw_602_Merdarion);
Меняю гильдию, чтоб другие не агрились: B_ChangeGuild(Kdw_602_Merdarion,GIL_NONE);
И тут возникает проблема: Мердарион бьёт кулаками, а не руной. Ставил фракции других магов, тот же результат. Сделал его магом Огня и дал ему руну Огненный Шар - начал бить ею, но так не правдоподобно:)
Пробовал найти в скриптах правила поведения разных фракций в бою, пока не нашел то что нужно.

Может, вот это AI_StartState(self,ZS_Attack,1,""); заменить на что-то другое?
 
Последнее редактирование:

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
И тут возникает проблема: Мердарион бьёт кулаками, а не руной.
Это особенность ИИ мод-фикса. Там выбор заклинания поставлен в соответствие с гильдией мага. Отсюда и невозможность выбрать заклинание в твоём случае. Нужно дорабатывать функцию выбора заклинания. Или попробовать обмануть ИИ, пометив мага, как бойца арены. Впрочем, второе, скорее всего, не сработает. Завтра отвечу подробнее.
 

STARK

Участник форума
Регистрация
20 Янв 2011
Сообщения
556
Благодарности
142
Баллы
220
Мне тут понадобилось вставить в мир предмет, который невозможно будет поднять.
Использую Wld_InsertItem(ITEM_01,"OMN_202"); .
После этого итем можно поднять.
Daedalus:
instance ITEM_01(C_Item)
{
    name = "Item01";
    mainflag = ITEM_KAT_FF;
    flags = ITEM_CROSSBOW;
    material = MAT_WOOD;
    value = 180;
    munition = ItAmBolt;
    visual = "ITEM_01.3ds";
    description = name;
};
Как видно, предмет является арбалетом, но это можно изменить, главное, чтоб его 3д модель отрисовывалась. Может через флаги можно установить отсутствие фокуса и возможности поднять предмет?
 

STARK

Участник форума
Регистрация
20 Янв 2011
Сообщения
556
Благодарности
142
Баллы
220
Последнее редактирование:

ElderGamer


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

Как видно из приведённого фрагмента, это константа. В скриптах мод-фикса она прописана. Достаточно использовать её в инстанции предмета:
Daedalus:
instance ITEM_01(C_Item)
{
    ...
    flags = ITEM_CROSSBOW | ITEM_NFOCUS;
    ...
};

Данный флаг устанавливается движком у экземпляров оружия при их экипировке и переводе в боевое положение. После этого предмет не берётся в фокус. Возможно, для твоей цели подойдёт.

И что означает 1 << 23 ?
Побитовый сдвиг. В младший разряд числа записывается единица, а затем сдвигается влево 23 раза. Получается число, среди битов которого всего одна единица на соответствующей позиции. Удобно для установки флагов.
 

STARK

Участник форума
Регистрация
20 Янв 2011
Сообщения
556
Благодарности
142
Баллы
220
Спасибо, работает. За разъяснение побитового сдвига отдельное спасибо.

Кстати, я заметил, что у меня стала работать функция AI_TurnToNPC(other,self); . Пока могу это объяснить только тем, что я теперь с Юнионом сижу.
 
Последнее редактирование:

STARK

Участник форума
Регистрация
20 Янв 2011
Сообщения
556
Благодарности
142
Баллы
220
Подскажите, можно ли через скрипты в диалоге сделать так, чтобы нпс подошел к ближайшему сундуку, открыл его, а потом закрыл?
Пробовал через B_StartUseMob(self,"CHEST"); с таким именем, а также с полным именем сундука, эффекта нет.
Можно конечно сделать имитацию, чтоб персонаж подходил к wp у сундука, дальше аниму приседания с поиском. Но это на крайний случай.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Из состояния охранника, приставленного к лебёдке:
Daedalus:
...
        // Поблизости от непися находится лебёдка -> взаимодействие с лебёдкой.
        if(Wld_IsMobAvailable(self,"VWHEEL"))
        {
            AI_UseMob(self,"VWHEEL",1);
            AI_Wait(self,0.5);
            AI_UseMob(self,"VWHEEL",-1);
        }
...

Для сундуков нужно прописать название "CHESTBIG" или "CHESSMALL".
 

STARK

Участник форума
Регистрация
20 Янв 2011
Сообщения
556
Благодарности
142
Баллы
220
Не работало, пока я не снял код с сундука. Теперь работает, спасибо.

Команда AI_EquipBestRangedWeapon(self); не работает на нпс маге. Можно экипировать ренжу как-то еще?
EquipItem тоже не работает нормально.

А кстати, щас попробую выкинуть магу руны.
Нет, не помогло.

По совету ElderGamer'а добавил в инвентарь стрелы, и AI_EquipBestRangedWeapon заработала.
 
Последнее редактирование:

STARK

Участник форума
Регистрация
20 Янв 2011
Сообщения
556
Благодарности
142
Баллы
220
Приветствую! У меня тут возникла проблемка. Хочу, чтоб после определенного диалога маги огня перестали выгонять из своего храма.
В диалоге устанавливаю PassToCorristo = TRUE; .
Влияет на этот блок:
Daedalus:
            // Реакция магов Огня на незаконное проникновение в их дом.
            if(self.guild == GIL_KDF)
            {
                if(Wld_GetPlayerPortalGuild() == GIL_KDF)
                {
                    if(!PassToCorristo)
                    {
                        if(self.npcType != npctype_friend)
                        {
                            B_FullStop(self);
                            if(Npc_GetAttitude(self,other) == ATT_FRIENDLY)
                            {
                                Npc_SetTempAttitude(self,ATT_NEUTRAL);
                            };
                            AI_StartState(self,ZS_ClearRoom,0,"");
                            return;
                        };
                    };
                };
            };
Но этого оказывается недостаточно, маги все равно агрятся, хоть и не так часто.
Далее пробовал прописать новую таблицу отношений Wld_ExchangeGuildAttitudes("GIL_ATTITUDES_MFIRE"); .
Там прописал отношение магов к своей фракции френдли.
Вроде заработало.
 
Последнее редактирование:

STARK

Участник форума
Регистрация
20 Янв 2011
Сообщения
556
Благодарности
142
Баллы
220
Есть ли способ сделать так, чтоб в диалоге камера следовала за собеседником? У меня собеседник выбегает за зону камеры (так надо), а камера остается на прежней позиции (так не надо):)
Пришлось добавить дополнительную строку диалога герою, чтоб камера вернулась к нему (герой к тому моменту подбегает к собеседнику). Но такое решение не безупречно и не всегда подходит.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.862
Благодарности
6.742
Баллы
1.625
STARK, Если только перекодировать camera.dat.
но если в gothic.dat все понятно, то в camera.dat без кропотливой работы - фиг разберешься.
Если я правильно помню, то там можно привязать поведение камеры к определенному диалогу, врать не буду, Может быть это и не так.
Если все делать через gothic.dat, то в спейсере, можно создать камеру с кадрами, и во время диалога запустить триггер, который запустит камеры...
Зная, что ты уже собрался править мир, то спейсер тебе в помощь ))
 
Сверху Снизу