Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Спидометр + коробка передач [ALL]

Статус
В этой теме нельзя размещать новые ответы.

Ria

Как функционирует спидометор:
- Для повышения передачи нужно нажать клавишу Y, а для понижение передачи нужно нажать на клавишу N.
- Передачу нужно повышать тогда, когда цвет передачи изменится с красного на зеленый.
- Чтобы переключится на следующую передачу, нужно достичь определенную скорость.

Стандартные настройки:
Выкл. двигатель -> Передача 1 = Скорость 0
Передача 1 -> Передача 2 = Скорость 20
Передача 2 -> Передача 3 = Скорость 40
Передача 3 -> Передача 4 = Скорость 60
Передача 4 -> Передача 5 = Скорость 75
Передача 5 -> Передача 6 = Скорость 95


К всем #define

PHP:
#define GEAR1_SPEED 20  //Speeds player must reach in order to change up a gear
#define GEAR2_SPEED 40  //Speeds player must reach in order to change up a gear
#define GEAR3_SPEED 60  //Speeds player must reach in order to change up a gear
#define GEAR4_SPEED 75  //Speeds player must reach in order to change up a gear
#define GEAR5_SPEED 95  //Speeds player must reach in order to change up a gear

#define GEAR_UP KEY_YES
#define GEAR_DOWN KEY_NO

К всем forward
PHP:
forward SetPlayerSpeedCap( playerid, Float:value );
forward DisablePlayerSpeedCap( playerid );
К всем new
PHP:
new Text:Circle[MAX_PLAYERS];
new Text:Disc1[MAX_PLAYERS];
new Text:Disc2[MAX_PLAYERS];
new Text:Disc3[MAX_PLAYERS];
new Text:Speed[MAX_PLAYERS];
new Text:Gear[MAX_PLAYERS];
new Text:Disc4[MAX_PLAYERS];
new Text:StartEnd[MAX_PLAYERS];
new Text:Rev0[MAX_PLAYERS];
new Text:Rev2[MAX_PLAYERS];
new Text:Rev4[MAX_PLAYERS];
new Text:Rev6[MAX_PLAYERS];
new Text:Rev8[MAX_PLAYERS];

new vGear[MAX_PLAYERS] = 1;
new KillSpeed;

В public OnPlayerConnect(playerid)

