All pastes #620358 Raw Edit

Mine

public text v1 · immutable
·published 2007-07-15 12:56 UTC
rendered paste body
#include <a_samp>
#include <KIHC>
#define spawnmoney 1000

#define SLOTS 100

#define SKIN_SELECT     true
#define VEHI_SELECT      true
#define WORL_SELECT     true
#define CAME_SELECT     true

#define MISCEL_CMDS     true
#define ADMINS_ONLY     true

#define COLOR_RED       0xFF4040FF
#define COLOR_GREEN     0x40FF40FF
#define COLOR_BLUE      0x4040FFFF
#define COLOR_CYAN      0x40FFFFFF
#define COLOR_PINK      0xFF40FFFF
#define COLOR_YELLOW    0xFFFF40FF
#define COLOR_WHITE          0xFFFFFFFF
#define COLOR_BLACK          0x000000FF
#define COLOR_NONE      0x00000000

#define SKIN_SEL_STAT   1
#define VEHI_SEL_STAT   2
#define WORL_SEL_STAT   3
#define CAME_SEL_STAT   4
#define MIN_SKIN_ID          0
#define MAX_SKIN_ID          299
#define MIN_VEHI_ID          400
#define MAX_VEHI_ID          611
#define MIN_TIME_ID          0
#define MAX_TIME_ID          23
#define MIN_WEAT_ID     0
#define MAX_WEAT_ID          45
#define DEFAULT_GRA     0.008
#define VEHI_DIS        5.0

#pragma tabsize 0

#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

new weapmod[600] = {1212,331,333,334,335,336,337,338,339,341,321,322,323,324,
325,326,342,343,344,345,345,345,346,347,348,349,350,351,352,353,355,356,372,357,
358,359,360,361,362,363,364,365,366,367,368,369,371};

new keydown[MAX_PLAYERS] = {false, ...};
new rampid[MAX_PLAYERS] = {-1, ...};
new playerramptypes[MAX_PLAYERS] = {0, ...};
new PickUpMoney[101] = {false, ...};
new Float:PickUpArmour[101] = {0.0, ...};
new PickUpMoneyAmmount[101] = {0, ...};
new PickUpWeaponSlot[101] = {0, ...};
new PickUpWeaponAmmo[101] = {0, ...};
new DropPick[101] = {false, ...};
new gPlayerStatus[MAX_PLAYERS]; // Player Status
new gPlayerTimers[MAX_PLAYERS]; // Player TimerID's for keypresses
new gWorldStatus[3] =  {12, 4}; // Time, Weather
new curPlayerSkin[MAX_PLAYERS]        = {MIN_SKIN_ID, ...}; // Current Player Skin ID
new curPlayerVehM[MAX_PLAYERS]        = {MIN_VEHI_ID, ...}; // Current Player Vehicle ID
new curPlayerVehI[MAX_PLAYERS]        = {-1, ...};

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
        13593, // kick ramp
        13594, // fire ring
        1290, // lv highway lamppost
};

enum CURVEHICLE {
        bool:spawn,
        vmodel,
        vInt
};

new curServerVehP[MAX_VEHICLES][CURVEHICLE];

new aSelNames[4][] = {      // Menu selection names
        {"SkinSelect"},
        {"VehicleSelect"},
        {"WeatherSelect"},
        {"CameraSelect"}
};

new aWeaponNames[][32] = {
        {"Unarmed (Fist)"}, // 0
        {"Brass Knuckles"}, // 1
        {"Golf Club"}, // 2
        {"Night Stick"}, // 3
        {"Knife"}, // 4
        {"Baseball Bat"}, // 5
        {"Shovel"}, // 6
        {"Pool Cue"}, // 7
        {"Katana"}, // 8
        {"Chainsaw"}, // 9
        {"Purple Dildo"}, // 10
        {"Big White Vibrator"}, // 11
        {"Medium White Vibrator"}, // 12
        {"Small White Vibrator"}, // 13
        {"Flowers"}, // 14
        {"Cane"}, // 15
        {"Grenade"}, // 16
        {"Teargas"}, // 17
        {"Molotov"}, // 18
        {" "}, // 19
        {" "}, // 20
        {" "}, // 21
        {"Colt 45"}, // 22
        {"Colt 45 (Silenced)"}, // 23
        {"Desert Eagle"}, // 24
        {"Normal Shotgun"}, // 25
        {"Sawnoff Shotgun"}, // 26
        {"Combat Shotgun"}, // 27
        {"Micro Uzi (Mac 10)"}, // 28
        {"MP5"}, // 29
        {"AK47"}, // 30
        {"M4"}, // 31
        {"Tec9"}, // 32
        {"Country Rifle"}, // 33
        {"Sniper Rifle"}, // 34
        {"Rocket Launcher"}, // 35
        {"Heat-Seeking Rocket Launcher"}, // 36
        {"Flamethrower"}, // 37
        {"Minigun"}, // 38
        {"Satchel Charge"}, // 39
        {"Detonator"}, // 40
        {"Spray Can"}, // 41
        {"Fire Extinguisher"}, // 42
        {"Camera"}, // 43
        {"Night Vision Goggles"}, // 44
        {"Infrared Vision Goggles"}, // 45
        {"Parachute"}, // 46
        {"Fake Pistol"} // 47
};


