
ГЛАВНАЯ
НОВОСТИ
СТАТЬИ
МОДЫ
ФАЙЛЫ
ДЕМКИ
ФОРУМ
ГОСТЕВАЯ
ССЫЛКИ
МЫЛО
|
<<Предыдущая
статья | Следующая
статья>>
Исследуя исходники, можно
обнаружить, что в 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 в
консоли).
<<Предыдущая
статья | Следующая
статья>>
|