PHP:
Circle[playerid] = TextDrawCreate(520.000000, 360.000000, "ld_beat:cring");
        TextDrawBackgroundColor(Circle[playerid], 255);
        TextDrawFont(Circle[playerid], 4);
        TextDrawLetterSize(Circle[playerid], 0.500000, 1.000000);
        TextDrawColor(Circle[playerid], -1);
        TextDrawSetOutline(Circle[playerid], 0);
        TextDrawSetProportional(Circle[playerid], 1);
        TextDrawSetShadow(Circle[playerid], 1);
        TextDrawUseBox(Circle[playerid], 1);
        TextDrawBoxColor(Circle[playerid], 255);
        TextDrawTextSize(Circle[playerid], 81.000000, 80.000000);

        Disc1[playerid] = TextDrawCreate(620.000000, 350.000000, "hud:radardisc");
        TextDrawBackgroundColor(Disc1[playerid], 255);
        TextDrawFont(Disc1[playerid], 4);
        TextDrawLetterSize(Disc1[playerid], 0.500000, 1.000000);
        TextDrawColor(Disc1[playerid], -1);
        TextDrawSetOutline(Disc1[playerid], 0);
        TextDrawSetProportional(Disc1[playerid], 1);
        TextDrawSetShadow(Disc1[playerid], 1);
        TextDrawUseBox(Disc1[playerid], 1);
        TextDrawBoxColor(Disc1[playerid], 255);
        TextDrawTextSize(Disc1[playerid], -60.000000, 60.000000);

        Disc2[playerid] = TextDrawCreate(620.000000, 470.000000, "hud:radardisc");
        TextDrawBackgroundColor(Disc2[playerid], 255);
        TextDrawFont(Disc2[playerid], 4);
        TextDrawLetterSize(Disc2[playerid], 0.500000, 1.000000);
        TextDrawColor(Disc2[playerid], -1);
        TextDrawSetOutline(Disc2[playerid], 0);
        TextDrawSetProportional(Disc2[playerid], 1);
        TextDrawSetShadow(Disc2[playerid], 1);
        TextDrawUseBox(Disc2[playerid], 1);
        TextDrawBoxColor(Disc2[playerid], 255);
        TextDrawTextSize(Disc2[playerid], -60.000000, -60.000000);

        Disc3[playerid] = TextDrawCreate(500.000000, 470.000000, "hud:radardisc");
        TextDrawBackgroundColor(Disc3[playerid], 255);
        TextDrawFont(Disc3[playerid], 4);
        TextDrawLetterSize(Disc3[playerid], 0.500000, 1.000000);
        TextDrawColor(Disc3[playerid], -1);
        TextDrawSetOutline(Disc3[playerid], 0);
        TextDrawSetProportional(Disc3[playerid], 1);
        TextDrawSetShadow(Disc3[playerid], 1);
        TextDrawUseBox(Disc3[playerid], 1);
        TextDrawBoxColor(Disc3[playerid], 255);
        TextDrawTextSize(Disc3[playerid], 60.000000, -60.000000);

        Disc4[playerid] = TextDrawCreate(500.000000, 350.000000, "hud:radardisc");
        TextDrawBackgroundColor(Disc4[playerid], 255);
        TextDrawFont(Disc4[playerid], 4);
        TextDrawLetterSize(Disc4[playerid], 0.500000, 1.000000);
        TextDrawColor(Disc4[playerid], -1);
        TextDrawSetOutline(Disc4[playerid], 0);
        TextDrawSetProportional(Disc4[playerid], 1);
        TextDrawSetShadow(Disc4[playerid], 1);
        TextDrawUseBox(Disc4[playerid], 1);
        TextDrawBoxColor(Disc4[playerid], 255);
        TextDrawTextSize(Disc4[playerid], 60.000000, 60.000000);

        Speed[playerid] = TextDrawCreate(560.000000, 419.000000, "---");
        TextDrawAlignment(Speed[playerid], 2);
        TextDrawBackgroundColor(Speed[playerid], 255);
        TextDrawFont(Speed[playerid], 2);
        TextDrawLetterSize(Speed[playerid], 0.600000, 2.000000);
        TextDrawColor(Speed[playerid], -1);
        TextDrawSetOutline(Speed[playerid], 1);
        TextDrawSetProportional(Speed[playerid], 1);
        TextDrawUseBox(Speed[playerid], 1);
        TextDrawBoxColor(Speed[playerid], -869072784);
        TextDrawTextSize(Speed[playerid], 0.000000, -56.000000);

        Gear[playerid] = TextDrawCreate(560.000000, 379.000000, "0");
        TextDrawAlignment(Gear[playerid], 2);
        TextDrawBackgroundColor(Gear[playerid], 255);
        TextDrawFont(Gear[playerid], 2);
        TextDrawLetterSize(Gear[playerid], 0.699999, 4.000000);
        TextDrawColor(Gear[playerid], -1);
        TextDrawSetOutline(Gear[playerid], 1);
        TextDrawSetProportional(Gear[playerid], 1);

        StartEnd[playerid] = TextDrawCreate(559.000000, 430.000000, "~g~/         ~r~\\");
        TextDrawAlignment(StartEnd[playerid], 2);
        TextDrawBackgroundColor(StartEnd[playerid], 255);
        TextDrawFont(StartEnd[playerid], 1);
        TextDrawLetterSize(StartEnd[playerid], 0.600000, 2.000000);
        TextDrawColor(StartEnd[playerid], -1);
        TextDrawSetOutline(StartEnd[playerid], 0);
        TextDrawSetProportional(StartEnd[playerid], 1);
        TextDrawSetShadow(StartEnd[playerid], 1);

        Rev0[playerid] = TextDrawCreate(505.000000, 430.000000, "0");
        TextDrawAlignment(Rev0[playerid], 2);
        TextDrawBackgroundColor(Rev0[playerid], 255);
        TextDrawFont(Rev0[playerid], 2);
        TextDrawLetterSize(Rev0[playerid], 0.500000, 1.000000);
        TextDrawColor(Rev0[playerid], -1);
        TextDrawSetOutline(Rev0[playerid], 1);
        TextDrawSetProportional(Rev0[playerid], 1);

        Rev2[playerid] = TextDrawCreate(500.000000, 385.000000, "2");
        TextDrawAlignment(Rev2[playerid], 2);
        TextDrawBackgroundColor(Rev2[playerid], 255);
        TextDrawFont(Rev2[playerid], 2);
        TextDrawLetterSize(Rev2[playerid], 0.500000, 1.000000);
        TextDrawColor(Rev2[playerid], -1);
        TextDrawSetOutline(Rev2[playerid], 1);
        TextDrawSetProportional(Rev2[playerid], 1);

        Rev4[playerid] = TextDrawCreate(531.000000, 349.000000, "~y~4");
        TextDrawAlignment(Rev4[playerid], 2);
        TextDrawBackgroundColor(Rev4[playerid], 255);
        TextDrawFont(Rev4[playerid], 2);
        TextDrawLetterSize(Rev4[playerid], 0.500000, 1.000000);
        TextDrawColor(Rev4[playerid], -1);
        TextDrawSetOutline(Rev4[playerid], 1);
        TextDrawSetProportional(Rev4[playerid], 1);

        Rev6[playerid] = TextDrawCreate(592.000000, 350.000000, "~r~~h~~h~~h~6");
        TextDrawAlignment(Rev6[playerid], 2);
        TextDrawBackgroundColor(Rev6[playerid], 255);
        TextDrawFont(Rev6[playerid], 2);
        TextDrawLetterSize(Rev6[playerid], 0.500000, 1.000000);
        TextDrawColor(Rev6[playerid], -1);
        TextDrawSetOutline(Rev6[playerid], 1);
        TextDrawSetProportional(Rev6[playerid], 1);

        Rev8[playerid] = TextDrawCreate(622.000000, 385.000000, "~r~8");
        TextDrawAlignment(Rev8[playerid], 2);
        TextDrawBackgroundColor(Rev8[playerid], 255);
        TextDrawFont(Rev8[playerid], 2);
        TextDrawLetterSize(Rev8[playerid], 0.500000, 1.000000);
        TextDrawColor(Rev8[playerid], -1);
        TextDrawSetOutline(Rev8[playerid], 1);
        TextDrawSetProportional(Rev8[playerid], 1);

