HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > глюки оружия, если на сервере играет больше одного игрока
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 33

Рейтинг



глюки оружия, если на сервере играет больше одного игрока

Здравствуйте, у меня проблемы с дисплейсером.

когда игрок один на сервере, то все нормально, оружие стреляет каждый раз когда нажимают левую клавишу и энергошар летит в правильном направлении ( в то место куда стреляет игрок )

а вот если на сервере 2 и более игроков, то оружие выстреливает шаром примерно в пропорции 1 выстрел к 3 нажатиям

и летит шар не в том направлении куда стрелял игрок,а в любое куда ему нравится, вот код

за основу взят код из op4sdk + заменена скондари атака

C++ Source Code:
1
#include "extdll.h"
2
#include "util.h"
3
#include "cbase.h"
4
#include "monsters.h"
5
#include "weapons.h"
6
#include "nodes.h"
7
#include "player.h"
8
#include "gamerules.h"
9
#include "shake.h"
10
#include "effects.h"
11
 
12
#define	SF_DISP_MODE	128 //G-Cont. use for makes alternative displacer - debug features
13
 
14
enum displacer_e
15
{
16
  DISPLACER_IDLE1,
17
  DISPLACER_IDLE2,
18
  DISPLACER_FIRE,
19
  DISPLACER_FIRESOLID,
20
  DISPLACER_SPINUP,
21
  DISPLACER_RELOAD,
22
  DISPLACER_DRAW,
23
  DISPLACER_HOLSTER,
24
};
25
 
26
LINK_ENTITY_TO_CLASS( weapon_displacer, CDisplacer );
27
 
28
#define DISPLACER_SECONDARY_USAGE 2
29
#define DISPLACER_PRIMARY_USAGE 1
30
 
31
LINK_ENTITY_TO_CLASS( info_xen, CPointEntity );
32
LINK_ENTITY_TO_CLASS( info_earth, CPointEntity );
33
 
34
// displacer teleball code
35
 
36
class CDispBall : public CBaseEntity//Special for Ghoul [BB]
37
{
38
public:
39
  void Spawn( void );
40
  void Precache( void );
41
  void Explode( TraceResult *pTrace );
42
  void RemoveBall (void);
43
  void SelfRemove( void );
44
  void EXPORT ExplodeTouch( CBaseEntity *pOther );
45
 
46
  void EXPORT BallThink( void );
47
  static CDispBall *CreateDispBall( Vector vecOrigin, Vector vecAngles, CBaseEntity *pOwner, CDisplacer *pLauncher );
48
  static CDispBall *SelfCreate( void );
49
 
50
  BOOL m_fIsSelfTeleporter;
51
  int m_iDispRing;
52
  BOOL LockRing;
53
};
54
 
55
LINK_ENTITY_TO_CLASS( dispball, CDispBall );
56
 
57
CDispBall *CDispBall::CreateDispBall( Vector vecOrigin, Vector vecAngles, CBaseEntity *pOwner, CDisplacer *pLauncher )
58
{
59
  CDispBall *pDispBall = GetClassPtr( (CDispBall *)NULL );
60
 
61
  UTIL_SetOrigin( pDispBall->pev, vecOrigin );
62
  pDispBall->pev->angles = vecAngles;
63
  pDispBall->m_fIsSelfTeleporter = FALSE;
64
  pDispBall->Spawn();
65
  pDispBall->SetTouch( CDispBall::ExplodeTouch );
66
  pDispBall->pev->owner = pOwner->edict();
67
 
68
  return pDispBall;
69
}
70
 
71
 
72
 
73
CDispBall *CDispBall::SelfCreate( void )
74
{
75
  CDispBall *pDispBall = GetClassPtr( (CDispBall *)NULL );
76
  pDispBall->pev->classname = MAKE_STRING("displacer_ball");
77
  pDispBall->m_fIsSelfTeleporter = TRUE;
78
  pDispBall->Spawn();
79
  pDispBall->SelfRemove();
80
 
81
  return pDispBall;
82
}
83
 
84
 
85
 
86
 
