All pastes #955004 Raw Edit

Untitled

public text v1 · immutable
#955004 ·published 2008-03-24 08:10 UTC
rendered paste body
#include <a_samp>
#include <core>
#include <float>
#include <dudb>
#include <LCS>

new logged[MAX_PLAYERS];
new money[MAX_PLAYERS];
new playername[MAX_PLAYER_NAME];

#define TEAM_CIVIL 1 // Team Vagos
#define TEAM_RUSSIAN 2 // Team Ballas
#define TEAM_ADMIN 3
#define TEAM_KIDNAP 4
#define TEAM_COP 5

#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_PINK 0xFF66FFAA
#define COLOR_GREY 0xAFAFAFAA
#define OBJECTIVE_COLOR 0xFFFF00AA
#define COLOR_BLACK 0x000000AA
#define COLOR_ERROR 0x800000AA
#define COLOR_ADMIN 0xA52A2AAA

new read[MAX_PLAYERS];
new Menu:RulesMenu;
new Menu:Rules;
new Text:gTextDraw;
new LoggedHaha;
new FrozenHaha;
new frozen[MAX_PLAYERS];
new Kidnapped[MAX_PLAYERS];
new KidnapTimer;
new Selection[MAX_PLAYERS];
new Door;

new Float:RandomSpawn[][4] =
{
	{-2720.609, -318.1057, 7.84375, 0.0},
 	{-2059.429, 891.1059, 61.85916, 0.0},
  	{-1988.766, 1117.668, 54.47243, 90.0}
};

new Float:RandomSpawn2[][4] =
{
	{-1624.54, 652.5769, -5.242188, 0.0},
 	{-1642.867, 695.1522, -4.90625, 0.0},
  	{-1569.063, 703.8151, -4.90625, 90.0}
};

static gTeam[MAX_PLAYERS];

forward SetPlayerToTeamColor(playerid); // Speler naar teamkleur zetten
forward SetupPlayerForClassSelection(playerid); // Speler klaarmaken voor setup
forward SetPlayerTeamFromClass(playerid,classid); // Speler in team zetten
forward ExitTheGameMode(); // uit gamemode gaan
forward LoggedIn(playerid);
forward FrozenIn(playerid);
forward Kidnap(playerid);
forward Busted(playerid);
forward Door2(playerid);


main()
{
    print("\n----------------------------------");
    print(" RPG San Fierros Heroes\n");
    print("----------------------------------\n");
}