В public OnPlayerUpdate( playerid )

PHP:
static
                s_iVehicle
        ;

        if ( g_fSpeedCap[ playerid ] != 0.0 && GetPlayerState( playerid ) == PLAYER_STATE_DRIVER )
        {
                s_iVehicle = GetPlayerVehicleID( playerid );

                if ( s_iVehicle )
                {
                        static
                                Float:s_fX,
                                Float:s_fY,
                                Float:s_fZ,
                                Float:s_fVX,
                                Float:s_fVY,
                                Float:s_fVZ
                        ;

                        GetVehiclePos( s_iVehicle, s_fX, s_fY, s_fZ );
                        GetVehicleVelocity( s_iVehicle, s_fVX, s_fVY, s_fVZ );

                        if ( !IsPlayerInRangeOfPoint( playerid, g_fSpeedCap[ playerid ] + 0.05, s_fX + s_fVX, s_fY + s_fVY, s_fZ + s_fVZ ) )
                        {
                                static
                                        Float:s_fLength
                                ;

                                s_fLength = floatsqroot( ( s_fVX * s_fVX ) + ( s_fVY * s_fVY ) + ( s_fVZ * s_fVZ ) );

                                s_fVX = ( s_fVX / s_fLength ) * g_fSpeedCap[ playerid ];
                                s_fVY = ( s_fVY / s_fLength ) * g_fSpeedCap[ playerid ];
                                s_fVZ = ( s_fVZ / s_fLength ) * g_fSpeedCap[ playerid ];

                                if ( s_iVehicle )
                                        SetVehicleVelocity( s_iVehicle, s_fVX, s_fVY, s_fVZ );
                                else
                                        SetPlayerVelocity( playerid, s_fVX, s_fVY, s_fVZ );
                        }
                }

В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)

