HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /////////////////////////////////////////////////////////////////////////////
  2. //==============================
  3. //= Szintrendszer =
  4. //==============================
  5. //
  6. //---------------------
  7. //- Description -
  8. //---------------------
  9. //
  10. //This plugin include the features:
  11. //** XP System - nVault
  12. //** Level System - nVault
  13. //** Cvars to control all bonus per lvl
  14. //** Commands to Add & Remove XP
  15. //** Level behind the Nick Name
  16. //** Bonus Per level
  17. //** ADM Chat Colors Support
  18. //** ...
  19. //
  20. //----------------------
  21. //- Requirements -
  22. //----------------------
  23. //
  24. //** AMXX: Version 1.8.1
  25. //** AMXX Modules: Cstrike, Fun, Engine, Fakemeta, ColorChat, nVault and Hamsandwich modules
  26. //
  27. //----------------------
  28. //- Installation -
  29. //----------------------
  30. //
  31. //1- Download and compile the plugin from:
  32. //2- Upload the amxx file to your server (cstrike>addons>amxmodx>plugins).
  33. //3- Edit the config file and add the plugin (cstrike>addons>amxmodx>configs>plugins.ini).
  34. //
  35. //----------------------
  36. //- Contact Info -
  37. //----------------------
  38. //
  39. //For reporting bugs or post your feedback visit:
  40. //https://forums.alliedmods.net/showthread.php?p=1810627
  41. //
  42. //If you want some private job PM ME on alliedmodders Forum's or send me and email to:
  43. //freestyle_steam@hotmail.com
  44. //
  45. //-----------------
  46. //- Credits -
  47. //-----------------
  48. //
  49. //** Ex1ne
  50. //- XP System & Level System
  51. //
  52. //** matsi
  53. //- Observations and optimizations
  54. //
  55. //** tre3fla
  56. //- Suggestion and request
  57. //
  58. //** ConnorMcLeod
  59. //- Suggestion, SayTxt and Admin Chat Colors Code
  60. //
  61. //** xBatista
  62. //- ShowHud Help
  63. //
  64. //------------------
  65. //- Updates Logs -
  66. //------------------
  67. //
  68. //** v0.0.1 [Oct 2012]
  69. //- First Release
  70. //
  71. //** v0.0.2 [Oct 2012]
  72. //- Optimize & Improve Code
  73. //
  74. //** v0.0.3 [Oct 2012]
  75. //- Optimize Code
  76. //
  77. //** v0.0.4 [Oct 2012]
  78. //- Improve Level Prefix and Personal Info
  79. //
  80. //** v0.0.5 [Oct 2012]
  81. //- Optimize EventDeathMsg
  82. //- Improve Check Level
  83. //
  84. //** v0.0.6 [Oct 2012]
  85. //- Fix Damage Bug
  86. //- Fix Messages Bugs
  87. //
  88. //** v0.0.7 [Oct 2012]
  89. //- Fix Index of Bounds
  90. //
  91. //** v0.0.8 [Oct 2012]
  92. //- Added feature Admin Chat Colors
  93. //
  94. //** v0.0.9 [Oct 2012]
  95. //- Fix some Bugs & Added XP Reward MSG CVAR
  96. //
  97. //** v1.0 [Jan 2013]
  98. //- Fix Give & Remove XP Command
  99. //
  100. ////////////////////////////////////////////////////////////////////
  101.  
  102. #include <amxmodx>
  103. #include <amxmisc>
  104. #include <nvault>
  105. #include <colorchat>
  106. #include <cstrike>
  107. #include <fun>
  108. #include <hamsandwich>
  109. #include <fakemeta>
  110.  
  111. new Level[33], eXP[33]
  112. new KillXp, HsXp, HeXp/*, KnifeXp*/
  113. new gVault
  114.  
  115. new const szPrefix[] = "[^4Szintrendszer^3] -"
  116.  
  117. #define MaxLevels 12
  118. #define IsPlayer(%1) ( 1 <= %1 <= g_iMaxPlayers )
  119. #define TASK_SHOW_HUD 10113
  120.  
  121. new g_msgHudSync
  122. new bool:is_user_ignored[ 33 ]
  123.  
  124. new const Levels[MaxLevels] =
  125. {
  126. 100, // Starter #1
  127. 150, // Noob #2
  128. 200, // Beginner #3
  129. 250, // Knifer #4
  130. 300, // Rambo #5
  131. 350, // Butcher #6
  132. 400, // Matrix #7
  133. 450, // Probhop #8
  134. 550, // Freak #9
  135. 600, // Racer #10
  136. 650, // Kill Bill #11
  137. 700 // Respected Player #12
  138. }
  139. new const Prefix[MaxLevels +1][] =
  140. {
  141. "Kezdo", // 0
  142. "Ujonc", // 1
  143. "Halado", // 2
  144. "TudValamit", // 3
  145. "Gyilkos", // 4
  146. "LoL", // 5
  147. "Orult", // 6
  148. "Wh-s", // 7
  149. "Legyozhetetlen", // 8
  150. "Aimos", // 9
  151. "Mester", // 10
  152. "Eszmeletlen", // 11
  153. "LegenD" // 12
  154. }
  155.  
  156. // Bonus Stuff
  157. new healthperlevel,
  158. armorperlevel,
  159. speedperlevel,
  160. damageperlevel,
  161. gravityperlvl
  162.  
  163. new g_iMaxPlayers
  164.  
  165. // ADMIN CHAT COLORS by ConnorMcLeod
  166. enum _:ADMIN_DATAS
  167. {
  168. m_szName[32],
  169. m_iFlag
  170. }
  171.  
  172. new const AdminsDatas[][ADMIN_DATAS] =
  173. {
  174. {"Owner", ADMIN_IMMUNITY},
  175. {"Manager", ADMIN_BAN},
  176. // {"SuperAdmin", ADMIN_CFG},
  177. {"Admin", ADMIN_KICK},
  178. {"VIP", ADMIN_RESERVATION}
  179. };
  180.  
  181. public plugin_init()
  182. {
  183. register_plugin("Deathrun XP & Level Mod", "0.0.9", "Freestyle")
  184.  
  185. register_message(get_user_msgid("SayText"),"Message_SayText"); // CREDITS TO ConnorMcLeod
  186.  
  187. RegisterHam ( Ham_Spawn, "player", "Ham_CheckOthers_Bonus", 1);
  188. RegisterHam ( Ham_TakeDamage, "player", "Ham_CheckDamage_Bonus", .Post = false );
  189. RegisterHam ( Ham_Item_PreFrame, "player", "Ham_CheckSpeed_Bonus", 1);
  190.  
  191. g_iMaxPlayers = get_maxplayers( );
  192.  
  193. register_cvar( "AdminChatColors_On", "1" ); // Admin Tag - Example: [Admin] Freestyle
  194. register_cvar( "XP_Reward_MSG", "1" ); // Message of the XP Gain
  195.  
  196. // CHAT COMMANDS //
  197. register_clcmd ( "say /xp", "ShowPlayerXP")
  198. register_clcmd ( "say_team /xp", "ShowPlayerXP")
  199. register_clcmd ( "say /level", "ShowPlayerLevel")
  200. register_clcmd ( "say_team /level", "ShowPlayerLevel")
  201.  
  202. // XP SYSTEM //
  203. KillXp = register_cvar("drxp_per_kill", "1")
  204. HsXp = register_cvar("drxp_per_hs", "1")
  205. HeXp = register_cvar("drxp_per_nade_kill", "2")
  206. //KnifeXp = register_cvar("drxp_per_knife_kill", "2")
  207.  
  208. // Give & Remove XP //
  209. register_concmd ( "give_xp", "CmdAddXP", ADMIN_RCON, "<nick, #userid, authid | @all> <xp>" )
  210. register_concmd ( "remove_xp", "CmdRemoveXP", ADMIN_RCON, "<nick, #userid, authid | @all> <xp>" )
  211.  
  212. /* Bonus Stuff */
  213.  
  214. // Health Per Level //
  215. healthperlevel = register_cvar("health_per_lvl", "0")
  216.  
  217. // Armor Per Level //
  218. armorperlevel = register_cvar("armor_per_lvl", "0")
  219.  
  220. // Speed Per Level //
  221. speedperlevel = register_cvar("speed_per_lvl", "0")
  222.  
  223. // Gravity Per Level //
  224. gravityperlvl = register_cvar("gravity_per_lvl", "0") // NERVER MORE THAN 66 PER LVL
  225.  
  226. // Damage Per Level //
  227. damageperlevel = register_cvar("damage_per_lvl", "0")
  228.  
  229. g_msgHudSync = CreateHudSyncObj()
  230. }
  231.  
  232. public plugin_cfg( )
  233. {
  234. gVault = nvault_open( "DEATHRUN_XP" )
  235.  
  236. if ( gVault == INVALID_HANDLE )
  237. set_fail_state( "Error opening nVault" );
  238. }
  239.  
  240. /* INFO ABOUT PERSONAL XP/LEVEL */
  241. public ShowPlayerXP(id)
  242. {
  243. ColorChat(id, GREY, "%s Neked ^4%i^3 XP-d van es a szinted: ^4%s^3!", szPrefix, eXP[id], Prefix[Level[id]])
  244. }
  245.  
  246. public ShowPlayerLevel(id)
  247. {
  248. new name[32]
  249. get_user_name(id, name, sizeof(name) -1)
  250.  
  251. ColorChat(id, GREY, "%s A te szinted: ^4%s^3 ^4%i^3 XP-vel!", szPrefix, Prefix[Level[id]], eXP[id])
  252. }
  253.  
  254. public Ham_CheckDamage_Bonus( pevVictim, pevInflictor, pevAttacker, Float:flDamage, iDmgBits )
  255. {
  256. if( !( 1 <= pevAttacker <= g_iMaxPlayers) )
  257. {
  258. return HAM_HANDLED;
  259. }
  260.  
  261. if( !is_user_alive( pevAttacker ) )
  262. {
  263. return HAM_HANDLED;
  264. }
  265.  
  266. SetHamParamFloat( 4 , flDamage + ( get_pcvar_num( damageperlevel ) * Level[ pevAttacker ] ) )
  267.  
  268. return HAM_IGNORED;
  269. }
  270.  
  271. /* Speed Check */
  272. public Ham_CheckSpeed_Bonus( id )
  273. {
  274. if( !is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_T )
  275. {
  276. return HAM_IGNORED;
  277. }
  278.  
  279. set_user_maxspeed( id, 250.0 + ( get_pcvar_num(speedperlevel) * Level[ id ] ) );
  280.  
  281. return HAM_IGNORED;
  282. }
  283.  
  284. /* HP & AP & Gravity Check */
  285. public Ham_CheckOthers_Bonus(id)
  286. {
  287. if( !is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_T )
  288. return HAM_IGNORED;
  289.  
  290. // HP Check
  291. new HPCheck = ( get_user_health(id) + get_pcvar_num(healthperlevel) * Level[ id ] );
  292. set_user_health( id, HPCheck );
  293.  
  294. // AP Check
  295. new APCheck = ( get_user_armor(id) + get_pcvar_num(armorperlevel) * Level[ id ] );
  296. set_user_armor( id, APCheck );
  297.  
  298. // Gravity
  299. new GRAVITYCheck = 800 - ( get_pcvar_num( gravityperlvl ) * Level[ id ] );
  300.  
  301. if(get_pcvar_num(gravityperlvl) > 66)
  302. {
  303. set_user_gravity( id, float( 8 ) / 800.0 );
  304. }
  305. else
  306. {
  307. set_user_gravity( id, float( GRAVITYCheck ) / 800.0 );
  308. }
  309.  
  310. remove_task( TASK_SHOW_HUD + id );
  311.  
  312. set_task(0.1, "ShowHud", TASK_SHOW_HUD + id)
  313.  
  314. return HAM_IGNORED;
  315. }
  316.  
  317. /* Respected Player Join / Leave Stuff */
  318.  
  319. public LvL_12_PlayerJoin(id)
  320. {
  321. new name[32]
  322. get_user_name(id, name, sizeof(name) -1)
  323.  
  324. ColorChat(0, GREY, "%s ^4Egy LegenD : ^1%s^4 belepett,^1%i^4 XP-je van!", szPrefix, name, eXP[id])
  325. }
  326.  
  327. public LvL_12_PlayerRemove(id)
  328. {
  329. new name[32]
  330. get_user_name(id, name, sizeof(name) -1)
  331.  
  332. ColorChat(0, GREY, "%s ^4Egy LegenD : %s lelepett %i XP-je van!", szPrefix, name, eXP[id])
  333. }
  334.  
  335. public plugin_end( )
  336. nvault_close( gVault )
  337.  
  338. public client_putinserver(id)
  339. {
  340. LoadData(id)
  341. set_task( 3.0, "ShowHud", id, .flags = "b" );
  342.  
  343. if(Level[id] == 12)
  344. {
  345. set_task(5.0, "LvL_12_PlayerJoin", id)
  346. }
  347. }
  348.  
  349. public client_disconnect(id)
  350. {
  351. SaveData(id)
  352.  
  353. if(Level[id] == 12)
  354. {
  355. set_task(1.0, "LvL_12_PlayerRemove", id)
  356. }
  357. }
  358.  
  359. /* XP REWARDS */
  360. public client_death( iKiller, iVictim, wpnindex, hitplace )
  361. {
  362. new vname[32]
  363. new kname[32]
  364.  
  365. get_user_name( iKiller, kname, charsmax( kname ) )
  366. get_user_name( iVictim, vname, charsmax( vname ) )
  367.  
  368. if( is_user_ignored[ iKiller ] )
  369. return PLUGIN_HANDLED_MAIN
  370.  
  371. get_user_name( iKiller, kname, charsmax( kname ) )
  372. get_user_name( iVictim, vname, charsmax( vname ) )
  373.  
  374. if( iKiller != iVictim && ( 1 <= iKiller <= g_iMaxPlayers ) && ( 1 <= iVictim <= g_iMaxPlayers ) && !( hitplace == HIT_HEAD ) && !( wpnindex == CSW_HEGRENADE ) )
  375. {
  376. eXP[iKiller] += get_pcvar_num(KillXp)
  377.  
  378. if( get_cvar_num("XP_Reward_MSG") == 1 )
  379. {
  380. ColorChat ( iKiller, GREY, "%s Kaptal^4 %i^3 XP-t mert megolted ^4 %s^3-t", szPrefix, get_pcvar_num(KillXp), vname )
  381. }
  382. }
  383.  
  384. if( hitplace == HIT_HEAD )
  385. {
  386. eXP[iKiller] += get_pcvar_num(HsXp)
  387.  
  388. if( get_cvar_num("XP_Reward_MSG") == 1 )
  389. {
  390. ColorChat ( iKiller, GREY, "%s Kaptal^4 %i^3 XP-t mert megolted ^4 %s^3-t", szPrefix, get_pcvar_num (HsXp), vname )
  391. }
  392. }
  393.  
  394. if( wpnindex == CSW_HEGRENADE && iKiller != iVictim )
  395. {
  396. eXP[iKiller] += get_pcvar_num(HeXp)
  397.  
  398. if( get_cvar_num("XP_Reward_MSG") == 1 )
  399. {
  400. ColorChat( iKiller, GREEN, "%s Kaptal^4 %i^3 XP-t mert megolted ^4 %s^3-t", szPrefix, get_pcvar_num (HeXp), vname )
  401. }
  402. }
  403. CheckLevel(iKiller)
  404. SaveData(iKiller)
  405.  
  406. return PLUGIN_CONTINUE
  407. }
  408.  
  409. public CheckLevel(id)
  410. {
  411. if(Level[id] < MaxLevels-1)
  412. {
  413. while(eXP[id] >= Levels[Level[id]])
  414. {
  415. Level[id] += 1
  416. ColorChat(id, GREY, "%s Gratulalok szintet leptel, mostani szinted szama : ^4%i^3", szPrefix, Level[id])
  417. }
  418. }
  419. }
  420.  
  421. /* HUD PERMANENT INFO */
  422. public ShowHud(task)
  423. {
  424. new id = task - TASK_SHOW_HUD
  425.  
  426. if(!is_user_alive(id))
  427. return;
  428.  
  429. set_hudmessage(0, 0, 0, 0.02, 0.33, 0, 0.0, 0.3, 0.0, 0.0)
  430. ShowSyncHudMsg(id, g_msgHudSync,"[Szinted : %s]^n[XP-d : %i]", Prefix[Level[id]], eXP[id])
  431.  
  432. set_task(0.1, "ShowHud", TASK_SHOW_HUD + id)
  433. }
  434.  
  435. /* nVault Stuff */
  436. public SaveData(id)
  437. {
  438. new AuthID[35]
  439. get_user_authid(id,AuthID,34)
  440. new vaultkey[64],vaultdata[256]
  441.  
  442. format(vaultkey,63,"%s-Mod",AuthID)
  443. format(vaultdata,255,"%i#%i#",eXP[id],Level[id])
  444.  
  445. nvault_set(gVault,vaultkey,vaultdata)
  446.  
  447. return PLUGIN_CONTINUE
  448. }
  449. public LoadData(id)
  450. {
  451. new AuthID[35]
  452. get_user_authid(id,AuthID,34)
  453. new vaultkey[64],vaultdata[256]
  454.  
  455. format(vaultkey,63,"%s-Mod",AuthID)
  456. format(vaultdata,255,"%i#%i#",eXP[id],Level[id])
  457.  
  458. nvault_get(gVault,vaultkey,vaultdata,255)
  459.  
  460. replace_all(vaultdata, 255, "#", " ")
  461.  
  462. new playerxp[32], playerlevel[32]
  463.  
  464. parse(vaultdata, playerxp, 31, playerlevel, 31)
  465.  
  466. eXP[id] = str_to_num(playerxp)
  467.  
  468. Level[id] = str_to_num(playerlevel)
  469.  
  470. return PLUGIN_CONTINUE
  471. }
  472.  
  473. /* Remove And Add XP */
  474. public CmdAddXP ( iPlayer, level, cid )
  475. {
  476. if( !cmd_access( iPlayer, level, cid, 3 ) ) return PLUGIN_HANDLED;
  477.  
  478. new arg [ 32 ]
  479. read_argv ( 1, arg, 31 )
  480.  
  481. new AddXP [ 32 ]
  482. read_argv ( 2, AddXP, charsmax ( AddXP ) )
  483.  
  484. new XPtoGive = str_to_num ( AddXP )
  485.  
  486. new AdminName [ 32 ]
  487. new TargetName [ 32 ]
  488. get_user_name ( iPlayer, AdminName, charsmax ( AdminName ) )
  489.  
  490. if( arg[0]=='@' )
  491. {
  492. if( equali(arg[1],"All") || equali(arg[1],"ALL") )
  493. {
  494. new players[32], totalplayers, All
  495. get_players( players, totalplayers )
  496.  
  497. for ( new i = 0; i < totalplayers; i++ )
  498. {
  499. All = players[ i ]
  500.  
  501. eXP[ All ] += XPtoGive
  502. }
  503.  
  504. CheckLevel( All )
  505. ColorChat ( 0, GREY, "%s ^1%s^3 adott^1 %i^3 XP-t minden ^1 jatekosnak^3!", szPrefix, AdminName, XPtoGive )
  506. }
  507. else if( equali(arg[1],"T") || equali(arg[1],"t") )
  508. {
  509. new players[32], totalplayers, T
  510. get_players( players, totalplayers )
  511.  
  512. for ( new i = 0; i < totalplayers; i++ )
  513. {
  514. if ( get_user_team(players[ i ]) == 1 )
  515. {
  516. T = players[ i ]
  517.  
  518. eXP[ T ] += XPtoGive
  519. }
  520. }
  521.  
  522. CheckLevel( T )
  523. ColorChat ( 0, GREY, "%s ^1%s^3 adott^1 %i^3 XP-t minden^1 Terrornak^3!", szPrefix, AdminName, XPtoGive )
  524. }
  525. else if( equali(arg[1],"CT") || equali(arg[1],"ct") )
  526. {
  527. new players[32], totalplayers, CT
  528. get_players( players, totalplayers )
  529.  
  530. for( new i = 0; i < totalplayers; i++ )
  531. {
  532. if( get_user_team(players[ i ] ) == 2 )
  533. {
  534. CT = players[ i ]
  535.  
  536. eXP[ CT ] += XPtoGive
  537. }
  538. }
  539.  
  540. CheckLevel( CT )
  541. ColorChat ( 0, GREY, "%s ^1%s^3 adott^1 %i^3 XP-t minden^1 CT-nek^3!", szPrefix, AdminName, XPtoGive )
  542. }
  543. }
  544. else
  545. {
  546. new iTarget = cmd_target( iPlayer, arg, 3 )
  547. get_user_name ( iTarget, TargetName, charsmax ( TargetName ) )
  548.  
  549. if( iTarget )
  550. {
  551. eXP[ iTarget ] += XPtoGive
  552.  
  553. CheckLevel( iTarget )
  554. ColorChat ( 0, GREY, "%s ^1%s^3 adott^1 %i^3 XP-t ^1 %s-nek^3", szPrefix, AdminName, XPtoGive, TargetName )
  555. }
  556. }
  557. return PLUGIN_HANDLED
  558. }
  559.  
  560. public CmdRemoveXP ( iPlayer, level, cid )
  561. {
  562. if( !cmd_access(iPlayer, level, cid, 3) ) return PLUGIN_HANDLED;
  563.  
  564. new arg [ 32 ]
  565. read_argv ( 1, arg, 31 )
  566.  
  567. new RemoveXP [ 32 ]
  568. read_argv ( 2, RemoveXP, charsmax ( RemoveXP ) )
  569.  
  570. new XPtoRemove = str_to_num ( RemoveXP )
  571.  
  572. new AdminName [ 32 ]
  573. new TargetName [ 32 ]
  574. get_user_name ( iPlayer, AdminName, charsmax ( AdminName ) )
  575.  
  576. if( arg[0]=='@' )
  577. {
  578. if( equali(arg[1],"All") || equali(arg[1],"ALL") )
  579. {
  580. new players[32], totalplayers, All
  581. get_players( players, totalplayers )
  582.  
  583. for ( new i = 0; i < totalplayers; i++ )
  584. {
  585. All = players[ i ]
  586.  
  587. eXP[ All ] -= XPtoRemove
  588. }
  589.  
  590. CheckLevel( All )
  591. ColorChat ( 0, GREY, "%s ^1%s^3 elvett^1 %i^3 XP-t ^1mindenkitol^3!", szPrefix, AdminName, XPtoRemove )
  592. }
  593. else if( equali(arg[1],"T") || equali(arg[1],"t") )
  594. {
  595. new players[32], totalplayers, T
  596. get_players( players, totalplayers )
  597.  
  598. for ( new i = 0; i < totalplayers; i++ )
  599. {
  600. if ( get_user_team(players[ i ]) == 1 )
  601. {
  602. T = players[ i ]
  603.  
  604. eXP[ T ] -= XPtoRemove
  605. }
  606. }
  607.  
  608. CheckLevel( T )
  609. ColorChat ( 0, GREY, "%s ^1%s^3 elvett^1 %i^3 XP-t minden^1 Terroristatol^3!", szPrefix, AdminName, XPtoRemove )
  610. }
  611. else if( equali(arg[1],"CT") || equali(arg[1],"ct") )
  612. {
  613. new players[32], totalplayers, CT
  614. get_players( players, totalplayers )
  615.  
  616. for( new i = 0; i < totalplayers; i++ )
  617. {
  618. if( get_user_team(players[ i ] ) == 2 )
  619. {
  620. CT = players[ i ]
  621.  
  622. eXP[ CT ] -= XPtoRemove
  623. }
  624. }
  625.  
  626. CheckLevel( CT )
  627. ColorChat ( 0, GREY, "%s ^1%s^3 elvett^1 %i^3 XP-t minden^1 CT-tol^3!", szPrefix, AdminName, XPtoRemove )
  628. }
  629. }
  630. else
  631. {
  632. new iTarget = cmd_target( iPlayer, arg, 3 )
  633. get_user_name ( iTarget, TargetName, charsmax ( TargetName ) )
  634.  
  635. if( !iTarget )
  636. return PLUGIN_HANDLED
  637.  
  638. eXP[ iTarget ] -= XPtoRemove
  639.  
  640. CheckLevel( iTarget )
  641. ColorChat ( 0, GREY, "%s ^1%s^3 adott^1 %i^3 XP-t ^1 %s-nek^3", szPrefix, AdminName, XPtoRemove, TargetName )
  642. }
  643.  
  644. return PLUGIN_HANDLED
  645. }
  646. /* Level Behind Nick & AdminChatColors
  647.   CREDITS TO ConnorMcLeod */
  648. public Message_SayText(msgId,msgDest,msgEnt)
  649. {
  650. new id = get_msg_arg_int(1);
  651. if( is_user_connected(id) )
  652. {
  653. if( get_cvar_num("AdminChatColors_On") == 1 )
  654. {
  655. new flags = get_user_flags(id)
  656. for(new i; i<sizeof(AdminsDatas); i++)
  657. {
  658. if( flags & AdminsDatas[i][m_iFlag] )
  659. {
  660. new szChannel[64]
  661. get_msg_arg_string(2, szChannel, charsmax(szChannel))
  662.  
  663. if( equal(szChannel, "#Cstrike_Chat_All") )
  664. {
  665. formatex(szChannel, charsmax(szChannel), "^4[%s - %s] ^3%%s1 ^1: %%s2", Prefix[Level[id]], AdminsDatas[i][m_szName])
  666. set_msg_arg_string(2, szChannel)
  667. }
  668. else if( !equal(szChannel, "#Cstrike_Name_Change") )
  669. {
  670. format(szChannel, charsmax(szChannel), "^4[%s - %s] %s", Prefix[Level[id]], AdminsDatas[i][m_szName], szChannel)
  671. set_msg_arg_string(2, szChannel)
  672. }
  673. return
  674. }
  675. else
  676. {
  677. new szChannel[64]
  678. get_msg_arg_string(2, szChannel, charsmax(szChannel))
  679.  
  680. if( equal(szChannel, "#Cstrike_Chat_All") )
  681. {
  682. formatex(szChannel, charsmax(szChannel), "^4[%s] ^3%%s1 ^1: %%s2", Prefix[Level[id]])
  683. set_msg_arg_string(2, szChannel)
  684. }
  685. else if( !equal(szChannel, "#Cstrike_Name_Change") )
  686. {
  687. format(szChannel, charsmax(szChannel), "^4[%s] %s", Prefix[Level[id]], szChannel)
  688. set_msg_arg_string(2, szChannel)
  689. }
  690. return
  691. }
  692. }
  693. }
  694. else
  695. {
  696. new szChannel[64]
  697. get_msg_arg_string(2, szChannel, charsmax(szChannel));
  698.  
  699. if( equal(szChannel, "#Cstrike_Chat_All") )
  700. {
  701. formatex(szChannel, charsmax(szChannel), "^4[%s] ^3%%s1 ^1: %%s2", Prefix[Level[id]])
  702. set_msg_arg_string(2, szChannel)
  703. }
  704. else if( !equal(szChannel, "#Cstrike_Name_Change") )
  705. {
  706. format(szChannel, charsmax(szChannel), "^4[%s] %s", Prefix[Level[id]], szChannel)
  707. set_msg_arg_string(2, szChannel)
  708. }
  709. return
  710. }
  711. }
  712. }
  713.