rendered paste body// Credit to Simon and DarkRealm
#include <a_samp>
new TRAM;
new keydown[MAX_PLAYERS] = {false, ...};
forward Keys();
forward Move();
public OnFilterScriptInit()
{
TRAM = AddStaticVehicle(449,-2006.5890,154.2374,27.5020,0.2065,12,12); // tram
SetTimer("Keys", 100, 1);
SetTimer("Move", 100, 1);
return 1;
}
Float:GetDistanceToCar(playerid,carid)
{
new Float:x1,
Float:y1,
Float:z1,
Float:x2,
Float:y2,
Float:z2;
GetPlayerPos(playerid,x1,y1,z1);
GetVehiclePos(carid,x2,y2,z2);
return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}
public Keys()
{
new keys, updown, leftright, playerid, players;
for (playerid = 0; playerid < MAX_PLAYERS; playerid++)
{
if (IsPlayerConnected(playerid))
{
GetPlayerKeys(playerid, keys, updown, leftright);
if (keys & KEY_CROUCH)
{
if (!keydown[playerid])
{
keydown[playerid] = true;
if ((GetDistanceToCar(playerid, TRAM) < 2) && (!IsPlayerInVehicle(playerid, TRAM)))
{
for (players = 0; players < MAX_PLAYERS; players ++)
{
if (IsPlayerConnected(players))
{
if (IsPlayerInVehicle(players, TRAM))
{
PutPlayerInVehicle(playerid, TRAM, 2);
print("Seat 2");
}
else
{
PutPlayerInVehicle(playerid, TRAM, 1);
print("Seat 1");
}
}
}
}
}
}
else
{
keydown[playerid] = false;
}
}
}
}
public Move()
{
new keys, updown, leftright, playerid;
for (playerid = 0; playerid < MAX_PLAYERS; playerid++)
{
if (IsPlayerConnected(playerid))
{
GetPlayerKeys(playerid, keys, updown, leftright);
if (keys & KEY_UP)
{
if (!keydown[playerid])
{
keydown[playerid] = true;
if (IsPlayerInVehicle(playerid, TRAM))
{
if (GetPlayerState(playerid) == 2)
{
// Speed up
}
}
}
}
else if (keys & KEY_DOWN)
{
if (!keydown[playerid])
{
keydown[playerid] = true;
if (IsPlayerInVehicle(playerid, TRAM))
{
if (GetPlayerState(playerid) == 2)
{
// Slow down
}
}
}
}
else
{
keydown[playerid] = false;
}
}
}
}