#include #include #include #include #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