демид
Частый гость
Группа : Неопытный
Дата регистрации : Mar 2019
Проживает : Волгоград
Сообщений : 45
Возраст: 23
Рейтинг
[кратко]
Пользователи:
6.0 (1 )
Нарушения:
0.0 (? )
Сообщения:
-0.1 (Метки )
Регистрация:
5.4
кодеры помогите не работает 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