Advertisement
Guest User

Untitled

a guest
Feb 18th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.48 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