Новые типы патронов
И так начнём пожалуй.Это мой первый тутор, так что непинать очень сильно.
Каждый хоть раз добавлял в Хл новое оружие но ему ненравилось что оно
или слишком мощно стреляет или слишком слабо.Я подумал и решил всё таки
написать тутор.
Вообщето ето очень просто.И делать тут практически ничего ненадо.
Первое.Откроем файл с вашим оружием.
Например: python.срр
И найдем там строку
C++ Source Code: vecDir
= m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming,
VECTOR_CONE_1DEGREES, 8192, BULLET_PLAYER_357, 0, 0, m_pPlayer->pev,
m_pPlayer->random_seed );
Нашли? Так теперь заменим BULLET_PLAYER_357 на своё название патронов.Например: BULLET_PLAYER_358.
Далее.Откроем файл: combat.cpp
И где-то после строки 1576 добавим ето
C++ Source Code: case BULLET_PLAYER_358: pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg358, vecDir, &tr, DMG_BULLET); break;
Как вы заметили там есть строчка gSkillData.plrDmg358.Но к ней мы вернёмся попозже.
Сейчас откройте файл weapons.cpp и идите настроку 179
и после BULLET_PLAYER_357:
добавте BULLET_PLAYER_358:
Теперь откроем файл weapons.h строка 188
и после BULLET_PLAYER_357, // python
добавить BULLET_PLAYER_358, // наш тип патронов
Так теперь вернёмся к gSkillData.plrDmg358
Откроем файл skill.h
найдём 97 строку и в конце
после float plrDmgTripmine;
добавим float plrDmg358;
Далее откроем файл game.cpp
к строке 371
И после // Tripmine
Добавим
C++ Source Code: //358 cvar_t sk_plr_358_1 = {"sk_plr_358_1","0"}; cvar_t sk_plr_358_2 = {"sk_plr_358_2","0"}; cvar_t sk_plr_358_3 = {"sk_plr_358_3","0"};
Далее спускаемя на строчку 840
И после //Tripmine
Добавим
C++ Source Code: //358 CVAR_REGISTER ( &sk_plr_358_1 ); CVAR_REGISTER ( &sk_plr_358_2 ); CVAR_REGISTER ( &sk_plr_358_3 );
Так осталось совсем чуть-чуть.
Откроем gamerules.cpp и пойдем к строчке 270
После //Tripmine
Добавим
C++ Source Code: //358 gSkillData.plrDmg358 = GetSkillCvar( "sk_plr_358_");
Фактически мы можем уже компилить.И если у вас всё скомпилилось.Идём дальше.В самом Хл открываем файл skill.cfg
и в конце добавляем:
//358 ammo
sk_plr_358_1 "30"
sk_plr_358_2 "25"
sk_plr_358_3 "20"
И запомните что цыфры 30,25,20 могут быть любыми.Они означяют сколько урона нанесёт оружии при каждой сложности игры.
Фуууух ну вот и всё я думаю.
Удачи вам при создании новых типов патронов.
Открываем Клиентскую часть.
Открываем файл ev_hldm.cpp
Ищем строчку 299
И после
C++ Source Code: case BULLET_PLAYER_357:
вставляем
C++ Source Code: case BULLET_PLAYER_358:
Далее ищем строчку 434 и после
C++ Source Code: case BULLET_PLAYER_357: EV_HLDM_PlayTextureSound( idx, &tr, vecSrc, vecEnd, iBulletType ); EV_HLDM_DecalGunshot( &tr, iBulletType );
break;
Вставляем
C++ Source Code: case BULLET_PLAYER_357: EV_HLDM_PlayTextureSound( idx, &tr, vecSrc, vecEnd, iBulletType ); EV_HLDM_DecalGunshot( &tr, iBulletType );
break;
Далее открываем ev_hldm.h
Ищем строку 17 и после
C++ Source Code: BULLET_PLAYER_CROWBAR, // crowbar swipe
вставляем
C++ Source Code: BULLET_PLAYER_358, // наш тип патронов
Вот и всё.Можете смело компилить оба проекта.
Только незабудте в ev_hldm.cpp где ваше оружие поменять дефаултный тип патронов на свой.
Например у Револьвера ето строка 798.
Вот теперь я думаю всё.Кому надо тот поймёт как создавать новые типы патронов, а кто умнее может ещё и декали пропишет новые.
В коде пушки изменяем строку :
C++ Source Code: p->pszAmmo1 = "Патроны";
И в конце где патроны :
C++ Source Code: int bResult = (pOther->GiveAmmo( AMMO_XXX_GIVE, "Патроны", _XXX_MAX_CARRY) != -1);
Также незабудте залинковать их как ентитю : LINK_ENTITY_TO_CLASS( ammo_вашеназвание, CWeapAmmo );
Незабудте это дело запрекашить. Вот и всё. |