new aVehicleNames[212][] = {    // Vehicle Names - Betamaster
        {"Landstalker"},
        {"Bravura"},
        {"Buffalo"},
        {"Linerunner"},
        {"Perrenial"},
        {"Sentinel"},
        {"Dumper"},
        {"Firetruck"},
        {"Trashmaster"},
        {"Stretch"},
        {"Manana"},
        {"Infernus"},
        {"Voodoo"},
        {"Pony"},
        {"Mule"},
        {"Cheetah"},
        {"Ambulance"},
        {"Leviathan"},
        {"Moonbeam"},
        {"Esperanto"},
        {"Taxi"},
        {"Washington"},
        {"Bobcat"},
        {"Mr Whoopee"},
        {"BF Injection"},
        {"Hunter"},
        {"Premier"},
        {"Enforcer"},
        {"Securicar"},
        {"Banshee"},
        {"Predator"},
        {"Bus"},
        {"Rhino"},
        {"Barracks"},
        {"Hotknife"},
        {"Trailer 1"}, //artict1
        {"Previon"},
        {"Coach"},
        {"Cabbie"},
        {"Stallion"},
        {"Rumpo"},
        {"RC Bandit"},
        {"Romero"},
        {"Packer"},
        {"Monster"},
        {"Admiral"},
        {"Squalo"},
        {"Seasparrow"},
        {"Pizzaboy"},
        {"Tram"},
        {"Trailer 2"}, //artict2
        {"Turismo"},
        {"Speeder"},
        {"Reefer"},
        {"Tropic"},
        {"Flatbed"},
        {"Yankee"},
        {"Caddy"},
        {"Solair"},
        {"Berkley's RC Van"},
        {"Skimmer"},
        {"PCJ-600"},
        {"Faggio"},
        {"Freeway"},
        {"RC Baron"},
        {"RC Raider"},
        {"Glendale"},
        {"Oceanic"},
        {"Sanchez"},
        {"Sparrow"},
        {"Patriot"},
        {"Quad"},
        {"Coastguard"},
        {"Dinghy"},
        {"Hermes"},
        {"Sabre"},
        {"Rustler"},
        {"ZR-350"},
        {"Walton"},
        {"Regina"},
        {"Comet"},
        {"BMX"},
        {"Burrito"},
        {"Camper"},
        {"Marquis"},
        {"Baggage"},
        {"Dozer"},
        {"Maverick"},
        {"News Chopper"},
        {"Rancher"},
        {"FBI Rancher"},
        {"Virgo"},
        {"Greenwood"},
        {"Jetmax"},
        {"Hotring"},
        {"Sandking"},
        {"Blista Compact"},
        {"Police Maverick"},
        {"Boxville"},
        {"Benson"},
        {"Mesa"},
        {"RC Goblin"},
        {"Hotring Racer A"}, //hotrina
        {"Hotring Racer B"}, //hotrinb
        {"Bloodring Banger"},
        {"Rancher"},
        {"Super GT"},
        {"Elegant"},
        {"Journey"},
        {"Bike"},
        {"Mountain Bike"},
        {"Beagle"},
        {"Cropdust"},
        {"Stunt"},
        {"Tanker"}, //petro
        {"Roadtrain"},
        {"Nebula"},
        {"Majestic"},
        {"Buccaneer"},
        {"Shamal"},
        {"Hydra"},
        {"FCR-900"},
        {"NRG-500"},
        {"HPV1000"},
        {"Cement Truck"},
        {"Tow Truck"},
        {"Fortune"},
        {"Cadrona"},
        {"FBI Truck"},
        {"Willard"},
        {"Forklift"},
        {"Tractor"},
        {"Combine"},
        {"Feltzer"},
        {"Remington"},
        {"Slamvan"},
        {"Blade"},
        {"Freight"},
        {"Streak"},
        {"Vortex"},
        {"Vincent"},
        {"Bullet"},
        {"Clover"},
        {"Sadler"},
        {"Firetruck LA"}, //firela
        {"Hustler"},
        {"Intruder"},
        {"Primo"},
        {"Cargobob"},
        {"Tampa"},
        {"Sunrise"},
        {"Merit"},
        {"Utility"},
        {"Nevada"},
        {"Yosemite"},
        {"Windsor"},
        {"Monster A"}, //monstera
        {"Monster B"}, //monsterb
        {"Uranus"},
        {"Jester"},
        {"Sultan"},
        {"Stratum"},
        {"Elegy"},
        {"Raindance"},
        {"RC Tiger"},
        {"Flash"},
        {"Tahoma"},
        {"Savanna"},
        {"Bandito"},
        {"Freight Flat"}, //freiflat
        {"Streak Carriage"}, //streakc
        {"Kart"},
        {"Mower"},
        {"Duneride"},
        {"Sweeper"},
        {"Broadway"},
        {"Tornado"},
        {"AT-400"},
        {"DFT-30"},
        {"Huntley"},
        {"Stafford"},
        {"BF-400"},
        {"Newsvan"},
        {"Tug"},
        {"Trailer 3"}, //petrotr
        {"Emperor"},
        {"Wayfarer"},
        {"Euros"},
        {"Hotdog"},
        {"Club"},
        {"Freight Carriage"}, //freibox
        {"Trailer 3"}, //artict3
        {"Andromada"},
        {"Dodo"},
        {"RC Cam"},
        {"Launch"},
        {"Police Car (LSPD)"},
        {"Police Car (SFPD)"},
        {"Police Car (LVPD)"},
        {"Police Ranger"},
        {"Picador"},
        {"S.W.A.T. Van"},
        {"Alpha"},
        {"Phoenix"},
        {"Glendale"},
        {"Sadler"},
        {"Luggage Trailer A"}, //bagboxa
        {"Luggage Trailer B"}, //bagboxb
        {"Stair Trailer"}, //tugstair
        {"Boxville"},
        {"Farm Plow"}, //farmtr1
        {"Utility Trailer"} //utiltr1
};

forward SkinSelect(playerid);
forward VehicleSelect(playerid);
forward WorldSelect(playerid);
forward Float:GetPlayerArmourEx(p);
forward PlayerPickUpPickupSetAmmo(playerid, slotid, slotammo);
forward PlayerPickUpPickupSetArmour(playerid, Float:playerarmour);
forward PickDestroy(o);
forward OnPlayerDisconnect(playerid, reason);
forward OnPlayerConnect(playerid);
forward Keys();
forward RemoveRamp(playerid);
forward Float:GetOptimumRampDistance(playerid);
forward Float:GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance);
forward keys2();

main()
{
        print("\n----------------------------------");
        print("    UVH Mode      ");
        print("----------------------------------\n");
}

Float:GetPlayerArmourEx(p)
{
        new Float:a;
        GetPlayerArmour(p, a);
        return a;
}

dcmd_g(playerid, params[]) {
if(IsPlayerAdmin(playerid)) {
        new cString[256];

        if (!strlen(params[0]))
        {
            SendClientMessage(playerid, COLOR_RED, "[USAGE]: /g GRAVITY or /gravity GRAVITY");
            return true;
        }

        new Float:grav = floatstr(params[0]);

        SetGravity(grav);

        format(cString, 128, "[SUCCESS]: World gravity changed to %f", grav);
        SendClientMessage(playerid, COLOR_GREEN, cString);
}
        return true;
}

dcmd_gravity(playerid, params[]) {
if(IsPlayerAdmin(playerid)) {
        dcmd_g(playerid, params);
}
        return true;
}

dcmd_w(playerid, params[]) {
if(IsPlayerAdmin(playerid)) {
        new idx, iString[256];
        iString = strtok(params, idx);

        if (!strlen(iString)) {
            SendClientMessage(playerid, COLOR_RED, "[USAGE]: /w WEATHERID or /weather WEATHERID");
            return true;
        }

        idx = strval(iString);

        if (idx < MIN_WEAT_ID || idx > MAX_WEAT_ID) {
            SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid WEATHERID");
            return true;
        }

        gWorldStatus[1] = idx;

        SetWeather(idx);

        format(iString, 128, "[SUCCESS]: Weather has changed to WEATHERID %d", idx);
        SendClientMessage(playerid, COLOR_GREEN, iString);
}
        return true;
}

dcmd_weather(playerid, params[]) {
if(IsPlayerAdmin(playerid)) {
        dcmd_w(playerid, params);
}
        return true;
}

dcmd_t(playerid, params[]) {
if(IsPlayerAdmin(playerid)) {
        new idx, iString[256];
        iString = strtok(params, idx);

        if (!strlen(iString)) {
            SendClientMessage(playerid, COLOR_RED, "[USAGE]: /t HOUR or /time HOUR");
            return true;
        }

        idx = strval(iString);

        if (idx < MIN_TIME_ID || idx > MAX_TIME_ID) {
            SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid HOUR");
            return true;
        }

        gWorldStatus[0] = idx;

        SetWorldTime(idx);

        format(iString, 128, "[SUCCESS]: Time has changed to HOUR %d", idx);
        SendClientMessage(playerid, COLOR_GREEN, iString);
}
        return true;
}

dcmd_time(playerid, params[]) {
if(IsPlayerAdmin(playerid)) {
        dcmd_t(playerid, params);
}
        return true;
}

