QUAKE III

  MODIFICATION WORLD

                                Включаем Grappling Hook

 

ГЛАВНАЯ

НОВОСТИ

 СТАТЬИ

МОДЫ

 ФАЙЛЫ

ДЕМКИ

ФОРУМ

ГОСТЕВАЯ

ССЫЛКИ

МЫЛО

<<Предыдущая статья | Следующая статья>>

Исследуя исходники, можно обнаружить, что в Quake 3 есть некоторый интрумент(оружием это назвать нельзя), который, однако, не используется в игре, хотя модель для него есть в пак0(хоть и без текстур).Это Grappling Hook. Не буду пояснять, что это такое - сами увидите когда откомпилируете ). Звуки и эффекты оно использует от шафта. Этот инструмент можно получить либо помещая его на своей новой карте, либо с помощью изменений кода.
Сначала убедитесь, что вы используете проект
game, затем откройте файл g_client.c. Перейдите к функции void ClientSpawn(gentity_t *ent) и найдите эти строки:


client->ps.stats[STAT_WEAPONS] = ( 1 << WP_MACHINEGUN );
if ( g_gametype.integer == GT_TEAM ) {
      client->ps.ammo[WP_MACHINEGUN] = 50;
} else {
       client->ps.ammo[WP_MACHINEGUN] = 100;


Этот код дает игроку при респавне Пулемет и патроны(кол-во зависит от того, тимплей это или нет).

Чтобы дать Hook игроку(или любое другое оружие при респавне) добавьте следующую строку:


client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_GRAPPLING_HOOK ); 

Поместите эту строку сразу после тех, где дается Пулемет. Заметьте, что мы используем оператор
|= вместо =, как это сделано в оригинальном коде с пулеметом. Так как Пулемет добавляется ПЕРВЫМ, то мы можем использовать оператор присваивания =, но для дополнительных оружий мы должны использовать |= для того, чтоб добавление последующих оружий не замещало уже имеющееся. Если вы посмотрите на код ниже, то вы увидите, что , к примеру, Перчатка добавляется таким же способом, как я показал на примере с Hook'ом. Таким способом вы можете дать ироку при респавне любое оружие, меняя только WP_<название>.

Теперь откройте
g_items.c. Так как мы собираемся использовать некоторые модели и эффекты для Hook'а, которого нет на карте, нам нужно загрузить его в кеш. Также понадобится загрузить шафт, так как мы будем использовать его луч в качестве эффекта. Найдите ф-ю void ClearRegisteredItems( void ) и добавьте к списку регестрируемых оружий:


// Grappling Hook
RegisterItem( BG_FindItemForWeapon( WP_LIGHTNING ) );
RegisterItem( BG_FindItemForWeapon( WP_GRAPPLING_HOOK ) );



Вот список всех оружий, которые вы можете использовать в
g_client.c:

WP_GAUNTLET
WP_LIGHTNING
WP_SHOTGUN
WP_MACHINEGUN
WP_GRENADE_LAUNCHER
WP_ROCKET_LAUNCHER
WP_PLASMAGUN
WP_RAILGUN
WP_BFG
WP_GRAPPLING_HOOK


Надеюсь вам понравиться юзать grappling hook, которая выбирается нажатием клавиши 0 (или, если не работает, попробуйте /weapon 10 в консоли).

<<Предыдущая статья | Следующая статья>>

 Copyright (c)2003 MasTer

Хостинг от uCoz