public OnGameModeInit()
{
	{
			SetGameModeText("RPG San Fierros Heroes");
            SetWorldTime(8); // tijd in uren.
            ShowNameTags(1); // Spelers namen boven health balk aan of uit. Nu aan
            ShowPlayerMarkers(1); // Blokjes op radar aan of uit? Nu aan

            // Vehicles Vagos ---------- Zet hier de autos van de Vagos neer

			CreateVehicle(484, -3443.102, 1514.267, 0.1724623, 0.0, 18, 36, 99999999);

            AddPlayerClass(120, -1568.027, 681.1583, 7.1875,270.0,46,1,0,0,0,0);
            AddPlayerClass(228, -1568.027, 681.1583, 7.1875,270.0,46,1,0,0,0,0);
            AddPlayerClass(163, -1568.027, 681.1583, 7.1875,270.0,46,1,0,0,0,0);

            AddPlayerClass(113, -1495.514, 919.9135, 7.1875,270.0,0,0,0,0,0,0);
            AddPlayerClass(112, -1495.514, 919.9135, 7.1875,270.0,0,0,0,0,0,0);
            AddPlayerClass(127, -1495.514, 919.9135, 7.1875,270.0,0,0,0,0,0,0);

			AddPlayerClass(22, -1519.892, 677.1359, 139.2734,270.0,46,1,0,0,0,0);

			AddPlayerClass(22, -1519.892, 677.1359, 139.2734,270.0,46,1,0,0,0,0);

            AddPlayerClass(287, -1519.892, 677.1359, 139.2734,270.0,46,1,0,0,0,0);//cop
            AddPlayerClass(288, -1519.892, 677.1359, 139.2734,270.0,46,1,0,0,0,0);//cop
            AddPlayerClass(286, -1519.892, 677.1359, 139.2734,270.0,46,1,0,0,0,0);//cop
            AddPlayerClass(285, -1519.892, 677.1359, 139.2734,270.0,46,1,0,0,0,0);//cop

			gTextDraw = TextDrawCreate( 460.0, 420.0, "RPG San Fierros Heroes!");
            TextDrawFont(gTextDraw, 0);
			TextDrawUseBox(gTextDraw, 0);
			RulesMenu = CreateMenu("Accept rules? Or don't",1,200,200,400,35);
			AddMenuItem(RulesMenu, 0, "Read the rules");
			AddMenuItem(RulesMenu, 0, "Agree");
			AddMenuItem(RulesMenu, 0, "Disagree");
			Rules = CreateMenu("The rules:",1,200,200,400,35);
			AddMenuItem(Rules, 0, "Do NOT hack~n~Do NOT spam~n~Do NOT ask for admin~n~Do NOT abuse glitches");
            CreateObject(974, 291.874,186.0602,1008.172, 0.0,0.0,90.0);
            CreateObject(974, 293.9664,181.4382,1008.172, 0.0,0.0,145.0);
            CreateObject(974, 299.3847,180.0105,1008.172, 0.0,0.0,0.0);
            Door = CreateObject(1497, 295.9000, 189.000, 1006.350, 0.0, 0.0, 0.0);
            LCS_Load();
	}
    return 1;
}
public OnPlayerConnect(playerid)
{
	Selection[playerid] = 1;
	new string[128];
	new PlayerName[MAX_PLAYER_NAME];
	GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
	format(string, sizeof(string), "%s has joined the server", PlayerName);
	SendClientMessageToAll(COLOR_GREEN, string);
	Kidnapped[playerid] = 0;
	frozen[playerid] = 0;
	read[playerid] = 0;
    SetPlayerColor(playerid,COLOR_GREY); // Kleur
    GameTextForPlayer(playerid,"RPG San Fierros Heroes",2000,5); // Text
    SendClientMessage(playerid, COLOR_RED, "Welcome to this gamemode");
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Good luck, and have fun :)");
    logged[playerid] = 0;
	EnableStuntBonusForAll(0);
	return 1;
}
public SetupPlayerForClassSelection(playerid)
{
    SetPlayerInterior(playerid,10);
    SetPlayerPos(playerid,1982.4390,1011.1007,1000.9999);
    SetPlayerCameraPos(playerid,1988.671,1018.964,1002.839);
    SetPlayerCameraLookAt(playerid,1982.4390,1011.1007,999.7281);
    SetPlayerFacingAngle(playerid,340.0);
}
public SetPlayerTeamFromClass(playerid,classid)
{
    if(classid == 0 || classid == 1 || classid == 2)
    {
        gTeam[playerid] = TEAM_CIVIL;
    }
	else if(classid == 3 || classid == 4 || classid == 5)
	{
        gTeam[playerid] = TEAM_RUSSIAN;
	}
	else if(classid == 6)
	{
		gTeam[playerid] = TEAM_ADMIN;
	}
	else if(classid == 7)
	{
		gTeam[playerid] = TEAM_KIDNAP;
	}
	else if(classid == 8)
	{
		gTeam[playerid] = TEAM_COP;
	}
	return 1;
    }

