Headache

[FS] Sistema de daños / fuerza

Mar 30th, 2014
770
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 17.83 KB | None | 0 0
  1. #include <a_samp>
  2. #include <fader>
  3. #include <foreach>
  4. #include <sscanf2>
  5. #include <zcmd>
  6.  
  7. new Fuerza[MAX_PLAYERS];
  8.  
  9. public OnFilterScriptInit()
  10. {
  11.     EnableVehicleFriendlyFire();
  12.     foreach(new i: Player)
  13.     {
  14.         SetPlayerTeam(i, 1);
  15.     }
  16.     return 1;
  17. }
  18.  
  19. public OnFilterScriptExit()
  20. {
  21.     foreach(new i: Player)
  22.     {
  23.         SetPlayerTeam(i, -1);
  24.     }
  25.     Seifader_OnExit();
  26.     return 1;
  27. }
  28.  
  29. public OnPlayerConnect(playerid)
  30. {
  31.     SetPlayerTeam(playerid, 1);
  32.     Fuerza[playerid] = 1;
  33.     return 1;
  34. }
  35.  
  36. stock Float:ObtenerDistancia(playerid, playerid2, UNIDAD)
  37. {
  38.     #define METROS (0)
  39.     #define KILOMETROS (1)
  40.     #define MILLAS (2)
  41.     #define CENTIMETROS (3)
  42.     #define PULGADAS (4)
  43.     //
  44.     new Float:Pos[3], Float:Pos2[3], Float:Conversor;
  45.     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  46.     GetPlayerPos(playerid2, Pos2[0], Pos2[1], Pos2[2]);
  47.     Pos[0] -= Pos2[0];
  48.     Pos[1] -= Pos2[1];
  49.     Pos[2] -= Pos2[2];
  50.     //
  51.     switch(UNIDAD)
  52.     {
  53.         case METROS: Conversor = 1.0;
  54.         case KILOMETROS: Conversor = 1.0/1000.0;
  55.         case MILLAS: Conversor = (1.0/1000.0)/1.6;
  56.         case CENTIMETROS: Conversor = 100.0;
  57.         case PULGADAS: Conversor = 39.3701;
  58.     }
  59.     return floatsqroot((Pos[0]*Pos[0]) + (Pos[1]*Pos[1]) + (Pos[2]*Pos[2]))*Conversor;
  60. }
  61.  
  62. public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
  63. {
  64.     new Float:danio, Float:vida, Float:chaleco, string[256];
  65.     new fuerza = Fuerza[issuerid];
  66.     new Float:distancia = ObtenerDistancia(playerid, issuerid, METROS);
  67.     if(issuerid != INVALID_PLAYER_ID)
  68.     {
  69.         if(amount == 2.64)
  70.         {
  71.             if(GetPlayerWeapon(issuerid) > 21 && GetPlayerWeapon(issuerid) < 34)
  72.             {
  73.                 switch(fuerza)
  74.                 {
  75.                     case 0..10: danio = 11.5;
  76.                     case 11..20: danio = 12.0;
  77.                     case 21..30: danio = 12.5;
  78.                     case 31..40: danio = 13.0;
  79.                     case 41..50: danio = 13.5;
  80.                     case 51..60: danio = 14.0;
  81.                     case 61..70: danio = 14.5;
  82.                     case 71..80: danio = 15.0;
  83.                     case 81..90: danio = 15.5;
  84.                     case 91..100: danio = 16.0;
  85.                 }
  86.             }
  87.         }
  88.         else
  89.         {
  90.             if(weaponid >= 0 && weaponid < 16)
  91.             {
  92.                 switch(weaponid)
  93.                 {
  94.                     case 0:
  95.                     {
  96.                         switch(bodypart)
  97.                         {
  98.                             case 3:
  99.                             {
  100.                                 switch(fuerza)
  101.                                 {
  102.                                     case 0..10: danio = 3.0;
  103.                                     case 11..20: danio = 3.5;
  104.                                     case 21..30: danio = 4.0;
  105.                                     case 31..40: danio = 4.5;
  106.                                     case 41..50: danio = 5.0;
  107.                                     case 51..60: danio = 5.5;
  108.                                     case 61..70: danio = 6.0;
  109.                                     case 71..80: danio = 6.5;
  110.                                     case 81..90: danio = 7.0;
  111.                                     case 91..100: danio = 7.5;
  112.                                 }
  113.                             }
  114.                             case 4:
  115.                             {
  116.                                 switch(fuerza)
  117.                                 {
  118.                                     case 0..10: danio = 4.5;
  119.                                     case 11..20: danio = 5.0;
  120.                                     case 21..30: danio = 5.5;
  121.                                     case 31..40: danio = 6.0;
  122.                                     case 41..50: danio = 6.5;
  123.                                     case 51..60: danio = 7.0;
  124.                                     case 61..70: danio = 7.5;
  125.                                     case 71..80: danio = 8.0;
  126.                                     case 81..90: danio = 8.5;
  127.                                     case 91..100: danio = 9.0;
  128.                                 }
  129.                             }
  130.                             case 5..8:
  131.                             {
  132.                                 switch(fuerza)
  133.                                 {
  134.                                     case 0..10: danio = 2.0;
  135.                                     case 11..20: danio = 2.5;
  136.                                     case 21..30: danio = 3.0;
  137.                                     case 31..40: danio = 3.5;
  138.                                     case 41..50: danio = 4.0;
  139.                                     case 51..60: danio = 4.5;
  140.                                     case 61..70: danio = 5.0;
  141.                                     case 71..80: danio = 5.5;
  142.                                     case 81..90: danio = 6.0;
  143.                                     case 91..100: danio = 6.5;
  144.                                 }
  145.                             }
  146.                             case 9:
  147.                             {
  148.                                 switch(fuerza)
  149.                                 {
  150.                                     case 0..10: danio = 4.0;
  151.                                     case 11..20: danio = 4.5;
  152.                                     case 21..30: danio = 5.0;
  153.                                     case 31..40: danio = 5.5;
  154.                                     case 41..50: danio = 6.0;
  155.                                     case 51..60: danio = 6.5;
  156.                                     case 61..70: danio = 7.0;
  157.                                     case 71..80: danio = 7.5;
  158.                                     case 81..90: danio = 8.0;
  159.                                     case 91..100: danio = 8.5;
  160.                                 }
  161.                             }
  162.                         }
  163.                     }
  164.                     case 1:
  165.                     {
  166.                         switch(bodypart)
  167.                         {
  168.                             case 3:
  169.                             {
  170.                                 switch(fuerza)
  171.                                 {
  172.                                     case 0..10: danio = 4.0;
  173.                                     case 11..20: danio = 4.5;
  174.                                     case 21..30: danio = 5.0;
  175.                                     case 31..40: danio = 5.5;
  176.                                     case 41..50: danio = 6.0;
  177.                                     case 51..60: danio = 6.5;
  178.                                     case 61..70: danio = 7.0;
  179.                                     case 71..80: danio = 7.5;
  180.                                     case 81..90: danio = 8.0;
  181.                                     case 91..100: danio = 8.5;
  182.                                 }
  183.                             }
  184.                             case 4:
  185.                             {
  186.                                 switch(fuerza)
  187.                                 {
  188.                                     case 0..10: danio = 5.5;
  189.                                     case 11..20: danio = 6.0;
  190.                                     case 21..30: danio = 6.5;
  191.                                     case 31..40: danio = 7.0;
  192.                                     case 41..50: danio = 7.5;
  193.                                     case 51..60: danio = 8.0;
  194.                                     case 61..70: danio = 8.5;
  195.                                     case 71..80: danio = 9.0;
  196.                                     case 81..90: danio = 9.5;
  197.                                     case 91..100: danio = 10.0;
  198.                                 }
  199.                             }
  200.                             case 5..8:
  201.                             {
  202.                                 switch(fuerza)
  203.                                 {
  204.                                     case 0..10: danio = 3.0;
  205.                                     case 11..20: danio = 3.5;
  206.                                     case 21..30: danio = 4.0;
  207.                                     case 31..40: danio = 4.5;
  208.                                     case 41..50: danio = 5.0;
  209.                                     case 51..60: danio = 5.5;
  210.                                     case 61..70: danio = 6.0;
  211.                                     case 71..80: danio = 6.5;
  212.                                     case 81..90: danio = 7.0;
  213.                                     case 91..100: danio = 7.5;
  214.                                 }
  215.                             }
  216.                             case 9:
  217.                             {
  218.                                 switch(fuerza)
  219.                                 {
  220.                                     case 0..10: danio = 5.0;
  221.                                     case 11..20: danio = 5.5;
  222.                                     case 21..30: danio = 6.0;
  223.                                     case 31..40: danio = 6.5;
  224.                                     case 41..50: danio = 7.0;
  225.                                     case 51..60: danio = 7.5;
  226.                                     case 61..70: danio = 8.0;
  227.                                     case 71..80: danio = 8.5;
  228.                                     case 81..90: danio = 9.0;
  229.                                     case 91..100: danio = 9.5;
  230.                                 }
  231.                             }
  232.                         }
  233.                     }
  234.                     case 2,3,5,6,7,15:
  235.                     {
  236.                         switch(bodypart)
  237.                         {
  238.                             case 3:
  239.                             {
  240.                                 switch(fuerza)
  241.                                 {
  242.                                     case 0..10: danio = 6.0;
  243.                                     case 11..20: danio = 6.5;
  244.                                     case 21..30: danio = 7.0;
  245.                                     case 31..40: danio = 7.5;
  246.                                     case 41..50: danio = 8.0;
  247.                                     case 51..60: danio = 8.5;
  248.                                     case 61..70: danio = 9.0;
  249.                                     case 71..80: danio = 9.5;
  250.                                     case 81..90: danio = 10.0;
  251.                                     case 91..100: danio = 10.5;
  252.                                 }
  253.                             }
  254.                             case 4:
  255.                             {
  256.                                 switch(fuerza)
  257.                                 {
  258.                                     case 0..10: danio = 10.5;
  259.                                     case 11..20: danio = 11.0;
  260.                                     case 21..30: danio = 11.5;
  261.                                     case 31..40: danio = 12.0;
  262.                                     case 41..50: danio = 12.5;
  263.                                     case 51..60: danio = 13.0;
  264.                                     case 61..70: danio = 13.5;
  265.                                     case 71..80: danio = 14.0;
  266.                                     case 81..90: danio = 14.5;
  267.                                     case 91..100: danio = 15.0;
  268.                                 }
  269.                             }
  270.                             case 5..8:
  271.                             {
  272.                                 switch(fuerza)
  273.                                 {
  274.                                     case 0..10: danio = 5.0;
  275.                                     case 11..20: danio = 5.5;
  276.                                     case 21..30: danio = 6.0;
  277.                                     case 31..40: danio = 6.5;
  278.                                     case 41..50: danio = 7.0;
  279.                                     case 51..60: danio = 7.5;
  280.                                     case 61..70: danio = 8.0;
  281.                                     case 71..80: danio = 8.5;
  282.                                     case 81..90: danio = 9.0;
  283.                                     case 91..100: danio = 9.5;
  284.                                 }
  285.                             }
  286.                             case 9:
  287.                             {
  288.                                 switch(fuerza)
  289.                                 {
  290.                                     case 0..10: danio = 10.0;
  291.                                     case 11..20: danio = 10.5;
  292.                                     case 21..30: danio = 11.0;
  293.                                     case 31..40: danio = 11.5;
  294.                                     case 41..50: danio = 12.0;
  295.                                     case 51..60: danio = 12.5;
  296.                                     case 61..70: danio = 13.0;
  297.                                     case 71..80: danio = 13.5;
  298.                                     case 81..90: danio = 14.0;
  299.                                     case 91..100: danio = 14.5;
  300.                                 }
  301.                             }
  302.                         }
  303.                     }
  304.                     case 4:
  305.                     {
  306.                         switch(bodypart)
  307.                         {
  308.                             case 3:
  309.                             {
  310.                                 switch(fuerza)
  311.                                 {
  312.                                     case 0..10: danio = 10.0;
  313.                                     case 11..20: danio = 10.5;
  314.                                     case 21..30: danio = 11.0;
  315.                                     case 31..40: danio = 11.5;
  316.                                     case 41..50: danio = 12.0;
  317.                                     case 51..60: danio = 12.5;
  318.                                     case 61..70: danio = 13.0;
  319.                                     case 71..80: danio = 13.5;
  320.                                     case 81..90: danio = 14.0;
  321.                                     case 91..100: danio = 14.5;
  322.                                 }
  323.                             }
  324.                             case 4:
  325.                             {
  326.                                 switch(fuerza)
  327.                                 {
  328.                                     case 0..10: danio = 12.5;
  329.                                     case 11..20: danio = 13.0;
  330.                                     case 21..30: danio = 13.5;
  331.                                     case 31..40: danio = 14.0;
  332.                                     case 41..50: danio = 14.5;
  333.                                     case 51..60: danio = 15.0;
  334.                                     case 61..70: danio = 15.5;
  335.                                     case 71..80: danio = 16.0;
  336.                                     case 81..90: danio = 16.5;
  337.                                     case 91..100: danio = 17.0;
  338.                                 }
  339.                             }
  340.                             case 5..8:
  341.                             {
  342.                                 switch(fuerza)
  343.                                 {
  344.                                     case 0..10: danio = 6.0;
  345.                                     case 11..20: danio = 6.5;
  346.                                     case 21..30: danio = 7.0;
  347.                                     case 31..40: danio = 7.5;
  348.                                     case 41..50: danio = 8.0;
  349.                                     case 51..60: danio = 8.5;
  350.                                     case 61..70: danio = 9.0;
  351.                                     case 71..80: danio = 9.5;
  352.                                     case 81..90: danio = 10.0;
  353.                                     case 91..100: danio = 10.5;
  354.                                 }
  355.                             }
  356.                             case 9:
  357.                             {
  358.                                 switch(fuerza)
  359.                                 {
  360.                                     case 0..10: danio = 12.0;
  361.                                     case 11..20: danio = 12.5;
  362.                                     case 21..30: danio = 13.0;
  363.                                     case 31..40: danio = 13.5;
  364.                                     case 41..50: danio = 14.0;
  365.                                     case 51..60: danio = 14.5;
  366.                                     case 61..70: danio = 15.0;
  367.                                     case 71..80: danio = 15.5;
  368.                                     case 81..90: danio = 16.0;
  369.                                     case 91..100: danio = 16.5;
  370.                                 }
  371.                             }
  372.                         }
  373.                     }
  374.                     case 8:
  375.                     {
  376.                         switch(bodypart)
  377.                         {
  378.                             case 3,4:
  379.                             {
  380.                                 switch(fuerza)
  381.                                 {
  382.                                     case 0..10: danio = 15.0;
  383.                                     case 11..20: danio = 15.5;
  384.                                     case 21..30: danio = 16.0;
  385.                                     case 31..40: danio = 16.5;
  386.                                     case 41..50: danio = 17.0;
  387.                                     case 51..60: danio = 17.5;
  388.                                     case 61..70: danio = 18.0;
  389.                                     case 71..80: danio = 18.5;
  390.                                     case 81..90: danio = 19.0;
  391.                                     case 91..100: danio = 19.5;
  392.                                 }
  393.                             }
  394.                             case 5..8:
  395.                             {
  396.                                 switch(fuerza)
  397.                                 {
  398.                                     case 0..10: danio = 12.0;
  399.                                     case 11..20: danio = 12.5;
  400.                                     case 21..30: danio = 13.0;
  401.                                     case 31..40: danio = 13.5;
  402.                                     case 41..50: danio = 14.0;
  403.                                     case 51..60: danio = 14.5;
  404.                                     case 61..70: danio = 15.0;
  405.                                     case 71..80: danio = 15.5;
  406.                                     case 81..90: danio = 16.0;
  407.                                     case 91..100: danio = 16.5;
  408.                                 }
  409.                             }
  410.                             case 9: danio = 200;
  411.                         }
  412.                     }
  413.                     default: danio = amount;
  414.                 }
  415.                 format(string, sizeof(string), "Daño que has recibido por el golpe/corte: %f | Fuerza del agresor: %d", danio, fuerza);
  416.                 SendClientMessage(-1, playerid, string);
  417.                 format(string, sizeof(string), "Daño que has efectuado con el golpe/corte: %f", danio);
  418.                 SendClientMessage(-1, issuerid, string);
  419.             }
  420.             if(weaponid > 21 && weaponid < 52)
  421.             {
  422.                 switch(weaponid)
  423.                 {
  424.                     case 22,23:
  425.                     {
  426.                         switch(bodypart)
  427.                         {
  428.                             case 3,4: danio = 45.0;
  429.                             case 5..8: danio = 20.0;
  430.                             case 9: danio = 200.0;
  431.                         }
  432.                     }
  433.                     case 24:
  434.                     {
  435.                         switch(bodypart)
  436.                         {
  437.                             case 3,4: danio = 70.0;
  438.                             case 5..8: danio = 35.0;
  439.                             case 9: danio = 200.0;
  440.                         }
  441.                     }
  442.                     case 25..27:
  443.                     {
  444.                         switch(bodypart)
  445.                         {
  446.                             case 3,4: danio = 90.0;
  447.                             case 5..8: danio = 50.0;
  448.                             case 9: danio = 200.0;
  449.                         }
  450.                     }
  451.                     case 28,32:
  452.                     {
  453.                         switch(bodypart)
  454.                         {
  455.                             case 3,4: danio = 45.0;
  456.                             case 5..8: danio = 20.0;
  457.                             case 9: danio = 200.0;
  458.                         }
  459.                     }
  460.                     case 29:
  461.                     {
  462.                         switch(bodypart)
  463.                         {
  464.                             case 3,4: danio = 55.0;
  465.                             case 5..8: danio = 30.0;
  466.                             case 9: danio = 200.0;
  467.                         }
  468.                     }
  469.                     case 30:
  470.                     {
  471.                         switch(bodypart)
  472.                         {
  473.                             case 3,4: danio = 65.0;
  474.                             case 5..8: danio = 40.0;
  475.                             case 9: danio = 200.0;
  476.                         }
  477.                     }
  478.                     case 31:
  479.                     {
  480.                         switch(bodypart)
  481.                         {
  482.                             case 3,4: danio = 60.0;
  483.                             case 5..8: danio = 35.0;
  484.                             case 9: danio = 200.0;
  485.                         }
  486.                     }
  487.                     case 33:
  488.                     {
  489.                         switch(bodypart)
  490.                         {
  491.                             case 3,4: danio = 80.0;
  492.                             case 5..8: danio = 40.0;
  493.                             case 9: danio = 200.0;
  494.                         }
  495.                     }
  496.                     case 34:
  497.                     {
  498.                         switch(bodypart)
  499.                         {
  500.                             case 3,4: danio = 100.0;
  501.                             case 5..8: danio = 60.0;
  502.                             case 9: danio = 200.0;
  503.                         }
  504.                     }
  505.                     default: danio = amount;
  506.                 }
  507.                 format(string, sizeof(string), "Daño que has recibido por disparo: %f", danio);
  508.                 SendClientMessage(-1, playerid, string);
  509.                 format(string, sizeof(string), "Daño que has efectuado con el disparo: %f", danio);
  510.                 SendClientMessage(-1, issuerid, string);
  511.                 switch(distancia)
  512.                 {
  513.                     case 1..4: danio += 10.0;
  514.                     case 5..8: danio += 8.0;
  515.                     case 9..12: danio += 6.0;
  516.                     case 13..16: danio += 4.0;
  517.                     case 17..20: danio += 2.0;
  518.                 }
  519.                 new Float:Pos[3];
  520.                 GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  521.                 CreatePlayerObject(playerid, 18668, Pos[0], Pos[1], Pos[2]-0.4, 0.0, 0.0, 96.0);
  522.                 FadePlayerScreen(playerid, 0xE20000FF, 25);
  523.             }
  524.         }
  525.         GetPlayerHealth(playerid, vida);
  526.         GetPlayerArmour(playerid, chaleco);
  527.         if(chaleco)
  528.         {
  529.             if(chaleco > danio) SetPlayerArmour(playerid, chaleco-danio);
  530.             else
  531.             {
  532.                 SetPlayerArmour(playerid, 0.0);
  533.                 chaleco = danio-chaleco;
  534.                 if(chaleco >= vida) SetPlayerHealth(playerid, 0.0);
  535.                 else SetPlayerHealth(playerid, vida-chaleco);
  536.             }
  537.         }
  538.         else
  539.         {
  540.             if(vida > danio) SetPlayerHealth(playerid, vida-danio);
  541.             else SetPlayerHealth(playerid, 0.0);
  542.         }
  543.     }
  544.     return 1;
  545. }
  546.  
  547. stock Nombre(playerid)
  548. {
  549.     new nombre[32];
  550.     GetPlayerName(playerid, nombre, 32);
  551.     return nombre;
  552. }
  553.  
  554. COMMAND:darfuerza(playerid, params[])
  555. {
  556.     if(!sscanf(params, "ui", params[0], params[1]))
  557.     {
  558.         if(params[0] != INVALID_PLAYER_ID)
  559.         {
  560.             if(params[1] < 0 || params[1] > 100) return SendClientMessage(playerid, -1, "[ERROR] Sólo puedes dar entre 1 y 100 de fuerza.");
  561.             Fuerza[params[0]] = params[1];
  562.             new string[128];
  563.             format(string, sizeof(string), "%s te ha dado %d de fuerza.", Nombre(playerid), params[1]);
  564.             SendClientMessage(params[0], -1, string);
  565.         }
  566.         else SendClientMessage(playerid, -1, "[ERROR] El jugador seleccionado no se encuentra conectado.");
  567.     }
  568.     else SendClientMessage(playerid, -1, "[USO] '/darfuerza' [ID Jugador] [Fuerza 1-100]");
  569.     return 1;
  570. }
  571.  
  572. COMMAND:fuerza(playerid, params[])
  573. {
  574.     new string[128];
  575.     format(string, sizeof(string), "Tienes %d de fuerza.", Fuerza[playerid]);
  576.     SendClientMessage(playerid, -1, string);
  577.     return 1;
  578. }
Advertisement
Add Comment
Please, Sign In to add comment