Дрифт система не работает левый дрифт

medjidovich

Новичок
Автор темы
1
0
new DriftScore[MAX_PLAYERS]; // DRIFT SYSTEM //"дрифт очки (ИВ)"
new DriftTimer[MAX_PLAYERS]; // DRIFT SYSTEM //"время дрифта"
new lastUpdateTime[MAX_PLAYERS]; // DRIFT SYSTEM //"обновление дрифта"

forward EndDrift(playerid);
public EndDrift(playerid)
{
if (DriftScore[playerid] > 0)
{
new money = DriftScore[playerid];
PI[playerid][pCash] += money;

GameTextForPlayer(playerid, "", 500, 3);

new text[64];
format(text, sizeof(text), "~w~MONEY: ~g~+%d$", money);
GameTextForPlayer(playerid, text, 2000, 3);

DriftScore[playerid] = 0;
DriftTimer[playerid] = 0;
}
}

public OnPlayerUpdate(playerid)
{
if (!IsPlayerInAnyVehicle(playerid)) return 1;

new vehicleid = GetPlayerVehicleID(playerid);
new Float:vx, Float:vy, Float:vz, Float:speed, Float:angle, Float:movementAngle, Float:driftAngle;

if (GetTickCount() - lastUpdateTime[playerid] < 1000)
return 1;
lastUpdateTime[playerid] = GetTickCount();

GetVehicleVelocity(vehicleid, vx, vy, vz);
speed = floatsqroot(vx * vx + vy * vy) * 180.0;

GetVehicleZAngle(vehicleid, angle);
movementAngle = atan2(vy, vx);

driftAngle = floatabs(angle - movementAngle);
if (driftAngle > 180.0) driftAngle = 360.0 - driftAngle;

if (speed > 30.0 && driftAngle > 25.0 && driftAngle < 85.0)
{
new driftPoints = random(101) + 50;
DriftScore[playerid] += driftPoints;

new text[64];
format(text, sizeof(text), "~w~DRIFT: ~g~%d", DriftScore[playerid]);
GameTextForPlayer(playerid, text, 3000, 3);

KillTimer(DriftTimer[playerid]);
DriftTimer[playerid] = SetTimerEx("EndDrift", 3000, false, "d", playerid);
}
else
{
if (DriftScore[playerid] > 0 && DriftTimer[playerid] == 0)
{
DriftTimer[playerid] = SetTimerEx("EndDrift", 3000, false, "d", playerid);
}
}
return 1;
}





Здравствуйте это дрифт система которая должна работать как левый так и на правый занос но работает только на левый на правый почему-то нет
 

yellowakyloff

Новичок
27
2
Попробуй так
C++:
public OnPlayerUpdate(playerid)
{
    if (!IsPlayerInAnyVehicle(playerid)) return 1;

    new vehicleid = GetPlayerVehicleID(playerid);
    new Float:vx, Float:vy, Float:vz, Float:speed, Float:angle, Float:movementAngle, Float:driftAngle;

    if (GetTickCount() - lastUpdateTime[playerid] < 1000)
        return 1;
    lastUpdateTime[playerid] = GetTickCount();

    GetVehicleVelocity(vehicleid, vx, vy, vz);
    speed = floatsqroot(vx * vx + vy * vy) * 180.0;

    GetVehicleZAngle(vehicleid, angle);
    movementAngle = atan2(vy, vx);

    driftAngle = angle - movementAngle;
    if (driftAngle > 180.0) driftAngle -= 360.0;
    if (driftAngle < -180.0) driftAngle += 360.0;
    driftAngle = floatabs(driftAngle);

    if (speed > 30.0 && driftAngle > 25.0 && driftAngle < 85.0)
    {
        new driftPoints = random(101) + 50;
        DriftScore[playerid] += driftPoints;

        new text[64];
        format(text, sizeof(text), "~w~DRIFT: ~g~%d", DriftScore[playerid]);
        GameTextForPlayer(playerid, text, 3000, 3);

        KillTimer(DriftTimer[playerid]);
        DriftTimer[playerid] = SetTimerEx("EndDrift", 3000, false, "d", playerid);
    }
    else
    {
        if (DriftScore[playerid] > 0 && DriftTimer[playerid] == 0)
        {
            DriftTimer[playerid] = SetTimerEx("EndDrift", 3000, false, "d", playerid);
        }
    }
    return 1;
}