public SetPlayerToTeamColor(playerid)
{
    if(gTeam[playerid] == TEAM_CIVIL) {
        SetPlayerColor(playerid,COLOR_RED); // geel
    } else if(gTeam[playerid] == TEAM_RUSSIAN) {
        SetPlayerColor(playerid,COLOR_BLACK); // roze/paars
    } else if(gTeam[playerid] == TEAM_ADMIN) {
        SetPlayerColor(playerid,COLOR_ADMIN); // roze/paars
    } else if(gTeam[playerid] == TEAM_KIDNAP) {
        SetPlayerColor(playerid,COLOR_YELLOW); // roze/paars
    } else if(gTeam[playerid] == TEAM_COP) {
        SetPlayerColor(playerid,COLOR_BLUE); // roze/paars
    }
}
public OnPlayerRequestClass(playerid, classid)
{
    SetupPlayerForClassSelection(playerid);
    SetPlayerTeamFromClass(playerid,classid);

    if(classid == 0 || classid == 1 || classid == 2) {
        GameTextForPlayer(playerid,"~y~CIVIL",1000,5);
    } else if(classid == 3 || classid == 4 || classid == 5) {
        GameTextForPlayer(playerid,"~r~RUSSIAN",1000,5);
    }
    else if(classid == 6) {
        GameTextForPlayer(playerid,"~y~ADMIN",1000,5);
	}
	else if(classid == 7) {
	    GameTextForPlayer(playerid,"KIDNAPPER",1000,5);
	}
	else if(classid == 8) {
	    GameTextForPlayer(playerid,"COP",1000,5);
	}
    TextDrawHideForPlayer(playerid, gTextDraw);
	return 1;
}
public OnPlayerSpawn(playerid)
{
	LCS_CreateCheckpoint(-3443.102, 1514.267, 0.1724623,3.0);
	Selection[playerid] = 0;
	SetPlayerTeamFromClass(playerid, GetPlayerSkin(playerid));
    SetPlayerToTeamColor(playerid);
    SetPlayerInterior(playerid,0);
	if(gTeam[playerid] == TEAM_CIVIL)
    {
   		new iRandom = random(3);
		SetPlayerPos(playerid, RandomSpawn[iRandom][0], RandomSpawn[iRandom][1],
		RandomSpawn[iRandom][2]);
		SetPlayerFacingAngle(playerid, RandomSpawn[iRandom][3]);
        GameTextForPlayer(playerid,"Cause some trouble!", 6000,5);
    }
    else if(gTeam[playerid] == TEAM_RUSSIAN)
    {
        GameTextForPlayer(playerid,"Keep your team up!", 6000,5);
    }
    else if(gTeam[playerid] == TEAM_ADMIN)
    {
		if(IsPlayerAdmin(playerid) == 0)
		{
			SetPlayerHealth(playerid, 0.0);
		    SendClientMessage(playerid, COLOR_RED, "You are NOT admin. You get killed");
	    }
		else
		{
			GameTextForPlayer(playerid,"Hello admin :)", 6000,5);
			read[playerid] = 1;
		}
	}
	else if (gTeam[playerid] == TEAM_KIDNAP)
	{
	    GameTextForPlayer(playerid,"Kidnap civics or cops!",6000,5);
	}
	else if (gTeam[playerid] == TEAM_COP)
	{
		new iRandom = random(3);
		SetPlayerPos(playerid, RandomSpawn2[iRandom][0], RandomSpawn2[iRandom][1],
		RandomSpawn2[iRandom][2]);
		SetPlayerFacingAngle(playerid, RandomSpawn2[iRandom][3]);
	    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Your job is to bring peace on the streets");
	    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Read your /commands please.");
	}
	if(logged[playerid] == 0)
    {
		frozen[playerid] = 1;
		FrozenHaha = SetTimer("FrozenIn", 1000, 999);
		LoggedHaha = SetTimer("LoggedIn", 1000, 999);
	}
	if(read[playerid] == 0)
	{
    TextDrawShowForPlayer(playerid, gTextDraw);
    ShowMenuForPlayer(RulesMenu, playerid);
    }
	return 1;
}
public ExitTheGameMode()
{
    GameModeExit();
}
public OnPlayerDeath(playerid, killerid, reason)
{
    new deathstr[256];
    new whodiedname[MAX_PLAYER_NAME+1];
    new whokilledname[MAX_PLAYER_NAME+1];
    new deathreasonstr[256];

    GetPlayerName(playerid,whodiedname,MAX_PLAYER_NAME);
    GetWeaponName(reason,deathreasonstr,255);

    if(killerid == INVALID_PLAYER_ID) {
        if(strlen(deathreasonstr)) {
            format(deathstr,256,"%s died (%s)",whodiedname,deathreasonstr);
        } else {
            format(deathstr,256,"%s died",whodiedname);
        }
        SendClientMessageToAll(COLOR_RED, deathstr);
    } else {
        GetPlayerName(killerid,whokilledname,MAX_PLAYER_NAME);
        if(gTeam[killerid] != gTeam[playerid]) {
            // Valid kill
            if(strlen(deathreasonstr)) {
                format(deathstr,256,"%s was killed by %s (%s)",whodiedname,whokilledname,deathreasonstr);
            } else {
                format(deathstr,256,"%s was killed by %s",whodiedname,whokilledname);
            }
            SendClientMessageToAll(COLOR_RED, deathstr);
            SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
         }
        else {
            // Team kill
            format(deathstr,256,"%s killed team-mate %s (%s)",whokilledname,whodiedname,deathreasonstr);
            SendClientMessageToAll(OBJECTIVE_COLOR, deathstr);
        }
    }
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	new cmd[256],tmp[256], tmp2[256];
    new idx;
    new string[256];
    cmd = strtok(cmdtext, idx);
	if(strcmp(cmd, "/kidnap", true) == 0)
	{
	new Float:x2, Float:y2, Float:z2;
	GetPlayerPos(playerid, Float:x2, Float:y2, Float:z2);
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /kidnap (id)");
	return 1;
	}
	new victimplayerid = strval(tmp);
	if(IsPlayerConnected(victimplayerid))
    {
		if(gTeam[playerid] == TEAM_KIDNAP)
		{
			if(gTeam[playerid] == TEAM_KIDNAP)
			{
					if(IsPlayerInAnyVehicle(playerid && victimplayerid))
					{
			    		Kidnapped[playerid] = 1;
						KidnapTimer = SetTimer("Kidnap", 240000, 1);
						new victimname[24];
						new kidnapname[24];
						new giveplayerid = strval(tmp);
						GetPlayerName(giveplayerid, victimname, 24);
						GetPlayerName(playerid, kidnapname, 21);
						SendClientMessage(victimplayerid, COLOR_RED, "You are kidnapped by %s", kidnapname);
						SendClientMessage(playerid, COLOR_GREEN, "You kidnapped him!");
						TogglePlayerControllable(victimplayerid, 0);
					}
					else
					{
						SendClientMessage(playerid, COLOR_RED, "You or the victim, have to be in a vehicle to kidnap");
					}
			}
			else
			{
					SendClientMessage(playerid, COLOR_RED, "You are not close enough");
			}
		}
    	else
		{
		    SendClientMessage(playerid, COLOR_RED, "You are not a kidnapper");
	    }
	}
	else
    {
		format(string, sizeof(string), "ID: %d Is not connected", victimplayerid);
		SendClientMessage(playerid, 0xD2691EAA, string);
	}
	
	if(strcmp(cmd, "/release", true) == 0)
	{
	    if(Kidnapped[victimplayerid] == 1)
		{
			TogglePlayerControllable(victimplayerid, 1);
			SendClientMessage(victimplayerid, COLOR_GREEN, "You are released");
			SetPlayerPos(playerid, Float:x2, Float:y2, Float:z2);
			new iRandomNumber = random(5000);
			GivePlayerMoney(playerid, iRandomNumber);
		}
		else
		{
		    SendClientMessage(playerid, COLOR_RED, "This player isn't kidnapped");
		}
	}
	return 1;
   }
    if(strcmp(cmd, "/car", true) == 0)
	{
	    new Float:x, Float:y, Float:z;
		GetPlayerPos(playerid, Float:x, Float:y, Float:z);
		CreateVehicle(522, Float:x+2, Float:y+2, Float:z+2, 120.0, 1, 2, 999999);
		return 1;
	}
	if(strcmp(cmd, "/cash", true) == 0)
	{
	    GivePlayerMoney(playerid, 600);
	    return 1;
	}
   	if(strcmp(cmd, "/rob", true) == 0)
	{
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /rob (id)");
	return 1;
	}
	new robplayerid = strval(tmp);

	if(IsPlayerConnected(robplayerid))
    {
		if(gTeam[playerid] == TEAM_RUSSIAN || TEAM_ADMIN || TEAM_CIVIL)
		{
		    if(GetDistanceBetweenPlayers(playerid, robplayerid) < 3)
			{
				if(GetPlayerMoney(robplayerid) > 0)
				{
					new robname[24];
					new robbedname[24];
					new robbed[256];
					new giveplayerid = strval(tmp);
					new RobbedMoney;
					GetPlayerName(giveplayerid, robname, 24);
					GetPlayerName(playerid, robbedname, 21);
					if(GetPlayerName(robplayerid, robname, 24) == GetPlayerName(playerid, robbedname, 24))
					{
					    SendClientMessage(playerid, COLOR_RED, "You can't rob yourself, idiot");
					}
					else
					{
						RobbedMoney = GetPlayerMoney(robplayerid);
						new Money = random(RobbedMoney);
						GivePlayerMoney(playerid, Money);
						GivePlayerMoney(robplayerid, -Money);
						format(robbed, sizeof(robbed), "%s has robbed %s", robname, robbedname);
						SendClientMessageToAll(0xFF7F50AA, robbed);
						return 1;
					}
				}
				else
				{
				    SendClientMessage(playerid, COLOR_RED, "Player hasn't any money");
				}
			}
			else
			{
			    SendClientMessage(playerid, COLOR_RED, "Player too far away");
			}
	 	}
	 	else
	 	{
   			SendClientMessage(playerid, COLOR_RED, "You can't rob players");
	    }
	}
	else
	{
		format(string, sizeof(string), "ID: %d Is not connected", robplayerid);
		SendClientMessage(playerid, 0xD2691EAA, string);
  	}
	return 1;
 	}
 	if (strcmp("/pos", cmdtext, true, 10) == 0)
	{
           new string1[256];
           new Float:X,Float:Y,Float:Z;
           GetPlayerPos(playerid,X,Y,Z);
           format(string1,sizeof(string1),"Position = X: %.0f , Y: %.0f , Z: %.0f",X,Y,Z);
           SendClientMessage(playerid,0x33FF33AA,string1);
           return 1;
		   }
   	if(strcmp(cmd, "/arrest", true) == 0 && gTeam[playerid] == TEAM_COP)
	{
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /arrest (id)");
	return 1;
	}
	new jailedplayerid = strval(tmp);

	if(IsPlayerConnected(jailedplayerid))
    {
		if(GetPlayerWantedLevel(jailedplayerid) == 5)
		{
		    if(GetDistanceBetweenPlayers(playerid, jailedplayerid) < 3)
			{
				new jailname[24];
				new adminname[24];
				new jailed[256];
				new giveplayerid = strval(tmp);
				GetPlayerName(giveplayerid, jailname, 24);
				GetPlayerName(playerid, adminname, 21);
				format(jailed, sizeof(jailed), "%s has been arrested by, %s", jailname, adminname);
				SendClientMessageToAll(0xFF7F50AA, jailed);
				SetPlayerInterior(playerid, 3);
				SetPlayerPos(jailedplayerid, 297.6376,186.0326,1007.1719);
				SendClientMessage(playerid, COLOR_RED, "You are arrested, 13 seconds untill door opens");
				SetTimerEx("Busted", 6000, 1, "i", jailedplayerid);
			}
			else
			{
			    SendClientMessage(playerid, COLOR_RED, "Player too far away");
			}
		 }
		 else
		 {
		    SendClientMessage(playerid, COLOR_RED, "This player isn't wanted");
		 }
	}
	else
	{
		format(string, sizeof(string), "ID: %d Is not connected", jailedplayerid);
		SendClientMessage(playerid, 0xD2691EAA, string);
  	}
	return 1;
 	}
	if (strcmp("/kill", cmdtext, true, 10) == 0)
	{
		SetPlayerHealth(playerid, 0.0);
		return 1;
	}
	if (strcmp("/credits", cmdtext, true, 10) == 0)
	{
	    SendClientMessage(playerid, COLOR_GREEN, "Gamemode created by Jeroen");
	    SendClientMessage(playerid, COLOR_GREEN, "Thanks to =>Sandra<=");
	    SendClientMessage(playerid, COLOR_GREEN, "Thanks to Sa-mp.com");
	    SendClientMessage(playerid, COLOR_GREEN, "Gamemode created by Jeroen");
		return 1;
	}
	if (strcmp("/wanted", cmdtext, true, 10) == 0)
	{
		{
		    SetPlayerWantedLevel(playerid, 5);
		    SetPlayerColor(playerid, COLOR_BLACK);
		}
		return 1;
	}
    GetPlayerName(playerid, playername, sizeof(playername));
    if(strcmp(cmd, "/register", true) == 0)
    {
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /register (password)");
        }
        else
        {
            if (!dini_Exists(udb_encode(playername)))
            {
                dini_Create(udb_encode(playername));
                dini_IntSet(udb_encode(playername), "password", udb_hash(tmp));
                dini_IntSet(udb_encode(playername), "money", 0);
                format(string, sizeof(string), "Account %s Created! You can now loggin with password: %s.", playername, tmp);
                SendClientMessage(playerid, COLOR_YELLOW, string);
            }
            else
            {
                format(string, sizeof(string), "%s already registered.", playername,tmp);
                SendClientMessage(playerid, COLOR_RED, string);
            }
        }
        return 1;
    }
    if(strcmp(cmd, "/login", true) == 0)
    {
        if(logged[playerid] == 1)
        {
            SendClientMessage(playerid, COLOR_RED, "You are already logged in!");
            return 1;
        }
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, COLOR_YELLOW, "Use: /login [password]");
        }
        else
        {
            if (dini_Exists(udb_encode(playername)))
            {
                tmp2 = dini_Get(udb_encode(playername), "password");
                if (udb_hash(tmp) != strval(tmp2))
                {
                    SendClientMessage(playerid, COLOR_RED, "Wrong password");
                }
                else
                {
                    KillTimer(FrozenHaha);
	   			    KillTimer(LoggedHaha);
					if(Selection[playerid] == 0)
					{
	   			    TogglePlayerControllable(playerid, 1);
	   			    }
                    frozen[playerid] = 1;
					logged[playerid] = 1;
                    money[playerid] = dini_Int(udb_encode(playername), "money");
                    format(string, sizeof(string), "%s, you are now logged in! You've got %d dollar", playername, money[playerid]);
                    SendClientMessage(playerid, COLOR_GREEN, string);
                    GivePlayerMoney(playerid, money[playerid]);
                }
            }
            else
            {
                format(string, sizeof(string), "The account %s doesn't exist yet! Create an account by using /register [password]", playername);
                SendClientMessage(playerid, COLOR_RED, string);
            }
        }
        return 1;
    }
    if(strcmp(cmd, "/adkick", true) == 0 && IsPlayerAdmin(playerid) == 1)
	{
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /adkick (id) (reason)");
	return 1;
	}
	new kickedplayerid = strval(tmp);

	if(IsPlayerConnected(kickedplayerid)) {
	new kickname[24];
	new adminname[24];
	new kicked[256];
	new giveplayerid = strval(tmp);
	GetPlayerName(giveplayerid, kickname, 24);
	GetPlayerName(playerid, adminname, 21);
	format(kicked, sizeof(kicked), "%s has been kicked by admin, %s", kickname, adminname);
	SendClientMessageToAll(0xFF7F50AA, kicked);
	Kick(kickedplayerid);
	}
	else {
	format(string, sizeof(string), "ID: %d Is not connected", kickedplayerid);
	SendClientMessage(playerid, 0xD2691EAA, string);
	}
	return 1;
	}
 	if(strcmp(cmd, "/adhugg", true) == 0 && IsPlayerAdmin(playerid) == 1)
	{
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /adhugg (id)");
	return 1;
	}
	new huggedplayerid = strval(tmp);

	if(IsPlayerConnected(huggedplayerid)) {
	new huggname[24];
	new adminname[24];
	new hugged[256];
	new giveplayerid = strval(tmp);
	GetPlayerName(giveplayerid, huggname, 24);
	GetPlayerName(playerid, adminname, 21);
	format(hugged, sizeof(hugged), "%s has been hugged by admin, %s", huggname, adminname);
	SendClientMessageToAll(0xFF7F50AA, hugged);
	GameTextForPlayer(huggedplayerid, "~p~You are hugged", 5000,6);
	GivePlayerMoney(huggedplayerid, 6000);
	}
	else {
	format(string, sizeof(string), "ID: %d Is not connected", huggedplayerid);
	SendClientMessage(playerid, 0xD2691EAA, string);
	}
	return 1;
	}

	if(strcmp(cmd, "/adban", true) == 0 && IsPlayerAdmin(playerid) == 1)
	{
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /adban (id)");
	return 1;
	}
	new bannedplayerid = strval(tmp);

	if(IsPlayerConnected(bannedplayerid)) {
	new banname[24];
	new adminname[24];
	new kicked[256];
	new giveplayerid = strval(tmp);
	GetPlayerName(giveplayerid, banname, 24);
	GetPlayerName(playerid, adminname, 21);
	format(kicked, sizeof(kicked), "%s has been kicked by admin, %s", banname, adminname);
	SendClientMessageToAll(0xFF7F50AA, kicked);
	Ban(bannedplayerid);
	}
	else {
	format(string, sizeof(string), "ID: %d Is not connected", bannedplayerid);
	SendClientMessage(playerid, 0xD2691EAA, string);
	}
	return 1;
	}
	if(strcmp(cmd, "/adfreeze", true) == 0 && IsPlayerAdmin(playerid) == 1)
	{
	new reason[256];
	reason = strtok(cmdtext, idx);
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /adfreeze (id) (reason)");
	return 1;
	}
	new frozenplayerid = strval(tmp);

	if(IsPlayerConnected(frozenplayerid)) {
	new frozenname[24];
	new adminname[24];
	new frozen1[256];
	new giveplayerid = strval(tmp);
	GetPlayerName(giveplayerid, frozenname, 24);
	GetPlayerName(playerid, adminname, 21);
	format(frozen1, sizeof(frozen1), "%s has been frozen by admin, %s with reason: %s", frozenname, adminname, reason);
	SendClientMessageToAll(0xFF7F50AA, frozen1);
	TogglePlayerControllable(frozenplayerid, 0);
	}
	else {
	format(string, sizeof(string), "ID: %d Is not connected", frozenplayerid);
	SendClientMessage(playerid, 0xD2691EAA, string);
	}
	return 1;
	}
	if(strcmp(cmd, "/adunfreeze", true) == 0 && IsPlayerAdmin(playerid) == 1)
	{
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /adunfreeze (id)");
	return 1;
	}
	new unfrozenplayerid = strval(tmp);

	if(IsPlayerConnected(unfrozenplayerid)) {
	new unfrozenname[24];
	new adminname[24];
	new unfrozen[256];
	new giveplayerid = strval(tmp);
	GetPlayerName(giveplayerid, unfrozenname, 24);
	GetPlayerName(playerid, adminname, 21);
	format(unfrozen, sizeof(unfrozen), "%s has been unfrozen by admin, %s", unfrozenname, adminname);
	SendClientMessageToAll(0xFF7F50AA, unfrozen);
	TogglePlayerControllable(unfrozenplayerid, 1);
	}
	else {
	format(string, sizeof(string), "ID: %d Is not connected", unfrozenplayerid);
	SendClientMessage(playerid, 0xD2691EAA, string);
	}
	return 1;
	}
	if(strcmp(cmd, "/adblow", true) == 0 && IsPlayerAdmin(playerid) == 1)
	{
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /adblow (id)");
	return 1;
	}
	new blowenplayerid = strval(tmp);

	if(IsPlayerConnected(blowenplayerid)) {
	new blowenname[24];
	new adminname[24];
	new blowen[256];
	new giveplayerid = strval(tmp);
	GetPlayerName(giveplayerid, blowenname, 24);
	GetPlayerName(playerid, adminname, 21);
	format(blowen, sizeof(blowen), "%s has been blowen by admin, %s", blowenname, adminname);
	SendClientMessageToAll(0xFF7F50AA, blowen);
	new Float:x, Float:y, Float:z;
	GetPlayerPos(playerid, Float:x, Float:y, Float:z);
	CreateExplosion(Float:x, Float:y, Float:z, 9, 0);
	CreateExplosion(Float:x, Float:y, Float:z, 9, 0);
	CreateExplosion(Float:x, Float:y, Float:z, 9, 0);
	CreateExplosion(Float:x, Float:y, Float:z, 9, 0);
	}
	else {
	format(string, sizeof(string), "ID: %d Is not connected", blowenplayerid);
	SendClientMessage(playerid, 0xD2691EAA, string);
	}
	return 1;
	}
	if(strcmp(cmd, "/adpwn", true) == 0 && IsPlayerAdmin(playerid) == 1)
	{
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /adpwn (id)");
	return 1;
	}
	new pwnplayerid = strval(tmp);

	if(IsPlayerConnected(pwnplayerid)) {
	new pwnname[24];
	new adminname[24];
	new pwn[256];
	new giveplayerid = strval(tmp);
	GetPlayerName(giveplayerid, pwnname, 24);
	GetPlayerName(playerid, adminname, 21);
	format(pwn, sizeof(pwn), "%s has been pwned by admin, %s", pwnname, adminname);
	SendClientMessageToAll(0xFF7F50AA, pwn);
	SetPlayerHealth(pwnplayerid, 0.0);
	GameTextForPlayer(pwnplayerid, "PWNED!", 5000, 1);
	}
	else {
	format(string, sizeof(string), "ID: %d Is not connected", pwnplayerid);
	SendClientMessage(playerid, 0xD2691EAA, string);
	}
	return 1;
	}
	if(strcmp(cmd, "/disarm", true) == 0 && IsPlayerAdmin(playerid) == 1)
	{
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /disarm (id)");
	return 1;
	}
	new disarmedplayerid = strval(tmp);

	if(IsPlayerConnected(disarmedplayerid)) {
	new disarmedname[24];
	new adminname[24];
	new disarmed[256];
	new giveplayerid = strval(tmp);
	GetPlayerName(giveplayerid, disarmedname, 24);
	GetPlayerName(playerid, adminname, 21);
	format(disarmed, sizeof(disarmed), "%s has been disarmed by admin, %s", disarmedname, adminname);
	SendClientMessageToAll(0xFF7F50AA, disarmed);
	ResetPlayerWeapons(disarmedplayerid);
	}
	else {
	format(string, sizeof(string), "ID: %d Is not connected", disarmedplayerid);
	SendClientMessage(playerid, 0xD2691EAA, string);
	}
	return 1;
	}
	if(strcmp(cmd, "/reset", true) == 0 && IsPlayerAdmin(playerid) == 1)
	{
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /reset (id)");
	return 1;
	}
	new resettenplayerid = strval(tmp);

	if(IsPlayerConnected(resettenplayerid)) {
	new resetname[24];
	new adminname[24];
	new resetten[256];
	new giveplayerid = strval(tmp);
	GetPlayerName(giveplayerid, resetname, 24);
	GetPlayerName(playerid, adminname, 21);
	format(resetten, sizeof(resetten), "Account: %s has been resetten by admin, %s", resetname, adminname);
	SendClientMessageToAll(0xFF7F50AA, resetten);
	ResetPlayerWeapons(resettenplayerid);
	ResetPlayerMoney(resettenplayerid);
	SetPlayerHealth(resettenplayerid, 100.0);
	SetPlayerArmour(resettenplayerid, 0.0);
	SetPlayerScore(resettenplayerid, 0);
	}
	else {
	format(string, sizeof(string), "ID: %d Is not connected", resettenplayerid);
	SendClientMessage(playerid, 0xD2691EAA, string);
	}
	return 1;
	}
    if(strcmp(cmd, "/goto", true) == 0 && IsPlayerAdmin(playerid) == 1)
	{
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /goto (id)");
	return 1;
	}
	new gotoplayerid = strval(tmp);

	if(IsPlayerConnected(gotoplayerid)) {
	new gotoname[24];
	new typedname[24];
	new adminname[24];
	new giveplayerid = strval(tmp);
	GetPlayerName(playerid, typedname, 24);
	GetPlayerName(giveplayerid, gotoname, 24);
	GetPlayerName(playerid, adminname, 21);
 	new Float:x, Float:y, Float:z;
 	GetPlayerPos(gotoplayerid, Float:x, Float:y, Float:z);
 	SetPlayerPos(playerid, Float:x, Float:y, Float:z);
	}
	else {
	format(string, sizeof(string), "ID: %d Is not connected", gotoplayerid);
	SendClientMessage(playerid, 0xD2691EAA, string);
	}
	return 1;
	}
	if(strcmp(cmd, "/bring", true) == 0 && IsPlayerAdmin(playerid) == 1)
	{
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)){
	SendClientMessage(playerid, 0xD2691EAA, "USAGE: /bring (id)");
	return 1;
	}
	new bringplayerid = strval(tmp);

	if(IsPlayerConnected(bringplayerid)) {
	new bringname[24];
	new typedname[24];
	new adminname[24];
	new giveplayerid = strval(tmp);
	GetPlayerName(playerid, typedname, 24);
	GetPlayerName(giveplayerid, bringname, 24);
	GetPlayerName(playerid, adminname, 21);
 	new Float:x, Float:y, Float:z;
 	GetPlayerPos(playerid, Float:x, Float:y, Float:z);
 	SetPlayerPos(bringplayerid, Float:x, Float:y, Float:z);
	}
	else {
	format(string, sizeof(string), "ID: %d Is not connected", bringplayerid);
	SendClientMessage(playerid, 0xD2691EAA, string);
	}
	return 1;
	}
	if(strcmp(cmd, "/say", true) == 0 && IsPlayerAdmin(playerid) == 1)
	  {
      if(cmdtext[5] == 0) {
      SendClientMessage(playerid, 0xFF0000FF, "USAGE: /say [action]");
      return 1;
      }
      new str[128];
      GetPlayerName(playerid, str, sizeof(str));
      format(str, sizeof(str), "*Admin %s says: %s", str, cmdtext[5]);
      SendClientMessageToAll(0x48D1CCAA, str);
   	  return 1;
  	  }
	if(strcmp(cmd, "/adan", true) == 0 && IsPlayerAdmin(playerid) == 1)
      {
      if(cmdtext[5] == 0) {
      SendClientMessage(playerid, 0xFF0000FF, "USAGE: /adan [text]");
      return 1;
      }
      new str[128];
	  format(str, sizeof(str), "*Admin %s says: %s", str, cmdtext[5]);
   	  return 1;
  	  }
	new playermoney;
	new sendername[MAX_PLAYER_NAME];
	new giveplayer[MAX_PLAYER_NAME];
	new giveplayerid, moneys;
	if(strcmp(cmd, "/givecash", true) == 0) {
		tmp = strtok(cmdtext, idx);

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

		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_RED, "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 (id: %d), $%d.", giveplayer,giveplayerid, moneys);
				SendClientMessage(playerid, COLOR_YELLOW, string);
				format(string, sizeof(string), "You have recieved $%d from %s (id: %d).", moneys, sendername, playerid);
				SendClientMessage(giveplayerid, COLOR_YELLOW, string);
			}
			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;
	}
    return 0;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