87
void CDispBall :: Spawn( void )
88
{
89
 
90
  Precache( );
91
 
92
 
93
  if ( !m_fIsSelfTeleporter )
94
  {
95
    pev->movetype = MOVETYPE_FLY;
96
    pev->solid = SOLID_BBOX;
97
    pev->velocity = gpGlobals->v_forward * 500;
98
  }
99
 
100
  SET_MODEL(ENT(pev), "sprites/unused_spark2.spr");
101
  pev->scale = .5;
102
 
103
  UTIL_SetSize(pev, Vector ( 0, 0, 0 ), Vector ( 0, 0, 0 ) );
104
  UTIL_SetOrigin( pev, pev->origin );
105
  pev->rendermode = kRenderTransAdd;
106
  pev->renderamt = 255;
107
 
108
  pev->classname = MAKE_STRING("dispball");
109
 
110
  if ( !m_fIsSelfTeleporter )
111
  {
112
 
113
    SetThink( BallThink );
114
    SetTouch( ExplodeTouch );
115
    pev->nextthink = 0.1;
116
 
117
  }
118
 
119
  pev->angles.x -= 0;
120
  UTIL_MakeVectors( pev->angles );
121
  pev->angles.x = -(pev->angles.x + 0);
122
 
123
  pev->dmg = 1000;
124
}
125
 
126
void CDispBall :: Precache( void )
127
{
128
  PRECACHE_MODEL("sprites/unused_spark2.spr");
129
  PRECACHE_MODEL ("sprites/xflare2.spr");
130
 
131
  PRECACHE_SOUND("weapons/newflashbang_explode.wav");
132
  m_iDispRing = PRECACHE_MODEL ("sprites/bluejet1.spr");
133
}
134
 
135
void CDispBall :: BallThink( void )
136
{
137
  CBeam *pBeam;
138
  TraceResult tr;
139
  Vector vecDest;
140
  float flDist = 1.0;
141
 
142
  for (int i = 0; i < 10; i++)
143
  {
144
    Vector vecDir = Vector( RANDOM_FLOAT( -1.0, 1.0 ), RANDOM_FLOAT( -1.0, 1.0 ),RANDOM_FLOAT( -1.0, 1.0 ) );
145
    vecDir = vecDir.Normalize();
146
    TraceResult 		tr1;
147
    UTIL_TraceLine( pev->origin, pev->origin + vecDir * 1024, ignore_monsters, ENT(pev), &tr1 );
148
    if (flDist > tr1.flFraction)
149
    {
150
      tr = tr1;
151
      flDist = tr.flFraction;
152
    }
153
  }
154
 
155
  if ( flDist == 1.0 ) return;
156
 
157
  pBeam = CBeam::BeamCreate("sprites/xflare2.spr",200);
158
  pBeam->PointEntInit( tr.vecEndPos, entindex() );
159
  pBeam->SetStartPos( tr.vecEndPos );
160
  pBeam->SetEndEntity( entindex() );
161
  pBeam->SetColor( 90, 170, 16 );
162
  pBeam->SetNoise( 65 );
163
  pBeam->SetBrightness( 255 );
164
  pBeam->SetWidth( 30 );
165
  pBeam->SetScrollRate( 35 );
166
  pBeam->LiveForTime( 1 );
167
 
168
  pev->frame += 1; //animate teleball
169
  if(pev->frame > 24)
170
    pev->frame = fmod( pev->frame, 24 );
171
 
172
  pev->nextthink = gpGlobals->time + 0.1;
173
}
174
 
175
 
176
void CDispBall :: SelfRemove ( void )
177
{
178
  pev->velocity = g_vecZero;
179
 
180
  MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin );
181
  WRITE_BYTE( TE_BEAMCYLINDER );
182
  WRITE_COORD( pev->origin.x);
183
  WRITE_COORD( pev->origin.y);
184
  WRITE_COORD( pev->origin.z);
185
  WRITE_COORD( pev->origin.x);
186
  WRITE_COORD( pev->origin.y);
187
  WRITE_COORD( pev->origin.z + 640);
188
  WRITE_SHORT( m_iDispRing );
189
  WRITE_BYTE( 0 );	// startframe
190
  WRITE_BYTE( 10 );	// framerate
191
  WRITE_BYTE( 3 );	// life
192
  WRITE_BYTE( 20 );	// width
193
  WRITE_BYTE( 0 );	// noise
194
  WRITE_BYTE( 255 );	// r, g, b
195
  WRITE_BYTE( 255 );	// r, g, b
196
  WRITE_BYTE( 255 );	// r, g, b
197
  WRITE_BYTE( 255 );	// brightness
198
  WRITE_BYTE( 0 );	// speed
199
  MESSAGE_END();
200
 
201
  MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin );
202
  WRITE_BYTE(TE_DLIGHT);
203
  WRITE_COORD(pev->origin.x);	// X
204
  WRITE_COORD(pev->origin.y);	// Y
205
  WRITE_COORD(pev->origin.z);	// Z
206
  WRITE_BYTE( 32 );		// radius * 0.1
207
  WRITE_BYTE( 255 );		// r
208
  WRITE_BYTE( 180 );		// g
209
  WRITE_BYTE( 96 );		// b
210
  WRITE_BYTE( 60 );		// time * 10
211
  WRITE_BYTE( 20 );		// decay * 0.1
212
  MESSAGE_END( );
213
 
214
  SetThink (RemoveBall);
215
 
216
  pev->nextthink = gpGlobals->time + 0.3;
217
}
218
 
219
void CDispBall::ExplodeTouch( CBaseEntity *pOther )
220
{
221
  TraceResult tr;
222
  Vector		vecSpot;// trace starts here!
223
 
224
  pev->enemy = pOther->edict();
225
 
226
  vecSpot = pev->origin - pev->velocity.Normalize() * 32;
227
  UTIL_TraceLine( vecSpot, vecSpot + pev->velocity.Normalize() * 64, dont_ignore_monsters, ENT(pev), &tr );
228
 
229
  Explode( &tr );
230
}
231
 
232
void CDispBall::Explode( TraceResult *pTrace )
233
{
234
  if(!LockRing)//for partially fix strange bug in HL engine (for full fix teleball MUST be moved to client side). g-cont
235
  {
236
    MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin );
237
    WRITE_BYTE( TE_BEAMCYLINDER );
238
    WRITE_COORD( pev->origin.x);
239
    WRITE_COORD( pev->origin.y);
240
    WRITE_COORD( pev->origin.z);
241
    WRITE_COORD( pev->origin.x);
242
    WRITE_COORD( pev->origin.y);
243
    WRITE_COORD( pev->origin.z + 800);
244
    WRITE_SHORT( m_iDispRing );
245
    WRITE_BYTE( 0 ); // startframe
246
    WRITE_BYTE( 10 ); // framerate
247
    WRITE_BYTE( 3 ); // life
248
    WRITE_BYTE( 20 );  // width
249
    WRITE_BYTE( 0 );   // noise
250
    WRITE_BYTE( 255 );   // r, g, b
251
    WRITE_BYTE( 255 );   // r, g, b
252
    WRITE_BYTE( 255 );   // r, g, b
253
    WRITE_BYTE( 255 ); //brightness
254
    WRITE_BYTE( 0 );		// speed
255
    MESSAGE_END();
256
 
257
    MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY );
258
    WRITE_BYTE(TE_DLIGHT);
259
    WRITE_COORD(pev->origin.x);	// X
260
    WRITE_COORD(pev->origin.y);	// Y
261
    WRITE_COORD(pev->origin.z);	// Z
262
    WRITE_BYTE( 8 );		// radius * 0.1
263
    WRITE_BYTE( 243 );		// r
264
    WRITE_BYTE( 231 );		// g
265
    WRITE_BYTE( 16 );		// b
266
    WRITE_BYTE( 20 );		// time * 10
267
    WRITE_BYTE( 0 );		// decay * 0.1
268
    MESSAGE_END( );
269
 
270
    MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY );
271
    WRITE_BYTE(TE_DLIGHT);
272
    WRITE_COORD(pev->origin.x);	// X
273
    WRITE_COORD(pev->origin.y);	// Y
274
    WRITE_COORD(pev->origin.z);	// Z
275
    WRITE_BYTE( 4 );		// radius * 0.1
276
    WRITE_BYTE( 240 );		// r
