![]() |
Страницы (3): « 1 [2] 3 » Показать все 31 сообщений этой темы на одной странице |
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=1309)
PoD-Stas еще раз: как ты получишь список строк от клиента к серверу?
__________________
А они че в основе движка? Еси да, то я протупил...
PoD-Stas То есть ты, не разбираясь в вопросе вообще, начинаешь давать советы? Тебе не кажется, что это граничит с флудом?
__________________
Не. Ну вот как я с импульсом боролся:
//=========================================================
//=========================================================
void CBasePlayer::CheatImpulseCommands( int iImpulse )
{
#if !defined( HLDEMO_BUILD )
if ( g_flWeaponCheat == 0.0 )
{
return;
}
CBaseEntity *pEntity;
TraceResult tr;
switch ( iImpulse )
{
case 76:
{
if (!giPrecacheGrunt)
{
giPrecacheGrunt = 1;
ALERT(at_debug, "You must now restart to use Grunt-o-matic.\n");
}
else
{
UTIL_MakeVectors( Vector( 0, pev->v_angle.y, 0 ) );
Create("monster_human_grunt", pev->origin + gpGlobals->v_forward * 128, pev->angles);
}
break;
}
case 90: //LRC - send USE_TOGGLE
{
char *impulsetarget = (char *)CVAR_GET_STRING( "sohl_impulsetarget" );
if (impulsetarget)
FireTargets(impulsetarget, this, this, USE_TOGGLE, 0);
break;
}
case 91: //LRC - send USE_ON
{
char *impulsetarget = (char *)CVAR_GET_STRING( "sohl_impulsetarget" );
if (impulsetarget)
FireTargets(impulsetarget, this, this, USE_ON, 0);
break;
}
case 92: //LRC - send USE_OFF
{
char *impulsetarget = (char *)CVAR_GET_STRING( "sohl_impulsetarget" );
if (impulsetarget)
FireTargets(impulsetarget, this, this, USE_OFF, 0);
break;
}
case 101:
gEvilImpulse101 = TRUE;
UTIL_CenterPrintAll( "Cheaters and emo must die!" );
gEvilImpulse101 = FALSE;
break;
case 111:
if (!giPrecacheHLweapons)
{
ALERT(at_console, "Now you should restart, and use impulse 111 again to get half-life weapons\n");
UTIL_CenterPrintAll( "Cheaters and emo must die!" );
giPrecacheHLweapons = 1;
break;
}
gEvilImpulse101 = TRUE;
#ifndef OEM_BUILD
UTIL_CenterPrintAll( "Cheaters and emo must die!" );
#endif
gEvilImpulse101 = FALSE;
break;
case 102:
// Gibbage!!!
CGib::SpawnRandomGibs( pev, 1, 1 );
break;
case 103:
// What the hell are you doing?
pEntity = FindEntityForward( this );
if ( pEntity )
{
CBaseMonster *pMonster = pEntity->MyMonsterPointer();
if ( pMonster )
pMonster->ReportAIState();
}
break;
case 104:
// Dump all of the global state varaibles (and global entity names)
gGlobalState.DumpGlobals();
break;
case 105:// player makes no sound for monsters to hear.
{
if ( m_fNoPlayerSound )
{
ALERT ( at_debug, "Player is audible\n" );
m_fNoPlayerSound = FALSE;
}
else
{
ALERT ( at_debug, "Player is silent\n" );
m_fNoPlayerSound = TRUE;
}
break;
}
case 106:
// Give me the classname and targetname of this entity.
pEntity = FindEntityForward( this );
if ( pEntity )
{
ALERT ( at_debug, "Classname: %s", STRING( pEntity->pev->classname ) );
if ( !FStringNull ( pEntity->pev->targetname ) )
{
ALERT ( at_debug, " - Targetname: %s\n", STRING( pEntity->pev->targetname ) );
}
else
{
ALERT ( at_debug, " - TargetName: No Targetname\n" );
}
ALERT ( at_debug, "Model: %s\n", STRING( pEntity->pev->model ) );
if ( pEntity->pev->globalname )
ALERT ( at_debug, "Globalname: %s\n", STRING( pEntity->pev->globalname ) );
ALERT(at_debug, "State: %s\n", GetStringForState( pEntity->GetState() )); //LRC
}
break;
case 107:
{
TraceResult tr;
edict_t *pWorld = g_engfuncs.pfnPEntityOfEntIndex( 0 );
Vector start = pev->origin + pev->view_ofs;
Vector end = start + gpGlobals->v_forward * 1024;
UTIL_TraceLine( start, end, ignore_monsters, edict(), &tr );
if ( tr.pHit )
pWorld = tr.pHit;
const char *pTextureName = TRACE_TEXTURE( pWorld, start, end );
if ( pTextureName )
ALERT( at_debug, "Texture: %s\n", pTextureName );
}
break;
case 195:// show shortest paths for entire level to nearest node
{
Create("node_viewer_fly", pev->origin, pev->angles);
}
break;
case 196:// show shortest paths for entire level to nearest node
{
Create("node_viewer_large", pev->origin, pev->angles);
}
break;
case 197:// show shortest paths for entire level to nearest node
{
Create("node_viewer_human", pev->origin, pev->angles);
}
break;
case 199:// show nearest node and all connections
{
ALERT ( at_debug, "%d\n", WorldGraph.FindNearestNode ( pev->origin, bits_NODE_GROUP_REALM ) );
WorldGraph.ShowNodeConnections ( WorldGraph.FindNearestNode ( pev->origin, bits_NODE_GROUP_REALM ) );
}
break;
case 202:// Random blood splatter
UTIL_MakeVectors(pev->v_angle);
UTIL_TraceLine ( pev->origin + pev->view_ofs, pev->origin + pev->view_ofs + gpGlobals->v_forward * 128, ignore_monsters, ENT(pev), & tr);
if ( tr.flFraction != 1.0 )
{// line hit something, so paint a decal
CBloodSplat *pBlood = GetClassPtr((CBloodSplat *)NULL);
pBlood->Spawn( pev );
}
break;
case 203:// remove creature.
pEntity = FindEntityForward( this );
if ( pEntity )
{
if ( pEntity->pev->takedamage )
pEntity->SetThink(&CBaseEntity::SUB_Remove);
}
break;
}
#endif // HLDEMO_BUILD
}
PoD-Stas ты говоришь про god, а сам показываешь импульс. Где логика???
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Про импульс это и так понятно. Вопрос был про god, cmd name и иже с ними.
__________________
Про год я предполагал, а импульс просто так показал... А вообще нужно химичить с флагом FL_GODMODE.
Поищите
// check for godmode or invincibility
if ( pev->flags & FL_GODMODE )
{
return 0;
}
там можно кое-что нахимичить вместа return 0; поставить нужное действие...
Добавлено 22-05-2008 в 14:36:
Аналогично с ноклипом
if (pev->movetype == MOVETYPE_NOCLIP)
/*действие*/;
А с cmd еще не разобралсо...
Добавлено 22-05-2008 в 14:42:
Ну насчет сравнения поступающих команд с клиента, я думаю замешана функция
void (*pfnClientPrintf) ( edict_t* pEdict, PRINT_TYPE ptype, const char *szMsg );
Добавлено 22-05-2008 в 15:09:
Ну что. такие пути решения проблем возможны? Там еще нашел функцию регистрации команд, приходящих с клиента, вроде...
1 | else if ( FStrEq(pcmd, "god") ) |
2 | { |
3 | ALERT(at_console, "You're dirty cheater!\n") |
4 | SERVER_COMMAND( "disconnect\n" ); |
5 | } |
Вот, и то в сто раз легче )
А если в каждом кадре забивать sv_cheats 0?
__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran
Scrama sv_cheats она и так полностью проверяется на сервере.
Хотя во втором квейке именно этот подход использовался.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
вот что пишется в консоле в Adrenaline Gamer Mod (сетевой мод на HL), если пытаешься ввести sv_cheats 1 :
] sv_cheats 1
"sv_cheats" changed to "1"
Server enforces variables and "sv_cheats" needs to be the same during the game
(A) bl: <AG Mod> Warned for using variable sv_cheats with value 1.000000 (1 violation(s)
"sv_cheats" changed to "0"
__________________
I'm on github
I'm on opendesktop.org
FreeSlave hl.dsw, world.cpp
1 | void CWorld :: Spawn( void ) |
2 | { |
3 | g_fGameOver = FALSE; |
4 | Precache( ); |
5 | g_flWeaponCheat = CVAR_GET_FLOAT( "sv_cheats" ); // Is the impulse 101 command allowed? |
6 | } |
1 | void CWorld :: Spawn( void ) |
2 | { |
3 | g_fGameOver = FALSE; |
4 | Precache( ); |
5 | if (CVAR_GET_FLOAT( "sv_cheats" )) |
6 | { |
7 | CVAR_SET_FLOAT("sv_cheats", 0); |
8 | ALERT( at_console, "Blah-blah-blah"); |
9 | } |
10 | } |
__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran
Гы. Тоже элементарно
Scrama только не в спавне, а в StartFrame
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Временная зона GMT. Текущее время 14:11. | Страницы (3): « 1 [2] 3 » Показать все 31 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024