TogglePlayerControllable(playerid, 1);
new Menu:Current = GetPlayerMenu(playerid);

if (Current == RulesMenu)
{
switch(row) {
case 0: {ShowMenuForPlayer(Rules, playerid); TogglePlayerControllable(playerid, 0);}
case 1: {TogglePlayerControllable(playerid, 1); read[playerid] = 1;}
case 2: {Kick(playerid);}
}
}
if (Current == Rules)
{
switch(row) {
case 0: {ShowMenuForPlayer(RulesMenu, playerid); TogglePlayerControllable(playerid, 0);}
}
}
return 1;
}

public OnPlayerExitedMenu(playerid)
{
new Menu:Current = GetPlayerMenu(playerid);
if (Current == RulesMenu || Rules)
{
TogglePlayerControllable(playerid, 0);
ShowMenuForPlayer(RulesMenu, playerid);
}

else {
TogglePlayerControllable(playerid, 0);
}

return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    money[playerid] = GetPlayerMoney(playerid);
    dini_IntSet(udb_encode(playername), "money", money[playerid]);
    logged[playerid] = 0;
    return 1;
}
public LoggedIn(playerid)
{
		if(logged[playerid] == 0)
		{
			TogglePlayerControllable(playerid, false);
			GameTextForPlayer(playerid, "/login [password] before spawning!", 2000, 1);
		}
}
public FrozenIn(playerid)
{
		if(frozen[playerid] == 1 && logged[playerid] == 1)
		{
			TogglePlayerControllable(playerid, true);
			KillTimer(LoggedHaha && FrozenHaha);
		}
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	SendClientMessage(playerid, COLOR_GREY, "You are now driving a vehicle");
	return 1;
}
stock GetDistanceBetweenPlayers(playerid, otherplayer)
{
    new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2;
    new Float:tmpdis;
    GetPlayerPos(playerid, x1, y1, z1);
    GetPlayerPos(otherplayer, x2, y2, z2);
    tmpdis = floatsqroot(floatpower(floatabs(floatsub(x2, x1)), 2) + floatpower(floatabs(floatsub(y2, y1)), 2) + floatpower(floatabs(floatsub(z2, z1)), 2));
    return floatround(tmpdis);
}
public Kidnap(playerid)
{
	KillTimer(KidnapTimer);
	TogglePlayerControllable(playerid, 1);
}
public Door2(playerid)
{
	SetPlayerObjectRot(playerid, Door, 0.0, 0.0, 0.0);
}
public Busted(playerid)
{
	SetPlayerObjectRot(playerid, Door, 0.0, 180.0, 0.0);
	SetTimer("Door2", 5000, 0);
}
public LCS_OnPlayerEnterCheckpoint(playerid,checkpointid) {
switch (checkpointid) {
case 0: { SendClientMessage(playerid,COLOR_GREEN,"1 check ENTER"); }
case 1: { SendClientMessage(playerid,COLOR_GREEN,"2 check ENTER"); }
case 2: { SendClientMessage(playerid, COLOR_GREEN, "Test"); }
}
return 1;
}

public LCS_OnPlayerLeaveCheckpoint(playerid,checkpointid) {
switch (checkpointid) {
case 0: { SendClientMessage(playerid,COLOR_GREEN,"1 check LEAVE"); }
case 1: { SendClientMessage(playerid,COLOR_GREEN,"2 check LEAVE"); }
case 2: { SendClientMessage(playerid,COLOR_GREEN,"3 check LEAVE"); }
}
return 1;
}