277
    WRITE_BYTE( 140 );		// g
278
    WRITE_BYTE( 12 );		// b
279
    WRITE_BYTE( 20 );		// time * 10
280
    WRITE_BYTE( 0 );		// decay * 0.1
281
    MESSAGE_END( );
282
  }
283
 
284
  LockRing = TRUE;
285
  pev->velocity = g_vecZero;
286
 
287
  SetThink (RemoveBall);
288
  pev->nextthink = gpGlobals->time + 0.6;
289
 
290
}
291
 
292
void CDispBall::RemoveBall( void )
293
{
294
  EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/newflashbang_explode.wav", 0.9, ATTN_NORM);
295
  pev->effects |= EF_NODRAW;
296
 
297
  entvars_t *pevOwner;
298
  if ( pev->owner )
299
    pevOwner = VARS( pev->owner );
300
  else
301
    pevOwner = NULL;
302
  pev->owner = NULL;
303
 
304
  UTIL_Remove( this );
305
  ::RadiusDamage( pev->origin, pev, pevOwner, pev->dmg, 200, CLASS_NONE, DMG_ENERGYBEAM );
306
}
307
 
308
//-----------------------
309
//     Displacer
310
//-----------------------
311
 
312
void CDisplacer::Spawn( )
313
{
314
  Precache( );
315
  m_iId = WEAPON_DISPLACER;
316
  SET_MODEL(ENT(pev), "models/w_egon.mdl");
317
 
318
  m_iDefaultAmmo = 40;
319
  FallInit();// get ready to fall down.
320
}
321
 
322
int CDisplacer::AddToPlayer( CBasePlayer *pPlayer )
323
{
324
  if ( CBasePlayerWeapon::AddToPlayer( pPlayer ) )
325
  {
326
    MESSAGE_BEGIN( MSG_ONE, gmsgWeapPickup, NULL, pPlayer->pev );
327
    WRITE_BYTE( m_iId );
328
    MESSAGE_END();
329
    return TRUE;
330
  }
331
  return FALSE;
332
}
333
 
334
BOOL CDisplacer::Deploy( void )
335
{
336
  return DefaultDeploy( "models/v_BFG.mdl", "models/p_BFG.mdl", DISPLACER_DRAW, "gauss" );
337
}
338
 
339
void CDisplacer::Holster( int skiplocal )
340
{
341
  m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.1;
342
  SendWeaponAnim( DISPLACER_HOLSTER );
343
}
344
 
345
int CDisplacer::GetItemInfo(ItemInfo *p)
346
{
347
  p->pszName = STRING(pev->classname);
348
  p->pszAmmo1 = "9mm";
349
  p->iMaxAmmo1 = _9MM_MAX_CARRY;
350
  p->pszAmmo2 = NULL;
351
  p->iMaxAmmo2 = -1;
352
  p->iMaxClip = WEAPON_NOCLIP;
353
  p->iSlot = 3;
354
  p->iPosition = 1;
355
  p->iFlags = 0;
356
  p->iId = m_iId = WEAPON_DISPLACER;
357
  p->iWeight = DISPLACER_WEIGHT;
358
 
359
  return 1;
360
}
361
 
362
void CDisplacer::Precache( void )
363
{
364
  PRECACHE_MODEL("models/w_egon.mdl");
365
  PRECACHE_MODEL("models/v_BFG.mdl");
366
  PRECACHE_MODEL("models/p_BFG.mdl");
367
 
368
  PRECACHE_SOUND("weapons/gluongun_fire.wav");
369
  PRECACHE_SOUND ("buttons/button10.wav");
370
  PRECACHE_SOUND ("weapons/tu_fire_missile.wav");
371
 
372
  UTIL_PrecacheOther( "dispball" );
373
 
374
  m_iBeam = PRECACHE_MODEL("sprites/xflare2.spr");
375
  m_usDisplacer = PRECACHE_EVENT( 1, "events/crossbow2.sc" );
376
}
377
 
378
void CDisplacer::SpinUp ( void )
379
{
380
  int flags;
381
  flags = 0;
382
 
383
  if (!m_iAttackMode) SetThink (CDisplacer::Fire);
384
  else SetThink (CDisplacer::Teleport);
385
 
386
  //spinup event
387
  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);
