Перейти к содержанию

Создаем internal мультихак, на примере CryEngine3 SDK [Kick from PvE]


JustHack

2 553 просмотра

 

 

1.thumb.png.5eebdd2c57b7d173efcb983c1dc80bcd.png

 

 

В этой статье, мы с вами расширим наш проект, функцией для исключения любого союзника с любой спецоперации или PvE миссии, в любой момент.

Система кика игроков со спецоперации и PvE работает по следующему принципу:

  • Автоматическое исключение за бездействие (по таймеру)
  • Исключение голосованием игроков

 

Проблема заключается в том, что если игрок активен (например, использует афкбот), система не сможет автоматически исключить его. У вас остаётся только единственный вариант, это голосование игроков. Но и здесь есть проблема. Она заключается в том, что после 2-3 контрольных точек, флаг возможности голосования переключается и запустить голосование игроков невозможно. 

 

Наша задача включить функцию кика и указать количество контрольных точек, в течении которых она будет активна.

 

Добавим в наш код новые смещения

Спойлер

#define ICVAR_OFFS_ENABLEKICK			0x498
#define ICVAR_OFFS_PVEKICK			0x49C

 

 

В итоге, мы имеем такой набор смещений

 

Спойлер

#define ICVAR_ADDR				0x1420DD458
#define IGAMEFRAMEWORK_ADDR			0x1420DE108

#define IGAMEFRAMEWORK_GETCLIENTACTOR		0x470

#define ICVAR_OFFS_IDLECHECK			0x168
#define ICVAR_OFFS_LOBBYAFK			0x7B0
#define ICVAR_OFFS_INGAMEAFK			0x5D0
#define ICVAR_OFFS_ENABLEKICK			0x498
#define ICVAR_OFFS_PVEKICK			0x49C
#define ICVAR_OFFS_ADVERTISING			0x90
#define ICVAR_OFFS_PERSONAL_OFFER		0xB4
#define ICVAR_OFFS_CHATENABLED			0xB20
#define ICVAR_OFFS_LOBBYCHATDELAY		0xB28
#define ICVAR_OFFS_INGAMECHATDELAY		0xB30
#define ICVAR_OFFS_GAMETYPE			0x600

 

 

Добавим в перечисление CvarOffsets новые значения

 

Спойлер

E_ENABLEKICK		=  ICVAR_OFFS_ENABLEKICK,
E_PVEKICK		=  ICVAR_OFFS_PVEKICK,

 

 

Теперь наше перечисление со смещениями, выглядит так

 

Спойлер

enum eCvarOffsets : DWORD64
{
	E_IDLECHECK			=  ICVAR_OFFS_IDLECHECK,
	E_LOBBYAFK			=  ICVAR_OFFS_LOBBYAFK,
	E_INGAMEAFK			=  ICVAR_OFFS_INGAMEAFK,
	E_ENABLEKICK			=  ICVAR_OFFS_ENABLEKICK,
	E_PVEKICK			=  ICVAR_OFFS_PVEKICK,
	E_ADVERTISING_OFF		=  ICVAR_OFFS_ADVERTISING,
	E_PERSONAL_OFFER		=  ICVAR_OFFS_PERSONAL_OFFER,
	E_CHATENABLED			=  ICVAR_OFFS_CHATENABLED,
	E_LOBBYCHATDELAY   		=  ICVAR_OFFS_LOBBYCHATDELAY,
	E_INGAMECHATDELAY  		=  ICVAR_OFFS_INGAMECHATDELAY,
	E_GAMETYPE			=  ICVAR_OFFS_GAMETYPE,

};

 

 

Пишем функцию, для включения кика игроков в любое время

 

Спойлер

void EnableKick()
{
	IGameFramework* pGameFramework = IGameFramework::Base();
	if (!pGameFramework) return;

	ICvar* pCvar = ICvar::Base(); 
	if (!pCvar) return;
	
	IActor* pActor = nullptr;

	if (pGameFramework->GetClientActor(&pActor))
	{
		pCvar->SetValue(eCvarOffsets::E_ENABLEKICK, TRUE);
		pCvar->SetValue(eCvarOffsets::E_PVEKICK,    UCHAR_MAX);
	}
}

 

 

Если вам что-то не понятно, не стесняйтесь задавать свои вопросы в ЛС Discord или ниже в комментариях.

 

 

  • Понравилось 1
  • Плюс 1

4 Комментария


Рекомендуемые комментарии

Где новые статьи почему нет новых статей?!  Напиши как сделать аим и вх и ещё желательно телепорт на спецухах и магнит ботов!

Ссылка на комментарий
2 часа назад, loskill12 сказал:

Где новые статьи почему нет новых статей?!

Где оплата трудов автора статей почему нет оплаты трудов автора статей? Быстро оплати его труды по предыдущим статьям и желательно еще оплати статьи по телепорту и магниту ботов!

  • Смешно 1
Ссылка на комментарий
1 час назад, loskill12 сказал:

Почему надо оплату это бесплатный форум же! Все должны делиться знаниями здесь. 

Ну так он поделился знаниями бесплатно, которыми считал нужным поделиться. А дальше сам. К тому же, это бесплатный форум, автор не получает за это денег, следовательно, делится знаниями строго по собственному желанию.

Ссылка на комментарий
Гость
Эта запись блога заблокирована для комментирования.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.