dcmd_wsel(playerid, params[]) {
if(IsPlayerAdmin(playerid)) {
        #pragma unused params

        new cString[256];

        if (gPlayerStatus[playerid] != 0) {
                format(cString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[gPlayerStatus[playerid] - 1]);
                SendClientMessage(playerid, COLOR_RED, cString);
                return true;
        }

        new Float:x, Float:y, Float:z;

        gPlayerStatus[playerid] = WORL_SEL_STAT;

        GetPlayerPos(playerid, x, y, z);
        SetPlayerCameraPos(playerid, x, y, z + 40.0);

        GetXYInFrontOfPlayer(playerid, x, y, 100.0);

        SetPlayerCameraLookAt(playerid, x, y, z + 5.0);

        TogglePlayerControllable(playerid, 0);

        gPlayerTimers[playerid] = SetTimerEx("WorldSelect", 200, 1, "i", playerid);

        GameTextForPlayer(playerid, "WorldSelect", 1500, 3);
}
        return true;
}
dcmd_v(playerid, params[]) {
if(IsPlayerAdmin(playerid)) {
        new idx, iString[256];
        iString = strtok(params, idx);

        if (gPlayerStatus[playerid] != 0) {
                format(iString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[gPlayerStatus[playerid] - 1]);
                SendClientMessage(playerid, COLOR_RED, iString);
                return true;
        }

        if (!strlen(iString)) {
            SendClientMessage(playerid, COLOR_RED, "[USAGE]: /v MODELID/NAME or /vehicle MODELID/NAME");
            return true;
        }

        idx = GetVehicleModelIDFromName(params[1]);

        if(idx == -1) {
                idx = strval(iString);

                if (idx < MIN_VEHI_ID || idx > MAX_VEHI_ID) {
                SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid MODELID/NAME");
                return true;
                }
        }

        new Float:x, Float:y, Float:z, Float:a;

        GetPlayerPos(playerid, x, y, z);
        GetXYInFrontOfPlayer(playerid, x, y, VEHI_DIS);
        GetPlayerFacingAngle(playerid, a);

        curPlayerVehM[playerid] = idx;

        curPlayerVehI[playerid] = CreateVehicle(idx, x, y, z + 2.0, a + 90.0, -1, -1, 5000);
        LinkVehicleToInterior(curPlayerVehI[playerid], GetPlayerInterior(playerid));

        curServerVehP[curPlayerVehI[playerid]][spawn]  = true;
        curServerVehP[curPlayerVehI[playerid]][vmodel]  = idx;
        curServerVehP[curPlayerVehI[playerid]][vInt]    = GetPlayerInterior(playerid);

        format(iString, 128, "[SUCCESS]: Spawned a \"%s\" (MODELID: %d, VEHICLEID: %d)", aVehicleNames[idx - MIN_VEHI_ID], idx, curPlayerVehI[playerid]);

        SendClientMessage(playerid, COLOR_GREEN, iString);
}
        return true;
}

dcmd_vehicle(playerid, params[])
{
if(IsPlayerAdmin(playerid)) {
        dcmd_v(playerid, params);
}
        return true;
}

dcmd_vsel(playerid, params[])
{
if(IsPlayerAdmin(playerid)) {
        // /vsel allows players to select a vehicle using playerkeys.
        #pragma unused params

        new cString[256];

        if (gPlayerStatus[playerid] != 0) {
                format(cString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[gPlayerStatus[playerid] - 1]);
                SendClientMessage(playerid, COLOR_RED, cString);
                return true;
        }

        new Float:x, Float:y, Float:z, Float:a;

        gPlayerStatus[playerid] = VEHI_SEL_STAT;

        GetPlayerPos(playerid, x, y, z);
        SetPlayerCameraPos(playerid, x, y, z + 3.0);

        GetXYInFrontOfPlayer(playerid, x, y, VEHI_DIS);
        SetPlayerCameraLookAt(playerid, x, y, z);

        TogglePlayerControllable(playerid, 0);

        GetPlayerFacingAngle(playerid, a);

        curPlayerVehI[playerid] = CreateVehicle(curPlayerVehM[playerid], x, y, z + 2.0, a + 90.0, -1, -1, 5000);
        LinkVehicleToInterior(curPlayerVehI[playerid], GetPlayerInterior(playerid));

        curServerVehP[curPlayerVehI[playerid]][spawn]  = true;
        curServerVehP[curPlayerVehI[playerid]][vmodel]  = curPlayerVehM[playerid];
        curServerVehP[curPlayerVehI[playerid]][vInt]    = GetPlayerInterior(playerid);

        gPlayerTimers[playerid] = SetTimerEx("VehicleSelect", 200, 1, "i", playerid);
}
        return true;
}

dcmd_ssel(playerid, params[])
{
if(IsPlayerAdmin(playerid)) {
        // /ssel allows players to select a skin using playerkeys.
        #pragma unused params

        new cString[256];

        if (gPlayerStatus[playerid] != 0) {
                format(cString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[gPlayerStatus[playerid] - 1]);
                SendClientMessage(playerid, COLOR_RED, cString);
                return true;
        }

        new Float:x, Float:y, Float:z;

        gPlayerStatus[playerid] = SKIN_SEL_STAT;

        GetPlayerPos(playerid, x, y, z);
        SetPlayerCameraLookAt(playerid, x, y, z);

        GetXYInFrontOfPlayer(playerid, x, y, 3.5);
        SetPlayerCameraPos(playerid, x, y, z);

        TogglePlayerControllable(playerid, 0);

        gPlayerTimers[playerid] = SetTimerEx("SkinSelect", 200, 1, "i", playerid);
}
        return true;
}

dcmd_s(playerid, params[])
{
if(IsPlayerAdmin(playerid)) {
    // /s SKINID allows players to directly select a skin using it's ID.
        new idx, iString[256];
        iString = strtok(params, idx);

        if (!strlen(iString)) {
            SendClientMessage(playerid, COLOR_RED, "[USAGE]: /s SKINID");
            return true;
        }

        idx = strval(iString);

        if (IsInvalidSkin(idx) || idx < MIN_SKIN_ID || idx > MAX_SKIN_ID) {
            SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid SKINID");
            return true;
        }

        SetPlayerSkin(playerid, idx);
        curPlayerSkin[playerid] = idx;
        format(iString, 128, "[SUCCESS]: Changed skin to SKINID %d", idx);

        SendClientMessage(playerid, COLOR_GREEN, iString);
}
        return true;
}

dcmd_skin(playerid, params[])
{
if(IsPlayerAdmin(playerid)) {
        dcmd_s(playerid, params);
}
        return true;
}

dcmd_goto(playerid, params[])
{
if(IsPlayerAdmin(playerid)) {
        new idx, iString[256];
        iString = strtok(params, idx);

        if (!strlen(iString)) {
            SendClientMessage(playerid, COLOR_RED, "[USAGE]: /goto PLAYERID (X_OFFSET Y_OFFSET Z_OFFSET)");
            return true;
        }

        new ID = strval(iString);

        if (!IsPlayerConnected(ID)) {
            SendClientMessage(playerid, COLOR_RED, "[ERROR]: Not connected PLAYERID.");
            return true;
        }

        new Float:X, Float:Y, Float:Z;
        new Interior = GetPlayerInterior(ID);

        GetPlayerPos(ID, X, Y, Z);

        iString = strtok(params, idx);

        if (!strlen(iString)) {
            GetXYInFrontOfPlayer(ID, X, Y, 1.5);
            SetPlayerInterior(playerid, Interior);
                SetPlayerPos(playerid, X, Y, Z);

                GetPlayerName(ID, iString, 128);
                format(iString, 128, "[SUCCESS]: You have warped to %s (ID: %d).", iString, ID);
                SendClientMessage(playerid, COLOR_GREEN, iString);

            return true;
        }

        X += floatstr(iString);
        iString = strtok(params, idx);

        if (!strlen(iString)) {
            goto fwarpto;
        }

        Y += floatstr(iString);
        iString = strtok(params, idx);

        if (!strlen(iString)) {
            goto fwarpto;
        }

        Z += floatstr(iString);

        fwarpto:
        SetPlayerInterior(playerid, Interior);
        SetPlayerPos(playerid, X, Y, Z);

        GetPlayerName(ID, iString, 128);
        format(iString, 128, "[SUCCESS]: You have warped to %s (ID: %d).", iString, ID);
        SendClientMessage(playerid, COLOR_GREEN, iString);
}
        return true;
}

dcmd_warpto(playerid, params[])
{
if(IsPlayerAdmin(playerid)) {
        dcmd_goto(playerid, params);
}
        return true;
}