388
 
389
  pev->nextthink = gpGlobals->time + 0.1;
390
  m_flTimeWeaponIdle = gpGlobals->time + 1.15;
391
}
392
 
393
 
394
void CDisplacer::PrimaryAttack( void )
395
{
396
  if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] < 1)//Check for ammo
397
  {
398
    EMIT_SOUND( edict(), CHAN_BODY, "buttons/button10.wav", 1, ATTN_NORM );
399
    m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.1;
400
    return;
401
  }
402
 
403
  m_iAttackMode = FALSE; //We set attack mode in first mode
404
 
405
  SetThink (CDisplacer::SpinUp);
406
 
407
  m_flNextPrimaryAttack = gpGlobals->time + 0.1;
408
  m_flTimeWeaponIdle = gpGlobals->time + 1.5;
409
  pev->nextthink = gpGlobals->time + 0.1;
410
}
411
 
412
void CDisplacer::SecondaryAttack ( void )
413
{
414
  if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] < 2)
415
  {
416
    EMIT_SOUND( edict(), CHAN_BODY, "buttons/button10.wav", 1, ATTN_NORM );
417
    m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.1;
418
    return;
419
  }
420
 
421
  if (m_iAttackMode) return;
422
  m_iAttackMode = TRUE; //We set attack mode in second mode
423
 
424
  SetThink (CDisplacer::SpinUp);
425
 
426
  m_flNextSecondaryAttack = gpGlobals->time + 4.0;
427
  m_flTimeWeaponIdle = gpGlobals->time + 1.5;
428
  pev->nextthink = gpGlobals->time + 0.1;
429
}
430
 
431
void CDisplacer::Fire (void)
432
{
433
  SendWeaponAnim( DISPLACER_FIRE );
434
  m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
435
 
436
  Vector vecSrc = m_pPlayer->GetGunPosition( ) + gpGlobals->v_forward * 16 + gpGlobals->v_right * 2 + gpGlobals->v_up * -5;
437
  m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= DISPLACER_PRIMARY_USAGE;
438
 
439
  EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/gluongun_fire.wav", 0.9, ATTN_NORM );
440
  CDispBall *pDispBall = CDispBall::CreateDispBall( vecSrc, m_pPlayer->pev->v_angle, m_pPlayer, this );
441
}
442
 
443
 
444
void CDisplacer:: Teleport ( void )
445
{
446
  m_iPlace = !m_iPlace;
447
 
448
  CBaseEntity *pSpot = NULL;
449
  m_iAttackMode = FALSE;//reset firemode
450
  Vector	vecSrc;
451
  SendWeaponAnim ( DISPLACER_FIRE );
452
  SetThink ( NULL );
453
 
454
 
455
  if ( g_pGameRules->IsMultiplayer() )
456
  {
457
    // Randomize the destination in multiplayer
458
    for ( int i = RANDOM_LONG(1,5); i > 0; i-- )
459
      pSpot = UTIL_FindEntityByClassname(pSpot, "info_player_deathmatch" );
460
  }
461
  else
462
  {
463
    if (!m_iPlace)
464
      pSpot = UTIL_FindEntityByClassname(pSpot, "info_displacer_earth_target" );
465
    else if (m_iPlace)
466
      pSpot = UTIL_FindEntityByClassname(pSpot, "info_displacer_xen_target" );
467
  }
468
 
469
  if (pSpot)
470
  {
471
 
472
    Vector vecSrc	 = m_pPlayer->pev->origin;
473
    CDispBall *pBall = CDispBall::SelfCreate();
474
    pBall->pev->owner = m_pPlayer->edict();
475
    pBall->pev->origin = vecSrc;
476
 
477
    UTIL_ScreenFade( m_pPlayer, Vector(0, 160, 0), 0.5, 0.5, 255, FFADE_IN );
478
 
479
    m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= DISPLACER_SECONDARY_USAGE;
480
    Vector tmp = pSpot->pev->origin;
481
    tmp.z -= m_pPlayer->pev->mins.z;
482
    tmp.z++;
483
    UTIL_SetOrigin( m_pPlayer->pev, tmp );
484
 
485
    m_pPlayer->pev->angles = pSpot->pev->angles;
486
    m_pPlayer->pev->velocity = m_pPlayer->pev->basevelocity = g_vecZero;
487
    vecSrc = pSpot->pev->origin;
488
 
489
    MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin );
490
    WRITE_BYTE(TE_DLIGHT);
491
    WRITE_COORD( vecSrc.x );	// X
492
    WRITE_COORD( vecSrc.y );	// Y
493
    WRITE_COORD( vecSrc.z );	// Z
494
    WRITE_BYTE( 24 );		// radius * 0.1
495
    WRITE_BYTE( 255 );		// r
496
    WRITE_BYTE( 180 );		// g
497
    WRITE_BYTE( 96 );		// b
498
    WRITE_BYTE( 31.66 );		// time * 10
499
    WRITE_BYTE( 1 );		// decay * 0.1
500
    MESSAGE_END( );
501
 
502
    CSprite *pSpr = CSprite::SpriteCreate( "sprites/xflare2.spr", vecSrc, TRUE );
503
    pSpr->AnimateAndDie( 6 );
504
    pSpr->SetTransparency(kRenderGlow, 128, 250, 214, 255, kRenderFxNoDissipation);
505
 
506
    EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/tu_fire_missile.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
507
 
508
  }
