Advertisement
Guest User

Untitled

a guest
Nov 11th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.94 KB | None | 0 0
  1. #include < amxmodx >
  2. #include < amxmisc >
  3. #include < cstrike >
  4. #include < csx >
  5. #include < hamsandwich >
  6. #include < fvault >
  7.  
  8. #define PLUGIN "deprale"
  9. #define VERSION "1.7"
  10. #define AUTHOR "deprale"
  11.  
  12. #define g_VaultSkillPoints "puncterelagames"
  13. #define g_VaultNames "puncterealgames_names"
  14. #define PREFIX "[UNION]"
  15.  
  16. #define MAX_PLAYERS 32
  17. #define ADMIN ADMIN_RCON
  18.  
  19. #define EXPIREDAYS 3655
  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. "ROBOTEL",
  28. "RG CASUAL",
  29. "RG PLAYA",
  30. "RG 1337",
  31. "RG NR1"
  32. }
  33.  
  34. new const LEVELS[ MAX_LEVELS ] = {
  35. 100,
  36. 600,
  37. 1200,
  38. 2500,
  39. 5000 /* high value (not reachable) */
  40. }
  41.  
  42. enum _:FvaultData {
  43. szSteamID[ 35 ],
  44. szSkillP_Data[ 128 ]
  45. }
  46.  
  47.  
  48. new g_iMaxPlayers
  49. new g_szAuthID[ MAX_PLAYERS + 1 ][ 35 ]
  50. new g_szName[ MAX_PLAYERS + 1 ][ 32 ]
  51. new g_iCurrentKills[ MAX_PLAYERS + 1 ]
  52. new g_szMotd[ 1536 ]
  53.  
  54. new g_iPoints[ MAX_PLAYERS + 1 ]
  55. new g_iLevels[ MAX_PLAYERS + 1 ]
  56. new g_iClasses[ MAX_PLAYERS + 1 ]
  57.  
  58. new g_iKills[ MAX_PLAYERS + 1 ]
  59. new g_iDeaths[ MAX_PLAYERS + 1 ]
  60. new g_iHeadShots[ MAX_PLAYERS + 1 ]
  61. new g_iKnifeKills[ MAX_PLAYERS + 1 ]
  62. new g_iKnifeDeaths[ MAX_PLAYERS + 1 ]
  63. new g_iGrenadeKills[ MAX_PLAYERS + 1 ]
  64. new g_iGrenadeDeaths[ MAX_PLAYERS + 1 ]
  65. new g_iBombExplosions[ MAX_PLAYERS + 1 ]
  66. new g_iDefusedBombs[ MAX_PLAYERS + 1 ]
  67. new g_iWonRounds[ MAX_PLAYERS + 1 ]
  68.  
  69.  
  70. new bool:g_bRoundEnded
  71.  
  72. new g_iEnableAnnounceOnChat
  73. new g_iEnableShowSkillPointsOnNick
  74. new g_iEnableSkillPointsCmd
  75. new g_iEnableSkillPointsRestart
  76. new g_iEnableSkillPointsCmdRank
  77. new g_iEnableSkillPointsTop15
  78. new g_iHideCmds
  79. new g_iEnableWonPointsHour
  80. new g_iWonPointsHour
  81. new g_iLostPointsTK
  82. new g_iLostPointsSuicide
  83. new g_iWonPointsKill
  84. new g_iLostPointsDeath
  85. new g_iWonPointsHeadshot
  86. new g_iLostPointsHeadshot
  87. new g_iWonPointsKnife
  88. new g_iLostPointsKnife
  89. new g_iWonPointsGrenade
  90. new g_iLostPointsGrenade
  91. new g_iWonPointsTerrorists
  92. new g_iWonPointsCounterTerrorists
  93. new g_iLostPointsTerrorists
  94. new g_iLostPointsCounterTerrorists
  95. new g_iWonPointsPlanter
  96. new g_iWonPointsPlanterExplode
  97. new g_iWonPointsDefuser
  98. new g_iWonPoints4k
  99. new g_iWonPoints5k
  100. new g_iNegativePoints
  101.  
  102. public plugin_init( )
  103. {
  104. register_plugin( PLUGIN, VERSION, AUTHOR )
  105.  
  106. register_clcmd( "say .puncte", "puncte")
  107. register_clcmd( "say_team .puncte", "puncte")
  108. register_clcmd( "say .top15", "top15" )
  109. register_clcmd( "say_team .top15", "top15" )
  110.  
  111.  
  112. RegisterHam( Ham_Spawn, "player", "FwdPlayerSpawnPost", 1 )
  113.  
  114. register_message( get_user_msgid( "SayText" ), "MessageSayText" )
  115.  
  116. register_event( "SendAudio", "TerroristsWin", "a", "2&%!MRAD_terwin" )
  117. register_event( "SendAudio", "CounterTerroristsWin", "a", "2&%!MRAD_ctwin" )
  118.  
  119. register_event( "HLTV", "EventNewRound", "a", "1=0", "2=0" )
  120. register_logevent( "RoundEnd", 2, "1=Round_End" )
  121.  
  122. g_iMaxPlayers = get_maxplayers( )
  123.  
  124. RegisterCvars( )
  125. }
  126.  
  127. public plugin_natives( )
  128. {
  129. register_library( "skillpoints" )
  130.  
  131. register_native( "skillpoints", "_skillpoints" )
  132. }
  133.  
  134. public _skillpoints( plugin, params )
  135. {
  136. if( params != 1 )
  137. {
  138. return 0
  139. }
  140.  
  141. new id = get_param( 1 )
  142. if( !id )
  143. {
  144. return 0
  145. }
  146.  
  147. return g_iPoints[ id ]
  148. }
  149.  
  150. public RegisterCvars( )
  151. {
  152. g_iEnableAnnounceOnChat = register_cvar( "bps_announce_on_chat", "0" )
  153. g_iEnableShowSkillPointsOnNick = register_cvar( "bps_skillpoints_on_nick", "1" )
  154. g_iEnableSkillPointsCmd = register_cvar( "bps_skillpoints_cmd", "1" )
  155. g_iEnableSkillPointsRestart = register_cvar( "bps_skillpoints_cmd_restart", "0" )
  156. g_iEnableSkillPointsCmdRank = register_cvar( "bps_skillpoints_cmd_rank", "1" )
  157. g_iEnableSkillPointsTop15 = register_cvar( "bps_skillpoints_cmd_top15", "1" )
  158. g_iHideCmds = register_cvar( "bps_hide_cmd", "0" )
  159. g_iEnableWonPointsHour = register_cvar( "bps_enable_win_per_hour", "0" )
  160. g_iWonPointsHour = register_cvar( "bps_won_points_hour", "5" )
  161. g_iLostPointsTK = register_cvar( "bps_lost_points_tk", "5" )
  162. g_iLostPointsSuicide = register_cvar( "bps_lost_points_suicide", "1" )
  163. g_iWonPointsKill = register_cvar( "bps_won_points_kill", "1" )
  164. g_iLostPointsDeath = register_cvar( "bps_lost_points_kill", "1" )
  165. g_iWonPointsHeadshot = register_cvar( "bps_won_points_headshot", "2" )
  166. g_iLostPointsHeadshot = register_cvar( "bps_lost_points_headshot", "1" )
  167. g_iWonPointsKnife = register_cvar( "bps_won_points_knife", "3" )
  168. g_iLostPointsKnife = register_cvar( "bps_lost_points_knife", "3" )
  169. g_iWonPointsGrenade = register_cvar( "bps_won_points_grenade", "2" )
  170. g_iLostPointsGrenade = register_cvar( "bps_lost_points_grenade", "1" )
  171. g_iWonPointsTerrorists = register_cvar( "bps_won_points_ts", "1" )
  172. g_iWonPointsCounterTerrorists = register_cvar( "bps_won_points_cts", "1" )
  173. g_iLostPointsTerrorists = register_cvar( "bps_lost_points_ts", "1" )
  174. g_iLostPointsCounterTerrorists = register_cvar( "bps_lost_points_cts", "1" )
  175. g_iWonPointsPlanter = register_cvar( "bps_won_points_planter", "1" )
  176. g_iWonPointsPlanterExplode = register_cvar( "bps_won_points_planter_explode", "2" )
  177. g_iWonPointsDefuser = register_cvar( "bps_won_points_defuser", "3" )
  178. g_iWonPoints4k = register_cvar( "bps_won_points_4k", "5" )
  179. g_iWonPoints5k = register_cvar( "bps_won_points_5k", "7" )
  180. g_iNegativePoints = register_cvar( "bps_negative_points", "0" )
  181.  
  182.  
  183. fvault_prune( g_VaultSkillPoints, _, get_systime( ) - ( 86400 * EXPIREDAYS ) )
  184.  
  185. MakeTop15( )
  186. }
  187.  
  188. public client_authorized( id )
  189. {
  190. get_user_authid( id , g_szAuthID[ id ], charsmax( g_szAuthID[ ] ) )
  191. get_user_info( id, "name", g_szName[ id ], charsmax( g_szName[ ] ) )
  192.  
  193. fvault_set_data( g_VaultNames, g_szAuthID[ id ], g_szName[ id ] )
  194.  
  195. g_iPoints[ id ] = 0
  196. g_iLevels[ id ] = 0
  197. g_iClasses[ id ] = 0
  198.  
  199. g_iKills[ id ] = 0
  200. g_iDeaths[ id ] = 0
  201. g_iHeadShots[ id ] = 0
  202. g_iKnifeKills[ id ] = 0
  203. g_iKnifeDeaths[ id ] = 0
  204. g_iGrenadeKills[ id ] = 0
  205. g_iGrenadeDeaths[ id ] = 0
  206. g_iBombExplosions[ id ] = 0
  207. g_iDefusedBombs[ id ] = 0
  208. g_iWonRounds[ id ] = 0
  209.  
  210. g_iCurrentKills[ id ] = 0
  211.  
  212. LoadPoints( id )
  213.  
  214. if( get_pcvar_num( g_iEnableWonPointsHour ) && get_pcvar_num( g_iWonPointsHour ) )
  215. {
  216. set_task( 3600.0, "GiveSkillPointsHour", id, _, _, "b" )
  217. }
  218. }
  219.  
  220. public client_infochanged( id )
  221. {
  222. if( is_user_connected( id ) )
  223. {
  224. new szNewName[ 32 ]
  225. get_user_info( id, "name", szNewName, charsmax( szNewName ) )
  226. new iLen = strlen( szNewName )
  227.  
  228. new iPos = iLen - 1
  229.  
  230. if( szNewName[ iPos ] == '>' )
  231. {
  232. new i
  233. for( i = 1; i < 7; i++ )
  234. {
  235. if( szNewName[ iPos - i ] == '<' )
  236. {
  237. iLen = iPos - i
  238. szNewName[ iLen ] = EOS
  239. break
  240. }
  241. }
  242. }
  243.  
  244. trim( szNewName )
  245.  
  246. if( !equal( g_szName[ id ], szNewName ) )
  247. {
  248. copy( g_szName[ id ], charsmax( g_szName[ ] ), szNewName )
  249.  
  250. fvault_set_data( g_VaultNames, g_szAuthID[ id ], g_szName[ id ] )
  251. }
  252. }
  253. }
  254.  
  255. public client_disconnected( id )
  256. {
  257. if( task_exists( id ) )
  258. {
  259. remove_task( id )
  260. }
  261.  
  262. CheckLevelAndSave( id )
  263. }
  264.  
  265. public puncte( id )
  266. {
  267. GetSkillPoints( id )
  268. }
  269. public top15( id )
  270. {
  271. TopSkill( id )
  272. }
  273.  
  274. public GiveSkillPointsHour( id )
  275. {
  276. g_iPoints[ id ] += get_pcvar_num( g_iWonPointsHour )
  277.  
  278. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  279. {
  280. client_print( id, print_chat, "!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" : "" )
  281. }
  282. }
  283.  
  284. public client_death( iKiller, iVictim, iWpnIndex, iHitPlace, iTK )
  285. {
  286. if( !IsPlayer( iKiller ) || !IsPlayer( iVictim ) )
  287. {
  288. return PLUGIN_CONTINUE
  289. }
  290.  
  291. if( iTK )
  292. {
  293. g_iPoints[ iKiller ] -= get_pcvar_num( g_iLostPointsTK )
  294.  
  295. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iLostPointsTK ) )
  296. {
  297. client_print( iKiller, print_chat, "!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" : "" )
  298. }
  299.  
  300. return PLUGIN_CONTINUE
  301. }
  302.  
  303. if( iKiller == iVictim )
  304. {
  305. g_iPoints[ iKiller ] -= get_pcvar_num( g_iLostPointsSuicide )
  306.  
  307. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iLostPointsSuicide ) )
  308. {
  309. client_print( iKiller, print_chat, "!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" : "" )
  310. }
  311.  
  312. g_iDeaths[ iKiller ]++
  313.  
  314. return PLUGIN_CONTINUE
  315. }
  316.  
  317. g_iCurrentKills[ iKiller ]++
  318. g_iKills[ iKiller ]++
  319.  
  320. g_iDeaths[ iVictim ]++
  321.  
  322. if( iWpnIndex == CSW_HEGRENADE )
  323. {
  324. g_iPoints[ iKiller ] += get_pcvar_num( g_iWonPointsGrenade )
  325. g_iGrenadeKills[ iKiller]++
  326.  
  327. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iWonPointsGrenade ) )
  328. {
  329. client_print( iKiller, print_chat, "!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 ] )
  330. }
  331.  
  332. g_iPoints[ iVictim ] -= get_pcvar_num( g_iLostPointsGrenade )
  333. g_iGrenadeDeaths[ iVictim ]++
  334.  
  335. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iLostPointsGrenade ) )
  336. {
  337. client_print( iVictim, print_chat, "!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" : "" )
  338. }
  339.  
  340. return PLUGIN_CONTINUE
  341. }
  342.  
  343. if( iWpnIndex == CSW_KNIFE )
  344. {
  345. g_iPoints[ iKiller ] += get_pcvar_num( g_iWonPointsKnife )
  346. g_iKnifeKills[ iKiller ]++
  347.  
  348. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iWonPointsKnife ) )
  349. {
  350. client_print( iKiller, print_chat, "!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 ] )
  351. }
  352.  
  353. g_iPoints[ iVictim ] -= get_pcvar_num( g_iLostPointsKnife )
  354. g_iKnifeDeaths[ iVictim ]++
  355.  
  356. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iLostPointsKnife ) )
  357. {
  358. client_print( iVictim, print_chat, "!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" : "" )
  359. }
  360.  
  361. return PLUGIN_CONTINUE
  362. }
  363.  
  364. if( iHitPlace == HIT_HEAD )
  365. {
  366. g_iPoints[ iKiller ] += get_pcvar_num( g_iWonPointsHeadshot )
  367. g_iHeadShots[ iKiller ]++
  368.  
  369. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iWonPointsHeadshot ) )
  370. {
  371. client_print( iKiller, print_chat, "!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 ] )
  372. }
  373.  
  374. g_iPoints[ iVictim ] -= get_pcvar_num( g_iLostPointsHeadshot )
  375.  
  376. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iLostPointsHeadshot ) )
  377. {
  378. client_print( iVictim, print_chat, "!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" : "" )
  379. }
  380.  
  381. return PLUGIN_CONTINUE
  382. }
  383.  
  384. g_iPoints[ iKiller ] += get_pcvar_num( g_iWonPointsKill )
  385.  
  386. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iWonPointsKill ) )
  387. {
  388. client_print( iKiller, print_chat, "!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 ] )
  389. }
  390.  
  391. g_iPoints[ iVictim ] -= get_pcvar_num( g_iLostPointsDeath )
  392.  
  393. if( get_pcvar_num( g_iEnableAnnounceOnChat ) && get_pcvar_num( g_iLostPointsDeath ) )
  394. {
  395. client_print( iVictim, print_chat, "!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" : "" )
  396. }
  397.  
  398. return PLUGIN_CONTINUE
  399. }
  400.  
  401. public TerroristsWin( )
  402. {
  403. if( g_bRoundEnded )
  404. {
  405. return PLUGIN_CONTINUE
  406. }
  407.  
  408. new Players[ MAX_PLAYERS ]
  409. new iNum
  410. new i
  411.  
  412. get_players( Players, iNum, "ch" )
  413.  
  414. for( --iNum; iNum >= 0; iNum-- )
  415. {
  416. i = Players[ iNum ]
  417.  
  418. switch( cs_get_user_team( i ) )
  419. {
  420. case( CS_TEAM_T ):
  421. {
  422. if( get_pcvar_num( g_iWonPointsTerrorists ) )
  423. {
  424. g_iPoints[ i ] += get_pcvar_num( g_iWonPointsTerrorists )
  425. g_iWonRounds[ i ]++
  426.  
  427. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  428. {
  429. client_print( i, print_chat, "!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" : "" )
  430. }
  431. }
  432. }
  433.  
  434. case( CS_TEAM_CT ):
  435. {
  436. if( get_pcvar_num( g_iLostPointsCounterTerrorists ) )
  437. {
  438. g_iPoints[ i ] -= get_pcvar_num( g_iLostPointsCounterTerrorists )
  439.  
  440. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  441. {
  442. client_print( i, print_chat, "!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" : "" )
  443. }
  444. }
  445. }
  446. }
  447. }
  448.  
  449. g_bRoundEnded = true
  450.  
  451. return PLUGIN_CONTINUE
  452. }
  453.  
  454. public CounterTerroristsWin( )
  455. {
  456. if( g_bRoundEnded )
  457. {
  458. return PLUGIN_CONTINUE
  459. }
  460.  
  461. new Players[ MAX_PLAYERS ]
  462. new iNum
  463. new i
  464.  
  465. get_players( Players, iNum, "ch" )
  466.  
  467. for( --iNum; iNum >= 0; iNum-- )
  468. {
  469. i = Players[ iNum ]
  470.  
  471. switch( cs_get_user_team( i ) )
  472. {
  473. case( CS_TEAM_T ):
  474. {
  475. if( get_pcvar_num( g_iLostPointsTerrorists ) )
  476. {
  477. g_iPoints[ i ] -= get_pcvar_num( g_iLostPointsTerrorists )
  478.  
  479. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  480. {
  481. client_print( i, print_chat, "!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" : "" )
  482. }
  483. }
  484. }
  485.  
  486. case( CS_TEAM_CT ):
  487. {
  488. if( get_pcvar_num( g_iWonPointsCounterTerrorists ) )
  489. {
  490. g_iPoints[ i ] += get_pcvar_num( g_iWonPointsCounterTerrorists )
  491. g_iWonRounds[ i ]++
  492.  
  493. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  494. {
  495. client_print( i, print_chat, "!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" : "" )
  496. }
  497. }
  498. }
  499. }
  500. }
  501.  
  502. g_bRoundEnded = true
  503.  
  504. return PLUGIN_CONTINUE
  505. }
  506.  
  507. public bomb_planted( planter )
  508. {
  509. if( get_pcvar_num( g_iWonPointsPlanter ) )
  510. {
  511. g_iPoints[ planter ] += get_pcvar_num( g_iWonPointsPlanter )
  512.  
  513. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  514. {
  515. client_print( planter, print_chat, "!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" : "" )
  516. }
  517. }
  518. }
  519.  
  520. public bomb_explode( planter, defuser )
  521. {
  522. if( get_pcvar_num( g_iWonPointsPlanterExplode ) )
  523. {
  524. g_iPoints[ planter ] += get_pcvar_num( g_iWonPointsPlanterExplode )
  525. g_iBombExplosions[ planter ]++
  526.  
  527. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  528. {
  529. client_print( planter, print_chat, "!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" : "" )
  530. }
  531. }
  532. }
  533.  
  534. public bomb_defused( defuser )
  535. {
  536. if( get_pcvar_num( g_iWonPointsDefuser ) )
  537. {
  538. g_iPoints[ defuser ] += get_pcvar_num( g_iWonPointsDefuser )
  539. g_iDefusedBombs[ defuser ]++
  540.  
  541. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  542. {
  543. client_print( defuser, print_chat, "!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" : "" )
  544. }
  545. }
  546. }
  547.  
  548. public EventNewRound( )
  549. {
  550. g_bRoundEnded = false
  551.  
  552. MakeTop15( )
  553. }
  554.  
  555.  
  556. public RoundEnd( )
  557. {
  558. set_task( 0.5, "SavePointsAtRoundEnd" )
  559. }
  560.  
  561. public SavePointsAtRoundEnd( )
  562. {
  563. new Players[ MAX_PLAYERS ]
  564. new iNum
  565. new i
  566.  
  567. get_players( Players, iNum, "ch" )
  568.  
  569. for( --iNum; iNum >= 0; iNum-- )
  570. {
  571. i = Players[ iNum ]
  572.  
  573. if( g_iCurrentKills[ i ] == 4 && get_pcvar_num( g_iWonPoints4k ) )
  574. {
  575. g_iPoints[ i ] += get_pcvar_num( g_iWonPoints4k )
  576.  
  577. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  578. {
  579. client_print( i, print_chat, "!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" : "" )
  580. }
  581. }
  582.  
  583. if( g_iCurrentKills[ i ] >= 5 && get_pcvar_num( g_iWonPoints5k ) )
  584. {
  585. g_iPoints[ i ] += get_pcvar_num( g_iWonPoints5k )
  586.  
  587. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  588. {
  589. client_print( i, print_chat, "!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" : "" )
  590. }
  591. }
  592.  
  593. CheckLevelAndSave( i )
  594. }
  595. }
  596.  
  597. public CheckLevelAndSave( id )
  598. {
  599. if( !get_pcvar_num( g_iNegativePoints) )
  600. {
  601. if( g_iPoints[ id ] < 0 )
  602. {
  603. g_iPoints[ id ] = 0
  604. }
  605.  
  606. if( g_iLevels[ id ] < 0 )
  607. {
  608. g_iLevels[ id ] = 0
  609. }
  610. }
  611.  
  612. while( g_iPoints[ id ] >= LEVELS[ g_iLevels[ id ] ] )
  613. {
  614. g_iLevels[ id ]++
  615. g_iClasses[ id ]++
  616.  
  617. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  618. {
  619. client_print( 0, print_chat, "!g%s!n %s a crescut de nivel! Nivel:!t %s!n Puncte totale:!t %d", PREFIX, g_szName[ id ], CLASSES[ g_iLevels[ id ] ], g_iPoints[ id ] )
  620. }
  621. }
  622.  
  623. new szFormattedData[ 128 ]
  624. formatex( szFormattedData, charsmax( szFormattedData ),
  625. "%i %i %i %i %i %i %i %i %i %i %i %i",
  626.  
  627. g_iPoints[ id ],
  628. g_iLevels[ id ],
  629.  
  630. g_iKills[ id ],
  631. g_iDeaths[ id ],
  632. g_iHeadShots[ id ],
  633. g_iKnifeKills[ id ],
  634. g_iKnifeDeaths[ id ],
  635. g_iGrenadeKills[ id ],
  636. g_iGrenadeDeaths[ id ],
  637. g_iBombExplosions[ id ],
  638. g_iDefusedBombs[ id ],
  639. g_iWonRounds[ id ] )
  640.  
  641. fvault_set_data( g_VaultSkillPoints, g_szAuthID[ id ], szFormattedData )
  642.  
  643. if( g_iPoints[ id ] >= MAX_PONTUATION )
  644. {
  645. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  646. {
  647. client_print( id, print_chat, "!g%s!n Ai ajuns la nivel maxim, esti nr1!", PREFIX )
  648. }
  649.  
  650. CheckLevelAndSave( id )
  651. }
  652. }
  653.  
  654. public LoadPoints( id )
  655. {
  656. new szFormattedData[ 128 ]
  657. if( fvault_get_data( g_VaultSkillPoints, g_szAuthID[ id ], szFormattedData, charsmax( szFormattedData ) ) )
  658. {
  659. new szPlayerPoints[ 7 ]
  660. new szPlayerLevel[ 7 ]
  661.  
  662. new szPlayerKills[ 7 ]
  663. new szPlayerDeahts[ 7 ]
  664. new szPlayerHeadShots[ 7 ]
  665. new szPlayerKnifeKills[ 7 ]
  666. new szPlayerKnifeDeaths[ 7 ]
  667. new szPlayerGrenadeKills[ 7 ]
  668. new szPlayerGrenadeDeaths[ 7 ]
  669. new szPlayerBombExplosions[ 7 ]
  670. new szPlayerDefusedBombs[ 7 ]
  671. new szPlayerWonRounds[ 7 ]
  672.  
  673. parse( szFormattedData,
  674. szPlayerPoints, charsmax( szPlayerPoints ),
  675. szPlayerLevel, charsmax( szPlayerLevel ),
  676.  
  677. szPlayerKills, charsmax( szPlayerKills ),
  678. szPlayerDeahts, charsmax( szPlayerDeahts ),
  679. szPlayerHeadShots, charsmax( szPlayerHeadShots ),
  680. szPlayerKnifeKills, charsmax( szPlayerKnifeKills ),
  681. szPlayerKnifeDeaths, charsmax( szPlayerKnifeDeaths ),
  682. szPlayerGrenadeKills, charsmax( szPlayerGrenadeKills ),
  683. szPlayerGrenadeDeaths, charsmax( szPlayerGrenadeDeaths ),
  684. szPlayerBombExplosions, charsmax( szPlayerBombExplosions ),
  685. szPlayerDefusedBombs, charsmax( szPlayerDefusedBombs ),
  686. szPlayerWonRounds, charsmax( szPlayerWonRounds ) )
  687.  
  688. g_iPoints[ id ] = str_to_num( szPlayerPoints )
  689. g_iLevels[ id ] = str_to_num( szPlayerLevel )
  690.  
  691. g_iKills[ id ] = str_to_num( szPlayerKills )
  692. g_iDeaths[ id ] = str_to_num( szPlayerDeahts )
  693. g_iHeadShots[ id ] = str_to_num( szPlayerHeadShots )
  694. g_iKnifeKills[ id ] = str_to_num( szPlayerKnifeKills )
  695. g_iKnifeDeaths[ id ] = str_to_num( szPlayerKnifeDeaths )
  696. g_iGrenadeKills[ id ] = str_to_num( szPlayerGrenadeKills )
  697. g_iGrenadeDeaths[ id ] = str_to_num( szPlayerGrenadeDeaths )
  698. g_iBombExplosions[ id ] = str_to_num( szPlayerBombExplosions )
  699. g_iDefusedBombs[ id ] = str_to_num( szPlayerDefusedBombs )
  700. g_iWonRounds[ id ] = str_to_num( szPlayerWonRounds )
  701.  
  702. }
  703. }
  704.  
  705. public GetSkillPoints( id )
  706. {
  707. if( !get_pcvar_num( g_iEnableSkillPointsCmd ) )
  708. {
  709. client_print( id, print_chat, "!g%s!n Command disabled", PREFIX )
  710. }
  711.  
  712. else
  713. {
  714. if( g_iLevels[ id ] < ( MAX_LEVELS - 1 ) )
  715. {
  716. client_print( id, print_chat, "!g%s!n Puncte totale:!t %d!n Nivel:!t %s!n puncte pana la urmatorun livel:!t %d", PREFIX, g_iPoints[ id ], CLASSES[ g_iLevels[ id ] ], ( LEVELS[ g_iLevels[ id ] ] - g_iPoints[ id ] ) )
  717. }
  718.  
  719. else
  720. {
  721. client_print( id, print_chat, "!g%s!n Puncte totale:!t %d!n Nivel:!t %s!n (nivelul anterior)", PREFIX, g_iPoints[ id ], CLASSES[ g_iLevels[ id ] ] )
  722. }
  723. }
  724.  
  725. return ( get_pcvar_num( g_iHideCmds ) == 0 ) ? PLUGIN_CONTINUE : PLUGIN_HANDLED_MAIN
  726. }
  727.  
  728. public CmdGivePoints( id, level, cid )
  729. {
  730. if ( !cmd_access( id, level, cid, 3 ) )
  731. {
  732. return PLUGIN_HANDLED
  733. }
  734.  
  735. new Arg1[ 32 ]
  736. new Arg2[ 6 ]
  737.  
  738. read_argv( 1, Arg1, charsmax( Arg1 ) )
  739. read_argv( 2, Arg2, charsmax( Arg2 ) )
  740.  
  741. new iPlayer = cmd_target( id, Arg1, 1 )
  742. new iPoints = str_to_num( Arg2 )
  743.  
  744. if ( !iPlayer )
  745. {
  746. console_print( id, "Sorry, player %s could not be found or targetted!", Arg1 )
  747. return PLUGIN_HANDLED
  748. }
  749.  
  750. if( iPoints > 0 )
  751. {
  752. g_iPoints[ iPlayer ] += iPoints
  753. CheckLevelAndSave( iPlayer )
  754.  
  755. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  756. {
  757. client_print( 0, print_chat, "!g%s!n %s gave!t %i!n SkillPoint%s to %s", PREFIX, g_szName[ id ], iPoints, iPoints > 1 ? "s" : "", g_szName[ iPlayer ] )
  758. }
  759. }
  760.  
  761. return PLUGIN_HANDLED
  762. }
  763.  
  764. public CmdTakePoints( id, level, cid )
  765. {
  766. if ( !cmd_access( id, level, cid, 3 ) )
  767. {
  768. return PLUGIN_HANDLED
  769. }
  770.  
  771. new Arg1[ 32 ]
  772. new Arg2[ 6 ]
  773.  
  774. read_argv( 1, Arg1, charsmax( Arg1 ) )
  775. read_argv( 2, Arg2, charsmax( Arg2 ) )
  776.  
  777. new iPlayer = cmd_target( id, Arg1, 1 )
  778. new iPoints = str_to_num( Arg2 )
  779.  
  780. if ( !iPlayer )
  781. {
  782. console_print( id, "Sorry, player %s could not be found or targetted!", Arg1 )
  783. return PLUGIN_HANDLED
  784. }
  785.  
  786. if( iPoints > 0 )
  787. {
  788. g_iPoints[ iPlayer ] -= iPoints
  789. CheckLevelAndSave( iPlayer )
  790.  
  791. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  792. {
  793. client_print( 0, print_chat, "!g%s!n %s take!t %i!n SkillPoint%s from %s", PREFIX, g_szName[ id ], iPoints, iPoints > 1 ? "s" : "", g_szName[ iPlayer ] )
  794. }
  795. }
  796.  
  797. return PLUGIN_HANDLED
  798. }
  799.  
  800. public RestartSkillPoints( id )
  801. {
  802. if( !get_pcvar_num( g_iEnableSkillPointsRestart ) )
  803. {
  804. client_print( id, print_chat, "!g%s!n Command disabled", PREFIX )
  805. }
  806.  
  807. else
  808. {
  809. g_iPoints[ id ] = 0
  810. g_iLevels[ id ] = 0
  811. g_iClasses[ id ] = 0
  812.  
  813. g_iKills[ id ] = 0
  814. g_iDeaths[ id ] = 0
  815. g_iHeadShots[ id ] = 0
  816. g_iKnifeKills[ id ] = 0
  817. g_iKnifeDeaths[ id ] = 0
  818. g_iGrenadeKills[ id ] = 0
  819. g_iGrenadeDeaths[ id ] = 0
  820. g_iBombExplosions[ id ] = 0
  821. g_iDefusedBombs[ id ] = 0
  822. g_iWonRounds[ id ] = 0
  823.  
  824. CheckLevelAndSave( id )
  825.  
  826. if( get_pcvar_num( g_iEnableAnnounceOnChat ) )
  827. {
  828. client_print( id, print_chat, "!g%s!n Your SkillPoints and level will start again", PREFIX )
  829. }
  830. }
  831.  
  832. return ( get_pcvar_num( g_iHideCmds ) == 0 ) ? PLUGIN_CONTINUE : PLUGIN_HANDLED_MAIN
  833. }
  834.  
  835. public SkillRank( id )
  836. {
  837. if( !get_pcvar_num( g_iEnableSkillPointsCmdRank ) )
  838. {
  839. client_print( id, print_chat, "!g%s!n Command disabled", PREFIX )
  840. }
  841.  
  842. else
  843. {
  844. new Array:aKey = ArrayCreate( 35 )
  845. new Array:aData = ArrayCreate( 128 )
  846. new Array:aAll = ArrayCreate( FvaultData )
  847.  
  848. fvault_load( g_VaultSkillPoints, aKey, aData )
  849.  
  850. new iArraySize = ArraySize( aKey )
  851.  
  852. new Data[ FvaultData ]
  853.  
  854. new i
  855. for( i = 0; i < iArraySize; i++ )
  856. {
  857. ArrayGetString( aKey, i, Data[ szSteamID ], sizeof Data[ szSteamID ] - 1 )
  858. ArrayGetString( aData, i, Data[ szSkillP_Data ], sizeof Data[ szSkillP_Data ] - 1 )
  859.  
  860. ArrayPushArray( aAll, Data )
  861. }
  862.  
  863. ArraySort( aAll, "SortData" )
  864.  
  865. new szAuthIdFromArray[ 35 ]
  866.  
  867. new j
  868. for( j = 0; j < iArraySize; j++ )
  869. {
  870. ArrayGetString( aAll, j, szAuthIdFromArray, charsmax( szAuthIdFromArray ) )
  871.  
  872. if( equal( szAuthIdFromArray, g_szAuthID[ id ] ) )
  873. {
  874. break
  875. }
  876. }
  877.  
  878. ArrayDestroy( aKey )
  879. ArrayDestroy( aData )
  880. ArrayDestroy( aAll )
  881.  
  882. client_print( id, print_chat, "!g%s!n Rankul tau este!t %i!n din!t %i!n jucatori cu!t %i!n puncte ", PREFIX, j + 1, iArraySize, g_iPoints[ id ] )
  883. }
  884.  
  885. return ( get_pcvar_num( g_iHideCmds ) == 0 ) ? PLUGIN_CONTINUE : PLUGIN_HANDLED_MAIN
  886. }
  887.  
  888. public TopSkill( id )
  889. {
  890. if( !get_pcvar_num( g_iEnableSkillPointsTop15 ) )
  891. {
  892. client_print( id, print_chat, "!g%s!n Command disabled", PREFIX )
  893. }
  894.  
  895. else
  896. {
  897. show_motd( id, g_szMotd, "UNION R-G TOP" )
  898. }
  899.  
  900. return ( get_pcvar_num( g_iHideCmds ) == 0 ) ? PLUGIN_CONTINUE : PLUGIN_HANDLED_MAIN
  901. }
  902.  
  903. public MakeTop15( )
  904. {
  905. new iLen
  906. iLen = formatex( g_szMotd, charsmax( g_szMotd ),
  907. "<body bgcolor=#A4BED6>\
  908. <table width=100%% cellpadding=2 cellspacing=0 border=0>\
  909. <tr align=center bgcolor=#52697B>\
  910. <th width=4%%>#\
  911. <th width=30%% align=left>Player\
  912. <th width=8%%>Ucideri\
  913. <th width=8%%>Morti\
  914. <th width=8%%>HS\
  915. <th width=8%%>Lame\
  916. <th width=8%%>Grenade\
  917. <th width=8%%>Bombe\
  918. <th width=8%%>Def\
  919. <th width=10%>Puncte" )
  920.  
  921. new Array:aKey = ArrayCreate( 35 )
  922. new Array:aData = ArrayCreate( 128 )
  923. new Array:aAll = ArrayCreate( FvaultData )
  924.  
  925. fvault_load( g_VaultSkillPoints, aKey, aData )
  926.  
  927. new iArraySize = ArraySize( aKey )
  928.  
  929. new Data[ FvaultData ]
  930.  
  931. new i
  932. for( i = 0; i < iArraySize; i++ )
  933. {
  934. ArrayGetString( aKey, i, Data[ szSteamID ], sizeof Data[ szSteamID ] - 1 )
  935. ArrayGetString( aData, i, Data[ szSkillP_Data ], sizeof Data[ szSkillP_Data ] - 1 )
  936.  
  937. ArrayPushArray( aAll, Data )
  938. }
  939.  
  940. ArraySort( aAll, "SortData" )
  941.  
  942. new szPlayerPoints[ 7 ]
  943. new szPlayerLevel[ 7 ]
  944.  
  945. new szPlayerKills[ 7 ]
  946. new szPlayerDeahts[ 7 ]
  947. new szPlayerHeadShots[ 7 ]
  948. new szPlayerKnifeKills[ 7 ]
  949. new szPlayerKnifeDeaths[ 7 ]
  950. new szPlayerGrenadeKills[ 7 ]
  951. new szPlayerGrenadeDeaths[ 7 ]
  952. new szPlayerBombExplosions[ 7 ]
  953. new szPlayerDefusedBombs[ 7 ]
  954. new szPlayerWonRounds[ 7 ]
  955.  
  956. new szName[ 22 ]
  957. new iSize = clamp( iArraySize, 0, 10 )
  958.  
  959. new j
  960. for( j = 0; j < iSize; j++ )
  961. {
  962. ArrayGetArray( aAll, j, Data )
  963.  
  964. fvault_get_data( g_VaultNames, Data[ szSteamID ], szName, charsmax( szName ) )
  965.  
  966. replace_all( szName, charsmax( szName ), "<", "[" )
  967. replace_all( szName, charsmax( szName ), ">", "]" )
  968.  
  969. parse( Data[ szSkillP_Data ],
  970. szPlayerPoints, charsmax( szPlayerPoints ),
  971. szPlayerLevel, charsmax( szPlayerLevel ),
  972.  
  973. szPlayerKills, charsmax( szPlayerKills ),
  974. szPlayerDeahts, charsmax( szPlayerDeahts ),
  975. szPlayerHeadShots, charsmax( szPlayerHeadShots ),
  976. szPlayerKnifeKills, charsmax( szPlayerKnifeKills ),
  977. szPlayerKnifeDeaths, charsmax( szPlayerKnifeDeaths ),
  978. szPlayerGrenadeKills, charsmax( szPlayerGrenadeKills ),
  979. szPlayerGrenadeDeaths, charsmax( szPlayerGrenadeDeaths ),
  980. szPlayerBombExplosions, charsmax( szPlayerBombExplosions ),
  981. szPlayerDefusedBombs, charsmax( szPlayerDefusedBombs ),
  982. szPlayerWonRounds, charsmax( szPlayerWonRounds ) )
  983.  
  984. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<tr align=center>" )
  985. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%i", j + 1 )
  986. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td align=left>%s", szName )
  987. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerKills )
  988. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerDeahts )
  989. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerHeadShots )
  990. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerKnifeKills )
  991. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerGrenadeKills )
  992. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerBombExplosions )
  993. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerDefusedBombs )
  994. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "<td>%s", szPlayerPoints )
  995. }
  996.  
  997. iLen += formatex( g_szMotd[ iLen ], charsmax( g_szMotd ) - iLen, "</table></body>" )
  998.  
  999. ArrayDestroy( aKey )
  1000. ArrayDestroy( aData )
  1001. ArrayDestroy( aAll )
  1002. }
  1003.  
  1004. public SortData( Array:aArray, iItem1, iItem2, iData[ ], iDataSize )
  1005. {
  1006. new Data1[ FvaultData ]
  1007. new Data2[ FvaultData ]
  1008.  
  1009. ArrayGetArray( aArray, iItem1, Data1 )
  1010. ArrayGetArray( aArray, iItem2, Data2 )
  1011.  
  1012. new szPoints_1[ 7 ]
  1013. parse( Data1[ szSkillP_Data ], szPoints_1, charsmax( szPoints_1 ) )
  1014.  
  1015. new szPoints_2[ 7 ]
  1016. parse( Data2[ szSkillP_Data ], szPoints_2, charsmax( szPoints_2 ) )
  1017.  
  1018. new iCount1 = str_to_num( szPoints_1 )
  1019. new iCount2 = str_to_num( szPoints_2 )
  1020.  
  1021. return ( iCount1 > iCount2 ) ? -1 : ( ( iCount1 < iCount2 ) ? 1 : 0 )
  1022. }
  1023.  
  1024. public FwdPlayerSpawnPost( id )
  1025. {
  1026. if( is_user_alive( id ) )
  1027. {
  1028. g_iCurrentKills[ id ] = 0
  1029.  
  1030. if( get_pcvar_num( g_iEnableShowSkillPointsOnNick ) )
  1031. {
  1032. new szName[ 32 ]
  1033. get_user_info( id, "name", szName, charsmax( szName ) )
  1034.  
  1035. new iLen = strlen( szName )
  1036.  
  1037. new iPos = iLen - 1
  1038.  
  1039. if( szName[ iPos ] == '>' )
  1040. {
  1041. new i
  1042. for( i = 1; i < 7; i++ )
  1043. {
  1044. if( szName[ iPos - i ] == '<' )
  1045. {
  1046. iLen = iPos - i
  1047. szName[ iLen ] = '^0'
  1048. break
  1049. }
  1050. }
  1051. }
  1052.  
  1053. format(szName[ iLen ], charsmax( szName ) - iLen, szName[ iLen-1 ] == ' ' ? "<%d>" : " <%d>", g_iPoints[ id ] )
  1054. new team[] = "Team1"
  1055. new team1[] = "Team2"
  1056. new teamz = get_user_team(id)
  1057. new szNewName[32]
  1058. if(teamz == 1) {
  1059. formatex( szNewName, charsmax(szNewName), "%s %s", team, szName )
  1060. set_user_info( id, "name", szNewName )
  1061. }
  1062. if(teamz == 2) {
  1063. formatex( szNewName, charsmax(szNewName), "%s %s", team1, szName )
  1064. set_user_info( id, "name", szNewName )
  1065. }
  1066.  
  1067. }
  1068. }
  1069. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement