HLFX.Ru Forum
Показать все 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)


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

читы, читы и ещё раз читы =)

Хочу убрать из мода все читы, как это сделать? понадобится ли мне список самих читов? (просто я ни одного не знаю)
и ещё: команда cmd name меняет имя игрока-сервера, вопрос - Зачем её встроили в хл? чтобы игроки донимали сервера изменением ника? По-моему глупо; Как её убрать?

__________________
I'm on github
I'm on opendesktop.org


Отправлено OffyGhost 21-05-2008 в 11:04:

скажу вот что.
Мне читы не нужны, я их не использую и не парюсь

Но! Они нужны,что бы выживать в суровых условиях ламмер модов. Для того они, что бы не умирать в стенах и не застреваль под стульями


Отправлено Дядя Миша 21-05-2008 в 14:56:

FreeSlave сервер всегда называется по имени карты, имя игрока тут непричем.

__________________
My Projects: download page

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

Цитата:

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


Отправлено FreeSlave 21-05-2008 в 19:11:

Дядя Миша причём тут карта, я говорю про имя игрока, создавшего сервер, вы по сети что ли не играли? с помощью команды cmd name можно изменить имя самого игрока, иногда этим пользуются и издеваются((

OffyGhost
1. я и не говорил что сам юзаю читы, я спрашиваю, как их отменить, например в Adrenaline Gamer Mod использование читов невозможно.
2. что такое "ламмер моды"? если тупые моды, то зачем в них вообще играть?
3. если даже читы нужны в некоторых сингловских картах, но по сети их использование непозволительно по этическим нормам, однако некоторые игроки их нарушают, мне для этого и надо читы вообще убрать.

__________________
I'm on github
I'm on opendesktop.org


Отправлено XaeroX 21-05-2008 в 19:16:

Цитата:
FreeSlave писал:
если тупые моды, то зачем в них вообще играть?

не обязательно тупые, просто автор поленился как следует его потестировать. Даже в HL:Invasion, неплохом в общем-то моде, есть места, где без читов фиг пройдешь, а при попытке ввести чит игра вылетает.

А чтобы убрать читы в сетевой игре - нет ничего проще. Поставь античитерскую программу и не ставь sv_cheats 1 при создании сервера.

__________________

xaerox on Vivino


Отправлено Дядя Миша 22-05-2008 в 05:44:

FreeSlave а я тебе говорю про имя сервера, которое изменить нельзя.

Цитата:
можно изменить имя самого игрока, иногда этим пользуются и издеваются

А что команду kick отменили уже

__________________
My Projects: download page

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

Цитата:

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


Отправлено FreeSlave 22-05-2008 в 06:35:

мля, я вообще хочу читы и cmd name из игры убрать, с помощью кодинга, это мод будет, не поняли чтоли? Как это сделать?

Дядя Миша разве видно кто меняет имя с cmd name?

__________________
I'm on github
I'm on opendesktop.org


Отправлено XaeroX 22-05-2008 в 07:22:

FreeSlave насколько я знаю, cmd разбирается в самом движке, а его исходников нет. Так что вряд ли ты сможешь ее вырезать. Равно как и god, noclip и прочие. Хотя - god к примеру устанавливает флаг FL_GODMODE, и по нему можно вычислить читера и кикнуть. Ну или молча снять этот флаг. Ноклип устанавливает для игрока MOVETYPE_NOCLIP, и еще кажется в pmove есть переменная isNoClipping, хотя не уверен.

__________________

xaerox on Vivino


Отправлено Scrama 22-05-2008 в 08:49:

заведи переменную cl_name и в каждом кадре на сервере выставляй name по ней - будет перебивать твой глюк (я его не замечал никогда и проверять не буду).

__________________
"Злобным гениям не нужна харизма." © 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


Отправлено FreeSlave 22-05-2008 в 10:02:

а может вообще как-нибудь команду sv_cheats убрать?

Scrama ты о каком глюке?

__________________
I'm on github
I'm on opendesktop.org


Отправлено XaeroX 22-05-2008 в 10:10:

Цитата:
FreeSlave писал:
а может вообще как-нибудь команду sv_cheats убрать?

Тоже, имхо, никак.

__________________

xaerox on Vivino


Отправлено Brainiac2008 22-05-2008 в 10:13:

FreeSlave
Ты берешься за слишком фундаментальные вопросы, над ними бьются все админы всех серверов HL, а ты хочешь так просто это решить.


Отправлено PoD-Stas 22-05-2008 в 10:31:

ХМ имхо. Можно просто создать функицию, которая определяет совпадения строк, поступающих от клиента на сервер. Ну напр клиент пишет "god" и его кикает.


Отправлено XaeroX 22-05-2008 в 10:35:

PoD-Stas как ты получишь этот список?

__________________

xaerox on Vivino


Отправлено PoD-Stas 22-05-2008 в 10:39:

Ну создать "черный" список команд, которые при совпадении кикают клиента с которого они пришли. Но я эти делом не занимался, а просто взял и убрал все читы со своего мода, когда чел вводит чит ему выводит "Cheaters and emo must die" Но это я делал только с импульсом и give просто еще не трогал ничо


Отправлено XaeroX 22-05-2008 в 10:42:

PoD-Stas еще раз: как ты получишь список строк от клиента к серверу?

__________________

xaerox on Vivino


Отправлено PoD-Stas 22-05-2008 в 11:07:

А они че в основе движка? Еси да, то я протупил...


Отправлено XaeroX 22-05-2008 в 11:13:

PoD-Stas То есть ты, не разбираясь в вопросе вообще, начинаешь давать советы? Тебе не кажется, что это граничит с флудом?

__________________

xaerox on Vivino


Отправлено PoD-Stas 22-05-2008 в 11:16:

Не. Ну вот как я с импульсом боролся:
//=========================================================
//=========================================================
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
}


Отправлено Дядя Миша 22-05-2008 в 11:20:

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'


Отправлено XaeroX 22-05-2008 в 11:22:

Про импульс это и так понятно. Вопрос был про god, cmd name и иже с ними.

__________________

xaerox on Vivino


Отправлено PoD-Stas 22-05-2008 в 12:09:

Про год я предполагал, а импульс просто так показал... А вообще нужно химичить с флагом 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:

Ну что. такие пути решения проблем возможны? Там еще нашел функцию регистрации команд, приходящих с клиента, вроде...


Отправлено Ku2zoff 22-05-2008 в 17:06:

Цитата:
XaeroX писал:
Даже в HL:Invasion, неплохом в общем-то моде, есть места, где без читов фиг пройдешь, а при попытке ввести чит игра вылетает.

Тама параметр какой-то надо вводить при старте, что-то вроде -test. А я долго парился, когда первый раз проходил, а потом взял и переписал skill.cfg

Вообще можно сделать так:
C++ Source Code:
1
else if ( FStrEq(pcmd, "god") )
2
{
3
  ALERT(at_console, "You're dirty cheater!\n")
4
  SERVER_COMMAND( "disconnect\n" );
5
}


Или сделать ещё страшнее: вызывать shutdown.exe чтоб комп перезагружался, но это вообще в тяжких случаях


Отправлено PoD-Stas 22-05-2008 в 18:26:

Вот, и то в сто раз легче )


Отправлено Scrama 23-05-2008 в 02:06:

А если в каждом кадре забивать 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


Отправлено Дядя Миша 23-05-2008 в 05:39:

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'


Отправлено FreeSlave 23-05-2008 в 07:30:

вот что пишется в консоле в 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


Отправлено Scrama 23-05-2008 в 08:36:

FreeSlave hl.dsw, world.cpp

C++ Source Code:
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
}

Вот вместо этого
C++ Source Code:
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


Отправлено PoD-Stas 23-05-2008 в 12:53:

Гы. Тоже элементарно


Отправлено Дядя Миша 23-05-2008 в 14:29:

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'


Отправлено Troll 24-06-2008 в 21:10:

pfnGetCmdList. Потом через него просто либо потереть команду, либо передать указатель на другую функцию


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

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