HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include < amxmodx >
  2. #include < amxmisc >
  3. #include < cstrike >
  4. #include < csx >
  5. #include < hamsandwich >
  6. #include < fvault >
  7.  
  8. #define PLUGIN "Basic SkillPoints Special Edition"
  9. #define VERSION "2.0.2"
  10. #define AUTHOR "guipatinador"
  11.  
  12. #define g_VaultSkillPoints "skillpoints_v2"
  13. #define g_VaultNames "skillpoints_names"
  14. #define PREFIX "[SkillPoints]"
  15.  
  16. #define MAX_PLAYERS 32
  17. #define ADMIN ADMIN_RCON
  18.  
  19. #define EXPIREDAYS 30
  20. #define MAX_CLASSES 5
  21. #define MAX_LEVELS 5
  22. #define MAX_PONTUATION 10000 // max skillpoints per player
  23.  
  24. #define IsPlayer(%1) ( 1 <= %1 <= g_iMaxPlayers )
  25.  
  26. new const CLASSES[ MAX_CLASSES ][ ] = {
  27. "BOT",
  28. "NOOB",
  29. "GAMER",
  30. "LEET",
  31. "TOP"
  32. }
  33.  
  34. new const LEVELS[ MAX_LEVELS ] = {
  35. 500,
  36. 1200,
  37. 1800,
  38. 2500,
  39. 100000 /* high value (not reachable) */
  40. }
  41.  
  42. enum _:FvaultData {
  43. szSteamID[ 35 ],
  44. szSkillP_Data[ 128 ]
  45. }
  46.  
  47. new g_iK
  48. new const g_ChatAdvertise[ ][ ] = {
  49. "!g%s!n rd be!t /myskill!n, hogy megnzhesd SkillPontjaid.",
  50. "!g%s!n rd be!t /restartskill!n, hogy nullzd a SkillPontjaid s a szinted.",
  51. "!g%s!n rd be!t /rankskill!n, hogy megtekintsd a rankod.",
  52. "!g%s!n rd be!t /topskill!n, hogy megnzd a legjobbak listjt."
  53. }
  54.  
  55. new g_iMaxPlayers
  56. new g_szAuthID[ MAX_PLAYERS + 1 ][ 35 ]
  57. new g_szName[ MAX_PLAYERS + 1 ][ 32 ]
  58. new g_iCurrentKills[ MAX_PLAYERS + 1 ]
  59. new g_szMotd[ 1536 ]
  60.  
  61. new g_iPoints[ MAX_PLAYERS + 1 ]
  62. new g_iLevels[ MAX_PLAYERS + 1 ]
  63. new g_iClasses[ MAX_PLAYERS + 1 ]
  64.  
  65. new g_iKills[ MAX_PLAYERS + 1 ]
  66. new g_iDeaths[ MAX_PLAYERS + 1 ]
  67. new g_iHeadShots[ MAX_PLAYERS + 1 ]
  68. new g_iKnifeKills[ MAX_PLAYERS + 1 ]
  69. new g_iKnifeDeaths[ MAX_PLAYERS + 1 ]
  70. new g_iGrenadeKills[ MAX_PLAYERS + 1 ]
  71. new g_iGrenadeDeaths[ MAX_PLAYERS + 1 ]
  72. new g_iBombExplosions[ MAX_PLAYERS + 1 ]
  73. new g_iDefusedBombs[ MAX_PLAYERS + 1 ]
  74. new g_iWonRounds[ MAX_PLAYERS + 1 ]
  75.  
  76. new g_TimeBetweenAds
  77.  
  78. new bool:g_bRoundEnded
  79.  
  80. new g_iAdsOnChat
  81. new g_iEnableAnnounceOnChat
  82. new g_iEnableShowSkillPointsOnNick
  83. new g_iHideChangeNickNotification
  84. new g_iEnableSkillPointsCmd
  85. new g_iEnableSkillPointsRestart
  86. new g_iEnableSkillPointsCmdRank
  87. new g_iEnableSkillPointsTop15
  88. new g_iHideCmds
  89. new g_iEnableWonPointsHour
  90. new g_iWonPointsHour
  91. new g_iLostPointsTK
  92. new g_iLostPointsSuicide
  93. new g_iWonPointsKill
  94. new g_iLostPointsDeath
  95. new g_iWonPointsHeadshot
  96. new g_iLostPointsHeadshot
  97. new g_iWonPointsKnife
  98. new g_iLostPointsKnife
  99. new g_iWonPointsGrenade
  100. new g_iLostPointsGrenade
  101. new g_iWonPointsTerrorists
  102. new g_iWonPointsCounterTerrorists
  103. new g_iLostPointsTerrorists
  104. new g_iLostPointsCounterTerrorists
  105. new g_iWonPointsPlanter
  106. new g_iWonPointsPlanterExplode
  107. new g_iWonPointsDefuser
  108. new g_iWonPoints4k
  109. new g_iWonPoints5k
  110. new g_iNegativePoints
  111.  
  112. public plugin_init( )
  113. {
  114. register_plugin( PLUGIN, VERSION, AUTHOR )
  115.  
  116. register_clcmd( "say", "ClCmd_Say" )
  117. register_clcmd( "say_team", "ClCmd_Say" )
  118.  
  119. register_concmd("bps_give", "CmdGivePoints", ADMIN, "<target> <skillpoints to give>" )
  120. register_concmd("bps_take", "CmdTakePoints", ADMIN, "<target> <skillpoints to take>" )
  121.  
  122. RegisterHam( Ham_Spawn, "player", "FwdPlayerSpawnPost", 1 )
  123.  
  124. register_message( get_user_msgid( "SayText" ), "MessageSayText" )
  125.  
  126. register_event( "SendAudio", "TerroristsWin", "a", "2&%!MRAD_terwin" )
  127. register_event( "SendAudio", "CounterTerroristsWin", "a", "2&%!MRAD_ctwin" )
  128.  
  129. register_event( "HLTV", "EventNewRound", "a", "1=0", "2=0" )
  130. register_logevent( "RoundEnd", 2, "1=Round_End" )
  131.  
  132. g_iMaxPlayers = get_maxplayers( )
  133.  
  134. RegisterCvars( )
  135. }
  136.  
  137. public plugin_natives( )
  138. {
  139. register_library( "skillpoints" )
  140.  
  141. register_native( "skillpoints", "_skillpoints" )
  142. }
  143.  
  144. public _skillpoints( plugin, params )
  145. {
  146. if( params != 1 )
  147. {
  148. return 0
  149. }
  150.  
  151. new id = get_param( 1 )
  152. if( !id )
  153. {
  154. return 0
  155. }
  156.  
  157. return g_iPoints[ id ]
  158. }
  159.  
  160. public RegisterCvars( )
  161. {
  162. g_iAdsOnChat = register_cvar( "bps_ads", "1" )
  163. g_TimeBetweenAds = register_cvar( "bps_time_between_ads", "300.0" )
  164. g_iEnableAnnounceOnChat = register_cvar( "bps_announce_on_chat", "1" )
  165. g_iEnableShowSkillPointsOnNick = register_cvar( "bps_skillpoints_on_nick", "1" )
  166. g_iHideChangeNickNotification = register_cvar( "bps_hide_change_nick_notification", "1" )
  167. g_iEnableSkillPointsCmd = register_cvar( "bps_skillpoints_cmd", "1" )
  168. g_iEnableSkillPointsRestart = register_cvar( "bps_skillpoints_cmd_restart", "1" )
  169. g_iEnableSkillPointsCmdRank = register_cvar( "bps_skillpoints_cmd_rank", "1" )
  170. g_iEnableSkillPointsTop15 = register_cvar( "bps_skillpoints_cmd_top15", "1" )
  171. g_iHideCmds = register_cvar( "bps_hide_cmd", "0" )
  172. g_iEnableWonPointsHour = register_cvar( "bps_enable_win_per_hour", "1" )
  173. g_iWonPointsHour = register_cvar( "bps_won_points_hour", "5" )
  174. g_iLostPointsTK = register_cvar( "bps_lost_points_tk", "5" )
  175. g_iLostPointsSuicide = register_cvar( "bps_lost_points_suicide", "1" )
  176. g_iWonPointsKill = register_cvar( "bps_won_points_kill", "1" )
  177. g_iLostPointsDeath = register_cvar( "bps_lost_points_kill", "1" )
  178. g_iWonPointsHeadshot = register_cvar( "bps_won_points_headshot", "2" )
  179. g_iLostPointsHeadshot = register_cvar( "bps_lost_points_headshot", "2" )
  180. g_iWonPointsKnife = register_cvar( "bps_won_points_knife", "3" )
  181. g_iLostPointsKnife = register_cvar( "bps_lost_points_knife", "3" )
  182. g_iWonPointsGrenade = register_cvar( "bps_won_points_grenade", "3" )
  183. g_iLostPointsGrenade = register_cvar( "bps_lost_points_grenade", "3" )
  184. g_iWonPointsTerrorists = register_cvar( "bps_won_points_ts", "1" )
  185. g_iWonPointsCounterTerrorists = register_cvar( "bps_won_points_cts", "1" )
  186. g_iLostPointsTerrorists = register_cvar( "bps_lost_points_ts", "1" )
  187. g_iLostPointsCounterTerrorists = register_cvar( "bps_lost_points_cts", "1" )
  188. g_iWonPointsPlanter = register_cvar( "bps_won_points_planter", "1" )
  189. g_iWonPointsPlanterExplode = register_cvar( "bps_won_points_planter_explode", "2" )
  190. g_iWonPointsDefuser = register_cvar( "bps_won_points_defuser", "3" )
  191. g_iWonPoints4k = register_cvar( "bps_won_points_4k", "4" )
  192. g_iWonPoints5k = register_cvar( "bps_won_points_5k", "5" )
  193. g_iNegativePoints = register_cvar( "bps_negative_points", "0" )
  194.  
  195. if( get_pcvar_num( g_iAdsOnChat ) )
  196. {
  197. set_task( get_pcvar_float( g_TimeBetweenAds ), "ChatAdvertisements", _, _, _, "b" )
  198. }
  199.  
  200. fvault_prune( g_VaultSkillPoints, _, get_systime( ) - ( 86400 * EXPIREDAYS ) )
  201.  
  202. MakeTop15( )
  203. }
  204.  
  205. public client_authorized( id )
  206. {
  207. get_user_authid( id , g_szAuthID[ id ], charsmax( g_szAuthID[ ] ) )
  208. get_user_info( id, "name", g_szName[ id ], charsmax( g_szName[ ] ) )
  209.  
  210. fvault_set_data( g_VaultNames, g_szAuthID[ id ], g_szName[ id ] )
  211.  
  212. g_iPoints[ id ] = 0
  213. g_iLevels[ id ] = 0
  214. g_iClasses[ id ] = 0
  215.  
  216. g_iKills[ id ] = 0
  217. g_iDeaths[ id ] = 0
  218. g_iHeadShots[ id ] = 0
  219. g_iKnifeKills[ id ] = 0
  220. g_iKnifeDeaths[ id ] = 0
  221. g_iGrenadeKills[ id ] = 0
  222. g_iGrenadeDeaths[ id ] = 0
  223. g_iBombExplosions[ id ] = 0
  224. g_iDefusedBombs[ id ] = 0
  225. g_iWonRounds[ id ] = 0
  226.  
  227. g_iCurrentKills[ id ] = 0
  228.  
  229. LoadPoints( id )
  230.  
  231. if( get_pcvar_num( g_iEnableWonPointsHour ) && get_pcvar_num( g_iWonPointsHour ) )
  232. {
  233. set_task( 3600.0, "GiveSkillPointsHour", id, _, _, "b" )
  234. }
  235. }
  236.  
  237. public client_infochanged( id )
  238. {
  239. if( is_user_connected( id ) )
  240. {
  241. new szNewName[ 32 ]
  242. get_user_info( id, "name", szNewName, charsmax( szNewName ) )
  243.  
  244. new iLen = strlen( szNewName )
  245.  
  246. new iPos = iLen - 1
  247.  
  248. if( szNewName[ iPos ] == '>' )
  249. {
  250. new i
  251. for( i = 1; i < 7; i++ )
  252. {
  253. if( szNewName[ iPos - i ] == '<' )
  254. {
  255. iLen = iPos - i
  256. szNewName[ iLen ] = EOS
  257. break
  258. }
  259. }
  260. }
  261.  
  262. trim( szNewName )
  263.  
  264. if( !equal( g_szName[ id ], szNewName ) )
  265. {
  266. copy( g_szName[ id ], charsmax( g_szName[ ] ), szNewName )
  267.  
  268. fvault_set_data( g_VaultNames, g_szAuthID[ id ], g_szName[ id ] )
  269. }
  270. }
  271. }
  272.  
  273. public client_disconnect( id )
  274. {
  275. if( task_exists( id ) )
  276. {
  277. remove_task( id )
  278. }
  279.  
  280. CheckLevelAndSave( id )
  281. }
  282.  
  283. public ClCmd_Say( id )
  284. {
  285. new szCmd[ 12 ]
  286. read_argv( 1, szCmd, charsmax( szCmd ) )
  287.  
  288. if( equali( szCmd[ 1 ], "myskill" ) )
  289. {
  290. GetSkillPoints( id )
  291. }
  292.  
  293. else if( equali( szCmd[ 1 ], "restartskill" ) )
  294. {
  295. RestartSkillPoints( id )
  296. }
  297.  
  298. else if( equali( szCmd[ 1 ], "rankskill" ) )
  299. {
  300. SkillRank( id )
  301. }
  302.  
  303. else if( equali( szCmd[ 1 ], "topskill" ) )
  304. {
  305. TopSkill( id )
  306. }
  307. }
  308.  
  309. public GiveSkillPointsHour( id )
  310. {
  311. g_iPoints[ id ] += get_pcvar_num( g_iWonPointsHour )
  312.  
  313. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  314. {
  315. ClientPrintColor( id, "!g%s!n Kaptl!t %i!n pontot%s , mert mg egy rt jtszottl.", PREFIX, get_pcvar_num( g_iWonPointsHour ), get_pcvar_num( g_iWonPointsHour ) > 1 ? "s" : "" )
  316. }
  317. }
  318.  
  319. public client_death( iKiller, iVictim, iWpnIndex, iHitPlace, iTK )
  320. {
  321. if( !IsPlayer( iKiller ) || !IsPlayer( iVictim ) )
  322. {
  323. return PLUGIN_CONTINUE
  324. }
  325.  
  326. if( iTK )
  327. {
  328. g_iPoints[ iKiller ] -= get_pcvar_num( g_iLostPointsTK )
  329.  
  330. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iLostPointsTK ) )
  331. {
  332. ClientPrintColor( iKiller, "!g%s!n !t %i!n pontot vesztettl%s , mert meglted egy csapattrsad.", PREFIX, get_pcvar_num( g_iLostPointsTK ), get_pcvar_num( g_iLostPointsTK ) > 1 ? "s" : "" )
  333. }
  334.  
  335. return PLUGIN_CONTINUE
  336. }
  337.  
  338. if( iKiller == iVictim )
  339. {
  340. g_iPoints[ iKiller ] -= get_pcvar_num( g_iLostPointsSuicide )
  341.  
  342. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iLostPointsSuicide ) )
  343. {
  344. ClientPrintColor( iKiller, "!g%s!n !t %i!n pontot vesztettl%s , mert ngyilkos lettl.", PREFIX, get_pcvar_num( g_iLostPointsSuicide ), get_pcvar_num( g_iLostPointsSuicide ) > 1 ? "s" : "" )
  345. }
  346.  
  347. g_iDeaths[ iKiller ]++
  348.  
  349. return PLUGIN_CONTINUE
  350. }
  351.  
  352. g_iCurrentKills[ iKiller ]++
  353. g_iKills[ iKiller ]++
  354.  
  355. g_iDeaths[ iVictim ]++
  356.  
  357. if( iWpnIndex == CSW_HEGRENADE )
  358. {
  359. g_iPoints[ iKiller ] += get_pcvar_num( g_iWonPointsGrenade )
  360. g_iGrenadeKills[ iKiller]++
  361.  
  362. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iWonPointsGrenade ) )
  363. {
  364. ClientPrintColor( iKiller, "!g%s!n Kaptl!t %i!n pontot%s , mert %s -t grnttal lted meg.", PREFIX, get_pcvar_num( g_iWonPointsGrenade ), get_pcvar_num( g_iWonPointsGrenade ) > 1 ? "s" : "" ,g_szName[ iVictim ] )
  365. }
  366.  
  367. g_iPoints[ iVictim ] -= get_pcvar_num( g_iLostPointsGrenade )
  368. g_iGrenadeDeaths[ iVictim ]++
  369.  
  370. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iLostPointsGrenade ) )
  371. {
  372. ClientPrintColor( iVictim, "!g%s!n !t %i!n pontot vesztettl%s , mert grnt ltal haltl meg.", PREFIX, get_pcvar_num( g_iLostPointsGrenade ), get_pcvar_num( g_iLostPointsGrenade ) > 1 ? "s" : "" )
  373. }
  374.  
  375. return PLUGIN_CONTINUE
  376. }
  377.  
  378. if( iWpnIndex == CSW_KNIFE )
  379. {
  380. g_iPoints[ iKiller ] += get_pcvar_num( g_iWonPointsKnife )
  381. g_iKnifeKills[ iKiller ]++
  382.  
  383. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iWonPointsKnife ) )
  384. {
  385. ClientPrintColor( iKiller, "!g%s!n Kaptl!t %i!n pontot%s , mert %s -t kssel lted meg.", PREFIX, get_pcvar_num( g_iWonPointsKnife ), get_pcvar_num( g_iWonPointsKnife ) > 1 ? "s" : "" ,g_szName[ iVictim ] )
  386. }
  387.  
  388. g_iPoints[ iVictim ] -= get_pcvar_num( g_iLostPointsKnife )
  389. g_iKnifeDeaths[ iVictim ]++
  390.  
  391. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iLostPointsKnife ) )
  392. {
  393. ClientPrintColor( iVictim, "!g%s!n !t %i!n pontot vesztettl%s , mert kssel ltek meg.", PREFIX, get_pcvar_num( g_iLostPointsKnife ), get_pcvar_num( g_iLostPointsKnife ) > 1 ? "s" : "" )
  394. }
  395.  
  396. return PLUGIN_CONTINUE
  397. }
  398.  
  399. if( iHitPlace == HIT_HEAD )
  400. {
  401. g_iPoints[ iKiller ] += get_pcvar_num( g_iWonPointsHeadshot )
  402. g_iHeadShots[ iKiller ]++
  403.  
  404. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iWonPointsHeadshot ) )
  405. {
  406. ClientPrintColor( iKiller, "!g%s!n Kaptl!t %i!n pontot%s , mert meglted %s -t egy HS-sel.", PREFIX, get_pcvar_num( g_iWonPointsHeadshot ), get_pcvar_num( g_iWonPointsHeadshot ) > 1 ? "s" : "" ,g_szName[ iVictim ] )
  407. }
  408.  
  409. g_iPoints[ iVictim ] -= get_pcvar_num( g_iLostPointsHeadshot )
  410.  
  411. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iLostPointsHeadshot ) )
  412. {
  413. ClientPrintColor( iVictim, "!g%s!n !t %i!n pontot vesztettl%s , mert HS ltal haltl meg.", PREFIX, get_pcvar_num( g_iLostPointsHeadshot ), get_pcvar_num( g_iLostPointsHeadshot ) > 1 ? "s" : "" )
  414. }
  415.  
  416. return PLUGIN_CONTINUE
  417. }
  418.  
  419. g_iPoints[ iKiller ] += get_pcvar_num( g_iWonPointsKill )
  420.  
  421. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iWonPointsKill ) )
  422. {
  423. ClientPrintColor( iKiller, "!g%s!n Kaptl!t %i!n pontot%s , mert meglted %s -t.", PREFIX, get_pcvar_num( g_iWonPointsKill ), get_pcvar_num( g_iWonPointsKill ) > 1 ? "s" : "", g_szName[ iVictim ] )
  424. }
  425.  
  426. g_iPoints[ iVictim ] -= get_pcvar_num( g_iLostPointsDeath )
  427.  
  428. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iLostPointsDeath ) )
  429. {
  430. ClientPrintColor( iVictim, "!g%s!n !t %i!n pontot vesztettel%s , mert meghaltl.", PREFIX, get_pcvar_num( g_iLostPointsDeath ), get_pcvar_num( g_iLostPointsDeath ) > 1 ? "s" : "" )
  431. }
  432.  
  433. return PLUGIN_CONTINUE
  434. }
  435.  
  436. public TerroristsWin( )
  437. {
  438. if( g_bRoundEnded )
  439. {
  440. return PLUGIN_CONTINUE
  441. }
  442.  
  443. new Players[ MAX_PLAYERS ]
  444. new iNum
  445. new i
  446.  
  447. get_players( Players, iNum, "ch" )
  448.  
  449. for( --iNum; iNum >= 0; iNum-- )
  450. {
  451. i = Players[ iNum ]
  452.  
  453. switch( cs_get_user_team( i ) )
  454. {
  455. case( CS_TEAM_T ):
  456. {
  457. if( get_pcvar_num( g_iWonPointsTerrorists ) )
  458. {
  459. g_iPoints[ i ] += get_pcvar_num( g_iWonPointsTerrorists )
  460. g_iWonRounds[ i ]++
  461.  
  462. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  463. {
  464. ClientPrintColor( i, "!g%s!n A csapatod!t (T)!n nyert!t %i!n pont%s a kr megnyersrt.", PREFIX, get_pcvar_num( g_iWonPointsTerrorists ), get_pcvar_num( g_iWonPointsTerrorists ) > 1 ? "s" : "" )
  465. }
  466. }
  467. }
  468.  
  469. case( CS_TEAM_CT ):
  470. {
  471. if( get_pcvar_num( g_iLostPointsCounterTerrorists ) )
  472. {
  473. g_iPoints[ i ] -= get_pcvar_num( g_iLostPointsCounterTerrorists )
  474.  
  475. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  476. {
  477. ClientPrintColor( i, "!g%s!n A csapatod!t (CT)!n vesztett!t %i!n pont%s a kr elvesztsrt.", PREFIX, get_pcvar_num( g_iLostPointsCounterTerrorists ), get_pcvar_num( g_iLostPointsCounterTerrorists ) > 1 ? "s" : "" )
  478. }
  479. }
  480. }
  481. }
  482. }
  483.  
  484. g_bRoundEnded = true
  485.  
  486. return PLUGIN_CONTINUE
  487. }
  488.  
  489. public CounterTerroristsWin( )
  490. {
  491. if( g_bRoundEnded )
  492. {
  493. return PLUGIN_CONTINUE
  494. }
  495.  
  496. new Players[ MAX_PLAYERS ]
  497. new iNum
  498. new i
  499.  
  500. get_players( Players, iNum, "ch" )
  501.  
  502. for( --iNum; iNum >= 0; iNum-- )
  503. {
  504. i = Players[ iNum ]
  505.  
  506. switch( cs_get_user_team( i ) )
  507. {
  508. case( CS_TEAM_T ):
  509. {
  510. if( get_pcvar_num( g_iLostPointsTerrorists ) )
  511. {
  512. g_iPoints[ i ] -= get_pcvar_num( g_iLostPointsTerrorists )
  513.  
  514. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  515. {
  516. ClientPrintColor( i, "!g%s!n A csapatod!t (T)!n vesztett!t %i!n pont%s a kr elvesztsrt.", PREFIX, get_pcvar_num( g_iLostPointsTerrorists ), get_pcvar_num( g_iLostPointsTerrorists ) > 1 ? "s" : "" )
  517. }
  518. }
  519. }
  520.  
  521. case( CS_TEAM_CT ):
  522. {
  523. if( get_pcvar_num( g_iWonPointsCounterTerrorists ) )
  524. {
  525. g_iPoints[ i ] += get_pcvar_num( g_iWonPointsCounterTerrorists )
  526. g_iWonRounds[ i ]++
  527.  
  528. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  529. {
  530. ClientPrintColor( i, "!g%s!n A csapatod!t (CT)!n nyert!t %i!n pont%s a kr megnyersrt.", PREFIX, get_pcvar_num( g_iWonPointsCounterTerrorists ), get_pcvar_num( g_iWonPointsCounterTerrorists ) > 1 ? "s" : "" )
  531. }
  532. }
  533. }
  534. }
  535. }
  536.  
  537. g_bRoundEnded = true
  538.  
  539. return PLUGIN_CONTINUE
  540. }
  541.  
  542. public bomb_planted( planter )
  543. {
  544. if( get_pcvar_num( g_iWonPointsPlanter ) )
  545. {
  546. g_iPoints[ planter ] += get_pcvar_num( g_iWonPointsPlanter )
  547.  
  548. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  549. {
  550. ClientPrintColor( planter, "!g%s!n Kaptl!t %i!n pontot%s a bomba idztsrt.", PREFIX, get_pcvar_num( g_iWonPointsPlanter ), get_pcvar_num( g_iWonPointsPlanter ) > 1 ? "s" : "" )
  551. }
  552. }
  553. }
  554.  
  555. public bomb_explode( planter, defuser )
  556. {
  557. if( get_pcvar_num( g_iWonPointsPlanterExplode ) )
  558. {
  559. g_iPoints[ planter ] += get_pcvar_num( g_iWonPointsPlanterExplode )
  560. g_iBombExplosions[ planter ]++
  561.  
  562. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  563. {
  564. ClientPrintColor( planter, "!g%s!n Kaptl!t %i!n pontot%s a bomba felrobbantsrt.", PREFIX, get_pcvar_num( g_iWonPointsPlanterExplode ), get_pcvar_num( g_iWonPointsPlanterExplode ) > 1 ? "s" : "" )
  565. }
  566. }
  567. }
  568.  
  569. public bomb_defused( defuser )
  570. {
  571. if( get_pcvar_num( g_iWonPointsDefuser ) )
  572. {
  573. g_iPoints[ defuser ] += get_pcvar_num( g_iWonPointsDefuser )
  574. g_iDefusedBombs[ defuser ]++
  575.  
  576. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  577. {
  578. ClientPrintColor( defuser, "!g%s!n Kaptl!t %i!n pontot%s a bomba hatstalantsrt.", PREFIX, get_pcvar_num( g_iWonPointsDefuser ), get_pcvar_num( g_iWonPointsDefuser ) > 1 ? "s" : "" )
  579. }
  580. }
  581. }
  582.  
  583. public EventNewRound( )
  584. {
  585. g_bRoundEnded = false
  586.  
  587. MakeTop15( )
  588. }
  589.  
  590.  
  591. public RoundEnd( )
  592. {
  593. set_task( 0.5, "SavePointsAtRoundEnd" )
  594. }
  595.  
  596. public SavePointsAtRoundEnd( )
  597. {
  598. new Players[ MAX_PLAYERS ]
  599. new iNum
  600. new i
  601.  
  602. get_players( Players, iNum, "ch" )
  603.  
  604. for( --iNum; iNum >= 0; iNum-- )
  605. {
  606. i = Players[ iNum ]
  607.  
  608. if( g_iCurrentKills[ i ] == 4 && get_pcvar_num( g_iWonPoints4k ) )
  609. {
  610. g_iPoints[ i ] += get_pcvar_num( g_iWonPoints4k )
  611.  
  612. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  613. {
  614. ClientPrintColor( i, "!g%s!n Kaptl!t %i!n pontot%s , mert ngyet ltl ebben a krben.", PREFIX, get_pcvar_num( g_iWonPoints4k ), get_pcvar_num( g_iWonPoints4k ) > 1 ? "s" : "" )
  615. }
  616. }
  617.  
  618. if( g_iCurrentKills[ i ] >= 5 && get_pcvar_num( g_iWonPoints5k ) )
  619. {
  620. g_iPoints[ i ] += get_pcvar_num( g_iWonPoints5k )
  621.  
  622. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  623. {
  624. ClientPrintColor( i, "!g%s!n Kaptl!t %i!n pontot%s , mert tt ltl ebben a krben.", PREFIX, get_pcvar_num( g_iWonPoints5k ), get_pcvar_num( g_iWonPoints5k ) > 1 ? "s" : "" )
  625. }
  626. }
  627.  
  628. CheckLevelAndSave( i )
  629. }
  630. }
  631.  
  632. public CheckLevelAndSave( id )
  633. {
  634. if( !get_pcvar_num( g_iNegativePoints) )
  635. {
  636. if( g_iPoints[ id ] < 0 )
  637. {
  638. g_iPoints[ id ] = 0
  639. }
  640.  
  641. if( g_iLevels[ id ] < 0 )
  642. {
  643. g_iLevels[ id ] = 0
  644. }
  645. }
  646.  
  647. while( g_iPoints[ id ] >= LEVELS[ g_iLevels[ id ] ] )
  648. {
  649. g_iLevels[ id ]++
  650. g_iClasses[ id ]++
  651.  
  652. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  653. {
  654. ClientPrintColor( 0, "!g%s!n %s Szintet lptl! Szinted:!t %s!n sszes pontod:!t %d", PREFIX, g_szName[ id ], CLASSES[ g_iLevels[ id ] ], g_iPoints[ id ] )
  655. }
  656. }
  657.  
  658. new szFormattedData[ 128 ]
  659. formatex( szFormattedData, charsmax( szFormattedData ),
  660. "%i %i %i %i %i %i %i %i %i %i %i %i",
  661.  
  662. g_iPoints[ id ],
  663. g_iLevels[ id ],
  664.  
  665. g_iKills[ id ],
  666. g_iDeaths[ id ],
  667. g_iHeadShots[ id ],
  668. g_iKnifeKills[ id ],
  669. g_iKnifeDeaths[ id ],
  670. g_iGrenadeKills[ id ],
  671. g_iGrenadeDeaths[ id ],
  672. g_iBombExplosions[ id ],
  673. g_iDefusedBombs[ id ],
  674. g_iWonRounds[ id ] )
  675.  
  676. fvault_set_data( g_VaultSkillPoints, g_szAuthID[ id ], szFormattedData )
  677.  
  678. if( g_iPoints[ id ] >= MAX_PONTUATION )
  679. {
  680. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  681. {
  682. ClientPrintColor( id, "!g%s!n Elrted a maxmilis SkillPont szmot! Pontjaid s szinted nullzdik.", PREFIX )
  683. }
  684.  
  685. g_iPoints[ id ] = 0
  686. g_iLevels[ id ] = 0
  687. g_iClasses[ id ] = 0
  688.  
  689. g_iKills[ id ] = 0
  690. g_iDeaths[ id ] = 0
  691. g_iHeadShots[ id ] = 0
  692. g_iKnifeKills[ id ] = 0
  693. g_iKnifeDeaths[ id ] = 0
  694. g_iGrenadeKills[ id ] = 0
  695. g_iGrenadeDeaths[ id ] = 0
  696. g_iBombExplosions[ id ] = 0
  697. g_iDefusedBombs[ id ] = 0
  698. g_iWonRounds[ id ] = 0
  699.  
  700. CheckLevelAndSave( id )
  701. }
  702. }
  703.  
  704. public LoadPoints( id )
  705. {
  706. new szFormattedData[ 128 ]
  707. if( fvault_get_data( g_VaultSkillPoints, g_szAuthID[ id ], szFormattedData, charsmax( szFormattedData ) ) )
  708. {
  709. new szPlayerPoints[ 7 ]
  710. new szPlayerLevel[ 7 ]
  711.  
  712. new szPlayerKills[ 7 ]
  713. new szPlayerDeahts[ 7 ]
  714. new szPlayerHeadShots[ 7 ]
  715. new szPlayerKnifeKills[ 7 ]
  716. new szPlayerKnifeDeaths[ 7 ]
  717. new szPlayerGrenadeKills[ 7 ]
  718. new szPlayerGrenadeDeaths[ 7 ]
  719. new szPlayerBombExplosions[ 7 ]
  720. new szPlayerDefusedBombs[ 7 ]
  721. new szPlayerWonRounds[ 7 ]
  722.  
  723. parse( szFormattedData,
  724. szPlayerPoints, charsmax( szPlayerPoints ),
  725. szPlayerLevel, charsmax( szPlayerLevel ),
  726.  
  727. szPlayerKills, charsmax( szPlayerKills ),
  728. szPlayerDeahts, charsmax( szPlayerDeahts ),
  729. szPlayerHeadShots, charsmax( szPlayerHeadShots ),
  730. szPlayerKnifeKills, charsmax( szPlayerKnifeKills ),
  731. szPlayerKnifeDeaths, charsmax( szPlayerKnifeDeaths ),
  732. szPlayerGrenadeKills, charsmax( szPlayerGrenadeKills ),
  733. szPlayerGrenadeDeaths, charsmax( szPlayerGrenadeDeaths ),
  734. szPlayerBombExplosions, charsmax( szPlayerBombExplosions ),
  735. szPlayerDefusedBombs, charsmax( szPlayerDefusedBombs ),
  736. szPlayerWonRounds, charsmax( szPlayerWonRounds ) )
  737.  
  738. g_iPoints[ id ] = str_to_num( szPlayerPoints )
  739. g_iLevels[ id ] = str_to_num( szPlayerLevel )
  740.  
  741. g_iKills[ id ] = str_to_num( szPlayerKills )
  742. g_iDeaths[ id ] = str_to_num( szPlayerDeahts )
  743. g_iHeadShots[ id ] = str_to_num( szPlayerHeadShots )
  744. g_iKnifeKills[ id ] = str_to_num( szPlayerKnifeKills )
  745. g_iKnifeDeaths[ id ] = str_to_num( szPlayerKnifeDeaths )
  746. g_iGrenadeKills[ id ] = str_to_num( szPlayerGrenadeKills )
  747. g_iGrenadeDeaths[ id ] = str_to_num( szPlayerGrenadeDeaths )
  748. g_iBombExplosions[ id ] = str_to_num( szPlayerBombExplosions )
  749. g_iDefusedBombs[ id ] = str_to_num( szPlayerDefusedBombs )
  750. g_iWonRounds[ id ] = str_to_num( szPlayerWonRounds )
  751.  
  752. }
  753. }
  754.  
  755. public GetSkillPoints( id )
  756. {
  757. if( !get_pcvar_num( g_iEnableSkillPointsCmd ) )
  758. {
  759. ClientPrintColor( id, "!g%s!n Ez a parancs nincs engedlyezve", PREFIX )
  760. }
  761.  
  762. else
  763. {
  764. if( g_iLevels[ id ] < ( MAX_LEVELS - 1 ) )
  765. {
  766. ClientPrintColor( id, "!g%s!n sszes pontod:!t %d!n Szinted:!t %s!n Kvetkez szinthez szksges pontok:!t %d", PREFIX, g_iPoints[ id ], CLASSES[ g_iLevels[ id ] ], ( LEVELS[ g_iLevels[ id ] ] - g_iPoints[ id ] ) )
  767. }
  768.  
  769. else
  770. {
  771. ClientPrintColor( id, "!g%s!n sszes pontod:!t %d!n Szinted:!t %s!n (Az utols szint)", PREFIX, g_iPoints[ id ], CLASSES[ g_iLevels[ id ] ] )
  772. }
  773. }
  774.  
  775. return ( get_pcvar_num( g_iHideCmds ) == 0 ) ? PLUGIN_CONTINUE : PLUGIN_HANDLED_MAIN
  776. }
  777.  
  778. public ChatAdvertisements( )
  779. {
  780. new Players[ MAX_PLAYERS ]
  781. new iNum
  782. new i
  783.  
  784. get_players( Players, iNum, "ch" )
  785.  
  786. for( --iNum; iNum >= 0; iNum-- )
  787. {
  788. i = Players[ iNum ]
  789.  
  790. ClientPrintColor( i, g_ChatAdvertise[ g_iK ], PREFIX )
  791. }
  792.  
  793. g_iK++
  794.  
  795. if( g_iK >= sizeof g_ChatAdvertise )
  796. {
  797. g_iK = 0
  798. }
  799. }
  800.  
  801. public CmdGivePoints( id, level, cid )
  802. {
  803. if ( !cmd_access( id, level, cid, 3 ) )
  804. {
  805. return PLUGIN_HANDLED
  806. }
  807.  
  808. new Arg1[ 32 ]
  809. new Arg2[ 6 ]
  810.  
  811. read_argv( 1, Arg1, charsmax( Arg1 ) )
  812. read_argv( 2, Arg2, charsmax( Arg2 ) )
  813.  
  814. new iPlayer = cmd_target( id, Arg1, 1 )
  815. new iPoints = str_to_num( Arg2 )
  816.  
  817. if ( !iPlayer )
  818. {
  819. console_print( id, "Sajnlom, de %s nem tallhat!", Arg1 )
  820. return PLUGIN_HANDLED
  821. }
  822.  
  823. if( iPoints > 0 )
  824. {
  825. g_iPoints[ iPlayer ] += iPoints
  826. CheckLevelAndSave( iPlayer )
  827.  
  828. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  829. {
  830. ClientPrintColor( 0, "!g%s!n %s adott!t %i!n SkillPontot%s %s -nak/-nek", PREFIX, g_szName[ id ], iPoints, iPoints > 1 ? "s" : "", g_szName[ iPlayer ] )
  831. }
  832. }
  833.  
  834. return PLUGIN_HANDLED
  835. }
  836.  
  837. public CmdTakePoints( id, level, cid )
  838. {
  839. if ( !cmd_access( id, level, cid, 3 ) )
  840. {
  841. return PLUGIN_HANDLED
  842. }
  843.  
  844. new Arg1[ 32 ]
  845. new Arg2[ 6 ]
  846.  
  847. read_argv( 1, Arg1, charsmax( Arg1 ) )
  848. read_argv( 2, Arg2, charsmax( Arg2 ) )
  849.  
  850. new iPlayer = cmd_target( id, Arg1, 1 )
  851. new iPoints = str_to_num( Arg2 )
  852.  
  853. if ( !iPlayer )
  854. {
  855. console_print( id, "Sajnlom, de %s nem tallhat!", Arg1 )
  856. return PLUGIN_HANDLED
  857. }
  858.  
  859. if( iPoints > 0 )
  860. {
  861. g_iPoints[ iPlayer ] -= iPoints
  862. CheckLevelAndSave( iPlayer )
  863.  
  864. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  865. {
  866. ClientPrintColor( 0, "!g%s!n %s elvett!t %i!n SkillPontot%s %s -tl/-tl", PREFIX, g_szName[ id ], iPoints, iPoints > 1 ? "s" : "", g_szName[ iPlayer ] )
  867. }
  868. }
  869.  
  870. return PLUGIN_HANDLED
  871. }
  872.  
  873. public RestartSkillPoints( id )
  874. {
  875. if( !get_pcvar_num( g_iEnableSkillPointsRestart ) )
  876. {
  877. ClientPrintColor( id, "!g%s!n Ez a parancs nincs engedlyezve", PREFIX )
  878. }
  879.  
  880. else
  881. {
  882. g_iPoints[ id ] = 0
  883. g_iLevels[ id ] = 0
  884. g_iClasses[ id ] = 0
  885.  
  886. g_iKills[ id ] = 0
  887. g_iDeaths[ id ] = 0
  888. g_iHeadShots[ id ] = 0
  889. g_iKnifeKills[ id ] = 0
  890. g_iKnifeDeaths[ id ] = 0
  891. g_iGrenadeKills[ id ] = 0
  892. g_iGrenadeDeaths[ id ] = 0
  893. g_iBombExplosions[ id ] = 0
  894. g_iDefusedBombs[ id ] = 0
  895. g_iWonRounds[ id ] = 0
  896.  
  897. CheckLevelAndSave( id )
  898.  
  899. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  900. {
  901. ClientPrintColor( id, "!g%s!n SkillPontjaid s szinted nullzdtak.", PREFIX )
  902. }
  903. }
  904.  
  905. return ( get_pcvar_num( g_iHideCmds ) == 0 ) ? PLUGIN_CONTINUE : PLUGIN_HANDLED_MAIN
  906. }
  907.  
  908. public SkillRank( id )
  909. {
  910. if( !get_pcvar_num( g_iEnableSkillPointsCmdRank ) )
  911. {
  912. ClientPrintColor( id, "!g%s!n Ez a parancs nincs engedlyezve", PREFIX )
  913. }
  914.  
  915. else
  916. {
  917. new Array:aKey = ArrayCreate( 35 )
  918. new Array:aData = ArrayCreate( 128 )
  919. new Array:aAll = ArrayCreate( FvaultData )
  920.  
  921. fvault_load( g_VaultSkillPoints, aKey, aData )
  922.  
  923. new iArraySize = ArraySize( aKey )
  924.  
  925. new Data[ FvaultData ]
  926.  
  927. new i
  928. for( i = 0; i < iArraySize; i++ )
  929. {
  930. ArrayGetString( aKey, i, Data[ szSteamID ], sizeof Data[ szSteamID ] - 1 )
  931. ArrayGetString( aData, i, Data[ szSkillP_Data ], sizeof Data[ szSkillP_Data ] - 1 )
  932.  
  933. ArrayPushArray( aAll, Data )
  934. }
  935.  
  936. ArraySort( aAll, "SortData" )
  937.  
  938. new szAuthIdFromArray[ 35 ]
  939.  
  940. new j
  941. for( j = 0; j < iArraySize; j++ )
  942. {
  943. ArrayGetString( aAll, j, szAuthIdFromArray, charsmax( szAuthIdFromArray ) )
  944.  
  945. if( equal( szAuthIdFromArray, g_szAuthID[ id ] ) )
  946. {
  947. break
  948. }
  949. }
  950.  
  951. ArrayDestroy( aKey )
  952. ArrayDestroy( aData )
  953. ArrayDestroy( aAll )
  954.  
  955. ClientPrintColor( id, "!g%s!n A rankod!t %i!n a!t %i!n -bl!t %i!n ponttal.", PREFIX, j + 1, iArraySize, g_iPoints[ id ] )
  956. }
  957.  
  958. return ( get_pcvar_num( g_iHideCmds ) == 0 ) ? PLUGIN_CONTINUE : PLUGIN_HANDLED_MAIN
  959. }
  960.  
  961. public TopSkill( id )
  962. {
  963. if( !get_pcvar_num( g_iEnableSkillPointsTop15 ) )
  964. {
  965. ClientPrintColor( id, "!g%s!n Ez a parancs nincs engedlyezve", PREFIX )
  966. }
  967.  
  968. else
  969. {
  970. show_motd( id, g_szMotd, "Top SkillPointers" )
  971. }
  972.  
  973. return ( get_pcvar_num( g_iHideCmds ) == 0 ) ? PLUGIN_CONTINUE : PLUGIN_HANDLED_MAIN
  974. }
  975.  
  976. public MakeTop15( )
  977. {
  978. new iLen
  979. iLen = formatex( g_szMotd, charsmax( g_szMotd ),
  980. "<body bgcolor=#A4BED6>\
  981. <table width=100%% cellpadding=2 cellspacing=0 border=0>\
  982. <tr align=center bgcolor=#52697B>\
  983. <th width=4%%>#\
  984. <th width=30%% align=left>Jtkos\
  985. <th width=8%%>lsek\
  986. <th width=8%%>Hallok\
  987. <th width=8%%>HS-ek\
  988. <th width=8%%>Ks lsek\
  989. <th width=8%%>Grnt lsek\
  990. <th width=8%%>Bomba plantok\
  991. <th width=8%%>Defuse-ok\
  992. <th width=10%>SkillPontok" )
  993.  
  994. new Array:aKey = ArrayCreate( 35 )
  995. new Array:aData = ArrayCreate( 128 )
  996. new Array:aAll = ArrayCreate( FvaultData )
  997.  
  998. fvault_load( g_VaultSkillPoints, aKey, aData )
  999.  
  1000. new iArraySize = ArraySize( aKey )
  1001.  
  1002. new Data[ FvaultData ]
  1003.  
  1004. new i
  1005. for( i = 0; i < iArraySize; i++ )
  1006. {
  1007. ArrayGetString( aKey, i, Data[ szSteamID ], sizeof Data[ szSteamID ] - 1 )
  1008. ArrayGetString( aData, i, Data[ szSkillP_Data ], sizeof Data[ szSkillP_Data ] - 1 )
  1009.  
  1010. ArrayPushArray( aAll, Data )
  1011. }
  1012.  
  1013. ArraySort( aAll, "SortData" )
  1014.  
  1015. new szPlayerPoints[ 7 ]
  1016. new szPlayerLevel[ 7 ]
  1017.  
  1018. new szPlayerKills[ 7 ]
  1019. new szPlayerDeahts[ 7 ]
  1020. new szPlayerHeadShots[ 7 ]
  1021. new szPlayerKnifeKills[ 7 ]
  1022. new szPlayerKnifeDeaths[ 7 ]
  1023. new szPlayerGrenadeKills[ 7 ]
  1024. new szPlayerGrenadeDeaths[ 7 ]
  1025. new szPlayerBombExplosions[ 7 ]
  1026. new szPlayerDefusedBombs[ 7 ]
  1027. new szPlayerWonRounds[ 7 ]
  1028.  
  1029. new szName[ 22 ]
  1030. new iSize = clamp( iArraySize, 0, 10 )
  1031.  
  1032. new j
  1033. for( j = 0; j < iSize; j++ )
  1034. {
  1035. ArrayGetArray( aAll, j, Data )
  1036.  
  1037. fvault_get_data( g_VaultNames, Data[ szSteamID ], szName, charsmax( szName ) )
  1038.  
  1039. replace_all( szName, charsmax( szName ), "<", "[" )
  1040. replace_all( szName, charsmax( szName ), ">", "]" )
  1041.  
  1042. parse( Data[ szSkillP_Data ],
  1043. szPlayerPoints, charsmax( szPlayerPoints ),
  1044. szPlayerLevel, charsmax( szPlayerLevel ),
  1045.  
  1046. szPlayerKills, charsmax( szPlayerKills ),
  1047. szPlayerDeahts, charsmax( szPlayerDeahts ),
  1048. szPlayerHeadShots, charsmax( szPlayerHeadShots ),
  1049. szPlayerKnifeKills, charsmax( szPlayerKnifeKills ),
  1050. szPlayerKnifeDeaths, charsmax( szPlayerKnifeDeaths ),
  1051. szPlayerGrenadeKills, charsmax( szPlayerGrenadeKills ),
  1052. szPlayerGrenadeDeaths, charsmax( szPlayerGrenadeDeaths ),
  1053. szPlayerBombExplosions, charsmax( szPlayerBombExplosions ),
  1054. szPlayerDefusedBombs, charsmax( szPlayerDefusedBombs ),
  1055. szPlayerWonRounds, charsmax( szPlayerWonRounds ) )
  1056.  
  1057. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<tr align=center>" )
  1058. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%i", j + 1 )
  1059. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td align=left>%s", szName )
  1060. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerKills )
  1061. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerDeahts )
  1062. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerHeadShots )
  1063. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerKnifeKills )
  1064. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerGrenadeKills )
  1065. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerBombExplosions )
  1066. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerDefusedBombs )
  1067. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerPoints )
  1068. }
  1069.  
  1070. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "</table></body>" )
  1071.  
  1072. ArrayDestroy( aKey )
  1073. ArrayDestroy( aData )
  1074. ArrayDestroy( aAll )
  1075. }
  1076.  
  1077. public SortData( Array:aArray, iItem1, iItem2, iData[ ], iDataSize )
  1078. {
  1079. new Data1[ FvaultData ]
  1080. new Data2[ FvaultData ]
  1081.  
  1082. ArrayGetArray( aArray, iItem1, Data1 )
  1083. ArrayGetArray( aArray, iItem2, Data2 )
  1084.  
  1085. new szPoints_1[ 7 ]
  1086. parse( Data1[ szSkillP_Data ], szPoints_1, charsmax( szPoints_1 ) )
  1087.  
  1088. new szPoints_2[ 7 ]
  1089. parse( Data2[ szSkillP_Data ], szPoints_2, charsmax( szPoints_2 ) )
  1090.  
  1091. new iCount1 = str_to_num( szPoints_1 )
  1092. new iCount2 = str_to_num( szPoints_2 )
  1093.  
  1094. return ( iCount1 > iCount2 ) ? -1 : ( ( iCount1 < iCount2 ) ? 1 : 0 )
  1095. }
  1096.  
  1097. public FwdPlayerSpawnPost( id )
  1098. {
  1099. if( is_user_alive( id ) )
  1100. {
  1101. g_iCurrentKills[ id ] = 0
  1102.  
  1103. if( get_pcvar_num( g_iEnableShowSkillPointsOnNick ) )
  1104. {
  1105. new szName[ 32 ]
  1106. get_user_info( id, "name", szName, charsmax( szName ) )
  1107.  
  1108. new iLen = strlen( szName )
  1109.  
  1110. new iPos = iLen - 1
  1111.  
  1112. if( szName[ iPos ] == '>' )
  1113. {
  1114. new i
  1115. for( i = 1; i < 7; i++ )
  1116. {
  1117. if( szName[ iPos - i ] == '<' )
  1118. {
  1119. iLen = iPos - i
  1120. szName[ iLen ] = '^0'
  1121. break
  1122. }
  1123. }
  1124. }
  1125.  
  1126. format( szName[ iLen ], charsmax( szName ) - iLen, szName[ iLen-1 ] == ' ' ? "<%d>" : " <%d>", g_iPoints[ id ] )
  1127. set_user_info( id, "name", szName )
  1128. }
  1129. }
  1130. }
  1131.  
  1132. public MessageSayText( iMsgID, iDest, iReceiver )
  1133. {
  1134. if( get_pcvar_num( g_iHideChangeNickNotification ) )
  1135. {
  1136. new const Cstrike_Name_Change[ ] = "#Cstrike_Name_Change"
  1137.  
  1138. new szMessage[ sizeof( Cstrike_Name_Change ) + 1 ]
  1139. get_msg_arg_string( 2, szMessage, charsmax( szMessage ) )
  1140.  
  1141. if( equal( szMessage, Cstrike_Name_Change ) )
  1142. {
  1143. return PLUGIN_HANDLED
  1144. }
  1145. }
  1146.  
  1147. return PLUGIN_CONTINUE
  1148. }
  1149.  
  1150. ClientPrintColor( id, String[ ], any:... )
  1151. {
  1152. new szMsg[ 190 ]
  1153. vformat( szMsg, charsmax( szMsg ), String, 3 )
  1154.  
  1155. replace_all( szMsg, charsmax( szMsg ), "!n", "^1" )
  1156. replace_all( szMsg, charsmax( szMsg ), "!t", "^3" )
  1157. replace_all( szMsg, charsmax( szMsg ), "!g", "^4" )
  1158. replace_all( szMsg, charsmax( szMsg ), "", "á")
  1159. replace_all( szMsg, charsmax( szMsg ), "", "é")
  1160. replace_all( szMsg, charsmax( szMsg ), "", "í")
  1161. replace_all( szMsg, charsmax( szMsg ), "", "ó")
  1162. replace_all( szMsg, charsmax( szMsg ), "", "ö")
  1163. replace_all( szMsg, charsmax( szMsg ), "", "ő")
  1164. replace_all( szMsg, charsmax( szMsg ), "", "ú")
  1165. replace_all( szMsg, charsmax( szMsg ), "", "ü")
  1166. replace_all( szMsg, charsmax( szMsg ), "", "ű")
  1167. replace_all( szMsg, charsmax( szMsg ), "", "Á")
  1168. replace_all( szMsg, charsmax( szMsg ), "", "É")
  1169. replace_all( szMsg, charsmax( szMsg ), "", "Í")
  1170. replace_all( szMsg, charsmax( szMsg ), "", "Ó")
  1171. replace_all( szMsg, charsmax( szMsg ), "", "Ö")
  1172. replace_all( szMsg, charsmax( szMsg ), "", "Ő")
  1173. replace_all( szMsg, charsmax( szMsg ), "", "Ú")
  1174. replace_all( szMsg, charsmax( szMsg ), "", "Ü")
  1175. replace_all( szMsg, charsmax( szMsg ), "", "Ű")
  1176.  
  1177. static msgSayText = 0
  1178. static fake_user
  1179.  
  1180. if( !msgSayText )
  1181. {
  1182. msgSayText = get_user_msgid( "SayText" )
  1183. fake_user = get_maxplayers( ) + 1
  1184. }
  1185.  
  1186. message_begin( id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, _, id )
  1187. write_byte( id ? id : fake_user )
  1188. write_string( szMsg )
  1189. message_end( )
  1190. }
  1191. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  1192. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  1193. */
  1194.