Advertisement
Guest User

Untitled

a guest
Aug 21st, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.22 KB | None | 0 0
  1. /*################################################################################################
  2.  _______           _______           _______  _______          _________ _______  _______
  3. (  ____ \|\     /|(  ___  )|\     /|(  ____ \(  ___  )|\     /|\__   __/(  ____ )(  ____ \
  4. | (    \/| )   ( || (   ) || )   ( || (    \/| (   ) || )   ( |   ) (   | (    )|| (    \/
  5. | (_____ | (___) || |   | || | _ | || (__    | |   | || |   | |   | |   | (____)|| (_____
  6. (_____  )|  ___  || |   | || |( )| ||  __)   | |   | || |   | |   | |   |  _____)(_____  )
  7.       ) || (   ) || |   | || || || || (      | | /\| || |   | |   | |   | (            ) |
  8. /\____) || )   ( || (___) || () () || (____/\| (_\ \ || (___) |___) (___| )      /\____) |
  9. \_______)|/     \|(_______)(_______)(_______/(____\/_)(_______)\_______/|/       \_______)
  10.  
  11. This is my take on the https://forums.alliedmods.net/showthread.php?t=306558 plugin.
  12. The code is a bit suckish and uses a lot of entities but i'm too much n00b to do it a better way :P
  13. The sprites stay until freezetime is over and then the entities get removed so maybe it wont
  14. interfere with gameplay.  Also the display_info task is removed when freezetime is over
  15. so it should not consume much cpu after freeze. I hope so atleast...
  16.  
  17. If you want to disable displaying specific sprites:
  18. #define DISPLAY_MONEY   0
  19. #define DISPLAY_WEAPONS 0
  20. #define DISPLAY_DOLLARSIGN  0
  21. #define DISPLAY_ARROW   0
  22.  
  23. by DaniwA                   2018
  24. #################################################################################################*/
  25.  
  26. #include <amxmodx>
  27. #include <fakemeta>
  28. #include <engine>
  29. #include <cstrike>
  30.  
  31. #define DISPLAY_MONEY   1
  32. #define DISPLAY_WEAPONS 1
  33. #define DISPLAY_DOLLARSIGN  1
  34. #define DISPLAY_ARROW   1
  35.  
  36. #define PLUGIN  "SHOWEQUIPS"
  37. #define VERSION "1.4"
  38. #define AUTHOR  "DaniwA"
  39.  
  40. #if DISPLAY_MONEY
  41. #define NUMBER_OF_SPRITES   5
  42. new userSpr[33][NUMBER_OF_SPRITES];
  43. new tmpstr[6];
  44. new value[2];
  45. #endif
  46.  
  47. #if DISPLAY_WEAPONS
  48. #define NUMBER_OF_WEAPTYPES 7
  49. new const Float:Pistols[6] = {1.0,10.0,11.0,16.0,17.0,26.0};
  50. new const Float:Rifles[18] = {3.0,5.0,7.0,8.0,12.0,13.0,14.0,15.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,27.0,28.0,30.0};
  51. new userWeap[33][NUMBER_OF_WEAPTYPES];
  52. new armor;
  53. new weapons;
  54. #endif
  55.  
  56. #if DISPLAY_DOLLARSIGN
  57. new userDSign[33];
  58. #endif
  59.  
  60. #if DISPLAY_ARROW
  61. new userArrow[33];
  62. #endif
  63.  
  64. new bool:NewRound;
  65. new Float:userOrig[33][3];
  66. new iPlayers[32], count;
  67.  
  68. public plugin_precache(){
  69. #if DISPLAY_MONEY
  70.     precache_model("sprites/10000.spr");
  71.     precache_model("sprites/1000.spr");
  72.     precache_model("sprites/100.spr");
  73.     precache_model("sprites/10.spr");
  74.     precache_model("sprites/1.spr");
  75. #endif
  76. #if DISPLAY_WEAPONS
  77.     precache_model("sprites/weap.spr");
  78.     precache_model("sprites/weap2.spr");
  79. #endif
  80. #if DISPLAY_DOLLARSIGN
  81.     precache_model("sprites/cash.spr");
  82. #endif
  83. #if DISPLAY_ARROW
  84.     precache_model("sprites/arrow.spr");
  85. #endif
  86.     }
  87.  
  88. public plugin_init(){
  89.     register_plugin(PLUGIN,VERSION,AUTHOR);
  90.     NewRound = true;
  91.     register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
  92.     }
  93.  
  94. public event_new_round(){
  95.     remove_task(9678);
  96.     remove_ents();
  97.     NewRound = true;
  98.     set_task(get_cvar_float("mp_freezetime"),"remove_ents",9678);
  99.     set_task(0.2,"display_info",4563,"",0,"b");
  100.     }
  101.  
  102. public remove_ents(){
  103.     remove_task(4563);
  104.     for(new i; i<33; i++){
  105. #if DISPLAY_MONEY
  106.         for(new e; e<NUMBER_OF_SPRITES; e++)
  107.             if(userSpr[i][e])
  108.                 remove_entity(userSpr[i][e]);
  109. #endif
  110. #if DISPLAY_WEAPONS
  111.         for(new e; e<NUMBER_OF_WEAPTYPES; e++)
  112.             if(userWeap[i][e])
  113.                 remove_entity(userWeap[i][e]);
  114. #endif
  115. #if DISPLAY_DOLLARSIGN
  116.         if(userDSign[i])
  117.             remove_entity(userDSign[i]);
  118. #endif
  119. #if DISPLAY_ARROW
  120.         if(userArrow[i])
  121.             remove_entity(userArrow[i]);
  122. #endif
  123.         }
  124.     }
  125.  
  126. public display_info(){
  127.  
  128.     if (NewRound)
  129.         get_players(iPlayers, count, "ah");
  130.  
  131.     for(new c; c<count; c++){
  132.  
  133.         if(!is_user_alive(iPlayers[c]) || !is_user_connected(iPlayers[c]) || cs_get_user_team(iPlayers[c]) == CS_TEAM_SPECTATOR){
  134.             if(!NewRound){
  135. #if DISPLAY_MONEY
  136.                 drawsprite(userSpr[iPlayers[c]][4],iPlayers[c],"sprites/10000.spr",1.0,34.0,0,0,255,0);
  137.                 drawsprite(userSpr[iPlayers[c]][3],iPlayers[c],"sprites/1000.spr",1.0,34.0,0,0,255,0);
  138.                 drawsprite(userSpr[iPlayers[c]][2],iPlayers[c],"sprites/100.spr",1.0,34.0,0,0,255,0);
  139.                 drawsprite(userSpr[iPlayers[c]][1],iPlayers[c],"sprites/10.spr",1.0,34.0,0,0,255,0);
  140.                 drawsprite(userSpr[iPlayers[c]][0],iPlayers[c],"sprites/1.spr",1.0,34.0,0,0,255,0);
  141. #endif
  142. #if DISPLAY_DOLLARSIGN
  143.                 drawsprite(userDSign[iPlayers[c]],iPlayers[c],"sprites/cash.spr",1.0,34.0,0,0,255,0);
  144. #endif
  145. #if DISPLAY_ARROW
  146.                 drawsprite(userArrow[iPlayers[c]],iPlayers[c],"sprites/arrow.spr",1.0,34.0,0,255,255,0);
  147. #endif
  148. #if DISPLAY_WEAPONS
  149.                 drawsprite(userWeap[iPlayers[c]][0],iPlayers[c],"sprites/weap.spr",Pistols[0],50.0,0,255,255,0);
  150.                 drawsprite(userWeap[iPlayers[c]][1],iPlayers[c],"sprites/weap.spr",Rifles[0],50.0,0,255,255,0);
  151.                 drawsprite(userWeap[iPlayers[c]][2],iPlayers[c],"sprites/weap.spr",4.0,50.0,0,255,255,255);
  152.                 drawsprite(userWeap[iPlayers[c]][3],iPlayers[c],"sprites/weap.spr",25.0,50.0,0,255,255,255);
  153.                 drawsprite(userWeap[iPlayers[c]][4],iPlayers[c],"sprites/weap.spr",9.0,50.0,0,255,255,255);
  154.                 drawsprite(userWeap[iPlayers[c]][5],iPlayers[c],"sprites/weap2.spr",1.0,50.0,0,0,0,255);
  155.                 drawsprite(userWeap[iPlayers[c]][6],iPlayers[c],"sprites/weap2.spr",3.0,50.0,0,0,0,255);
  156. #endif
  157.                 }
  158.             continue;
  159.             }
  160.  
  161.         if (NewRound){
  162. #if DISPLAY_MONEY
  163.             for(new i; i<NUMBER_OF_SPRITES; i++)
  164.                 userSpr[iPlayers[c]][i]=create_entity("env_sprite");
  165. #endif
  166. #if DISPLAY_WEAPONS
  167.             for(new i; i<NUMBER_OF_WEAPTYPES; i++)
  168.                 userWeap[iPlayers[c]][i]=create_entity("env_sprite");
  169. #endif
  170. #if DISPLAY_DOLLARSIGN
  171.             userDSign[iPlayers[c]]=create_entity("env_sprite");
  172. #endif
  173. #if DISPLAY_ARROW
  174.             userArrow[iPlayers[c]]=create_entity("env_sprite");
  175. #endif
  176.             }
  177.    
  178. #if DISPLAY_MONEY
  179.         for (new x; x < NUMBER_OF_SPRITES; x++){
  180.             arrayset(tmpstr, 0, sizeof tmpstr);
  181.             num_to_str(cs_get_user_money(iPlayers[c]), tmpstr, charsmax(tmpstr))
  182.             value[0]=tmpstr[x];
  183.             value[1]=0;
  184.            
  185.             if(!tmpstr[x]){
  186.                 switch(x){
  187.                     case 0: drawsprite(userSpr[iPlayers[c]][4],iPlayers[c],"sprites/10000.spr",1.0,34.0,0,0,255,0);
  188.                     case 1: drawsprite(userSpr[iPlayers[c]][3],iPlayers[c],"sprites/1000.spr",1.0,34.0,0,0,255,0);
  189.                     case 2: drawsprite(userSpr[iPlayers[c]][2],iPlayers[c],"sprites/100.spr",1.0,34.0,0,0,255,0);
  190.                     case 3: drawsprite(userSpr[iPlayers[c]][1],iPlayers[c],"sprites/10.spr",1.0,34.0,0,0,255,0);
  191.                     case 4: drawsprite(userSpr[iPlayers[c]][0],iPlayers[c],"sprites/1.spr",1.0,34.0,0,0,255,0);
  192.                     }
  193.                 continue;
  194.                 }
  195.                
  196.             switch(x){
  197.                 case 0: drawsprite(userSpr[iPlayers[c]][4],iPlayers[c],"sprites/10000.spr",floatstr(value),34.0,255,0,255,0);
  198.                 case 1: drawsprite(userSpr[iPlayers[c]][3],iPlayers[c],"sprites/1000.spr",floatstr(value),34.0,255,0,255,0);
  199.                 case 2: drawsprite(userSpr[iPlayers[c]][2],iPlayers[c],"sprites/100.spr",floatstr(value),34.0,255,0,255,0);
  200.                 case 3: drawsprite(userSpr[iPlayers[c]][1],iPlayers[c],"sprites/10.spr",floatstr(value),34.0,255,0,255,0);
  201.                 case 4: drawsprite(userSpr[iPlayers[c]][0],iPlayers[c],"sprites/1.spr",floatstr(value),34.0,255,0,255,0);
  202.                 }
  203.             }
  204. #endif
  205. #if DISPLAY_DOLLARSIGN
  206.         drawsprite(userDSign[iPlayers[c]],iPlayers[c],"sprites/cash.spr",1.0,34.0,255,0,255,0);
  207. #endif
  208. #if DISPLAY_ARROW
  209.         drawsprite(userArrow[iPlayers[c]],iPlayers[c],"sprites/arrow.spr",1.0,34.0,255,255,255,0);
  210. #endif
  211. #if DISPLAY_WEAPONS
  212.         weapons = pev(iPlayers[c], pev_weapons);
  213.        
  214.         for(new i; i < sizeof Pistols; i++)
  215.             if(weapons & 1<<floatround(Pistols[i])){
  216.                 drawsprite(userWeap[iPlayers[c]][0],iPlayers[c],"sprites/weap.spr",Pistols[i],50.0,255,255,255,0);
  217.                 goto jmp1;
  218.                 }
  219.         drawsprite(userWeap[iPlayers[c]][0],iPlayers[c],"sprites/weap.spr",Pistols[0],50.0,0,255,255,0);
  220.         jmp1:
  221.  
  222.         for(new i; i < sizeof Rifles; i++)
  223.             if(weapons & 1<<floatround(Rifles[i])){
  224.                 drawsprite(userWeap[iPlayers[c]][1],iPlayers[c],"sprites/weap.spr",Rifles[i],50.0,255,255,255,0);
  225.                 goto jmp2;
  226.                 }
  227.         drawsprite(userWeap[iPlayers[c]][1],iPlayers[c],"sprites/weap.spr",Rifles[0],50.0,0,255,255,0);
  228.         jmp2:
  229.        
  230.         if(weapons & 1<<CSW_HEGRENADE)
  231.             drawsprite(userWeap[iPlayers[c]][2],iPlayers[c],"sprites/weap.spr",4.0,50.0,255,255,255,255);
  232.         else
  233.             drawsprite(userWeap[iPlayers[c]][2],iPlayers[c],"sprites/weap.spr",4.0,50.0,0,255,255,255);
  234.        
  235.         if(weapons & 1<<CSW_FLASHBANG)
  236.             drawsprite(userWeap[iPlayers[c]][3],iPlayers[c],"sprites/weap.spr",25.0,50.0,255,255,255,255);
  237.         else
  238.             drawsprite(userWeap[iPlayers[c]][3],iPlayers[c],"sprites/weap.spr",25.0,50.0,0,255,255,255);
  239.        
  240.         if(weapons & 1<<CSW_SMOKEGRENADE)
  241.             drawsprite(userWeap[iPlayers[c]][4],iPlayers[c],"sprites/weap.spr",9.0,50.0,255,255,255,255);
  242.         else
  243.             drawsprite(userWeap[iPlayers[c]][4],iPlayers[c],"sprites/weap.spr",9.0,50.0,0,255,255,255);
  244.  
  245.         cs_get_user_armor(iPlayers[c],CsArmorType:armor);
  246.         if(armor == 2)
  247.             drawsprite(userWeap[iPlayers[c]][5],iPlayers[c],"sprites/weap2.spr",2.0,50.0,255,0,0,255);
  248.         else if(armor == 1)
  249.             drawsprite(userWeap[iPlayers[c]][5],iPlayers[c],"sprites/weap2.spr",1.0,50.0,255,0,0,255);
  250.         else
  251.             drawsprite(userWeap[iPlayers[c]][5],iPlayers[c],"sprites/weap2.spr",1.0,50.0,0,0,0,255);
  252.  
  253.        
  254.         if(weapons & 1<<CSW_C4)
  255.             drawsprite(userWeap[iPlayers[c]][6],iPlayers[c],"sprites/weap2.spr",3.0,50.0,255,0,0,255);
  256.         else if(cs_get_user_defuse(iPlayers[c]))
  257.             drawsprite(userWeap[iPlayers[c]][6],iPlayers[c],"sprites/weap2.spr",4.0,50.0,255,0,0,255);
  258.         else
  259.             drawsprite(userWeap[iPlayers[c]][6],iPlayers[c],"sprites/weap2.spr",3.0,50.0,0,0,0,255);
  260.  
  261. #endif
  262.         }
  263.     NewRound = false;
  264.     }
  265.  
  266. drawsprite(ent,player,str[],Float:frame,Float:offset,render,r,g,b){
  267.  
  268. //      if(!is_user_alive(player) || !is_user_connected(player) || cs_get_user_team(player) == CS_TEAM_SPECTATOR)
  269. //          return;
  270.  
  271.         if (NewRound){     
  272.             engfunc(EngFunc_SetModel, ent, str);
  273.             set_pev(ent, pev_movetype, MOVETYPE_NOCLIP);
  274.             set_pev(ent, pev_framerate, 1.0)
  275.             set_pev(ent, pev_scale, 0.3)
  276.             }
  277.  
  278.         set_pev(ent, pev_frame, frame)
  279.         set_rendering(ent, kRenderFxNone, r, g, b, kRenderTransAdd, render)
  280.         pev(player, pev_origin, userOrig[player]);
  281.         userOrig[player][2] += offset;
  282.         set_pev(ent, pev_origin, userOrig[player]);
  283.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement