Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Speedo and Gear changes by
- V1ceC1ty
- Speed limiter provided by Slice
- http://forum.sa-mp.com/showthread.php?t=179089
- */
- #include <a_samp>
- #define PRESSED(%0) \
- (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
- //ONLY CHANGE THESE IF YOU KNOW WHAT YOU'RE DOING ~ They are already at recommended values
- #define GEAR1_SPEED 20 //Speed player must reach in order to change to gear 2
- #define GEAR2_SPEED 40 //Speed player must reach in order to change to gear 3
- #define GEAR3_SPEED 60 //Speed player must reach in order to change to gear 4
- #define GEAR4_SPEED 75 //Speed player must reach in order to change to gear 5
- #define GEAR5_SPEED 95 //Speed player must reach in order to change to gear 6
- #define GEAR_UP KEY_YES
- #define GEAR_DOWN KEY_NO
- //ONLY CHANGE THESE IF YOU KNOW WHAT YOU'RE DOING ~ They are already at recommended values
- new bool:DefaultGearDamage = false; //SET THIS TO TRUE FOR MORE REALISTIC GEAR CONTROL ~ WILL DAMAMGE VEHICLES IN WRONG GEARS.
- #define DAMAGE_COUNT 10 //How many times the player can damage the gears before the engine is damaged
- 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 GearDamage[MAX_VEHICLES];
- new KillSpeed, KillCheck;
- forward SetPlayerSpeedCap( playerid, Float:value );
- forward DisablePlayerSpeedCap( playerid );
- new
- Float:g_fSpeedCap[ MAX_PLAYERS ] = { 0.0, ... }
- ;
- public OnPlayerConnect(playerid)
- {
- 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);
- return 1;
- }
- public OnPlayerUpdate( playerid )
- {
- 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 );
- }
- }
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- 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)
- {
- 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 )
- {
- vGear[playerid] = 2;
- SetPlayerSpeedCap(playerid, 0.2);
- TextDrawSetString(Gear[playerid], "~r~2");
- }
- else if(vGear[playerid] == 2 && GetPlayerSpeed(playerid) >= GEAR2_SPEED )
- {
- vGear[playerid] = 3;
- SetPlayerSpeedCap(playerid, 0.3);
- TextDrawSetString(Gear[playerid], "~r~3");
- }
- else if(vGear[playerid] == 3 && GetPlayerSpeed(playerid) >= GEAR3_SPEED )
- {
- vGear[playerid] = 4;
- SetPlayerSpeedCap(playerid, 0.4);
- TextDrawSetString(Gear[playerid], "~r~4");
- }
- else if(vGear[playerid] == 4 && GetPlayerSpeed(playerid) >= GEAR4_SPEED )
- {
- vGear[playerid] = 5;
- SetPlayerSpeedCap(playerid, 0.5);
- TextDrawSetString(Gear[playerid], "~r~5");
- }
- else if(vGear[playerid] == 5 && GetPlayerSpeed(playerid) >= GEAR5_SPEED )
- {
- vGear[playerid] = 6;
- SetPlayerSpeedCap(playerid, 6.0);
- TextDrawSetString(Gear[playerid], "~r~6");
- }
- }
- else if(PRESSED(GEAR_DOWN))
- {
- if(vGear[playerid] == 1)
- {
- 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");
- }
- }
- }
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- 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);
- return 1;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- new vehicle = GetPlayerVehicleID(playerid);
- new engine, lights, alarm, doors, bonnet, boot, objective;
- GetVehicleParamsEx(vehicle, engine, lights, alarm, doors, bonnet, boot, objective);
- SetVehicleParamsEx(vehicle, 0, lights, alarm, doors, bonnet, boot, 0);
- vGear[playerid] = 0;
- TextDrawSetString(Gear[playerid], "~r~-");
- SetPlayerSpeedCap(playerid, 0.0000000001);
- ShowSpeedo(playerid);
- KillSpeed = SetTimerEx("SpeedCheck", 1000, 1, "i", playerid);
- if(DefaultGearDamage == true) {
- KillCheck = SetTimerEx("GearCheck", 2500, 1, "i", playerid);
- }
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- HideSpeedo(playerid);
- KillTimer(KillSpeed);
- KillTimer(KillCheck);
- return 1;
- }
- 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");
- }
- if(vGear[playerid] >= 2 && GetPlayerSpeed(playerid) == 0)
- {
- vGear[playerid] = 1;
- SetPlayerSpeedCap(playerid, 0.1);
- TextDrawSetString(Gear[playerid], "~r~1");
- }
- return 1;
- }
- forward GearCheck(playerid);
- public GearCheck(playerid)
- {
- new Float:health, veh;
- veh = GetPlayerVehicleID(playerid);
- GetVehicleHealth(veh, health);
- if(GearDamage[playerid] < DAMAGE_COUNT)
- {
- if(vGear[playerid] == 1 && GetPlayerSpeed(playerid) > GEAR1_SPEED)
- {
- GearDamage[veh] ++;
- SetVehicleHealth(veh, health-50);
- }
- else if(vGear[playerid] == 2 && GetPlayerSpeed(playerid) > GEAR2_SPEED)
- {
- GearDamage[veh] ++;
- SetVehicleHealth(veh, health-50);
- }
- else if(vGear[playerid] == 3 && GetPlayerSpeed(playerid) > GEAR3_SPEED)
- {
- GearDamage[veh] ++;
- SetVehicleHealth(veh, health-50);
- }
- else if(vGear[playerid] == 4 && GetPlayerSpeed(playerid) > GEAR4_SPEED)
- {
- GearDamage[veh] ++;
- SetVehicleHealth(veh, health-50);
- }
- else if(vGear[playerid] == 5 && GetPlayerSpeed(playerid) > GEAR5_SPEED)
- {
- GearDamage[veh] ++;
- SetVehicleHealth(veh, health-50);
- }
- }
- 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;
- }
- forward ShowSpeedo(playerid);
- public 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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement