Guest User

Untitled

a guest
Sep 6th, 2018
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.78 KB | None | 0 0
  1.  
  2. #include <a_samp>
  3. #include <zcmd>
  4. #include <sscanf2>
  5.  
  6. #define DIALOG_DAMAGE 1927
  7. #define MAX_DAMAGES 1000
  8. #define SCM SendClientMessage
  9. #define FORMAT:%0(%1) format(%0, sizeof(%0), %1)
  10. #define BODY_PART_TORSO 3
  11. #define BODY_PART_GROIN 4
  12. #define BODY_PART_RIGHT_ARM 5
  13. #define BODY_PART_LEFT_ARM 6
  14. #define BODY_PART_RIGHT_LEG 7
  15. #define BODY_PART_LEFT_LEG 8
  16. #define BODY_PART_HEAD 9
  17.  
  18. enum dmgInfo
  19. {
  20. dmgDamage,
  21. dmgWeapon,
  22. dmgBodypart,
  23. dmgKevlarhit,
  24. dmgSeconds,
  25. }
  26. new DamageInfo[MAX_PLAYERS][MAX_DAMAGES][dmgInfo];
  27.  
  28. stock ResetPlayerDamages(playerid)
  29. {
  30. for(new id = 0; id < MAX_DAMAGES; id++)
  31. {
  32. if(DamageInfo[playerid][id][dmgDamage] != 0)
  33. {
  34. DamageInfo[playerid][id][dmgDamage] = 0;
  35. DamageInfo[playerid][id][dmgWeapon] = 0;
  36. DamageInfo[playerid][id][dmgBodypart] = 0;
  37. DamageInfo[playerid][id][dmgKevlarhit] = 0;
  38. DamageInfo[playerid][id][dmgSeconds] = 0;
  39. }
  40. }
  41. return 1;
  42. }
  43.  
  44. public OnPlayerConnect(playerid)
  45. {
  46. ResetPlayerDamages(playerid);
  47. return 1;
  48. }
  49.  
  50. stock ShowPlayerDamages(playerid, toid)
  51. {
  52. new
  53. string[4096], string1[500], count = 0, name[MAX_PLAYER_NAME];
  54. GetPlayerName(playerid, name, sizeof(name));
  55. for(new id = 0; id < MAX_DAMAGES; id++)
  56. {
  57. if(DamageInfo[playerid][id][dmgDamage] != 0) count++;
  58. }
  59. if(count == 0) return ShowPlayerDialog(toid, DIALOG_DAMAGE, DIALOG_STYLE_LIST, name, "Não existem danos para serem mostrados...", "Fechar", "");
  60. else if(count > 0)
  61. {
  62. for(new id = 1; id < MAX_DAMAGES; id++)
  63. {
  64. if(DamageInfo[playerid][id][dmgDamage] != 0)
  65. {
  66. FORMAT:string1("%d dano de %s em %s (Kevlarhit: %d) %d s atrás\n", DamageInfo[playerid][id][dmgDamage], GetWeaponNameEx(DamageInfo[playerid][id][dmgWeapon]), GetBodypartName(DamageInfo[playerid][id][dmgBodypart]), DamageInfo[playerid][id][dmgKevlarhit], gettime() - DamageInfo[playerid][id][dmgSeconds]);
  67. strcat(string, string1);
  68. }
  69. }
  70. ShowPlayerDialog(toid, DIALOG_DAMAGE, DIALOG_STYLE_LIST, name, str, "Fechar", "");
  71. }
  72. return 1;
  73. }
  74.  
  75. stock GetName(playerid)
  76. {
  77. new name;
  78. GetPlayerName(playerid, name, sizeof(name));
  79. return name;
  80. }
  81.  
  82. CMD:infodano(playerid, params[])
  83. {
  84. new id;
  85. if(sscanf(params, "u", id)) return SCM(playerid, COLOR_GRAD1, "USO: /infodano [ID/NICK]");
  86. if(!IsPlayerConnected(id)) return SCM(playerid, COLOR_GRAD1, "Usuario inválido ou offline.");
  87. {
  88. ShowPlayerDamages(id, playerid);
  89. }
  90. return 1;
  91. }
  92.  
  93. public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
  94. {
  95. if(IsPlayerConnected(playerid))
  96. {
  97. new
  98. id, Float: pHP, Float: pArm;
  99. GetPlayerHealth(playerid, pHP);
  100. GetPlayerArmour(playerid, pArm);
  101. for(new i = 0; i < MAX_DAMAGES; i++)
  102. {
  103. if(!DamageInfo[playerid][i][dmgDamage])
  104. {
  105. id = i;
  106. break;
  107. }
  108. }
  109.  
  110. DamageInfo[playerid][id][dmgDamage] = floatround(amount, floatround_round);
  111. DamageInfo[playerid][id][dmgWeapon] = weaponid;
  112. DamageInfo[playerid][id][dmgBodypart] = bodypart;
  113. if(pArm > 0) DamageInfo[playerid][id][dmgKevlarhit] = 1;
  114. else if(pArm < 1) DamageInfo[playerid][id][dmgKevlarhit] = 0;
  115. DamageInfo[playerid][id][dmgSeconds] = gettime();
  116. }
  117. return 1;
  118. }
  119.  
  120. stock GetWeaponNameEx(weaponid)
  121. {
  122. new weaponname[60];
  123. GetWeaponName(weaponid, weaponname, sizeof(weaponname));
  124. return weaponname;
  125. }
  126.  
  127. stock GetBodypartName(bodypart)
  128. {
  129. new bodyname[60];
  130. switch(bodypart)
  131. {
  132. case BODY_PART_TORSO: FORMAT:bodyname("TRONCO");
  133. case BODY_PART_GROIN: FORMAT:bodyname("VIRILHA");
  134. case BODY_PART_RIGHT_ARM: FORMAT:bodyname("BRAÇO DIREITO");
  135. case BODY_PART_LEFT_ARM: FORMAT:bodyname("BRAÇO ESQUERDO");
  136. case BODY_PART_RIGHT_LEG: FORMAT:bodyname("PERNA DIREITA");
  137. case BODY_PART_LEFT_LEG: FORMAT:bodyname("PERNA ESQUERDA");
  138. case BODY_PART_HEAD: FORMAT:bodyname("CABEÇA");
  139. }
  140. return bodyname;
  141. }
Advertisement
Add Comment
Please, Sign In to add comment