AntiSpeedHack
#1

Наверное все уже сделали простой AntiSpeedHack, который можно вызывать как из таймера, так и из пакетника.
типа
pawn Код:
stock AntiSpeedHack(playerid)
{
    new value;//текущая полученная скорость
    if(ANTISPEEDHACK != 1) return 1;
    new Float:x, Float:y, Float:z;
    new maxspeed = 135;//максимальная разрешённая скорость
    if(!IsPlayerInAnyVehicle(playerid)) return 1;
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;

    GetVehicleVelocity(nCarID[playerid], x, y, z);
    maxspeed = VehicleArray[nCarModel[playerid]-400][Speed];//если в тачке на месте водилы то максимальная скорость
    value = floatround(floatsqroot( floatpower(x*100.0,2) + floatpower(y*100.0,2) ));// + floatpower(z*100.0,2)

    new SENSITIVITY = 0;
    if( value > (maxspeed + SENSITIVITY) )

        new reason[28+32+3+6];
        format(reason, sizeof(reason), "SpeedHack %s[%d] - %d km/h.",
            VehicleArray[nCarModel[playerid]-400][Vehicle_Name],
            nCarModel[playerid], value );
        new lH, lM, lS; gettime(lH,lM,lS);
       
        new string[MAX_STRING];
        format(string, sizeof(string), "{AFAFAF}[%d:%02d:%02d] {FF0000}CEPBEP: {FFFFFF}%s[%d] {FFFF00}was banned for "#BanTime" days, reason: %s",
            lH,lM,lS, PlayerName(playerid), playerid, reason);
        SendClientMessageToAll(COLOR_RED, string);

    }
    return 1;
}
основанный, на замере просто максимальных скоростей (угловых и прямолинейных).

А вот, кто-нибудь пробовал создать более идеальную модель этого античита?
Т.е. замерить прямолинейные скорости.
Определить зависимость угла наклона транспорта к увеличению скорости.
Наклон мы знаем, т.к. есть ф-ия для определения.
А вот какова зависимость?
Мы не знаем веса тачек. И не знаем, работает ли законы ускорения свободного падения в игре.
Плюс ко всему характеристика транспорта нам тоже не известны.

Реально ли это?
Reply
#2

Делать подобную систему ориентируясь на скорость изначально не правильно.
Reply
#3

Ну так подскажи на что ориентироваться. Ведь для этого и создаются форумы.
Почему не правильно?
Я понимаю что в собейте есть геймспид, при котором GetVehicleSpeed покажет нормальное значение скорости, хотя на самом деле ты переместился на много дальше и соответственно развил на много больше скорость.
Reply
#4

Скорость это следствие, нужно проверять причину.
Reply
#5

вообще нужно ускорение смотреть, ибо некоторые даже не развивают скорости больше предела - врезаются. и проверять смещение по оси z чтобы не дать кик при падении авто с высоты.
Reply
#6

Quote:
Originally Posted by White_116
Посмотреть сообщение
вообще нужно ускорение смотреть, ибо некоторые даже не развивают скорости больше предела - врезаются. и проверять смещение по оси z чтобы не дать кик при падении авто с высоты.
вот человек правильно мыслит
если нет ускорения, а есть скорость - значит человек читер.
Reply
#7

Что ты подразумеваешь под ускорением ? GetPlayerVelocity?

Что ты подразумеваешь под скоростью ? производную от GetPlayerVelocity?
pawn Код:
stock GetVehicleSpeed(vehicleid)
{
    new Float: v[3];
    GetVehicleVelocity(vehicleid, v[0], v[1], v[2]);
    return  floatround( 100.0 * floatsqroot(
            floatpower(v[0],2) +
            floatpower(v[1],2) +
            floatpower(v[2],2)),
            floatround_floor);//округляем в нижнее значение
}
или
pawn Код:
GetVehiclePos(nCarID[playerid],x,y,z);
distance = floatsqroot( floatpower(floatsub(x,telepPos[0][playerid]),2)
                 + floatpower(floatsub(y,telepPos[1][playerid]),2) );
new value = floatround(distance/1000*3600);//скорость = растояние / время(час)
Reply
#8

Quote:
Originally Posted by DANGER1979
Посмотреть сообщение
Что ты подразумеваешь под ускорением ? GetPlayerVelocity?

Что ты подразумеваешь под скоростью ? производную от GetPlayerVelocity?
если ты не знаешь что такое ускорение иди в школу.
Да.
В школу.
Да.
Итак движок ГТА устроен так что сперва появляется усокрение и уже оно приводит к тому чтобы появилась скорость. Если ускорение не появилось а объект начал перемещаться значит перемещением занять не движок.
Reply
#9

GetVehicleVelocity(vehicleid[playerid], velocity[0], velocity[1], velocity[2]);
velocity[0] = floatsqroot(floatpower(velocity[0], 2.0) + floatpower(velocity[1], 2.0) + floatpower(velocity[2], 2.0));
вот ускорение объекта в 3х мерной системе координат, можно забыть про направление движения, оно само собой учитывается.
Логика банальна:
Есть ускорение, есть скорость - усе нормально.
Нет ускорения, есть скорость - ты читак.
Есть ускорение, скорость, но второе не есть рещультат первого - ты читак.
Reply
#10

Блин, а то что я писал
stock GetVehicleSpeed(vehicleid)
это не тоже самое?
просто умножено на 100.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)