hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.06.05. 01:07



Jelenlévő felhasználók

Jelenleg 235 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 235 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Re: Színes Specinfo
HozzászólásElküldve: 2013.09.04. 16:07 
Offline
Őskövület
Avatar

Csatlakozott: 2012.03.22. 18:22
Hozzászólások: 2978
Megköszönt másnak: 115 alkalommal
Megköszönték neki: 368 alkalommal
mondjuk ha adtál volna egy sma-t könnyebb lett volna,de rákerestem :D
teszt nem volt
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <fakemeta>
  5.  
  6. new const VERSION[ ] = "1.3.1"
  7. new const TRKCVAR[ ] = "specinfo_version"
  8. #define IMMUNE_FLAG ADMIN_IMMUNITY
  9.  
  10. #define KEYS_STR_LEN 31
  11. #define LIST_STR_LEN 610
  12. #define BOTH_STR_LEN KEYS_STR_LEN + LIST_STR_LEN
  13.  
  14. //cl_prefs constants
  15. #define FL_LIST ( 1 << 0 )
  16. #define FL_KEYS ( 1 << 1 )
  17. #define FL_OWNKEYS ( 1 << 2 )
  18. #define FL_HIDE ( 1 << 3 )
  19.  
  20. //cvar pointers
  21. new p_enabled, p_list_enabled, p_keys_enabled, p_list_default, p_keys_default;
  22. new p_red, p_grn, p_blu, p_immunity;
  23.  
  24. //data arrays
  25. new cl_keys[33], cl_prefs[33];
  26. new keys_string[33][KEYS_STR_LEN + 1], list_string[33][LIST_STR_LEN + 1]
  27. new cl_names[33][21], spec_ids[33][33];
  28.  
  29. public plugin_init( )
  30. {
  31. register_plugin( "SpecInfo", VERSION, "Ian Cammarata" );
  32. register_cvar( TRKCVAR, VERSION, FCVAR_SERVER );
  33. set_cvar_string( TRKCVAR, VERSION );
  34.  
  35. p_enabled = register_cvar( "si_enabled", "1" );
  36. p_list_enabled = register_cvar( "si_list_enabled", "1" );
  37. p_keys_enabled = register_cvar( "si_keys_enabled", "1" );
  38. p_list_default = register_cvar( "si_list_default", "1" );
  39. p_keys_default = register_cvar( "si_keys_default", "1" );
  40. p_immunity = register_cvar( "si_immunity", "1" );
  41. p_red = register_cvar( "si_msg_r", "45" );
  42. p_grn = register_cvar( "si_msg_g", "89" );
  43. p_blu = register_cvar( "si_msg_b", "116" );
  44.  
  45. register_clcmd( "say /speclist", "toggle_list", _, "Toggle spectator list." );
  46. register_clcmd( "say /speckeys", "toggle_keys", _, "Toggle spectator keys." );
  47. register_clcmd( "say /showkeys", "toggle_ownkeys", _, "Toggle viewing own keys." );
  48. register_clcmd( "say /spechide", "toggle_hide", IMMUNE_FLAG, "Admins toggle being hidden from list." );
  49.  
  50. set_task( 1.0, "list_update", _, _, _, "b" );
  51. set_task( 0.1, "keys_update", _, _, _, "b" );
  52.  
  53. register_dictionary( "specinfo.txt" );
  54. }
  55.  
  56. public client_connect( id )
  57. {
  58. cl_prefs[id] = 0;
  59. if( !is_user_bot( id ) )
  60. {
  61. if( get_pcvar_num( p_list_default ) ) cl_prefs[id] |= FL_LIST;
  62. if( get_pcvar_num( p_keys_default ) ) cl_prefs[id] |= FL_KEYS;
  63. }
  64. get_user_name( id, cl_names[id], 20 );
  65. return PLUGIN_CONTINUE;
  66. }
  67.  
  68. public client_infochanged( id )
  69. {
  70. get_user_name( id, cl_names[id], 20 );
  71. return PLUGIN_CONTINUE;
  72. }
  73.  
  74. public list_update( )
  75. {
  76. if( get_pcvar_num( p_enabled ) && get_pcvar_num ( p_list_enabled ) )
  77. {
  78. new players[32], num, id, id2, i, j;
  79. for( i = 1; i < 33; i++ ) spec_ids[i][0] = 0;
  80.  
  81. get_players( players, num, "bch" );
  82. for( i = 0; i < num; i++ )
  83. {
  84. id = players[i];
  85. if( !( get_user_flags( id ) & IMMUNE_FLAG && get_pcvar_num( p_immunity ) && cl_prefs[id] & FL_HIDE ) )
  86. {
  87. id2 = pev( id, pev_iuser2 );
  88. if( id2 )
  89. {
  90. spec_ids[ id2 ][ 0 ]++;
  91. spec_ids[ id2 ][ spec_ids[ id2 ][ 0 ] ] = id;
  92. }
  93. }
  94. }
  95. new tmplist[ LIST_STR_LEN + 1 ], tmpstr[41];
  96. new count, namelen, tmpname[21];
  97. for( i=1; i<33; i++ )
  98. {
  99. count = spec_ids[i][0];
  100. if( count )
  101. {
  102. namelen = ( LIST_STR_LEN - 10 ) / count;
  103. clamp( namelen, 10, 20 );
  104. format( tmpname, namelen, cl_names[i] );
  105. formatex( tmplist, LIST_STR_LEN - 1, "^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t(%d) %s %s:^n", count, "%L", tmpname);
  106. for( j=1; j<=count; j++ )
  107. {
  108. format( tmpname, namelen, cl_names[spec_ids[i][j]]);
  109. formatex( tmpstr, 40, "^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t%s", tmpname );
  110. if( strlen( tmplist ) + strlen( tmpstr ) + ( 11 - j ) < ( LIST_STR_LEN - 1 ) )
  111. format( tmplist, LIST_STR_LEN - 10, "%s%s^n", tmplist, tmpstr );
  112. else
  113. {
  114. format( tmplist, LIST_STR_LEN, "%s...^n", tmplist );
  115. break;
  116. }
  117. }
  118. if( count < 10 )
  119. format( tmplist, LIST_STR_LEN,
  120. "%s^n^n^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^tSpecInfo v%s^n",
  121. tmplist, VERSION
  122. );
  123. for( j+=0; j<10; j++ )
  124. format( tmplist, LIST_STR_LEN, "%s%s", tmplist, "^n" );
  125. list_string[i] = tmplist;
  126. }
  127. }
  128. get_players( players, num, "ch" );
  129. for( i=0; i<num; i++ ) clmsg( players[i] );
  130. }
  131. return PLUGIN_HANDLED;
  132. }
  133.  
  134. public keys_update( )
  135. {
  136. if( !get_pcvar_num( p_enabled ) && !get_pcvar_num( p_keys_enabled ) ) return;
  137.  
  138. new players[32], num, id, i;
  139. get_players( players, num, "a" );
  140. for( i = 0; i < num; i++ )
  141. {
  142. id = players[i];
  143. formatex( keys_string[id], KEYS_STR_LEN, " ^n^t^t%s^t^t^t%s^n^t%s %s %s^t^t%s",
  144. cl_keys[id] & IN_FORWARD ? "W" : " .",
  145. "%L",
  146. cl_keys[id] & IN_MOVELEFT ? "A" : ".",
  147. cl_keys[id] & IN_BACK ? "S" : ".",
  148. cl_keys[id] & IN_MOVERIGHT ? "D" : ".",
  149. "%L"
  150. );
  151.  
  152. //Flags stored in string to fill translation char in clmsg function
  153. keys_string[id][0] = 0;
  154. if( cl_keys[id] & IN_JUMP ) keys_string[id][0] |= IN_JUMP;
  155. if( cl_keys[id] & IN_DUCK ) keys_string[id][0] |= IN_DUCK;
  156.  
  157. cl_keys[id] = 0;
  158. }
  159.  
  160. new id2;
  161. get_players( players, num, "ch" );
  162. for( i=0; i<num; i++ )
  163. {
  164. id = players[i];
  165. if( is_user_alive( id ) )
  166. {
  167. if( cl_prefs[id] & FL_OWNKEYS ) clmsg( id );
  168. }
  169. else
  170. {
  171. id2 = pev( id, pev_iuser2 );
  172. if( cl_prefs[id] & FL_KEYS && id2 && id2 != id ) clmsg( id );
  173. }
  174. }
  175.  
  176. }
  177.  
  178. public server_frame( )
  179. {
  180. if( get_pcvar_num( p_enabled ) && get_pcvar_num( p_keys_enabled ) )
  181. {
  182. new players[32], num, id;
  183. get_players( players, num, "a" );
  184. for( new i = 0; i < num; i++ )
  185. {
  186. id = players[i];
  187. if( get_user_button( id ) & IN_FORWARD )
  188. cl_keys[id] |= IN_FORWARD;
  189. if( get_user_button( id ) & IN_BACK )
  190. cl_keys[id] |= IN_BACK;
  191. if( get_user_button( id ) & IN_MOVELEFT )
  192. cl_keys[id] |= IN_MOVELEFT;
  193. if( get_user_button( id ) & IN_MOVERIGHT )
  194. cl_keys[id] |= IN_MOVERIGHT;
  195. if( get_user_button( id ) & IN_DUCK )
  196. cl_keys[id] |= IN_DUCK;
  197. if( get_user_button( id ) & IN_JUMP )
  198. cl_keys[id] |= IN_JUMP;
  199. }
  200. }
  201. return PLUGIN_CONTINUE
  202. }
  203.  
  204. public clmsg( id )
  205. {
  206. new rand=random_num(10,255)
  207. if( !id ) return;
  208.  
  209. new prefs = cl_prefs[id];
  210.  
  211. new bool:show_own = false;
  212. if( is_user_alive( id ) && prefs & FL_OWNKEYS ) show_own = true;
  213.  
  214. if( is_user_alive( id ) && !show_own )
  215. {
  216. if( prefs & FL_LIST && spec_ids[id][0] && get_pcvar_num( p_list_enabled ) )
  217. {
  218. set_hudmessage(rand,rand,rand,0.7,0.1,0,0.0,1.1,0.1,0.1,3);
  219. show_hudmessage( id, list_string[id], id, "SPECTATING" );
  220. }
  221. }
  222. else
  223. {
  224. new id2;
  225. if( show_own ) id2 = id;
  226. else id2 = pev( id, pev_iuser2 );
  227. if( !id2 ) return;
  228.  
  229. if( prefs & FL_LIST || prefs & FL_KEYS || show_own )
  230. {
  231. set_hudmessage(
  232. get_pcvar_num( p_red ),
  233. get_pcvar_num( p_grn ),
  234. get_pcvar_num( p_blu ),
  235. 0.48, /*x*/
  236. 0.14, /*y*/
  237. 0, /*fx*/
  238. 0.0, /*fx time*/
  239. prefs & FL_KEYS || show_own ? 0.1 : 1.1, /*hold time*/
  240. 0.1, /*fade in*/
  241. 0.1, /*fade out*/
  242. 3 /*chan*/
  243. );
  244. new msg[BOTH_STR_LEN + 1];
  245. if( prefs & FL_LIST && get_pcvar_num( p_list_enabled ) && spec_ids[id2][0] )
  246. formatex(msg,BOTH_STR_LEN,list_string[id2],id,"SPECTATING");
  247. else msg ="^n^n^n^n^n^n^n^n^n^n^n^n";
  248. if( get_pcvar_num( p_keys_enabled ) && ( prefs & FL_KEYS || show_own ) )
  249. {
  250. format( msg, BOTH_STR_LEN, "%s%s", msg, keys_string[id2][1] );
  251. format( msg, BOTH_STR_LEN, msg,
  252. id, keys_string[id2][0] & IN_JUMP ? "JUMP" : "LAME",
  253. id, keys_string[id2][0] & IN_DUCK ? "DUCK" : "LAME"
  254. );
  255. }
  256. show_hudmessage( id, msg );
  257. }
  258. }
  259. }
  260.  
  261. public set_hudmsg_flg_notify( )
  262. {
  263. set_hudmessage(
  264. get_pcvar_num( p_red ),
  265. get_pcvar_num( p_grn ),
  266. get_pcvar_num( p_blu ),
  267. -1.0, /*x*/
  268. 0.8, /*y*/
  269. 0, /*fx*/
  270. 0.0, /*fx time*/
  271. 3.0, /*hold time*/
  272. 0.0, /*fade in*/
  273. 0.0, /*fade out*/
  274. -1 /*chan*/
  275. );
  276. }
  277.  
  278. public toggle_list( id )
  279. {
  280. set_hudmsg_flg_notify( );
  281. cl_prefs[id] ^= FL_LIST;
  282. show_hudmessage( id, "%L", id, cl_prefs[id] & FL_LIST ? "SPEC_LIST_ENABLED" : "SPEC_LIST_DISABLED" );
  283. return PLUGIN_HANDLED;
  284. }
  285.  
  286. public toggle_keys( id )
  287. {
  288. set_hudmsg_flg_notify( );
  289. cl_prefs[id] ^= FL_KEYS;
  290. show_hudmessage( id, "%L", id, cl_prefs[id] & FL_KEYS ? "SPEC_KEYS_ENABLED" : "SPEC_KEYS_DISABLED" );
  291. return PLUGIN_HANDLED;
  292. }
  293.  
  294. public toggle_ownkeys( id )
  295. {
  296. set_hudmsg_flg_notify( );
  297. cl_prefs[id] ^= FL_OWNKEYS;
  298. show_hudmessage( id, "%L", id, cl_prefs[id] & FL_OWNKEYS ? "SPEC_OWNKEYS_ENABLED" : "SPEC_OWNKEYS_DISABLED" );
  299. return PLUGIN_HANDLED;
  300. }
  301.  
  302. public toggle_hide( id, level, cid )
  303. {
  304. if( cmd_access( id, level, cid, 0 ) )
  305. {
  306. set_hudmsg_flg_notify( );
  307. cl_prefs[id] ^= FL_HIDE;
  308. show_hudmessage( id, "%L", id, cl_prefs[id] & FL_HIDE ? "SPEC_HIDE_ENABLED" : "SPEC_HIDE_DISABLED" );
  309. }
  310. return PLUGIN_HANDLED;
  311. }
  312.  

_________________
Blasenkampfwagen

https://discord.gg/uBYnNnZP
GTA:PURSUIT MTA


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 48 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole