PDA

Просмотр полной версии : [Вопрос] Проверка



codeo
12.06.2014, 14:23
Помогите с проверкой: если игрок летит с горы, то чтобы античит на него не орал





Float:GetPlayerSpeedXY(playerid)
{
new
Float:float_data[3]
;

if(IsPlayerInAnyVehicle(playerid))
{
GetVehicleVelocity(GetPlayerVehicleID(playerid), float_data[0], float_data[1], float_data[2]);
}
else
{
GetPlayerVelocity(playerid, float_data[0], float_data[1], float_data[2]);
}

return floatmul(floatsqroot(floatadd(floatpower(float_data[0],2.0),floatpower(float_data[1],2.0))),200.0);
}

georJik
12.06.2014, 14:36
new getanim[32], getanim2[32];
GetAnimationName(GetPlayerAnimationIndex(playerid), getanim, sizeof(getanim), getanim2, sizeof(getanim2));
if(GetPlayerSpeedXY(playerid) > 40 && strcmp(getanim, "SWIM", true) == 0 && strcmp(getanim2, "SWIM_crawl", true) == 0)

Как-то так. Дальше выполняй свои действия кикай бань, что угодно.

L0ndl3m
12.06.2014, 14:45
Могу ещё предложить такой вариант, почти такой-же как выше был предложен:


if(GetPlayerSpeedXY(playerid) > 40)
{
switch(GetPlayerAnimationIndex(playerid))
{
case 1130, 1134: { }
default:
{
// обнаружение чита
}
}
}

DeimoS
12.06.2014, 15:03
Можно ещё банально проверять в каком направлении идёт ускорение по оси Z. Если отрицательное - игрок падает и значит можно не подозревать его в читерстве

codeo
12.06.2014, 15:22
Можно ещё банально проверять в каком направлении идёт ускорение по оси Z. Если отрицательное - игрок падает и значит можно не подозревать его в читерстве

Вот, именно это мне и нужно, подскажите как сделать, а то я что то не так делаю(

DeimoS
12.06.2014, 15:24
Эмм, ну

Float:GetPlayerSpeedXY(playerid)
{
new
Float:float_data[3]
;

if(IsPlayerInAnyVehicle(playerid))
{
GetVehicleVelocity(GetPlayerVehicleID(playerid), float_data[0], float_data[1], float_data[2]);
}
else
{
GetPlayerVelocity(playerid, float_data[0], float_data[1], float_data[2]);
}
if(float_data[2] < 0) return 1.0;
return floatmul(floatsqroot(floatadd(floatpower(float_data[0],2.0),floatpower(float_data[1],2.0))),200.0);
}
как-то так

codeo
12.06.2014, 15:33
Эмм, ну

Float:GetPlayerSpeedXY(playerid)
{
new
Float:float_data[3]
;

if(IsPlayerInAnyVehicle(playerid))
{
GetVehicleVelocity(GetPlayerVehicleID(playerid), float_data[0], float_data[1], float_data[2]);
}
else
{
GetPlayerVelocity(playerid, float_data[0], float_data[1], float_data[2]);
}
if(float_data[2] < 0) return 1;
return floatmul(floatsqroot(floatadd(floatpower(float_data[0],2.0),floatpower(float_data[1],2.0))),200.0);
}
как-то так


До этого делал типо такого, но опять эта ошибка: warning 213: tag mismatch

строка:
if(float_data[2] < 0) return 1;

L0ndl3m
12.06.2014, 15:37
if(float_data[2] < 0) return 1.0;

Возвращаем же вещественное число.

codeo
12.06.2014, 15:40
↓↓↓

Спасибо, теперь всё норм)