#include #pragma tabsize 0 // This is a comment // uncomment the line below if you want to write a filterscript //#define FILTERSCRIPT new keydown[MAX_PLAYERS] = {false, ...}; new rampid[MAX_PLAYERS] = {-1, ...}; forward Keys(); forward RemoveRamp(playerid); 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("/1", cmdtext, true, 10) == 0) {new Float:X, Float:Y, Float:Z; if(GetPlayerPos(playerid,X,Y,Z)) { CreateVehicle (411,X+1,Y+1,Z+1,0.0,6,6,2); } return 1; } if (strcmp("/setramp 0", cmdtext, true, 9) == 0) { new ramp = strval(cmdtext[9]); if (ramp < 0 || ramp >= sizeof(ramptypes)) { SendClientMessage(playerid, 0xFFFFFFAA, "Invalid ramp ID."); } else { playerramptypes[playerid] = 1503; } return 1; } if (strcmp("/setramp 1", cmdtext, true, 9) == 0) { new ramp = strval(cmdtext[9]); if (ramp < 0 || ramp >= sizeof(ramptypes)) { SendClientMessage(playerid, 0xFFFFFFAA, "Invalid ramp ID."); } else { playerramptypes[playerid] = 1660; } return 1; } if (strcmp("/setramp 2", cmdtext, true, 9) == 0) { new ramp = strval(cmdtext[9]); if (ramp < 0 || ramp >= sizeof(ramptypes)) { SendClientMessage(playerid, 0xFFFFFFAA, "Invalid ramp ID."); } else { playerramptypes[playerid] = 1245; } return 1; } if (strcmp("/setramp 3", cmdtext, true, 9) == 0) { new ramp = strval(cmdtext[9]); if (ramp < 0 || ramp >= sizeof(ramptypes)) { SendClientMessage(playerid, 0xFFFFFFAA, "Invalid ramp ID."); } else { playerramptypes[playerid] = 1631; } return 1; } if (strcmp("/setramp 4", cmdtext, true, 9) == 0) { new ramp = strval(cmdtext[9]); if (ramp < 0 || ramp >= sizeof(ramptypes)) { SendClientMessage(playerid, 0xFFFFFFAA, "Invalid ramp ID."); } else { playerramptypes[playerid] = 1632; } return 1; } if (strcmp("/setramp 5", cmdtext, true, 9) == 0) { new ramp = strval(cmdtext[9]); if (ramp < 0 || ramp >= sizeof(ramptypes)) { SendClientMessage(playerid, 0xFFFFFFAA, "Invalid ramp ID."); } else { playerramptypes[playerid] = 1655; } return 1; } return 0; } public RemoveRamp(playerid) { if (rampid[playerid] != -1) { DestroyObject(rampid[playerid]); rampid[playerid] = -1; } } public OnFilterScriptExit() { for (new i=0; i