devcore(gideon) write user cmd, так что за какой то костыльный код я не отвечаюto_cmd.tick_count += 200;
300 будет как бы гет гуд где не 200
а он че тут забылheranox
Эм... а догадаться, что это переменная int в структуре cMainStruct не составляет трудаи мужик
к чему равен shift_timer?
XDD
Посмотри пруфы работы.а вовка че тут забыл
oh shit, thats naming...g_PCsgo
Это можно было логически додумать, потому что переменная увеличивается и равняется 0, если ее значение превышает больше 14мужик
не составляет
а равняется она к чему?
к нулю заебись. да оч круто
например ебать
g_PCsgo->m_nPrevTickbase = m_pCsgo->m_pCurrentTickbase; иэто все инт прикинь
Данный код вызывается вместо обычного Break LC. - При этом речардж остается не тронутым.я не понял, то есть вместо того, чтобы зарядить дт раз он просто делает это бесконечно в цикле?
а каким образом тогда если чит не отправляет на сервер и у него остается речарджнутый дт?Данный код вызывается вместо обычного Break LC. - При этом речардж остается не тронутым.
Он всегда отправляет данные на сервер, но не для лаг компенсации с таким методом.а каким образом тогда если чит не отправляет на сервер и у него остается речарджнутый дт?
я чёт твой гайд не понял, какой код нужен?Этот метод очень костыльный и могут быть предикшн ерроры.
Но это не мешает аимботу попадать нормально при пике или других ситуациях.
Для этого нужно:
Переделать брик лц таким образом, чтобы он работал как фейклаг
То-есть, как с обычным фейклагом, делается таймер
Пока он не достиг 14 тиков - не отправляем данные (шифтим)
Достигло - отправляем данные на сервер (офаем шифт)
Может еще понадобиться нормальный (не с лв) Hooked_WriteUsercmdDeltaToBufferКод:if (can_dt) { if (++csgo->shift_timer >= 14) csgo->shift_timer = 0; csgo->shift_amount = csgo->shift_timer > 0 ? 16 : 0; }
Код его будет ниже:
Код:void WriteUsercmd(bf_write* buf, CUserCmd* in, CUserCmd* out) { using WriteUserCmd_t = void(__fastcall*)(void*, CUserCmd*, CUserCmd*); static auto Fn = (WriteUserCmd_t)csgo->Utils.FindPatternIDA(GetModuleHandleA(g_Modules[fnva1(hs::client_dll.s().c_str())]().c_str()), hs::write_user_cmd.s().c_str()); __asm { mov ecx, buf mov edx, in push out call Fn add esp, 4 } } bool __fastcall Hooked_WriteUsercmdDeltaToBuffer(void* ecx, void*, int slot, bf_write* buf, int from, int to, bool isnewcommand) { static auto original_fn = g_pClientHook->GetOriginal <WriteUsercmdDeltaToBufferFn>(g_HookIndices[fnva1(hs::Hooked_WriteUsercmdDeltaToBuffer.s().c_str())]); if (!csgo->local || !csgo->is_connected || !csgo->is_local_alive || csgo->game_rules->IsFreezeTime() || csgo->local->HasGunGameImmunity() || csgo->local->GetFlags() & FL_FROZEN) return original_fn(ecx, slot, buf, from, to, isnewcommand); if (!csgo->shift_amount) return original_fn(ecx, slot, buf, from, to, isnewcommand); if (from != -1) return true; auto p_new_commands = (int*)((DWORD)buf - 0x2C); auto p_backup_commands = (int*)((DWORD)buf - 0x30); auto new_commands = *p_new_commands; auto next_cmd_nr = csgo->client_state->nLastOutgoingCommand + csgo->client_state->iChokedCommands + 1; auto total_new_commands = std::clamp(csgo->shift_amount, 0, 16); csgo->shift_amount -= total_new_commands; from = -1; *p_new_commands = total_new_commands; *p_backup_commands = 0; for (to = next_cmd_nr - new_commands + 1; to <= next_cmd_nr; to++) { if (!original_fn(ecx, slot, buf, from, to, true)) return false; from = to; } CUserCmd* last_real_cmd = interfaces.input->GetUserCmd(slot, from); CUserCmd from_cmd; if (last_real_cmd) memcpy(&from_cmd, last_real_cmd, sizeof(CUserCmd)); CUserCmd to_cmd; memcpy(&to_cmd, &from_cmd, sizeof(CUserCmd)); to_cmd.command_number++; to_cmd.tick_count += 200; for (int i = new_commands; i <= total_new_commands; i++) { WriteUsercmd(buf, &to_cmd, &from_cmd); memcpy(&from_cmd, &to_cmd, sizeof(CUserCmd)); to_cmd.command_number++; to_cmd.tick_count++; } return true; }
Пруф работы: (спасибо Kamazik, ZARG, rod9, emazixs1337, detour , miracl3, lordjustice, @heranox kirbk512 за тесты)
Fuck code hiders
All my homies do self code and leak it on yougame
P.S.
Почему ставится 16? Поясню.
Методом отладки было выяснено, что в итоге шифтится 14 тиков, а не 16
Потому что в WriteUsercmdDeltaToBuffer комманды создаются от 2 до 16
От чего и шифтится (16 - 2 ) = 14 тиковКод:for (int i = new_commands; i <= total_new_commands; i++) // new_commands равен 2 (скорее всего из-за того, что происходит чоук на 2 тика) { WriteUsercmd(buf, &to_cmd, &from_cmd); memcpy(&from_cmd, &to_cmd, sizeof(CUserCmd)); to_cmd.command_number++; to_cmd.tick_count++; } return true; }
Change break LC and hook to code in thread.Where should i include this?
Change break LC and hook to code in thread.
Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.
А разве эти события могут происходить параллельно? Тики это единичная величина, каким образом даблтап остается заряженным в момент того, как происходит шифт тиков для брик лс, это же невозможноОн всегда отправляет данные на сервер, но не для лаг компенсации с таким методом.
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz