BLOG "Моё хобби" или "как я трачу свободное время"

Сообщения
2,752
Реакции
3,017
Помог
61 раз(а)
1533300081270.png

Рекомендую ознакомиться с статьёй от MailRu команды разработки игры Warface.
Проблема читов в онлайн-играх

Разумеется, никакая защита кода не является панацеей. Она может лишь усложнить задачу для злоумышленника. Цель в данном случае – сделать так, чтобы стоимость взлома была выше, чем ожидаемая выгода.
3 Авг 2018
Первый путь подразумевает запрет на запись в память процесса (WriteProcessMemory) и запрет на создание удаленных потоков (CreateRemoteThread). Обычный способ инжекта своего модуля в процесс как раз требует записать в память и создать свой поток в этом процессе. Учитывая, что чит имеет возможность работать с привилегиями администратора (читер всегда даст их), то в Windows никак нельзя запретить писать в память и создавать потоки в чужих процессах. Можно подумать в сторону создания своего драйвера, который будет блокировать доступ к процессу клиента игры. Но в ядре Windows нет документированных способов фильтровать запись в память чужих процессов (NtWriteVirtualMemory), а использование недокументированных способов сильно усложняется наличием Kernel Patch Protection. Даже если удастся заблокировать запись в свою память, то всегда будут другие дырки: можно внедрить свой код в системные библиотеки на диске.

Предполагается, что модули игры при этом защищены и запакованы защитой кода, и изменить их на диске довольно проблематично.
3 Авг 2018
Проблему читерства в онлайн-играх не решить только лишь улучшением клиент-серверного взаимодействия. Она комплексная, и бороться с ней тоже нужно комплексными мерами. Как следствие, большинство игр имеют дополнительные специализированные программные средства для защиты от читов (античиты), и от них есть ощутимый толк. Благодаря таким системам читеры портят игровой опыт других игроков в куда меньших масштабах, чем могли бы.
 
Сообщения
223
Реакции
146
Помог
4 раз(а)
wopox1337, найти бы ещё озвучку тех времён, когда кидаешь гранату проигрывался звук - "Ложись братва"
 
Сообщения
2,752
Реакции
3,017
Помог
61 раз(а)
Тем не менее, "высохшие" мнения забавно и почитать. У кого-то были предположения, что кс незаменима игрой, с лучшей графикой. Однако, Valve постаралась и вбухала достаточно капитала и смогла пошатнуть легенду.

Киберспорт и сравнение Counter-Strike 1.6 с шахматами. Плюс почему никто не играет в CS: Source
https://m.habr.com/post/68890/

Помните, easy to start, hard to master.
 
Последнее редактирование:
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
wopox1337, топику уже 9 лет, но его содержимое дает понять, что за это время ничего не изменилось с того, что в нем было написано.
 
Сообщения
2,752
Реакции
3,017
Помог
61 раз(а)
1533507586297.png
Возникла у моего знакомого "проблемная ситуация" с ВКонтакте . "Кто-то" взломал его страницу и повходил во "всякие группы ВК".
Страницу восстановили, но вот незадача, как чистить ответ не найти с первых минут.
Где-то я нашёл скрипт, который поможет в автоматизации процесса выхода из всех групп.

Как выйти из всех групп ВКонтакте?
1. Перейдите на страницу с группами в вашем профиле (https://vk.com/groups);
1533507395162.png
2. Откройте консоль отладки JavaScript и впишите туда скрипт:
1533507330976.png
3. Нажмите "Enter" на клавиатуре, тем самым запустите процесс.
А вот и сам скрипт:
JavaScript:
javascript: function delg() {
    links = document.querySelectorAll("a");
    for (var a = 0; a < links.length; a++) "Отписаться" == links[a].innerHTML && (links[a].click(), setTimeout(function() {
        for (var a = document.querySelectorAll("button"), b = 0; b < a.length; b++) "Выйти из группы" == a[b].innerHTML && a[b].click()
    }, 1e3))
}

function ccg() {
    return +document.querySelectorAll(".ui_tab_count")[0].innerText.replace(/\s+/g, "")
}
for (var cc = ccg(), gg = document.querySelectorAll("span"), i = 0; i < gg.length; i++) "Группы" == gg[i].innerHTML && (gg = gg[i]);
var si = setInterval("if(ccg()>0){delg();gg.click();}else{clearInterval(si);}", 2e3);
Откуда взял? Не помню, честно...
 
Последнее редактирование:
Сообщения
2,752
Реакции
3,017
Помог
61 раз(а)
Было настроение... было время. Хотел накидать примерную схему работы HLDS сервера с всеми его дополнениями. Потом, вдруг внезапно стало лень. Быть может и доделаю когда-нибудь. :dntknw:
HLDS Server Components.png
P.S: за колбэк с HLDS к GameDLL не пинайте! более опытные ребята в некотором деле в Telegram чате подсказали, что имеются не большие ошибки.
Схему рисовал в https://www.draw.io/ и ни о чём не жалею :good2:, при желании можете подкорректировать до необходимого состояния там же. (Исходники в комплекте)
 

Download all Attachments

Последнее редактирование:
Сообщения
2,752
Реакции
3,017
Помог
61 раз(а)
Хм, интересно, кто придумал эту дурацкую стандартную физику выброса оружия у игрока?

Попробую пофиксить, привести в порядок.

Код:
#include <amxmodx>
#include <fakemeta>
#include <reapi>
#include <xs>

public plugin_init()
{
    register_plugin("DropPlayerItem angles fix", "0.0.1", "wopox1337");

    RegisterHookChain(RG_CBasePlayer_DropPlayerItem, "CBasePlayer_DropPlayerItem", .post = true);
}

public CBasePlayer_DropPlayerItem(this, pszItemName[])
{
    #pragma unused pszItemName

    static pWeaponBox;
    if(!is_entity((pWeaponBox = GetHookChainReturn(ATYPE_INTEGER))))
        return;

    new Float: vVector[3];
    // vVector[1] = random_float(-360.0, 360.0);
    // set_pev(pWeaponBox, pev_angles, vVector);

    vVector[1] = random_float(-150.0, 150.0);
    set_pev(pWeaponBox, pev_avelocity, vVector);

    pev(this, pev_v_angle, vVector);
    angle_vector(vVector, ANGLEVECTOR_FORWARD, vVector);
    xs_vec_mul_scalar(vVector, 300.0, vVector);
    set_pev(pWeaponBox, pev_velocity, vVector);

    _get_forward_origin(this, vVector, 25.0);

    set_pev(pWeaponBox, pev_origin, vVector);
}

stock _get_forward_origin(id, Float: forward_origin[3], Float: dist)
{
    static Float:origin[3], Float:view_ofs[3];
    pev(id, pev_origin, origin);
    pev(id, pev_view_ofs, view_ofs);

    static Float:view_pos[3];
    xs_vec_add(origin, view_ofs, view_pos);

    static Float:v_angle[3];
    pev(id, pev_v_angle, v_angle);

    engfunc(EngFunc_MakeVectors, v_angle);

    static Float:v_vector[3];
    global_get(glb_v_forward, v_vector);

    xs_vec_add_scaled(view_pos, v_vector, dist, forward_origin);
}
2018-12-12_18-22-35.gif

В идеале бы так:
2018-12-12_19-23-57.gif
 
Последнее редактирование:
Сообщения
1,701
Реакции
1,512
Помог
26 раз(а)
Pokemoshka, держи, единственное, что он на земле не очень выглядит. Можно сделать чтобы он правильные углы при приземлении принимал.
Код:
#include <amxmodx>
#include <fakemeta>
#include <reapi>

public plugin_init()
{
    RegisterHookChain(RG_CBasePlayer_DropPlayerItem, "@CCBasePlayer__DropPlayerItem_Post", true);
}

@CCBasePlayer__DropPlayerItem_Post(iPlayer, szItemName[])
{
    new iWeaponBox = GetHookChainReturn(ATYPE_INTEGER);

    if (is_nullent(iWeaponBox))
        return;

    new Float:vecOrigin[3];
    new Float:vecViewOfs[3];
    new Float:vecViewAngle[3];
    new Float:vecVelocity[3];
    new Float:vecAirVelocity[3];
    new Float:vecViewForward[3];
    new Float:vecViewRight[3];

    get_entvar(iPlayer, var_origin, vecOrigin);
    get_entvar(iPlayer, var_view_ofs, vecViewOfs);
    get_entvar(iPlayer, var_v_angle, vecViewAngle);

    engfunc(EngFunc_MakeVectors, vecViewAngle);

    global_get(glb_v_forward, vecViewForward);
    global_get(glb_v_right, vecViewRight);

    for (new i = 0; i < 3; i++)
    {
        vecOrigin[i] += vecViewOfs[i] + vecViewForward[i] * 16.0 + vecViewRight[i] * 8.0;
        vecVelocity[i] = vecViewForward[i] * 200.0;
    }

    vecViewAngle[0] = -90.0;
    vecViewAngle[1] -= 90.0;

    vecAirVelocity[0] = -135.0;
    vecAirVelocity[1] = 135.0;

    engfunc(EngFunc_SetOrigin, iWeaponBox, vecOrigin);

    set_entvar(iWeaponBox, var_angles, vecViewAngle);
    set_entvar(iWeaponBox, var_velocity, vecVelocity);
    set_entvar(iWeaponBox, var_avelocity, vecAirVelocity);
    set_entvar(iWeaponBox, var_gravity, 0.5);
}
 
Сообщения
2,288
Реакции
1,740
Помог
31 раз(а)
fl0wer, а мне то зачем?))) Кстати вроде плагин был который исправляет положение оружий на земле. То есть на наклонной поверхности оружие тоже под углом будет параллельно поверхности. Если это поможет
 
