всем привет это я илья2 и сегодня мы будем добавлять плазменную винтовку на half-life 1
плазменную винтовку я делал сам ничего не у кого не украл тупо сам но правда только
ресурсы не мои а из мода hlwe ну и чуток создал свои но тоже из этого мода взял думаю
добавление разнообразия в халфе не помешает .
Ладно начнём первым делом пажлуй начнем с добавления патронов в sdk или как его
можно назвать исходники халфы неважно. Заходим в cbase.h ищем int ammo_argrens;
после него ставим свое int ammo_plasma; после заходим в client.cpp ищем
if ( pl->m_pActiveItem->m_iId == WEAPON_RPG ) после вставляем свое
теперь идем в weapons.h ищем #define HIVEHAND_DEFAULT_GIVE 8
ставим #define AMMO_PLASMARIFLE_GIVE 30 это количество подбираемых патронов
все с патронами мы закончили теперь начинаем добвалять основные компоненты оружия
идем в player.cpp ищем тот код который мы дабовляли ранее GiveNamedItem( "ammo_plasma" );
и ставим GiveNamedItem( "weapon_plasmarifle" );
теперь идем в weapons.cpp находим #include "gamerules.h" после него ставим #include "plasmarifle_weapon.h"
это информация для основных компонентов моделей выстрела
теперь идем в DLL_GLOBAL short g_sModelIndexBloodSpray после него ставим
DLL_GLOBAL short g_sModelIndexPlasma1; // holds the index for the plasma explosion 1
DLL_GLOBAL short g_sModelIndexPlasma2; // holds the index for the plasma explosion 2
DLL_GLOBAL short g_sModelIndexPlasma3; // holds the index for the plasma explosion 3
сами компонеты выстрела они и здесь есть и там теперь идем в ранее добавленный код и заменяем
это
// plasma
UTIL_PrecacheOther( "ammo_plasma" );
на вот это
// plasma
UTIL_PrecacheOtherWeapon( "weapon_plasmarifle" );
UTIL_PrecacheOther( "ammo_plasma" );
теперь идем в PRECACHE_SOUND ("items/weapondrop1.wav");
теперь идем в weapons.h ищем #define WEAPON_SNARK 15
добавляем #define WEAPON_PLASMARIFLE 16
теперь после #define TRIPMINE_WEIGHT -10
это вес оружия незнаю зачем это нужно чесно говроя бесполезная штука не работает
ставим это #define PLASMARIFLE_WEIGHT 20
теперь идем в #define M203_GRENADE_MAX_CARRY 10
после ставим #define PLASMARIFLE_MAX_CARRY 200
это сколько игрок может нести патронов
потом после #define SNARK_MAX_CLIP WEAPON_NOCLIP
ставим #define PLASMARIFLE_MAX_CLIP 30
это количество патронов в абойме
еще идем в #define HIVEHAND_DEFAULT_GIVE 8
ставим после вот это
#define PLASMARIFLE_DEFAULT_GIVE 30
это количество подбираемых патронов от плазменной пушки
теперь идем в extern DLL_GLOBAL short g_sModelIndexBloodSpray;
после добавляем
extern DLL_GLOBAL short g_sModelIndexPlasma1;
extern DLL_GLOBAL short g_sModelIndexPlasma2;
extern DLL_GLOBAL short g_sModelIndexPlasma3;
далее надо добавить класс оружия тут можно сказать конструктор для кода от и до для оружия
добавляем после класса class CGauss : public CBasePlayerWeapon и после };
вот это
class CPlasmarifle : public CBasePlayerWeapon
{
public:
#ifndef CLIENT_DLL
int Save(CSave &save);
int Restore(CRestore &restore);
static TYPEDESCRIPTION m_SaveData[];
#endif
void Spawn( void );
void Precache( void );
int iItemSlot() { return 7; }
int GetItemInfo( ItemInfo *p );
int AddToPlayer( CBasePlayer *pPlayer );
virtual BOOL UseDecrement( void )
{
#if defined( CLIENT_WEAPONS )
return TRUE;
#else
return FALSE;
#endif
}
int m_iPlasmaSprite;
int m_iMazzlePlasma;
private:
unsigned short m_usPlasmaFire;
};
все с добавлением компонентов мы закончили теперь добавляем само оружие и плазму
нам потебуются 4 файла plasmarifle_weapon.h plasmarifle.cpp plasma.h plasma.cpp и ресурсы для пушки которые я скину в низу
скачали поставили в исходники теперь добавляем в компиляцию заходим в hl.dsp
и савим там вот такие коды с пробелами
SOURCE=.\plasma.cpp
# End Source File
# Begin Source File
SOURCE=.\plasmarifle.cpp
# End Source File
# Begin Source File
H файлы ставим в h раздел
SOURCE=.\plasma.h
# End Source File
# Begin Source File
все с разделом dlls мы закончили дальше будет полегче идем в другой раздел cl_dll
переходим в ev_hldm.cpp ищем void EV_SnarkFire( struct event_args_s *args ); после него ставим
void EV_PlasmaFire( struct event_args_s *args );
теперь идем в
//======================
// GLOCK END
//======================
теперь идем в hl_events.cpp после void EV_SnarkFire( struct event_args_s *args );
ставим это void EV_PlasmaFire( struct event_args_s *args );
потом идем в gEngfuncs.pfnHookEvent( "events/snarkfire.sc", EV_SnarkFire );
после него ставим gEngfuncs.pfnHookEvent( "events/plasmarifle.sc", EV_PlasmaFire );
теперь идем в hl_weapons.cpp
ищем CSqueak g_Snark;
после него ставим CPlasmarifle g_Plasmarifle;
ищем HUD_PrepEntity( &g_Snark , &player );
потом ставим HUD_PrepEntity( &g_Plasmarifle , &player );
теперь ищем case WEAPON_RPG:
pWeapon = &g_Rpg;
break;
после этого ставим с пробелами также как все
case WEAPON_PLASMARIFLE:
pWeapon = &g_Plasmarifle;
break;
теперь идем в view хотя можно и не идти не обезательно
но пойдем
ищем { "models/p_satchel.mdl", "models/v_satchel.mdl" },
после него ставим это { "models/p_plasmarifle.mdl", "models/v_plasmarifle.mdl" },
так теперь надо наше оружие добавить в компил клиента нам же надо чтобы у нас небыло ошибок и все работало как надо да
значит идем и открываем cl_dll.dsp
и ставим вот это как и все остальные
SOURCE=..\dlls\plasmarifle.cpp
# End Source File
# Begin Source File
усе готово думаю немного отнять время ради этой штуки можно это же плазма ган а не какета пукалка из контры
ну за исключением конечно cso там в принципе и так плазмометов дохера
все с вами был илья счасливого кодописания
И еще, пусть мне тутор не очень актуален, но все равно, сделай и добавь скриншоты своей плазмопушки, и код занунь в блоки кода, чтобы красиво было, [ code ] [ /code ] - так, только пробелы убери.
Добавлено 18-12-2021 в 21:43:
Цитата:
илья2 писал: а какая разница эта анимация или эта мне эта нравиться
Это абсолютна та же самая модель, разница только что оружие при перезарядке не опускается вниз-вверх, а собственно рука батарейку меняет.
и код занунь в блоки кода, чтобы красиво было, [ code ] [ /code ] - так, только пробелы убери:я попробую
Добавлено 18-12-2021 в 22:47:
Согласно правилам форума, вы можете редактировать сообщения не позже чем через 20 минут после отправки. Это время истекло, но вы можете связаться с администрацией, чтобы внести изменения в сообщение.
Добавлено 18-12-2021 в 22:47:
блин
Добавлено 18-12-2021 в 22:48:
сделай и добавь скриншоты своей плазмопушки:да я лучше видео сделаю
XaeroX писал: тем приоритетнее твоя пушка, когда закончились патроны в предыдущей
Или приоритетнее автосмена на пушку при подборе. В кваке всё было просто: по одной пушке в слоте, чем больше номер слота, тем больше вес пушки. То есть ракетница не сменится на наилган, а шафт не сменится на ракетницу. В халфе уже сложнее. Например, арбалет имеет меньший вес, чем дробовик, хотя первый убойнее. Дело в том, что переключение с дробовика или автомата на арбалет посреди боя в толпе врагов - вещь нехорошая. Арбалет он всё-таки для дальних дистанций.
ну что все посмотрели на исходники плазменной винтовки всем понятно как она работает если что то не понятно могу пояснить я же ее делал верно не кто то другой.
Ну как, во фраге прицепил через аналог Link Constrant анимацию от другого оружия на саму пушку (Штука что заставляет одну кость за другой следовать), сам кое-как руку прианимировал при помощи инверсной кинематики в 3дс максе. Нормально анимировать так и не научился еще увы.
илья2 а на основе чего твой плазмоган? сама моделька то есть, самостоятельная или на анимациях той же гауски. я думаю надо мне или нет переносить свою пушки на анимации твоей.
Добавлено 22-10-2022 в 11:37:
у меня ошибка одна единственная
- "Ошибка (активно) E1696 не удается открыть источник файл "plasmarifle_weapon.h" Server (Report) "