Advertisement
Jujuv

[SA:MP | GM] Tiny-TDM

Jan 29th, 2012
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.74 KB | None | 0 0
  1. /*
  2.  
  3. -------------------------------[Aucuns merites]--------------------------------
  4. Je ne me permeterais pas de dire que ce script est de moi car une bonne partie de celui-ci est copie des tutoriels du Wiki Sa:-Mp
  5.  et des scripts partages par la communaute Anglophone sur le forum Sa:Mp.
  6.  Les ajustements apportes aux codes copies sont minimes.
  7. Je vais tacher de regrouper les "sources" ici.
  8. Jujuv.*/
  9.  
  10.  
  11. /*----------------------[Conseilles aux debutants]---------------
  12. Il n'y a pas de mal a debuter, a avoir du mal, a ne pas comprendre, [...], mais il ne faut pas bruler les etapes !
  13. Ainsi copier un code sans y apporter de reel modifications n'est pas une mauvaise chose mais copier un code sans le comprendre est une erreur classique et tragique !!
  14. Je me suis permis de copier des codes que je comprenais et lorsque ce n'etais pas le cas, je me suis arrete 5 a 10 minutes pour lire les tutoriels ou articles suceptibles de m'aider et je n'ai pas utilise
  15. le code copie tant que je ne le comprenais pas integralement.
  16. De plus, je n'ai copie que des codes basiques et libres de droits !
  17. Il est tout de même possible que j'ai copie un code sans me rendre compte qu'il ete sous licence, si tel est le cas : contactez moi (jujuv.samp {AT} hotmail [DOT] fr)
  18. Je debute moi même ;-)
  19.  
  20. Deuxieme conseille : n'utilisez pas l'IDE de base fourni avec le serveur (Pawno) , preferez en choisir un plus avance (voir http://wiki.sa-mp.com/wiki/Scripting_Editors)
  21. Perssonelement, j'utilise SAMP Editor.
  22.  
  23. A ce propos, un troisieme conseille : ne vous tromper pas dans votre vocabulaire quand vous parler de /scripting/ !
  24. Ceux qui ne comprenent pas vous croiront doue mais ceux qui ont un niveau plus eleve vous prendront pour un imbecile !
  25. Ainsi il y a une erreur courrante pour les debutants : ne confondez pas Pawn et Pawno !!
  26. Pawn est un langage de programmation très haut niveau pour perssonaliser les serveurs Sa:Mp; Pawno , lui est un IDE fourni par la /team Sa:Mp/ avec le logiciel serveur pour Windows !
  27.  
  28.  
  29.  
  30. /!\Pour la base de la base de la programmation voir : http://www.siteduzero.com/tutoriel-3-361996-par-ou-commencer.html#ss_part_3  (partie 3 uniquement) et http://www.siteduzero.com/tutoriel-3-13920-ayez-les-bons-outils.html#ss_part_1 (Partie 1 du Chapitre 2 de la 1er partie du tutoriel seulement)
  31. Vous pouvez-vous passer de ces conaissances mais ce serais une grande perte !
  32. Vous ne comprendriez pas completement ce que vous faites et auriez du mal a passer a un langage informatique plus /difficile/.
  33.  
  34.  
  35. */
  36.  
  37.  
  38. /*-----------------[Message to English scripters]----------------------
  39.  
  40. This script is constituted of many basics scripts found on wiki.sa-mp.com and/or forum.sa-mp.com.
  41. If you are the owner of one or/and if you have a licence for the one , you should contact me at jujuv.games {AT} hotmail [DOT] fr
  42. You know that internet is realy big and free so you should know that i can't ensure that i can stop the difusion of your code.
  43.  
  44.    /\
  45.   /  \
  46.  /    \
  47. /   !  \
  48. --------   The email i gived is an Hotmail Alias so i can delete it if i get too many spams !
  49.  
  50.  
  51. */
  52.  
  53.  
  54.  
  55.  
  56. /*
  57. -------------------------------[Sources]--------------------------------
  58. Pour de l'aide, voir : forum.sa-mp.com ou wiki.sa-mp.com
  59.  
  60.     *Anti Spawn-Kill System : http://forum.sa-mp.com/showthread.php?p=1568257
  61.     *Bases : http://wiki.sa-mp.com/wiki/PAWN_tutorial
  62.     *Bases : http://wiki.sa-mp.com/wiki/Scripting_Basics
  63.     *HeadShot System : http://forum.sa-mp.com/showthread.php?p=802102
  64.  
  65. */
  66.  
  67.  
  68.  
  69.  
  70.  
  71. #include <a_samp>
  72.  
  73. //Forwards :
  74. forward AntiSpawnkill(playerid);
  75. forward GivePlayerScore(playerid, earnedScore);
  76. forward GetOutPlayerScore(playerid, lostScore);
  77. //Fin de la liste des Forwards
  78.  
  79. //Constantes :
  80. #define TEAM_TERRO 1
  81. #define TEAM_COPS 2
  82. #define TEAM_TERRO_COLOR 0x53555d //Light Black
  83. #define TEAM_COPS_COLOR 0x0042dc //Blue
  84. //Fin de la liste des constantes
  85.  
  86.  
  87. //Variables globales
  88. //Fin de la liste des variables globales
  89.  
  90. //Tableaux globales
  91. //Fin de la liste des tableaux globales
  92.  
  93.  
  94.  
  95.  
  96. //Debut du script (Callbacks & Fonctions)
  97.  
  98.  
  99.  
  100.  
  101. main()
  102. {
  103.     print("\n----------------------------------");
  104.     print("Team Death Match Basique");
  105.     print("----------------------------------\n");
  106. }
  107.  
  108.  
  109. public OnGameModeInit()
  110. {
  111.  
  112.     SetGameModeText("Testing Script");
  113.     AddPlayerClass(285, 2288.2563,2465.1045,10.8203,102.7608, 31, 250, 23, 1000, 28, 500);
  114.     AddPlayerClass(73 ,1605.4473, 1178.2816, 14.2204, 13.3720, 30, 250, 23, 1000, 32, 500);
  115.  
  116.  
  117.  
  118.  
  119.  
  120.     //Cops vehicles
  121.     AddStaticVehicle(598,2277.7202,2478.3662,10.8203,183.91503, 0, 1); //Patrouilleuse
  122.     AddStaticVehicle(598,2273.8252,2478.6213,10.8203,176.1986, 0, 1); //Patrouilleuse
  123.     AddStaticVehicle(598,2268.9844,2478.6133,10.8203,177.1387, 0, 1); //Patrouilleuse
  124.     AddStaticVehicle(599,2259.8948,2459.2444,10.8203,1.6704, 0, 1); // Rancher
  125.     AddStaticVehicle(599,2256.4390,2461.1797,10.8203,177.4520, 0, 1); //Rancher
  126.     AddStaticVehicle(599,2251.8328,2461.1943,10.8203,204.7123, 0, 1); //Rancher
  127.     AddStaticVehicle(427 , 2260.4639,2445.9924,10.8203,355.7169, 0, 1); //Enforcer
  128.     AddStaticVehicle(427 , 2277.7449,2443.4890,10.8203,1.0436, 0, 1); //Enforcer
  129.  
  130.  
  131.     //Terrorists Vehicles
  132.  
  133.     AddStaticVehicle(577, 1572.3068,1188.3766,11.1875,359.8749, 57, 57);// AT400 (Avion)
  134.     AddStaticVehicle(405, 1631.3560,1321.8704,11.1921,359.4152, 57, 57);// sentinel
  135.     AddStaticVehicle(470, 1306.2106,1278.8822,11.2249,2.8879, 57, 57); // Patriot (Humvee)
  136.     AddStaticVehicle(470, 1321.5038,1279.4181,11.1953,357.7491, 57, 57); // Patriot (Humvee)
  137.     AddStaticVehicle(400, 1633.3799,1267.7129,11.1875,91.6029, 57, 57); // Burito
  138.     AddStaticVehicle(482, 1631.0444,1245.0631,11.1875,92.9941, 57, 57); // Burito
  139.     AddStaticVehicle(482, 1630.5090,1299.4934,11.1876,94.6110, 57, 57); // Burito
  140.     AddStaticVehicle(482, 1518.8230,1221.3069,11.1875,359.7036, 57, 57); // Burito
  141.  
  142.     return 1;
  143. }
  144.  
  145. public OnGameModeExit()
  146. {
  147.     return 1;
  148. }
  149.  
  150. public OnPlayerRequestClass(playerid, classid)
  151. {
  152.     /*
  153.     Flemme de prendre les positions :-'
  154.     */
  155.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  156.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  157.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  158.     SetPlayerTeamFromClass(playerid, classid);
  159.     return 1;
  160. }
  161.  
  162. public OnPlayerConnect(playerid)
  163. {
  164.  
  165.     PlayAudioStreamForPlayer(playerid, "http://jujuv.rd-h.fr/upload/songs/game1.ogg", 0, 0, 0, 0, 0 );
  166.  
  167.     new pName[MAX_PLAYER_NAME], joinMessage[30 + MAX_PLAYER_NAME];
  168.     GetPlayerName(playerid, pName, sizeof(pName));
  169.     format(joinMessage, sizeof(joinMessage), "%s a rejoint le serveur !", pName);
  170.     SendClientMessageToAll(0xcc0000, joinMessage);
  171.     return 1;
  172. }
  173.  
  174. public OnPlayerDisconnect(playerid, reason)
  175. {
  176.     new pName[MAX_PLAYER_NAME], leaveMsg[39 + MAX_PLAYER_NAME];
  177.     GetPlayerName(playerid, pName, sizeof(pName));
  178.     switch(reason)
  179.     {
  180.         case 0: format(leaveMsg, sizeof(leaveMsg), "%s a bogue/crashe", pName);
  181.         case 1: format(leaveMsg, sizeof(leaveMsg), "%s a quitte(e) le serveur", pName);
  182.         case 2: format(leaveMsg, sizeof(leaveMsg), "%s a ete expluse(e) du serveur", pName);
  183.     }
  184.  
  185.     SendClientMessageToAll(0xAAAAAAAA, leaveMsg);
  186.     return 1;
  187. }
  188.  
  189. public OnPlayerSpawn(playerid)
  190. {
  191.  
  192.     SetPlayerToTeamColor(playerid);
  193.  
  194.     SetPlayerHealth(playerid, 10000.0);
  195.     SendClientMessage(playerid, 0xFF0000AA, "[INFO]: Vous etes protege par l'Anti-SpawnKill pour 10 secondes");
  196.     SetPlayerChatBubble(playerid, "[INFO]: Joueur protege contre le SpawnKill", 0xFF0000AA, 100.0, 10000);
  197.     SetTimerEx("AntiSpawnkill",10000,0,"i",playerid);
  198.     return 1;
  199. }
  200.  
  201.  
  202. public AntiSpawnkill(playerid)
  203. {
  204.     SetPlayerHealth(playerid, 100.0);
  205.     SendClientMessage(playerid, 0xFF0000AA, "[INFO]: Session Anti-SpawnKill termine.Vous etes dorenavent vulnerable.");
  206.     return 1;
  207. }
  208.  
  209. public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
  210. {
  211.  
  212.  
  213.  
  214.     new pName[MAX_PLAYER_NAME];
  215.     GetPlayerName(issuerid, pName, sizeof(pName));
  216.     HeadShot(playerid, issuerid);
  217.     AntiTeamKill(playerid, issuerid);
  218.     AntiNoFP(playerid, issuerid, weaponid);
  219.  
  220.  
  221.     if(weaponid == 35 || weaponid == 36 || weaponid == 37 || weaponid == 38 || weaponid == 39 || weaponid == 40 || weaponid == 47 || weaponid == 27 || weaponid == 18 || weaponid == 16)
  222.     {
  223.  
  224.         BanEx(issuerid, "Cheat/Hack Arme");
  225.  
  226.         new Float:pHealth;
  227.         GetPlayerHealth(playerid, pHealth);
  228.  
  229.         new Float:pArmor;
  230.         GetPlayerArmour(playerid, pArmor);
  231.  
  232.  
  233.         if(pHealth == 100 && pArmor < 100 && pArmor + amount < 100.1)
  234.         {
  235.         SetPlayerArmour(playerid, pArmor + amount);
  236.         }
  237.         else if(pHealth < 100 && pArmor <= 0)
  238.         {
  239.             if(pHealth + amount <= 100)
  240.             {
  241.                 SetPlayerHealth(playerid, pHealth + amount);
  242.             }
  243.             else if(pHealth + amount > 100)
  244.             {
  245.                 new Float:pLostHealth = 100 - pHealth;
  246.                 SetPlayerHealth(playerid, 100.0);
  247.                 SetPlayerArmour(playerid, amount - pLostHealth);
  248.             }
  249.         }
  250.  
  251.         else
  252.         {
  253.             printf("%s a pris des degats par un cheater mais a 100% de vie est de blindage", pName);
  254.             SendClientMessage(playerid, 0xFF0000AA, "Une erreur innatendue est survenue.Vos point de vies ou d'armure n'ont pu vous être restituer");
  255.  
  256.         }
  257.     }
  258.  
  259. }
  260.  
  261.  
  262. public GivePlayerScore(playerid, earnedScore)
  263. {
  264.     new oldScore = GetPlayerScore(playerid);
  265.     SetPlayerScore(playerid, oldScore + earnedScore);
  266.  
  267.     return 1;
  268. }
  269.  
  270.  
  271. public GetOutPlayerScore(playerid, lostScore)
  272. {
  273.     new oldScore = GetPlayerScore(playerid);
  274.     SetPlayerScore(playerid, oldScore - lostScore);
  275.  
  276.     return 1;
  277. }
  278.  
  279.  
  280. public OnPlayerDeath(playerid, killerid, reason)
  281. {
  282.  
  283.     if(killerid != INVALID_PLAYER_ID)
  284.     {
  285.     GetOutPlayerScore(playerid, 1);
  286.     GivePlayerScore(killerid, 3);
  287.     }
  288.     PlayAudioStreamForPlayer(playerid, "http://jujuv.rd-h.fr/upload/songs/game2.ogg", 0, 0, 0, 0, 0 );
  289.  
  290.     if(reason == 35 || reason == 36 || reason == 37 || reason == 38 || reason == 39 || reason == 40 || reason == 47 || reason == 27 || reason == 18 || reason == 16)
  291.     {
  292.         BanEx(killerid, "Cheat/Hack Arme");
  293.     }
  294.  
  295.  
  296.     return 1;
  297. }
  298.  
  299. public OnPlayerCommandText(playerid, cmdtext[])
  300. {
  301.     if (strcmp("/kill", cmdtext, true, 10) == 0)
  302.     {
  303.         SetPlayerHealth(playerid, 0.0);
  304.         return 1;
  305.     }
  306.     return 0;
  307. }
  308.  
  309. SetPlayerTeamFromClass(playerid, classid)
  310. {
  311.     if (classid == 0)
  312.     {
  313.         SetPlayerTeam(playerid, TEAM_TERRO);
  314.     }
  315.     else
  316.     {
  317.         SetPlayerTeam(playerid, TEAM_COPS);
  318.     }
  319. }
  320.  
  321.  
  322. SetPlayerToTeamColor(playerid)
  323. {
  324.     if (GetPlayerTeam(playerid) == TEAM_TERRO)
  325.     {
  326.         SetPlayerColor(playerid, TEAM_TERRO_COLOR);
  327.         GameTextForPlayer(playerid, "~l~Terroristes !", 4000, 0);
  328.     }
  329.     else if (GetPlayerTeam(playerid) == TEAM_COPS)
  330.     {
  331.         SetPlayerColor(playerid, TEAM_COPS_COLOR);
  332.         GameTextForPlayer(playerid, "~b~Policiers !", 4000, 0);
  333.     }
  334. }
  335.  
  336.  
  337.  
  338. HeadShot(playerid, issuerid)
  339. {
  340.     new pAnim = GetPlayerAnimationIndex(playerid);
  341.     if(pAnim == 1173 || pAnim == 1175 || pAnim == 1177 || pAnim == 1178)
  342.     {
  343.         GameTextForPlayer(playerid, "~r~HeadShoted !", 4000, 0);
  344.         SetPlayerHealth(playerid, 0.0);
  345.         GameTextForPlayer(issuerid, "~g~HeadShot !", 2000, 0);
  346.         GivePlayerScore(issuerid, 5);
  347.         GetOutPlayerScore(playerid, 3);
  348.  
  349.     }
  350. }
  351.  
  352. AntiTeamKill(playerid, issuerid)
  353. {
  354.     if(GetPlayerTeam(issuerid) == GetPlayerTeam(playerid))
  355.     {
  356.         SendClientMessageToAll(0xcc0000, "Admin-Bot : le tire-ami est strictement interdis !");
  357.         SetPlayerHealth(issuerid, 0.0);
  358.         GetOutPlayerScore(issuerid, 5);
  359.     }
  360. }
  361.  
  362.  
  363.  
  364. AntiNoFP(playerid, issuerid, weaponid)
  365. {
  366.     /*
  367.     Weapon id 50 : Helli-Kill
  368.     Weapon id 49 : Car-kill
  369.     (ou inverssement ...)
  370.     */
  371.  
  372.     new pName[MAX_PLAYER_NAME];
  373.     GetPlayerName(issuerid, pName, sizeof(pName));
  374.  
  375.     if(weaponid == 50 || weaponid == 49)
  376.     {
  377.     new badKillMsg[100];
  378.  
  379.     format(badKillMsg, sizeof(badKillMsg), "%s a ete expulse du serveur : l'HelliKill et le car-kill sont strictement interdit !", pName);
  380.     SetPlayerScore(issuerid, GetPlayerScore(issuerid) / 2);
  381.     SendClientMessageToAll(0xcc0000, badKillMsg);
  382.     Kick(issuerid);
  383.     SetPlayerHealth(playerid, 100.0);
  384.     GivePlayerScore(playerid, 3);
  385.     }
  386. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement