Регистрация - или - Войти

Восстановить пароль
×

Для восстановления пароля необходимо ввести логин или почту, которую Вы вводили при регистрации. После это, на Ваш почтовый ящик будет отпрвлено письмо с кодом.

Логин или почта :

RE6 Ultimate Shader PackageRE6 Ultimate Shader Package

Пакет улучшенных шейдеров для корректного отображения модов в игре....

1/07/2013
Life’s EndLife’s End

Мод о событиях в Black Mesa, выполненный с долей юмора...

1/07/2005
Статистика ( по source моделям ), шт.

Мне не нравится, как переключается оружие в ХЛ. Может, кому-то и интересно тыкать по менюшкам худа, но мне больше нравится реализация переключения в Unreal RTN, Quake Mission Packs и HL2


  • Описание
  • КАК УСТАНОВИТЬ

Переключение оружия a la HL2

Мне не нравится, как переключается оружие в ХЛ. Может, кому-то и интересно тыкать по менюшкам худа, но мне больше нравится реализация переключения в Unreal RTN, Quake Mission Packs и HL2


Автор / ы урока : Scrama
Просмотров : 3672 ( +1 )
Прислал / (а) : Streit
Дата создания : 07.04.2011 21:25:14
Источник : http://www.hlfx.ru/forum...
Рейтинг :
 ( 5 ) 
Поделиться :


Имеются следующие переводы : | русский |

Мне не нравится, как переключается оружие в ХЛ. Может, кому-то и интересно тыкать по менюшкам худа, но мне больше нравится реализация переключения в Unreal RTN, Quake Mission Packs и HL2. Сейчас я расскажу как это сделать. Работать придется только на клиенте, с файлом ammo.cpp. Для того, чтоб нормально переключится на следующее оружие в слоте, нам нужно знать какое мы держим в руках. На клиенте уже принимается и обрабатывается сообщение о текущем оружии, но данные заносятся в private переменную и в SelectSlot мы ее прочитать не можем. Можно сделать эту переменную (CHudAmmo.m_pWeapon) public, но я решил просто завести новую. Итак, находим строчки (сразу после #include'ов)

Code:

WEAPON *gpActiveSel;// NULL means off, 1 means just the menu bar, otherwise
// this points to the active weapon menu item
WEAPON *gpLastSel;// Last weapon menu selection

и дописываем туда еще одну переменную

Code:

WEAPON *gpCurWeapon;// Just a current weapon

Теперь нужно в нее заносить значения, для этого ищем функцию

Code:

int CHudAmmo::MsgFunc_CurWeapon(const char *pszName, int iSize, void *pbuf )

И находим в ней присвоение

Code:

m_pWeapon = pWeapon;

после которого пишем свое:

Code:

gpCurWeapon = pWeapon;

На этом приготовления кончились, но для меня оказались самой сложной частью =) Тепрь идем в функцию

Code:

void WeaponsResource :: SelectSlot( int iSlot, int fAdvance, int iDirection )

и будем работать с ней. Так как у любого нововведения найдутся противники, с нашей стороны будет мудро не лишать их стандартных алгоритмов переключения оружия %/ Для этого мы позволим консольной переменной принмать значение 2. Вернее, значение она и так может принимать любое вещественное, но вот в коде она считывается в bool. Найдем это место

Code:

bool fastSwitch = CVAR_GET_FLOAT( "hud_fastswitch" ) != 0;

и просто заменим ее на

Code:

int fastSwitch = CVAR_GET_FLOAT( "hud_fastswitch" );

Чуть ниже есть такой код:

Code:

if ( !p2 )
{// only one active item in bucket, so change directly to weapon
   ServerCmd( p->szName );
   g_weaponselect = p->iId;
   return;
}

Он отвечает за быстрое переключение оружия, если в указанном слоте только один ствол. Ровно после закрывающей скобочки добавляем следующий код:

Code:

else if ( fastSwitch > 1 )
{
   if (gpCurWeapon ->iSlot == iSlot)// Scrama: if current weapon is in selected slot
   {
     p = GetNextActivePos( gpCurWeapon->iSlot, gpCurWeapon->iSlotPos );
     // switch to next active position
     if ( !p ) p = GetFirstPos( gpCurWeapon->iSlot );
       // if no next active position then switch to first weapon in slot
       ServerCmd( p->szName );
     g_weaponselect = p->iId;
     return;
   }
   else // Other slot
   {
     ServerCmd( p->szName );
     g_weaponselect = p->iId;
     return;
   }
}

Теперь можно компилировать и наслаждаться правильным переключением пушек. И не забудьте прописать в консоли hud_fastswitch 2, иначе все будет как прежде =).



Похожие1. Добавление новых классов для монстр - Мы будем добавлять новый класс Блэк Опс из Оппосинг Форс
2. учёные не отставали - Как сделать так, чтобы учёные не отставали на каждом препятствии
3. Спрыгивающий Headcrab - Наверняка каждый, кто поиграл в Half-Life2 хотел, чтобы хедкрабы спрыгивали с зомбяков и в первом Half-Life
4. Больше слотов и позиций для оружия - Больше слотов и позиций для оружия
5. Замедление игрока - Довольно забавно наблюдать, как игрок одинаково быстро бегает как с монтировкой в руках, так и с тяжелой базукой, хотя логичнее, что держа в руках сей девайс, он будет бегать медленнее
6. Мазлфлэш на брашах - Мазлфлэш на брашах
7. Water Splash - Добавляем брызги при выстреле по воде
8. Звук попадания как в HL2 - Работа на клиенте
9. Добавление эффектов блеска для энтити (entity) - Данная статья - перевод урока от OsirisGodoftheDead с ModDB...
Вы не можете комментировать, т.к. вы не зарегистрированы.
    SteamWorld Dig (Раздача в Steam)
    SteamWorld Dig (Раздача в Steam)
    A>> M4 SR-16 Lv2 [Chicago Typewriter]
    Resident Evil 4A>> M4 SR-16 Lv2 [Chicago Typewriter]
    Знак: "Кто не закрыл, тот пидор"
    Half-Life 2Знак:
    Карта попала на премодерацию
    Карта попала на премодерацию