hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.08.05. 20:13



Jelenlévő felhasználók

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

A legtöbb felhasználó (2883 fő) 2025.07.30. 16:00-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  [3 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Skill Point Rendszer
HozzászólásElküldve:2014.03.08. 10:21 
Offline
Fanatikus
Avatar

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

_________________

[AMXX]
Általam feltöltött pluginok


Kép

Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Skill Point Rendszer
HozzászólásElküldve:2014.03.09. 10:59 
Offline
Jómunkásember
Avatar

Csatlakozott:2013.09.21. 12:03
Hozzászólások:318
Megköszönt másnak: 31 alkalommal
Megköszönték neki: 30 alkalommal
Tökéletesen lemegy!

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Skill Point Rendszer
HozzászólásElküldve:2014.03.10. 12:49 
Offline
Fanatikus
Avatar

Csatlakozott:2013.09.25. 15:20
Hozzászólások:182
Megköszönt másnak: 23 alkalommal
Megköszönték neki: 6 alkalommal
Studioval csinald az leforditsa

_________________
Kép


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  [3 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 26 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