#include // This is a comment // uncomment the line below if you want to write a filterscript //#define FILTERSCRIPT #if defined FILTERSCRIPT public OnFilterScriptInit() { print("\n-------------------------------------------------"); print(" Ramping[FS]"); print(" Code by Mike, made into Filterscript: Sebihunter"); print("---------------------------------------------------\n"); return 1; } public OnFilterScriptExit() { return 1; } #else main() { print("\n----------------------------------"); print(" Ramping FS Unload"); print("----------------------------------\n"); } #endif public OnPlayerConnect(playerid) { Filterscript"); return 1; } new keydown[MAX_PLAYERS] = {false, ...}; new rampid[MAX_PLAYERS] = {-1, ...}; forward Float:GetOptimumRampDistance(playerid); forward Float:GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance); new ramptypes[] = { 1503, // curvy normal one 1660, // concrete one with pipes 1245, // plank of wood against a box 1631, // water ramp with rocks 1632, // normal water ramp 1655, // wide water ramp }; new playerramptypes[MAX_PLAYERS] = {0, ...}; public OnFilterScriptInit() { SetTimer("Keys", 100, 1); return 1; } public Keys() { new keys, updown, leftright, playerid; new Float:x, Float:y, Float:z, Float:angle; for (playerid = 0; playerid < MAX_PLAYERS; playerid++) { if (IsPlayerConnected(playerid)) { GetPlayerKeys(playerid, keys, updown, leftright); if (keys & KEY_ACTION && IsPlayerInAnyVehicle(playerid)) { if (!keydown[playerid]) { keydown[playerid] = true; if (rampid[playerid] == -1) { GetPlayerPos(playerid, x, y, z); angle = GetXYInFrontOfPlayer(playerid, x, y, GetOptimumRampDistance(playerid)); switch (playerramptypes[playerid]) { case 2: { angle -= 90.0; if (angle < 0.0) angle += 360.0; z += 0.5; } case 1: { z -= 0.5; } } rampid[playerid] = CreateObject(ramptypes[playerramptypes[playerid]], x, y, z - 0.5, 0.0, 0.0, angle); SetTimerEx("RemoveRamp", 2000, 0, "d", playerid); } } } else keydown[playerid] = false; } } } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/setramp ", cmdtext, true, 9) == 0) { new ramp = strval(cmdtext[9]); if (ramp < 0 || ramp >= sizeof(ramptypes)) { SendClientMessage(playerid, 0xFFFFFFAA, "Invalid ramp ID."); } else { playerramptypes[playerid] = ramp; } return 1; } return 0; } public RemoveRamp(playerid) { if (rampid[playerid] != -1) { DestroyObject(rampid[playerid]); rampid[playerid] = -1; } } public OnFilterScriptExit() { for (new i=0; i