PHP:
new vehicle = GetPlayerVehicleID(playerid);
    new engine, lights, alarm, doors, bonnet, boot, objective;
        if(GetPlayerState(playerid) == 2) //Driver
    {
            if(PRESSED(GEAR_UP))
                {
                    if(vGear[playerid] == 0 && GetPlayerSpeed(playerid) == 0) //Into Gear1(3)
                {
                        GetVehicleParamsEx(vehicle, engine, lights, alarm, doors, bonnet, boot, objective);
                        SetVehicleParamsEx(vehicle, 1, lights, alarm, doors, bonnet, boot, 0);

                    vGear[playerid] = 1;
                    SetPlayerSpeedCap(playerid, 0.1);
                    TextDrawSetString(Gear[playerid], "~r~1");
                    KillSpeed = SetTimerEx("SpeedCheck", 2000, 1, "i", playerid);
                        }
                        else if(vGear[playerid] == 1 && GetPlayerSpeed(playerid) >= GEAR1_SPEED ) //Into Gear2(4)
                        {
                    vGear[playerid] = 2;
                    SetPlayerSpeedCap(playerid, 0.2);
                    TextDrawSetString(Gear[playerid], "~r~2");
                        }
                    else if(vGear[playerid] == 2 && GetPlayerSpeed(playerid) >= GEAR2_SPEED ) //Into Gear3(5)
                    {
                vGear[playerid] = 3;
                SetPlayerSpeedCap(playerid, 0.3);
                TextDrawSetString(Gear[playerid], "~r~3");
                    }
                    else if(vGear[playerid] == 3 && GetPlayerSpeed(playerid) >= GEAR3_SPEED ) //Into Gear4(6)
                    {
                vGear[playerid] = 4;
                SetPlayerSpeedCap(playerid, 0.4);
                TextDrawSetString(Gear[playerid], "~r~4");
                    }
                    else if(vGear[playerid] == 4 && GetPlayerSpeed(playerid) >= GEAR4_SPEED ) //Into Gear5(7)
                {
                        vGear[playerid] = 5;
                SetPlayerSpeedCap(playerid, 0.5);
                TextDrawSetString(Gear[playerid], "~r~5");
                    }
                    else if(vGear[playerid] == 5 && GetPlayerSpeed(playerid) >= GEAR5_SPEED ) //Into Gear6(8)
                    {
                vGear[playerid] = 6;
                SetPlayerSpeedCap(playerid, 6.0);
                TextDrawSetString(Gear[playerid], "~r~6");
                }
                }
                else if(PRESSED(GEAR_DOWN))
                {
            if(vGear[playerid] == 1) //Into Off(0)
                    {
                            GetVehicleParamsEx(vehicle, engine, lights, alarm, doors, bonnet, boot, objective);
                            SetVehicleParamsEx(vehicle, 0, lights, alarm, doors, bonnet, boot, 0);

                            vGear[playerid] = 0;
                                        KillTimer(KillSpeed);
                                        TextDrawSetString(Gear[playerid], "~r~-");
                    }
                    else if(vGear[playerid] == 2)
                    {
                    vGear[playerid] = 1;
                    SetPlayerSpeedCap(playerid, 0.1);
                    TextDrawSetString(Gear[playerid], "~r~1");
                    }
                    else if(vGear[playerid] == 3)
                    {
                    vGear[playerid] = 2;
                    SetPlayerSpeedCap(playerid, 0.2);
                    TextDrawSetString(Gear[playerid], "~r~2");
                    }
                    else if(vGear[playerid] == 4)
                    {
                    vGear[playerid] = 3;
                    SetPlayerSpeedCap(playerid, 0.3);
                    TextDrawSetString(Gear[playerid], "~r~3");
                    }
                    else if(vGear[playerid] == 5)
                    {
                    vGear[playerid] = 4;
                    SetPlayerSpeedCap(playerid, 0.4);
                    TextDrawSetString(Gear[playerid], "~r~4");
                    }
                    else if(vGear[playerid] == 6)
                {
                        vGear[playerid] = 5;
                SetPlayerSpeedCap(playerid, 0.5);
                TextDrawSetString(Gear[playerid], "~r~5");
                    }
                    else if(vGear[playerid] == 7)
                    {
                vGear[playerid] = 6;
                SetPlayerSpeedCap(playerid, 0.6);
                TextDrawSetString(Gear[playerid], "~r~6");
                }
                }
        }
В public OnVehicleSpawn(vehicleid)

PHP:
 new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(vehicleid, 0, lights, alarm, doors, bonnet, boot, 0);

В public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)

PHP:
new vehicle = GetPlayerVehicleID(playerid);
    new engine, lights, alarm, doors, bonnet, boot, objective;
        vGear[playerid] = 0;
        SetPlayerSpeedCap(playerid, -0.0000000001);

        GetVehicleParamsEx(vehicle, engine, lights, alarm, doors, bonnet, boot, objective);
        SetVehicleParamsEx(vehicle, 0, lights, alarm, doors, bonnet, boot, 0);
    ShowSpeedo(playerid);
    KillSpeed = SetTimerEx("SpeedCheck", 2000, 1, "i", playerid);

В public OnPlayerExitVehicle(playerid, vehicleid)

PHP:
 HideSpeedo(playerid);
    KillTimer(KillSpeed);
В конец мода


PHP:
forward SpeedCheck(playerid);
public SpeedCheck(playerid)
{
        new speedstr[32], vSpeed;
        vSpeed = GetPlayerSpeed(playerid);
        format(speedstr, sizeof(speedstr), "%i", vSpeed);
        TextDrawSetString(Speed[playerid], speedstr);

        if(vGear[playerid] == 0)
        {
            if(GetPlayerSpeed(playerid) == 0) TextDrawSetString(Gear[playerid], "~g~-");
            else if(GetPlayerSpeed(playerid) > 0) TextDrawSetString(Gear[playerid], "~r~-");
        }
        else if(vGear[playerid] == 1)
        {
                if(GetPlayerSpeed(playerid) >= GEAR1_SPEED ) TextDrawSetString(Gear[playerid], "~g~1"); //If in gear 1, allow gear change 2
            else if(GetPlayerSpeed(playerid) < GEAR1_SPEED ) TextDrawSetString(Gear[playerid], "~r~1");
        }
        else if(vGear[playerid] == 2)
        {
                if(GetPlayerSpeed(playerid) >= GEAR2_SPEED ) TextDrawSetString(Gear[playerid], "~g~2"); //If in gear 2, allow gear change 3
            else if(GetPlayerSpeed(playerid) < GEAR2_SPEED ) TextDrawSetString(Gear[playerid], "~r~2");
        }
        else if(vGear[playerid] == 3)
        {
                if(GetPlayerSpeed(playerid) >= GEAR3_SPEED ) TextDrawSetString(Gear[playerid], "~g~3"); //If in gear 3, allow gear change 4
            else if(GetPlayerSpeed(playerid) < GEAR3_SPEED ) TextDrawSetString(Gear[playerid], "~r~3");
        }
        else if(vGear[playerid] == 4)
        {
                if(GetPlayerSpeed(playerid) >= GEAR4_SPEED ) TextDrawSetString(Gear[playerid], "~g~4"); //If in gear 4, allow gear change 5
            else if(GetPlayerSpeed(playerid) < GEAR4_SPEED ) TextDrawSetString(Gear[playerid], "~r~4");
        }
        else if(vGear[playerid] == 5)
        {
                if(GetPlayerSpeed(playerid) >= GEAR5_SPEED ) TextDrawSetString(Gear[playerid], "~g~5"); //If in gear 5, allow gear change 6
            else if(GetPlayerSpeed(playerid) < GEAR5_SPEED ) TextDrawSetString(Gear[playerid], "~r~5");
        }
        return 1;
}

stock GetPlayerSpeed(playerid)
{
    new Float:ST[4];
    if(IsPlayerInAnyVehicle(playerid))
    GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
    else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
    ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 179.28625;
    return floatround(ST[3]);
}

public SetPlayerSpeedCap( playerid, Float:value )
{
        if ( 0 <= playerid < sizeof( g_fSpeedCap ) )
                g_fSpeedCap[ playerid ] = value;
}

public DisablePlayerSpeedCap( playerid )
{
        if ( 0 <= playerid < sizeof( g_fSpeedCap ) )
                g_fSpeedCap[ playerid ] = 0.0;
}

stock ShowSpeedo(playerid)
{
        HideSpeedo(playerid);
    TextDrawShowForPlayer(playerid, Circle[playerid]);
        TextDrawShowForPlayer(playerid, Disc1[playerid]);
        TextDrawShowForPlayer(playerid, Disc2[playerid]);
        TextDrawShowForPlayer(playerid, Disc3[playerid]);
        TextDrawShowForPlayer(playerid, Speed[playerid]);
        TextDrawShowForPlayer(playerid, Gear[playerid]);
        TextDrawShowForPlayer(playerid, Disc4[playerid]);
        TextDrawShowForPlayer(playerid, StartEnd[playerid]);
        TextDrawShowForPlayer(playerid, Rev0[playerid]);
        TextDrawShowForPlayer(playerid, Rev2[playerid]);
        TextDrawShowForPlayer(playerid, Rev4[playerid]);
        TextDrawShowForPlayer(playerid, Rev6[playerid]);
        TextDrawShowForPlayer(playerid, Rev8[playerid]);
        return 1;
}

forward HideSpeedo(playerid);
public HideSpeedo(playerid)
{
    TextDrawHideForPlayer(playerid, Circle[playerid]);
        TextDrawHideForPlayer(playerid, Disc1[playerid]);
        TextDrawHideForPlayer(playerid, Disc2[playerid]);
        TextDrawHideForPlayer(playerid, Disc3[playerid]);
        TextDrawHideForPlayer(playerid, Speed[playerid]);
        TextDrawHideForPlayer(playerid, Gear[playerid]);
        TextDrawHideForPlayer(playerid, Disc4[playerid]);
        TextDrawHideForPlayer(playerid, StartEnd[playerid]);
        TextDrawHideForPlayer(playerid, Rev0[playerid]);
        TextDrawHideForPlayer(playerid, Rev2[playerid]);
        TextDrawHideForPlayer(playerid, Rev4[playerid]);
        TextDrawHideForPlayer(playerid, Rev6[playerid]);
        TextDrawHideForPlayer(playerid, Rev8[playerid]);
        return 1;
}


Вот и все автор V1ceC1ty


 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу