демид Частый гость  
	
Группа : НеопытныйДата регистрации : Mar 2019Проживает : ВолгоградСообщений : 45Рейтинг 
[кратко] 
Пользователи: 6.0 (1 )  
Нарушения: 0.0 (? )  
Сообщения: -0.1  (Метки )  
Регистрация: 5.7  
 
 
 
 
	
	кодеры помогите не работает displacer displacer сам стреляет но анимации выстрела так самого нет и звука выстрела нет уже целый день пытаюсь исправить данный баг никак не получается справиться с этой проблемой вот сам код дисплекера:C++ Source Code: 
4 *   Code by Shambler Team. 
5 *   Op4-realm modify by Demiurge. 
12 //========================================================= 
14 //    CODE PART FOR CLIENT SIDE 
16 //====================== 
18 //====================== 
29 void EV_SpinDisplacer(event_args_t *args)//Original code idea by Xwider 
31     if (EV_IsLocal(args->entindex)) 
33         gEngfuncs.pEventAPI->EV_WeaponAnimation(DISPLACER_SPINUP, 2); 
34         cl_entity_t *view = gEngfuncs.GetViewModel(); 
39             gEngfuncs.pEfxAPI->R_BeamEnts(view->index | 0x2000, view->index | 0x1000, args->iparam2, life, 0.5, 0.5, 0.5, 0.6, 0, 10, 2, 10, 0); 
40             gEngfuncs.pEfxAPI->R_BeamEnts(view->index | 0x3000, view->index | 0x1000, args->iparam2, life, 0.5, 0.5, 0.5, 0.6, 0, 10, 2, 10, 0); 
41             gEngfuncs.pEfxAPI->R_BeamEnts(view->index | 0x4000, view->index | 0x1000, args->iparam2, life, 0.5, 0.5, 0.5, 0.6, 0, 10, 2, 10, 0); 
45     if (args->bparam2 == 0)// sound mode 
46         gEngfuncs.pEventAPI->EV_PlaySound(args->entindex, args->origin, CHAN_WEAPON, "weapons/displacer_spin.wav", 1.0, ATTN_NORM, 0, PITCH_NORM); 
48         gEngfuncs.pEventAPI->EV_PlaySound(args->entindex, args->origin, CHAN_WEAPON, "weapons/displacer_spin2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM); 
51 //====================== 
53 //====================== 
78 class  CDisplacer : public  CBasePlayerWeapon
81   int     Save( CSave &save ); 
82   int     Restore( CRestore &restore ); 
83   static     TYPEDESCRIPTION m_SaveData[]; 
86   void  Precache( void  ); 
87   int  iItemSlot( void  ) { return  4; } 
88   int  GetItemInfo(ItemInfo *p); 
89   int  AddToPlayer( CBasePlayer *pPlayer ); 
92   void  Holster( int  skiplocal = 0 ); 
94   void  PrimaryAttack( void  ); 
95   void  SecondaryAttack (void ); 
96   void  EXPORT SpinUp( void  ); 
97   void  EXPORT Teleport( void  ); 
98   void  EXPORT Fire( void  ); 
99   void  WeaponIdle( void  ); 
101   int  m_iAttackMode;//no need save/restore this. g-cont  
103   unsigned  short  m_usDisplacer; 
108 LINK_ENTITY_TO_CLASS( weapon_displacer, CDisplacer ); 
110 //=========================== 
114 //=========================== 
116 //class CDispBall : public CGrenade 
117 class  CDispBall : public  CBaseEntity//Special for Ghoul [BB] :devil: 
121   void  Precache( void  ); 
122   void  Explode( TraceResult *pTrace ); 
123   void  RemoveBall (void ); 
124   void  EXPORT ExplodeTouch( CBaseEntity *pOther ); 
126   void  EXPORT BallThink( void  ); 
127   static  CDispBall *CreateDispBall( Vector vecOrigin, Vector vecAngles, CBaseEntity *pOwner, CDisplacer *pLauncher ); 
133 LINK_ENTITY_TO_CLASS( dispball, CDispBall ); 
135 CDispBall *CDispBall::CreateDispBall( Vector vecOrigin, Vector vecAngles, CBaseEntity *pOwner, CDisplacer *pLauncher ) 
137   CDispBall *pDispBall = GetClassPtr( (CDispBall *)NULL ); 
139   UTIL_SetOrigin( pDispBall->pev, vecOrigin ); 
140   pDispBall->pev->angles = vecAngles; 
142   pDispBall->SetTouch( CDispBall::ExplodeTouch ); 
143   pDispBall->pev->owner = pOwner->edict(); 
148 void  CDispBall :: Spawn( void  )
151   pev->movetype = MOVETYPE_FLY; 
152   pev->solid = SOLID_BBOX; 
154   SET_MODEL(ENT(pev), "sprites/exit1.spr" ); 
157   UTIL_SetSize(pev, Vector ( 0, 0, 0 ), Vector ( 0, 0, 0 ) ); 
158   UTIL_SetOrigin( pev, pev->origin ); 
159   pev->rendermode = kRenderTransAdd; 
160   pev->renderamt = 255; 
162   pev->classname = MAKE_STRING("dispball" ); 
164   SetThink( BallThink ); 
165   SetTouch( ExplodeTouch ); 
168   UTIL_MakeVectors( pev->angles ); 
169   pev->angles.x = -(pev->angles.x + 0); 
170   pev->velocity = gpGlobals->v_forward * 500; 
171   pev->nextthink = 0.5; 
176 void  CDispBall :: Precache( void  )
178   PRECACHE_MODEL("sprites/exit1.spr" ); 
179   PRECACHE_MODEL ("sprites/plasma.spr" ); 
181   PRECACHE_SOUND("weapons/displacer_teleport.wav" ); 
182   m_iDispRing = PRECACHE_MODEL ("sprites/displacer_ring.spr" ); 
185 void  CDispBall :: BallThink( void  )
192   for  (int  i = 0; i < 10; i++) 
194     Vector vecDir = Vector( RANDOM_FLOAT( -1.0, 1.0 ), RANDOM_FLOAT( -1.0, 1.0 ),RANDOM_FLOAT( -1.0, 1.0 ) ); 
195     vecDir = vecDir.Normalize(); 
197     UTIL_TraceLine( pev->origin, pev->origin + vecDir * 1024, ignore_monsters, ENT(pev), &tr1 ); 
198     if  (flDist > tr1.flFraction) 
201       flDist = tr.flFraction; 
205   if  ( flDist == 1.0 ) return ; 
207   pBeam = CBeam::BeamCreate("sprites/plasma.spr" ,200); 
208   pBeam-> PointEntInit( tr.vecEndPos, entindex() ); 
209   pBeam->SetStartPos( tr.vecEndPos ); 
210   pBeam->SetEndEntity( entindex() ); 
211   pBeam->SetColor( 90, 170, 16 ); 
212   pBeam->SetNoise( 65 ); 
213   pBeam->SetBrightness( 255 ); 
214   pBeam->SetWidth( 30 ); 
215   pBeam->SetScrollRate( 35 ); 
216   pBeam->LiveForTime( 1 ); 
218   pev->frame += 1; //animate teleball  
220     pev->frame = fmod( pev->frame, 24 ); 
222   pev->nextthink = gpGlobals->time + 0.1; 
225 void  CDispBall::ExplodeTouch( CBaseEntity *pOther )
228   Vector    vecSpot;// trace starts here!  
230   pev->enemy = pOther->edict(); 
232   vecSpot = pev->origin - pev->velocity.Normalize() * 32; 
233   UTIL_TraceLine( vecSpot, vecSpot + pev->velocity.Normalize() * 64, dont_ignore_monsters, ENT(pev), &tr ); 
238 void  CDispBall::Explode( TraceResult *pTrace )
240   if (!LockRing)//for partially fix strange bug in HL engine (for full fix teleball MUST be moved to client side). g-cont  
242     MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin ); 
243     WRITE_BYTE( TE_BEAMCYLINDER ); 
244     WRITE_COORD( pev->origin.x); 
245     WRITE_COORD( pev->origin.y); 
246     WRITE_COORD( pev->origin.z); 
247     WRITE_COORD( pev->origin.x); 
248     WRITE_COORD( pev->origin.y); 
249     WRITE_COORD( pev->origin.z + 800); 
250     WRITE_SHORT( m_iDispRing ); 
251     WRITE_BYTE( 0 ); // startframe  
252     WRITE_BYTE( 10 ); // framerate  
253     WRITE_BYTE( 3 ); // life  
254     WRITE_BYTE( 20 );  // width  
255     WRITE_BYTE( 0 );   // noise  
256     WRITE_BYTE( 255 );   // r, g, b  
257     WRITE_BYTE( 255 );   // r, g, b  
258     WRITE_BYTE( 255 );   // r, g, b  
259     WRITE_BYTE( 255 ); //brightness  
260     WRITE_BYTE( 0 );// speed  
265   pev->velocity = g_vecZero; 
267   SetThink (RemoveBall); 
268   pev->nextthink = gpGlobals->time + 0.6; 
272 void  CDispBall::RemoveBall( void  )
274   EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/displacer_teleport.wav" , 0.9, ATTN_NORM); 
275   pev->effects |= EF_NODRAW; 
279     pevOwner = VARS( pev->owner ); 
285   ::RadiusDamage( pev->origin, pev, pevOwner, pev->dmg, 200, CLASS_NONE, DMG_ENERGYBEAM ); 
288 //=========================== 
292 //=========================== 
294 void  CDisplacer::Spawn( )
297   m_iId = WEAPON_DISPLACER; 
298   SET_MODEL(ENT(pev), "models/w_displacer.mdl" ); 
301   FallInit();// get ready to fall down.  
304 TYPEDESCRIPTION    CDisplacer::m_SaveData[] = 
306   DEFINE_FIELD( CDisplacer, m_iPlace, FIELD_INTEGER ),//Remember last teleportation point. g-cont  
308 IMPLEMENT_SAVERESTORE( CDisplacer, CBasePlayerWeapon ); 
310 int  CDisplacer::AddToPlayer( CBasePlayer *pPlayer )
312   if  ( CBasePlayerWeapon::AddToPlayer( pPlayer ) ) 
314     MESSAGE_BEGIN( MSG_ONE, gmsgWeapPickup, NULL, pPlayer->pev ); 
322 BOOL CDisplacer::Deploy( void  ) 
324   return  DefaultDeploy( "models/v_displacer.mdl" , "models/p_displacer.mdl" , DISPLACER_DRAW, "gauss"  ); 
327 void  CDisplacer::Holster( int  skiplocal )
329   m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1.5; 
330   SendWeaponAnim( DISPLACER_HOLSTER ); 
333 int  CDisplacer::GetItemInfo(ItemInfo *p)
335   p->pszName = STRING(pev->classname); 
336   p->pszAmmo1 = "uranium" ; 
337   p->iMaxAmmo1 = URANIUM_MAX_CARRY; 
340   p->iMaxClip = WEAPON_NOCLIP; 
343   p->iId = m_iId = WEAPON_DISPLACER; 
345   p->iWeight = DISPLACER_WEIGHT; 
350 void  CDisplacer::Precache( void  )
352   PRECACHE_MODEL("models/w_displacer.mdl" ); 
353   PRECACHE_MODEL("models/v_displacer.mdl" ); 
354   PRECACHE_MODEL("models/p_displacer.mdl" ); 
356   PRECACHE_SOUND("weapons/displacer_fire.wav" ); 
357   PRECACHE_SOUND ("buttons/button10.wav" ); 
358   PRECACHE_SOUND ("weapons/displacer_self.wav" ); 
360   UTIL_PrecacheOther( "dispball"  ); 
362   m_iBeam = PRECACHE_MODEL("sprites/plasma.spr" ); 
363   m_usDisplacer = PRECACHE_EVENT( 1, "events/displacer.sc"  ); 
366 void  CDisplacer::SpinUp ( void  )
371   if  (!m_iAttackMode) SetThink (CDisplacer::Fire); 
372   else  SetThink (CDisplacer::Teleport); 
375   PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usDisplacer, 0.0, (float  *)&g_vecZero, (float  *)&g_vecZero, 0.0, 0.0, 0, m_iBeam, 0, m_iAttackMode); 
377   pev->nextthink = gpGlobals->time + 1.1; 
378   m_flTimeWeaponIdle = gpGlobals->time + 1.15; 
381 void  CDisplacer::PrimaryAttack( void  )
383   if  (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] < 20) 
385     EMIT_SOUND( edict(), CHAN_BODY, "buttons/button10.wav" , 1, ATTN_NORM ); 
386     m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1.0; 
390   m_iAttackMode = FALSE; 
392   SetThink (CDisplacer::SpinUp); 
394   m_flNextPrimaryAttack = gpGlobals->time + 2.0; 
395   m_flTimeWeaponIdle = gpGlobals->time + 1.5; 
396   pev->nextthink = gpGlobals->time + 0.1; 
399 void  CDisplacer::SecondaryAttack ( void  )
401   if  (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] < 60) 
403     EMIT_SOUND( edict(), CHAN_BODY, "buttons/button10.wav" , 1, ATTN_NORM ); 
404     m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1.0; 
408   if  (m_iAttackMode) return ; 
409   m_iAttackMode = TRUE; 
411   SetThink (CDisplacer::SpinUp); 
413   m_flNextSecondaryAttack = gpGlobals->time + 2.0; 
414   m_flTimeWeaponIdle = gpGlobals->time + 1.5; 
415   pev->nextthink = gpGlobals->time + 0.1; 
418 void  CDisplacer::Fire (void )
420   SendWeaponAnim( DISPLACER_FIRE ); 
421   m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); 
423   Vector vecSrc = m_pPlayer->GetGunPosition( ) + gpGlobals->v_forward * 16 + gpGlobals->v_right * 2 + gpGlobals->v_up * -5; 
424   m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= 20; 
426   EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/displacer_fire.wav" , 0.9, ATTN_NORM ); 
427   CDispBall *pDispBall = CDispBall::CreateDispBall( vecSrc, m_pPlayer->pev->v_angle, m_pPlayer, this  ); 
431 void  CDisplacer:: Teleport ( void  )
433   m_iPlace = !m_iPlace; 
435   CBaseEntity *pSpot = NULL; 
436   m_iAttackMode = FALSE;//reset firemode  
438   if  ( m_iPlace )//Xen and earth target  
439     pSpot = UTIL_FindEntityByClassname( pSpot, "info_xen"  ); 
441     pSpot = UTIL_FindEntityByClassname( pSpot, "info_earth"  ); 
445     UTIL_ScreenFade( m_pPlayer, Vector(0, 200, 0), 0.5, 0.5, 255, FFADE_IN ); 
447     m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= 60; 
448     Vector tmp = pSpot->pev->origin; 
449     tmp.z -= m_pPlayer->pev->mins.z; 
451     UTIL_SetOrigin( m_pPlayer->pev, tmp ); 
453     m_pPlayer->pev->angles = pSpot->pev->angles; 
454     m_pPlayer->pev->velocity = m_pPlayer->pev->basevelocity = g_vecZero; 
456     EMIT_SOUND( edict(), CHAN_BODY, "weapons/displacer_self.wav" , 1, ATTN_NORM ); 
457     SendWeaponAnim( DISPLACER_FIRE ); 
461     SendWeaponAnim( DISPLACER_SPINUP ); 
462     EMIT_SOUND( edict(), CHAN_BODY, "buttons/button10.wav" , 1, ATTN_NORM ); 
463     m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.3; 
466   m_flNextSecondaryAttack = gpGlobals->time + 2.0; 
467   m_flTimeWeaponIdle = gpGlobals->time + 1.0; 
470 void  CDisplacer::WeaponIdle( void  )
474   m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); 
476   if  ( m_flTimeWeaponIdle > gpGlobals->time ) 
479   float  flRand = RANDOM_FLOAT(0,1); 
483     iAnim = DISPLACER_IDLE1; 
484     m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT(10,15); 
488     iAnim = DISPLACER_IDLE2; 
489     m_flTimeWeaponIdle = gpGlobals->time + 3; 
492   SendWeaponAnim( iAnim ); 
  
	
	
__________________ 
	Отредактировано демид 28-07-2019 в 06:23 
	
	Сообщить модератору    | IP: Записан 
	181971