All pastes #914906 Raw Edit

Someone

public text v1 · immutable
#914906 ·published 2008-02-23 09:14 UTC
rendered paste body
#include <a_samp>
#include <float>
#include <core>
#include <dudb>

#define TEAM_PM_MINISTER 1
#define TEAM_TERRORIST 2
#define TEAM_BODYGUARD 3

#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_PINK 0xFF66FFAA
#define COLOR_GREY 0xAFAFAFAA
#define OBJECTIVE_COLOR 0xFFFF00AA
#define COLOR_RED  0xCD5C5CAA
#define COLOR_LIGHTBLUE 0x48D1CCAA
#define COLOR_BLACK 0x000000AA
#define COLOR_ERROR 0x800000AA
#define COLOR_GREEN 0x00FF00AA

static gTeam[MAX_PLAYERS];
new PMTaken=0;
new logged[MAX_PLAYERS];
new adminlevel[MAX_PLAYERS];
new money[MAX_PLAYERS];
new playername[MAX_PLAYER_NAME];
//forwards----------------------------------------------------------------------
forward SetPlayerToTeamColor(playerid);
forward SetupPlayerForClassSelection(playerid);
forward SetPlayerTeamFromClass(playerid,classid);
forward ExitTheGameMode();
//main--------------------------------------------------------------------------
main()
{
    print("\n----------------------------------");
    print("  PTPM by Jeroen\n");
    print("----------------------------------\n");
}
//OnGameModeInit----------------------------------------------------------------
public OnGameModeInit()
{
    SetGameModeText("Protect the Prime Minister!");
    SetWorldTime(12);
    ShowNameTags(1);
    ShowPlayerMarkers(1);

    AddStaticVehicle(522,1452.0675,-1026.3822,23.3920,182.9263,6,25); // NRG500PmlocBike
    AddStaticVehicle(522,1456.3346,-1025.3716,23.3999,180.5356,6,25); // NRG500 Pmloc bike
	AddStaticVehicle(522,1118.2413,-1474.4971,15.3594,0.0000,6,25); // terroristlocnrg500
    AddStaticVehicle(522,1116.0920,-1474.0149,15.3677,356.7872,6,25); // terroristlocnrg500 2
    AddStaticVehicle(522,1113.4436,-1475.1360,15.3676,0.7135,6,25); // terroristlocnrg500 3
    AddPlayerClass(113,1460.8209,-1013.0995,26.8438,181.2402,9,1,23,500,26,500); // pm loc
	AddPlayerClass(48,1128.0642,-1483.2211,22.7690,359.9126,9,1,23,500,26,500); // Terrorist Loc
    AddPlayerClass(73,1128.0642,-1483.2211,22.7690,359.9126,9,1,23,500,26,500); // Terrorist Loc
    AddPlayerClass(121,1460.8209,-1013.0995,26.8438,181.2402,9,1,23,500,26,500); //bodyguard
    AddPlayerClass(147,1460.8209,-1013.0995,26.8438,181.2402,9,1,23,500,26,500); //bodyguard
    AddPlayerClass(124,1460.8209,-1013.0995,26.8438,181.2402,9,1,23,500,26,500); //bodyguard
    return 1;
}
//OnPlayerConnect---------------------------------------------------------------
public OnPlayerConnect(playerid)
{
	logged[playerid] = 0;
	if(logged[playerid] == 0)
	{
	SetTimer("KickNotLoggedIn", 13000, 0);
	SendClientMessage(playerid, COLOR_GREEN, "You first have to /login [password], Please, Time left before kick: 13 seconds");
	}
	if(logged[playerid] == 1)
	{
	SendClientMessage(playerid, COLOR_GREEN, "You are now logged in, have fun");
    KillTimer(2);
	}
	SetPlayerColor(playerid,COLOR_GREY);
    GameTextForPlayer(playerid,"~r~Protect The Prime Minister!",2000,5);
	return 1;
}
//SetupPlayerForClassSelection--------------------------------------------------
public SetupPlayerForClassSelection(playerid)
{
    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,1297.3607,-993.8829,148.6437);
    SetPlayerCameraPos(playerid,1292.3607,-998.8829,148.6437);
    SetPlayerCameraLookAt(playerid,1297.3607,-993.8829,148.6437);
    SetPlayerFacingAngle(playerid,91.5127);
}
//SetPlayerTeamFromClass--------------------------------------------------------
public SetPlayerTeamFromClass(playerid,classid)
{
	if((gTeam[playerid] = TEAM_PM_MINISTER)&&(PMTaken== 1)) GameTextForPlayer(playerid,"Prime Minister already taken",2500,1);
	if(classid == 0) {
        gTeam[playerid] = TEAM_PM_MINISTER;
    } else if(classid == 1 || classid == 2) {
        gTeam[playerid] = TEAM_TERRORIST;
    } else if(classid == 3 || classid == 4 || classid == 5) {
        gTeam[playerid] = TEAM_BODYGUARD;
	}
}
//SetPlayerToTeamColor----------------------------------------------------------
public SetPlayerToTeamColor(playerid)
{
    if(gTeam[playerid] == TEAM_PM_MINISTER) {
        SetPlayerColor(playerid,0xFF66FFAA);
    } else if(gTeam[playerid] == TEAM_TERRORIST) {
        SetPlayerColor(playerid,0xFFFF00AA);
    } else if(gTeam[playerid] == TEAM_BODYGUARD) {
        SetPlayerColor(playerid,0x00FF00AA);
    }
}
//OnPlayerRequestclass----------------------------------------------------------
public OnPlayerRequestClass(playerid, classid)
{
    SetupPlayerForClassSelection(playerid);
    SetPlayerTeamFromClass(playerid,classid);

	if(classid == 0) {
        GameTextForPlayer(playerid,"~y~Prime Minister",1000,5);
    } else if(classid == 1 || classid == 2) {
        GameTextForPlayer(playerid,"~r~Terrorist",1000,5);
    } else if(classid == 3 || classid == 4 || classid == 5) {
        GameTextForPlayer(playerid,"~g~Bodyguard",1000,5);
	}
}
//OnPlayerSpawn-----------------------------------------------------------------
public OnPlayerSpawn(playerid)
{
    if(logged[playerid] == 0)
    {
		SetTimer("KickNotLoggedIn", 13000, 0);
		SendClientMessage(playerid, COLOR_RED, "You aren't logged in yet! Login with /login Passwordhere !");
	}
	if(logged[playerid] == 1)
    {
		KillTimer(2);
		SendClientMessage(playerid, COLOR_GREEN, "You are now logged in, have fun :D");
	}
    SetPlayerTeamFromClass(playerid, GetPlayerSkin(playerid));
    SetPlayerToTeamColor(playerid);
    SetPlayerInterior(playerid,0);
    if(gTeam[playerid] == TEAM_PM_MINISTER)
    {
        GameTextForPlayer(playerid,"Avoid the Terrorists!", 6000,5);
    }
    else if(gTeam[playerid] == TEAM_TERRORIST)
    {
        GameTextForPlayer(playerid,"Kill the ~y~Minister!", 6000,5);
    }
    else if(gTeam[playerid] == TEAM_BODYGUARD)
    {
        GameTextForPlayer(playerid,"Defend the Minister!", 6000,5);
    }
    if((PMTaken==0)&&(gTeam[playerid] == TEAM_PM_MINISTER)) PMTaken = 1;
    if((gTeam[playerid] == TEAM_PM_MINISTER)&&(PMTaken==1)) return 0;
	return 1;
}
//ExitTheGameMode---------------------------------------------------------------
public ExitTheGameMode()
{
    GameModeExit();
}
//OnPlayerDeath-----------------------------------------------------------------
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(OBJECTIVE_COLOR, 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(OBJECTIVE_COLOR, 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);
        }
    }

	new string[256];
    new pname[MAX_PLAYER_NAME];

    GetPlayerName(playerid,pname,MAX_PLAYER_NAME);
    if(gTeam[playerid] == TEAM_PM_MINISTER) {
    if(gTeam[killerid] == TEAM_TERRORIST) {
    format(string,sizeof(string),"The Prime Minister was killed by a Terrorist! (%s)",pname);  }
    else if(gTeam[killerid] == TEAM_BODYGUARD) {
    format(string,sizeof(string),"The Prime Minister has been teamkilled! (%s)",pname); }
    else if(gTeam[killerid] == INVALID_PLAYER_ID) {
    format(string,sizeof(string),"The Prime Minister is dead, Finaly -.- , Cya next round xD (%s)",pname); }
	GameTextForAll(string,5000,1);
    GameModeExit(); }
	return 1;
}
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Blank Filterscript by your name here");
	print("--------------------------------------\n");
	return 1;
}


