Drift system
#1

Кто может показать функцию, чтобы вычислить, когда игрок дрифтует?
Скачивал много с пабликов, но они багнутые.
К примеру начал заходить в дрифт, а потом тупо едешь прямо и всё равно очки идут, может тут проблема?

PHP Code:
Float:GetPlayerTheoreticAngle(i// By Luby
{
        new 
Float:sin;
        new 
Float:dis;
        new 
Float:angle2;
        new 
Float:x,Float:y,Float:z;
        new 
Float:tmp3;
        new 
Float:tmp4;
        new 
Float:MindAngle;
        if(
IsPlayerConnected(i))
        {
                
GetPlayerPos(i,x,y,z);
                
dis floatsqroot(floatpower(floatabs(floatsub(x,ppos[i][0])),2)+floatpower(floatabs(floatsub(y,ppos[i][1])),2));
                if(
IsPlayerInAnyVehicle(i)){GetVehicleZAngle(GetPlayerVehicleID(i), angle2);}else{GetPlayerFacingAngle(iangle2);}
                if(
x>ppos[i][0]){tmp3=x-ppos[i][0];}else{tmp3=ppos[i][0]-x;}
                if(
y>ppos[i][1]){tmp4=y-ppos[i][1];}else{tmp4=ppos[i][1]-y;}
                if(
ppos[i][1]>&& ppos[i][0]>x)
                {
                    
sin asin(tmp3/dis);
                    
MindAngle floatsub(floatsub(floatadd(sin90), floatmul(sin2)), -90.0);
                }
                if(
ppos[i][1]<&& ppos[i][0]>x)
                {
                    
sin asin(tmp3/dis);
                    
MindAngle floatsub(floatadd(sin180), 180.0);
                }
                if(
ppos[i][1]<&& ppos[i][0]<x)
                {
                    
sin acos(tmp4/dis);
                    
MindAngle floatsub(floatadd(sin360), floatmul(sin2));
                }
                if(
ppos[i][1]>&& ppos[i][0]<x)
                {
                    
sin asin(tmp3/dis);
                    
MindAngle floatadd(sin180);
                }
        }
        if(
MindAngle == 0.0)
        {
            return 
angle2;
        }
        else
        {
            return 
MindAngle;
        }

Reply
#2

Hawk го создадим Drift сервер?)
Reply
#3

PHP Code:
Float:GetVehicleDriftAngle(Float:x,Float:y,Float:a)
{
    new 
Float:unit_interval floatsqroot(x*y*y);
    new 
Float:arcsin asiny/unit_interval );
    new 
Float:arccos acosx/unit_interval );
    new 
Float:angle;
    
    if(
arcsin >= 0.0angle arccos;
    else 
angle 360.0 arccos;
    
+= 90.0;
    if(
>= 360.0-= 360.0;
    if(
angle a) return angle-a;
    else return 
a-angle;

x,y- GetVehicleVelocity
a - GetVehicleZAngle

Функция не моя.

Quote:

К примеру начал заходить в дрифт, а потом тупо едешь прямо и всё равно очки идут, может тут проблема?

Ставь проверку чтобы был минимальный и максимальный угол с которого можно входить в дрифт.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)