Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Как пофиксить дт в лв

  • Автор темы Автор темы ilon3s
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Онлайн
Регистрация
22 Окт 2022
Сообщения
101
Реакции
24
При отжатии дт тпает только через несколько секунд,как фиксить??
Знаю что дт можно перенести на форс речардж но не знаю как (((
 
double_tap:
Expand Collapse Copy
bool misc::double_tap(CUserCmd* m_pcmd)
{
    double_tap_enabled = true;

    static auto recharge_rapid_fire = false;
    static bool firing_dt = false;

    if (recharge_rapid_fire)
    {
        recharge_rapid_fire = false;
        recharging_double_tap = true;

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    auto max_tickbase_shift = g_ctx.globals.weapon->get_max_tickbase_shift();

    if (recharging_double_tap)
    {
        if (can_shift_shot(max_tickbase_shift) && !aim::get().should_stop)
        {
            recharging_double_tap = false;
            double_tap_key = true;
            firing_dt = false;
        }
        else if (m_pcmd->m_buttons & IN_ATTACK)
            firing_dt = true;
    }

    if (!g_cfg.ragebot.enable)
    {
        double_tap_enabled = false;
        double_tap_key = false;

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    if (!g_cfg.ragebot.double_tap)
    {
        double_tap_enabled = false;
        double_tap_key = false;

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    static bool was_in_dt = false;

    if (g_cfg.ragebot.double_tap_key.key <= KEY_NONE || g_cfg.ragebot.double_tap_key.key >= KEY_MAX)
    {
        double_tap_enabled = false;
        double_tap_key = false;

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    if (double_tap_key && g_cfg.ragebot.double_tap_key.key != g_cfg.antiaim.hide_shots_key.key)
        hide_shots_key = false;

    if (!double_tap_key || g_ctx.local()->m_bGunGameImmunity() || g_ctx.local()->m_fFlags() & FL_FROZEN || g_ctx.globals.fakeducking)
    {
        double_tap_enabled = false;

        if (!firing_dt && was_in_dt)
        {
            g_ctx.globals.trigger_teleport = true;
            g_ctx.globals.teleport_amount = max_tickbase_shift;

            was_in_dt = false;
        }

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;

        return false;
    }

    if (m_gamerules()->m_bIsValveDS())
    {
        double_tap_enabled = false;
        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    if (antiaim::get().freeze_check)
        return true;

    was_in_dt = true;

    if (!g_ctx.globals.weapon->is_grenade() && g_ctx.globals.weapon->m_iItemDefinitionIndex() != WEAPON_TASER
        && g_ctx.globals.weapon->m_iItemDefinitionIndex() != WEAPON_REVOLVER
        && (m_pcmd->m_buttons & IN_ATTACK || m_pcmd->m_buttons & IN_ATTACK2 && g_ctx.globals.weapon->is_knife())) //-V648
    {
        auto next_command_number = m_pcmd->m_command_number + 1;
        auto user_cmd = m_input()->GetUserCmd(next_command_number);

        memcpy(user_cmd, m_pcmd, sizeof(CUserCmd));
        user_cmd->m_command_number = next_command_number;

        util::copy_command(user_cmd, max_tickbase_shift);

        if (g_ctx.globals.aimbot_working)
        {
            g_ctx.globals.double_tap_aim = true;
            g_ctx.globals.double_tap_aim_check = true;
        }

        recharge_rapid_fire = true;
        double_tap_enabled = false;
        double_tap_key = false;

        g_ctx.send_packet = true;
        firing_dt = true;
    }
    else if (!g_ctx.globals.weapon->is_grenade() && g_ctx.globals.weapon->m_iItemDefinitionIndex() != WEAPON_TASER && g_ctx.globals.weapon->m_iItemDefinitionIndex() != WEAPON_REVOLVER)
        g_ctx.globals.tickbase_shift = max_tickbase_shift;

    return true;
}

в hooked_runcommand.cpp:
Expand Collapse Copy
using CLMove_t = void(__vectorcall*)(float, bool);
void __vectorcall hooks::hooked_clmove(float accumulated_extra_samples, bool bFinalTick)
{
    if (g_ctx.globals.should_recharge)
    {
        g_ctx.get_command()->m_tickcount = INT_MAX;

        if (++g_ctx.globals.ticks_allowed >= 14)
        {
            g_ctx.globals.should_recharge = false;
            g_ctx.send_packet = true;
        }
        else
            g_ctx.send_packet = false;

        return;
    }

    ((CLMove_t)original_clmove)(accumulated_extra_samples, bFinalTick);
    if (g_ctx.available() && g_ctx.local()->is_alive())
    {
        if (g_ctx.globals.trigger_teleport)
        {
            for (int i = 0; i < g_ctx.globals.teleport_amount; i++)
                ((CLMove_t)original_clmove)(accumulated_extra_samples, bFinalTick);

            g_ctx.globals.teleport_amount = 0;
            g_ctx.globals.trigger_teleport = false;
        }
    }
}

using WriteUsercmdDeltaToBuffer_t = bool(__thiscall*)(void*, int, void*, int, int, bool);
void WriteUserÑmd(void* buf, CUserCmd* incmd, CUserCmd* outcmd);

bool __fastcall hooks::hooked_writeusercmddeltatobuffer(void* ecx, void* edx, int slot, bf_write* buf, int from, int to, bool is_new_command)
{
    static auto original_fn = client_hook->get_func_address <WriteUsercmdDeltaToBuffer_t>(24);

    if (!g_ctx.globals.tickbase_shift)
        return original_fn(ecx, slot, buf, from, to, is_new_command);

    if (from != -1)
        return true;

    auto final_from = -1;

    uintptr_t frame_ptr;
    __asm mov frame_ptr, ebp;

    auto backup_commands = reinterpret_cast <int*> (frame_ptr + 0xFD8);
    auto new_commands = reinterpret_cast <int*> (frame_ptr + 0xFDC);

    auto newcmds = *new_commands;
    auto shift = g_ctx.globals.tickbase_shift;

    g_ctx.globals.tickbase_shift = 0;
    *backup_commands = 0;

    auto choked_modifier = newcmds + shift;

    if (choked_modifier > 62)
        choked_modifier = 62;

    *new_commands = choked_modifier;

    auto next_cmdnr = m_clientstate()->iChokedCommands + m_clientstate()->nLastOutgoingCommand + 1;
    auto final_to = next_cmdnr - newcmds + 1;

    if (final_to <= next_cmdnr)
    {
        while (original_fn(ecx, slot, buf, final_from, final_to, true))
        {
            final_from = final_to++;

            if (final_to > next_cmdnr)
                goto next_cmd;
        }

        return false;
    }
next_cmd:

    auto user_cmd = m_input()->GetUserCmd(final_from);

    if (!user_cmd)
        return true;

    CUserCmd to_cmd;
    CUserCmd from_cmd;

    from_cmd = *user_cmd;
    to_cmd = from_cmd;

    to_cmd.m_command_number++;
    to_cmd.m_tickcount += 200;

    if (newcmds > choked_modifier)
        return true;

    for (auto i = choked_modifier - newcmds + 1; i > 0; --i)
    {
        WriteUserÑmd(buf, &to_cmd, &from_cmd);

        from_cmd = to_cmd;
        to_cmd.m_command_number++;
        to_cmd.m_tickcount++;
    }

    return true;
}

void WriteUserÑmd(void* buf, CUserCmd* incmd, CUserCmd* outcmd)
{
    using WriteUserCmd_t = void(__fastcall*)(void*, CUserCmd*, CUserCmd*);
    static auto Fn = (WriteUserCmd_t)util::FindSignature(crypt_str("client.dll"), crypt_str("55 8B EC 83 E4 F8 51 53 56 8B D9"));

    __asm
    {
        mov     ecx, buf
        mov     edx, incmd
        push    outcmd
        call    Fn
        add     esp, 4
    }
}
 
double_tap:
Expand Collapse Copy
bool misc::double_tap(CUserCmd* m_pcmd)
{
    double_tap_enabled = true;

    static auto recharge_rapid_fire = false;
    static bool firing_dt = false;

    if (recharge_rapid_fire)
    {
        recharge_rapid_fire = false;
        recharging_double_tap = true;

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    auto max_tickbase_shift = g_ctx.globals.weapon->get_max_tickbase_shift();

    if (recharging_double_tap)
    {
        if (can_shift_shot(max_tickbase_shift) && !aim::get().should_stop)
        {
            recharging_double_tap = false;
            double_tap_key = true;
            firing_dt = false;
        }
        else if (m_pcmd->m_buttons & IN_ATTACK)
            firing_dt = true;
    }

    if (!g_cfg.ragebot.enable)
    {
        double_tap_enabled = false;
        double_tap_key = false;

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    if (!g_cfg.ragebot.double_tap)
    {
        double_tap_enabled = false;
        double_tap_key = false;

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    static bool was_in_dt = false;

    if (g_cfg.ragebot.double_tap_key.key <= KEY_NONE || g_cfg.ragebot.double_tap_key.key >= KEY_MAX)
    {
        double_tap_enabled = false;
        double_tap_key = false;

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    if (double_tap_key && g_cfg.ragebot.double_tap_key.key != g_cfg.antiaim.hide_shots_key.key)
        hide_shots_key = false;

    if (!double_tap_key || g_ctx.local()->m_bGunGameImmunity() || g_ctx.local()->m_fFlags() & FL_FROZEN || g_ctx.globals.fakeducking)
    {
        double_tap_enabled = false;

        if (!firing_dt && was_in_dt)
        {
            g_ctx.globals.trigger_teleport = true;
            g_ctx.globals.teleport_amount = max_tickbase_shift;

            was_in_dt = false;
        }

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;

        return false;
    }

    if (m_gamerules()->m_bIsValveDS())
    {
        double_tap_enabled = false;
        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    if (antiaim::get().freeze_check)
        return true;

    was_in_dt = true;

    if (!g_ctx.globals.weapon->is_grenade() && g_ctx.globals.weapon->m_iItemDefinitionIndex() != WEAPON_TASER
        && g_ctx.globals.weapon->m_iItemDefinitionIndex() != WEAPON_REVOLVER
        && (m_pcmd->m_buttons & IN_ATTACK || m_pcmd->m_buttons & IN_ATTACK2 && g_ctx.globals.weapon->is_knife())) //-V648
    {
        auto next_command_number = m_pcmd->m_command_number + 1;
        auto user_cmd = m_input()->GetUserCmd(next_command_number);

        memcpy(user_cmd, m_pcmd, sizeof(CUserCmd));
        user_cmd->m_command_number = next_command_number;

        util::copy_command(user_cmd, max_tickbase_shift);

        if (g_ctx.globals.aimbot_working)
        {
            g_ctx.globals.double_tap_aim = true;
            g_ctx.globals.double_tap_aim_check = true;
        }

        recharge_rapid_fire = true;
        double_tap_enabled = false;
        double_tap_key = false;

        g_ctx.send_packet = true;
        firing_dt = true;
    }
    else if (!g_ctx.globals.weapon->is_grenade() && g_ctx.globals.weapon->m_iItemDefinitionIndex() != WEAPON_TASER && g_ctx.globals.weapon->m_iItemDefinitionIndex() != WEAPON_REVOLVER)
        g_ctx.globals.tickbase_shift = max_tickbase_shift;

    return true;
}

в hooked_runcommand.cpp:
Expand Collapse Copy
using CLMove_t = void(__vectorcall*)(float, bool);
void __vectorcall hooks::hooked_clmove(float accumulated_extra_samples, bool bFinalTick)
{
    if (g_ctx.globals.should_recharge)
    {
        g_ctx.get_command()->m_tickcount = INT_MAX;

        if (++g_ctx.globals.ticks_allowed >= 14)
        {
            g_ctx.globals.should_recharge = false;
            g_ctx.send_packet = true;
        }
        else
            g_ctx.send_packet = false;

        return;
    }

    ((CLMove_t)original_clmove)(accumulated_extra_samples, bFinalTick);
    if (g_ctx.available() && g_ctx.local()->is_alive())
    {
        if (g_ctx.globals.trigger_teleport)
        {
            for (int i = 0; i < g_ctx.globals.teleport_amount; i++)
                ((CLMove_t)original_clmove)(accumulated_extra_samples, bFinalTick);

            g_ctx.globals.teleport_amount = 0;
            g_ctx.globals.trigger_teleport = false;
        }
    }
}

using WriteUsercmdDeltaToBuffer_t = bool(__thiscall*)(void*, int, void*, int, int, bool);
void WriteUserÑmd(void* buf, CUserCmd* incmd, CUserCmd* outcmd);

bool __fastcall hooks::hooked_writeusercmddeltatobuffer(void* ecx, void* edx, int slot, bf_write* buf, int from, int to, bool is_new_command)
{
    static auto original_fn = client_hook->get_func_address <WriteUsercmdDeltaToBuffer_t>(24);

    if (!g_ctx.globals.tickbase_shift)
        return original_fn(ecx, slot, buf, from, to, is_new_command);

    if (from != -1)
        return true;

    auto final_from = -1;

    uintptr_t frame_ptr;
    __asm mov frame_ptr, ebp;

    auto backup_commands = reinterpret_cast <int*> (frame_ptr + 0xFD8);
    auto new_commands = reinterpret_cast <int*> (frame_ptr + 0xFDC);

    auto newcmds = *new_commands;
    auto shift = g_ctx.globals.tickbase_shift;

    g_ctx.globals.tickbase_shift = 0;
    *backup_commands = 0;

    auto choked_modifier = newcmds + shift;

    if (choked_modifier > 62)
        choked_modifier = 62;

    *new_commands = choked_modifier;

    auto next_cmdnr = m_clientstate()->iChokedCommands + m_clientstate()->nLastOutgoingCommand + 1;
    auto final_to = next_cmdnr - newcmds + 1;

    if (final_to <= next_cmdnr)
    {
        while (original_fn(ecx, slot, buf, final_from, final_to, true))
        {
            final_from = final_to++;

            if (final_to > next_cmdnr)
                goto next_cmd;
        }

        return false;
    }
next_cmd:

    auto user_cmd = m_input()->GetUserCmd(final_from);

    if (!user_cmd)
        return true;

    CUserCmd to_cmd;
    CUserCmd from_cmd;

    from_cmd = *user_cmd;
    to_cmd = from_cmd;

    to_cmd.m_command_number++;
    to_cmd.m_tickcount += 200;

    if (newcmds > choked_modifier)
        return true;

    for (auto i = choked_modifier - newcmds + 1; i > 0; --i)
    {
        WriteUserÑmd(buf, &to_cmd, &from_cmd);

        from_cmd = to_cmd;
        to_cmd.m_command_number++;
        to_cmd.m_tickcount++;
    }

    return true;
}

void WriteUserÑmd(void* buf, CUserCmd* incmd, CUserCmd* outcmd)
{
    using WriteUserCmd_t = void(__fastcall*)(void*, CUserCmd*, CUserCmd*);
    static auto Fn = (WriteUserCmd_t)util::FindSignature(crypt_str("client.dll"), crypt_str("55 8B EC 83 E4 F8 51 53 56 8B D9"));

    __asm
    {
        mov     ecx, buf
        mov     edx, incmd
        push    outcmd
        call    Fn
        add     esp, 4
    }
}
удачи фиксить то что тебя назад при пике будет тепать
 

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.

double_tap:
Expand Collapse Copy
bool misc::double_tap(CUserCmd* m_pcmd)
{
    double_tap_enabled = true;

    static auto recharge_rapid_fire = false;
    static bool firing_dt = false;

    if (recharge_rapid_fire)
    {
        recharge_rapid_fire = false;
        recharging_double_tap = true;

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    auto max_tickbase_shift = g_ctx.globals.weapon->get_max_tickbase_shift();

    if (recharging_double_tap)
    {
        if (can_shift_shot(max_tickbase_shift) && !aim::get().should_stop)
        {
            recharging_double_tap = false;
            double_tap_key = true;
            firing_dt = false;
        }
        else if (m_pcmd->m_buttons & IN_ATTACK)
            firing_dt = true;
    }

    if (!g_cfg.ragebot.enable)
    {
        double_tap_enabled = false;
        double_tap_key = false;

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    if (!g_cfg.ragebot.double_tap)
    {
        double_tap_enabled = false;
        double_tap_key = false;

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    static bool was_in_dt = false;

    if (g_cfg.ragebot.double_tap_key.key <= KEY_NONE || g_cfg.ragebot.double_tap_key.key >= KEY_MAX)
    {
        double_tap_enabled = false;
        double_tap_key = false;

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    if (double_tap_key && g_cfg.ragebot.double_tap_key.key != g_cfg.antiaim.hide_shots_key.key)
        hide_shots_key = false;

    if (!double_tap_key || g_ctx.local()->m_bGunGameImmunity() || g_ctx.local()->m_fFlags() & FL_FROZEN || g_ctx.globals.fakeducking)
    {
        double_tap_enabled = false;

        if (!firing_dt && was_in_dt)
        {
            g_ctx.globals.trigger_teleport = true;
            g_ctx.globals.teleport_amount = max_tickbase_shift;

            was_in_dt = false;
        }

        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;

        return false;
    }

    if (m_gamerules()->m_bIsValveDS())
    {
        double_tap_enabled = false;
        g_ctx.globals.ticks_allowed = 0;
        g_ctx.globals.tickbase_shift = 0;
        return false;
    }

    if (antiaim::get().freeze_check)
        return true;

    was_in_dt = true;

    if (!g_ctx.globals.weapon->is_grenade() && g_ctx.globals.weapon->m_iItemDefinitionIndex() != WEAPON_TASER
        && g_ctx.globals.weapon->m_iItemDefinitionIndex() != WEAPON_REVOLVER
        && (m_pcmd->m_buttons & IN_ATTACK || m_pcmd->m_buttons & IN_ATTACK2 && g_ctx.globals.weapon->is_knife())) //-V648
    {
        auto next_command_number = m_pcmd->m_command_number + 1;
        auto user_cmd = m_input()->GetUserCmd(next_command_number);

        memcpy(user_cmd, m_pcmd, sizeof(CUserCmd));
        user_cmd->m_command_number = next_command_number;

        util::copy_command(user_cmd, max_tickbase_shift);

        if (g_ctx.globals.aimbot_working)
        {
            g_ctx.globals.double_tap_aim = true;
            g_ctx.globals.double_tap_aim_check = true;
        }

        recharge_rapid_fire = true;
        double_tap_enabled = false;
        double_tap_key = false;

        g_ctx.send_packet = true;
        firing_dt = true;
    }
    else if (!g_ctx.globals.weapon->is_grenade() && g_ctx.globals.weapon->m_iItemDefinitionIndex() != WEAPON_TASER && g_ctx.globals.weapon->m_iItemDefinitionIndex() != WEAPON_REVOLVER)
        g_ctx.globals.tickbase_shift = max_tickbase_shift;

    return true;
}

в hooked_runcommand.cpp:
Expand Collapse Copy
using CLMove_t = void(__vectorcall*)(float, bool);
void __vectorcall hooks::hooked_clmove(float accumulated_extra_samples, bool bFinalTick)
{
    if (g_ctx.globals.should_recharge)
    {
        g_ctx.get_command()->m_tickcount = INT_MAX;

        if (++g_ctx.globals.ticks_allowed >= 14)
        {
            g_ctx.globals.should_recharge = false;
            g_ctx.send_packet = true;
        }
        else
            g_ctx.send_packet = false;

        return;
    }

    ((CLMove_t)original_clmove)(accumulated_extra_samples, bFinalTick);
    if (g_ctx.available() && g_ctx.local()->is_alive())
    {
        if (g_ctx.globals.trigger_teleport)
        {
            for (int i = 0; i < g_ctx.globals.teleport_amount; i++)
                ((CLMove_t)original_clmove)(accumulated_extra_samples, bFinalTick);

            g_ctx.globals.teleport_amount = 0;
            g_ctx.globals.trigger_teleport = false;
        }
    }
}

using WriteUsercmdDeltaToBuffer_t = bool(__thiscall*)(void*, int, void*, int, int, bool);
void WriteUserÑmd(void* buf, CUserCmd* incmd, CUserCmd* outcmd);

bool __fastcall hooks::hooked_writeusercmddeltatobuffer(void* ecx, void* edx, int slot, bf_write* buf, int from, int to, bool is_new_command)
{
    static auto original_fn = client_hook->get_func_address <WriteUsercmdDeltaToBuffer_t>(24);

    if (!g_ctx.globals.tickbase_shift)
        return original_fn(ecx, slot, buf, from, to, is_new_command);

    if (from != -1)
        return true;

    auto final_from = -1;

    uintptr_t frame_ptr;
    __asm mov frame_ptr, ebp;

    auto backup_commands = reinterpret_cast <int*> (frame_ptr + 0xFD8);
    auto new_commands = reinterpret_cast <int*> (frame_ptr + 0xFDC);

    auto newcmds = *new_commands;
    auto shift = g_ctx.globals.tickbase_shift;

    g_ctx.globals.tickbase_shift = 0;
    *backup_commands = 0;

    auto choked_modifier = newcmds + shift;

    if (choked_modifier > 62)
        choked_modifier = 62;

    *new_commands = choked_modifier;

    auto next_cmdnr = m_clientstate()->iChokedCommands + m_clientstate()->nLastOutgoingCommand + 1;
    auto final_to = next_cmdnr - newcmds + 1;

    if (final_to <= next_cmdnr)
    {
        while (original_fn(ecx, slot, buf, final_from, final_to, true))
        {
            final_from = final_to++;

            if (final_to > next_cmdnr)
                goto next_cmd;
        }

        return false;
    }
next_cmd:

    auto user_cmd = m_input()->GetUserCmd(final_from);

    if (!user_cmd)
        return true;

    CUserCmd to_cmd;
    CUserCmd from_cmd;

    from_cmd = *user_cmd;
    to_cmd = from_cmd;

    to_cmd.m_command_number++;
    to_cmd.m_tickcount += 200;

    if (newcmds > choked_modifier)
        return true;

    for (auto i = choked_modifier - newcmds + 1; i > 0; --i)
    {
        WriteUserÑmd(buf, &to_cmd, &from_cmd);

        from_cmd = to_cmd;
        to_cmd.m_command_number++;
        to_cmd.m_tickcount++;
    }

    return true;
}

void WriteUserÑmd(void* buf, CUserCmd* incmd, CUserCmd* outcmd)
{
    using WriteUserCmd_t = void(__fastcall*)(void*, CUserCmd*, CUserCmd*);
    static auto Fn = (WriteUserCmd_t)util::FindSignature(crypt_str("client.dll"), crypt_str("55 8B EC 83 E4 F8 51 53 56 8B D9"));

    __asm
    {
        mov     ecx, buf
        mov     edx, incmd
        push    outcmd
        call    Fn
        add     esp, 4
    }
}
 
Назад
Сверху Снизу