|
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 * * * * * * };
Примечание: Свои комментарии я буду располагать в строке с переменной, а комментарии на немецком языке (если они есть), в следующей строке. Если я буду в чем-то ошибаться, то поправляйте, если немецкий комментарий более подробно описывает переменную, то его желательно перевести (может уже у кого-то есть переведенные или кто-нибудь сможет переводить по ходу дела). Я немецкий абсолютно не понимаю (он меня раздражает *>:(). Если про переменную ничего не сказано, значит мне пока про нее сказать нечего. То, что помечается ??? требует дополнительных комментариев.
ЗЫ: Мучился, мучился, но так и не понял, как правильно форматировать текст? *::)
|