// Prison Break GM 0.1b // Coded by Chiarboss // ©2007 // Dont edit code or part of it without my permission // To get permission contact: marco.chiarelli@hotmail.it #include #pragma tabsize 0 static gTeam[MAX_PLAYERS]; new score1=0; new score2=0,scoredex=0; new nplayers=0; new randCHECK; new gPlayerCheckpointStatus[MAX_PLAYERS]; enum PlayerSpawnInfo { Float:PlayerX, Float:PlayerY, Float:PlayerZ, Float:PlayerAngle } enum CheckpointSpawnInfo { Float:CheckX, Float:CheckY, Float:CheckZ, } new Float:gRandomSpawns[][PlayerSpawnInfo] = { {294.9862,182.8244,1007.1719,176.6981}, {291.1122,168.0318,1007.1794,5.1582}, {232.1261,162.4986,1003.0234,271.0125}, {236.7538,139.3263,1003.0234,356.0715}, {208.7920,146.8226,1003.0234,178.8916}, {214.3057,168.2244,1003.0234,174.2150}, {215.8343,183.1265,1003.0313,179.8550}, {210.7516,179.6956,1003.0378,264.9141}, {209.8513,159.1564,1003.0234,264.6241} }; new gRandomCheckpoints[][CheckpointSpawnInfo] = { {2178.2871,2293.3889,10.8203}, {2211.6868,2327.3047,10.8203}, {2127.5640,2371.0303,10.8203}, {2359.0493,2323.0769,8.1406}, {2193.5957,2472.7678,10.8203}, {2281.6025,2432.7834,-7.4531}, {2384.4941,2470.2891,10.8203}, {2298.8030,2574.9543,10.8227}, {2389.2944,2692.3281,11.0156}, {2491.6633,2773.0374,10.8001}, {2243.6897,2727.8953,10.8203}, {2413.5327,2815.1245,10.8203}, {2526.1074,2537.0901,10.8203}, {2407.4429,2551.1665,21.8750} }; new gRandomWeapons[]={25,26,27,28,29,32}; //colori #define COLOR_GREY 0xAFAFAFAA #define COLOR_GREEN 0x33AA33AA #define COLOR_YELLOW 0xFFFF00AA #define COLOR_BLUE 0x1111AAFF #define COLOR_PINK 0xFF66FFAA #define COLOR_LIGHTBLUE 0x33CCFFAA #define COLOR_DARKRED 0x660000AA #define COLOR_ORANGE 0xFF9900AA #define COLOR_RED 0xAA3333AA #define TEAM_EVA 1 #define TEAM_POLICE 2 #define CHECK_SHOP 1 #define CHECK_REMORA 2 #define WARNING "You dont have enough money! Kill to earn and come back!" //------------------------------------------------------------------------- new tk[MAX_PLAYERS]; new consecutive[MAX_PLAYERS]; new st; new inarmory[MAX_PLAYERS],armory,Menu:gMenu; new briefing[MAX_PLAYERS],superbriefing[MAX_PLAYERS],briefingex,remora[MAX_PLAYERS]; new invehicle[MAX_PLAYERS],inshop[MAX_PLAYERS]; new removev[MAX_PLAYERS],removep[MAX_PLAYERS]; new gRoundTimer,DMTime; //------------------------------------------------------------------------- forward DMTimer(); forward ExitVehicle(playerid); forward GameModeExitFunc(); //------------------------------------------------------------------------- main() { print("\nLoaded Prison Break GM 0.1\n"); } //------------------------------------------------------------------------- public OnGameModeInit() { st = 0; armory = 1; briefingex = 1; AllowInteriorWeapons(1); UsePlayerPedAnims(); SetGameModeText("Prison Break GM 0.1b"); ShowPlayerMarkers(1); ShowNameTags(1); DMTime = 1200; gRoundTimer = SetTimer("DMTimer", 900, 1); SetTimer("showkills",600000,0); AddStaticVehicle(598,2313.8635,2485.2583,3.0189,89.5957,0,1); AddStaticVehicle(598,2250.9019,2431.3232,3.0195,357.9146,0,1); AddStaticVehicle(598,2307.7917,2430.6523,-7.7086,358.7066,0,1); AddStaticVehicle(598,2303.3462,2430.6445,-7.7064,358.8187,0,1); AddStaticVehicle(427,2299.1582,2460.2100,3.4052,269.4389,0,1); AddStaticVehicle(427,2313.7556,2494.6633,-7.3212,90.2865,0,1); AddStaticVehicle(601,2228.5059,2458.8682,-7.6945,134.8329,1,1); AddStaticVehicle(432,2290.2031,2412.6062,10.5861,230.7378,1,1); AddStaticVehicle(433,2273.7000,2445.0596,10.9522,0.2772,4,4); AddStaticVehicle(433,2260.5081,2476.4238,10.9522,179.1590,4,4); AddStaticVehicle(497,2295.7390,2434.4946,47.1543,90.9098,0,1); AddStaticVehicle(417,2264.1208,2453.2156,47.1533,180.8143,11,6); AddStaticVehicle(522,2476.8210,2530.5593,21.4514,356.5124,8,82); AddStaticVehicle(506,2352.9023,2577.9810,10.5331,0.4087,7,7); //AddStaticVehicle(487,2359.0356,2412.9688,10.7050,269.5229,-1,-1); AddPlayerClass(0,189.0006,178.6303,1003.0234,269.5417,0,0,0,0,0,0); AddPlayerClass(104,193.6156,178.7599,1003.0234,271.6625,0,0,0,0,0,0); AddPlayerClass(247,189.9293,158.7564,1003.0234,272.2658,0,0,0,0,0,0); AddPlayerClass(248,196.7741,158.9106,1003.0234,267.8791,0,0,0,0,0,0); AddPlayerClass(282,0.0,0.0,0.0,0.0,0,0,0,0,0,0); AddStaticPickup(349, 15, 221.1082,170.7055,1003.0234); AddStaticPickup(342, 15, 215.3978,182.2558,1003.0313); AddStaticPickup(342, 15, 212.5045,182.3825,1003.0313); AddStaticPickup(346, 15, 208.8048,146.3170,1003.0234); AddStaticPickup(335, 15, 211.5125,146.6538,1003.0234); AddStaticPickup(358, 15, 2261.2910,2435.0044,46.9766); AddStaticPickup(358, 15, 2260.8521,2456.4946,46.9766); gMenu = CreateMenu("LVPD Shop",2, 200.0, 125.0, 220.0, 50.0); SetMenuColumnHeader(gMenu,0,"Element"); SetMenuColumnHeader(gMenu,1,"Price"); AddMenuItem(gMenu,0,"100-hp"); AddMenuItem(gMenu,0,"Armour"); AddMenuItem(gMenu,0,"Cshotgun"); AddMenuItem(gMenu,0,"AK47"); AddMenuItem(gMenu,0,"Rifle"); AddMenuItem(gMenu,0,"Molotov"); AddMenuItem(gMenu,0,"RPG"); AddMenuItem(gMenu,1,"1000$"); AddMenuItem(gMenu,1,"1200$"); AddMenuItem(gMenu,1,"2000$"); AddMenuItem(gMenu,1,"4500$"); AddMenuItem(gMenu,1,"5000$"); AddMenuItem(gMenu,1,"7200$"); AddMenuItem(gMenu,1,"10000$"); SetWorldTime(20); Checkpoint(); return 1; } //------------------------------------------------------------------------- stock Checkpoint() { randCHECK = random(sizeof(gRandomCheckpoints)); return; } //------------------------------------------------------------------------- public DMTimer() { new tmp[256]; if(DMTime != 0.0) { DMTime --; format(tmp, sizeof tmp, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~y~%s", TimeConvert(DMTime)); } else { CheckScore(); return 1; } if(DMTime == 900) { for(new i=0; i= price) { ResetVariables(playerid); if(row == 0) { SetPlayerHealth(playerid,100); format(stringshop,sizeof(stringshop),"- %s recharged his healthbar for 1000$ -",name); SendClientMessageToAll(0xFF8A00AA,stringshop); return 1; } else if(row == 1) { SetPlayerArmour(playerid,100); format(stringshop,sizeof(stringshop),"- %s bought a Beretta Armour for 1200$ -",name); SendClientMessageToAll(0xFF8A00AA,stringshop); return 1; } }else{return SendClientMessage(playerid,COLOR_RED,WARNING),ShowMenuForPlayer(gMenu,playerid);} if(GetPlayerMoney(playerid) >= price) { ResetVariables(playerid); GivePlayerMoney(playerid,-price); GivePlayerWeapon(playerid,weapon,wguns); format(stringshop,sizeof(stringshop),"- %s bought a %s for %d$ -",name,wname,price); for(new i=0; i= 2) { TogglePlayerControllable(playerid,0); removev[playerid] = SetTimerEx("ExitVehicle", 30000, 0, "d", playerid); invehicle[playerid] = 1; GetPlayerName(playerid,name, sizeof(name)); format(string, sizeof(string), "- Welcome to SWAT Van Shop, %s; -", name); SendClientMessage(playerid, 0xFF8A00AA, string); SendClientMessage(playerid,0xFF8A00AA,"Type (/v)shop for view the weapons availables"); SendClientMessage(playerid,COLOR_RED,"Type /exit for exit from the Vehicle Shop."); } else { RemovePlayerFromVehicle(playerid); GameTextForPlayer(playerid,"~n~~b~You ~w~dont have ~b~enough points! ~w~Kill to earn and ~b~come back!",3000,3); } } else { GivePlayerWeapon(playerid,gRandomWeapons[randSHOP],550); } } } printf("OnPlayerStateChange(%d, %d, %d)", playerid, newstate, oldstate); return 1; } //------------------------------------------------------------------------- public ExitVehicle(playerid) { if(invehicle[playerid] == 1) { invehicle[playerid] = 0; KillTimer(removev[playerid]); TogglePlayerControllable(playerid,1); RemovePlayerFromVehicle(playerid); SendClientMessage(playerid, 0xFF8A00AA, "You got removed from SWAT Van! Dont use it like a n00b!"); } else if(inshop[playerid] == 1) { ResetVariables(playerid); } return 1; } //------------------------------------------------------------------------- public OnPlayerInteriorChange(playerid,newinteriorid,oldinteriorid) { new string[256],name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); if(oldinteriorid == 3 && newinteriorid == 0) { format(string,sizeof(string),"- %s is out from the district. -",name); for(new i=0; i= 8) { format(string, sizeof(string), "~y~%s~w~: the king of the server... 0.0",name); GameTextForAll(string, 6000, 6); } SendDeathMessage(killerid,playerid,reason); SetPlayerScore(killerid,GetPlayerScore(killerid)+1); GivePlayerMoney(killerid, 1000); GivePlayerMoney(playerid, -1000); } else { SendClientMessage(killerid, COLOR_RED, "No teamkilling! Be careful the next time!"); SendDeathMessage(killerid,playerid,reason); SetPlayerScore(killerid,GetPlayerScore(killerid)-1); GivePlayerMoney(killerid, -2000); new Float:x; new Float:y; new Float:z; GetPlayerPos(playerid, x, y, z); z = 1000; SetPlayerPos(killerid, Float:x, Float:y, Float:z); tk[killerid] ++; if(tk[killerid] == 2) { SendClientMessage(killerid, COLOR_RED, "Once again and you will be kicked!"); } if(tk[killerid] >= 3) { GetPlayerName(killerid,name, sizeof(name)); printf(" -A.T.K Script-: %s kicked for teamkilling",name); Kick(killerid); format(string, sizeof(string), "The AntiTeamkill system kicked %s for teamkilling!",name); SendClientMessageToAll(COLOR_GREEN, string); } } } return 1; } //------------------------------------------------------------------------- stock SetupPlayerForClassSelection(playerid,classid) { PlayerPlaySound(playerid, 1058, 0, 0, 0); SetPlayerInterior(playerid,3); switch(classid) { case 0,1: { SetPlayerCameraPos(playerid, 200.8300,179.2358,1003.0324); SetPlayerPos(playerid, 203.4223,179.2181,1003.0324); SetPlayerFacingAngle(playerid, 87.5657); SetPlayerCameraLookAt(playerid, 200.8300,179.2358,1003.0324); GameTextForPlayer(playerid, "~n~~r~EVA Squad Prisoners", 5000, 3); } case 2,3: { SetPlayerCameraPos(playerid, 201.4807,158.2105,1003.0234); SetPlayerPos(playerid, 203.6180,158.1124,1003.0234); SetPlayerFacingAngle(playerid, 87.5657); SetPlayerCameraLookAt(playerid, 201.4807,158.2105,1003.0234); GameTextForPlayer(playerid, "~n~~r~EVA Squad Prisoners", 5000, 3); } case 4: { SetPlayerCameraPos(playerid, 260.1319,179.3298,1003.0234); SetPlayerPos(playerid, 265.5176,179.4147,1003.0234); SetPlayerFacingAngle(playerid, 88.8190); SetPlayerCameraLookAt(playerid, 260.1319,179.3298,1003.0234); GameTextForPlayer(playerid, "~n~~b~Cop~n~~n~~w~Weapons: ~b~Desert Eagle, Nitestick", 5000, 3); } } return; } //------------------------------------------------------------------------- public OnPlayerRequestClass(playerid, classid) { printf("OnPlayerRequestClass(%d, %d)", playerid, classid); SetPlayerClass(playerid, classid); SetupPlayerForClassSelection(playerid,classid); ApplyAnimation(playerid,"DANCING","dnce_M_c",4.0,1,0,0,0,-1); return 1; } //------------------------------------------------------------------------- public OnPlayerEnterCheckpoint(playerid) { new name[MAX_PLAYER_NAME]; new string[256]; GetPlayerName(playerid,name,sizeof(name)); if(gTeam[playerid] == TEAM_EVA) { GameTextForAll("~y~EVA Team ~w~scored!", 5000, 6); score1++; format(string,sizeof(string),"Thanks a lot %s for your job!",name); Checkpoint(); for(new i=0; i= 10000) { GivePlayerMoney(playerid,-1200); new pid; new tmp[256],name[MAX_PLAYER_NAME],playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); tmp = strtok(cmdtext,idx); if(!strlen(tmp)) { remora[playerid] = 1; DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid,gRandomCheckpoints[randCHECK][CheckX],gRandomCheckpoints[randCHECK][CheckY],gRandomCheckpoints[randCHECK][CheckZ],5.0); gPlayerCheckpointStatus[playerid] = CHECK_REMORA; format(string,sizeof(string),"- %s has activated the Remora Mode to himself. -",name); for(new i=0; i= 10000) { superbriefing[playerid] = 1; format(string,sizeof(string),"- %s has enabled the SuperBriefing Mode to himself. -",name); for(new i=0; i= 1000) { SendClientMessage(playerid, 0xFF8A00AA, "- You have bought a Smoke Bomb for 1000$. -"); GivePlayerWeapon(playerid, 17, 1); GivePlayerMoney(playerid, -1000); inarmory[playerid] = 0; }else{SendClientMessage(playerid, 0xFF8A00AA, "You dont have enough money! Kill to earn and come back!");}return 1;} if(strcmp(cmd,"grenades", true,8)==0) { if(GetPlayerMoney(playerid) >= 1200){ SendClientMessage(playerid, 0xFF8A00AA, "- You have bought a Grenades Pack for 1200$. -"); GivePlayerWeapon(playerid, 16, 20); GivePlayerMoney(playerid, -1200); inarmory[playerid] = 0; }else{SendClientMessage(playerid, 0xFF8A00AA, "You dont have enough money! Kill to earn and come back!");}return 1;} if(strcmp(cmd, "charges", true,7) == 0) { if(GetPlayerMoney(playerid) >= 2000) { SendClientMessage(playerid, 0xFF8A00AA, "- You have bought a Sachet Charges for 2000$. -"); GivePlayerWeapon(playerid, 39, 20); GivePlayerMoney(playerid, -2000); inarmory[playerid] = 0; }else{SendClientMessage(playerid, 0xFF8A00AA, "You dont have enough money! Kill to earn and come back!");}return 1;} } inarmory[playerid] = 1; new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid,pname, sizeof(pname)); format(string, sizeof(string), "- Welcome to your Personal Armory, %s; -", pname); SendClientMessage(playerid, COLOR_RED, string); SendClientMessage(playerid, 0xFF8A00AA, "Usage: (/a)rmory [wname]"); SendClientMessage(playerid, 0xFF8A00AA, "----------------------------------"); SendClientMessage(playerid, 0xFF8A00AA, "- smokeb [1000$]"); SendClientMessage(playerid, 0xFF8A00AA, "- grenades [1200$]"); SendClientMessage(playerid, 0xFF8A00AA, "- charges [2000$]"); SendClientMessage(playerid, 0xFF8A00AA, "----------------------------------"); }else{SendClientMessage(playerid,0xFF8A00AA,"This command has been disabled.");} }else{SendClientMessage(playerid,0xFF8A00AA,"Only Team Police can use this command.");} return 1; } if(strcmp(cmd,"/vshop",true)==0||strcmp(cmd,"/v",true)==0) { cmd=strtok(cmdtext,idx); if(invehicle[playerid]==1) { if(strcmp(cmd, "ammunation", true,9) == 0||strcmp(cmd,"ammu",true,4)==0) { if(GetPlayerMoney(playerid) >= 1000) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name, sizeof(name)); format(string, sizeof(string), "- %s teleported to LV Ammunation for 1000$. -",name); SetPlayerPos(playerid,2158.9075,945.0707,10.8203); SendClientMessageToAll(0xFF8A00AA,string); GivePlayerMoney(playerid, -1000); invehicle[playerid] = 0; KillTimer(removev[playerid]); }else{SendClientMessage(playerid, 0xFF8A00AA, "You dont have enough money! Kill to earn and come back!");}return 1;} if(strcmp(cmd,"sniping",true,7)==0) { if(GetPlayerMoney(playerid) >= 1200) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name, sizeof(name)); format(string, sizeof(string), "- %s teleported to Sniping Portal for 1200$. -",name); SendClientMessageToAll(0xFF8A00AA,string); GivePlayerMoney(playerid, -1200); invehicle[playerid] = 0; SetPlayerPos(playerid,2261.6462,2445.0271,46.9766); SetPlayerFacingAngle(playerid,89.9468); SetPlayerInterior(playerid,0); KillTimer(removev[playerid]); }else{SendClientMessage(playerid, 0xFF8A00AA, "You dont have enough money! Kill to earn and come back!");}return 1;} if(strcmp(cmd, "spistol", true,7) == 0) { if(GetPlayerMoney(playerid) >= 2000) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name, sizeof(name)); format(string, sizeof(string), "- %s bought a Silenced Pistol for 2000$. -",name); SendClientMessageToAll(0xFF8A00AA,string); GivePlayerMoney(playerid, -2000); GivePlayerWeapon(playerid,33,500); invehicle[playerid] = 0; KillTimer(removev[playerid]); }else{SendClientMessage(playerid, 0xFF8A00AA, "You dont have enough money! Kill to earn and come back!");}return 1;} SendClientMessage(playerid, 0xFF8A00AA, "Usage: (/v)shop [wname]"); SendClientMessage(playerid, 0xFF8A00AA, "----------------------------------"); SendClientMessage(playerid, 0xFF8A00AA, "/ammunation [1000$]"); SendClientMessage(playerid, 0xFF8A00AA, "/sniping [1200$]"); SendClientMessage(playerid, 0xFF8A00AA, "/spistol [2000$]"); SendClientMessage(playerid, 0xFF8A00AA, "/exit"); SendClientMessage(playerid, 0xFF8A00AA, "----------------------------------"); }else{SendClientMessage(playerid,COLOR_RED,"You arent in the SWAT Van!");} return 1; } if(strcmp(cmd, "/exit", true) == 0) { if(invehicle[playerid] == 1) { TogglePlayerControllable(playerid,1); RemovePlayerFromVehicle(playerid); KillTimer(removev[playerid]);}else{SendClientMessage(playerid,COLOR_RED,"You arent in the SWAT Van!");}return 1;} return 0; } //------------------------------------------------------------------------- strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } //------------------------------------------------------------------------- stock CheckScore() { KillTimer(gRoundTimer); if(score1>score2) {GameTextForAll("The ~r~EVA Team ~y~wins!", 5000, 6);} else if(score2>1){GameTextForAll("The ~b~Police Team ~y~wins!", 5000, 6);} else if(score1==score2){GameTextForAll("~y~Incredible... DRAW!!!", 5000, 6);} for(new i=0; i