Показать сообщение отдельно
Старый 22.10.2004, 09:19   #10
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

Новых предложений нет, значит продолжим.

Дополнение к четвертой теме:
Существует несколько главных файлов .SRC, их имена изменять нельзя. Это в папке Content - gothic.src и fight.src, а в папке System - camera.src, menu.src, music.src, sfx.src, visualfx.src и particlefx.src - из них компилируются соответствующие *.dat файлы.
Дальше будем рассматривать базовые классы и функции. Все конкретные классы и функции будут относиться только к скриптам gothic.src. Остальные скрипты пока рассматривать не будем, может потом в этом появится необходимость.
Небольшое замечание: В скриптах кол-во локальных переменных в блоке и размерность любого массива ограничены числом 4095.

Тема пятая: Классы.

Структура класса должна быть всем понятна, (если нет, то спрашивайте), поэтому перейдем к рассмотрению базовых классов. Их всего девять - C_NPC, C_ITEM, C_MISSION, C_SPELL, C_INFO, C_SVM, C_FOCUS, C_ITEMREACT, C_GILVALUES. Из названий большинства из них, понятно, что они описывают.

Рассмотрим класс C_NPC, который описывает параметры всех npc в игре, включая ГГ.

CLASS C_NPC
{
*VAR INT * * *id; * * * * * * * * * * * * //идентификатор, у каждого npc свой
* * *//absolute ID des NPCs
*VAR STRING * name[5]; * * * * * * * * * *//массив из 5 имен
* * *//Namen des NPC
*VAR STRING * slot; * * * * * * * * *
*VAR INT * * *npcType; * * * * * * * * * *//тип
*VAR INT * * *flags; * * * * * * * * * * *//флаги ??? * * *
*VAR INT * * *attribute[ATR_INDEX_MAX]; * //атрибуты (8 максимум) * * * * * *
*VAR INT * * *protection[PROT_INDEX_MAX]; //защита (кол-во защит зависит от видов урона)
*VAR INT * * *damage[DAM_INDEX_MAX] ; * * //урон
*VAR INT * * *damagetype; * * * * * * * * //тип урона
*VAR INT * * *guild,level; * * * * * * * *//гильдия и уровень
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*VAR FUNC * * mission[MAX_MISSIONS]; * * *//миссии (5 максимум)
*VAR INT * * *fight_tactic; * * * * * * * //тактика владения оружием
*VAR INT * * *weapon; * * * * * * * * * * //выбранное оружие
*VAR INT * * *voice; * * * * * * * * * * *//номер голоса
*VAR INT * * *voicePitch; * * * * * * * * //тон голоса
*VAR INT * * *bodymass; * * * * * * * * * //вес тела ??? * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*VAR FUNC * * aily_routine; * * * * * * * //какая-то ежедневная функция ???
* * *//Tagesablauf
*VAR FUNC * * start_aistate; * * * * * * *//функция начального AI состояния ???
* * *//Zustandsgesteuert
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *// ********************** * * * * * * * * * * * * * * *
* * *// Spawn * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * *// ********************** * * * * * * * * * * * * * * *
*VAR STRING * spawnPoint; * * * * * * * * //место рождения ???
* * *//Beim Tod, wo respawnen ?
*VAR INT * * *spawnDelay; * * * * * * * * // ???
* * *//Mit Delay in (Echtzeit)-Sekunden
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * *// ********************** * * * * * * * * * * * * * * *
* * *// SENSES * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * *// ********************** * * * * * * * * * * * * * * *
*VAR INT * * *senses; * * * * * * * * * * //чувствительность ???
* * *//Sinne
*VAR INT * * *senses_range; * * * * * * * //диапазон чувствительности
* * *//Reichweite der Sinne in cm
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * *// ********************** * * * * * * * * * * * * * * *
* * *// Feel free to use * * * * * * * * * * * * * * * * * * * * *
* * *// ********************** * * * * * * * * * * * * * * *
*VAR INT * * *aivar[50]; * * * * * * * * *//массив AI переменных * * * * * * * * * * * * * * * * * * *
*VAR STRING * wp; * * * * * * * * * * * * //точка привязки
* * *
* * *// ********************** * * * * * * * * * * * * * * *
* * *// Experience dependant * * * * * * * * * * * * * * * * * *
* * *// ********************** * * * * * * * * * * * * * * *
*VAR INT * * *exp; * * * * * * * * * * * *//текущая экспа
* * *//EXerience Points
*VAR INT * * *exp_next; * * * * * * * * * //сколько нужно экспы до следующего уровня
* * *//EXerience Points needed to advance to next level
*VAR INT * * *lp; * * * * * * * * * * * * //кол-во очков обучения
* * *//Learn Points * * * * * *
};

Примечание: Свои комментарии я буду располагать в строке с переменной, а комментарии на немецком языке (если они есть), в следующей строке. Если я буду в чем-то ошибаться, то поправляйте, если немецкий комментарий более подробно описывает переменную, то его желательно перевести (может уже у кого-то есть переведенные или кто-нибудь сможет переводить по ходу дела). Я немецкий абсолютно не понимаю (он меня раздражает *>:(). Если про переменную ничего не сказано, значит мне пока про нее сказать нечего.
То, что помечается ??? требует дополнительных комментариев.

ЗЫ: Мучился, мучился, но так и не понял, как правильно форматировать текст? *::)
Ответить с цитированием