public OnGameModeExit()
{
	SendClientMessage(playerid, COLOR_GREEN, "Cya m8, tnx for playing");
	return 1;
}

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

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnPlayerConnect(playerid)
{
	return 1;
}


public OnPlayerDisconnect(playerid, reason)
{
    return 1;
}
public OnPlayerSpawn(playerid)
{
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	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 pname[MAX_PLAYER_NAME], string[256];
    GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
	new cmd[256],tmp[256], tmp2[256];
    new idx;
    new string[256];
    cmd = strtok(cmdtext, idx);
    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), "adminlevel", 0);
                dini_IntSet(udb_encode(playername), "money", 0);
                format(string, sizeof(string), "Account %s Created! You can now login with password: %s.", playername, tmp);
                SendClientMessage(playerid, COLOR_YELLOW, string);
            }
            else
            {
                format(string, sizeof(string), "%s Allready 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 allready logged in!");
            return 1;
        }
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, COLOR_YELLOW, "Use: /login Passwordhere");
        }
        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 :/ ffs!.");
                }
                else
                {
                    logged[playerid] = 1;
                    money[playerid] = dini_Int(udb_encode(playername), "money");
                    adminlevel[playerid] = dini_Int(udb_encode(playername), "adminlevel");
                    format(string, sizeof(string), "%s, Your now logged in!. You have adminlevel %d And have %d dollar", playername, adminlevel[playerid], money[playerid]);
                    SendClientMessage(playerid, COLOR_GREEN, string);
                    GivePlayerMoney(playerid, money[playerid]);
                }
            }
            else
            {
                format(string, sizeof(string), "The account %s, doesn't exit yet. Typ /register Passwordhere to create an account!", playername);
                SendClientMessage(playerid, COLOR_RED, string);
            }
        }
        return 1;
    }
    if(strcmp(cmd,"/kick",true) == 0)
	{
	    GetPlayerName(playerid, sendername, sizeof(sendername));
	    PlayerInfo[playerid][pAdmin] = dini_Int(udb_encode(sendername), "level");
	    tmp = strtok(cmdtext, idx);
	    GetPlayerName(playerid, sendername, sizeof(sendername));
		if(!strlen(tmp))
		{
			SendClientMessage(playerid,COLOR_BLUE, "Correct Usage: /kick [id] [reason]");
			return 1;
		}
        giveplayerid = strval(tmp);
		giveplayerid = strval(tmp);
		if(logged[playerid] == 1)
		{
			if(PlayerInfo[playerid][pAdmin] >= 1)
			{
				if(IsPlayerConnected(giveplayerid))
				{
					new length = strlen(cmdtext);
					while ((idx < length) && (cmdtext[idx] <= ' ')) {
					idx++;
					}
					new offset = idx;
					new result[64];
					while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) {
					result[idx - offset] = cmdtext[idx];
					idx++;
					}
					result[idx - offset] = EOS;
					if(!strlen(result))
					{
						result = "No reason";
					}
					GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
					format(string, sizeof(string), "***ADMIN KICK***: %s was kicked by admin %s for: %s", giveplayer, sendername, result);
					SendClientMessageToAll(COLOR_BLUE, string);
					Kick(giveplayerid);
					new PlayerName[30];
					GetPlayerName(playerid, PlayerName, 30);
					printf("[Command] %s has used /kick to kick %s for: %s", PlayerName, giveplayer, result);
				}
				else
				{
				    format(string, sizeof(string), "%d is not an active player.", giveplayerid);
					SendClientMessage(playerid, COLOR_RED, string);
				}
			}
			else
			{
				SendClientMessage(playerid, COLOR_RED, "You do not have permission to use that command!");
			}
		}
		else
		{
		    SendClientMessage(playerid, COLOR_RED, "You Must be logged in to use this command!");
		}
		return 1;
	}
	return 0;
}
strtok( const string[], &index, const seperator[] = " " )
{
	new
		index2,
		result[ 30 ];

	index2 =  strfind(string, seperator, false, index);


	if(index2 == -1)
	{
		if(strlen(string) > index)
		{
			strmid(result, string, index, strlen(string), 30);
			index = strlen(string);
		}
		return result; // This string is empty, probably, if index came to an end
	}
	if(index2 > (index + 29))
	{
		index2 = index + 29;
		strmid(result, string, index, index2, 30);
		index = index2;
		return result;
	}
	strmid(result, string, index, index2, 30);
	index = index2 + 1;
	return result;
}

	public UnJailPlayer(playerid) {
	SpawnPlayer(playerid);
	return 1;
	}
	public KickNotLoggedIn(playerid) {
	Kick(playerid);
	return 1;
	}
#endif