dcmd_setloc(playerid, params[])
{
if(IsPlayerAdmin(playerid)) {
        new idx, iString[256];
        iString = strtok(params, idx);

        if (!strlen(iString)) {
            SendClientMessage(playerid, COLOR_RED, "[USAGE]: /setloc X Y Z INTERIOR");
            return true;
        }

        new Float:X, Float:Y, Float:Z;
        new Interior;

        X = floatstr(iString);
        Y = floatstr(strtok(params,idx));
        Z = floatstr(strtok(params,idx));
        Interior = strval(strtok(params,idx));

        SetPlayerInterior(playerid, Interior);
        SetPlayerPos(playerid, X, Y, Z);
}
        return true;
}

dcmd_bring(playerid, params[])
{
if(IsPlayerAdmin(playerid)) {
        new idx, iString[256];
        iString = strtok(params, idx);

        if (!strlen(iString)) {
            SendClientMessage(playerid, COLOR_RED, "[USAGE]: /bring PLAYERID (X_OFFSET Y_OFFSET Z_OFFSET)");
            return true;
        }

        new ID = strval(iString);

        if (!IsPlayerConnected(ID)) {
            SendClientMessage(playerid, COLOR_RED, "[ERROR]: Not connected PLAYERID.");
            return true;
        }

        new Float:X, Float:Y, Float:Z;
        new Interior = GetPlayerInterior(playerid);

        GetPlayerPos(playerid, X, Y, Z);

        iString = strtok(params, idx);

        if (!strlen(iString)) {
            GetXYInFrontOfPlayer(playerid, X, Y, 1.5);
            SetPlayerInterior(ID, Interior);
                SetPlayerPos(ID, X, Y, Z);

                GetPlayerName(ID, iString, 128);
                format(iString, 128, "[SUCCESS]: You have brought %s (ID: %d) to you.", iString, ID);
                SendClientMessage(playerid, COLOR_GREEN, iString);

            return true;
        }

        X += floatstr(iString);
        iString = strtok(params, idx);

        if (!strlen(iString)) {
            goto fbring;
        }

        Y += floatstr(iString);
        iString = strtok(params, idx);

        if (!strlen(iString)) {
            goto fbring;
        }

        Z += floatstr(iString);

        fbring:
        SetPlayerInterior(ID, Interior);
        SetPlayerPos(ID, X, Y, Z);

        GetPlayerName(ID, iString, 128);
        format(iString, 128, "[SUCCESS]: You have brought %s (ID: %d) to you.", iString, ID);
        SendClientMessage(playerid, COLOR_GREEN, iString);
}
        return true;
}

dcmd_weapon(playerid, params[])
{
if(IsPlayerAdmin(playerid)) {
        dcmd_w2(playerid, params);
}
        return true;
}

dcmd_w2(playerid, params[])
{
if(IsPlayerAdmin(playerid)) {
        new idx, iString[256];
        iString = strtok(params, idx);

        if (!strlen(iString)) {
            SendClientMessage(playerid, COLOR_RED, "[USAGE]: /w2 WEAPONID/NAME (AMMO) or /weapon WEAPONID/NAME (AMMO)");
            return true;
        }

        new weaponid = GetWeaponModelIDFromName(iString);

        if (weaponid == -1) {
                weaponid = strval(iString);
                if (weaponid < 0 || weaponid > 47) {
                SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid WEAPONID/NAME");
                return true;
                }
        }

        if (!strlen(params[idx+1])) {
            GivePlayerWeapon(playerid, weaponid, 500);

            format(iString, 128, "[SUCCESS]: You were given weapon %s (ID: %d) with 500 ammo.", aWeaponNames[weaponid], weaponid);
            SendClientMessage(playerid, COLOR_GREEN, iString);

            return true;
        }

        idx = strval(params[idx+1]);

    GivePlayerWeapon(playerid, weaponid, idx);

    format(iString, 128, "[SUCCESS]: You were given weapon %s (ID: %d) with %d ammo.", aWeaponNames[weaponid], weaponid, idx);
    SendClientMessage(playerid, COLOR_GREEN, iString);
}
        return true;
}

public PickDestroy(o)DestroyPickup(o);

public PlayerPickUpPickupSetArmour(playerid, Float:playerarmour)
{
        SetPlayerArmour(playerid,playerarmour);
}

