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 Primier 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)
{
SetPlayerColor(playerid,COLOR_GREY);
GameTextForPlayer(playerid,"~r~Protect The Premier Minister!",2000,5);
logged[playerid] = 0;
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(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;
}
if((gTeam[playerid] = TEAM_PM_MINISTER)&&(PMTaken==1)) GameTextForPlayer(playerid,"PM already taken",2500,1);
}
//SetPlayerToTeamColor----------------------------------------------------------
public SetPlayerToTeamColor(playerid)
{
if(gTeam[playerid] == TEAM_PM_MINISTER) {
SetPlayerColor(playerid,COLOR_YELLOW);
} else if(gTeam[playerid] == TEAM_TERRORIST) {
SetPlayerColor(playerid,COLOR_PINK);
} else if(gTeam[playerid] == TEAM_BODYGUARD) {
SetPlayerColor(playerid,COLOR_GREEN);
}
}
//OnPlayerRequestclass----------------------------------------------------------
public OnPlayerRequestClass(playerid, classid)
{
SetupPlayerForClassSelection(playerid);
SetPlayerTeamFromClass(playerid,classid);
if(classid == 0) {
GameTextForPlayer(playerid,"~y~PM",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);
}
return 1;
}
//OnPlayerSpawn-----------------------------------------------------------------
public OnPlayerSpawn(playerid)
{
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;
if(logged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_RED, "Je bent nog niet ingelogd! Gebruik /login [wachtwoord]!");
}
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 PM was killed by a Terrorist! (%s)",pname); }
else if(gTeam[killerid] == TEAM_BODYGUARD) {
format(string,sizeof(string),"The PM has been teamkilled! (%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()
{
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 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 aangemaakt! Je kunt nu inloggen met het wachtwoord: %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, "Je bent al ingelogd");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_YELLOW, "Gebruik: /login (wachtwoord)");
}
else
{
if (dini_Exists(udb_encode(playername)))
{
tmp2 = dini_Get(udb_encode(playername), "password");
if (udb_hash(tmp) != strval(tmp2))
{
SendClientMessage(playerid, COLOR_RED, "Verkeerd wachtwoord!.");
}
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, je bent nu ingelogd. Je hebt adminlevel %d en je hebt %d dollar", playername, adminlevel[playerid], money[playerid]);
SendClientMessage(playerid, COLOR_GREEN, string);
GivePlayerMoney(playerid, money[playerid]);
}
}
else
{
format(string, sizeof(string), "Het account %s, bestaat nog niet. Typ /register [wachtwoord] om een account te maken.", playername);
SendClientMessage(playerid, COLOR_RED, string);
}
}
return 1;
}
if(strcmp(cmd, "/maakmijadmin", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
if(logged[playerid] == 1)
{
if(adminlevel[playerid] != 3)
{
adminlevel[playerid] = 3;
SendClientMessage(playerid, COLOR_GREEN, "Je bent nu hoofdadmin! Gefeliciteerd!");
}
else
{
SendClientMessage(playerid, COLOR_RED, "Je bent al hoofdadmin!");
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Je moet je eerst inloggen /login [wachtwoord]");
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Je moet je eerst met rcon inloggen! (/rcon login [rcon-pass])");
}
return 1;
}
return 0;
}
#endif