//------------------------------------------------------------------------------ // // Los Santos SplinterCell Mod A script for SA-MP 0.1 // //------------------------------------------------------------------------------ #include #include #include //Global stuff and defines for our gamemode static gTeam[MAX_PLAYERS]; // Tracks the team assignment for each player new gPlayerClass[MAX_PLAYERS]; //Color Defines #define COLOR_GREY 0xAFAFAFAA // GREY #define COLOR_GREEN 0x33AA33AA // GREEN #define COLOR_RED 0xAA3333AA // RED #define COLOR_YELLOW 0xFFFF00AA // YELLOW #define COLOR_PINK 0xFF66FFAA // PINK #define COLOR_BLUE 0x0000BBAA // BLUE #define COLOR_LIGHTBLUE 0x33CCFFAA // LIGHT BLUE #define COLOR_DARKRED 0x660000AA // DARKRED #define COLOR_ORANGE 0xFF9900AA // ORANGE //Team Defines #define TEAM_CURE 0 #define TEAM_LOUBARD 1 #define TEAM_TRUAND 2 #define TEAM_CHAUD 3 #define TEAM_TRIAD 4 #define TEAM_SECU 5 #define TEAM_VEUVE 6 #define TEAM_SWAT 7 // Round duration new gRoundTime = 3600000; // 60 mins //new gRoundTime = 900000; //15 mins //new gRoundTime = 300000; // 5 mins //------------------------------------------------------------------------------ main() { print("\n----------------------------------"); print(" SplinterCell Mode by JoEyFaYa (2007)\n"); print("----------------------------------\n"); } //------------------------------------------------------------------------------ public OnGameModeInit() { SetTimer("ShowPlayerMarkers", 15000, 1); SetGameModeText("SplinterCell"); SetTeamCount(7); ShowNameTags(0); ShowPlayerMarkers(1); SetWorldTime(23); AddPlayerClass(68,2345.6934,-1169.8510,28.0401,6.8849,10,1,23,500,0,0); //Cure AddPlayerClass(100,2398.6985,-1226.9771,25.1383,8.8497,23,500,4,1,0,0); //Loubard AddPlayerClass(111,2676.4399,-1200.1429,66.6137,4.2319,23,500,1,1,0,0); //Truand AddPlayerClass(117,2790.0710,-1096.4911,30.7188,137.9252,23,500,8,1,0,0); //Triad AddPlayerClass(125,2841.0806,-1348.3073,11.0625,181.3626,23,500,4,1,0,0); //Chaud AddPlayerClass(165,2758.6675,-1548.5178,24.7010,103.1295,23,500,3,1,0,0); //Secu AddPlayerClass(169,2499.0159,-1684.9193,13.4304,16.9498,23,500,12,1,0,0); //Veuve AddPlayerClass(285,2236.8396,-1689.9382,13.9553,88.1376,23,500,5,1,0,0); //Swat //Trains // AddStaticVehicle(537,-1943.3127,158.0254,27.0006,357.3614,121,1); // AddStaticVehicle(569,-1943.3127,158.0254,27.0006,357.3614,121,1); // AddStaticVehicle(569,-1943.3127,158.0254,27.0006,357.3614,121,1); // AddStaticVehicle(569,-1943.3127,158.0254,27.0006,357.3614,121,1); //Pickups AddStaticPickup(1242, 2, 2349.6914,-1245.1322,22.5000); // Armor AddStaticPickup(358, 2, 2328.1755,-1244.5586,22.5000); // Sniper Rifle AddStaticPickup(358, 2, 2524.1218,-1208.1589,57.2766); // Sniper Rifle AddStaticPickup(1242, 2, 2594.7200,-1216.6533,57.7492); // Armor AddStaticPickup(355, 2, 2764.7842,-1193.1119,69.4063); // AK47 AddStaticPickup(1242, 2, 2773.4343,-1333.6852,46.5000); // Armor AddStaticPickup(355, 2, 2835.4785,-1459.4193,40.7010); // AK47 AddStaticPickup(358, 2, 2835.9512,-1463.8110,40.7010); // Sniper Rifle AddStaticPickup(1242, 2, 2517.8362,-1722.5385,18.5821); // Armor AddStaticPickup(355, 2, 2316.6748,-1631.7311,14.6323); // AK47 AddStaticPickup(355, 2, 2537.4392,-1435.8475,24.0000); // AK47 AddStaticPickup(358, 2, 2505.1653,-1470.5105,29.7266); // Sniper Rifle SetTimer("GameModeExitFunc", gRoundTime, 0); return 1; } //------------------------------------------------------------------------------ public OnPlayerConnect(playerid) { SendClientMessage(playerid, COLOR_LIGHTBLUE, "Bienvenue sur JoEyFaYa SplinterCell Mode Tapez /exp pour + d'infos."); GivePlayerMoney(playerid, 10000); SetPlayerColor(playerid, COLOR_GREY); // Set the player's color to inactive return 1; } //------------------------------------------------------------------------------ public OnPlayerSpawn(playerid) { SetPlayerInterior(playerid,0); if(gTeam[playerid] == TEAM_CURE) { SetPlayerColor(playerid,COLOR_GREEN); // Green } else if(gTeam[playerid] == TEAM_LOUBARD) { SetPlayerColor(playerid,COLOR_RED); // Red } else if(gTeam[playerid] == TEAM_TRUAND) { SetPlayerColor(playerid,COLOR_YELLOW); // Yellow } else if(gTeam[playerid] == TEAM_TRIAD) { SetPlayerColor(playerid,COLOR_PINK); // Pink } else if(gTeam[playerid] == TEAM_CHAUD) { SetPlayerColor(playerid,COLOR_BLUE); // Blue } else if(gTeam[playerid] == TEAM_SECU) { SetPlayerColor(playerid,COLOR_LIGHTBLUE); // Light Blue } else if(gTeam[playerid] == TEAM_VEUVE) { SetPlayerColor(playerid,COLOR_DARKRED); // Dark Red } else if(gTeam[playerid] == TEAM_SWAT) { SetPlayerColor(playerid,COLOR_ORANGE); // Orange } return 1; } SetPlayerWorldBounds(playerid, 2219.1531, 2293.4001,2847.6179, 2850.6711); //------------------------------------------------------------------------------ public OnPlayerDeath(playerid, killerid, reason) { if(killerid == INVALID_PLAYER_ID) { SendDeathMessage(INVALID_PLAYER_ID,playerid,reason); } else { if(gTeam[killerid] != gTeam[playerid]) { // Valid kill SendDeathMessage(killerid,playerid,reason); SetPlayerScore(killerid,GetPlayerScore(killerid)+1); GivePlayerMoney(killerid, 3000); } else { //Team Killer! new warning[256]; format(warning, sizeof(warning), "Attention tu a été sanctionner pour avoir tué un membre de ton équipe"); SendClientMessage(killerid, 0xFFFF00AA, warning); SendDeathMessage(killerid,playerid,reason); GivePlayerMoney(killerid, -1500); SetPlayerScore(killerid, GetPlayerScore(killerid) - 1); } } return 1; } //------------------------------------------------------------------------------ public SetupPlayerForClassSelection(playerid) { SetPlayerInterior(playerid,14); SetPlayerPos(playerid,258.4893,-41.4008,1002.0234); SetPlayerFacingAngle(playerid, 90.0); SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234); SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234); } //------------------------------------------------------------------------------ public OnPlayerRequestClass(playerid, classid) { SetPlayerClass(playerid, classid); SetupPlayerForClassSelection(playerid); gPlayerClass[playerid] = classid; switch (classid) { case 0: { GameTextForPlayer(playerid, "~g~Le Pape", 1000, 3); } case 1: { GameTextForPlayer(playerid, "~g~Loubard", 1000, 3); } case 2: { GameTextForPlayer(playerid, "~g~Truand", 1000, 3); } case 3: { GameTextForPlayer(playerid, "~g~Rouleau De Printemps", 1000, 3); } case 4: { GameTextForPlayer(playerid, "~g~Jesus Malsain", 1000, 3); } case 5: { GameTextForPlayer(playerid, "~g~Agent de Secu", 1000, 3); } case 6: { GameTextForPlayer(playerid, "~g~Veuve Noire", 1000, 3); } case 7: { GameTextForPlayer(playerid, "~g~SWAT Boy", 1000, 3); } } return 1; } //------------------------------------------------------------------------------ public GameModeExitFunc() { GameModeExit(); return 1; } //------------------------------------------------------------------------------ SetPlayerClass(playerid, classid) { if(classid == 0) { gTeam[playerid] = TEAM_CURE; } else if(classid == 1) { gTeam[playerid] = TEAM_LOUBARD; } else if(classid == 2) { gTeam[playerid] = TEAM_TRUAND; } else if(classid == 3) { gTeam[playerid] = TEAM_TRIAD; } else if(classid == 4) { gTeam[playerid] = TEAM_CHAUD; } else if(classid == 5) { gTeam[playerid] = TEAM_SECU; } else if(classid == 6) { gTeam[playerid] = TEAM_VEUVE; } else if(classid == 7) { gTeam[playerid] = TEAM_SWAT; } } //------------------------------------------------------------------------------ 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; } public OnPlayerCommandText(playerid, cmdtext[]) { new cmd[256]; new idx; cmd = strtok(cmdtext, idx); if(strcmp(cmd, "/exp", true) == 0) { SendClientMessage(playerid, COLOR_LIGHTBLUE, "SplinterCell : Tuer le maximum d'ennemi tout en restant discret.Leur posisitons s'affiche toutes les 15sec"); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous trouverez un peu partout sur la map des armes & des pare-balles cherchez bien ;)"); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Taper /armes pour voir la liste des armes que vous pouvez acheter"); return 1; } if(strcmp(cmd, "/isu", true) == 0) { GameTextForAll("Je te vois :D", 2000, 5); return 1; } if (strcmp(cmdtext, "/armes", true)==0){ SendClientMessage(playerid, COLOR_RED, "Voici les armes possibles"); SendClientMessage(playerid, COLOR_ORANGE, "Tronconneuse 500$ tape : /tronco"); SendClientMessage(playerid, COLOR_ORANGE, "MP5 800$ Tape : /mp5"); SendClientMessage(playerid, COLOR_ORANGE, "AK47 1100$ Tape : /ak"); SendClientMessage(playerid, COLOR_ORANGE, "Sniper 1400$ Tape : /snip"); SendClientMessage(playerid, COLOR_ORANGE, "Lance Flamme 1800$ Tape : /lf"); } if(strcmp(cmdtext, "/tronco", true)==0){ GivePlayerWeapon(playerid,9 ,1); GivePlayerMoney(playerid, -500);//argent pour acheter l'arme SendClientMessage(playerid, 0xFFFF00AA, "Tu as une Tronconneuse !"); } else if(strcmp(cmdtext, "/mp5", true)==0){ GivePlayerWeapon(playerid,29 ,150); GivePlayerMoney(playerid, -800);//argent pour acheter l'arme SendClientMessage(playerid, 0xFFFF00AA, "Tu as une MP5 !"); } else if(strcmp(cmdtext, "/ak", true)==0){ GivePlayerWeapon(playerid,30 ,100); GivePlayerMoney(playerid, -1100);//argent pour acheter l'arme SendClientMessage(playerid, 0xFFFF00AA, "Tu as un AK47 !"); } else if(strcmp(cmdtext, "/snip", true)==0){ GivePlayerWeapon(playerid,34 ,100); GivePlayerMoney(playerid, -1400);//argent pour acheter l'arme SendClientMessage(playerid, 0xFFFF00AA, "Tu as un sniper !"); } else if(strcmp(cmdtext, "/lf", true)==0){ GivePlayerWeapon(playerid,37 ,500); GivePlayerMoney(playerid, -1800);//argent pour acheter l'arme SendClientMessage(playerid, 0xFFFF00AA, "Tu as un lance flamme !"); } // PROCESS OTHER COMMANDS return 1; } //------------------------------------------------------------------------------