1. Класс параметров НПС. ^
const int MAX_CHAPTER = 5; //Макс. количество глав в игре (не используется)
const int MAX_MISSIONS = 5; //Макс. количество одновременно выполняемых миссий
const int MAX_HITCHANCE = 5; //Макс. размерность массива способностей владения видами оружия
class C_NPC
{
var int id; //Однозначный идентификатор, связывающий конкретного НПС с его параметрами
var string name[5]; //Имя НПС, оно появляется на экране, если НПС находится в фокусе
var string slot; //(не используется) Можно использовать для хранения какой-нибудь строки текста!
var string effect; //Имя визуального эффекта, привязанного к НПС
var int npcType; //Тип НПС (описывается в файле ..AI\AI_Intern\AI_Constants.d)
var int flags; //Флаги НПС (NPC_FLAG_IMMORTAL, NPC_FLAG_GHOST)
var int attribute[ATR_INDEX_MAX]; //Массив значений атрибутов (ATR_HITPOINTS, ATR_MANA, ATR_STRENGTH и т.д.)
var int HitChance[MAX_HITCHANCE]; //Способность владения НПС определенным оружием
var int protection[PROT_INDEX_MAX]; //Массив значений защиты от определенных повреждений
var int damage[DAM_INDEX_MAX]; //Массив значений наносимых повреждений
var int damagetype; //Тип повреждения (НПС наносит в данный момент)
var int guild; //Принадлежность к гильдии
var int level; //Уровень НПС
var func mission[MAX_MISSIONS]; //(не используется)
var int fight_tactic; //Тактика сражения (описывается в файле ..AI\AI_Intern\AI_Constants.d)
var int weapon; //(не используется)
var int voice; //Номер голоса в диалогах
var int voicePitch; //Тональность голоса
var int bodymass; //(не используется)
var func daily_routine; //Функция распорядка дня
var func start_aistate; //Функция начального AI состояния (ZS_ функции)
var string spawnPoint; //Имя Waypoint, в котором рождается НПС
var int spawnDelay; //Задержка в секундах между смертью и возрождением НПС
var int senses; //Чувства (зрение, слух, обоняние)
var int senses_range; //Диапазон чувств в см.
var int aivar[100]; //Массив значений AI переменных (описывается в файле ..AI\AI_Intern\AI_Constants.d), неиспользуемые индексы могут
использоваться для собственных целей.
var string wp; //Текущий Waypoint, в котором находится НПС (отслеживается Gothic.exe)
var int exp; //Количество полученной экспы (только для ГГ)
var int exp_next; //Количество экспы оставшееся до следующего уровня (только для ГГ)
var int lp; //Свободные очки обучения (только для ГГ)
var int bodyStateInterruptableOverride; //Флаг возможности прерывания действия НПС (если TRUE - НПС прервать нельзя)
var int noFocus; //Флаг, отвечающий за фокус (если TRUE и НПС находится в фокусе, то у НПС не показывается имя и количество жизни)
};
2. Класс миссий (не используется). ^
class C_MISSION
{
var string name;
var string description;
var int duration;
var int important;
var func offerConditions;
var func offer;
var func successConditions;
var func success;
var func failureConditions;
var func failure;
var func obsoleteConditions;
var func obsolete;
var func running;
};
3. Класс параметров предмета. ^
class C_ITEM
{
var int id; //Однозначный идентификатор, связывающий конкретный предмет с его параметрами
var string name; //Имя предмета, оно появляется на экране, если предмет находится в фокусе
var string nameID; //(не используется) Можно использовать для хранения какой-нибудь строки текста!
var int hp,hp_max; //???
var int mainflag; //Флаги категории предмета
var int flags; //Остальные флаги предметов
var int weight,value; //Вес и стоимость предмета
var int damageType; //Тип наносимого повреждения (используется для оружия)
var int damageTotal; //Суммарное повреждение (используется для оружия)
var int damage[DAM_INDEX_MAX]; //Величина ущерба по типам повреждений (используется для оружия)
var int wear; //Флаги ношения предмета
var int protection[PROT_INDEX_MAX]; //Величина защиты от конкретных повреждений (используется для брони)
var int nutrition; //(не используется)
var int cond_atr[3]; //Массив атрибутов, требуемых для применения
var int cond_value[3]; //Массив значений атрибутов, требуемых для применения
var int change_atr[3]; //(не используется)
var int change_value[3]; //(не используется)
var func magic; //(не используется)
var func on_equip; //Функция вызываемая при экипировке
var func on_unequip; //Функция вызывается, когда предмет снимается или убирается в инвентарь
var func on_state[4]; //Функции вызываемые при использовании предмета по видам состояний (видов состояний не обнаружил ???)
var func owner; //Владелец предмета, записывается ID НПС (не понятен тип переменной FUNC ???)
var int ownerGuild; //Какой гильдии принадлежит предмет
var int disguiseGuild; //(не используется)
var string visual; //Имя .3DS файла текстур предмета
var string visual_change; //Имя .ASC файла визуальных эффектов при получении этого предмета
var string effect; //Имя визуального эффекта, привязанного к предмету
var int visual_skin; //Вариация текстуры для .3DS файла текстур предмета
var string scemeName; //Внутреннее имя предмета
var int material; //Материал предмета
var int munition; //Тип заряда для оружия дальнего радиуса поражения
var int spell; //Номер заклинания, которое вызывает данный предмет
var int range; //Радиус поражения оружием ближнего боя
var int mag_circle; //Круг магии, к которому принадлежит предмет
var string description; //Название предмета в инвентаре
var string text[ITM_TEXT_MAX]; //Массив строк описания предмета в инвентаре
var int count[ITM_TEXT_MAX]; //Массив значений характеристик предмета в инвентаре (соответствует определенной текстовой строке)
Характеристики изображения предмета в инвентаре
var int inv_zbias; //Масштаб предмета в инвентаре
var int inv_rotx; //Поворот предмета в инвентаре относительно оси X
var int inv_roty; //Поворот предмета в инвентаре относительно оси Y
var int inv_rotz; //Поворот предмета в инвентаре относительно оси Z
var int inv_animate; //Вращение предмета в инвентаре
};
4. Класс параметров фокуса. ^
class C_FOCUS
{
для НПС
var float npc_longrange; //Ширина
var float npc_range1,npc_range2; //Диапазон дальности
var float npc_azi; //Азимут
var float npc_elevdo,npc_elevup; //Тангаж
var int npc_prio; //Приоритет
для предметов
var float item_range1,item_range2; //Диапазон дальности
var float item_azi; //Азимут
var float item_elevdo,item_elevup; //Тангаж
var int item_prio; //Приоритет
для MOB's
var float mob_range1,mob_range2; //Диапазон дальности
var float mob_azi; //Азимут
var float mob_elevdo,mob_elevup; //Тангаж
var int mob_prio; //Приоритет
};
5. Класс параметров диалогов. ^
class C_INFO
{
var int npc; //ID НПС, которому принадлежит диалог
var int nr; //Опция диалога с большим nr будет отображаться в списке ниже
var int important; //Флаг начала диалога (TRUE - диалог начинаешь ты, FALSE - с тобой)
var func condition; //Функция проверки условий начала диалога (пока функция не возвратит TRUE, диалог не начнется)
var func information; //Функция управления диалогом
var string description; //Строка, которая выводится в окно выбора вариантов ответов
var int trade; //Возможность торговли (TRUE - возможно торговать, FALSE - нет)
var int permanent; //Постоянность диалога (TRUE - диалог повторяется при каждом обращении, FALSE - однократный)
};
6. Класс реакций на предметы (не используется). ^
class C_ITEMREACT
{
var int npc;
var int trade_item;
var int trade_amount;
var int requested_cat;
var int requested_item;
var int requested_amount;
var func reaction;
};
7. Класс параметров заклинаний. ^
class C_SPELL
{
var float time_per_mana; //Время в мс, требуемое для инвестирования маны на один уровень
var int damage_per_level; //Наносимый урон за уровень заклинания
var int damageType; //Тип повреждения
var int spellType; //Категория заклинания
var int canTurnDuringInvest; //Возможность поворота во время инвестирования маны (TRUE - возможно)
var int canChangeTargetDuringInvest; //Возможность выбора цели во время инвестирования маны (TRUE - возможно)
var int isMultiEffect; //Возможность мультиэффектов заклинания (множественные цели и др.)
var int targetCollectAlgo; //Константа описания цели
var int targetCollectType; //Тип цели заклинания
var int targetCollectRange; //Дальность действия
var int targetCollectAzi; //Угол азимута
var int targetCollectElev; //Угол тангажа
};
8. Глобальные ссылки на классы. ^
instance self,other(C_NPC); // Сам НПС и Другой НПС
instance victim(C_NPC); // НПС - жертва определенного действия (3ий в действии)
instance item(C_ITEM); // Сам предмет
instance hero(C_NPC); // Сам ГГ (игрок)