Сообщения
1,701
Реакции
1,512
Помог
26 раз(а)
Pokemoshka, ну вот его ещё поставить, либо сюда дополнить. Я название его забыл.
 
Сообщения
273
Реакции
424
Помог
5 раз(а)
Pokemoshka, держи, единственное, что он на земле не очень выглядит. Можно сделать чтобы он правильные углы при приземлении принимал.
Код:
#include <amxmodx>
#include <fakemeta>
#include <reapi>

public plugin_init()
{
    RegisterHookChain(RG_CBasePlayer_DropPlayerItem, "@CCBasePlayer__DropPlayerItem_Post", true);
}

@CCBasePlayer__DropPlayerItem_Post(iPlayer, szItemName[])
{
    new iWeaponBox = GetHookChainReturn(ATYPE_INTEGER);

    if (is_nullent(iWeaponBox))
        return;

    new Float:vecOrigin[3];
    new Float:vecViewOfs[3];
    new Float:vecViewAngle[3];
    new Float:vecVelocity[3];
    new Float:vecAirVelocity[3];
    new Float:vecViewForward[3];
    new Float:vecViewRight[3];

    get_entvar(iPlayer, var_origin, vecOrigin);
    get_entvar(iPlayer, var_view_ofs, vecViewOfs);
    get_entvar(iPlayer, var_v_angle, vecViewAngle);

    engfunc(EngFunc_MakeVectors, vecViewAngle);

    global_get(glb_v_forward, vecViewForward);
    global_get(glb_v_right, vecViewRight);

    for (new i = 0; i < 3; i++)
    {
        vecOrigin[i] += vecViewOfs[i] + vecViewForward[i] * 16.0 + vecViewRight[i] * 8.0;
        vecVelocity[i] = vecViewForward[i] * 200.0;
    }

    vecViewAngle[0] = -90.0;
    vecViewAngle[1] -= 90.0;

    vecAirVelocity[0] = -135.0;
    vecAirVelocity[1] = 135.0;

    engfunc(EngFunc_SetOrigin, iWeaponBox, vecOrigin);

    set_entvar(iWeaponBox, var_angles, vecViewAngle);
    set_entvar(iWeaponBox, var_velocity, vecVelocity);
    set_entvar(iWeaponBox, var_avelocity, vecAirVelocity);
    set_entvar(iWeaponBox, var_gravity, 0.5);
}
fl0wer, Опередил:)
12 Дек 2018
wopox1337, Получится, только надо анимацию оружия на дроп делать. Я так в своём моде с аптечкой и боеприпасами делал.
 
Сообщения
2,752
Реакции
3,017
Помог
61 раз(а)
bionext, на дропе по сути нужно оружие на поверхность положить и всё. (ну, чтобы сильно не замарачиваться можно в 0 угол выставить, а можно и рассчитать, как это происходит в: Lie Flat
12 Дек 2018
Однако, стоит ли оно того, и примут ли такие правки в ReGameDLL ?! Примут ли игроки изменение это ? Ведь раньше, всегда, чтобы кинуть дальше оружие - они целились в пол.
 

d3m37r4

111111
Сообщения
1,455
Реакции
1,194
Помог
10 раз(а)
Однако, стоит ли оно того, и примут ли такие правки в ReGameDLL ?! Примут ли игроки изменение это ? Ведь раньше, всегда, чтобы кинуть дальше оружие - они целились в пол.
Если ввести включение фичи посредством квара в регейм?
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу