NorthWanderer
Странник по коду
Дата регистрации : Jun 2007
Проживает : Развалины City 17
Сообщений : 30
Возраст: 35
Рейтинг
[кратко]
Пользователи:
-9.0 (1 )
Нарушения:
-0.9 (? )
Сообщения:
0.0 (Метки )
Регистрация:
9.5
Винчестер
здрасте товариши кодеры вот пробовал я написать код винчестера, так вот код я написал все скомпелил вроде ошибок нет но при вводе кода give weapon_winch иногда игра вылитает, и при перезарядки анимация WINCH_PUMP не проигровается вчем дело может кто подскажет ниже сам код и вставки в другие файлы:
winch.cpp
C++ Source Code:
1 #define VECTOR_CONE_DM_SHOTGUN Vector( 0.08716, 0.04362, 0.00 )// 10 degrees by 5 degrees
2 #define VECTOR_CONE_DM_DOUBLESHOTGUN Vector( 0.17365, 0.04362, 0.00 ) // 20 degrees by 5 degree
23 LINK_ENTITY_TO_CLASS( weapon_winch, CWinch );
29 SET_MODEL(ENT(pev), "models/w_winch.mdl" );
31 m_iDefaultAmmo = WINCH_DEFAULT_GIVE;
33 FallInit();// get ready to fall
37 void CWinch::Precache( void )
39 PRECACHE_MODEL("models/v_winch.mdl" );
40 PRECACHE_MODEL("models/w_winch.mdl" );
41 PRECACHE_MODEL("models/p_winch.mdl" );
43 m_iShell = PRECACHE_MODEL ("models/shell.mdl" );// shotgun shell
45 PRECACHE_SOUND("items/9mmclip1.wav" );
47 PRECACHE_SOUND ("weapons/dbarrel1.wav" );//shotgun
48 PRECACHE_SOUND ("weapons/sbarrel1.wav" );//shotgun
50 PRECACHE_SOUND ("weapons/reload1.wav" ); // shotgun reload
51 PRECACHE_SOUND ("weapons/reload3.wav" ); // shotgun reload
53 // PRECACHE_SOUND ("weapons/sshell1.wav"); // shotgun reload - played on client
54 // PRECACHE_SOUND ("weapons/sshell3.wav"); // shotgun reload - played on client
56 PRECACHE_SOUND ("weapons/357_cock1.wav" ); // gun empty sound
57 PRECACHE_SOUND ("weapons/scock1.wav" ); // cock gun
59 m_usWinchFire = PRECACHE_EVENT( 1, "events/winch.sc" );
62 int CWinch::AddToPlayer( CBasePlayer *pPlayer )
64 if ( CBasePlayerWeapon::AddToPlayer( pPlayer ) )
66 MESSAGE_BEGIN( MSG_ONE, gmsgWeapPickup, NULL, pPlayer->pev );
75 int CWinch::GetItemInfo(ItemInfo *p)
77 p->pszName = STRING(pev->classname);
79 p->iMaxAmmo1 = _9MM_MAX_CARRY;
82 p->iMaxClip = WINCH_MAX_CLIP;
86 p->iId = m_iId = WEAPON_WINCH;
87 p->iWeight = WINCH_WEIGHT;
96 return DefaultDeploy( "models/v_winch.mdl" , "models/p_winch.mdl" , WINCH_DRAW, "winch" );
99 //void CWinch::PrimaryAttack()
101 // // don't fire underwater
102 // if (m_pPlayer->pev->waterlevel == 3)
104 // PlayEmptySound( );
105 // m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.15;
113 // PlayEmptySound( );
117 // m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;
118 // m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
123 //#if defined( CLIENT_WEAPONS )
124 // flags = FEV_NOTHOST;
130 // m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH;
132 // Vector vecSrc = m_pPlayer->GetGunPosition( );
133 // Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );
138 // if ( bIsMultiplayer() )
140 // if ( g_pGameRules->IsMultiplayer() )
143 // vecDir = m_pPlayer->FireBulletsPlayer( 4, vecSrc, vecAiming, VECTOR_CONE_DM_SHOTGUN, 2048, BULLET_PLAYER_9MM, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );
147 // // regular old, untouched spread.
148 // vecDir = m_pPlayer->FireBulletsPlayer( 6, vecSrc, vecAiming, VECTOR_CONE_10DEGREES, 2048, BULLET_PLAYER_9MM, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );
151 // PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usWinchFire, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 );
154 // if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
155 // // HEV suit - indicate out of ammo condition
156 // m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
159 // m_flPumpTime = gpGlobals->time + 0.5;
161 // m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.75;
162 // m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.75;
164 // m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 5.0;
166 // m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.75;
167 // m_fInSpecialReload = 0;
170 void CWinch::PrimaryAttack()
172 // don't fire underwater
173 if (m_pPlayer->pev->waterlevel == 3)
176 m_flNextPrimaryAttack = 0.15;
186 EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/357_cock1.wav" , 0.8, ATTN_NORM);
187 m_flNextPrimaryAttack = 0.15;
193 m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;
194 m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
198 m_pPlayer->pev->effects = (int )(m_pPlayer->pev->effects) | EF_MUZZLEFLASH;
200 // player "shoot" animation
201 m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
204 UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );
206 Vector vecSrc = m_pPlayer->GetGunPosition( );
207 Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES );
210 vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, VECTOR_CONE_1DEGREES, 8192, BULLET_PLAYER_9MM, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );
213 #if defined ( CLIENT_WEAPONS )
219 PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usWinchFire, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 );
221 if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
222 // HEV suit - indicate out of ammo condition
223 m_pPlayer->SetSuitUpdate("!HEV_AMO0" , FALSE, 0);
225 m_flNextPrimaryAttack = 0.75;
226 m_flTimeWeaponIdle = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 );
230 void CWinch::SecondaryAttack( void )
236 void CWinch::Reload( void )
238 if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 || m_iClip == WINCH_MAX_CLIP)
241 // don't reload until recoil is done
242 if (m_flNextPrimaryAttack > UTIL_WeaponTimeBase())
245 // check to see if we're ready to reload
246 if (m_fInSpecialReload == 0)
248 SendWeaponAnim( WINCH_START_RELOAD );
249 m_fInSpecialReload = 1;
250 m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.6;
251 m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.6;
252 m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 1.0;
253 m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.0;
256 else if (m_fInSpecialReload == 1)
258 if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
260 // was waiting for gun to move to side
261 m_fInSpecialReload = 2;
263 if (RANDOM_LONG(0,1))
264 EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/reload1.wav" , 1, ATTN_NORM, 0, 85 + RANDOM_LONG(0,0x1f));
266 EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/reload3.wav" , 1, ATTN_NORM, 0, 85 + RANDOM_LONG(0,0x1f));
268 SendWeaponAnim( WINCH_RELOAD );
270 m_flNextReload = UTIL_WeaponTimeBase() + 0.5;
271 m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.5;
275 // Add them to the clip
277 m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= 1;
278 m_fInSpecialReload = 1;
283 void CWinch::WeaponIdle( void )
287 m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );
289 if ( m_flPumpTime && m_flPumpTime < gpGlobals->time )
291 // play pumping sound
292 EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/scock1.wav" , 1, ATTN_NORM, 0, 95 + RANDOM_LONG(0,0x1f));
296 if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase() )
298 if (m_iClip == 0 && m_fInSpecialReload == 0 && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
302 else if (m_fInSpecialReload != 0)
304 if (m_iClip != 8 && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
310 // reload debounce has timed out
311 SendWeaponAnim( WINCH_PUMP );
313 // play cocking sound
314 EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/scock1.wav" , 1, ATTN_NORM, 0, 95 + RANDOM_LONG(0,0x1f));
315 m_fInSpecialReload = 0;
316 m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.5;
322 float flRand = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 0, 1 );
326 m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + (60.0/12.0);// * RANDOM_LONG(2, 5);
328 SendWeaponAnim( iAnim );
335 class CWinchAmmoClip : public CBasePlayerAmmo
340 SET_MODEL(ENT(pev), "models/w_9mmARclip.mdl" );
341 CBasePlayerAmmo::Spawn( );
343 void Precache( void )
345 PRECACHE_MODEL ("models/w_9mmARclip.mdl" );
346 PRECACHE_SOUND("items/9mmclip1.wav" );
348 BOOL AddAmmo( CBaseEntity *pOther )
350 int bResult = (pOther->GiveAmmo( AMMO_WINCHCLIP_GIVE, "9mm" , _9MM_MAX_CARRY) != -1);
353 EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/9mmclip1.wav" , 1, ATTN_NORM);
358 LINK_ENTITY_TO_CLASS( ammo_winchclip, CWinchAmmoClip );
ниже класс в weapon.h
C++ Source Code:
1 class CWinch : public CBasePlayerWeapon
6 // int Save( CSave &save );
7 // int Restore( CRestore &restore );
8 // static TYPEDESCRIPTION m_SaveData[];
13 void Precache( void );
14 int iItemSlot( ) { return 3; }
15 int GetItemInfo(ItemInfo *p);
16 int AddToPlayer( CBasePlayer *pPlayer );
18 void PrimaryAttack( void );
19 void SecondaryAttack( void );
22 void WeaponIdle( void );
27 virtual BOOL UseDecrement( void )
29 #if defined ( CLIENT_WEAPONS )
37 unsigned short m_usWinchFire;
на клиенте ev_hldm.cpp
C++ Source Code:
1 //======================
3 //======================
4 void EV_FireWinch( event_args_t *args )
14 vec3_t vecSrc, vecAiming;
16 vec3_t up, right, forward;
17 float flSpread = 0.01;
20 VectorCopy( args->origin, origin );
21 VectorCopy( args->angles, angles );
22 VectorCopy( args->velocity, velocity );
24 AngleVectors( angles, forward, right, up );
26 shell = gEngfuncs.pEventAPI->EV_FindModelIndex ("models/shell.mdl" );// brass shell
28 if ( EV_IsLocal( idx ) )
30 // Add muzzle flash to current weapon model
32 gEngfuncs.pEventAPI->EV_WeaponAnimation( WINCH_FIRE, 2 );
34 V_PunchAxis( 0, -5.0 );
37 EV_GetDefaultShellInfo( args, origin, velocity, ShellVelocity, ShellOrigin, forward, right, up, 32, -12, 6 );
39 EV_EjectBrass ( ShellOrigin, ShellVelocity, angles[ YAW ], shell, TE_BOUNCE_SHOTSHELL );
41 gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_WEAPON, "weapons/sbarrel1.wav" , gEngfuncs.pfnRandomFloat(0.95, 1.0), ATTN_NORM, 0, 93 + gEngfuncs.pfnRandomLong( 0, 0x1f ) );
43 EV_GetGunPosition( args, vecSrc, origin );
44 EV_HLDM_MuzzleFlash( vecSrc, 2.5 + gEngfuncs.pfnRandomFloat( -0.2, 0.2 ) );
46 VectorCopy( forward, vecAiming );
48 if ( gEngfuncs.GetMaxClients() > 1 )
50 EV_HLDM_FireBullets( idx, forward, right, up, 4, vecSrc, vecAiming, 2048, BULLET_PLAYER_9MM, 0, &tracerCount[idx-1], 0.08716, 0.04362 );
54 EV_HLDM_FireBullets( idx, forward, right, up, 6, vecSrc, vecAiming, 2048, BULLET_PLAYER_9MM, 0, &tracerCount[idx-1], 0.08716, 0.08716 );
57 //======================
59 //======================
ну вроде все вписал где можно совершитть ошибку
Сообщить модератору | | IP: Записан
Сообщение: 21228