// Credit to Simon and DarkRealm #include 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; } } } }