Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
Регистрация
25 Фев 2025
Сообщения
6
Здравствуйте, тут система у меня есть дрифта она почему-то работает только если на лево дрифтить на право как будто даже системы нету

Вот сама система:
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;
}

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;
}
}

Буду благодарен!
 
Активный
Регистрация
14 Сен 2024
Сообщения
281
Вот система в файле если так легче кому-то
Привет, посмотрел твой код если ты хочешь чтобы всё было автоматически то напиши , а если нет то вот тебе хорошая система


Pawn:
В enum pInfo ВСТАВЛЯЕМ

    pOnDriftMenu, //активация дрифт меню
    
В ClearPlayerData ВСТАВЛЯЕМ

    PI[playerid][pOnDriftMenu] = 0;
    
В OnDialogResponse ВСТАВЛЯЕМ

        case 23692:
        {
            if(!response)
                return false;

            switch listitem do
            {
                case 0:
                {
                    if(PI[playerid][pOnDriftMenu] > 0)
                    {
                    SCM(playerid, COLOR_VALIK, "[Информация]{ffffff} Вы выключили дрифт меню");
                    PI[playerid][pOnDriftMenu] = 0;
                    OffDriftMenu(playerid);
                    }
                    else
                    {
                    SCM(playerid, COLOR_VALIK, "[Информация]{ffffff} Вы включили дрифт меню");
                    PI[playerid][pOnDriftMenu] = 1;
                    OnDriftMenu(playerid);
                    }
                }
            }

            return DriftMenu(playerid);
        }
        
В КОНЕЦ МОДА ВСТАВЛЯЕМ

stock OnDriftMenu(playerid)
{
    new BitStream:bs = BS_New(), vehicleid = GetPlayerVehicleID(playerid);

    BS_WriteValue(bs,
        PR_UINT8, 220,
        PR_UINT8, 187,
        PR_UINT16, vehicleid,
        PR_UINT8, 128);

    foreach(Player, i)
        PR_SendPacket(bs, i);

    return BS_Delete(bs);
}
stock OffDriftMenu(playerid)
{
    new BitStream:bs = BS_New(), vehicleid = GetPlayerVehicleID(playerid);

    BS_WriteValue(bs,
        PR_UINT8, 220,
        PR_UINT8, 187,
        PR_UINT16, vehicleid,
        PR_UINT8, 0);

    foreach(Player, i)
        PR_SendPacket(bs, i);

    return BS_Delete(bs);
}
cmd:drift(playerid)
    return DriftMenu(playerid);

stock DriftMenu(playerid)
{
    global_str = "";
    f(global_str, sizeof(global_str), "{ff6666}[1] {ffffff}Режим дрифта + задний привод {cccccc}| Дрифт-мод: %s", PI[playerid][pOnDriftMenu] ? "{85bb65}включен" : "{D24449}отключен");
    return SPD(playerid, 23692, DIALOG_STYLE_LIST, !"{ff6666}Бортовой компьютер", global_str, !"Выбрать", !"Отмена");
}
 
Регистрация
25 Фев 2025
Сообщения
6
Привет, посмотрел твой код если ты хочешь чтобы всё было автоматически то напиши , а если нет то вот тебе хорошая система


Pawn:
В enum pInfo ВСТАВЛЯЕМ

    pOnDriftMenu, //активация дрифт меню
   
В ClearPlayerData ВСТАВЛЯЕМ

    PI[playerid][pOnDriftMenu] = 0;
   
В OnDialogResponse ВСТАВЛЯЕМ

        case 23692:
        {
            if(!response)
                return false;

            switch listitem do
            {
                case 0:
                {
                    if(PI[playerid][pOnDriftMenu] > 0)
                    {
                    SCM(playerid, COLOR_VALIK, "[Информация]{ffffff} Вы выключили дрифт меню");
                    PI[playerid][pOnDriftMenu] = 0;
                    OffDriftMenu(playerid);
                    }
                    else
                    {
                    SCM(playerid, COLOR_VALIK, "[Информация]{ffffff} Вы включили дрифт меню");
                    PI[playerid][pOnDriftMenu] = 1;
                    OnDriftMenu(playerid);
                    }
                }
            }

            return DriftMenu(playerid);
        }
       
В КОНЕЦ МОДА ВСТАВЛЯЕМ

stock OnDriftMenu(playerid)
{
    new BitStream:bs = BS_New(), vehicleid = GetPlayerVehicleID(playerid);

    BS_WriteValue(bs,
        PR_UINT8, 220,
        PR_UINT8, 187,
        PR_UINT16, vehicleid,
        PR_UINT8, 128);

    foreach(Player, i)
        PR_SendPacket(bs, i);

    return BS_Delete(bs);
}
stock OffDriftMenu(playerid)
{
    new BitStream:bs = BS_New(), vehicleid = GetPlayerVehicleID(playerid);

    BS_WriteValue(bs,
        PR_UINT8, 220,
        PR_UINT8, 187,
        PR_UINT16, vehicleid,
        PR_UINT8, 0);

    foreach(Player, i)
        PR_SendPacket(bs, i);

    return BS_Delete(bs);
}
cmd:drift(playerid)
    return DriftMenu(playerid);

stock DriftMenu(playerid)
{
    global_str = "";
    f(global_str, sizeof(global_str), "{ff6666}[1] {ffffff}Режим дрифта + задний привод {cccccc}| Дрифт-мод: %s", PI[playerid][pOnDriftMenu] ? "{85bb65}включен" : "{D24449}отключен");
    return SPD(playerid, 23692, DIALOG_STYLE_LIST, !"{ff6666}Бортовой компьютер", global_str, !"Выбрать", !"Отмена");
}
Привет, код не должен менять логику Т/С он всего лишь показывает на экране Счётчик дрифта и сколько счёт = столько и денег начислять игроку
 
Активный
Регистрация
14 Сен 2024
Сообщения
281
Привет, код не должен менять логику Т/С он всего лишь показывает на экране Счётчик дрифта и сколько счёт = столько и денег начислять игроку
в твоём коде этого нету так-как нету некого-го вывода , если это мод Arizona\Rodina
 
Регистрация
25 Фев 2025
Сообщения
6
в твоём коде этого нету так-как нету некого-го вывода , если это мод Arizona\Rodina
У меня мод обычного сампа переделанный под CRMP карту а система дрифта полностью работает но как только пробую подрифтить правым боком то ничего не происходит возможно надо проверку добавить какуету в код?
 
Активный
Регистрация
14 Сен 2024
Сообщения
281
У меня мод обычного сампа переделанный под CRMP карту а система дрифта полностью работает но как только пробую подрифтить правым боком то ничего не происходит возможно надо проверку добавить какуету в код?
протестирую скажу
 
Сверху