/* Knogles Last Bed Standing Masterpiece for SA-MP Fork of Minecrafts Bedwars Little TDM Gamemode Published under GNU GPL Public License. Copyright (C) 2017 Fabian Druschke Contact: webmaster@knogleinsi.de Mail: Postfach 32 22 50147 Kerpen Germany This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ */ #include #include #include #include #define FIRST_TEAM 0 #define SECOND_TEAM 1 #define THIRD_TEAM 2 #define FOURTH_TEAM 3 #define FIFTH_TEAM 4 #define SIXTH_TEAM 5 #define TEAM_SPECTATOR 6 enum { CHILLIAD, SAN_FIERRO_DOCKS, BONE_COUNTY, MAD_DOGGS, COUNTRYSIDE_1, GREEN_PALMS, COUNTRYSIDE_2 }; enum pInfo { pBombs, pPass, pBeds, pKills, pDeaths, pAdmin }; enum { INVALID_PICKUP_TYPE, MONEY_TYPE, ACTOR_TYPE, INFO_TYPE }; enum weather_info { wt_id, wt_text[255] }; #define MAPTYPE CHILLIAD #define PATH "/Users/%s.ini" #define PRESSED(%0) \ (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) #define ADMIN_SPEC_TYPE_NONE 0 #define ADMIN_SPEC_TYPE_PLAYER 1 #define ADMIN_SPEC_TYPE_VEHICLE 2 #define COLOR_WHITE 0xFFFFFFFF #define COLOR_NORMAL_PLAYER 0xFFBB7777 #define COLOR_GREY 0xAFAFAFAA #define COLOR_RED 0xAA3333AA #define COLOR_GREEN 0x33AA33AA #define COLOR_YELLOW 0xFFFF0055 #define COLOR_BLUE 0x0000BBAA #define COLOR_NAVY 0x000080AA #define MoneyVal 1000 //---------------------------------------------------------- forward WeatherTimer(); forward GMX(); forward RandomWeather(); forward SaveUser_data(playerid); forward ResetPlayerData(playerid); forward warpcount(playerid); forward TeleportPlayerToBase(playerid); forward reveal(playerid); forward quickSort(array[], left, right); forward PrepareToBlowUp(playerid); forward GetPickupType(pickupid, &index); forward Float:frandom(Float:max, Float:min = 0.0, dp = 4); forward GetXYInFrontOfActor(actorid, &Float:x, &Float:y, Float:distance); forward GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance); forward Float:GetDistance( Float:a1, Float:b1, Float:c1, Float:a2, Float:b2, Float:c2 ); forward GenerateRandomPickup(modelid,type,Float:x_max,Float:x_min,Float:y_max,Float:y_min,Float:z_max,Float:z_min,virtualworld); forward LoadUser_data(playerid,name[],value[]); forward MONEY_MAIN(); forward TEAM_MONEY(); forward BlowUpThisBed(); forward SendTeamMessage(teamid, color, const message[]); forward SellPlayerFightingStyle(playerid,cost,style); forward SellPlayerWeapon(playerid,cost,weaponid,ammo); forward SpecPlayer(playerid,targetplayer); forward UpdateTimeAndWeather(); forward CountDown(); //---------------------------------------------------------- new Warppowder[MAX_PLAYERS]; new PBeds[MAX_PLAYERS]; new PKills[MAX_PLAYERS]; new PSkill[MAX_PLAYERS]; new PBomb[MAX_PLAYERS]; new LastMoney[MAX_PLAYERS]; new PStealth[MAX_PLAYERS]; new String[128], Float:SpecX[MAX_PLAYERS], Float:SpecY[MAX_PLAYERS], Float:SpecZ[MAX_PLAYERS], vWorld[MAX_PLAYERS], Inter[MAX_PLAYERS]; new IsSpecing[MAX_PLAYERS], Name[MAX_PLAYER_NAME], IsBeingSpeced[MAX_PLAYERS],spectatorid[MAX_PLAYERS]; new Float:pX[MAX_PLAYERS]; new Float:pY[MAX_PLAYERS]; new Float:pZ[MAX_PLAYERS]; new Float:wX[MAX_PLAYERS]; new Float:wY[MAX_PLAYERS]; new Float:wZ[MAX_PLAYERS]; new SpectatingPlayer[MAX_PLAYERS]; new PBombID[MAX_PLAYERS]; new Beam[MAX_PLAYERS]; new gPlayerTeamSelection[MAX_PLAYERS]; new gPlayerHasTeamSelected[MAX_PLAYERS]; new gPlayerLastTeamSelectionTick[MAX_PLAYERS]; new PlayerInfo[MAX_PLAYERS][pInfo]; new BombObject[MAX_PLAYERS]; new Shop_Counter; //-------------------------------------------------------------- new totaltime; new gRandomWeatherIDs[][weather_info] = { {1,"Sunny"}, {8,"Stormy"}, {9,"Foggy Sky"}, {11,"Extreme Sunny"}, {16,"Rainy"}, {19,"Thunderstorm"}, {20,"Foggy"} }; //-------------------------------------------------------------- new Menu:infomenu; new Menu:fightstyles; new Menu:shotguns; new Menu:items; new Menu:smg; new Menu:rifles; new Menu:yesno; new Menu:assaultrifle; new Menu:Grenades; new Menu:melee; new Menu:special; new Menu:shopmenu; new Menu:ammunation; new Menu:pistols; new Menu:microsmg; //-------------------------------------------------------------- new Text:txtClassSelHelper; new Text:txtTimeDisp; new Text:Textcover; new PlayerText:TeamCover[MAX_PLAYERS]; new PlayerText:TeamText[MAX_PLAYERS]; new PlayerText:LocText[MAX_PLAYERS]; //-------------------------------------------------------------- new moneyval; new maxmoney; new Float:x1, Float:y1, Float:z1; new running; new CountDownVar = 4; new WarpVar[MAX_PLAYERS]; new WarpTimer; new CountDownTimer; new hour, minute; new timestr[32]; new timestrex[32]; new delay=1000;// only allow new selection every ~1000 ms; may differ due to server load new bombtimer=5000;// time in ms to blow up closest bedwars bed new MoneyDropTimer=2500;// Time to generate new moneypickups //-------------------------------------------------------------- stock udb_hash(buf[]) { new length=strlen(buf); new s1 = 1; new s2 = 0; new n; for (n=0; n #elseif MAPTYPE==BONE_COUNTY #include #elseif MAPTYPE==SAN_FIERRO_DOCKS #include <../../gamemodes/san_fierro_docks.pwn> #elseif MAPTYPE==MAD_DOGGS #include #elseif MAPTYPE==GREEN_PALMS #include #elseif MAPTYPE==COUNTRYSIDE_1 #include #elseif MAPTYPE==COUNTRYSIDE_2 #include #endif #endif #if defined TEAMSIZE #if TEAMSIZE > 6 #error Amount of Teams is limited to 6! #endif #if TEAMSIZE < 2 #error Minimum Amount of Teams is limited to 2! #endif #endif new ActorPickups[sizeof(GlobalActors)]; new InfoPickups[sizeof(PlayerInfoPickups)]; new MoneyPickups[MAX_PICKUPS-sizeof(ActorPickups)-sizeof(InfoPickups)-1]; #define BYTECOUNT (cellbits / 8) stock binarysearch(a[],key,l,r) { new k; while(r >=l) { k = (l+r)/2; if(key == a[k]) { return k; } if(key < a[k]) { r = k-1; } else { l= k+1; } } return -1; } stock binarysearch2(a[][],idx,key,l,r) { new k; while(r >=l) { k = (l+r)/2; if(key == a[k][idx]) { return k; } if(key < a[k][idx]) { r = k-1; } else { l= k+1; } } return -1; } stock SendClientMessageEx(playerid, color, fstring[], {Float, _}:...) { static const ARGC = 3; new n = (numargs() - ARGC) * BYTECOUNT; if (n) { new message[128], arg_start, arg_end; #emit CONST.alt fstring #emit LCTRL 5 #emit ADD #emit STOR.S.pri arg_start #emit LOAD.S.alt n #emit ADD #emit STOR.S.pri arg_end do { #emit LOAD.I #emit PUSH.pri arg_end -= BYTECOUNT; #emit LOAD.S.pri arg_end } while (arg_end > arg_start); #emit PUSH.S fstring #emit PUSH.C 128 #emit PUSH.ADR message n += BYTECOUNT * 3; #emit PUSH.S n #emit SYSREQ.C format n += BYTECOUNT; #emit LCTRL 4 #emit LOAD.S.alt n #emit ADD #emit SCTRL 4 return SendClientMessage(playerid, color, message); } else { return SendClientMessage(playerid, color, fstring); } } new TEAM_ZONE_ONE; new TEAM_ZONE_TWO; #if defined TEAMSIZE #if TEAMSIZE >=3 new TEAM_ZONE_THREE; #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=4 new TEAM_ZONE_FOUR; #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=5 new TEAM_ZONE_FIVE; #endif #endif #if defined TEAMSIZE #if TEAMSIZE == 6 new TEAM_ZONE_SIX; #endif #endif new BED_STATE_TEAM_ONE; new BED_STATE_TEAM_TWO; #if defined TEAMSIZE #if TEAMSIZE >=3 new BED_STATE_TEAM_THREE; #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=4 new BED_STATE_TEAM_FOUR; #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=5 new BED_STATE_TEAM_FIVE; #endif #endif #if defined TEAMSIZE #if TEAMSIZE ==6 new BED_STATE_TEAM_SIX; #endif #endif public OnGameModeInit() { CreateObject(1829,243.1000100,1804.9000000,6.9000000,0.0000000,0.0000000,0.0000000); //object(man_safenew) (1) //Skin selection #if defined MAPTYPE #if MAPTYPE==CHILLIAD #tryinclude #tryinclude #elseif MAPTYPE==BONE_COUNTY #tryinclude #tryinclude #elseif MAPTYPE==MAD_DOGGS #tryinclude #tryinclude #elseif MAPTYPE==SAN_FIERRO_DOCKS #tryinclude #tryinclude #elseif MAPTYPE==GREEN_PALMS #tryinclude #tryinclude #elseif MAPTYPE==COUNTRYSIDE_1 #tryinclude #tryinclude #elseif MAPTYPE==COUNTRYSIDE_2 #tryinclude #tryinclude #endif #endif for(new t;t=2 TEAM_ZONE_ONE = GangZoneCreate(GlobalZones[0][0],GlobalZones[0][1],GlobalZones[0][2],GlobalZones[0][3]); TEAM_ZONE_TWO = GangZoneCreate(GlobalZones[1][0],GlobalZones[1][1],GlobalZones[1][2],GlobalZones[1][3]); #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=3 TEAM_ZONE_THREE = GangZoneCreate(GlobalZones[2][0],GlobalZones[2][1],GlobalZones[2][2],GlobalZones[2][3]); #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=4 TEAM_ZONE_FOUR = GangZoneCreate(GlobalZones[3][0],GlobalZones[3][1],GlobalZones[3][2],GlobalZones[3][3]); #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=5 TEAM_ZONE_FIVE = GangZoneCreate(GlobalZones[4][0],GlobalZones[4][1],GlobalZones[4][2],GlobalZones[4][3]); #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=6 TEAM_ZONE_SIX = GangZoneCreate(GlobalZones[5][0],GlobalZones[5][1],GlobalZones[5][2],GlobalZones[5][3]); #endif #endif for(new g=0;g= 2 new randSpawn=0; switch(gPlayerTeamSelection[playerid]) { case 0: { new str[80]; randSpawn = random(sizeof(gSpawnsTeam_TEAM_ONE)); format(str,sizeof(str),"SERVER: You have been teleported to the base of your team "#FIRST_TEAM_COLOR_TAG); SendClientMessage(playerid,COLOR_WHITE,str); SetPlayerPos(playerid, gSpawnsTeam_TEAM_ONE[randSpawn][0], gSpawnsTeam_TEAM_ONE[randSpawn][1], gSpawnsTeam_TEAM_ONE[randSpawn][2]); } case 1: { new str[80]; randSpawn = random(sizeof(gSpawnsTeam_TEAM_TWO)); format(str,sizeof(str),"SERVER: You have been teleported to the base of your team "#SECOND_TEAM_COLOR_TAG); SendClientMessage(playerid,COLOR_WHITE,str); SetPlayerPos(playerid, gSpawnsTeam_TEAM_TWO[randSpawn][0], gSpawnsTeam_TEAM_TWO[randSpawn][1], gSpawnsTeam_TEAM_TWO[randSpawn][2]); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 3 case 2: { new str[80]; randSpawn = random(sizeof(gSpawnsTeam_TEAM_THREE)); format(str,sizeof(str),"SERVER: You have been teleported to the base of your team "#THIRD_TEAM_COLOR_TAG); SendClientMessage(playerid,COLOR_WHITE,str); SetPlayerPos(playerid, gSpawnsTeam_TEAM_THREE[randSpawn][0], gSpawnsTeam_TEAM_THREE[randSpawn][1], gSpawnsTeam_TEAM_THREE[randSpawn][2]); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 4 case 3: { new str[80]; randSpawn = random(sizeof(gSpawnsTeam_TEAM_FOUR)); format(str,sizeof(str),"SERVER: You have been teleported to the base of your team "#FOURTH_TEAM_COLOR_TAG); SendClientMessage(playerid,COLOR_WHITE,str); SetPlayerPos(playerid, gSpawnsTeam_TEAM_FOUR[randSpawn][0], gSpawnsTeam_TEAM_FOUR[randSpawn][1], gSpawnsTeam_TEAM_FOUR[randSpawn][2]); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 5 case 4: { new str[80]; randSpawn = random(sizeof(gSpawnsTeam_TEAM_FIVE)); format(str,sizeof(str),"SERVER: You have been teleported to the base of your team "#FIFTH_TEAM_COLOR_TAG); SendClientMessage(playerid,COLOR_WHITE,str); SetPlayerPos(playerid, gSpawnsTeam_TEAM_FIVE[randSpawn][0], gSpawnsTeam_TEAM_FIVE[randSpawn][1], gSpawnsTeam_TEAM_FIVE[randSpawn][2]); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE == 6 case 5: { new str[80]; randSpawn = random(sizeof(gSpawnsTeam_TEAM_SIX)); format(str,sizeof(str),"SERVER: You have been teleported to the base of your team "#SIXTH_TEAM_COLOR_TAG); SendClientMessage(playerid,COLOR_WHITE,str); SetPlayerPos(playerid, gSpawnsTeam_TEAM_SIX[randSpawn][0], gSpawnsTeam_TEAM_SIX[randSpawn][1], gSpawnsTeam_TEAM_SIX[randSpawn][2]); } #endif #endif } } stock SpecPlayer(playerid,targetplayer) { GetPlayerPos(playerid,SpecX[playerid],SpecY[playerid],SpecZ[playerid]); Inter[playerid] = GetPlayerInterior(playerid); vWorld[playerid] = GetPlayerVirtualWorld(playerid); TogglePlayerSpectating(playerid, true); if(IsPlayerInAnyVehicle(targetplayer)) { if(GetPlayerInterior(targetplayer) > 0) { SetPlayerInterior(playerid,GetPlayerInterior(targetplayer)); } if(GetPlayerVirtualWorld(targetplayer) > 0) { SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(targetplayer)); } PlayerSpectateVehicle(playerid,GetPlayerVehicleID(targetplayer)); } else { if(GetPlayerInterior(targetplayer) > 0) { SetPlayerInterior(playerid,GetPlayerInterior(targetplayer)); } if(GetPlayerVirtualWorld(targetplayer) > 0) { SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(targetplayer)); } PlayerSpectatePlayer(playerid,targetplayer); } GetPlayerName(targetplayer, Name, sizeof(Name)); format(String, sizeof(String),"SERVER: You have started to spectate %s.",Name); SendClientMessage(playerid,COLOR_WHITE,String); IsSpecing[playerid] = 1; IsBeingSpeced[targetplayer] = 1; spectatorid[playerid] = targetplayer; } stock SpecRandomPlayer(playerid) { new randoms[MAX_PLAYERS],idx; for(new i=GetPlayerPoolSize(); i!=-1; i--) { if(IsPlayerConnected(i) && gPlayerTeamSelection[i] != TEAM_SPECTATOR && playerid != i) { randoms[idx++]=i; } } if(!idx) return 0; // INVALID_PLAYER_ID SpecPlayer(playerid, randoms[random(idx)]); return 1; } public reveal(playerid) { SendClientMessage(playerid,COLOR_WHITE,"SERVER: You are visible again!"); if(PStealth[playerid] == -1 && (gPlayerTeamSelection[playerid] == FIRST_TEAM)) { PStealth[playerid]=0; SetPlayerColor(playerid,COLOR_TEAM_ONE); } if(PStealth[playerid] == -1 && (gPlayerTeamSelection[playerid] == SECOND_TEAM)) { PStealth[playerid]=0; SetPlayerColor(playerid,COLOR_TEAM_TWO); } #if defined TEAMSIZE #if TEAMSIZE >= 3 if(PStealth[playerid] == -1 && (gPlayerTeamSelection[playerid] == THIRD_TEAM)) { PStealth[playerid]=0; SetPlayerColor(playerid,COLOR_TEAM_THREE); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 4 if(PStealth[playerid] == -1 && (gPlayerTeamSelection[playerid] == FOURTH_TEAM)) { PStealth[playerid]=0; SetPlayerColor(playerid,COLOR_TEAM_FOUR); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 5 if(PStealth[playerid] == -1 && (gPlayerTeamSelection[playerid] == FIFTH_TEAM)) { PStealth[playerid]=0; SetPlayerColor(playerid,COLOR_TEAM_FIVE); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE == 6 if(PStealth[playerid] == -1 && (gPlayerTeamSelection[playerid] == SIXTH_TEAM)) { PStealth[playerid]=0; SetPlayerColor(playerid,COLOR_TEAM_SIX); } #endif #endif } stock SellPlayerWeapon(playerid,cost,weaponid,ammo) { if(GetPlayerMoney(playerid) >= cost) { new spentstring[128]; format(spentstring,sizeof(spentstring),"SERVER: You spent $%d to purchase this weapon!",cost); SendClientMessage(playerid,COLOR_WHITE,spentstring); printf("%d spent %d to purchase weapon %d",playerid,cost,weaponid); GivePlayerWeapon(playerid,weaponid,ammo); GivePlayerMoneyText(playerid,-cost); TogglePlayerControllable(playerid,true); } else { new leftmoney = (GetPlayerMoney(playerid)-cost); new insufstring[128]; format(insufstring,sizeof(insufstring),"SERVER: You still need $%d to purchase this weapon!",-leftmoney); SendClientMessage(playerid,COLOR_WHITE,"SERVER: Insufficient balance! You can not afford this weapon!"); printf("%d tried to purchase weapon %d but still needs %d",playerid,weaponid,-leftmoney); SendClientMessage(playerid,COLOR_WHITE,insufstring); TogglePlayerControllable(playerid,true); } } stock SellPlayerFightingStyle(playerid,cost,style) { if(GetPlayerMoney(playerid) >= cost) { new spentstring[128]; format(spentstring,sizeof(spentstring),"SERVER: You spent $%d to purchase this style!",cost); SendClientMessage(playerid,COLOR_WHITE,spentstring); SetPlayerFightingStyle(playerid,style); GivePlayerMoneyText(playerid,-cost); TogglePlayerControllable(playerid,true); } else { new leftmoney = (GetPlayerMoney(playerid)-cost); new insufstring[128]; format(insufstring,sizeof(insufstring),"SERVER: You still need $%d to purchase this fightstyle!",-leftmoney); SendClientMessage(playerid,COLOR_WHITE,"SERVER: Insufficient balance! You can not afford this fightstyle!"); SendClientMessage(playerid,COLOR_WHITE,insufstring); TogglePlayerControllable(playerid,true); } } stock GenerateRandomPickup(modelid,type,Float:x_max,Float:x_min,Float:y_max,Float:y_min,Float:z_max,Float:z_min,virtualworld) { if(maxmoney <= sizeof(MoneyPickups)) { moneyval= moneyval+1000; new Float:rx1=((frandom((floatabs(x_max-x_min)))+x_min)); new Float:ry2=((frandom((floatabs(y_max-y_min)))+y_min)); new Float:rz3=((frandom((floatabs(z_max-z_min)))+z_min)); maxmoney = maxmoney +1; MoneyPickups[maxmoney] = CreatePickup(modelid,type,rx1,ry2,rz3,virtualworld); HeapSort(MoneyPickups); } } public CountDown() { CountDownVar--; for(new i = 0; i < MAX_PLAYERS; i++) { if(CountDownVar == 0) { KillTimer(CountDownTimer); CountDownVar = 4; PlayerPlaySound(i,7419,0,0,0); } if(CountDownVar == 1) { PlayerPlaySound(i,7418,0,0,0); } if(CountDownVar == 2) { PlayerPlaySound(i,7417,0,0,0); } } return 1; } public warpcount(playerid) { WarpVar[playerid]--; new Float:x,Float:y,Float:z; GetPlayerPos(playerid,x,y,z); if(WarpVar[playerid] == 0) { if(!IsPlayerInRangeOfPoint(playerid,2.0,wX[playerid],wY[playerid],wZ[playerid])) { KillTimer(WarpTimer); WarpVar[playerid] = 4; Warppowder[playerid]=1; if(IsValidObject(Beam[playerid])) DestroyObject(Beam[playerid]); return SendClientMessage(playerid,COLOR_WHITE,"SERVER: You moved right away! Teleport aborted."); } if(IsValidObject(Beam[playerid])) DestroyObject(Beam[playerid]); TeleportPlayerToBase(playerid); WarpVar[playerid] = 4; KillTimer(WarpTimer); PlayerPlaySound(playerid,1137,x,y,z); } if(WarpVar[playerid] == 1) { if(!IsPlayerInRangeOfPoint(playerid,2.0,wX[playerid],wY[playerid],wZ[playerid])) { KillTimer(WarpTimer); WarpVar[playerid] = 4; Warppowder[playerid]=1; if(IsValidObject(Beam[playerid])) DestroyObject(Beam[playerid]); return SendClientMessage(playerid,COLOR_WHITE,"SERVER: You moved right away! Teleport aborted."); } PlayerPlaySound(playerid,1137,x,y,z); } if(WarpVar[playerid] == 2) { if(!IsPlayerInRangeOfPoint(playerid,2.0,wX[playerid],wY[playerid],wZ[playerid])) { KillTimer(WarpTimer); WarpVar[playerid] = 4; Warppowder[playerid]=1; if(IsValidObject(Beam[playerid])) DestroyObject(Beam[playerid]); return SendClientMessage(playerid,COLOR_WHITE,"SERVER: You moved right away! Teleport aborted."); } PlayerPlaySound(playerid,1137,x,y,z); } if(WarpVar[playerid] == 3) { if(!IsPlayerInRangeOfPoint(playerid,2.0,wX[playerid],wY[playerid],wZ[playerid])) { KillTimer(WarpTimer); WarpVar[playerid] = 4; Warppowder[playerid]=1; if(IsValidObject(Beam[playerid])) DestroyObject(Beam[playerid]); return SendClientMessage(playerid,COLOR_WHITE,"SERVER: You moved right away! Teleport aborted."); } PlayerPlaySound(playerid,1137,x,y,z); } return 1; } public SendTeamMessage(teamid, color, const message[]) { for(new i; i < MAX_PLAYERS; i++) { if(!IsPlayerConnected(i)) continue; if(gPlayerTeamSelection[i] != teamid) continue; SendClientMessage(i, color, message); printf("TEAM MESSAGE SENT"); } return 1; } public OnPlayerExitedMenu(playerid) { TogglePlayerControllable(playerid,true); return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { new index; switch(GetPickupType(pickupid,index)) { case INVALID_PICKUP_TYPE: { } case MONEY_TYPE: { maxmoney -= 1; GivePlayerMoney(playerid, MoneyVal); printf("ID picked up: %d",maxmoney); MoneyPickups[index]=-1; quickSort(MoneyPickups,0,sizeof(MoneyPickups)-1); DestroyPickup(pickupid); } case ACTOR_TYPE: { ShowMenuForPlayer(shopmenu,playerid); TogglePlayerControllable(playerid,false); } case INFO_TYPE: { ShowMenuForPlayer(infomenu,playerid); TogglePlayerControllable(playerid,false); } } return 1; } stock GetPickupType(pickupid, &index) { new mres = binarysearch(MoneyPickups,pickupid,0,sizeof(MoneyPickups)-1); if(mres > -1 && MoneyPickups[mres] == pickupid) return index=mres,MONEY_TYPE; new ares = binarysearch(ActorPickups,pickupid,0,sizeof(ActorPickups)-1); if(ares > -1 && ActorPickups[ares] == pickupid) return index=ares,ACTOR_TYPE; new ires = binarysearch(InfoPickups,pickupid,0,sizeof(InfoPickups)-1); if(ires > -1 && InfoPickups[ires] == pickupid) return index=ires,INFO_TYPE; return INVALID_PICKUP_TYPE; } public UpdateTimeAndWeather() { gettime(hour, minute); format(timestr,32,"%02d:%02d",hour,minute); format(timestrex,32,"Time: %02d:%02d",hour,minute); TextDrawSetString(txtTimeDisp,timestr); for(new i;i 0; --i) // Make heap SinkDown (array, i, n); for (i = n; i > 1; --i) { Swap (array [i - 1], array [0]); SinkDown (array, 1, i - 1); } } stock quickSort(array[], left, right) { new tempLeft = left, tempRight = right, pivot = array[(left + right) / 2], tempVar ; while(tempLeft <= tempRight) { while(array[tempLeft] < pivot) tempLeft++; while(array[tempRight] > pivot) tempRight--; if(tempLeft <= tempRight) { tempVar = array[tempLeft], array[tempLeft] = array[tempRight], array[tempRight] = tempVar; tempLeft++, tempRight--; } } if(left < tempRight) quickSort(array, left, tempRight); if(tempLeft < right) quickSort(array, tempLeft, right); } //---------------------------------------------------------- static stock SinkDown (array [], i, m) { new j; while (2 * i <= m) { j = 2 * i; if (j < m && array [j - 1] < array [j]) ++j; if (array [i - 1] < array [j - 1]) { Swap (array [i - 1], array [j - 1]); i = j; } else i = m; } } //---------------------------------------------------------- static stock Swap (&a, &b) { new s; s = a; a = b; b = s; } //---------------------------------------------------------- stock PreloadAnimLib(playerid, animlib[]) { ApplyAnimation(playerid,animlib,"null",0.0,0,0,0,0,0); } public OnPlayerConnect(playerid) { WarpVar[playerid]=4; PreloadAnimLib(playerid,"BOMBER"); if(fexist(UserPath(playerid))) { INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid); SetPlayerScore(playerid, PlayerInfo[playerid][pBeds]); } else { new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid,pname,sizeof(pname)); printf("ini file for %s ID:%d does not exist, writing..",pname,playerid); new INI:File = INI_Open(UserPath(playerid)); INI_SetTag(File,"data"); INI_WriteInt(File,"Bombs",0); INI_WriteInt(File,"Beds",0); INI_WriteInt(File,"Kills",0); INI_WriteInt(File,"Deaths",0); INI_WriteInt(File,"Admin",0); INI_Close(File); } SetPlayerMapIcon(playerid, 12,Center[0][0],Center[0][1],Center[0][2], 52, 0, MAPICON_GLOBAL); RemoveBuildingForPlayer(playerid, 694,-2406.2607,-1949.2020,303.7252, 200.0); RemoveBuildingForPlayer(playerid, 784,-2406.2607,-1949.2020,303.7252, 200.0); RemoveBuildingForPlayer(playerid, 3636, 1220.2734375,2590.296875,16.4453125, 10000.0); RemoveBuildingForPlayer(playerid,3683, 2377.390625,1743.234375,16.5390625,10000); RemoveBuildingForPlayer(playerid, 3673, -2137.1953125,70.28125,42.3125, 10000.0); RemoveBuildingForPlayer(playerid, 3682,1249.5546875,-905.4609375,45.03125,10000); RemoveBuildingForPlayer(playerid, 3259,1249.5546875,-905.4609375,45.03125,10000); RemoveBuildingForPlayer(playerid, 3424, 1568.2890625,-1677.78125,10.8203125, 10000.0); RemoveBuildingForPlayer(playerid, 3674, 1568.2890625,-1677.78125,10.8203125, 10000.0); RemoveBuildingForPlayer(playerid, 3675, 1568.2890625,-1677.78125,10.8203125, 10000.0); RemoveBuildingForPlayer(playerid, 3256, 1568.2890625,-1677.78125,10.8203125, 10000.0); RemoveBuildingForPlayer(playerid, 3258, 1220.2734375,2590.296875,16.4453125, 10000.0); RemoveBuildingForPlayer(playerid,3673, 2377.390625,1743.234375,16.5390625,10000); RemoveBuildingForPlayer(playerid, 3255, -2137.1953125,70.28125,42.3125, 10000.0); RemoveBuildingForPlayer(playerid, 3257,1249.5546875,-905.4609375,45.03125,10000); RemoveBuildingForPlayer(playerid, 3290, 1220.2734375,2590.296875,16.4453125, 10000.0); RemoveBuildingForPlayer(playerid,3289, 2377.390625,1743.234375,16.5390625,10000); RemoveBuildingForPlayer(playerid, 3682, -2137.1953125,70.28125,42.3125, 10000.0); RemoveBuildingForPlayer(playerid, 3682,1249.5546875,-905.4609375,45.03125,10000); RemoveBuildingForPlayer(playerid, 3291,1249.5546875,-905.4609375,45.03125,10000); RemoveBuildingForPlayer(playerid, 3288, 1568.2890625,-1677.78125,10.8203125, 10000.0); RemoveBuildingForPlayer(playerid, 3291, 1568.2890625,-1677.78125,10.8203125, 10000.0); RemoveBuildingForPlayer(playerid, 3683, 1568.2890625,-1677.78125,10.8203125, 10000.0); RemoveBuildingForPlayer(playerid, 16086, 1568.2890625,-1677.78125,10.8203125, 10000.0); PStealth[playerid]=0; LastMoney[playerid]=0; new pname[MAX_PLAYER_NAME], string[22 + MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); format(string, sizeof(string), "%s (%d) has joined the server.", pname,playerid); SendClientMessageToAll(0xAAAAAAAA, string); PlayerPlaySound(playerid,1185,0,0,0); GameTextForPlayer(playerid,"~w~Last Bed Standing",3000,4); SendClientMessage(playerid,COLOR_WHITE,"Welcome to {88AA88}B{FFFFFF}ed {88AA88}W{FFFFFF}ars"); gPlayerTeamSelection[playerid] = -1; gPlayerHasTeamSelected[playerid] = 0; gPlayerLastTeamSelectionTick[playerid] = GetTickCount(); return 1; } ClassSel_SetupCharSelection(playerid) { TextDrawHideForPlayer(playerid,Textcover); if(gPlayerTeamSelection[playerid] > -1) { SetPlayerVirtualWorld(playerid,1); SetPlayerPos(playerid,243.1261,1805.2798,8.3794); SetPlayerFacingAngle(playerid,180.0); SetPlayerCameraPos(playerid,243.2876,1802.5547,7.4141); SetPlayerCameraLookAt(playerid,243.1261,1805.2798,8.3794); #if defined TEAMSIZE #if TEAMSIZE >= 2 switch(gPlayerTeamSelection[playerid]) { case 0: { SetPlayerColor(playerid,COLOR_TEAM_ONE); } case 1: { SetPlayerColor(playerid,COLOR_TEAM_TWO); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 3 case 2: { SetPlayerColor(playerid,COLOR_TEAM_THREE); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 4 case 3: { SetPlayerColor(playerid,COLOR_TEAM_FOUR); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 5 case 4: { SetPlayerColor(playerid,COLOR_TEAM_FIVE); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 6 case 5: { SetPlayerColor(playerid,COLOR_TEAM_SIX); } #endif #endif } } } ClassSel_InitTeamNameText(playerid,PlayerText:txtInit) { PlayerTextDrawBackgroundColor(playerid,txtInit,0x000000ff); PlayerTextDrawFont(playerid,txtInit,2); PlayerTextDrawLetterSize(playerid,txtInit,0.399999,1.500000); PlayerTextDrawColor(playerid,txtInit,0xffffffff); PlayerTextDrawSetOutline(playerid,txtInit,1); PlayerTextDrawSetProportional(playerid,txtInit,1); PlayerTextDrawSetShadow(playerid,txtInit,1); PlayerTextDrawBackgroundColor(playerid,txtInit,0x000000ff); PlayerTextDrawFont(playerid,txtInit,2); PlayerTextDrawLetterSize(playerid,txtInit,0.399999,1.500000); PlayerTextDrawColor(playerid,txtInit,0xffffffff); PlayerTextDrawSetOutline(playerid,txtInit,1); PlayerTextDrawSetProportional(playerid,txtInit,1); PlayerTextDrawSetShadow(playerid,txtInit,1); } ClassSel_SwitchToNextTeam(playerid) { gPlayerTeamSelection[playerid]++; switch(TEAMSIZE) { case 2: { if(gPlayerTeamSelection[playerid] > SECOND_TEAM) { gPlayerTeamSelection[playerid] = FIRST_TEAM; } } case 3: { if(gPlayerTeamSelection[playerid] > THIRD_TEAM) { gPlayerTeamSelection[playerid] = FIRST_TEAM; } } case 4: { if(gPlayerTeamSelection[playerid] > FOURTH_TEAM) { gPlayerTeamSelection[playerid] = FIRST_TEAM; } } case 5: { if(gPlayerTeamSelection[playerid] > FIFTH_TEAM) { gPlayerTeamSelection[playerid] = FIRST_TEAM; } } case 6: { if(gPlayerTeamSelection[playerid] > SIXTH_TEAM) { gPlayerTeamSelection[playerid] = FIRST_TEAM; } } } PlayerPlaySound(playerid,1052,0.0,0.0,0.0); gPlayerLastTeamSelectionTick[playerid] = GetTickCount(); ClassSel_SetupSelectedTeam(playerid); } ClassSel_SwitchToPreviousTeam(playerid) { gPlayerTeamSelection[playerid]--; switch(TEAMSIZE) { case 2: { if(gPlayerTeamSelection[playerid] < FIRST_TEAM) { gPlayerTeamSelection[playerid] = SECOND_TEAM; } } case 3: { if(gPlayerTeamSelection[playerid] < FIRST_TEAM) { gPlayerTeamSelection[playerid] = THIRD_TEAM; } } case 4: { if(gPlayerTeamSelection[playerid] < FIRST_TEAM) { gPlayerTeamSelection[playerid] = FOURTH_TEAM; } } case 5: { if(gPlayerTeamSelection[playerid] < FIRST_TEAM) { gPlayerTeamSelection[playerid] = FIFTH_TEAM; } } case 6: { if(gPlayerTeamSelection[playerid] < FIRST_TEAM) { gPlayerTeamSelection[playerid] = SIXTH_TEAM; } } } PlayerPlaySound(playerid,1053,0.0,0.0,0.0); gPlayerLastTeamSelectionTick[playerid] = GetTickCount(); ClassSel_SetupSelectedTeam(playerid); } stock getActingPlayer(playerid,&idx) { new randoms[MAX_PLAYERS],tmp; for(new i=GetPlayerPoolSize(); i!=-1; i--) { if(IsPlayerConnected(i) && gPlayerTeamSelection[i] != TEAM_SPECTATOR && playerid != i) { randoms[tmp++]=i; } } if(!tmp) return INVALID_PLAYER_ID; if(idx>tmp) idx=0; if(idx<0) idx=tmp-1; return randoms[idx]; } HandlePlayerSpectating(playerid) { if( (GetTickCount() - gPlayerLastTeamSelectionTick[playerid]) < delay ) return 1; new Keys,ud,lr; GetPlayerKeys(playerid,Keys,ud,lr); if(lr == KEY_RIGHT) { SpectatingPlayer[playerid]++; ud = getActingPlayer(playerid,SpectatingPlayer[playerid]); if(ud == INVALID_PLAYER_ID) { SpectatingPlayer[playerid]--; return 1; } SpecPlayer(playerid,ud); } else if(lr == KEY_LEFT) { SpectatingPlayer[playerid]--; ud = getActingPlayer(playerid,SpectatingPlayer[playerid]); if(ud == INVALID_PLAYER_ID) { SpectatingPlayer[playerid]++; return 1; } SpecPlayer(playerid,ud); } return 1; } ClassSel_HandleTeamSelection(playerid) { new Keys,ud,lr; GetPlayerKeys(playerid,Keys,ud,lr); if(gPlayerTeamSelection[playerid] == -1) { ClassSel_SwitchToNextTeam(playerid); return; } if( (GetTickCount() - gPlayerLastTeamSelectionTick[playerid]) < delay ) return; if(Keys & KEY_FIRE) { gPlayerHasTeamSelected[playerid] = 1; PlayerTextDrawHide(playerid,TeamText[playerid]); PlayerTextDrawHide(playerid,LocText[playerid]); PlayerTextDrawHide(playerid,TeamCover[playerid]); TextDrawHideForPlayer(playerid,txtClassSelHelper);//Observer textdraw TogglePlayerSpectating(playerid,0); return; } printf("ClassSel_HandleTeamSelection"); if(lr > 0) { ClassSel_SwitchToNextTeam(playerid); } else if(lr < 0) { ClassSel_SwitchToPreviousTeam(playerid); } } public OnPlayerRequestClass(playerid, classid) { if(IsPlayerNPC(playerid)) return 1; printf("OnPlayerRequestClass"); if(gPlayerHasTeamSelected[playerid]) { ClassSel_SetupCharSelection(playerid); return 1; } else { if(GetPlayerState(playerid) != PLAYER_STATE_SPECTATING) { TogglePlayerSpectating(playerid,1); TextDrawShowForPlayer(playerid, txtClassSelHelper); gPlayerTeamSelection[playerid] = -1; } } return 0; } //---------------------------------------------------------- public OnPlayerSelectedMenuRow(playerid, row) { new Menu:CurrentMenu = GetPlayerMenu(playerid); new Menu:Current= GetPlayerMenu(playerid); TogglePlayerControllable(playerid,false); if(Current==infomenu) { TogglePlayerControllable(playerid,false); switch(row) { case 0: { TogglePlayerControllable(playerid,true); SendClientMessage(playerid,COLOR_WHITE,"SERVER: How to play"); SendClientMessage(playerid,COLOR_WHITE,"The goal of this mode, is to destroy the enemie's bed and wipe out all the remaining players to determine the winner team."); SendClientMessage(playerid,COLOR_WHITE,"You can use the /blowup command to destroy and enemies bed!"); } case 1: { TogglePlayerControllable(playerid,true); SendClientMessage(playerid,COLOR_WHITE,"SERVER: Q: How to destroy a bed?"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: A: Get close to the enemie's bed and use /blowup to destroy it!"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: Q: What can i do if i am unable to respawn due to a destroyed bed?"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: A: You can use the command /spec [playerid] to spectate other players!"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: Q: When does the game ends?"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: A: After a winning team is determined, means if only one team remains."); } case 2: { TogglePlayerControllable(playerid,true); SendClientMessage(playerid,COLOR_WHITE,"SERVER: If you commit one of these things it will get you banned!"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: NO Cheating"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: NO Spamming"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: NO Quitting to avoid anything! Better die in honor for a honorable cause!"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: NEVER kill your own team mates, it will get you banned!"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: NEVER exploit bugs in any way! Report them instead!"); } } } if(Current==ammunation) { TogglePlayerControllable(playerid,false); switch(row) { case 0: { ShowMenuForPlayer(pistols,playerid); } case 1: { ShowMenuForPlayer(microsmg,playerid); } case 2: { ShowMenuForPlayer(shotguns,playerid); } case 3: { ShowMenuForPlayer(items,playerid); } case 4: { ShowMenuForPlayer(smg,playerid); } case 5: { ShowMenuForPlayer(rifles,playerid); } case 6: { ShowMenuForPlayer(assaultrifle,playerid); } case 7: { ShowMenuForPlayer(Grenades,playerid); } case 8: { ShowMenuForPlayer(melee,playerid); } case 9: { ShowMenuForPlayer(special,playerid); } case 10: { HideMenuForPlayer(ammunation,playerid); ShowMenuForPlayer(shopmenu,playerid); } default: { print("Fail"); } } } else if(Current==pistols) { ShowMenuForPlayer(pistols,playerid); switch(row) { case 0: { SellPlayerWeapon(playerid,1500,22,50); } case 1: { SellPlayerWeapon(playerid,2500,23,50); } case 2: { SellPlayerWeapon(playerid,2500,24,50); } case 3: { HideMenuForPlayer(pistols,playerid); ShowMenuForPlayer(ammunation,playerid); } default: { print("Fail"); } } } else if(Current==microsmg) { ShowMenuForPlayer(microsmg,playerid); switch(row) { case 0: { SellPlayerWeapon(playerid,5500,32,50); } case 1: { SellPlayerWeapon(playerid,5000,28,50); } case 2: { HideMenuForPlayer(microsmg,playerid); ShowMenuForPlayer(ammunation,playerid); } default: { print("Fail"); } } } else if(Current==shotguns) { ShowMenuForPlayer(shotguns,playerid); switch(row) { case 0: { SellPlayerWeapon(playerid,12500,25,50); } case 1: { SellPlayerWeapon(playerid,15500,26,50); } case 2: { SellPlayerWeapon(playerid,55500,27,50); } case 3: { HideMenuForPlayer(shotguns,playerid); ShowMenuForPlayer(ammunation,playerid); } default: { print("Fail"); } } } else if(Current==items) { ShowMenuForPlayer(items,playerid); switch(row) { case 0: if(GetPlayerMoney(playerid) >= 2500) { GivePlayerMoneyText(playerid,-2500); SetPlayerArmour(playerid,100.0); } else { SendClientMessage(playerid,COLOR_WHITE,"SERVER: Insufficient balance! You can not afford this item!"); } case 1: { SellPlayerWeapon(playerid,2500,46,1); } case 2: { SellPlayerWeapon(playerid,2500,41,100); } case 3: { SellPlayerWeapon(playerid,2500,43,50); } case 4: if(GetPlayerMoney(playerid) >= 2500) { GivePlayerMoneyText(playerid,-2500); SetPlayerArmour(playerid,100.0); } else { SendClientMessage(playerid,COLOR_WHITE,"SERVER: Insufficient balance! You can not afford this item!"); } case 5: { HideMenuForPlayer(items,playerid); ShowMenuForPlayer(fightstyles,playerid); } case 6: { HideMenuForPlayer(items,playerid); ShowMenuForPlayer(ammunation,playerid); } default: { print("Fail"); } } } else if(Current==fightstyles) { ShowMenuForPlayer(fightstyles,playerid); switch(row) { case 0: { SellPlayerFightingStyle (playerid,2500, FIGHT_STYLE_KUNGFU); } case 1: { SellPlayerFightingStyle (playerid,2500, FIGHT_STYLE_KNEEHEAD); } case 2: { SellPlayerFightingStyle (playerid,2500, FIGHT_STYLE_BOXING); } case 3: { SellPlayerFightingStyle (playerid,2500, FIGHT_STYLE_GRABKICK); } case 4: { SellPlayerFightingStyle (playerid,2500, FIGHT_STYLE_ELBOW); } case 5: { SetPlayerFightingStyle (playerid, FIGHT_STYLE_NORMAL); } case 6: { HideMenuForPlayer(fightstyles,playerid); ShowMenuForPlayer(items,playerid); } default: { print("Fail"); } } } else if(Current==smg) { ShowMenuForPlayer(smg,playerid); switch(row) { case 0: { SellPlayerWeapon(playerid,20000,29,50); } case 1: { HideMenuForPlayer(smg,playerid); ShowMenuForPlayer(ammunation,playerid); } default: { print("Fail"); } } } else if(Current==assaultrifle) { ShowMenuForPlayer(assaultrifle,playerid); switch(row) { case 0: { SellPlayerWeapon(playerid,40000,30,500); } case 1: { SellPlayerWeapon(playerid,45000,31,500); } case 2: { HideMenuForPlayer(assaultrifle,playerid); ShowMenuForPlayer(ammunation,playerid); } default: { print("Fail"); } } } else if(Current==rifles) { ShowMenuForPlayer(rifles,playerid); switch(row) { case 0: { SellPlayerWeapon(playerid,12500,33,50); } case 1: { SellPlayerWeapon(playerid,40000,34,50); } case 2: { HideMenuForPlayer(rifles,playerid); ShowMenuForPlayer(ammunation,playerid); } default: { print("Fail"); } } } else if(Current==Grenades) { ShowMenuForPlayer(Grenades,playerid); switch(row) { case 0: { SellPlayerWeapon(playerid,125000,16,50); } case 1: { SellPlayerWeapon(playerid,25000,17,50); } case 2: { SellPlayerWeapon(playerid,25000,18,50); } case 3: { HideMenuForPlayer(Grenades,playerid); ShowMenuForPlayer(ammunation,playerid); } default: { print("Fail"); } } } else if(Current==yesno) { ShowMenuForPlayer(yesno,playerid); switch(row) { case 0: { SetPlayerHealth(playerid,0.0); SendDeathMessage(playerid, playerid, 22); } case 1: { HideMenuForPlayer(yesno,playerid); TogglePlayerControllable(playerid,true); } case 2: { HideMenuForPlayer(yesno,playerid); ShowMenuForPlayer(shopmenu,playerid); } default: { print("Fail"); } } } else if(Current==melee) { ShowMenuForPlayer(melee,playerid); switch(row) { case 0: { GivePlayerWeapon(playerid,5,1); } case 1: { GivePlayerWeapon(playerid,11,1); } case 2: { SellPlayerWeapon(playerid,100000,9,1); } case 3: { GivePlayerWeapon(playerid,8,1); } case 4: { GivePlayerWeapon(playerid,7,1); } case 5: { GivePlayerWeapon(playerid,4,1); } case 6: { GivePlayerWeapon(playerid,3,1); } case 7: { GivePlayerWeapon(playerid,2,1); } case 8: { HideMenuForPlayer(melee,playerid); ShowMenuForPlayer(ammunation,playerid); } default: { print("Fail"); } } } else if(Current==special) { ShowMenuForPlayer(special,playerid); switch(row) { case 0: { SellPlayerWeapon(playerid,2000000,38,1000); } case 1: { SellPlayerWeapon(playerid,250000,35,5); } case 2: { SellPlayerWeapon(playerid,250000,37,300); } case 3: { HideMenuForPlayer(special,playerid); ShowMenuForPlayer(ammunation,playerid); } default: { print("Fail"); } } } if(CurrentMenu == shopmenu) { switch(row) { case 0: { TogglePlayerControllable(playerid,false); HideMenuForPlayer(shopmenu,playerid); ShowMenuForPlayer(ammunation,playerid); } case 1: { if(GetPlayerMoney(playerid) > 10000 && PSkill[playerid] == 0) { PSkill[playerid]=1; GivePlayerMoneyText(playerid,-10000); SendClientMessage(playerid, 0xFFFFFFFF, "SERVER: Skill upgraded"); SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL,1000); SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL_SILENCED,1000); SetPlayerSkillLevel(playerid,WEAPONSKILL_DESERT_EAGLE,1000); SetPlayerSkillLevel(playerid,WEAPONSKILL_SHOTGUN,1000); SetPlayerSkillLevel(playerid,WEAPONSKILL_SAWNOFF_SHOTGUN,1000); SetPlayerSkillLevel(playerid,WEAPONSKILL_SPAS12_SHOTGUN,1000); SetPlayerSkillLevel(playerid,WEAPONSKILL_MICRO_UZI,1000); SetPlayerSkillLevel(playerid,WEAPONSKILL_MP5,1000); SetPlayerSkillLevel(playerid,WEAPONSKILL_AK47,1000); SetPlayerSkillLevel(playerid,WEAPONSKILL_M4,1000); SetPlayerSkillLevel(playerid,WEAPONSKILL_SNIPERRIFLE,1000); ShowMenuForPlayer(shopmenu,playerid); } else if(GetPlayerMoney(playerid) < 10000) { SendClientMessage(playerid,COLOR_WHITE,"SERVER: Insufficient balance! You can not afford this item!"); ShowMenuForPlayer(shopmenu,playerid); TogglePlayerControllable(playerid,false); } else if(PSkill[playerid] != 0) { SendClientMessage(playerid,COLOR_WHITE,"SERVER: You already bought this item!"); TogglePlayerControllable(playerid,true); } } case 2: { if(GetPlayerMoney(playerid) >= 85000) { PStealth[playerid]=1; SendClientMessage(playerid,COLOR_WHITE,"SERVER: You are equipped with a stealth kit. You can use /stealth to hide yourself"); GivePlayerMoneyText(playerid,-85000); TogglePlayerControllable(playerid,1); } else { SendClientMessage(playerid,COLOR_WHITE,"SERVER: Insufficient balance! You can not afford this item!"); TogglePlayerControllable(playerid,1); } } case 3: if(GetPlayerMoney(playerid) >= 100000 && PBomb[playerid] == 0) { PBomb[playerid]=1; SendClientMessage(playerid, 0xFFFFFFFF, "SERVER: You have bought a bomb! Now you can place bombs by using /dropbomb!"); ShowMenuForPlayer(shopmenu,playerid); TogglePlayerControllable(playerid,false); GivePlayerMoneyText(playerid,-100000); } else if(PBomb[playerid] != 0) { SendClientMessage(playerid,COLOR_WHITE,"SERVER: You already bought this item!"); TogglePlayerControllable(playerid,1); } else if(GetPlayerMoney(playerid) < 100000) { SendClientMessage(playerid,COLOR_WHITE,"SERVER: Insufficient balance! You can not afford this item!"); ShowMenuForPlayer(shopmenu,playerid); TogglePlayerControllable(playerid,false); } case 4: if(GetPlayerMoney(playerid) >= 50000 && Warppowder[playerid] == 0) { Warppowder[playerid]=1; SendClientMessage(playerid, 0xFFFFFFFF, "SERVER: You have bought a Warpkit! You can teleport yourself back to your base by using /warp"); ShowMenuForPlayer(shopmenu,playerid); TogglePlayerControllable(playerid,false); GivePlayerMoneyText(playerid,-50000); } else if(Warppowder[playerid] != 0) { SendClientMessage(playerid,COLOR_WHITE,"SERVER: You already bought this item!"); TogglePlayerControllable(playerid,1); } else if(GetPlayerMoney(playerid) < 100000) { SendClientMessage(playerid,COLOR_WHITE,"SERVER: Insufficient balance! You can not afford this item!"); ShowMenuForPlayer(shopmenu,playerid); TogglePlayerControllable(playerid,false); } case 5: { HideMenuForPlayer(shopmenu,playerid); ShowMenuForPlayer(yesno,playerid); } } } } stock GetTeamCount(teamid) { new playercount = 0; for(new i = 0; i < MAX_PLAYERS; i++) { if(GetPlayerState(i) == PLAYER_STATE_NONE) continue; if(gPlayerTeamSelection[i] != teamid) continue; playercount++; } return playercount; } public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart) { if(issuerid != INVALID_PLAYER_ID && weaponid == 34 && bodypart == 9) { // One shot to the head to kill with sniper rifle SetPlayerHealth(playerid, 0.0); } return 1; } stock TeamsAlive(bool:value) { new i=0,count=0; while(i 0) { count++; } i++; } if(bool:value == false) switch(count) { case 1: { switch(TeamsAlive(true)) { case FIRST_TEAM: { for(new d;d= 3 case THIRD_TEAM: { for(new d;d= 4 case FOURTH_TEAM: { for(new d;d= 5 case FIFTH_TEAM: { for(new d;d -1) { SendClientMessage(playerid,COLOR_WHITE,"Match found! MoneyPickups contains values of ActorPickups"); new tstring[144]; format(tstring,sizeof(tstring),"MoneyPickups Val: %d Index: %d matchs ActorPickups Val: %d Index :%d",MoneyPickups[mres],mres,ActorPickups[i],i); SendClientMessage(playerid,-1,tstring); break; } } } if(strcmp(cmd, "/getplayerteam", true) == 0) { new targetplayer; if(sscanf(cmdtext[strlen("/getplayerteam")+1], "i", targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /getplayerteam [playeridid]"); new pTeam[144]; format(pTeam,sizeof(pTeam),"SERVER: Player %d is part of Team: %d",targetplayer,gPlayerTeamSelection[targetplayer]); strcat (pTeam,FIRST_TEAM_COLOR_TAG); SendClientMessage(playerid, -1, pTeam); SendClientMessage(playerid,COLOR_WHITE,pTeam); } if(strcmp(cmd, "/stealth", true) == 0) { if(PStealth[playerid] == 1) { PStealth[playerid]=-1; SendClientMessage(playerid,COLOR_WHITE,"SERVER: You are now invisible for 60 seconds!"); SetTimerEx("reveal", 60000, false,"i",playerid); } else { return SendClientMessage(playerid,COLOR_WHITE,"SERVER: You do not have a stealth package!"); } #if defined TEAMSIZE #if TEAMSIZE >= 2 { switch(gPlayerTeamSelection[playerid]) { case 0: { SetPlayerColor(playerid,COLOR_TEAM_ONE_STEALTH); } case 1: { SetPlayerColor(playerid,COLOR_TEAM_TWO_STEALTH); } } } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 3 { switch(gPlayerTeamSelection[playerid]) { case 2: { SetPlayerColor(playerid,COLOR_TEAM_THREE_STEALTH); } } } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 4 { switch(gPlayerTeamSelection[playerid]) { case 3: { SetPlayerColor(playerid,COLOR_TEAM_FOUR_STEALTH); } } } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 5 { switch(gPlayerTeamSelection[playerid]) { case 4: { SetPlayerColor(playerid,COLOR_TEAM_FIVE_STEALTH); } } } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 6 { switch(gPlayerTeamSelection[playerid]) { case 5: { SetPlayerColor(playerid,COLOR_TEAM_SIX_STEALTH); } } } #endif #endif return 1; } if(strcmp(cmd, "/warp", true) == 0) //Warppowder { if(Warppowder[playerid] == 1 && !IsPlayerInAnyVehicle(playerid)) { Warppowder[playerid]=0; SendClientMessage(playerid,COLOR_WHITE,"SERVER: Warning! Don't move until teleport!"); WarpTimer = SetTimerEx("warpcount", 1000, true,"i",playerid); new Float:x,Float:y,Float:z; GetPlayerPos(playerid,x,y,z); wX[playerid]=x; wY[playerid]=y; wZ[playerid]=z; Beam[playerid] = CreateObject(18671,x,y,z-1,0,0,0,300.0); } else if(Warppowder[playerid] != 1) { return SendClientMessage(playerid,COLOR_WHITE,"SERVER: You do not have Warppowder!"); } else if(IsPlayerInAnyVehicle(playerid)) { return SendClientMessage(playerid,COLOR_WHITE,"SERVER: You can not use Warpkits inside of vehicles"); } return 1; } if(strcmp(cmd, "/jetpack", true) == 0) { if(!IsPlayerAdmin(playerid)) { return 0; } SendClientMessage(playerid,COLOR_WHITE, "SERVER: Jetpack activated!"); SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USEJETPACK); return 1; } if(strcmp(cmd, "/sound", true) == 0) { new targetsoundid; if(sscanf(cmdtext[strlen("/sound")+1], "i", targetsoundid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /sound [soundid]"); for(new i = 0; i < MAX_PLAYERS; i++) { PlayerPlaySound(i, targetsoundid, 0,0,0); } printf("Playing SoundID: %i",targetsoundid); return 1; } if(strcmp(cmd, "/spec", true) == 0) { if(!IsPlayerAdmin(playerid)) return 0; new targetplayer; if(sscanf(cmdtext[strlen("/spec")+1], "u", targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /spec [playerid]"); if(!IsPlayerConnected(targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected"); if(playerid == targetplayer) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: You cannot spectate yourself!"); if(gPlayerTeamSelection[playerid] == TEAM_SPECTATOR || IsPlayerAdmin(playerid) ) { SpecPlayer(playerid,targetplayer); } else { return 0; } return 1; } if(strcmp(cmd, "/specoff", true) == 0) { if(!IsPlayerAdmin(playerid)) return 0; if(IsSpecing[playerid] == 0)return SendClientMessage(playerid,COLOR_WHITE,"SERVER: You are not spectating"); TogglePlayerSpectating(playerid, 0); return 1; } if(strcmp(cmd, "/dropmoney", true) == 0) { new dropval; if(sscanf(cmdtext[strlen("/dropmoney")+1], "i", dropval)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /dropmoney [value]"); if(GetPlayerMoney(playerid) >= dropval && maxmoney <= 4000 && dropval > 0 && dropval <= 100000 && (maxmoney+(dropval/MoneyVal))<(MAX_PICKUPS-sizeof(ActorPickups)-sizeof(InfoPickups)-1-((dropval/1000)+maxmoney)) && dropval != 0 && !IsPlayerInAnyVehicle(playerid)) { if(dropval%MoneyVal == 0) { new dropstring[32]; format(dropstring,sizeof(dropstring),"SERVER: Dropped $%d",dropval); SendClientMessage(playerid, COLOR_WHITE, dropstring); GivePlayerMoneyText(playerid,-dropval); for(new i; i 100000) { SendClientMessage(playerid, COLOR_WHITE, "SERVER: The desired value has to be $100000 or less"); } if(dropval==0) { SendClientMessage(playerid, COLOR_WHITE, "SERVER: You can not drop nothing!"); } if((maxmoney+dropval/MoneyVal)>=4095 && dropval <= 100000) { new allowmoney[128]; format(allowmoney,sizeof(allowmoney),"SERVER: Because of limitations you can not drop more than $%d right now!",(4095-maxmoney)*MoneyVal); SendClientMessage(playerid,COLOR_WHITE,allowmoney); printf("Player may only drop %d",(4095-maxmoney)*MoneyVal); } } } /*if(strcmp(cmd, "/freeze", true) == 0) new target; if(!sscanf(cmdtext[strlen("/freeze")+1], "u", target)) { if(IsPlayerAdmin(playerid)) { //return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /freeze [playerid]"); if(!IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected"); TogglePlayerControllable(target,false); } } else { return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /freeze [playerid]"); }*/ if(strcmp(cmd, "/kill", true) == 0) { if(IsPlayerAdmin(playerid)) { new targetplayer; if(sscanf(cmdtext[strlen("/kill")+1], "u", targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /kill [playerid]"); if(!IsPlayerConnected(targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected"); SetPlayerHealth(targetplayer,0.0); } } if(strcmp(cmd, "/givecash", true) == 0) { if(IsPlayerAdmin(playerid)) { new targetplayer,moneyamount; new tname[MAX_PLAYER_NAME]; new aname[MAX_PLAYER_NAME]; new givemoneystring[128]; if(sscanf(cmdtext[strlen("/givecash")+1], "ui", targetplayer,moneyamount)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givecash [playerid] [amount]"); if(!IsPlayerConnected(targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected"); GivePlayerMoney(targetplayer,moneyamount); GetPlayerName(targetplayer,tname,sizeof(tname)); GetPlayerName(playerid,aname,sizeof(aname)); format(givemoneystring,sizeof(givemoneystring),"SERVER: Admin %s (%d) gave %s (%d) $%d.",aname,playerid,tname,targetplayer,moneyamount); SendClientMessageToAll(COLOR_WHITE,givemoneystring); } } if(strcmp(cmd, "/slap", true) == 0) { if(IsPlayerAdmin(playerid)) { new targetplayer; new Float:a, Float:b, Float:c; if(sscanf(cmdtext[strlen("/slap")+1], "u", targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /slap [playerid]"); if(!IsPlayerConnected(targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected"); GetPlayerPos(targetplayer,a,b,c); SetPlayerPos(targetplayer,a,b,c+10); } } if(strcmp(cmd, "/reset", true) == 0) { if(IsPlayerAdmin(playerid)) { new targetplayer; if(sscanf(cmdtext[strlen("/reset")+1], "u", targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /reset [playerid]"); if(!IsPlayerConnected(targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected"); if(gPlayerHasTeamSelected[targetplayer] == -1) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player is still in team selection!"); ResetPlayerData(targetplayer); ResetPlayerMoney(targetplayer); } } if(strcmp(cmd, "/checkmoney", true) == 0) { if(IsPlayerAdmin(playerid)) { new targetplayer; new tname[144]; if(sscanf(cmdtext[strlen("/checkmoney")+1], "u", targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /checkmoney [playerid]"); if(!IsPlayerConnected(targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected"); if(gPlayerHasTeamSelected[targetplayer] == -1) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player is still in team selection!"); GetPlayerName(targetplayer,tname,sizeof(tname)); SendClientMessageEx(playerid,COLOR_WHITE,"SERVER: Player %s(%d) is in posession of $%d at this moment",tname,targetplayer,GetPlayerMoney(targetplayer)); } } if(strcmp(cmd, "/spawn", true) == 0) { if(IsPlayerAdmin(playerid)) { new targetplayer; if(sscanf(cmdtext[strlen("/spawn")+1], "u", targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /spawn [playerid]"); if(!IsPlayerConnected(targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected"); if(gPlayerHasTeamSelected[targetplayer] == -1) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player is still in team selection!"); TeleportPlayerToBase(targetplayer); } } if(strcmp(cmd, "/unfreeze", true) == 0) { if(IsPlayerAdmin(playerid)) { new targetplayer; if(sscanf(cmdtext[strlen("/unfreeze")+1], "u", targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /unfreeze [playerid]"); if(!IsPlayerConnected(targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected"); TogglePlayerControllable(targetplayer,true); } } if(strcmp(cmd, "/getmoneycount", true) == 0) { new moneyvalstring[128]; format(moneyvalstring,sizeof(moneyvalstring),"SERVER: $%d have been generated.%d money pickups have been created",moneyval,maxmoney); SendClientMessage(playerid,COLOR_WHITE,moneyvalstring); } if(strcmp(cmd, "/goto", true) == 0) { if(IsPlayerAdmin(playerid)) { new targetplayer; if(sscanf(cmdtext[strlen("/goto")+1], "u", targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /goto [playerid]"); if(!IsPlayerConnected(targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected"); if(playerid == targetplayer) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: You cannot goto yourself!"); if(IsPlayerConnected(targetplayer)) { new Float:x, Float:y, Float:z; GetPlayerPos(targetplayer, x, y, z); SetPlayerInterior(playerid,GetPlayerInterior(targetplayer)); SetPlayerPos(playerid, x+1, y+1, z); return 1; } } else { return 0; } } if(strcmp(cmd, "/acmds", true) == 0) { SendClientMessage(playerid,COLOR_WHITE,"SERVER: Commands for admin use only below."); SendClientMessage(playerid,COLOR_WHITE,"SERVER: /goto [playerid] /playertoplayer [playerid] [targetplayerid]"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: /getmoneycount /get [playerid] /netstats [playerid]"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: /kill [playerid] /spawn [playerid] /slap [playerid]"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: /givecash [playerid] [value] /freeze [playerid] /unfreeze [playerid]"); SendClientMessage(playerid,COLOR_WHITE,"SERVER: /sound [soundid] /spec [playerid]"); } if(strcmp(cmd, "/playertoplayer", true) == 0) { if(IsPlayerAdmin(playerid)) { new targetplayer1,targetplayer2; if(sscanf(cmdtext[strlen("/playertoplayer")+1], "uu", targetplayer1,targetplayer2)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /playertoplayer [playerid] [playerid]"); if(!IsPlayerConnected(targetplayer1) || !IsPlayerConnected(targetplayer2)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected"); if(playerid == targetplayer1 && playerid == targetplayer2 ) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: You cannot teleport yourself to yourself!"); new Float:d1,Float:d2,Float:d3; GetPlayerPos(targetplayer2,d1,d2,d3); SetPlayerPos(targetplayer1,d1,d2,d3); } else { return 0; } } if(strcmp(cmd, "/getmoneycount", true) == 0) { new moneyvalstring[128]; format(moneyvalstring,sizeof(moneyvalstring),"SERVER: $%d have been generated.%d money pickups have been created",moneyval,maxmoney); SendClientMessage(playerid,COLOR_WHITE,moneyvalstring); } if(strcmp(cmd, "/get", true) == 0) { if(IsPlayerAdmin(playerid)) { new targetplayer; if(sscanf(cmdtext[strlen("/get")+1], "u", targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /get [playerid]"); if(!IsPlayerConnected(targetplayer)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected"); if(playerid == targetplayer) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: You cannot get yourself!"); if(IsPlayerConnected(targetplayer)) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); SetPlayerInterior(targetplayer,GetPlayerInterior(playerid)); SetPlayerPos(targetplayer, x+1, y+1, z); return 1; } } else { return 0; } } if(strcmp(cmd, "/dropbomb", true) == 0) { if(PBomb[playerid] == 1 && GetPlayerInterior(playerid) == 0 && !IsPlayerInAnyVehicle(playerid)) { ApplyAnimation(playerid, "BOMBER", "BOM_Plant_Loop", 4.0, 1, 0, 0, 1, 1); PBombID[playerid]=1; PBomb[playerid]=-1; GetPlayerPos(playerid,pX[playerid],pY[playerid],pZ[playerid]); BombObject[playerid] = CreateObject(363,pX[playerid],pY[playerid],(pZ[playerid]-0.4),0,0,0);//Bomb object SendClientMessage(playerid, COLOR_WHITE, "SERVER: Bomb placed! Use ~k~~CONVERSATION_YES~ or /detonate to blow it up!"); for(new k;k "); if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: Player not connected"); if(playerid == id) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: You cannot pm yourself!"); GetPlayerName(playerid, Name1, sizeof(Name1)); GetPlayerName(id, Name2, sizeof(Name2)); format(str, sizeof(str), "PM To %s(ID %d): %s", Name2, id, str2); SendClientMessage(playerid, COLOR_YELLOW, str); format(str, sizeof(str), "PM From %s(ID %d): %s", Name1, playerid, str2); SendClientMessage(id, COLOR_YELLOW, str); return 1; } if(strcmp(cmdtext, "/blowup", true) == 0) { for(new i = 0; i < sizeof(beds); i++) { new Float:health; GetPlayerHealth(playerid,health); if(running !=1 && IsPlayerInRangeOfPoint(playerid,3.0,beds[i][0],beds[i][1],beds[i][2]) && health > 0 && !IsPlayerInAnyVehicle(playerid)) // In this script we deal with players only { if((i == 0 && gPlayerTeamSelection[playerid] == FIRST_TEAM) || (i == 1 && gPlayerTeamSelection[playerid] == SECOND_TEAM) || (i == 2 && gPlayerTeamSelection[playerid] == THIRD_TEAM) || (i == 3 && gPlayerTeamSelection[playerid] == FOURTH_TEAM) || (i == 4 && gPlayerTeamSelection[playerid] == FIFTH_TEAM) || (i == 5 && gPlayerTeamSelection[playerid] == SIXTH_TEAM)) return SendClientMessage(playerid, COLOR_WHITE, "SERVER: You cannot blow up the bed of your own team!"); running = 1; SetPlayerScore(playerid,GetPlayerScore(playerid)+1); PlayerInfo[playerid][pBeds]=GetPlayerScore(playerid); SetTimer("BlowUpThisBed", bombtimer, false); if(i == 0 && BED_STATE_TEAM_ONE !=-1 ) { BED_STATE_TEAM_ONE=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team "#FIRST_TEAM_COLOR_TAG); } if(i == 1 && BED_STATE_TEAM_TWO !=-1 ) { BED_STATE_TEAM_TWO=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team "#SECOND_TEAM_COLOR_TAG); } #if defined TEAMSIZE #if TEAMSIZE >=3 if(i == 2 && BED_STATE_TEAM_THREE !=-1 ) { BED_STATE_TEAM_THREE=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team "#THIRD_TEAM_COLOR_TAG); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=4 if(i == 3 && BED_STATE_TEAM_FOUR !=-1 ) { BED_STATE_TEAM_FOUR=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team "#FOURTH_TEAM_COLOR_TAG); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=5 if(i == 4 && BED_STATE_TEAM_FIVE !=-1 ) { BED_STATE_TEAM_FIVE=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team "#FIFTH_TEAM_COLOR_TAG); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=6 if(i == 5 && BED_STATE_TEAM_SIX !=-1 ) { BED_STATE_TEAM_SIX=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team "#SIXTH_TEAM_COLOR_TAG); } #endif #endif PBeds[playerid]+=1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: Planted Bomb Successfully. Lets Blow This Bed Up!"); SetPlayerScore(playerid, GetPlayerScore(playerid) + 1); SendClientMessage(playerid, COLOR_WHITE, "SERVER: Keep Running! Bed Will Blow Up In 5 seconds!"); GetPlayerPos(playerid, x1, y1, z1); ApplyAnimation(playerid, "BOMBER", "BOM_Plant_Loop", 4.0, 1, 0, 0, 1, 1); for(new k = 0; k < MAX_PLAYERS; k++) { PlayerPlaySound(k,7416,x1,y1,z1); } CountDownTimer = SetTimer("CountDown", 1000, true); new Float:dist = GetDistance(beds[i][0],beds[i][1],beds[i][2],x1,y1,z1); printf("Distance to closest bed: %f, Index: %d", dist, i); return 1; } } return 0; } return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if(PRESSED(KEY_YES) && PBomb[playerid] == -1 && PBombID[playerid] == 1 && IsPlayerInRangeOfPoint(playerid,150,pX[playerid],pY[playerid],pZ[playerid])) { PlayerInfo[playerid][pBombs]++; PBombID[playerid]=0; PBomb[playerid]=0; CreateExplosion(pX[playerid],pY[playerid],pZ[playerid],7,10); CreateExplosion(pX[playerid],pY[playerid],pZ[playerid],9,10); SendClientMessage(playerid, COLOR_WHITE, "SERVER: Bomb detonated!"); PlayerPlaySound(playerid, 21001, 0, 0, 0); DestroyObject(BombObject[playerid]); for(new i = 0; i < sizeof(beds[]); i++) { new Float:health; GetPlayerHealth(playerid,health); new Float:dist = GetDistance(beds[i][0],beds[i][1],beds[i][2],pX[playerid],pY[playerid],pZ[playerid]); if(dist < 4) { running = 1; if(!(i == 0 && gPlayerTeamSelection[playerid] == FIRST_TEAM) || !(i == 1 && gPlayerTeamSelection[playerid] == THIRD_TEAM) || !(i == 2 && gPlayerTeamSelection[playerid] == SECOND_TEAM)) PBeds[playerid]+=1; if(i == 0 && BED_STATE_TEAM_ONE !=-1 ) { BED_STATE_TEAM_ONE=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You blew up the bed of Team "#FIRST_TEAM_COLOR_TAG); } if(i == 1 && BED_STATE_TEAM_TWO !=-1 ) { BED_STATE_TEAM_THREE=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You blew up the bed of Team "#SECOND_TEAM_COLOR_TAG); } #if defined TEAMSIZE #if TEAMSIZE >=3 if(i == 2 && BED_STATE_TEAM_THREE !=-1 ) { BED_STATE_TEAM_TWO=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You blew up the bed of Team "#THIRD_TEAM_COLOR_TAG); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=4 if(i == 3 && BED_STATE_TEAM_FOUR !=-1 ) { BED_STATE_TEAM_FOUR=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You blew up the bed of Team "#FOURTH_TEAM_COLOR_TAG); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=5 if(i == 4 && BED_STATE_TEAM_FIVE !=-1 ) { BED_STATE_TEAM_FIVE=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You blew up the bed of Team "#FIFTH_TEAM_COLOR_TAG); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=6 if(i == 5 && BED_STATE_TEAM_SIX !=-1 ) { BED_STATE_TEAM_SIX=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You blew up the bed of Team "#SIXTH_TEAM_COLOR_TAG); } #endif #endif SetPlayerScore(playerid, GetPlayerScore(playerid) + 1); x1=pX[playerid]; y1=pY[playerid]; z1=pZ[playerid]; ApplyAnimation(playerid, "BOMBER", "BOM_Plant_Loop", 4.0, 1, 0, 0, 1, 1); SetTimer("BlowUpThisBed", 130, false); return 1; } } } return 1; } public OnPlayerDeath(playerid, killerid, reason) { PlayerInfo[playerid][pDeaths]++; if(killerid != INVALID_PLAYER_ID) PlayerInfo[killerid][pKills]++; ResetPlayerData(playerid); new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); new matediedstringgrey[128]; new matediedstringred[128]; new matediedstringblue[128]; HideMenuForPlayer(ammunation,playerid); HideMenuForPlayer(pistols,playerid); HideMenuForPlayer(microsmg,playerid); HideMenuForPlayer(shotguns,playerid); HideMenuForPlayer(items,playerid); HideMenuForPlayer(smg,playerid); HideMenuForPlayer(rifles,playerid); HideMenuForPlayer(assaultrifle,playerid); HideMenuForPlayer(Grenades,playerid); HideMenuForPlayer(melee,playerid); HideMenuForPlayer(special,playerid); HideMenuForPlayer(shopmenu,playerid); HideMenuForPlayer(yesno,playerid); if(GetPlayerWeapon(playerid) == 16) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid,x,y,z); CreateExplosion(x,y,z,7,10); CreateExplosion(x,y,z,9,10); } if(BED_STATE_TEAM_ONE != 0 && gPlayerTeamSelection[playerid] == FIRST_TEAM) { format(matediedstringgrey,sizeof(matediedstringgrey),"SERVER: %s (%d) has been killed, watch out! %d players left in Team "#FIRST_TEAM_COLOR_TAG,pname,playerid,GetTeamCount(FIRST_TEAM)-1); SendClientMessageToAll(COLOR_WHITE,matediedstringgrey); } if(BED_STATE_TEAM_TWO != 0 && gPlayerTeamSelection[playerid] == SECOND_TEAM) { format(matediedstringred,sizeof(matediedstringred),"SERVER: %s (%d) has been killed, watch out! %d players left in Team "#SECOND_TEAM_COLOR_TAG,pname,playerid,GetTeamCount(SECOND_TEAM)-1); SendClientMessageToAll(COLOR_WHITE,matediedstringred); } #if defined TEAMSIZE #if TEAMSIZE >=3 if(BED_STATE_TEAM_THREE != 0 && gPlayerTeamSelection[playerid] == THIRD_TEAM) { format(matediedstringblue,sizeof(matediedstringblue),"SERVER: %s (%d) has been killed, watch out! %d players left in Team "#THIRD_TEAM_COLOR_TAG,pname,playerid,GetTeamCount(THIRD_TEAM)-1); SendClientMessageToAll(COLOR_WHITE,matediedstringblue); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=4 if(BED_STATE_TEAM_FOUR != 0 && gPlayerTeamSelection[playerid] == FOURTH_TEAM) { format(matediedstringgrey,sizeof(matediedstringgrey),"SERVER: %s (%d) has been killed, watch out! %d players left in Team "#FOURTH_TEAM_COLOR_TAG,pname,playerid,GetTeamCount(FOURTH_TEAM)-1); SendClientMessageToAll(COLOR_WHITE,matediedstringgrey); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >=5 if(BED_STATE_TEAM_FIVE != 0 && gPlayerTeamSelection[playerid] == FIFTH_TEAM) { format(matediedstringred,sizeof(matediedstringred),"SERVER: %s (%d) has been killed, watch out! %d players left in Team "#FIFTH_TEAM_COLOR_TAG,pname,playerid,GetTeamCount(FIFTH_TEAM)-1); SendClientMessageToAll(COLOR_WHITE,matediedstringred); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE ==6 if(BED_STATE_TEAM_SIX != 0 && gPlayerTeamSelection[playerid] == SIXTH_TEAM) { format(matediedstringblue,sizeof(matediedstringblue),"SERVER: %s (%d) has been killed, watch out! %d players left in Team "#SIXTH_TEAM_COLOR_TAG,pname,playerid,GetTeamCount(SIXTH_TEAM)-1); SendClientMessageToAll(COLOR_WHITE,matediedstringblue); } #endif #endif new playercash; playercash = GetPlayerMoney(playerid); SendDeathMessage(killerid, playerid, reason); // Shows the kill in the killfeed gPlayerHasTeamSelected[playerid] = 0; TextDrawHideForPlayer(playerid,txtTimeDisp); playercash = GetPlayerMoney(playerid); ResetPlayerMoney(playerid); GivePlayerMoneyText(playerid, -playercash); LastMoney[playerid]=playercash; if(killerid != playerid && killerid != INVALID_PLAYER_ID) { GivePlayerMoneyText(killerid,playercash); } ResetPlayerMoney(playerid); PKills[playerid] += 1; if(BED_STATE_TEAM_ONE!=0 && FIRST_TEAM == gPlayerTeamSelection[playerid]) { SendClientMessageEx(playerid,COLOR_WHITE,"SERVER: Unable to respawn. The bed of team %s {FFFFFF}already has been destroyed.",FIRST_TEAM_COLOR_TAG); SendClientMessage(playerid,COLOR_WHITE,"SERVER: Entering spectator mode.."); SetPlayerCameraPos(playerid,243.2876,1802.5547,7.4141); SetPlayerCameraLookAt(playerid,243.1261,1805.2798,8.3794); gPlayerTeamSelection[playerid] =TEAM_SPECTATOR; SetPlayerColor(playerid,COLOR_WHITE); SpecRandomPlayer(playerid); } if(BED_STATE_TEAM_TWO!=0 && SECOND_TEAM == gPlayerTeamSelection[playerid]) { SendClientMessageEx(playerid,COLOR_WHITE,"SERVER: Unable to respawn. The bed of team %s {FFFFFF}already has been destroyed.",SECOND_TEAM_COLOR_TAG); SendClientMessage(playerid,COLOR_WHITE,"SERVER: Entering spectator mode.."); SetPlayerCameraPos(playerid,243.2876,1802.5547,7.4141); SetPlayerCameraLookAt(playerid,243.1261,1805.2798,8.3794); gPlayerTeamSelection[playerid] =TEAM_SPECTATOR; SetPlayerColor(playerid,COLOR_WHITE); SpecRandomPlayer(playerid); } #if defined TEAMSIZE #if TEAMSIZE >= 3 if(BED_STATE_TEAM_THREE!=0 && THIRD_TEAM == gPlayerTeamSelection[playerid]) { SendClientMessageEx(playerid,COLOR_WHITE,"SERVER: Unable to respawn. The bed of team %s {FFFFFF}already has been destroyed.",THIRD_TEAM_COLOR_TAG); SendClientMessage(playerid,COLOR_WHITE,"SERVER: Entering spectator mode.."); SetPlayerCameraPos(playerid,243.2876,1802.5547,7.4141); SetPlayerCameraLookAt(playerid,243.1261,1805.2798,8.3794); gPlayerTeamSelection[playerid] =TEAM_SPECTATOR; SetPlayerColor(playerid,COLOR_WHITE); SpecRandomPlayer(playerid); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 4 if(BED_STATE_TEAM_FOUR!=0 && FOURTH_TEAM == gPlayerTeamSelection[playerid]) { SendClientMessageEx(playerid,COLOR_WHITE,"SERVER: Unable to respawn. The bed of team %s {FFFFFF}already has been destroyed.",FOURTH_TEAM_COLOR_TAG); SendClientMessage(playerid,COLOR_WHITE,"SERVER: Entering spectator mode.."); SetPlayerCameraPos(playerid,243.2876,1802.5547,7.4141); SetPlayerCameraLookAt(playerid,243.1261,1805.2798,8.3794); gPlayerTeamSelection[playerid] =TEAM_SPECTATOR; SetPlayerColor(playerid,COLOR_WHITE); SpecRandomPlayer(playerid); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 5 if(BED_STATE_TEAM_FIVE!=0 && FIFTH_TEAM == gPlayerTeamSelection[playerid]) { SendClientMessageEx(playerid,COLOR_WHITE,"SERVER: Unable to respawn. The bed of team %s {FFFFFF}already has been destroyed.",FIFTH_TEAM_COLOR_TAG); SendClientMessage(playerid,COLOR_WHITE,"SERVER: Entering spectator mode.."); SetPlayerCameraPos(playerid,243.2876,1802.5547,7.4141); SetPlayerCameraLookAt(playerid,243.1261,1805.2798,8.3794); gPlayerTeamSelection[playerid] =TEAM_SPECTATOR; SetPlayerColor(playerid,COLOR_WHITE); SpecRandomPlayer(playerid); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE == 6 if(BED_STATE_TEAM_SIX!=0 && SIXTH_TEAM == gPlayerTeamSelection[playerid]) { SendClientMessageEx(playerid,COLOR_WHITE,"SERVER: Unable to respawn. The bed of team %s {FFFFFF}already has been destroyed.",SIXTH_TEAM_COLOR_TAG); SendClientMessage(playerid,COLOR_WHITE,"SERVER: Entering spectator mode.."); SetPlayerCameraPos(playerid,243.2876,1802.5547,7.4141); SetPlayerCameraLookAt(playerid,243.1261,1805.2798,8.3794); gPlayerTeamSelection[playerid] =TEAM_SPECTATOR; SetPlayerColor(playerid,COLOR_WHITE); SpecRandomPlayer(playerid); } #endif #endif if(GetPlayerCount() >= 2) { TeamsAlive(false); } if(IsBeingSpeced[playerid] == 1) { for(new i;i= 2 else if(gPlayerTeamSelection[playerid] == SECOND_TEAM) { SetPlayerInterior(playerid,TEAM_TWO_SEL_INTERIOR); SetPlayerWeather(playerid,15); SetPlayerCameraPos(playerid,ClassSel_SetupTeamTEAM_POS[1][0],ClassSel_SetupTeamTEAM_POS[1][1],ClassSel_SetupTeamTEAM_POS[1][2]); SetPlayerCameraLookAt(playerid,ClassSel_SetupTeamTEAM_LOOK_AT[1][0],ClassSel_SetupTeamTEAM_LOOK_AT[1][1],ClassSel_SetupTeamTEAM_LOOK_AT[1][2]); new astring[64]; PlayerTextDrawHide(playerid,TeamText[playerid]); PlayerTextDrawHide(playerid,LocText[playerid]); PlayerTextDrawSetString(playerid, TeamText[playerid],SECOND_TEAM_NAME_TAG); PlayerTextDrawColor(playerid,TeamText[playerid],COLOR_TEAM_TWO_TD); PlayerTextDrawShow(playerid,TeamText[playerid]); format(astring,sizeof(astring),"Location:"#SECOND_TEAM_LOCATION); PlayerTextDrawSetString(playerid, LocText[playerid], astring); PlayerTextDrawShow(playerid,LocText[playerid]); PlayerPlaySound(playerid,2402,0,0,0); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 3 else if(gPlayerTeamSelection[playerid] == THIRD_TEAM) { SetPlayerInterior(playerid,TEAM_THREE_SEL_INTERIOR); SetPlayerCameraPos(playerid,ClassSel_SetupTeamTEAM_POS[2][0],ClassSel_SetupTeamTEAM_POS[2][1],ClassSel_SetupTeamTEAM_POS[2][2]); SetPlayerCameraLookAt(playerid,ClassSel_SetupTeamTEAM_LOOK_AT[2][0],ClassSel_SetupTeamTEAM_LOOK_AT[2][1],ClassSel_SetupTeamTEAM_LOOK_AT[2][2]); new astring[64]; PlayerTextDrawHide(playerid,TeamText[playerid]); PlayerTextDrawHide(playerid,LocText[playerid]); PlayerTextDrawSetString(playerid, TeamText[playerid],THIRD_TEAM_NAME_TAG); PlayerTextDrawColor(playerid,TeamText[playerid],COLOR_TEAM_THREE_TD); PlayerTextDrawShow(playerid,TeamText[playerid]); format(astring,sizeof(astring),"Location:"#THIRD_TEAM_LOCATION); PlayerTextDrawSetString(playerid, LocText[playerid], astring); PlayerTextDrawShow(playerid,LocText[playerid]); PlayerPlaySound(playerid,2404,0,0,0); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 4 else if(gPlayerTeamSelection[playerid] == FOURTH_TEAM) { SetPlayerInterior(playerid,TEAM_FOUR_SEL_INTERIOR); SetPlayerCameraPos(playerid,ClassSel_SetupTeamTEAM_POS[3][0],ClassSel_SetupTeamTEAM_POS[3][1],ClassSel_SetupTeamTEAM_POS[3][2]); SetPlayerCameraLookAt(playerid,ClassSel_SetupTeamTEAM_LOOK_AT[3][0],ClassSel_SetupTeamTEAM_LOOK_AT[3][1],ClassSel_SetupTeamTEAM_LOOK_AT[3][2]); new astring[64]; PlayerTextDrawHide(playerid,TeamText[playerid]); PlayerTextDrawHide(playerid,LocText[playerid]); PlayerTextDrawSetString(playerid, TeamText[playerid],FOURTH_TEAM_NAME_TAG); PlayerTextDrawColor(playerid,TeamText[playerid],COLOR_TEAM_FOUR_TD); PlayerTextDrawShow(playerid,TeamText[playerid]); format(astring,sizeof(astring),"Location:"#FOURTH_TEAM_LOCATION); PlayerTextDrawSetString(playerid, LocText[playerid], astring); PlayerTextDrawShow(playerid,LocText[playerid]); SetPlayerWeather(playerid,0); PlayerPlaySound(playerid,2404,0,0,0); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 5 else if(gPlayerTeamSelection[playerid] == FIFTH_TEAM) { SetPlayerInterior(playerid,TEAM_FIVE_SEL_INTERIOR); SetPlayerCameraPos(playerid,ClassSel_SetupTeamTEAM_POS[4][0],ClassSel_SetupTeamTEAM_POS[4][1],ClassSel_SetupTeamTEAM_POS[4][2]); SetPlayerCameraLookAt(playerid,ClassSel_SetupTeamTEAM_LOOK_AT[4][0],ClassSel_SetupTeamTEAM_LOOK_AT[4][1],ClassSel_SetupTeamTEAM_LOOK_AT[4][2]); new astring[64]; PlayerTextDrawHide(playerid,TeamText[playerid]); PlayerTextDrawHide(playerid,LocText[playerid]); PlayerTextDrawSetString(playerid, TeamText[playerid],FIFTH_TEAM_NAME_TAG); PlayerTextDrawColor(playerid,TeamText[playerid],COLOR_TEAM_FIVE_TD); PlayerTextDrawShow(playerid,TeamText[playerid]); format(astring,sizeof(astring),"Location:"#FIFTH_TEAM_LOCATION); PlayerTextDrawSetString(playerid, LocText[playerid], astring); PlayerTextDrawShow(playerid,LocText[playerid]); SetPlayerWeather(playerid,0); PlayerPlaySound(playerid,2404,0,0,0); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE == 6 else if(gPlayerTeamSelection[playerid] == SIXTH_TEAM) { SetPlayerInterior(playerid,TEAM_SIX_SEL_INTERIOR); SetPlayerCameraPos(playerid,ClassSel_SetupTeamTEAM_POS[5][0],ClassSel_SetupTeamTEAM_POS[5][1],ClassSel_SetupTeamTEAM_POS[5][2]); SetPlayerCameraLookAt(playerid,ClassSel_SetupTeamTEAM_LOOK_AT[5][0],ClassSel_SetupTeamTEAM_LOOK_AT[5][1],ClassSel_SetupTeamTEAM_LOOK_AT[5][2]); new astring[64]; PlayerTextDrawHide(playerid,TeamText[playerid]); PlayerTextDrawHide(playerid,LocText[playerid]); PlayerTextDrawSetString(playerid, TeamText[playerid],SIXTH_TEAM_NAME_TAG); PlayerTextDrawColor(playerid,TeamText[playerid],COLOR_TEAM_SIX_TD); PlayerTextDrawShow(playerid,TeamText[playerid]); format(astring,sizeof(astring),"Location:"#SIXTH_TEAM_LOCATION); PlayerTextDrawSetString(playerid, LocText[playerid], astring); PlayerTextDrawShow(playerid,LocText[playerid]); PlayerPlaySound(playerid,2404,0,0,0); } #endif #endif } //---------------------------------------------------------- public BlowUpThisBed() { CreateExplosion(x1, y1, z1, 7, 10.0);//'heavy' explosion close to bed CreateExplosion(x1, y1, z1, 9, 10.0); running=0; printf("Blow Up This Bed called"); if(BED_STATE_TEAM_ONE == -1) { BED_STATE_TEAM_ONE = -2; SendTeamMessage(FIRST_TEAM,COLOR_WHITE,"SERVER: Sudden death! Keep running, your bed has been blown up! There is no respawn after death!"); new adstring[64]; format(adstring,sizeof(adstring),"SERVER: The bed of team %s {FFFFFF}blew up!",FIRST_TEAM_COLOR_TAG); SendClientMessageToAll(-1,adstring); GangZoneHideForAll(TEAM_ZONE_ONE); printf("Violet"); } if(BED_STATE_TEAM_TWO == -1) { BED_STATE_TEAM_TWO = -2; SendTeamMessage(SECOND_TEAM,COLOR_WHITE,"SERVER: Sudden death! Keep running, your bed has been blown up! There is no respawn after death!"); new adstring[64]; format(adstring,sizeof(adstring),"SERVER: The bed of team %s {FFFFFF}blew up!",SECOND_TEAM_COLOR_TAG); SendClientMessageToAll(-1,adstring); GangZoneHideForAll(TEAM_ZONE_TWO); } #if defined TEAMSIZE #if TEAMSIZE >= 3 if(BED_STATE_TEAM_THREE == -1) { BED_STATE_TEAM_THREE = -2; SendTeamMessage(THIRD_TEAM,COLOR_WHITE,"SERVER: Sudden death! Keep running, your bed has been blown up! There is no respawn after death!"); new adstring[64]; format(adstring,sizeof(adstring),"SERVER: The bed of team %s {FFFFFF}blew up!",THIRD_TEAM_COLOR_TAG); SendClientMessageToAll(-1,adstring); GangZoneHideForAll(TEAM_ZONE_THREE); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 4 if(BED_STATE_TEAM_FOUR == -1) { BED_STATE_TEAM_FOUR = -2; SendTeamMessage(FOURTH_TEAM,COLOR_WHITE,"SERVER: Sudden death! Keep running, your bed has been blown up! There is no respawn after death!"); new adstring[64]; format(adstring,sizeof(adstring),"SERVER: The bed of team %s {FFFFFF}blew up!",FOURTH_TEAM_COLOR_TAG); SendClientMessageToAll(-1,adstring); GangZoneHideForAll(TEAM_ZONE_FOUR); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 5 if(BED_STATE_TEAM_FIVE == -1) { BED_STATE_TEAM_FIVE = -2; SendTeamMessage(FIFTH_TEAM,COLOR_WHITE,"SERVER: Sudden death! Keep running, your bed has been blown up! There is no respawn after death!"); new adstring[64]; format(adstring,sizeof(adstring),"SERVER: The bed of team %s {FFFFFF}blew up!",FIFTH_TEAM_COLOR_TAG); SendClientMessageToAll(-1,adstring); GangZoneHideForAll(TEAM_ZONE_FIVE); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE == 6 if(BED_STATE_TEAM_SIX == -1) { BED_STATE_TEAM_SIX = -2; SendTeamMessage(SIXTH_TEAM,COLOR_WHITE,"SERVER: Sudden death! Keep running, your bed has been blown up! There is no respawn after death!"); new adstring[64]; format(adstring,sizeof(adstring),"SERVER: The bed of team %s {FFFFFF}blew up!",SIXTH_TEAM_COLOR_TAG); SendClientMessageToAll(-1,adstring); GangZoneHideForAll(TEAM_ZONE_SIX); } #endif #endif } stock GetPlayerCount() { new counter=0; for(new k;k= 2 else if(SECOND_TEAM == gPlayerTeamSelection[playerid]) { randSpawn = random(sizeof(gSpawnsTeam_TEAM_TWO)); SetPlayerPos(playerid, gSpawnsTeam_TEAM_TWO[randSpawn][0], gSpawnsTeam_TEAM_TWO[randSpawn][1], gSpawnsTeam_TEAM_TWO[randSpawn][2]); SetPlayerFacingAngle(playerid,gSpawnsTeam_TEAM_TWO[randSpawn][3]); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 3 else if(THIRD_TEAM == gPlayerTeamSelection[playerid]) { randSpawn = random(sizeof(gSpawnsTeam_TEAM_THREE)); SetPlayerPos(playerid, gSpawnsTeam_TEAM_THREE[randSpawn][0], gSpawnsTeam_TEAM_THREE[randSpawn][1], gSpawnsTeam_TEAM_THREE[randSpawn][2]); SetPlayerFacingAngle(playerid,gSpawnsTeam_TEAM_THREE[randSpawn][3]); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 4 else if(FOURTH_TEAM == gPlayerTeamSelection[playerid]) { randSpawn = random(sizeof(gSpawnsTeam_TEAM_FOUR)); SetPlayerPos(playerid, gSpawnsTeam_TEAM_FOUR[randSpawn][0], gSpawnsTeam_TEAM_FOUR[randSpawn][1], gSpawnsTeam_TEAM_FOUR[randSpawn][2]); SetPlayerFacingAngle(playerid,gSpawnsTeam_TEAM_FOUR[randSpawn][3]); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 5 else if(FIFTH_TEAM == gPlayerTeamSelection[playerid]) { randSpawn = random(sizeof(gSpawnsTeam_TEAM_FIVE)); SetPlayerPos(playerid, gSpawnsTeam_TEAM_FIVE[randSpawn][0], gSpawnsTeam_TEAM_FIVE[randSpawn][1], gSpawnsTeam_TEAM_FIVE[randSpawn][2]); SetPlayerFacingAngle(playerid,gSpawnsTeam_TEAM_FIVE[randSpawn][3]); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE == 6 else if(SIXTH_TEAM == gPlayerTeamSelection[playerid]) { randSpawn = random(sizeof(gSpawnsTeam_TEAM_SIX)); SetPlayerPos(playerid, gSpawnsTeam_TEAM_SIX[randSpawn][0], gSpawnsTeam_TEAM_SIX[randSpawn][1], gSpawnsTeam_TEAM_SIX[randSpawn][2]); SetPlayerFacingAngle(playerid,gSpawnsTeam_TEAM_SIX[randSpawn][3]); } #endif #endif GangZoneShowForPlayer(playerid, TEAM_ZONE_ONE, COLOR_TEAM_ONE); GangZoneShowForPlayer(playerid, TEAM_ZONE_TWO, COLOR_TEAM_TWO); #if defined TEAMSIZE #if TEAMSIZE >= 3 GangZoneShowForPlayer(playerid, TEAM_ZONE_THREE, COLOR_TEAM_THREE); #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 4 GangZoneShowForPlayer(playerid, TEAM_ZONE_FOUR, COLOR_TEAM_FOUR); #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 5 GangZoneShowForPlayer(playerid, TEAM_ZONE_FIVE, COLOR_TEAM_FIVE); #endif #endif #if defined TEAMSIZE #if TEAMSIZE == 6 GangZoneShowForPlayer(playerid, TEAM_ZONE_SIX, COLOR_TEAM_SIX); #endif #endif SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL,100); SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL_SILENCED,100); SetPlayerSkillLevel(playerid,WEAPONSKILL_DESERT_EAGLE,100); SetPlayerSkillLevel(playerid,WEAPONSKILL_SHOTGUN,100); SetPlayerSkillLevel(playerid,WEAPONSKILL_SAWNOFF_SHOTGUN,100); SetPlayerSkillLevel(playerid,WEAPONSKILL_SPAS12_SHOTGUN,100); SetPlayerSkillLevel(playerid,WEAPONSKILL_MICRO_UZI,100); SetPlayerSkillLevel(playerid,WEAPONSKILL_MP5,100); SetPlayerSkillLevel(playerid,WEAPONSKILL_AK47,100); SetPlayerSkillLevel(playerid,WEAPONSKILL_M4,100); SetPlayerSkillLevel(playerid,WEAPONSKILL_SNIPERRIFLE,100); GivePlayerWeapon(playerid,WEAPON_COLT45,100); GivePlayerWeapon(playerid,25,5); switch(gPlayerTeamSelection[playerid]) { case 0: { SetPlayerInterior(playerid,TEAM_ONE_INTERIOR); } case 1: { SetPlayerInterior(playerid,TEAM_TWO_INTERIOR); } #if defined TEAMSIZE #if TEAMSIZE >= 3 case 2: { SetPlayerInterior(playerid,TEAM_THREE_INTERIOR); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 4 case 3: { SetPlayerInterior(playerid,TEAM_FOUR_INTERIOR); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 5 case 4: { SetPlayerInterior(playerid,TEAM_FIVE_INTERIOR); } #endif #endif #if defined TEAMSIZE #if TEAMSIZE >= 6 case 5: { SetPlayerInterior(playerid,TEAM_SIX_INTERIOR); } #endif #endif default: { printf("Something went wrong.."); } } return 1; } public TEAM_MONEY()//MONEY FOR EACH TEAM { for (new m=0;m 0) format(moneyplayerid,sizeof(moneyplayerid), "~g~ %d~y~$",value); GameTextForPlayer(playerid,moneyplayerid,1000,1); GivePlayerMoney(playerid,value); } ClassSel_InitTextDraws() { // Init our observer helper text display txtClassSelHelper = TextDrawCreate(10.0, 415.0, " Press ~b~~k~~GO_LEFT~ ~w~or ~b~~k~~GO_RIGHT~ ~w~to switch teams.~n~ Press ~y~~k~~PED_FIREWEAPON~ ~y~to select."); TextDrawUseBox(txtClassSelHelper, 1); TextDrawBoxColor(txtClassSelHelper,0x22222266); TextDrawLetterSize(txtClassSelHelper,0.3,1.0); TextDrawTextSize(txtClassSelHelper,400.0,40.0); TextDrawFont(txtClassSelHelper, 2); TextDrawSetShadow(txtClassSelHelper,0); TextDrawSetOutline(txtClassSelHelper,1); TextDrawBackgroundColor(txtClassSelHelper,0x000000FF); TextDrawColor(txtClassSelHelper,0xFFFFFFFF); }