QUAKE III

  MODIFICATION WORLD

                                Как сделать Инстагиб

ГЛАВНАЯ

НОВОСТИ

СТАТЬИ

МОДЫ

ФАЙЛЫ

ДЕМКИ

ФОРУМ

ГОСТЕВАЯ

ССЫЛКИ

МЫЛО

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


Этот пример показывает как убрать все оружие с карт идать игроку при респавне некоторое оружие(я). В нашем случае это Шафт(молния).


Файлы, которые нужно изменить:

g_client.c
g_items.c
g_combat.c

1. G_CLIENT.C

Сначала сделаем так, чтоб патроны у игрока не кончались. Т.к все обьекты с карты будут убраны.

Откройте
g_client.c и перейдите к обьявлению функции ClientSpawn(gentity_t *ent), строка 1159:

   
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;
}


Замените строки выше на эти:

  
// Даем всего одно оружие с 999 патронами
client->ps.stats[STAT_WEAPONS] = ( 1 << WP_LIGHTNING );
client->ps.ammo[WP_LIGHTNING] = 999;

 

Этот код дает игроку Шафт(молнию) при респавне плюс 999 патронов.

Теперь перейдем чуть ниже к строке
1185:
  
client->ps.weapon = WP_MACHINEGUN;
 

Отредактируйте ее соответственно:
  
client->ps.weapon = WP_LIGHTNING; 
 

2. G_ITEMS.C


Теперь откройте
g_items.c и найдите обьявление функции G_SpawnItem (gentity_t *ent, gitem_t *item).

Прямо вначале функции, до любого кода введите:

  void G_SpawnItem (gentity_t *ent, gitem_t *item) {
        if ( item->giType == IT_WEAPON || item->giType == IT_AMMO)
               return;
        G_SpawnFloat( "random", "0", &ent->random );
 


Это предотвращает появление любого оружия и патронов на карте, т.к. нам ничего кроме шафта не нужно)).



3. G_COMBAT.C


И последнее. Нужно сделать так чтоб оружие убитого игрока не выпадало. Во-первых, зачем оно нам нужно). Во-вторых, когда подберете его, ваши патроны уменьшаться до лимита (200), а это нам ни к чему:

Откройте g_combat.c, найдите функцию  TossClientItems  (строка 64) и добавьте строку выделенную цветом

gitem_t        *item;
int                weapon;     
float             angle;       
int                i;
gentity_t       *drop;                                                                                                   
// drop the weapon if not a gauntlet or machinegun
     weapon = self->s.weapon;

if (weapon == WP_LIGHTNING)
return;


Вот и все! Компилируйте и наслаждайтесь! За доп.вопросами дуйте на форум.

   

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

 Copyright (c)2003 MasTer

Хостинг от uCoz