// 0.2 Fixed version of CS:All in One made by FeaR #include #include static gTeam[MAX_PLAYERS]; #define COLOR_GREY 0xAFAFAFAA #define COLOR_WHITE 0xFFFFFFAA #define COLOR_YELLOW 0xFFFF00AA #define COLOR_YELLOW2 0xF5DEB3AA #define COLOR_LIGHTRED 0xFF6347AA #define COLOR_LIGHTBLUE 0x33CCFFAA #define CARS 7 new rndtimer; new starttimer; new bombtimer; new defusetimer; new Terrorists = 0; new CTerrorists = 0; new locked = 0; new ShowMessage = 0; new MapTimeCount = 0; new MapTime = 300; new RoundStarted = 0; new ActiveMap = 0; new BombExploded = 0; new BombDropped = 0; new BombPlaced = 0; new BombTime = 0; new HoldingBomb = 999; new PlacingBomb = 999; new DefuseBomb = 999; new Float:Pos[MAX_PLAYERS][3]; new Float:PlayerPlacingBomb[MAX_PLAYERS][3]; new Float:PlayerDefuseBomb[MAX_PLAYERS][3]; new PlayingRound[MAX_PLAYERS]; new Kills[MAX_PLAYERS]; new TeamKills[MAX_PLAYERS]; enum gInfo { Gun1, Gun2, Ammo1, Ammo2, Float:Health, }; new PlayerGuns[MAX_PLAYERS][gInfo]; enum bInfo { Float:MaxX, Float:MinX, Float:MaxY, Float:MinY, }; new Bounds[bInfo]; enum mInfo { mTitle[64], Float:mTSpawn[3], Float:mCTSpawn[3], Float:mTAngle, Float:mCTAngle, Float:mBomb[3], Float:mLimit1[3], Float:mLimit2[3], Float:mLimit3[3], Float:mLimit4[3], }; new MapMaking[MAX_PLAYERS][mInfo]; enum rInfo { pMaker[MAX_PLAYER_NAME], pTitle[64], Float:pTSpawn[3], Float:pCTSpawn[3], Float:pTAngle, Float:pCTAngle, Float:pBomb[3], Float:pLimit1[3], Float:pLimit2[3], Float:pLimit3[3], Float:pLimit4[3], }; new MapInfo[rInfo]; new MapNames[6][128] = { {"File: ffo | Mapname: Fight For Oil"}, {"File: fobw | Mapname: Fight of Big Wheel"}, {"File: jungle | Mapname: Jungle"}, {"File: rocks | Mapname: Rocks"}, {"File: area51 | Mapname: The Dust"}, {"File: chicken | Mapname: Chicken Fight"} }; main() { print("\n----------------------------------"); print(" Counter Strike: All in One"); print("----------------------------------\n"); } public OnGameModeInit() { print("GameModeInit()"); SetGameModeText("GF-RP: Event"); ShowNameTags(0); ShowPlayerMarkers(0); AddPlayerClass(285,1958.3783,1343.1572,1100.3746,269.1425,0,0,0,0,0,0);//Counter Terrorist AddPlayerClass(284,1958.3783,1343.1572,1100.3746,269.1425,0,0,0,0,0,0); AddPlayerClass(286,1958.3783,1343.1572,1100.3746,269.1425,0,0,0,0,0,0); AddPlayerClass(164,1958.3783,1343.1572,1100.3746,269.1425,0,0,0,0,0,0); AddPlayerClass(254,1958.3783,1343.1572,1100.3746,269.1425,0,0,0,0,0,0);//Terrorist AddPlayerClass(248,1958.3783,1343.1572,1100.3746,269.1425,0,0,0,0,0,0); AddPlayerClass(247,1958.3783,1343.1572,1100.3746,269.1425,0,0,0,0,0,0); AddPlayerClass(100,1958.3783,1343.1572,1100.3746,269.1425,0,0,0,0,0,0); AddStaticVehicle(522,1667.4299,-1237.8550,233.3750,267.0053,6,1); AddStaticVehicle(447,1459.2539,-689,94.7500,267.0053,6,1); AddStaticVehicle(522,1459.2539,-683,94.7500,267.0053,6,1); AddStaticVehicle(451,1459.2539,-677,94.7500,267.0053,6,1); AddStaticVehicle(451,1459.2539,-674,94.7500,267.0053,6,1); AddStaticVehicle(487,1504.0309,-695.0297,94.4567,178.9508,-1,-1); // maverick AddStaticVehicle(487,1490.2667,-695.1058,94.4574,180.3512,-1,-1); // maverick SetTimer("MapCheck", 500, 1); SetTimer("OverallCheck", 1000, 1); return 1; } 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; } PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z) { if(IsPlayerConnected(playerid)) { new Float:oldposx, Float:oldposy, Float:oldposz; new Float:tempposx, Float:tempposy, Float:tempposz; GetPlayerPos(playerid, oldposx, oldposy, oldposz); tempposx = (oldposx -x); tempposy = (oldposy -y); tempposz = (oldposz -z); if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) { return 1; } } return 0; } clear(playerid) { if(IsPlayerConnected(playerid)) { for(new a=1;a<=10;a++) { SendClientMessage(playerid,0xFFFFFFFF,"\n"); } } return 1; } SendTeamMessage(team, color, string[]) { for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(gTeam[i] == team) { SendClientMessage(i, color, string); } } } } forward MapCheck(); public MapCheck() { for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { SetPlayerScore(i, Kills[i]); if(ActiveMap > 0 && RoundStarted > 0 && PlayingRound[i] != 0) { new Float:x,Float:y,Float:z; GetPlayerPos(i,x,y,z); if(x > Bounds[MaxX]) { SetPlayerPos(i,Bounds[MaxX]-2,y,z); } if(y > Bounds[MaxY]) { SetPlayerPos(i,x,Bounds[MaxY]-19,z); } if(x < Bounds[MinX]) { SetPlayerPos(i,Bounds[MinX]+1,y,z); } if(y < Bounds[MinY]) { SetPlayerPos(i,x,Bounds[MinY]+1,z); } } } } return 1; } forward OverallCheck(); public OverallCheck() { new string[256]; for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(PlayerToPoint(6.0,i,MapInfo[pBomb][0],MapInfo[pBomb][1],MapInfo[pBomb][2]) && HoldingBomb == i) { GameTextForPlayer(i, "~w~Type /bomb to plant the bomb", 5000, 3); } else if(PlayerToPoint(6.0,i,MapInfo[pBomb][0],MapInfo[pBomb][1],MapInfo[pBomb][2]) && gTeam[i] == 1 && BombPlaced == 1) { GameTextForPlayer(i, "~w~Type /diffuse to diffuse the bomb", 5000, 3); } } } if(RoundStarted > 0) { ShowMessage += 1; if(ShowMessage >= 45) { ShowMessage = 0; new time = 300 - MapTimeCount; if(time > 60) { time = time / 60; format(string, sizeof(string), "Terrorists Alive: %d | Counter Terrorists Alive: %d | Round Time left: %d Minutes.", Terrorists, CTerrorists, time); } else { format(string, sizeof(string), "Terrorists Alive: %d | Counter Terrorists Alive: %d | Round Time left: %d Seconds.", Terrorists, CTerrorists, time); } SendClientMessageToAll(COLOR_YELLOW2, string); } MapTimeCount += 1; if(CTerrorists > 0 && Terrorists < 1 && BombPlaced != 1) { CTWon(); } else if(Terrorists > 0 && CTerrorists < 1) { TWon(); } else if(MapTimeCount >= MapTime) { MapTimeCount = 0; if(CTerrorists > Terrorists) { CTWon(); } else if(Terrorists > CTerrorists) { TWon(); } else { new rand = random(1); if(rand == 1) { CTWon(); } else { TWon(); } } } } if(BombPlaced > 0) { BombTime ++; if(BombTime >= 30) { GameTextForAll("~w~bomb exploded", 5000, 3); BombExploded = 1; BombTime = 0; for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(PlayerToPoint(80.0,i,MapInfo[pBomb][0],MapInfo[pBomb][1],MapInfo[pBomb][2])) { PlayerPlaySound(i, 1148, 0.0, 0.0, 0.0); } if(PlayerToPoint(60.0,i,MapInfo[pBomb][0],MapInfo[pBomb][1],MapInfo[pBomb][2])) { SetPlayerHealth(i, 0.0); } } } TWon(); } } return 1; } CTWon() { RoundStarted = 0; SendClientMessageToAll(0xF1DA7CFF,"Counter-Terrorists have won the round."); for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(gTeam[i] == 1) { GivePlayerMoney(i, 1500); } } } rndtimer = SetTimer("NewRound", 5000, 0); return 1; } TWon() { RoundStarted = 0; SendClientMessageToAll(0xF1DA7CFF,"Terrorists have won the round."); for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(gTeam[i] == 2) { GivePlayerMoney(i, 1500); } } } rndtimer = SetTimer("NewRound", 5000, 0); return 1; } StopMap() { KillTimer(rndtimer); KillTimer(starttimer); KillTimer(bombtimer); KillTimer(defusetimer); RoundStarted = 0; ShowMessage = 0; MapTimeCount = 0; ActiveMap = 0; HoldingBomb = 999; PlacingBomb = 999; DefuseBomb = 999; BombExploded = 0; BombPlaced = 0; BombTime = 0; Terrorists = 0; CTerrorists = 0; for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { DisablePlayerCheckpoint(i); PlayingRound[i] = 0; TogglePlayerControllable(i, 1); SpawnPlace(i); ResetPlayerWeapons(i); PlayerGuns[i][Gun1] = 0; PlayerGuns[i][Gun2] = 0; PlayerGuns[i][Ammo1] = 0; PlayerGuns[i][Ammo2] = 0; PlayerGuns[i][Health] = 100.0; } } return 1; } forward NewRound(); public NewRound() { RoundStarted = 0; ShowMessage = 0; Terrorists = 0; CTerrorists = 0; BombDropped = 0; MapTimeCount = 0; HoldingBomb = 999; PlacingBomb = 999; DefuseBomb = 999; BombPlaced = 0; BombTime = 0; BombExploded = 0; for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { PlayingRound[i] = 1; GivePlayerMoney(i, 1000); if(GetPlayerMoney(i) > 16000) { ResetPlayerMoney(i); GivePlayerMoney(i, 16000); } ResetPlayerWeapons(i); SendClientMessage(i, COLOR_WHITE, "Type /b to buy equipment."); DisablePlayerCheckpoint(i); TogglePlayerControllable(i, 0); SpawnPlace(i); if(gTeam[i] == 2 && HoldingBomb == 999) { HoldingBomb = i; GameTextForPlayer(HoldingBomb, "~w~You have the bomb", 5000, 3); PlayerPlaySound(HoldingBomb, 1095, 0.0, 0.0, 0.0); } if(gTeam[i] == 1) { CTerrorists ++; } else if(gTeam[i] == 2) { Terrorists ++; } } } starttimer = SetTimer("StartRound", 25000, 0); return 1; } forward StartRound(); public StartRound() { new Gun1Name[64]; new Gun2Name[64]; new string[256]; MapTimeCount = 0; RoundStarted = 1; for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(PlayingRound[i] != 0) { SendClientMessage(i, COLOR_WHITE,"RADIO: Go, go, go!"); if(PlayerGuns[i][Gun1] > 0) { GetWeaponName(PlayerGuns[i][Gun1], Gun1Name, sizeof(Gun1Name)); format(string, sizeof(string), "You spawned with a %s with %d bullets.",Gun1Name,PlayerGuns[i][Ammo1]); SendClientMessage(i, COLOR_YELLOW2, string); } if(PlayerGuns[i][Gun2] > 0) { GetWeaponName(PlayerGuns[i][Gun2], Gun2Name, sizeof(Gun2Name)); format(string, sizeof(string), "You spawned with a %s with %d bullets.",Gun2Name,PlayerGuns[i][Ammo2]); SendClientMessage(i, COLOR_YELLOW2, string); } new time = 300 - MapTimeCount; time = time / 60; format(string, sizeof(string), "Terrorists Alive: %d | Counter Terrorists Alive: %d | Round Time left: %d Minutes.", Terrorists, CTerrorists, time); SendClientMessage(i, COLOR_YELLOW2, string); TogglePlayerControllable(i, 1); GiveWeapons(i); SetPlayerCheckpoint(i, MapInfo[pBomb][0],MapInfo[pBomb][1],MapInfo[pBomb][2],6.0); } } } return 1; } forward PlaceBomb(); public PlaceBomb() { if(IsPlayerConnected(PlacingBomb)) { new Float:X,Float:Y,Float:Z; GetPlayerPos(PlacingBomb, X,Y,Z); if(X==PlayerPlacingBomb[PlacingBomb][0] && Y==PlayerPlacingBomb[PlacingBomb][1] && Z==PlayerPlacingBomb[PlacingBomb][2]) { GameTextForAll("~w~Bomb has been planted~n~~r~30 seconds till ignition", 5000, 3); SendClientMessage(PlacingBomb, COLOR_YELLOW2, "Bomb planted."); HoldingBomb = 999; PlacingBomb = 999; BombPlaced = 1; } else { SendClientMessage(PlacingBomb, COLOR_GREY, " You left the spot, Bomb Placing failed !"); } } return 1; } forward Defusing(); public Defusing() { if(IsPlayerConnected(DefuseBomb)) { new Float:X,Float:Y,Float:Z; GetPlayerPos(DefuseBomb, X,Y,Z); if(X==PlayerDefuseBomb[DefuseBomb][0] && Y==PlayerDefuseBomb[DefuseBomb][1] && Z==PlayerDefuseBomb[DefuseBomb][2] && BombExploded != 1) { GameTextForAll("~w~Bomb has been defused", 5000, 3); DefuseBomb = 999; BombPlaced = 0; CTWon(); } else { SendClientMessage(DefuseBomb, COLOR_GREY, " You left the spot, Bomb Diffusing failed !"); } } return 1; } SpawnPlace(playerid) { if(IsPlayerConnected(playerid)) { SetPlayerInterior(playerid, 0); if(ActiveMap > 0) { if(PlayingRound[playerid] != 0) { if(gTeam[playerid] == 1) { SetPlayerPos(playerid, MapInfo[pCTSpawn][0],MapInfo[pCTSpawn][1],MapInfo[pCTSpawn][2]); SetPlayerFacingAngle(playerid, MapInfo[pCTAngle]); } else if(gTeam[playerid] == 2) { SetPlayerPos(playerid, MapInfo[pTSpawn][0],MapInfo[pTSpawn][1],MapInfo[pTSpawn][2]); SetPlayerFacingAngle(playerid, MapInfo[pTAngle]); } } else { //Player must be spectating and be placed somewhere safe SendClientMessage(playerid, COLOR_YELLOW2, "You've been killed, wait for the next round."); SetPlayerPos(playerid, 2223.8,-1147.1,1025.7); SetPlayerInterior(playerid, 15); TogglePlayerControllable(playerid, 0); } } else { SetPlayerPos(playerid, 2223.8,-1147.1,1025.7); SetPlayerFacingAngle(playerid, 270.0); SetPlayerInterior(playerid,15); } } return 1; } GiveWeapons(playerid) { if(IsPlayerConnected(playerid)) { if(ActiveMap > 0 && RoundStarted > 0) { GivePlayerWeapon(playerid, 4, 1); GivePlayerWeapon(playerid, 46, 1); if(PlayerGuns[playerid][Gun1] > 0) { GivePlayerWeapon(playerid, PlayerGuns[playerid][Gun1],PlayerGuns[playerid][Ammo1]); } SetPlayerHealth(playerid, PlayerGuns[playerid][Health]); if(gTeam[playerid] == 1)//CT { if(PlayerGuns[playerid][Gun2] == 0) { GivePlayerWeapon(playerid, 23, 70); } else { GivePlayerWeapon(playerid, PlayerGuns[playerid][Gun2],PlayerGuns[playerid][Ammo2]); } } else if(gTeam[playerid] == 2)//T { if(PlayerGuns[playerid][Gun2] == 0) { GivePlayerWeapon(playerid, 22, 70); } else { GivePlayerWeapon(playerid, PlayerGuns[playerid][Gun2],PlayerGuns[playerid][Ammo2]); } } } } return 1; } SaveMap(playerid,name[]) { if(IsPlayerConnected(playerid)) { new coordsstring[256]; new mapname[64]; new var[128]; new makername[MAX_PLAYER_NAME]; GetPlayerName(playerid, makername, sizeof(makername)); format(mapname, sizeof(mapname), "%s.map",name); new File: hFile = fopen(mapname, io_write); format(var, 128, "Maker=%s\n", makername);fwrite(hFile, var); format(var, 128, "Title=%s\n", MapMaking[playerid][mTitle]);fwrite(hFile, var); format(var, 128, "TAngle=%f\n", MapMaking[playerid][mTAngle]);fwrite(hFile, var); format(var, 128, "CTAngle=%f\n", MapMaking[playerid][mCTAngle]);fwrite(hFile, var); format(var, 128, "TSpawnX=%f\n", MapMaking[playerid][mTSpawn][0]);fwrite(hFile, var); format(var, 128, "TSpawnY=%f\n", MapMaking[playerid][mTSpawn][1]);fwrite(hFile, var); format(var, 128, "TSpawnZ=%f\n", MapMaking[playerid][mTSpawn][2]);fwrite(hFile, var); format(var, 128, "CTSpawnX=%f\n", MapMaking[playerid][mCTSpawn][0]);fwrite(hFile, var); format(var, 128, "CTSpawnY=%f\n", MapMaking[playerid][mCTSpawn][1]);fwrite(hFile, var); format(var, 128, "CTSpawnZ=%f\n", MapMaking[playerid][mCTSpawn][2]);fwrite(hFile, var); format(var, 128, "BombX=%f\n", MapMaking[playerid][mBomb][0]);fwrite(hFile, var); format(var, 128, "BombY=%f\n", MapMaking[playerid][mBomb][1]);fwrite(hFile, var); format(var, 128, "BombZ=%f\n", MapMaking[playerid][mBomb][2]);fwrite(hFile, var); format(var, 128, "Limit1X=%f\n", MapMaking[playerid][mLimit1][0]);fwrite(hFile, var); format(var, 128, "Limit1Y=%f\n", MapMaking[playerid][mLimit1][1]);fwrite(hFile, var); format(var, 128, "Limit1Z=%f\n", MapMaking[playerid][mLimit1][2]);fwrite(hFile, var); format(var, 128, "Limit2X=%f\n", MapMaking[playerid][mLimit2][0]);fwrite(hFile, var); format(var, 128, "Limit2Y=%f\n", MapMaking[playerid][mLimit2][1]);fwrite(hFile, var); format(var, 128, "Limit2Z=%f\n", MapMaking[playerid][mLimit2][2]);fwrite(hFile, var); format(var, 128, "Limit3X=%f\n", MapMaking[playerid][mLimit3][0]);fwrite(hFile, var); format(var, 128, "Limit3Y=%f\n", MapMaking[playerid][mLimit3][1]);fwrite(hFile, var); format(var, 128, "Limit3Z=%f\n", MapMaking[playerid][mLimit3][2]);fwrite(hFile, var); format(var, 128, "Limit4X=%f\n", MapMaking[playerid][mLimit4][0]);fwrite(hFile, var); format(var, 128, "Limit4Y=%f\n", MapMaking[playerid][mLimit4][1]);fwrite(hFile, var); format(var, 128, "Limit4Z=%f\n", MapMaking[playerid][mLimit4][2]);fwrite(hFile, var); fclose(hFile); format(coordsstring, sizeof(coordsstring), "%s Map Saved.",name); SendClientMessage(playerid, COLOR_WHITE,coordsstring); } return 1; } LoadMap(playerid,name[]) { if(IsPlayerConnected(playerid)) { new strFromFile2[128]; new mapname[64]; format(mapname, sizeof(mapname), "%s.map",name); new File: file = fopen(mapname, io_read); if (file) { new key[ 256 ] , val[ 256 ]; new Data[ 256 ]; while ( fread( file , Data , sizeof( Data ) ) ) { key = ini_GetKey( Data ); if( strcmp( key , "Maker" , true ) == 0 ) { val = ini_GetValue( Data ); strmid(MapInfo[pMaker], val, 0, strlen(val), 255); } if( strcmp( key , "Title" , true ) == 0 ) { val = ini_GetValue( Data ); strmid(MapInfo[pTitle], val, 0, strlen(val), 255); } if( strcmp( key , "TAngle" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pTAngle] = floatstr( val ); } if( strcmp( key , "CTAngle" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pCTAngle] = floatstr( val ); } if( strcmp( key , "TSpawnX" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pTSpawn][0] = floatstr( val ); } if( strcmp( key , "TSpawnY" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pTSpawn][1] = floatstr( val ); } if( strcmp( key , "TSpawnZ" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pTSpawn][2] = floatstr( val ); } if( strcmp( key , "CTSpawnX" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pCTSpawn][0] = floatstr( val ); } if( strcmp( key , "CTSpawnY" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pCTSpawn][1] = floatstr( val ); } if( strcmp( key , "CTSpawnZ" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pCTSpawn][2] = floatstr( val ); } if( strcmp( key , "BombX" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pBomb][0] = floatstr( val ); } if( strcmp( key , "BombY" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pBomb][1] = floatstr( val ); } if( strcmp( key , "BombZ" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pBomb][2] = floatstr( val ); } if( strcmp( key , "Limit1X" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pLimit1][0] = floatstr( val ); } if( strcmp( key , "Limit1Y" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pLimit1][1] = floatstr( val ); } if( strcmp( key , "Limit1Z" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pLimit1][2] = floatstr( val ); } if( strcmp( key , "Limit2X" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pLimit2][0] = floatstr( val ); } if( strcmp( key , "Limit2Y" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pLimit2][1] = floatstr( val ); } if( strcmp( key , "Limit2Z" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pLimit2][2] = floatstr( val ); } if( strcmp( key , "Limit3X" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pLimit3][0] = floatstr( val ); } if( strcmp( key , "Limit3Y" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pLimit3][1] = floatstr( val ); } if( strcmp( key , "Limit3Z" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pLimit3][2] = floatstr( val ); } if( strcmp( key , "Limit4X" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pLimit4][0] = floatstr( val ); } if( strcmp( key , "Limit4Y" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pLimit4][1] = floatstr( val ); } if( strcmp( key , "Limit4Z" , true ) == 0 ) { val = ini_GetValue( Data ); MapInfo[pLimit4][2] = floatstr( val ); } } fclose(file); format(strFromFile2, sizeof(strFromFile2), "%s Map Loaded.",name); SendClientMessage(playerid, COLOR_LIGHTRED,strFromFile2); format(strFromFile2, sizeof(strFromFile2), "Playing Map: %s | By : %s",MapInfo[pTitle],MapInfo[pMaker]); SendClientMessageToAll(COLOR_LIGHTRED, strFromFile2); if(MapInfo[pLimit1][0] > MapInfo[pLimit2][0] && MapInfo[pLimit1][0] > MapInfo[pLimit3][0] && MapInfo[pLimit1][0] > MapInfo[pLimit4][0]) { Bounds[MaxX] = MapInfo[pLimit1][0]; } else if(MapInfo[pLimit2][0] > MapInfo[pLimit1][0] && MapInfo[pLimit2][0] > MapInfo[pLimit3][0] && MapInfo[pLimit2][0] > MapInfo[pLimit4][0]) { Bounds[MaxX] = MapInfo[pLimit2][0]; } else if(MapInfo[pLimit3][0] > MapInfo[pLimit1][0] && MapInfo[pLimit3][0] > MapInfo[pLimit2][0] && MapInfo[pLimit3][0] > MapInfo[pLimit4][0]) { Bounds[MaxX] = MapInfo[pLimit3][0]; } else if(MapInfo[pLimit4][0] > MapInfo[pLimit1][0] && MapInfo[pLimit4][0] > MapInfo[pLimit2][0] && MapInfo[pLimit4][0] > MapInfo[pLimit3][0]) { Bounds[MaxX] = MapInfo[pLimit4][0]; } if(MapInfo[pLimit1][0] < MapInfo[pLimit2][0] && MapInfo[pLimit1][0] < MapInfo[pLimit3][0] && MapInfo[pLimit1][0] < MapInfo[pLimit4][0]) { Bounds[MinX] = MapInfo[pLimit1][0]; } else if(MapInfo[pLimit2][0] < MapInfo[pLimit1][0] && MapInfo[pLimit2][0] < MapInfo[pLimit3][0] && MapInfo[pLimit2][0] < MapInfo[pLimit4][0]) { Bounds[MinX] = MapInfo[pLimit2][0]; } else if(MapInfo[pLimit3][0] < MapInfo[pLimit1][0] && MapInfo[pLimit3][0] < MapInfo[pLimit2][0] && MapInfo[pLimit3][0] < MapInfo[pLimit4][0]) { Bounds[MinX] = MapInfo[pLimit3][0]; } else if(MapInfo[pLimit4][0] < MapInfo[pLimit1][0] && MapInfo[pLimit4][0] < MapInfo[pLimit2][0] && MapInfo[pLimit4][0] < MapInfo[pLimit3][0]) { Bounds[MinX] = MapInfo[pLimit4][0]; } if(MapInfo[pLimit1][1] > MapInfo[pLimit2][1] && MapInfo[pLimit1][1] > MapInfo[pLimit3][1] && MapInfo[pLimit1][1] > MapInfo[pLimit4][1]) { Bounds[MaxY] = MapInfo[pLimit1][1]; } else if(MapInfo[pLimit2][1] > MapInfo[pLimit1][1] && MapInfo[pLimit2][1] > MapInfo[pLimit3][1] && MapInfo[pLimit2][1] > MapInfo[pLimit4][1]) { Bounds[MaxY] = MapInfo[pLimit2][1]; } else if(MapInfo[pLimit3][1] > MapInfo[pLimit1][1] && MapInfo[pLimit3][1] > MapInfo[pLimit2][1] && MapInfo[pLimit3][1] > MapInfo[pLimit4][1]) { Bounds[MaxY] = MapInfo[pLimit3][1]; } else if(MapInfo[pLimit4][1] > MapInfo[pLimit1][1] && MapInfo[pLimit4][1] > MapInfo[pLimit2][1] && MapInfo[pLimit4][1] > MapInfo[pLimit3][1]) { Bounds[MaxY] = MapInfo[pLimit4][1]; } if(MapInfo[pLimit1][1] < MapInfo[pLimit2][1] && MapInfo[pLimit1][1] < MapInfo[pLimit3][1] && MapInfo[pLimit1][1] < MapInfo[pLimit4][1]) { Bounds[MinY] = MapInfo[pLimit1][1]; } else if(MapInfo[pLimit2][1] < MapInfo[pLimit1][1] && MapInfo[pLimit2][1] < MapInfo[pLimit3][1] && MapInfo[pLimit2][1] < MapInfo[pLimit4][1]) { Bounds[MinY] = MapInfo[pLimit2][1]; } else if(MapInfo[pLimit3][1] < MapInfo[pLimit1][1] && MapInfo[pLimit3][1] < MapInfo[pLimit2][1] && MapInfo[pLimit3][1] < MapInfo[pLimit4][1]) { Bounds[MinY] = MapInfo[pLimit3][1]; } else if(MapInfo[pLimit4][1] < MapInfo[pLimit1][1] && MapInfo[pLimit4][1] < MapInfo[pLimit2][1] && MapInfo[pLimit4][1] < MapInfo[pLimit3][1]) { Bounds[MinY] = MapInfo[pLimit4][1]; } ActiveMap = 1; } else { SendClientMessage(playerid, COLOR_LIGHTRED,"Run File not found."); } } return 1; } ini_GetKey( line[] ) { new keyRes[256]; keyRes[0] = 0; if ( strfind( line , "=" , true ) == -1 ) return keyRes; strmid( keyRes , line , 0 , strfind( line , "=" , true ) , sizeof( keyRes) ); return keyRes; } ini_GetValue( line[] ) { new valRes[256]; valRes[0]=0; if ( strfind( line , "=" , true ) == -1 ) return valRes; strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) ); return valRes; } public OnPlayerRequestClass(playerid, classid) { if(classid >= 0 && classid <= 3) { SetPlayerColor(playerid, 0x4B85CBFF); GameTextForPlayer(playerid, "~y~>> ~b~Counter-Terrorist ~y~<<",1000,5); gTeam[playerid] = 1; } else { SetPlayerColor(playerid, 0xBD1115FF); GameTextForPlayer(playerid, "~y~>> ~r~Terrorist ~y~<<",1000,5); gTeam[playerid] = 2; } SetPlayerInterior(playerid,0); SetPlayerPos(playerid,-1657.5237,1207.6644,13.6719); SetPlayerFacingAngle(playerid,357.6906); SetPlayerCameraPos(playerid, -1657.4678,1211.2292,13.6781); SetPlayerCameraLookAt(playerid,-1657.5237,1207.6644,13.6719); return 1; } public OnGameModeExit() { print("GameModeExit()"); return 1; } public OnPlayerConnect(playerid) { Kills[playerid] = 0; TeamKills[playerid] = 0; PlayingRound[playerid] = 0; PlayerGuns[playerid][Gun1] = 0; PlayerGuns[playerid][Gun2] = 0; PlayerGuns[playerid][Ammo1] = 0; PlayerGuns[playerid][Ammo2] = 0; PlayerGuns[playerid][Health] = 100.0; GivePlayerMoney(playerid, 1250); return 1; } public OnPlayerDisconnect(playerid) { if(PlayingRound[playerid] != 0) { if(HoldingBomb == playerid) { GameTextForAll("~w~Bomb has been dropped", 5000, 3); BombDropped = 1; new Float:X,Float:Y,Float:Z; GetPlayerPos(playerid, X,Y,Z); for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(PlayingRound[i] != 0) { SetPlayerCheckpoint(i, X,Y,Z,2.0); } } } } if(gTeam[playerid] == 1) { CTerrorists --; } else if(gTeam[playerid] == 2) { Terrorists --; } } return 1; } public OnPlayerSpawn(playerid) { SpawnPlace(playerid); GiveWeapons(playerid); return 1; } public OnPlayerDeath(playerid, killerid, reason) { SendDeathMessage(killerid, playerid, reason); if(PlayingRound[playerid] > 0) { if(HoldingBomb == playerid) { GameTextForAll("~w~Bomb has been dropped", 5000, 3); BombDropped = 1; new Float:X,Float:Y,Float:Z; GetPlayerPos(playerid, X,Y,Z); for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(PlayingRound[i] != 0) { SetPlayerCheckpoint(i, X,Y,Z,2.0); } } } } PlayingRound[playerid] = 0; Kills[killerid] += 1; if(gTeam[playerid] == 1) { CTerrorists --; } else if(gTeam[playerid] == 2) { Terrorists --; } if(gTeam[killerid] == gTeam[playerid]) { SendClientMessage(killerid, COLOR_LIGHTRED, "** You made a Team Kill, only kill the opposite of your team! **"); GivePlayerMoney(killerid, -1500); Kills[killerid] -= 2; TeamKills[killerid] += 1; if(TeamKills[killerid] >= 4) { Kick(killerid); } } else { GivePlayerMoney(killerid, 250); } } PlayerGuns[playerid][Gun1] = 0; PlayerGuns[playerid][Gun2] = 0; PlayerGuns[playerid][Ammo1] = 0; PlayerGuns[playerid][Ammo2] = 0; PlayerGuns[playerid][Health] = 100.0; return 1; } public OnVehicleSpawn(vehicleid) { return 1; } public OnVehicleDeath(vehicleid, killerid) { return 1; } public OnPlayerText(playerid) { return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { new sendername[MAX_PLAYER_NAME]; new string[256]; new cmd[256]; new tmp[256]; new giveplayerid, idx; cmd = strtok(cmdtext, idx); if(strcmp(cmd, "/help", true) == 0) { if(IsPlayerConnected(playerid)) { SendClientMessage(playerid, COLOR_YELLOW2, "There are 2 teams, Terrorists and Counter-Terrorists...The Terrorists try to place the bomb"); SendClientMessage(playerid, COLOR_YELLOW2, "and the Counter-Terrorists try to prevent that from happening and defuse it if necessary."); SendClientMessage(playerid, COLOR_YELLOW2, "Commands Players: /help /(b)uy /(t)eam /bomb /diffuse /time."); if(IsPlayerAdmin(playerid)) { SendClientMessage(playerid, COLOR_YELLOW2, "Commands Admins: /goto /mark /gotomark /kick /ban /make /cssavemap /csloadmap."); SendClientMessage(playerid, COLOR_YELLOW2, "Commands Admins: /rescars /gotocar /lock /unlock /start /stop."); } } return 1; } if(strcmp(cmd, "/maps", true) == 0) { if(IsPlayerConnected(playerid)) { if(!IsPlayerAdmin(playerid)) { SendClientMessage(playerid, COLOR_GREY, " You are not an Admin !"); return 1; } for(new i = 0; i < sizeof(MapNames); i++) { format(string, sizeof(string), "%s", MapNames[i]); SendClientMessage(playerid, COLOR_YELLOW, string); } } return 1; } if(strcmp(cmd, "/time", true) == 0) { if(IsPlayerConnected(playerid)) { if(RoundStarted != 1) { SendClientMessage(playerid, COLOR_GREY, " No Round has started yet !"); return 1; } new time = 300 - MapTimeCount; if(time > 60) { time = time / 60; format(string, sizeof(string), "* %d minutes left till the next round.",time); } else { format(string, sizeof(string), "* %d seconds left till the next round.",time); } SendClientMessage(playerid, COLOR_YELLOW2, string); } return 1; } if(strcmp(cmd, "/t", true) == 0 || strcmp(cmd, "/team", true) == 0) { if(IsPlayerConnected(playerid)) { new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) { SendClientMessage(playerid, COLOR_GREY, "USAGE: /(t)eam [text]"); return 1; } GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string),"** %s: %s", sendername, result); SendTeamMessage(gTeam[playerid], COLOR_LIGHTBLUE, string); } return 1; } if(strcmp(cmd, "/start", true) == 0) { if(IsPlayerConnected(playerid)) { if(!IsPlayerAdmin(playerid)) { SendClientMessage(playerid, COLOR_GREY, " You are not an Admin !"); return 1; } if(ActiveMap != 1) { SendClientMessage(playerid, COLOR_GREY, " No map has been loaded yet !"); return 1; } rndtimer = SetTimer("NewRound", 1000, 0); } return 1; } if(strcmp(cmd, "/stop", true) == 0) { if(IsPlayerConnected(playerid)) { if(!IsPlayerAdmin(playerid)) { SendClientMessage(playerid, COLOR_GREY, " You are not an Admin !"); return 1; } if(ActiveMap != 1) { SendClientMessage(playerid, COLOR_GREY, " No map has been loaded yet !"); return 1; } StopMap(); } return 1; } if(strcmp(cmd, "/b", true) == 0 || strcmp(cmd, "/buy", true) == 0) { if(IsPlayerConnected(playerid)) { if(ActiveMap != 1) { SendClientMessage(playerid, COLOR_GREY, " No Map has been loaded, can't buy now !"); return 1; } if(RoundStarted != 0) { SendClientMessage(playerid, COLOR_GREY, " You can't buy now anymore !"); return 1; } tmp = strtok(cmdtext, idx); new arg = strval(tmp); if(arg == 1) { // Menu 1 new ste; tmp = strtok(cmdtext, idx); ste = strval(tmp); if(ste == 1) { // Pistols new money; money = GetPlayerMoney(playerid); if(money >= 400) { clear(playerid); SendClientMessage(playerid,0x4FD200FF,"You've bought Pistols"); GivePlayerMoney(playerid,-400); PlayerGuns[playerid][Gun2] = 22; PlayerGuns[playerid][Ammo2] = 20; } else { clear(playerid); SendClientMessage(playerid,0xEC0000FF,"Insufficient funds"); } } else if(ste == 2) { // Silenced Pistol new money; money = GetPlayerMoney(playerid); if(money >= 400) { clear(playerid); SendClientMessage(playerid,0x4FD200FF,"You bought a Silenced Pistol."); GivePlayerMoney(playerid,-400); PlayerGuns[playerid][Gun2] = 23; PlayerGuns[playerid][Ammo2] = 20; } else { clear(playerid); SendClientMessage(playerid,0xEC0000FF,"Insufficient funds"); } } else if(ste == 3) { // Desert Eagle new money; money = GetPlayerMoney(playerid); if(money >= 600) { clear(playerid); SendClientMessage(playerid,0x4FD200FF,"You bought a Desert Eagle"); GivePlayerMoney(playerid,-600); PlayerGuns[playerid][Gun2] = 24; PlayerGuns[playerid][Ammo2] = 20; } else { clear(playerid); SendClientMessage(playerid,0xEC0000FF,"Insufficient funds"); } } else { clear(playerid); SendClientMessage(playerid,0xFBE8BBFFF,"USAGE /b (category) (item)"); SendClientMessage(playerid,0xE8E8E8FF,"1 - Pistols ($400)"); SendClientMessage(playerid,0xE8E8E8FF,"2 - Silenced Pistol ($400)"); SendClientMessage(playerid,0xE8E8E8FF,"3 - Desert Eagle ($600)"); } } else if(arg == 2) { // Menu 2 new ste; tmp = strtok(cmdtext, idx); ste = strval(tmp); if(ste == 1) { new money; money = GetPlayerMoney(playerid); if(money >= 2560) { // Shotgun clear(playerid); SendClientMessage(playerid,0x4FD200FF,"You've bought a Shotgun"); GivePlayerMoney(playerid,-2560); PlayerGuns[playerid][Gun1] = 25; PlayerGuns[playerid][Gun1] = 40; } else { clear(playerid); SendClientMessage(playerid,0xEC0000FF,"Insufficient funds"); } } else if(ste == 2) { // Combat Shotgun new money; money = GetPlayerMoney(playerid); if(money >= 12000) { clear(playerid); SendClientMessage(playerid,0x4FD200FF,"You bought a Combat Shotgun."); GivePlayerMoney(playerid,-12000); PlayerGuns[playerid][Gun1] = 27; PlayerGuns[playerid][Ammo1] = 40; } else { clear(playerid); SendClientMessage(playerid,0xEC0000FF,"Insufficient funds"); } } else { clear(playerid); SendClientMessage(playerid,0xFBE8BBFFF,"USAGE /b (category) (item)"); SendClientMessage(playerid,0xE8E8E8FF,"1 - Shotgun ($2560)"); SendClientMessage(playerid,0xE8E8E8FF,"2 - Combat Shotgun ($12000)"); } } else if(arg == 3) { // Menu 3 new ste; tmp = strtok(cmdtext, idx); ste = strval(tmp); if(ste == 1) { // Mac 10 new money; money = GetPlayerMoney(playerid); if(money >= 1530) { clear(playerid); SendClientMessage(playerid,0x4FD200FF,"You've bought a Mac 10"); GivePlayerMoney(playerid,-1530); PlayerGuns[playerid][Gun1] = 28; PlayerGuns[playerid][Ammo1] = 100; } else { clear(playerid); SendClientMessage(playerid,0xEC0000FF,"Insufficient funds"); } } else if(ste == 2) { // Tec9 new money; money = GetPlayerMoney(playerid); if(money >= 1590) { clear(playerid); SendClientMessage(playerid,0x4FD200FF,"You bought a Tec9"); GivePlayerMoney(playerid,-1590); PlayerGuns[playerid][Gun1] = 32; PlayerGuns[playerid][Ammo1] = 100; } else { clear(playerid); SendClientMessage(playerid,0xEC0000FF,"Insufficient funds"); } } else if(ste == 3) { // MP5 new money; money = GetPlayerMoney(playerid); if(money >= 1800) { clear(playerid); SendClientMessage(playerid,0x4FD200FF,"You bought a MP5"); GivePlayerMoney(playerid,-1800); PlayerGuns[playerid][Gun1] = 29; PlayerGuns[playerid][Ammo1] = 100; } else { clear(playerid); SendClientMessage(playerid,0xEC0000FF,"Insufficient funds"); } } else { clear(playerid); SendClientMessage(playerid,0xFBE8BBFFF,"USAGE /b (category) (item)"); SendClientMessage(playerid,0xE8E8E8FF,"1 - Mac 10 ($1530)"); SendClientMessage(playerid,0xE8E8E8FF,"2 - Tec9 ($1590)"); SendClientMessage(playerid,0xE8E8E8FF,"3 - MP5 ($1800)"); } } else if(arg == 4) { // Menu 4 new teams; teams = gTeam[playerid]; new ste; tmp = strtok(cmdtext, idx); ste = strval(tmp); if(ste == 1) { new money; money = GetPlayerMoney(playerid); if(money >= 4200) { clear(playerid); if(teams == 2) { PlayerGuns[playerid][Gun1] = 30; PlayerGuns[playerid][Ammo1] = 100; SendClientMessage(playerid,0x4FD200FF,"You've bought an AK47"); GivePlayerMoney(playerid,-4200); } else { PlayerGuns[playerid][Gun1] = 31; PlayerGuns[playerid][Ammo1] = 100; SendClientMessage(playerid,0x4FD200FF,"You've bought a M4"); GivePlayerMoney(playerid,-4200); } } else { clear(playerid); SendClientMessage(playerid,0xEC0000FF,"Insufficient funds"); } } else { clear(playerid); SendClientMessage(playerid,0xFBE8BBFFF,"USAGE /b (category) (item)"); if(teams == 2) { SendClientMessage(playerid,0xE8E8E8FF,"1 - AK47($4200)"); } else { SendClientMessage(playerid,0xE8E8E8FF,"1 - M4 ($4200)"); } } } else if(arg == 5) { // Menu 5 new money; money = GetPlayerMoney(playerid); if(money >= 800) { clear(playerid); SendClientMessage(playerid,0x4FD200FF,"You bought Primary Ammo"); PlayerGuns[playerid][Ammo1] = 500; GivePlayerMoney(playerid,-800); } else { clear(playerid); SendClientMessage(playerid,0xEC0000FF,"Insufficient funds"); } } else if(arg == 6) { // Menu 6 new money; money = GetPlayerMoney(playerid); if(money >= 200) { clear(playerid); SendClientMessage(playerid,0x4FD200FF,"You bought Secondary Ammo"); PlayerGuns[playerid][Ammo2] = 70; GivePlayerMoney(playerid,-200); } else { clear(playerid); SendClientMessage(playerid,0xEC0000FF,"Insufficient funds"); } } else if(arg == 7) { // Menu 7 new ste; tmp = strtok(cmdtext, idx); ste = strval(tmp); if(ste == 1) { new money; money = GetPlayerMoney(playerid); if(money >= 1010) { // Kevlar clear(playerid); SendClientMessage(playerid,0x4FD200FF,"You bought Kevlar"); PlayerGuns[playerid][Health] = 150; GivePlayerMoney(playerid,-1010); } else { clear(playerid); SendClientMessage(playerid,0xEC0000FF,"Insufficient funds"); } } else if(ste == 2) { // Kevlar and Helmet new money; money = GetPlayerMoney(playerid); if(money >= 1400) { clear(playerid); SendClientMessage(playerid,0x4FD200FF,"You bought kevlar and helmet"); PlayerGuns[playerid][Health] = 200; GivePlayerMoney(playerid,-1400); } else { clear(playerid); SendClientMessage(playerid,0xEC0000FF,"Insufficient funds"); } } else { clear(playerid); SendClientMessage(playerid,0xFBE8BBFFF,"USAGE /b (category) (item)"); SendClientMessage(playerid,0xE8E8E8FF,"1 - Kevlar ($1010)"); SendClientMessage(playerid,0xE8E8E8FF,"2 - Kevlar and Helmet ($1400)"); } } else { clear(playerid); SendClientMessage(playerid,0xFBE8BBFF,"USAGE /b 'category' 'item'"); SendClientMessage(playerid,0xE8E8E8FF,"1 - Pistols"); SendClientMessage(playerid,0xE8E8E8FF,"2 - Shotguns"); SendClientMessage(playerid,0xE8E8E8FF,"3 - SMGs"); SendClientMessage(playerid,0xE8E8E8FF,"4 - Rifles"); SendClientMessage(playerid,0xE8E8E8FF,"5 - Primary Ammo($800)"); SendClientMessage(playerid,0xE8E8E8FF,"6 - Secondary Ammo($200)"); SendClientMessage(playerid,0xE8E8E8FF,"7 - Equipment"); } } return 1; } if(strcmp(cmd, "/bomb", true) == 0) { if(IsPlayerConnected(playerid)) { if(gTeam[playerid] != 2) { return 1; } if(!PlayerToPoint(6.0,playerid,MapInfo[pBomb][0],MapInfo[pBomb][1],MapInfo[pBomb][2])) { SendClientMessage(playerid, COLOR_GREY, " You are not at the Bomb Place !"); return 1; } if(IsPlayerConnected(HoldingBomb)) { if(HoldingBomb != playerid) { SendClientMessage(playerid, COLOR_GREY, " You don't have the Bomb !"); return 1; } } else { SendClientMessage(playerid, COLOR_GREY, " You don't have the Bomb !"); return 1; } if(BombPlaced != 0) { SendClientMessage(playerid, COLOR_GREY, " Bomb is already placed !"); return 1; } GetPlayerPos(playerid, PlayerPlacingBomb[playerid][0],PlayerPlacingBomb[playerid][1],PlayerPlacingBomb[playerid][2]); PlacingBomb = playerid; bombtimer = SetTimer("PlaceBomb", 6000, 0); SendClientMessage(playerid, COLOR_YELLOW2, "Stay here for 6 seconds to place the Bomb."); } return 1; } if(strcmp(cmd, "/diffuse", true) == 0) { if(IsPlayerConnected(playerid)) { if(gTeam[playerid] != 1) { return 1; } if(!PlayerToPoint(6.0,playerid,MapInfo[pBomb][0],MapInfo[pBomb][1],MapInfo[pBomb][2])) { SendClientMessage(playerid, COLOR_GREY, " You are not at the Bomb Place !"); return 1; } if(BombPlaced != 1) { SendClientMessage(playerid, COLOR_GREY, " Bomb hasn't been placed yet !"); return 1; } GetPlayerPos(playerid, PlayerDefuseBomb[playerid][0],PlayerDefuseBomb[playerid][1],PlayerDefuseBomb[playerid][2]); DefuseBomb = playerid; defusetimer = SetTimer("Defusing", 8000, 0); SendClientMessage(playerid, COLOR_YELLOW2, "Stay here for 8 seconds to Diffuse the Bomb."); } return 1; } if(strcmp(cmd, "/make", true) == 0) { if(IsPlayerConnected(playerid)) { new Float:X,Float:Y,Float:Z; if(!IsPlayerAdmin(playerid)) { SendClientMessage(playerid, COLOR_GREY, " You are not an Admin !"); return 1; } new x_mk[256]; x_mk = strtok(cmdtext, idx); if(!strlen(x_mk)) { SendClientMessage(playerid, COLOR_WHITE, "USAGE: /make [name]"); SendClientMessage(playerid, COLOR_GREY, "Available names: (/make title [text]) (/make TSpawn) (/make CTSpawn)"); SendClientMessage(playerid, COLOR_GREY, "Available names: (/make bomb) (/make limit [number])"); return 1; } if(strcmp(x_mk,"title",true) == 0) { new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) { SendClientMessage(playerid, COLOR_GREY, "USAGE: /make title [text]"); return 1; } strmid(MapMaking[playerid][mTitle], result, 0, strlen(result), 255); SendClientMessage(playerid, COLOR_WHITE, "You've made the Title of the Map."); } else if(strcmp(x_mk,"tspawn",true) == 0) { GetPlayerPos(playerid, X,Y,Z); MapMaking[playerid][mTSpawn][0] = X; MapMaking[playerid][mTSpawn][1] = Y; MapMaking[playerid][mTSpawn][2] = Z; GetPlayerFacingAngle(playerid, MapMaking[playerid][mTAngle]); SendClientMessage(playerid, COLOR_WHITE, "You've made the Terrorist Spawn of the Map."); } else if(strcmp(x_mk,"ctspawn",true) == 0) { GetPlayerPos(playerid, X,Y,Z); MapMaking[playerid][mCTSpawn][0] = X; MapMaking[playerid][mCTSpawn][1] = Y; MapMaking[playerid][mCTSpawn][2] = Z; GetPlayerFacingAngle(playerid, MapMaking[playerid][mCTAngle]); SendClientMessage(playerid, COLOR_WHITE, "You've made the Counter-Terrorist of the Map."); } else if(strcmp(x_mk,"bomb",true) == 0) { GetPlayerPos(playerid, X,Y,Z); MapMaking[playerid][mBomb][0] = X; MapMaking[playerid][mBomb][1] = Y; MapMaking[playerid][mBomb][2] = Z; SendClientMessage(playerid, COLOR_WHITE, "You've made the Bomb Spawn of the Map."); } else if(strcmp(x_mk,"limit",true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "USAGE: /make limit [number]"); return 1; } new number = strval(tmp); if(number < 1 || number > 4) { SendClientMessage(playerid, COLOR_GREY, " Limit number can't be below 1 or above 4 !"); return 1; } GetPlayerPos(playerid, X,Y,Z); if(number==1) { MapMaking[playerid][mLimit1][0] = X; MapMaking[playerid][mLimit1][1] = Y; MapMaking[playerid][mLimit1][2] = Z; } else if(number==2) { MapMaking[playerid][mLimit2][0] = X; MapMaking[playerid][mLimit2][1] = Y; MapMaking[playerid][mLimit2][2] = Z; } else if(number==3) { MapMaking[playerid][mLimit3][0] = X; MapMaking[playerid][mLimit3][1] = Y; MapMaking[playerid][mLimit3][2] = Z; } else if(number==4) { MapMaking[playerid][mLimit4][0] = X; MapMaking[playerid][mLimit4][1] = Y; MapMaking[playerid][mLimit4][2] = Z; } format(string, sizeof(string), "You've made LimitNr %d of the Map.",number); SendClientMessage(playerid, COLOR_WHITE, string); } else { SendClientMessage(playerid, COLOR_GREY, " Invalid Run Making name !"); return 1; } } return 1; } if(strcmp(cmd, "/cssavemap", true)==0) { if(IsPlayerConnected(playerid)) { if(IsPlayerAdmin(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, "USAGE: /cssavemap [mapname]"); return 1; } SaveMap(playerid,tmp); } else { SendClientMessage(playerid, COLOR_GREY, " you are not authorized to use that command!"); } } return 1; } if(strcmp(cmd, "/csloadmap", true)==0) { if(IsPlayerConnected(playerid)) { if(IsPlayerAdmin(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, "USAGE: /csloadmap [mapname]"); return 1; } LoadMap(playerid,tmp); } else { SendClientMessage(playerid, COLOR_GREY, " you are not authorized to use that command!"); } } return 1; } if(strcmp(cmd, "/mark", true) == 0) { if(IsPlayerConnected(playerid)) { if(!IsPlayerAdmin(playerid)) { SendClientMessage(playerid, COLOR_GREY, " You are not an Admin !"); return 1; } GetPlayerPos(playerid, Pos[playerid][0], Pos[playerid][1], Pos[playerid][2]); SendClientMessage(playerid, COLOR_GREY, " Position saved !"); } return 1; } if(strcmp(cmd, "/gotomark", true) == 0) { if(IsPlayerConnected(playerid)) { if(!IsPlayerAdmin(playerid)) { SendClientMessage(playerid, COLOR_GREY, " You are not an Admin !"); return 1; } SetPlayerPos(playerid, Pos[playerid][0], Pos[playerid][1], Pos[playerid][2]); } return 1; } if(strcmp(cmd, "/goto", true) == 0) { if(IsPlayerConnected(playerid)) { if(!IsPlayerAdmin(playerid)) { SendClientMessage(playerid, COLOR_GREY, " You are not an Admin !"); return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, "USAGE: /goto [playerid/PartOfName]"); return 1; } new Float:plocx,Float:plocy,Float:plocz; giveplayerid = ReturnUser(tmp); if (IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { GetPlayerPos(giveplayerid, plocx, plocy, plocz); if (GetPlayerState(playerid) == 2) { new tmpcar = GetPlayerVehicleID(playerid); SetVehiclePos(tmpcar, plocx, plocy+4, plocz); } else { SetPlayerPos(playerid,plocx,plocy+2, plocz); } } } else { format(string, sizeof(string), " %d is not an active player.", giveplayerid); SendClientMessage(playerid, COLOR_GREY, string); } } return 1; } if(strcmp(cmd, "/rescars", true) == 0) { if(IsPlayerConnected(playerid)) { if(!IsPlayerAdmin(playerid)) { SendClientMessage(playerid, COLOR_GREY, " You are not an Admin !"); return 1; } for(new i = 0; i <= CARS; i++) { SetVehicleToRespawn(i); } } return 1; } if(strcmp(cmd, "/gotocar", true) == 0) { if(IsPlayerConnected(playerid)) { if(!IsPlayerAdmin(playerid)) { SendClientMessage(playerid, COLOR_GREY, " You are not an Admin !"); return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, "USAGE: /gotocar [carid]"); return 1; } new testcar = strval(tmp); new Float:cwx2,Float:cwy2,Float:cwz2; GetVehiclePos(testcar, cwx2, cwy2, cwz2); SetPlayerPos(playerid, cwx2, cwy2, cwz2); SetPlayerInterior(playerid,0); } return 1; } if(strcmp(cmd, "/lock", true)==0 && IsPlayerAdmin(playerid) == 1){ locked = 1; SendClientMessageToAll(0x00DD37FF, "* All cars locked"); return 1;} if(strcmp(cmd, "/unlock", true)==0 && IsPlayerAdmin(playerid) == 1){ locked = 0; SendClientMessageToAll(0x00DD37FF, "* All cars unlocked"); return 1;} if(strcmp(cmd, "/kick", true) == 0) { if(IsPlayerConnected(playerid)) { if(!IsPlayerAdmin(playerid)) { SendClientMessage(playerid, COLOR_GREY, " You are not an Admin !"); return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, "USAGE: /kick [playerid/PartOfName]"); return 1; } giveplayerid = ReturnUser(tmp); if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { Kick(giveplayerid); } } else { SendClientMessage(playerid, COLOR_GREY, " That player is Offline !"); return 1; } } return 1; } if(strcmp(cmd, "/ban", true) == 0) { if(IsPlayerConnected(playerid)) { if(!IsPlayerAdmin(playerid)) { SendClientMessage(playerid, COLOR_GREY, " You are not an Admin !"); return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, "USAGE: /ban [playerid/PartOfName]"); return 1; } giveplayerid = ReturnUser(tmp); if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { Ban(giveplayerid); } } else { SendClientMessage(playerid, COLOR_GREY, " That player is Offline !"); return 1; } } return 1; } return 1; } public OnPlayerInfoChange(playerid) { return 1; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid,x,y,z); if(locked){SetPlayerPos(playerid,x,y,z);} return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { return 1; } public OnPlayerEnterCheckpoint(playerid) { if(BombDropped > 0 && gTeam[playerid] == 2) { BombDropped = 0; HoldingBomb = playerid; SendClientMessage(playerid, COLOR_YELLOW, "You picked up the Bomb."); for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(PlayingRound[i] != 0) { SetPlayerCheckpoint(i, MapInfo[pBomb][0],MapInfo[pBomb][1],MapInfo[pBomb][2],6.0); } } } } return 1; } public OnPlayerLeaveCheckpoint(playerid) { return 1; } IsNumeric(const string[]) { for (new i = 0, j = strlen(string); i < j; i++) { if (string[i] > '9' || string[i] < '0') return 0; } return 1; } ReturnUser(text[], playerid = INVALID_PLAYER_ID) { new pos = 0; while (text[pos] < 0x21) // Strip out leading spaces { if (text[pos] == 0) return INVALID_PLAYER_ID; // No passed text pos++; } new userid = INVALID_PLAYER_ID; if (IsNumeric(text[pos])) // Check whole passed string { // If they have a numeric name you have a problem (although names are checked on id failure) userid = strval(text[pos]); if (userid >=0 && userid < MAX_PLAYERS) { if(!IsPlayerConnected(userid)) { /*if (playerid != INVALID_PLAYER_ID) { SendClientMessage(playerid, 0xFF0000AA, "User not connected"); }*/ userid = INVALID_PLAYER_ID; } else { return userid; // A player was found } } /*else { if (playerid != INVALID_PLAYER_ID) { SendClientMessage(playerid, 0xFF0000AA, "Invalid user ID"); } userid = INVALID_PLAYER_ID; } return userid;*/ // Removed for fallthrough code } // They entered [part of] a name or the id search failed (check names just incase) new len = strlen(text[pos]); new count = 0; new name[MAX_PLAYER_NAME]; for (new i = 0; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { GetPlayerName(i, name, sizeof (name)); if (strcmp(name, text[pos], true, len) == 0) // Check segment of name { if (len == strlen(name)) // Exact match { return i; // Return the exact player on an exact match // Otherwise if there are two players: // Me and MeYou any time you entered Me it would find both // And never be able to return just Me's id } else // Partial match { count++; userid = i; } } } } if (count != 1) { if (playerid != INVALID_PLAYER_ID) { if (count) { SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow earch"); } else { SendClientMessage(playerid, 0xFF0000AA, "No matching user found"); } } userid = INVALID_PLAYER_ID; } return userid; // INVALID_USER_ID for bad return }