public PlayerPickUpPickupSetAmmo(playerid, slotid, slotammo)
{
        SetPlayerAmmo(playerid,slotid,slotammo);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////

public OnGameModeInit()
{
        SetGameModeText("UVH Mode");
    SetTimer("Keys", 100, 1);
    SetTimer("keys2",200,1);

        AllowAdminTeleport(1);
        EnableZoneNames(1);
        ShowNameTags(1);
        ShowPlayerMarkers(1);
        UsePlayerPedAnims();

        AddPlayerClass(101,1958.3783,1343.1572,15.3746,270.1425,0,0,26,300,-1,-1);
        AddPlayerClass(110,1958.3783,1343.1572,15.3746,270.1425,0,0,26,300,-1,-1);
        AddPlayerClass(115,1958.3783,1343.1572,15.3746,270.1425,0,0,26,300,-1,-1);
        AddPlayerClass(181,1958.3783,1343.1572,15.3746,270.1425,0,0,26,300,-1,-1);
        AddPlayerClass(247,1958.3783,1343.1572,15.3746,270.1425,0,0,26,300,-1,-1);

        AddStaticVehicle(525,2269.7820,2268.1973,10.8203,88.7933,1,1); //
        AddStaticVehicle(449, -1542.9490, 752.6488, 7.0391, 354.1891, 12, 12);
        AddStaticVehicle(514,2276.1741,2282.5674,11.2990,268.3048,30,30); //tanker
        AddStaticVehicle(584,2255.6426,2283.5044,11.2650,270.8326,30,30); //petroltrailer
    AddStaticVehicle(411,2005.2042,-2035.7882,13.5469,134.7967,70,70); //infernus
    AddStaticVehicle(411,2498.8987,-1685.1796,13.4369,17.8053,126,126); //infernus
    AddStaticVehicle(402,2473.1670,-1690.0977,13.2373,3.1551,30,30); //ryderpicador
        AddStaticVehicle(487,365.2376,2537.8254,16.8354,182.2368,29,42); // marquick 1
        AddStaticVehicle(487,-2228.0564,2325.7036,7.7187,359.6025,29,42); // marcquick 2
        AddStaticVehicle(405,2439.7590,2008.9789,10.6953,270.0395,40,1); // sentyel 1
        AddStaticVehicle(541,2602.1653,2085.7168,10.4411,358.5779,68,8); // bullet 2
        AddStaticVehicle(555,2851.5088,2375.7458,10.5069,269.2505,68,1); // windzer 2
        AddStaticVehicle(402,2613.1138,2254.4402,10.6450,90.4882,22,22); // buffelo 2
        AddStaticVehicle(541,2528.5854,2398.2915,3.8360,1.6631,2,1); // bullet 3
        AddStaticVehicle(559,1911.8303,2289.7939,10.4767,6.6293,2,1); // jester 3
        AddStaticVehicle(579,649.7271,1702.5031,6.9226,130.8256,42,42); // huntly 2
        AddStaticVehicle(405,44.3055,1162.7914,18.5391,270.3642,24,1); // sentyel 3
        AddStaticVehicle(411,-44.5873,1165.9540,19.2885,180.9934,64,1); // infurnes 2
        AddStaticVehicle(429,-2527.4106,2252.6714,4.6528,332.8254,13,13); // banche 2
        AddStaticVehicle(559,-1941.4408,2392.6514,49.1485,291.0861,58,8); // jester 3
        AddStaticVehicle(451,-2272.9246,2285.4805,4.5281,272.1964,125,125); // turismo 2
        AddStaticVehicle(437,1715.6104,1471.7892,10.8770,161.5187,79,7); // coach 1
        AddStaticVehicle(437,1706.9230,1439.6907,10.8280,173.2567,79,7); // coach 2
        AddStaticVehicle(420,1712.9070,1393.4202,10.3486,193.5293,6,1); // taxi 1
        AddStaticVehicle(420,1709.2751,1407.3428,10.3442,191.7667,6,1); // taxi 2
        AddStaticVehicle(413,2059.4287,2240.0090,10.5571,89.5542,32,32); // Pony 1
        AddStaticVehicle(409,2039.5847,1344.4479,10.4719,181.4359,1,1); // limo 1
        AddStaticVehicle(413,2608.9758,1434.6827,10.8979,176.4506,105,1); // pony 2
        AddStaticVehicle(409,2564.1248,2271.6777,10.6200,271.6982,1,1); // limo 2
        AddStaticVehicle(413,2294.7915,2770.3792,10.9116,270.8540,109,1); // pony 3
        AddStaticVehicle(525,2119.1260,2712.7119,10.6981,270.8324,22,30); // towtruck 1
        AddStaticVehicle(535,1022.7532,1912.8250,11.0769,89.3612,28,1); // slamvan 1
        AddStaticVehicle(568,393.5238,2543.3621,16.4095,149.3274,21,1); // bandito 1
        AddStaticVehicle(568,-365.7845,1102.9121,19.6135,268.0183,9,39); // bandito 2
        AddStaticVehicle(471,-44.8490,2353.5125,23.6202,182.9322,103,111); // quad 1
        AddStaticVehicle(444,-944.9021,2746.9343,46.5861,189.7507,32,53); // monster 1
        AddStaticVehicle(444,-953.6036,2745.5537,46.5823,193.2329,32,42); // monster 2
        AddStaticVehicle(536,-290.0055,1775.3320,42.4430,91.7992,12,1); // blade 2
        AddStaticVehicle(525,-1476.4402,1878.8938,32.5078,185.7379,17,20); // towtruck 2
        AddStaticVehicle(471,-889.8527,1528.0720,25.3957,16.8545,103,111); // quad 2
        AddStaticVehicle(579,-688.1631,954.6205,12.0919,73.2714,42,42); // huntly 2
        AddStaticVehicle(581,2155.0261,2206.6096,10.2723,22.7369,66,1); // bf400
        AddStaticVehicle(463,1852.4683,2066.5149,10.3958,181.4877,84,84); // freeway 1
        AddStaticVehicle(521,2100.3325,944.6953,10.3865,268.9928,92,3); // fcr900 1
        AddStaticVehicle(461,2604.5393,2131.6069,10.3984,265.7138,53,1); // pj600 1
        AddStaticVehicle(461,2790.4980,2188.0017,10.3959,125.6756,53,1); // pj600 2
        AddStaticVehicle(463,2310.9238,2577.0552,10.3576,179.7330,11,11); // freeway 2
        AddStaticVehicle(522,1174.2169,1365.4791,10.3747,274.4023,3,8); // nrg 1
        AddStaticVehicle(461,436.0948,2527.9846,16.5272,92.6702,43,1); // pj600 3
        AddStaticVehicle(521,-2472.6860,2484.5906,17.3470,177.0498,75,13); // frc900 3
        AddStaticVehicle(468,-1567.6953,2639.5964,55.4246,272.2135,46,46); // sanches 1
        AddStaticVehicle(413,822.4622,834.1564,11.0434,331.6576,88,1); // pony 3
        AddStaticVehicle(462,-363.7366,1103.5787,19.3453,268.6441,13,13); // faggio 1
        AddStaticVehicle(598,2268.9163,2477.4221,10.5663,179.7880,0,1); // POLICE lvpd 1
        AddStaticVehicle(598,2251.9292,2460.8462,10.5648,359.6341,0,1); // police lvpd 2
        AddStaticVehicle(598,2260.7278,2442.1404,10.5672,1.1592,0,1); // lvpd 3
        AddStaticVehicle(523,2278.3411,2441.6113,10.3884,357.6030,0,0); // police bike 1
        AddStaticVehicle(599,2261.1182,2478.0918,11.0114,0.2949,0,1); // poice ranger 1
        AddStaticVehicle(599,-1399.1746,2631.6221,55.9513,89.6817,0,1); // police ranger 2
        AddStaticVehicle(493,-2258.3765,2419.3733,-0.2296,46.8724,36,13); // jetmax 1
        AddStaticVehicle(454,-2210.3738,2410.3826,0.0322,45.9553,26,26); // tropic 1
        AddStaticVehicle(411,-2571.9150,1149.0586,55.4536,157.9214,64,1); // infurnes 3
        AddStaticVehicle(603,-2062.9048,-194.5860,35.1591,357.7038,69,1); // phoinex 2
        AddStaticVehicle(525,-1715.8478,394.5023,7.0568,223.3201,17,20); // towtruck 3
        AddStaticVehicle(463,-1678.4806,438.1255,6.7199,230.1280,84,84); // freeway 2
        AddStaticVehicle(411,-1955.1738,302.8820,35.1958,140.1711,64,1); // infurnes 4
        AddStaticVehicle(451,-1948.5112,273.2663,35.1806,119.7905,125,125); // turismo 3
        AddStaticVehicle(541,-1946.3823,269.9905,35.0987,128.7914,58,8); // bullet 4
        AddStaticVehicle(603,-1945.9105,264.4192,35.3091,125.0498,69,1); // phoinex 3
        AddStaticVehicle(535,-1944.8008,258.8067,35.2323,89.9357,28,1); // slamvan 2
        AddStaticVehicle(521,-2318.4546,985.5400,50.2612,92.9237,87,118); // fcr900 4
        AddStaticVehicle(522,-1236.0127,43.0522,13.7144,226.6542,3,8); // nrg 2
        AddStaticVehicle(487,-1173.1865,33.7043,14.3260,264.8947,29,42); // marquick 3
        AddStaticVehicle(487,-1181.9120,18.7406,14.3216,277.3964,29,42); // marquick 4
        AddStaticVehicle(417,-1222.6594,-14.5613,14.2577,228.4606,0,0); // lethen 3
        AddStaticVehicle(548,-1452.6815,500.4187,19.8840,90.0480,1,1); // cargobob 1
        AddStaticVehicle(519,-1342.7716,-257.3669,15.0666,315.2596,1,1); // shamel 4
        AddStaticVehicle(519,-1374.0319,-223.5403,15.0626,313.1747,1,1); // shamel 5
        AddStaticVehicle(592,-1633.6996,-140.0347,15.3420,315.3937,1,1); // amel 1
        AddStaticVehicle(511,-1657.0466,-276.1567,15.5258,349.1506,4,90); // beagle 1
        AddStaticVehicle(593,-1308.4984,-470.3462,14.6003,298.2170,58,8); // dodo 3
        AddStaticVehicle(513,-1361.6124,-497.9861,14.7145,208.5793,21,36); // stunt 2
        AddStaticVehicle(432,-2089.8455,-217.4429,35.3329,271.3663,43,0); // tank 1
        AddStaticVehicle(432,-2089.9946,-204.9222,35.3333,273.1710,43,0); // tank 2
        AddStaticVehicle(432,-2090.3042,-193.4641,35.3332,267.4234,43,0); // tank 3
        AddStaticVehicle(432,-2089.8179,-180.8507,35.3327,267.1253,43,0); // tank 4
        AddStaticVehicle(432,-2016.6753,-217.5217,35.3342,89.7948,43,0); // tank 6
        AddStaticVehicle(432,-2017.9479,-203.4790,35.3360,91.0770,43,0); // tank 7
        AddStaticVehicle(432,-2017.1674,-185.9478,35.3351,86.9170,43,0); // tank 9
        AddStaticVehicle(432,-2016.4091,-197.2335,35.3356,87.3730,43,0); // tank 8
        AddStaticVehicle(432,-2090.4690,-171.1398,35.3331,273.7698,43,0); // tank 5
        AddStaticVehicle(432,-2016.7418,-176.3254,35.3353,85.2153,43,0); // tank 10
        AddStaticVehicle(409,-1753.1986,950.6242,24.5421,88.5659,1,1); // stretch 2
        AddStaticVehicle(409,-1757.3423,938.0756,24.6129,90.8806,1,1); // stretch   2
        AddStaticVehicle(603,-1704.3400,1028.3372,17.4239,271.3531,75,77); // phoines 4
        AddStaticVehicle(461,-1785.8167,619.8496,31.4371,184.3336,37,1); // pj600 2
        AddStaticVehicle(487,-1681.9042,704.5961,30.7675,90.9026,29,42); // marquick 5
        AddStaticVehicle(599,-1588.4310,673.4540,7.3808,0.1492,0,1); // police ranger 2
        AddStaticVehicle(597,-1616.8450,650.5283,6.9570,4.1870,0,1); // sf police car 1
        AddStaticVehicle(597,-1600.3678,750.2496,-5.4722,180.9103,0,1); // sf poilce car 2
        AddStaticVehicle(597,-1573.3442,731.1058,-5.4742,272.4798,0,1); // sf police 3
        AddStaticVehicle(597,-1573.0120,714.3583,-5.4736,91.9486,0,1); // sf police car 4
        AddStaticVehicle(597,-1608.4512,693.4437,-5.4716,178.7763,0,1); // sf poilce 5
        AddStaticVehicle(597,-1632.4569,693.4393,-5.4720,179.0899,0,1); // sf poilce 6
        AddStaticVehicle(541,-1622.5687,653.5968,-5.6172,271.1653,60,1); // bullet 4
        AddStaticVehicle(523,-1596.6940,674.5662,-5.6804,356.0903,0,0); // poilce bike 2
        AddStaticVehicle(523,-1599.8395,674.6253,-5.6808,0.4780,0,0); // police bike 3
        AddStaticVehicle(402,-2090.0686,-83.4225,34.9959,358.5446,13,13); // buffelo 3
        AddStaticVehicle(416,-2655.8655,627.2515,14.6021,268.7183,1,3); // amberlance 1
        AddStaticVehicle(416,-2644.9885,627.0764,14.6025,266.7907,1,3); // amberlance 2
        AddStaticVehicle(416,-2671.5210,628.6816,14.6024,266.7411,1,3); // amberlance 3
        AddStaticVehicle(416,-2589.5774,627.7122,14.6085,90.1393,1,3); // amberlance 4
        AddStaticVehicle(405,-2134.0793,643.6107,52.1893,357.8752,24,1); // sentyel 4
        AddStaticVehicle(411,-2105.6274,900.5546,76.3631,8.2169,64,1); // infurnes 5
        AddStaticVehicle(536,-2451.4941,742.2098,34.7532,359.7487,12,1); // blade 3
        AddStaticVehicle(481,-1215.3861,1841.3306,41.2360,48.1709,3,3); // bmx 1
        AddStaticVehicle(481,-2513.5803,728.6426,34.5355,267.4695,3,3); // bmx 2
        AddStaticVehicle(537,-1943.3127,158.0254,27.0006,357.3614,1,1);
        AddStaticVehicle(569,-1943.3127,158.0254,27.0006,357.3614,1,1);
        AddStaticVehicle(569,-1943.3127,158.0254,27.0006,357.3614,1,1);
        AddStaticVehicle(569,-1943.3127,158.0254,27.0006,357.3614,1,1);
        return 1;
}

public OnGameModeExit()
{
        for (new i=0; i<MAX_PLAYERS; i++)
        {
                if (rampid[i] != -1) DestroyObject(rampid[i]);
        }
        return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
        SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
        SetPlayerFacingAngle(playerid, 270.0);
        SetPlayerCameraPos(playerid, 1961.6888,1343.1400,15.3746);
        SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
        return 1;
}

public OnPlayerRequestSpawn(playerid)
{
        return 1;
}

public OnPlayerConnect(playerid)
{
        new PlayerName[30], str[256];
        GetPlayerName(playerid, PlayerName, 30);
        format(str, 256, "%s has joined the server!", PlayerName);
        SendClientMessageToAll(0xFF9900AA, str);
        GameTextForPlayer(playerid, "~r~UVH ~w~mode ~b~by bossyboy", 3000, 3);
        return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
        new PlayerName[30], str[256];
        switch (reason)
        {
            case 0:
                {
        GetPlayerName(playerid, PlayerName, 30);
        format(str, 256, "%s has left the server! (Timeout)", PlayerName);
        SendClientMessageToAll(0xFF9900AA, str);
                                                        }
                case 1:
                    {
        GetPlayerName(playerid, PlayerName, 30);
        format(str, 256, "%s has left the server! (Leaving)", PlayerName);
        SendClientMessageToAll(0xFF9900AA, str);
                                                        }
                case 2:
                    {
        GetPlayerName(playerid, PlayerName, 30);
        format(str, 256, "%s has left the server! (Kicked)", PlayerName);
        SendClientMessageToAll(0xFF9900AA, str);
                                                        }
        }
        return 1;
}

public OnPlayerSpawn(playerid)
{
        GivePlayerMoney(playerid, spawnmoney);
        return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
        new Float:X, Float:Y, Float:Z;
        GetPlayerPos(playerid, X, Y, Z);
        new weap[200];
        new ammo;
        new temp;
        new s[256];
        new PX;
        new PY;
        new PickUpMoneyBit = false;

        SendDeathMessage(killerid, playerid, reason);

                for(new i=0;i<15;i++){
                if(i<12){
                        GetPlayerWeaponData(playerid, i, weap[i], ammo);
                        if(weapmod[weap[i]] == 1212){
                                PickUpMoneyBit=true;
                        } else {
                            format(s, 256 ,"%.0f", X);
                                temp = strval(s);
                                PX = random((temp+2)-(temp-2))+(temp-2);
                                format(s, 256 ,"%.0f", Y);
                                temp = strval(s);
                                PY = random((temp+2)-(temp-2))+(temp-2);
                            new pickid = CreatePickup(weapmod[weap[i]], 4,PX, PY, Z);
                            PickUpWeaponSlot[pickid]=i;
                            PickUpWeaponAmmo[pickid]=ammo;
                                DropPick[pickid]=true;
                                PickUpArmour[pickid]=0.0;
                                PickUpMoney[pickid]=false;
                        }
                }
                if(i==13){
                }
               if(i==14){
                   new Float:playerarmour = GetPlayerArmourEx(playerid);
                        if(playerarmour>0.0){
                            format(s, 256 ,"%.0f", X);
                                temp = strval(s);
                                PX = random((temp+2)-(temp-2))+(temp-2);
                                format(s, 256 ,"%.0f", Y);
                                temp = strval(s);
                                PY = random((temp+2)-(temp-2))+(temp-2);
                            new pickid = CreatePickup(373, 4,PX, PY, Z);
                            PickUpWeaponSlot[pickid]=14;
                            PickUpWeaponAmmo[pickid]=0;
                            PickUpArmour[pickid]=playerarmour;
                                DropPick[pickid]=true;
                                PickUpMoney[pickid]=false;
                        } else {
                                PickUpMoneyBit=true;
                        }
                }
                if(i==15){
                        PickUpMoneyBit=true;
                }
        }
        if(PickUpMoneyBit)
        {
            format(s, 256 ,"%.0f", X);
                temp = strval(s);
                PX = random((temp+2)-(temp-2))+(temp-2);
                format(s, 256 ,"%.0f", Y);
                temp = strval(s);
                PY = random((temp+2)-(temp-2))+(temp-2);
                new pickid = CreatePickup(1212, 4,PX, PY, Z);
                PickUpMoney[pickid]=true;
                PickUpMoneyAmmount[pickid]=GetPlayerMoney(playerid);
                PickUpWeaponAmmo[pickid]=0;
                PickUpArmour[pickid]=0.0;
                DropPick[pickid]=true;
        }

        ResetPlayerMoney(playerid);

        return 1;
}

public OnVehicleSpawn(vehicleid)
{
        return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
        return 1;
}

public OnPlayerText(playerid, text[])
{
        return 1;
}

public OnPlayerPrivmsg(playerid, recieverid, text[])
{
        return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
        new cmd[256];
        new idx;
        new dancestyle;
        new color1;
        new color2;
        new vehicleid;
        new giveplayerid, moneys;
        new playermoney;
        new sendername[MAX_PLAYER_NAME];
        new giveplayer[MAX_PLAYER_NAME];
        vehicleid = GetPlayerVehicleID(playerid);
        cmd = strtok(cmdtext, idx);

        dcmd(s, 1, cmdtext);
        dcmd(ssel, 4, cmdtext);
        dcmd(skin, 4, cmdtext);
        dcmd(v, 1, cmdtext);
        dcmd(vsel, 4, cmdtext);
        dcmd(vehicle, 7, cmdtext);
        dcmd(w, 1, cmdtext);
        dcmd(t, 1, cmdtext);
        dcmd(g, 1, cmdtext);
        dcmd(wsel, 4, cmdtext);
        dcmd(time, 4, cmdtext);
        dcmd(weather, 7, cmdtext);
        dcmd(gravity, 7, cmdtext);
        dcmd(w2, 2, cmdtext);
        dcmd(goto, 4, cmdtext);
        dcmd(bring, 5, cmdtext);
        dcmd(warpto, 6, cmdtext);
        dcmd(weapon, 6, cmdtext);
        dcmd(setloc, 6, cmdtext);

        if(strcmp(cmd, "/commands", true) == 0)
        {
        SendClientMessage(playerid, COLOR_RED, "/gestures, /givecash, /kill, /detach, /me, /afk, /back, /setramp, /ramps.");
        return 1;
        }

        if(strcmp(cmd, "/admincommands", true) == 0)
        {
        SendClientMessage(playerid, COLOR_RED, "/heal, /flip, /addcomp, /carcolor, /v(sel), /skin(sel), /w(sel), /t(ime).");
    return 1;
        }

        if(strcmp(cmd, "/gestures", true) == 0)
        {
        SendClientMessage(playerid, COLOR_RED, "/drunk, /wank, /dance 1-3, /handsup.");
    return 1;
        }

        if (strcmp("/setramp", cmdtext, true, 7) == 0)
        {
                new ramp = strval(cmdtext[9]);
                if (ramp < 0 || ramp >= sizeof(ramptypes)) {
                    SendClientMessage(playerid, 0xFFFFFFAA, "Invalid ramp ID.");
                } else {
                        playerramptypes[playerid] = ramp;
                }
            return 1;
        }

        if (strcmp("/ramps", cmdtext, true, 6) == 0)
        {
               SendClientMessage(playerid, 0xFFFFFFAA, "0. Curved Ramp");
               SendClientMessage(playerid, 0xFFFFFFAA, "1. Concrete Ramp With Pipes");
                SendClientMessage(playerid, 0xFFFFFFAA, "2. Planks Of Wood Against Boxes");
                SendClientMessage(playerid, 0xFFFFFFAA, "3. Wood Against Rocks");
                SendClientMessage(playerid, 0xFFFFFFAA, "4. Normal Water Ramp");
                SendClientMessage(playerid, 0xFFFFFFAA, "5. Wide Water Ramp");
                SendClientMessage(playerid, 0xFFFFFFAA, "6. Small Kick Ramp With Yellow Arrow");
                SendClientMessage(playerid, 0xFFFFFFAA, "7. Ring");
                SendClientMessage(playerid, 0xFFFFFFAA, "8. LV Highway Lamppost");
            return 1;
        }

        if(strcmp(cmd, "/afk", true) == 0)
        {
        SetPlayerVirtualWorld(playerid, 2);
        TogglePlayerControllable(playerid, 0);
        return 1;
        }

        if(strcmp(cmd, "/back", true) == 0)
        {
        SetPlayerVirtualWorld(playerid, 0);
        TogglePlayerControllable(playerid, 1);
        return 1;
        }

        if(strcmp(cmd, "/drunk", true) == 0)
        {
     if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
     {
          ApplyAnimation(playerid, "PED", "WALK_DRUNK", 4.1, 1, 1, 1, 1, 1);
          return 1;
     }
}

        if(strcmp(cmd, "/wank", true) == 0)
        {
     if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
     {
          ApplyAnimation(playerid, "PAULNMAC", "wank_loop", 4.1, 1, 1, 1, 1, 1);
          return 1;
     }
}

        if(strcmp(cmd, "/handsup", true) == 0) {
                if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) {
                    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_HANDSUP);
                  return 1;
                }
        }

        if(strcmp(cmd, "/dance", true) == 0) {
        if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) {
                    new tmp[256];

                    // Get the dance style param
          tmp = strtok(cmdtext, idx);
                        if(!strlen(tmp)) {
                                SendClientMessage(playerid,0xFF0000FF,"Usage: /dance [style 1-3]");
                                return 1;
                        }

                        dancestyle = strval(tmp);
                        if(dancestyle < 1 || dancestyle > 3) {
                            SendClientMessage(playerid,0xFF0000FF,"Usage: /dance [style 1-3]");
                            return 1;
                        }

                        if(dancestyle == 1) {
                            SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
                        } else if(dancestyle == 2) {
                            SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE2);
                        } else if(dancestyle == 3) {
                            SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE3);
                        }
                    return 1;
                }
        }

        if(strcmp(cmd, "/givecash", true) == 0) {
            new tmp[256];
            new string [256];
                tmp = strtok(cmdtext, idx);

                if(!strlen(tmp)) {
                        SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givecash [playerid] [amount]");
                        return 1;
                }
                giveplayerid = strval(tmp);

                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp)) {
                        SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givecash [playerid] [amount]");
                        return 1;
                }
               moneys = strval(tmp);

                //printf("givecash_command: %d %d",giveplayerid,moneys);


                if (IsPlayerConnected(giveplayerid)) {
                        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        playermoney = GetPlayerMoney(playerid);
                        if (moneys > 0 && playermoney >= moneys) {
                                GivePlayerMoney(playerid, (0 - moneys));
                                GivePlayerMoney(giveplayerid, moneys);
                                format(string, sizeof(string), "You have sent %s(player: %d), $%d.", giveplayer,giveplayerid, moneys);
                                SendClientMessage(playerid, COLOR_YELLOW, string);
                                format(string, sizeof(string), "You have recieved $%d from %s(player: %d).", moneys, sendername, playerid);
                                SendClientMessage(giveplayerid, COLOR_YELLOW, string);
                                printf("%s(playerid:%d) has transfered %d to %s(playerid:%d)",sendername, playerid, moneys, giveplayer, giveplayerid);
                        }
                        else {
                                SendClientMessage(playerid, COLOR_YELLOW, "Invalid transaction amount.");
                        }
                }
                else {
                                format(string, sizeof(string), "%d is not an active player.", giveplayerid);
                                SendClientMessage(playerid, COLOR_YELLOW, string);
                        }
                return 1;
        }

        if (strcmp(cmd, "/addcomp", true)==0)
        {
        if(IsPlayerAdmin(playerid)) {
                new tmp[256], string[256];
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp)) {
                SendClientMessage(playerid,COLOR_YELLOW,"USAGE: /addcomp [componetid]");
                return 1;
                }
               new compid = strval(tmp);
               if(IsPlayerInAnyVehicle(playerid)) {
                if(compid < 1000 || compid > 1193) {
               SendClientMessage(playerid,COLOR_YELLOW,"ERROR: Invalid componet ID.");
                return 1;
                } else {
               new carid = GetPlayerVehicleID(playerid);
              AddVehicleComponent(carid,compid);
              format(string,sizeof(string),"Successfuly added the requested componet (%d).",compid);
              SendClientMessage(playerid,COLOR_YELLOW, string);
              return 1;
                }
                } else {
                SendClientMessage(playerid,COLOR_YELLOW,"ERROR: You are not in a vehicle.");
              return 1;
                }
        }
}

        if (strcmp(cmdtext, "/detach", true)==0)
        {
                new tmp = GetPlayerVehicleID(playerid);
                new ttmp = GetVehicleTrailer(tmp);
                AttachTrailerToVehicle(ttmp,tmp);
                DetachTrailerFromVehicle(tmp);
                SendClientMessage(playerid, COLOR_YELLOW, "Trailer detached");
                return 1;
        }

        if(strcmp(cmd, "/carcolor", true) == 0) {
        if(IsPlayerAdmin(playerid)) {
            new tmp1[256];
            new tmp2[256];
                tmp1 = strtok(cmdtext, idx);
                tmp2 = strtok(cmdtext, idx);
                color1 = strval(tmp1);
                color2  = strval(tmp2);
                ChangeVehicleColor(vehicleid, color1, color2);
        }
        else
        {
                SendClientMessage(playerid, COLOR_RED, "You must be an admin!");
        }
        return 1;
        }

        if(strcmp(cmd, "/kill", true) == 0)
        {
                  SetPlayerHealth(playerid, 0.0);
          return 1;
     }

        if(strcmp(cmdtext, "/me", true, 3)==0) {
               new str[256], pname[256]; GetPlayerName(playerid, pname, 256);
               format(str, 256, "*** %s %s", pname, cmdtext[4]);
               SendClientMessageToAll(COLOR_YELLOW, str);
               return 1;
        }

        if(strcmp(cmd, "/heal", true) == 0) {
        if(IsPlayerAdmin(playerid)) {
        if(IsPlayerInAnyVehicle(playerid)) {
                SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);
                SetPlayerHealth(playerid, 100.0);
                SetPlayerArmour(playerid, 100.0);
                new Float:x, Float:y, Float:z;
                GetPlayerPos(playerid, x, y, z);
                GetXYInFrontOfPlayer(playerid, x, y, 8.0);
        } else {
                SetPlayerHealth(playerid, 100.0);
                SetPlayerArmour(playerid, 100.0);
        }
        }
        else
        {
                SendClientMessage(playerid, COLOR_RED, "You aren't admin!");
        }
        return 1;
        }

        if (strcmp(cmdtext, "/flip", true)==0)
        {
                new VehicleID, Float:X, Float:Y, Float:Z;
              GetPlayerPos(playerid, X, Y, Z);
              VehicleID = GetPlayerVehicleID(playerid);
              SetVehiclePos(VehicleID, X, Y, Z);
              SetVehicleZAngle(VehicleID, 0);
        return 1;
        }

        return 0;
}

