|
Настройка системы Учитывая то, что у нас есть весь необходимый софт и мы умеем компилировать проекты и создавать QVM, можно приступать к созданию наших собственных модов. Конечно, рассмотренный мною мод будет до безобразия простым. Но на первый раз тебе будет достаточно "пищи для ума". А попробуем мы с тобой создать мод, где ракеты будут медленно летать.
Сделай копию исходного кода! Очень удобно держать под боком нетронутую копию исходного кода. Представь, что ты создал мод, и запорол один из файлов, и чтобы вернуть все изменения, тебе понадобится BACKUP, верно? Конечно, можно заново поставить Q3AGameSource, но это быстро надоедает. Поэтому, я советую не создавать моды в папке c:quake3source, а сохранить её как копию. Моды будем делать в отдельных директориях, например, c:quake3slow (это относится к нашему сегодняшнему моду). Теперь скопируй содержимое папки source в slow, и если ты испортишь хоть один файл, всегда можно будет его быстро восстановить.
шКодинг 1. Открой файл game.dsp, который находится в c:quake3slowсodegame; 2. Нажми "File View", и в папке "Header Files" выбири и дважды кликни на файл 'g_local.h'; 3. Установи значение GAMEVERSION на Slow:
#define GAMEVERSION "Slow"
Этим мы указываем, в какой папке лежит наш мод; 4. Теперь открой файл 'g_missile.c' из папки "Sourse Files"; 5. Перейди к строке 621 и найди функцию fire_rocket. Для быстрого перехода нажми "CRTL + G";
Также, очень удобно использовать WinzardBar (он находится на туллбаре, я его специально вынес)
А вот и сама функция:
gentity_t *fire_rocket (gentity_t *self, vec3_t start, vec3_t dir) { gentity_t *bolt;
VectorNormalize (dir);
bolt = G_Spawn(); bolt->classname = "rocket"; bolt->nextthink = level.time + 15000; bolt->think = G_ExplodeMissile; bolt->s.eType = ET_MISSILE; bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN; bolt->s.weapon = WP_ROCKET_LAUNCHER; bolt->r.ownerNum = self->s.number; bolt->parent = self; bolt->damage = 100; bolt->splashDamage = 100; bolt->splashRadius = 120; bolt->methodOfDeath = MOD_ROCKET; bolt->splashMethodOfDeath = MOD_ROCKET_SPLASH; bolt->clipmask = MASK_SHOT; bolt->target_ent = NULL;
bolt->s.pos.trType = TR_LINEAR; bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; VectorCopy( start, bolt->s.pos.trBase ); VectorScale( dir, 900, bolt->s.pos.trDelta ); SnapVector( bolt->s.pos.trDelta ); VectorCopy (start, bolt->r.currentOrigin);
return bolt; }
Как видишь, ракета наносит 100 урона, радиус ближнего повреждения 120 юнитов. Также присутствует целая уйма констант, используемых в данной функции (константы обычно написаны ПРОПИСНЫМИ буквами). Константы в основном имеют мнемоничные имена, поэтому легко угадать их назначение.
6. Теперь, обрати внимание на строку под номером 649. В ней показанно, что ракета летит со скоростью 900 юнитов/сек. Вот её то мы и будем менять. Измени значение 900 на 300:
VectorScale( dir, 300, bolt->s.pos.trDelta );
Последние штрихи Сохраняй все свои изменения. Нам осталось только создать QVM файл, как это сделать, рассказано в предыдущей статье. После компиляции, забирай qagame.qvm из c:quake3baseq3vm и перемести его в c:quake3slowvm. Для того чтобы Квака увидела наш мод, помести его в .pk3 файл, как это сделать, рассказано в ЧаВе. Осталось опробовать наш мод в действии - запускай кваку с параметром c:quake3quake3.exe +set fs_game slow или выбери свой мод из кваковского меню.
Вуаля! Теперь твои ракеты тащятся как черепахи:) Советую поиграться с этим примером - можно сделать много чего интересного.
Автор: MasTer (cubik@list.ru) Статья взята с айта: quake3radiant.by.ru
Автор: MasTer Вернутся назад |
Счётчик |
Сегодня : |
Хитов : | 381 |
Хостов : | 322 |
Онлайн : | 25 |
Всего : |
Хитов : | 37 |
Хостов : | 21 |
Рекорд : 28 посетителей одновременно 29.03.2024 (03:50) |
Другие счётчики
|
|