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 ) |
Единственный синглплеерный мод с неработающим годом, который я видел это Invasion - там игра вылетает при вводе года, когда естественно св_читс = 1.
C++ Source Code:
1 | // check for godmode or invincibility |
2 | if ( pev->flags & FL_GODMODE ) |
А насчёт флага это ты смешно придумал. У тебя модель есть? Если нет, я могу сделать в свободное время. А вот как дать этот флаг игроку:
client.cpp, функция ClientCommand:
C++ Source Code:
1 | if ( FStrEq(pcmd, "god" ) ) |
3 | GetClassPtr((CBasePlayer *)pev)->GiveNamedItem("weapon_cheaterflag") ; |
Естественно, придётся написать код флага килобайта на 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 ) |
3 | // don't fire underwater |
4 | if (m_pPlayer->pev->waterlevel == 3) |
7 | m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.4; |
12 | if (m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType] == 0) |
18 | m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME; |
19 | m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; |
21 | m_pPlayer->m_rgAmmo[m_iSecondaryAmmoType]--; |
26 | #if defined( CLIENT_WEAPONS ) |
32 | m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH; |
34 | // player "shoot" animation |
35 | m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); |
37 | Vector vecSrc = m_pPlayer->GetGunPosition( ); |
38 | Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES ); |
43 | if ( bIsMultiplayer() ) |
45 | if ( g_pGameRules->IsMultiplayer() ) |
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 ); |
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 ); |
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 ); |
60 | m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 1; |
61 | m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1; |
63 | m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 3; |
65 | m_flTimeWeaponIdle = 1; |
67 | m_fInSpecialReload = 1; |
70 | SendWeaponAnim( DESTROYER_GRENADE ); |
Отправлено XaeroX 11-01-2008 в 21:10:
Цитата:
Scream писал:
У МП5 (weapon_9mmAR) есть один неприятный баг, а именно при стрельбе в сену отображается только каждая вторая декаль дырки. Почему это происходит?
Это не баг, а фича. Так сделано специально.__________________
Отправлено Scream 11-01-2008 в 22:11:
XaeroX
А это можно ликвидировать?
Отправлено XaeroX 12-01-2008 в 01:44:
Можно, там в EV_HLDM_FireBullets вроде есть рандом для декалей от пуль автомата, вот его надо убрать.
__________________
Отправлено Дядя Миша 12-01-2008 в 06:45:
Scream для выстрела дуплетом нужно код Fire вызвать 2 раза подряд. А тип патронов вообще не имеет значения.