509
  else
510
  {
511
    SendWeaponAnim( DISPLACER_SPINUP );
512
    EMIT_SOUND( edict(), CHAN_BODY, "buttons/button10.wav", 1, ATTN_NORM );
513
    m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.3;
514
  }
515
 
516
  m_flNextSecondaryAttack = gpGlobals->time + 2.0;
517
  m_flTimeWeaponIdle = gpGlobals->time + 1.0;
518
}
519
 
520
void CDisplacer::WeaponIdle( void )
521
{
522
  int iAnim;
523
 
524
  m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );
525
 
526
  if ( m_flTimeWeaponIdle > gpGlobals->time )
527
    return;
528
 
529
  float flRand = RANDOM_FLOAT(0,1);
530
 
531
  if ( flRand <= 0.5 )
532
  {
533
    iAnim = DISPLACER_IDLE1;
534
    m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT(10,15);
535
  }
536
  else
537
  {
538
    iAnim = DISPLACER_IDLE2;
539
    m_flTimeWeaponIdle = gpGlobals->time + 3;
540
  }
541
 
542
  SendWeaponAnim( iAnim );
543
}

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

За это сообщение fire64 получил предупреждение за оверквотинг

Сообщить модератору | | IP: Записан
Сообщение: 43349

Старое сообщение 10-03-2009 17:19
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32208
Нанёс повреждений: 392 ед.

Рейтинг



Я когда этот код писал - ламером был. Вот так надо:

code:
void CDisplacer::Fire (void) { SendWeaponAnim( DISPLACER_FIRE ); m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); UTIL_MakeVectors( m_pPlayer->pev->angles ); Vector vecSrc = m_pPlayer->GetGunPosition( ) + gpGlobals->v_forward * 16 + gpGlobals->v_right * 2 + gpGlobals->v_up * -5; m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= DISPLACER_PRIMARY_USAGE; EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/gluongun_fire.wav", 0.9, ATTN_NORM ); CDispBall *pDispBall = CDispBall::CreateDispBall( vecSrc, m_pPlayer->pev->v_angle, m_pPlayer, this ); }

И все должно быть хорошо.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 43350

Старое сообщение 10-03-2009 18:01
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 33

Рейтинг



Спасибо
это помогло

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

Сообщить модератору | | IP: Записан
Сообщение: 43351

Старое сообщение 10-03-2009 19:21
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32208
Нанёс повреждений: 392 ед.

Рейтинг



fire64 очень тебя прошу - не кидай больше исходники в пост.
До всех не достучишься, как об стенку

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 43352

Старое сообщение 10-03-2009 20:14
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 33

Рейтинг



ок
прошу прощения, был не в курсе

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

Сообщить модератору | | IP: Записан
Сообщение: 43353

Старое сообщение 10-03-2009 20:50
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 11:31. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > глюки оружия, если на сервере играет больше одного игрока
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024