AntiSpeedHack -
DANGER1979 - 19.06.2011
Наверное все уже сделали простой 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;
}
основанный, на замере просто максимальных скоростей (угловых и прямолинейных).
А вот, кто-нибудь пробовал создать более идеальную модель этого античита?
Т.е. замерить прямолинейные скорости.
Определить зависимость угла наклона транспорта к увеличению скорости.
Наклон мы знаем, т.к. есть ф-ия для определения.
А вот какова зависимость?
Мы не знаем веса тачек. И не знаем, работает ли законы ускорения свободного падения в игре.
Плюс ко всему характеристика транспорта нам тоже не известны.
Реально ли это?
Re: AntiSpeedHack -
Stepashka - 19.06.2011
Делать подобную систему ориентируясь на скорость изначально не правильно.
Re: AntiSpeedHack -
DANGER1979 - 19.06.2011
Ну так подскажи на что ориентироваться. Ведь для этого и создаются форумы.
Почему не правильно?
Я понимаю что в собейте есть геймспид, при котором GetVehicleSpeed покажет нормальное значение скорости, хотя на самом деле ты переместился на много дальше и соответственно развил на много больше скорость.
Re: AntiSpeedHack -
Stepashka - 19.06.2011
Скорость это следствие, нужно проверять причину.
Re: AntiSpeedHack -
White_116 - 19.06.2011
вообще нужно ускорение смотреть, ибо некоторые даже не развивают скорости больше предела - врезаются. и проверять смещение по оси z чтобы не дать кик при падении авто с высоты.
Re: AntiSpeedHack -
Stepashka - 19.06.2011
Quote:
Originally Posted by White_116
вообще нужно ускорение смотреть, ибо некоторые даже не развивают скорости больше предела - врезаются. и проверять смещение по оси z чтобы не дать кик при падении авто с высоты.
|
вот человек правильно мыслит

если нет ускорения, а есть скорость - значит человек читер.
Re: AntiSpeedHack -
DANGER1979 - 19.06.2011
Что ты подразумеваешь под ускорением ? 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);//скорость = растояние / время(час)
Re: AntiSpeedHack -
Stepashka - 19.06.2011
Quote:
Originally Posted by DANGER1979
Что ты подразумеваешь под ускорением ? GetPlayerVelocity?
Что ты подразумеваешь под скоростью ? производную от GetPlayerVelocity?
|
если ты не знаешь что такое ускорение иди в школу.
Да.
В школу.
Да.
Итак движок ГТА устроен так что сперва появляется усокрение и уже оно приводит к тому чтобы появилась скорость. Если ускорение не появилось а объект начал перемещаться значит перемещением занять не движок.
Re: AntiSpeedHack -
Stepashka - 19.06.2011
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х мерной системе координат, можно забыть про направление движения, оно само собой учитывается.
Логика банальна:
Есть ускорение, есть скорость - усе нормально.
Нет ускорения, есть скорость - ты читак.
Есть ускорение, скорость, но второе не есть рещультат первого - ты читак.
Re: AntiSpeedHack -
DANGER1979 - 19.06.2011
Блин, а то что я писал
stock GetVehicleSpeed(vehicleid)
это не тоже самое?
просто умножено на 100.