public OnPlayerInfoChange(playerid)
{
        return 1;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
        return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
        return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
        return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
        return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
        return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
        return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
        return 1;
}

public OnRconCommand(cmd[])
{
        return 1;
}

public OnObjectMoved(objectid)
{
        return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
        return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
        if(PickUpMoney[pickupid]){
                GivePlayerMoney(playerid,PickUpMoneyAmmount[pickupid]);
        }
        if(PickUpArmour[pickupid]>0){
                new Float:currentarmour = GetPlayerArmourEx(playerid);
                if(currentarmour<255.0)
                {
                        new Float:newarmour = currentarmour + PickUpArmour[pickupid];
                        if(newarmour>255.0)
                        {
                                newarmour = float(255);
                        }
                        SetTimerEx("PlayerPickUpPickupSetArmour", 500, 0, "df", playerid, newarmour);
                } else {
                    return 0;
                }
        }
        if(PickUpWeaponAmmo[pickupid]>0){
            new currentslotweapon, currentslotammo;
            GetPlayerWeaponData(playerid,PickUpWeaponSlot[pickupid],currentslotweapon,currentslotammo);
            new newslotammo = currentslotammo + PickUpWeaponAmmo[pickupid];
        SetTimerEx("PlayerPickUpPickupSetAmmo", 500, 0, "d", playerid, PickUpWeaponSlot[pickupid], newslotammo);
        }
        if(DropPick[pickupid]){
            DropPick[pickupid]=false;
            PickUpMoney[pickupid]=false;
            PickUpArmour[pickupid]=0;
                SetTimerEx("PickDestroy", 1000, 0, "d", pickupid);
        }
        return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
        return 1;
}

