Показать все 11 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- добавляем плазменную винтовку в half-life 1 (https://hlfx.ru/forum/showthread.php?threadid=5767)
добавляем плазменную винтовку в half-life 1
всем привет это я илья2 и сегодня мы будем добавлять плазменную винтовку на half-life 1
плазменную винтовку я делал сам ничего не у кого не украл тупо сам но правда только
ресурсы не мои а из мода hlwe ну и чуток создал свои но тоже из этого мода взял думаю
добавление разнообразия в халфе не помешает .
Ладно начнём первым делом пажлуй начнем с добавления патронов в sdk или как его
можно назвать исходники халфы неважно. Заходим в cbase.h ищем int ammo_argrens;
после него ставим свое int ammo_plasma; после заходим в client.cpp ищем
if ( pl->m_pActiveItem->m_iId == WEAPON_RPG ) после вставляем свое
else if( pl->m_pActiveItem->m_iId == WEAPON_PLASMARIFLE )
{
cd->vuser2.y = pl->ammo_plasma;
}
теперь идем в player.cpp ищем ammo_hornets = AmmoInventory( GetAmmoIndex( "Hornets" ) );
после ставим
ammo_plasma = AmmoInventory( GetAmmoIndex( "Plasma" ) );
теперь ищем GiveNamedItem( "weapon_tripmine" );
ставим по желанию это спавн при команде impulse101 не обезательно добавлять
если вам конечно нужно больше патронов тогда ставте после
GiveNamedItem( "weapon_tripmine" );
вот это
GiveNamedItem( "ammo_plasma" );
теперь идем в weapons.cpp после
// glock
UTIL_PrecacheOtherWeapon( "weapon_9mmhandgun" );
UTIL_PrecacheOther( "ammo_9mmclip" );
ставим
// plasmarifle
UTIL_PrecacheOther( "ammo_plasma" );
теперь идем в 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");
и после него ставим
// Used by plasma grenades.
PRECACHE_MODEL( "models/plasmanull.mdl" );
g_sModelIndexPlasma1 = PRECACHE_MODEL( "sprites/plasmabomb.spr" );
g_sModelIndexPlasma2 = PRECACHE_MODEL( "sprites/plasmabomb.spr" );
g_sModelIndexPlasma3 = PRECACHE_MODEL( "sprites/tsplasma.spr" );
PRECACHE_SOUND( "weapons/plasmagun_exp.wav" );//explosion aftermaths
теперь идем в IMPLEMENT_SAVERESTORE( CSatchel, CBasePlayerWeapon );
после ставим
TYPEDESCRIPTION CPlasmarifle::m_SaveData[] =
{
DEFINE_FIELD( CPlasmarifle, m_iPlasmaSprite, FIELD_INTEGER ),
};
IMPLEMENT_SAVERESTORE( CPlasmarifle, CBasePlayerWeapon )
теперь идем в 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 );
void PrimaryAttack( void );
BOOL Deploy();
void Holster( void );
void Reload( void );
void WeaponIdle( void );
float m_flSoundDelay;
float m_flNextReload;
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
//======================
и после него ставим это
//======================
// PLASMARIFLE START
//======================
enum plasmarifle_e
{
PLASMARIFLE_IDLE,
PLASMARIFLE_IDLE2,
PLASMARIFLE_FIDGET,
PLASMARIFLE_SPINUP,
PLASMARIFLE_SPIN,
PLASMARIFLE_FIRE,
PLASMARIFLE_FIRE_SOLID,
PLASMARIFLE_FIRE_SEC,
PLASMARIFLE_FIRE_SEC_SOLID,
PLASMARIFLE_RELOAD,
PLASMARIFLE_DRAW,
PLASMARIFLE_HOLSTER
};
void EV_PlasmaFire( event_args_t *args )
{
int idx;
vec3_t origin;
vec3_t angles;
vec3_t velocity;
vec3_t up, right, forward;
idx = args->entindex;
VectorCopy( args->origin, origin );
VectorCopy( args->angles, angles );
VectorCopy( args->velocity, velocity );
AngleVectors( angles, forward, right, up );
if( EV_IsLocal( idx ) )
{
gEngfuncs.pEventAPI->EV_WeaponAnimation( PLASMARIFLE_FIRE, 0 );
}
int fPrimaryFire = args->bparam2;
if( fPrimaryFire )
gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_WEAPON, "weapons/plasmarifle_fire.wav", 1, ATTN_NORM, 0, 100 );
}
//======================
// PLASMARIFLE 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 там в принципе и так плазмометов дохера
все с вами был илья счасливого кодописания
ресурсы плазменной винтовки->https://disk.yandex.ru/d/izD1l_VPD869vQ
__________________
илья
Если что вот плазма из ХЛВЕ но с нормальной анимацией перезарядки, когда-то делал, но так и не заюзал: https://files.gamebanana.com/bitpit...ewithreload.rar
а какая разница эта анимация или эта мне эта нравиться а хотя каждому по вкусу конечно
__________________
илья
И еще, пусть мне тутор не очень актуален, но все равно, сделай и добавь скриншоты своей плазмопушки, и код занунь в блоки кода, чтобы красиво было, [ code ] [ /code ] - так, только пробелы убери.
Добавлено 18-12-2021 в 21:43:
и код занунь в блоки кода, чтобы красиво было, [ code ] [ /code ] - так, только пробелы убери:я попробую
Добавлено 18-12-2021 в 22:47:
Согласно правилам форума, вы можете редактировать сообщения не позже чем через 20 минут после отправки. Это время истекло, но вы можете связаться с администрацией, чтобы внести изменения в сообщение.
Добавлено 18-12-2021 в 22:47:
блин
Добавлено 18-12-2021 в 22:48:
сделай и добавь скриншоты своей плазмопушки:да я лучше видео сделаю
Добавлено 18-12-2021 в 23:12:
а вот и видео https://youtu.be/k0Tl06wRjlE
Добавлено 18-12-2021 в 23:36:
у меня кстати есть еще вторая версия плазмомета сделанная под стиль cso так просто говорю может кому интересно
__________________
илья
__________________
ну что все посмотрели на исходники плазменной винтовки всем понятно как она работает если что то не понятно могу пояснить я же ее делал верно не кто то другой.
__________________
илья
илья2 а на основе чего твой плазмоган? сама моделька то есть, самостоятельная или на анимациях той же гауски. я думаю надо мне или нет переносить свою пушки на анимации твоей.
Добавлено 22-10-2022 в 11:37:
у меня ошибка одна единственная
- "Ошибка (активно) E1696 не удается открыть источник файл "plasmarifle_weapon.h" Server (Report) "
хотя все верно запихнул в server в header
сама моделька то есть: спёр из weapon edition
Добавлено 09-11-2022 в 19:05:
я думаю надо мне или нет переносить свою пушки на анимации твоей:давай если это не сложно мне все равно
Добавлено 09-11-2022 в 19:06:
plasmarifle_weapon.h значит его нету надо добавить
Добавлено 09-11-2022 в 19:07:
попробуй в инклуды weapons.cpp поставить должно помочь
Добавлено 09-11-2022 в 19:08:
наверно
__________________
илья
Временная зона GMT. Текущее время 02:30. | Показать все 11 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024