//------------------------------------------------------------------------------ // // San Fierro TDM. A Team Deathmtach 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 #define COLOR_GREEN 0x33AA33AA #define COLOR_RED 0xAA3333AA #define COLOR_YELLOW 0xFFFF00AA #define COLOR_PINK 0xFF66FFAA #define COLOR_BLUE 0x0000BBAA #define COLOR_LIGHTBLUE 0x33CCFFAA #define COLOR_DARKRED 0x660000AA #define COLOR_ORANGE 0xFF9900AA #define COLOR_PURPLE 0x9B30FF #define COLOR_WHITE 0xFFFFFF //Team Defines #define TEAM_STUNTER 0 #define TEAM_PIMP 1 #define TEAM_GOLFER 2 #define TEAM_TRIAD 3 #define TEAM_MECHANIC 4 #define TEAM_VALET 5 #define TEAM_MEDIC 6 #define TEAM_FBI 7 // Round duration new gRoundTime = 3600000; // 60 mins //new gRoundTime = 900000; //15 mins //new gRoundTime = 300000; // 5 mins //------------------------------------------------------------------------------ main() { print("\n----------------------------------"); print(" SFTDM by Cam (2006)\n"); print("----------------------------------\n"); } //------------------------------------------------------------------------------ public OnGameModeInit() { SetGameModeText("San Fierro TDM"); SetTeamCount(7); ShowNameTags(1); ShowPlayerMarkers(1); SetWorldTime(18); AddPlayerClass(60,1921.8248,-1404.1094,13.5703,268.8936,22,272,25,40,4,1); //Stunter AddPlayerClass(249,-2653.6443,1388.2767,7.1301,212.8453,23,272,29,270,5,1); //Pimp AddPlayerClass(259,-2642.2583,-274.9985,7.5393,135.0036,25,40,32,250,9,1); //Golfer AddPlayerClass(118,-2157.2119,649.5484,52.3672,267.0820,24,70,31,250,4,1); //Triad AddPlayerClass(50,-1377.4271,466.0897,7.1875,1.0348,22,272,30,300,9,1); //Mechanic AddPlayerClass(253,-1754.9976,958.5851,24.8828,163.2550,25,40,24,70,4,1); //Valet AddPlayerClass(274,-2665.4282,635.6348,14.4531,179.8403,33,40,23,272,4,1); //Medic AddPlayerClass(286,-1635.0077,665.8105,7.1875,264.2244,29,300,22,170,3,1); //FBI AddStaticVehicle(522,1913.1875,-1415.7065,13.1354,29.2271,6,25); //Nrg500 AddStaticVehicle(522,1915.4531,-1415.6125,13.1330,32.1960,7,79); //Nrg500 AddStaticVehicle(522,1917.6331,-1415.3016,13.1412,31.2608,3,8); //Nrg500 AddStaticVehicle(522,1911.1105,-1416.0217,13.1390,19.9360,8,82); //Nrg500 AddStaticVehicle(471,1881.6776,-1369.1628,13.0517,177.3715,103,111); //Quad AddStaticVehicle(471,1883.1843,-1369.2076,13.0507,180.8963,120,114); //Quad AddStaticVehicle(471,1884.6907,-1369.2875,13.0503,178.2688,74,91); //Quad AddStaticVehicle(471,1886.2025,-1369.3645,13.0509,179.2402,120,112); //Quad AddStaticVehicle(443,1864.5282,-1400.1382,14.1169,181.5446,20,1); //Packer AddStaticVehicle(443,1868.4196,-1400.1382,14.1463,183.6005,24,1); //Packer //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(370, 15, -2209.4707,294.1174,35.1172); // jetpack AddStaticPickup(370, 15, -1765.4392,-174.7473,3.5547); // jetpack SetTimer("GameModeExitFunc", gRoundTime, 0); return 1; } //------------------------------------------------------------------------------ public OnPlayerConnect(playerid) { GameTextForPlayer(playerid,"San Fierro: ~r~TDM",2500,5); SetPlayerColor(playerid, COLOR_GREY); // Set the player's color to inactive GivePlayerMoney(playerid, 10000); new string[256]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name, sizeof(name)); format(string, sizeof(string), ".:Bienvenue:. Profité bien de mon serveur, pour plus d'info taper /aide", name); SendClientMessage(playerid, COLOR_LIGHTBLUE ,string); return 1; } //------------------------------------------------------------------------------ public OnPlayerSpawn(playerid) { SetPlayerInterior(playerid,0); if(gTeam[playerid] == TEAM_STUNTER) { SetPlayerColor(playerid,COLOR_GREEN); // Green } else if(gTeam[playerid] == TEAM_PIMP) { SetPlayerColor(playerid,COLOR_RED); // Red } else if(gTeam[playerid] == TEAM_GOLFER) { SetPlayerColor(playerid,COLOR_YELLOW); // Yellow } else if(gTeam[playerid] == TEAM_TRIAD) { SetPlayerColor(playerid,COLOR_PINK); // Pink } else if(gTeam[playerid] == TEAM_MECHANIC) { SetPlayerColor(playerid,COLOR_BLUE); // Blue } else if(gTeam[playerid] == TEAM_VALET) { SetPlayerColor(playerid,COLOR_LIGHTBLUE); // Light Blue } else if(gTeam[playerid] == TEAM_MEDIC) { SetPlayerColor(playerid,COLOR_DARKRED); // Dark Red } else if(gTeam[playerid] == TEAM_FBI) { SetPlayerColor(playerid,COLOR_ORANGE); // Orange } return 1; } //------------------------------------------------------------------------------ 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, 1000); } else { //Team Killer! new warning[256]; format(warning, sizeof(warning), "Be careful! You have been punished for teamkilling."); SendClientMessage(killerid, 0xFFFF00AA, warning); SendDeathMessage(killerid,playerid,reason); GivePlayerMoney(killerid, -1000); 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); PlayerPlaySound(playerid,1097,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~Stunter", 500, 3); } case 1: { GameTextForPlayer(playerid, "~g~Pimp", 500, 3); } case 2: { GameTextForPlayer(playerid, "~g~Golfer", 500, 3); } case 3: { GameTextForPlayer(playerid, "~g~Triad", 500, 3); } case 4: { GameTextForPlayer(playerid, "~g~Mechanic", 500, 3); } case 5: { GameTextForPlayer(playerid, "~g~Valet", 500, 3); } case 6: { GameTextForPlayer(playerid, "~g~Medic", 500, 3); } case 7: { GameTextForPlayer(playerid, "~g~FBI", 500, 3); } } return 1; } //------------------------------------------------------------------------------ public GameModeExitFunc() { GameModeExit(); return 1; } //------------------------------------------------------------------------------ SetPlayerClass(playerid, classid) { if(classid == 0) { gTeam[playerid] = TEAM_STUNTER; } else if(classid == 1) { gTeam[playerid] = TEAM_PIMP; } else if(classid == 2) { gTeam[playerid] = TEAM_GOLFER; } else if(classid == 3) { gTeam[playerid] = TEAM_TRIAD; } else if(classid == 4) { gTeam[playerid] = TEAM_MECHANIC; } else if(classid == 5) { gTeam[playerid] = TEAM_VALET; } else if(classid == 6) { gTeam[playerid] = TEAM_MEDIC; } else if(classid == 7) { gTeam[playerid] = TEAM_FBI; } } //------------------------------------------------------------------------------ public OnPlayerCommandText(playerid, cmdtext[]){ if(strcmp(cmdtext, "/Katana", true)==0){ GivePlayerWeapon(playerid,8 ,1); GivePlayerMoney(playerid, -50);//argent pour acheter l'arme SendClientMessage(playerid, 0xFFFF00AA, "Tu as une Katana !"); } else if(strcmp(cmdtext, "/Grenades", true)==0){ GivePlayerWeapon(playerid,16 ,25); GivePlayerMoney(playerid, -50);//argent pour acheter l'arme SendClientMessage(playerid, 0xFFFF00AA, "Tu as des grenades !"); } else if(strcmp(cmdtext, "/AK47", true)==0){ GivePlayerWeapon(playerid,30 ,100); GivePlayerMoney(playerid, -100);//argent pour acheter l'arme SendClientMessage(playerid, 0xFFFF00AA, "Tu as AK47 !"); } else if(strcmp(cmdtext, "/sniper", true)==0){ GivePlayerWeapon(playerid,34 ,20); GivePlayerMoney(playerid, -100);//argent pour acheter l'arme SendClientMessage(playerid, 0xFFFF00AA, "Tu as un sniper !"); } else if(strcmp(cmdtext, "/minigun", true)==0){ GivePlayerWeapon(playerid,38 ,800); GivePlayerMoney(playerid, -200);//argent pour acheter l'arme SendClientMessage(playerid, 0xFFFF00AA, "Tu as un minigun !"); } else if(strcmp(cmdtext, "/Parachute", true)==0){ GivePlayerWeapon(playerid,46 ,1); GivePlayerMoney(playerid, -50);//argent pour acheter l'arme SendClientMessage(playerid, 0xFFFF00AA, "Tu as un parachute !"); } //--------------------------- Teleportation ------------------------------------ else if(strcmp(cmdtext,"/chiliad", true)==0){ if(IsPlayerInAnyVehicle(playerid)){ new Float:X; new Float:Y; new Float:Z; new VehicleID; GetPlayerPos(playerid, X, Y, Z);//observe où le joueur se situe VehicleID = GetPlayerVehicleID(playerid);//pareil pour le véhicule SetVehiclePos(VehicleID,-2329.6187,-1608.4329,483.7257);//pose la voiture } else { new Float:X; new Float:Y; new Float:Z; GetPlayerPos(playerid, X, Y, Z);//pour le joueur SetPlayerPos(playerid,-2329.6187,-1608.4329,483.7257);//idem } } else if(strcmp(cmdtext,"/stunt", true)==0){ if(IsPlayerInAnyVehicle(playerid)){ new Float:X; new Float:Y; new Float:Z; new VehicleID; GetPlayerPos(playerid, X, Y, Z);//observe où le joueur se situe VehicleID = GetPlayerVehicleID(playerid);//pareil pour le véhicule SetVehiclePos(VehicleID,1921.8248,-1404.1094,13.5703);//pose la voiture } else { new Float:X; new Float:Y; new Float:Z; GetPlayerPos(playerid, X, Y, Z);//pour le joueur SetPlayerPos(playerid,1921.8248,-1404.1094,13.5703);//idem } //--------------------------- /aide -------------------------------------------- if (strcmp(cmdtext, "/aide", true)==0){ SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour commencer prenez connaisance du but en tapant /but"); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour connaitre les teleportation, tapez /teleportation?"); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour conaitre la liste d'arme, tapez /arme?"); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour voir toute les commandes possible tapez /commande?"); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Sinon bon jeu sur mon serveur !!!"); } if (strcmp(cmdtext, "/but", true)==0){ SendClientMessage(playerid, COLOR_GREY, "Le but est de faire du stunt mais le droit de tuer est autorisé amusez vous bien"); } if (strcmp(cmdtext, "/teleportation?", true)==0){ SendClientMessage(playerid, COLOR_LIGHTBLUE, "Voici les teleportations possible"); SendClientMessage(playerid, COLOR_LIGHTBLUE, "/chiliad"); } if (strcmp(cmdtext, "/arme?", true)==0){ SendClientMessage(playerid, COLOR_ORANGE, "Voici les armes possibles"); SendClientMessage(playerid, COLOR_ORANGE, "/katana"); SendClientMessage(playerid, COLOR_ORANGE, "/Grenades"); SendClientMessage(playerid, COLOR_ORANGE, "/AK47"); SendClientMessage(playerid, COLOR_ORANGE, "/sniper"); SendClientMessage(playerid, COLOR_ORANGE, "/minigun"); SendClientMessage(playerid, COLOR_ORANGE, "/Parachute"); } if (strcmp(cmdtext, "/commande?", true)==0){ SendClientMessage(playerid, COLOR_ORANGE, "Voici les commandes possibles"); SendClientMessage(playerid, COLOR_ORANGE, "/cam1"); SendClientMessage(playerid, COLOR_ORANGE, "/arme?"); SendClientMessage(playerid, COLOR_ORANGE, "/teleportation?"); SendClientMessage(playerid, COLOR_ORANGE, "/lock"); SendClientMessage(playerid, COLOR_ORANGE, "/unlock"); } //--------------------------- Fermer voiture ----------------------------------- if (strcmp(cmdtext, "/lock", true)==0) { if(IsPlayerInAnyVehicle(playerid)) { new State=GetPlayerState(playerid); if(State!=PLAYER_STATE_DRIVER) { SendClientMessage(playerid,0xFFFF00AA,"You can only lock the doors as the driver."); return 1; } new i; for(i=0;i