public OnPlayerExitedMenu(playerid)
{
        return 1;
}

public keys2() {
        new lKeys, Mike1, Mike2;
        new Float:px,Float:py,Float:pz;
        new Float:cx,Float:cy,Float:cz;

        for(new i = 0; i < SLOTS; i++) {
            if(IsPlayerConnected(i)) {
                        GetPlayerPos(i,px,py,pz);
                        for(new j = 0; j < MAX_VEHICLES; j++) {
                                if(GetVehicleModel(j) == 564 || GetVehicleModel(j) == 501 || GetVehicleModel(j) == 464 || GetVehicleModel(j) == 441) {
                                        GetVehiclePos(j,cx,cy,cz);
                                        if( floatsqroot(  floatpower(px-cx,2.0) + floatpower(py-cy,2.0) + floatpower(pz-cz,2.0)) < 3.0) {
                                                GetPlayerKeys(i, lKeys, Mike1, Mike2);

                                                if (lKeys & KEY_SECONDARY_ATTACK) {
                                                        PutPlayerInVehicle(i, j, 0);
                                                }
                                        }
                                }
                        }
                }
        }
}

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 RemoveRamp(playerid)
{
        if (rampid[playerid] != -1) {
            DestroyObject(rampid[playerid]);
            rampid[playerid] = -1;
        }
}

IsInvalidSkin(skinid)
{   // Created by Simon

        #define MAX_BAD_SKINS   22

        new badSkins[MAX_BAD_SKINS] = {
                3, 4, 5, 6, 8, 42, 65, 74, 86,
                119, 149, 208, 265, 266, 267,
                268, 269, 270, 271, 272, 273, 289
        };

        for (new i = 0; i < MAX_BAD_SKINS; i++) {
            if (skinid == badSkins[i]) return true;
        }

        return false;
}

Float:GetOptimumRampDistance(playerid)
{
        new ping = GetPlayerPing(playerid), Float:dist;
        dist = floatpower(ping, 0.25);
        dist = dist*4.0;
        dist = dist+5.0;
        return dist;
}

Float:GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
{
        new Float:a;
        GetPlayerPos(playerid, x, y, a);
        if (IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
        else GetPlayerFacingAngle(playerid, a);
        x += (distance * floatsin(-a, degrees));
        y += (distance * floatcos(-a, degrees));
        return a;
}


GetVehicleModelIDFromName(vname[])
{
        for(new i = 0; i < 211; i++) {
                if (strfind(aVehicleNames[i], vname, true) != -1) {
                        return i + MIN_VEHI_ID;
                }
        }
        return -1;
}

GetWeaponModelIDFromName(wname[])
{
    for(new i = 0; i < 48; i++) {
        if (i == 19 || i == 20 || i == 21) continue;
                if (strfind(aWeaponNames[i], wname, true) != -1) {
                        return i;
                }
        }
        return -1;
}