HLFX.Ru Forum
Показать все 12 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Как запретить годмод? (https://hlfx.ru/forum/showthread.php?threadid=1097)


Отправлено Scream 08-01-2008 в 12:42:

Как запретить годмод?

Вобщем хочу давно убрать godmode из мода, а ещё лучше заменить его действие на получение в руки флажка с надписью "Читер!"=)
Но скока не искал, ничего не нашёл...


Отправлено Дядя Миша 08-01-2008 в 13:40:

Scream ищи флаг FL_GODMODE в combat.cpp
если флаг есть - значит движок врубил godmode


Отправлено Scream 08-01-2008 в 14:16:

Дядя Миша
Ну этот находил, а откуда он произрастает? Всмысле где функция, которая активируется при вводе в консоль god? С impulse разобрался, а вот god не находит поиск(


Отправлено Ku2zoff 08-01-2008 в 14:30:

Scream просто убери из combat.cpp вот это:

C++ Source Code:
1
// check for godmode or invincibility
2
if ( pev->flags & FL_GODMODE )
3
{
4
  return 0;
5
}


Единственный синглплеерный мод с неработающим годом, который я видел это Invasion - там игра вылетает при вводе года, когда естественно св_читс = 1.
C++ Source Code:
1
// check for godmode or invincibility
2
if ( pev->flags & FL_GODMODE )
3
{
4
  exit(0);
5
}


А насчёт флага это ты смешно придумал. У тебя модель есть? Если нет, я могу сделать в свободное время. А вот как дать этот флаг игроку:

client.cpp, функция ClientCommand:
C++ Source Code:
1
if ( FStrEq(pcmd, "god" ) )
2
{
3
  GetClassPtr((CBasePlayer *)pev)->GiveNamedItem("weapon_cheaterflag") ;
4
}


Естественно, придётся написать код флага килобайта на 4.


Отправлено Scream 08-01-2008 в 14:43:

Ku2zoff
Ну сделать хотел копию ломика, просто модель подправить) Но это удобнее тогда вместо impulse 101 - сначала weaponstrip, потом GiveNamedItem("weapon_cheaterflag") и попробуй пройти игру с одним ломиком)))


Отправлено Дядя Миша 08-01-2008 в 16:00:

Scream ну я же сказал, что флаг в движке выставляется.
и переопределить команду не получится.
Проще всего этот момент отслеживать де-нибуть в StartPlayerFrame, чтобы не прозевать.
Ну и там же булевую переменную, чтобы флажок с надписью читер только один раз игроку давался.
Опять таки представляю себе ситуацию, когда толпа заходит в мультиплеер, все одновременно набирают год и бегают с флажками як дыты


Отправлено Scream 08-01-2008 в 18:33:

Дядя Миша
а.. ну значит я тебя недопонял. Ясно, спасибо.

Цитата:
Опять таки представляю себе ситуацию, когда толпа заходит в мультиплеер, все одновременно набирают год и бегают с флажками як дыты

А что, хороший мод можно сделать))) Типа Scientist Hunt=)))


Отправлено Scream 11-01-2008 в 21:00:

Дабы не флудить и не создавать лишних тем тут и продолжу свои вопросы по кодингу, если администрация не против...

Вопрос 2
У МП5 (weapon_9mmAR) есть один неприятный баг, а именно при стрельбе в сену отображается только каждая вторая декаль дырки. Почему это происходит?
Кстати так же и в демке HLFX.
При этом оружие, построенное на базе этого же МП5 работает совершенно исправно.

Вопрос 3
Насколько сложно сделать для каждого материала свой набор декалей? Ведь они же уже разделены по издаваемому звуку, можно ли как-нибудь это использовать?

Вопрос 4
Как заставить альт. атаку у оружия стрелять дуплетом как из дробовика, но при этом использовать свой тип патронов? Простой копи-паст и создание нового типа пуль не сработал. Вот отрывок кода:

C++ Source Code:
1
void CDESTROYER::SecondaryAttack( void )
2
{
3
  // don't fire underwater
4
  if (m_pPlayer->pev->waterlevel == 3)
5
  {
6
    PlayEmptySound( );
7
    m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.4;
8
    return;
9
  }
10
 
11
 
12
  if (m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType] == 0)
13
  {
14
    PlayEmptySound( );
15
    return;
16
  }
17
 
18
  m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;
19
  m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
20
 
21
  m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType]--;
22
 
23
 
24
 
25
  int flags;
26
#if defined( CLIENT_WEAPONS )
27
  flags = FEV_NOTHOST;
28
#else
29
  flags = 0;
30
#endif
31
 
32
  m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH;
33
 
34
  // player "shoot" animation
35
  m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
36
 
37
  Vector vecSrc	 = m_pPlayer->GetGunPosition( );
38
  Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );
39
 
40
  Vector vecDir;
41
 
42
#ifdef CLIENT_DLL
43
  if ( bIsMultiplayer() )
44
#else
45
  if ( g_pGameRules->IsMultiplayer() )
46
#endif
47
  {
48
    // tuned for deathmatch
49
    vecDir = m_pPlayer->FireBulletsPlayer( 3, vecSrc, vecAiming, VECTOR_CONE_3DEGREES, 2048, BULLET_PLAYER_DESTROYER2, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );
50
  }
51
  else
52
  {
53
    // untouched default single player
54
    vecDir = m_pPlayer->FireBulletsPlayer( 3, vecSrc, vecAiming, VECTOR_CONE_3DEGREES, 2048, BULLET_PLAYER_DESTROYER2, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );
55
  }
56
 
57
  PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usDoubleFire, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 );
58
 
59
 
60
  m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 1;
61
  m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1;
62
  if (m_iClip != 0)
63
    m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 3;
64
  else
65
    m_flTimeWeaponIdle = 1;
66
 
67
  m_fInSpecialReload = 1;
68
 
69
 
70
  SendWeaponAnim( DESTROYER_GRENADE );
71
 
72
}


Отправлено XaeroX 11-01-2008 в 21:10:

Цитата:
Scream писал:
У МП5 (weapon_9mmAR) есть один неприятный баг, а именно при стрельбе в сену отображается только каждая вторая декаль дырки. Почему это происходит?

Это не баг, а фича. Так сделано специально.

__________________

xaerox on Vivino


Отправлено Scream 11-01-2008 в 22:11:

XaeroX
А это можно ликвидировать?


Отправлено XaeroX 12-01-2008 в 01:44:

Можно, там в EV_HLDM_FireBullets вроде есть рандом для декалей от пуль автомата, вот его надо убрать.

__________________

xaerox on Vivino


Отправлено Дядя Миша 12-01-2008 в 06:45:

Scream для выстрела дуплетом нужно код Fire вызвать 2 раза подряд. А тип патронов вообще не имеет значения.


Временная зона GMT. Текущее время 16:46.
Показать все 12 сообщений этой темы на одной странице

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