|
Как создавался BOUNCEMOD Для создания данного мода потребуется сделать три идентичных изменения в коде. Это касается плазмы, базуки и BFG. Но, чтобы не писать много раз одно и тоже, я покажу всё это на примере рокетлаунчера.
Добавление нового флага Открывай 'g_local.h', переходи к строке 32 и добавь строки, помеченные синим цветом:
// gentity->flags ... #define FL_NO_HUMANS 0x00004000 // spawn point just for bots #define FL_ROCKETBOUNCE 0x00008000 //boncemod #define FL_PLASMABOUNCE 0x00020000 //boncemod #define FL_BFGBOUNCE 0x00040000 //boncemod ...
Внедряем команды Теперь, нам нужно добавить команду 'rbounce'. Для этого открывай 'g_cmds.c' и добавляй следующий код в районе 1548 строки:
/* = = = = = = = = = = = = = = = = = Cmd_RBounce_f = = = = = = = = = = = = = = = = = */
void Cmd_RBounce_f( gentity_t *ent ) {
char *msg; // message to player
ent->flags ^= FL_ROCKETBOUNCE;
if (!(ent->flags & FL_ROCKETBOUNCE)) msg = "Rocket Bounce OFFn"; else msg = "Rocket Bounce ONn"; trap_SendServerCommand( ent-g_entities, va("print "%s"", msg)); } Переходи к 1727 строке и добавляй:
... else if (Q_stricmp (cmd, "setviewpos") == 0) Cmd_SetViewpos_f( ent ); else if (Q_stricmp (cmd, "rbounce") == 0) Cmd_RBounce_f( ent ); ...
Данные манипуляции позволят игроку включать и отключать отскок ракет консольной командой 'rbounce'. Аналогичные команды для плазмы и BFG.
Изменяем физику Открой уже знакомый нам файл 'g_missile.c' и переходи к функции 'fire_rocket'. Добавь синие строчки в свой код:
... bolt = G_Spawn(); bolt->classname = "rocket"; if (self->flags & FL_ROCKETBOUNCE) bolt->nextthink = level.time + 2500; else bolt->nextthink = level.time + 10000; bolt->think = G_ExplodeMissile; bolt->s.eType = ET_MISSILE; bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN; bolt->s.weapon = WP_ROCKET_LAUNCHER; if (self->flags & FL_ROCKETBOUNCE) bolt->s.eFlags = EF_BOUNCE; bolt->r.ownerNum = self->s.number; ...
Итак, условие if (self->flags & FL_ROCKETBOUNCE) включен ли клиент FL_ROCKETBOUNCE, если да, то ракета взорвётся через 2.5 (вместо 10, как обычно). Наиболее интересная часть - это добавление к ракете эффекта EF_BOUNCE. Данная функция была написана програмёрами ID Software и мы без труда можем её использовать. Советую также заглянуть в 'bg_public.h', там, начиная с 221 строки, идут обьявления всех EF_ флагов.
Вот собственно и все. Если ты понял, как действуют команды, то без труда сможешь добавить к списку плазму и т.д. Осталось только откомпилировать qvm файл и наслаждаться.
Автор: MasTer (cubik@list.ru) Статья взята с айта: quake3radiant.by.ru
Автор: MasTer
Прочитать полный Версия для печати [<<<][1 |2 |3 |4 ][>>>] Добавление комментария
|
Счётчик |
Сегодня : |
Хитов : | 1389 |
Хостов : | 659 |
Онлайн : | 16 |
Всего : |
Хитов : | 60800 |
Хостов : | 24202 |
Рекорд : 60 посетителей одновременно 02.05.2024 (23:36) |
Другие счётчики
|
|