Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.63 KB | None | 0 0
  1. #include < amxmodx >
  2. #include < amxmisc >
  3. #include < cstrike >
  4. #include < fakemeta >
  5. #include < nvault >
  6. #include < fcs >
  7. #include < CC_ColorChat >
  8.  
  9. #pragma semicolon 1
  10.  
  11. #define PLUGIN "Furien Credits System"
  12. #define VERSION "0.4.4"
  13.  
  14. #define ONE_DAY_IN_SECONDS 86400
  15.  
  16. new const g_szTag[ ] = "[FR]";
  17.  
  18. new const g_szGiveCreditsFlag[ ] = "a";
  19.  
  20. new g_szName[ 33 ][ 32 ];
  21. new g_iUserCredits[ 33 ];
  22.  
  23. new g_iCvarPruneDays;
  24. new g_iCvarEntry;
  25. new iVault;
  26.  
  27. new Counter=5;
  28.  
  29. public plugin_init( )
  30. {
  31. register_plugin( PLUGIN, VERSION, "Askhanar" );
  32. register_cvar( "fcs_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY );
  33.  
  34. g_iCvarPruneDays = register_cvar( "fcs_prunedays", "15" );
  35. g_iCvarEntry = register_cvar( "fcs_entry_credits", "50" );
  36.  
  37. register_clcmd( "say", "ClCmdSay" );
  38. register_clcmd( "say_team", "ClCmdSay" );
  39.  
  40. register_clcmd( "say /deposit", "ClCmdSayDepozit" );
  41. register_clcmd( "say_team /deposit", "ClCmdSayDepozit" );
  42.  
  43. register_clcmd( "say deposit", "ClCmdSayDepozit" );
  44. register_clcmd( "say_team deposit", "ClCmdSayDepozit" );
  45.  
  46. register_clcmd( "say /withdraw", "ClCmdSayRetrage" );
  47. register_clcmd( "say_team /withdraw", "ClCmdSayRetrage" );
  48.  
  49. register_clcmd( "say withdraw", "ClCmdSayRetrage" );
  50. register_clcmd( "say_team withdraw", "ClCmdSayRetrage" );
  51.  
  52. register_clcmd( "say /retrage", "ClCmdSayRetrage" );
  53. register_clcmd( "say_team /retrage", "ClCmdSayRetrage" );
  54.  
  55. register_clcmd( "say retrage", "ClCmdSayRetrage" );
  56. register_clcmd( "say_team retrage", "ClCmdSayRetrage" );
  57.  
  58. register_clcmd( "fcs_credite", "ClCmdCredits" );
  59. register_clcmd( "fcs_credits", "ClCmdCredits" );
  60.  
  61. register_clcmd( "amx_give_credits", "ClCmdGiveCredits" );
  62. register_clcmd( "amx_take_credits", "ClCmdTakeCredits" );
  63.  
  64. register_forward( FM_ClientUserInfoChanged, "Fwd_ClientUserInfoChanged" );
  65.  
  66. iVault = nvault_open( "FurienCreditsSystem" );
  67.  
  68. if( iVault == INVALID_HANDLE )
  69. {
  70. set_fail_state( "nValut returned invalid handle!" );
  71. }
  72. }
  73.  
  74. public plugin_natives()
  75. {
  76. register_library( "fcs" );
  77. register_native( "fcs_get_user_credits", "_fcs_get_user_credits" );
  78. register_native( "fcs_set_user_credits", "_fcs_set_user_credits" );
  79. }
  80.  
  81. public _fcs_get_user_credits( iPlugin, iParams )
  82. {
  83. return g_iUserCredits[ get_param( 1 ) ];
  84. }
  85.  
  86. public _fcs_set_user_credits( iPlugin, iParams )
  87. {
  88. new id = get_param( 1 );
  89. g_iUserCredits[ id ] = max( 0, get_param( 2 ) );
  90. SaveCredits( id );
  91. return g_iUserCredits[ id ];
  92. }
  93.  
  94. public client_authorized( id )
  95. {
  96. if( is_user_bot( id ) )
  97. return 0;
  98.  
  99. get_user_name( id, g_szName[ id ], sizeof ( g_szName[] ) -1 );
  100. LoadCredits( id );
  101.  
  102. return 0;
  103. }
  104.  
  105. public client_disconnect( id )
  106. {
  107. if( is_user_bot( id ) )
  108. return 0;
  109.  
  110. SaveCredits( id );
  111.  
  112. return 0;
  113. }
  114.  
  115. public ClCmdSay( id )
  116. {
  117. static szArgs[192];
  118. read_args( szArgs, sizeof ( szArgs ) -1 );
  119.  
  120. if( !szArgs[ 0 ] )
  121. return 0;
  122.  
  123. new szCommand[ 15 ];
  124. remove_quotes( szArgs );
  125.  
  126. if( equal( szArgs, "/credite", strlen( "/credite" ) )
  127. || equal( szArgs, "/credits", strlen( "/credits" ) ) )
  128. {
  129. replace( szArgs, sizeof ( szArgs ) -1, "/", "" );
  130. formatex( szCommand, sizeof ( szCommand ) -1, "fcs_%s", szArgs );
  131. client_cmd( id, szCommand );
  132. return 1;
  133. }
  134.  
  135. return 0;
  136. }
  137.  
  138. public ClCmdCredits( id )
  139. {
  140. if( !is_user_connected( id ) )
  141. return 1;
  142.  
  143. new szArg[ 32 ];
  144. read_argv( 1, szArg, sizeof ( szArg ) -1 );
  145.  
  146. if( equal( szArg, "" ) )
  147. {
  148.  
  149. ColorChat( id, RED, "^x04%s^x01 Ai^x03 %i^x01 credite.", g_szTag, g_iUserCredits[ id ] );
  150. return 1;
  151. }
  152.  
  153. new iPlayer = cmd_target( id, szArg, 8 );
  154. if( !iPlayer || !is_user_connected( iPlayer ) )
  155. {
  156. ColorChat( id, RED,"^x04%s^x01 Jucatorul specificat nu a fost gasit!", g_szTag, szArg );
  157. return 1;
  158. }
  159.  
  160. new szName[ 32 ];
  161. get_user_name( iPlayer, szName, sizeof ( szName ) -1 );
  162. ColorChat( id, RED,"^x04%s^x01 Jucatorul^x03 %s^x01 are^x03 %i^x01 credit%s", g_szTag, szName, g_iUserCredits[ iPlayer ], g_iUserCredits[ iPlayer ] == 1 ? "." : "e." );
  163.  
  164. return 1;
  165. }
  166.  
  167. public ClCmdSayDepozit( id)
  168. {
  169. if( !is_user_connected( id ) )
  170. return 1;
  171.  
  172. new iTeam = get_user_team( id );
  173.  
  174. if( 1 <= iTeam <= 2 )
  175. {
  176. new iMoney = cs_get_user_money( id );
  177. if( iMoney > 16000 )
  178. {
  179. ColorChat( id, RED, "^x04%s^x01 Ai depozitat^x03 16000$^x01 si ai primit^x03 1^x01 credit.", g_szTag );
  180. cs_set_user_money( id, iMoney-16000 );
  181. g_iUserCredits[ id ] += 1;
  182.  
  183. SaveCredits( id );
  184. return 1;
  185. }
  186. else
  187. {
  188. ColorChat( id, RED, "^x04%s^x01 Iti trebuie^x03 16000$^x01 pentru a putea depozita.", g_szTag );
  189. return 1;
  190. }
  191. }
  192.  
  193. return 1;
  194. }
  195.  
  196. public ClCmdSayRetrage( id)
  197. {
  198. new iTeam = get_user_team( id );
  199.  
  200. if( 1 <= iTeam <= 2 )
  201. {
  202.  
  203. if(Counter == 0) {
  204. ColorChat(id, RED, "^x04%s^x03 Poti sa retragi doar 5 credite pe harta.", g_szTag );
  205. return 1;
  206. }
  207. else if( g_iUserCredits[ id ] > 0 )
  208. {
  209. Counter--;
  210. new iMoney = cs_get_user_money( id );
  211.  
  212. ColorChat( id, RED, "^x04%s^x01 Ai retras^x03 1^x01 credit si, ai primi^x03 16000$^x01.", g_szTag );
  213. ColorChat( id, RED, "^x04%s^x01 Mai ai %d credite valabile de retras pe aceasta harta!", g_szTag, Counter );
  214.  
  215. cs_set_user_money( id, iMoney + 16000 );
  216.  
  217. g_iUserCredits[ id ] -=1;
  218. SaveCredits( id );
  219.  
  220. if( ( iMoney + 16000 ) > 16000 )
  221. {
  222. ColorChat( id, RED, "^x04%s^x03 ATENTIE^x01, ai^x03 %i$^x01 !", g_szTag, iMoney + 16000 );
  223. ColorChat( id, RED, "^x04%s^x01 La spawn, vei pierde tot ce depaseste suma de^x03 16000$^x01.", g_szTag );
  224. return 1;
  225. }
  226. }
  227. else
  228. {
  229. ColorChat(id, RED, "^x04%s^x03 NU^x01 ai ce sa retragi, ai^x03 0^x01 credite.", g_szTag );
  230. return 1;
  231. }
  232.  
  233. }
  234.  
  235. return 1;
  236. }
  237.  
  238. public ClCmdGiveCredits( id )
  239. {
  240. if( !( get_user_flags( id ) & read_flags( g_szGiveCreditsFlag ) ) )
  241. {
  242. client_cmd( id, "echo NU ai acces la aceasta comanda!" );
  243. return 1;
  244. }
  245.  
  246. new szFirstArg[ 32 ], szSecondArg[ 10 ];
  247.  
  248. read_argv( 1, szFirstArg, sizeof ( szFirstArg ) -1 );
  249. read_argv( 2, szSecondArg, sizeof ( szSecondArg ) -1 );
  250.  
  251. if( equal( szFirstArg, "" ) || equal( szSecondArg, "" ) )
  252. {
  253. client_cmd( id, "echo amx_give_credits < nume/ @ALL/ @T/ @CT > < credite >" );
  254. return 1;
  255. }
  256.  
  257. new iPlayers[ 32 ];
  258. new iPlayersNum;
  259.  
  260. new iCredits = str_to_num( szSecondArg );
  261. if( iCredits <= 0 )
  262. {
  263. client_cmd( id, "echo Valoare creditelor trebuie sa fie mai mare decat 0!" );
  264. return 1;
  265. }
  266.  
  267. if( szFirstArg[ 0 ] == '@' )
  268. {
  269.  
  270. switch ( szFirstArg[ 1 ] )
  271. {
  272. case 'A':
  273. {
  274. if( equal( szFirstArg, "@ALL" ) )
  275. {
  276. get_players( iPlayers, iPlayersNum, "ch" );
  277. for( new i = 0; i < iPlayersNum ; i++ )
  278. g_iUserCredits[ iPlayers[ i ] ] += iCredits;
  279.  
  280. new szName[ 32 ];
  281. get_user_name( id, szName, sizeof ( szName ) -1 );
  282. ColorChat( 0, RED, "^x04^%s^x01 Adminul^x03 %s^x01 le-a dat^x03 %i^x01 credite tuturor jucatorilor!", g_szTag, szName, iCredits );
  283. return 1;
  284. }
  285. }
  286.  
  287. case 'T':
  288. {
  289. if( equal( szFirstArg, "@T" ) )
  290. {
  291. get_players( iPlayers, iPlayersNum, "ceh", "TERRORIST" );
  292. if( iPlayersNum == 0 )
  293. {
  294. client_cmd( id, "echo NU se afla niciun jucator in aceasta echipa!" );
  295. return 1;
  296. }
  297. for( new i = 0; i < iPlayersNum ; i++ )
  298. g_iUserCredits[ iPlayers[ i ] ] += iCredits;
  299.  
  300. new szName[ 32 ];
  301. get_user_name( id, szName, sizeof ( szName ) -1 );
  302. ColorChat( 0, RED, "^x04^%s^x01 Adminul^x03 %s^x01 le-a dat^x03 %i^x01 credite jucatorilor de la^x03 TERO^x01!", g_szTag, szName, iCredits );
  303. return 1;
  304. }
  305. }
  306.  
  307. case 'C':
  308. {
  309. if( equal( szFirstArg, "@CT" ) )
  310. {
  311. get_players( iPlayers, iPlayersNum, "ceh", "CT" );
  312. if( iPlayersNum == 0 )
  313. {
  314. client_cmd( id, "echo NU se afla niciun jucator in aceasta echipa!" );
  315. return 1;
  316. }
  317. for( new i = 0; i < iPlayersNum ; i++ )
  318. g_iUserCredits[ iPlayers[ i ] ] += iCredits;
  319.  
  320. new szName[ 32 ];
  321. get_user_name( id, szName, sizeof ( szName ) -1 );
  322. ColorChat( 0, RED, "^x04^%s^x01 Adminul^x03 %s^x01 le-a dat^x03 %i^x01 credite jucatorilor de la^x03 CT^x01!", g_szTag, szName, iCredits );
  323. return 1;
  324. }
  325. }
  326. }
  327. }
  328.  
  329. new iPlayer = cmd_target( id, szFirstArg, 8 );
  330. if( !iPlayer )
  331. {
  332. client_cmd( id, "echo Jucatorul %s nu a fost gasit!", szFirstArg );
  333. return 1;
  334. }
  335.  
  336. g_iUserCredits[ iPlayer ] += iCredits;
  337.  
  338. new szName[ 32 ], _szName[ 32 ];
  339. get_user_name( id, szName, sizeof ( szName ) -1 );
  340. get_user_name( id, _szName, sizeof ( _szName ) -1 );
  341.  
  342. ColorChat( 0, RED, "^x04%s^x01 Adminul^x03 %s^x01 i-a dat^x03 %i^x01 credite lui^x03 %s^x01.", g_szTag, szName, iCredits, _szName );
  343.  
  344. return 1;
  345. }
  346.  
  347. public ClCmdTakeCredits( id )
  348. {
  349. if( !( get_user_flags( id ) & read_flags( g_szGiveCreditsFlag ) ) )
  350. {
  351. client_cmd( id, "echo NU ai acces la aceasta comanda!" );
  352. return 1;
  353. }
  354.  
  355. new szFirstArg[ 32 ], szSecondArg[ 10 ];
  356.  
  357. read_argv( 1, szFirstArg, sizeof ( szFirstArg ) -1 );
  358. read_argv( 2, szSecondArg, sizeof ( szSecondArg ) -1 );
  359.  
  360. if( equal( szFirstArg, "" ) || equal( szSecondArg, "" ) )
  361. {
  362. client_cmd( id, "echo amx_take_credits < nume > < credite >" );
  363. return 1;
  364. }
  365.  
  366. new iCredits = str_to_num( szSecondArg );
  367. if( iCredits <= 0 )
  368. {
  369. client_cmd( id, "echo Valoare creditelor trebuie sa fie mai mare decat 0!" );
  370. return 1;
  371. }
  372.  
  373. new iPlayer = cmd_target( id, szFirstArg, 8 );
  374. if( !iPlayer )
  375. {
  376. client_cmd( id, "echo Jucatorul %s nu a fost gasit!", szFirstArg );
  377. return 1;
  378. }
  379.  
  380. if( g_iUserCredits[ iPlayer ] < iCredits )
  381. {
  382. client_cmd( id, "echo Jucatorul %s nu are atatea credite!Are doar %i", szFirstArg, g_iUserCredits[ iPlayer ] );
  383. return 1;
  384. }
  385.  
  386. g_iUserCredits[ iPlayer ] -= iCredits;
  387.  
  388. new szName[ 32 ], _szName[ 32 ];
  389. get_user_name( id, szName, sizeof ( szName ) -1 );
  390. get_user_name( id, _szName, sizeof ( _szName ) -1 );
  391.  
  392. ColorChat( 0, RED, "^x04%s^x01 Adminul^x03 %s^x01 i-a sters^x03 %i^x01 credite lui^x03 %s^x01.", g_szTag, szName, iCredits, _szName );
  393.  
  394. return 1;
  395. }
  396.  
  397. public Fwd_ClientUserInfoChanged( id, szBuffer )
  398. {
  399. if ( !is_user_connected( id ) )
  400. return FMRES_IGNORED;
  401.  
  402. static szNewName[ 32 ];
  403.  
  404. engfunc( EngFunc_InfoKeyValue, szBuffer, "name", szNewName, sizeof ( szNewName ) -1 );
  405.  
  406. if ( equal( szNewName, g_szName[ id ] ) )
  407. return FMRES_IGNORED;
  408.  
  409. SaveCredits( id );
  410.  
  411. ColorChat( id, RED, "^x04%s^x01 Tocmai ti-ai schimbat numele din^x03 %s^x01 in^x03 %s^x01 !", g_szTag, g_szName[ id ], szNewName );
  412. ColorChat( id, RED, "^x04%s^x01 Am salvat^x03 %i^x01 credite pe numele^x03 %s^x01 !", g_szTag, g_iUserCredits[ id ], g_szName[ id ] );
  413.  
  414. copy( g_szName[ id ], sizeof ( g_szName[] ) -1, szNewName );
  415. LoadCredits( id );
  416.  
  417. ColorChat( id, RED, "^x04%s^x01 Am incarcat^x03 %i^x01 credite de pe noul nume (^x03 %s^x01 ) !", g_szTag, g_iUserCredits[ id ], g_szName[ id ] );
  418.  
  419. return FMRES_IGNORED;
  420. }
  421.  
  422. public LoadCredits( id )
  423. {
  424. static szData[ 256 ], iTimestamp;
  425.  
  426. if( nvault_lookup( iVault, g_szName[ id ], szData, sizeof ( szData ) -1, iTimestamp ) )
  427. {
  428. static szCredits[ 15 ];
  429. parse( szData, szCredits, sizeof ( szCredits ) -1 );
  430. g_iUserCredits[ id ] = str_to_num( szCredits );
  431. return;
  432. }
  433. else
  434. {
  435. g_iUserCredits[ id ] = get_pcvar_num( g_iCvarEntry );
  436. }
  437.  
  438. }
  439.  
  440. public SaveCredits( id )
  441. {
  442. static szData[ 256 ];
  443. formatex( szData, sizeof ( szData ) -1, "%i", g_iUserCredits[ id ] );
  444.  
  445. nvault_set( iVault, g_szName[ id ], szData );
  446. }
  447.  
  448. public plugin_end( )
  449. {
  450. new iDays = get_pcvar_num( g_iCvarPruneDays );
  451. if( iDays > 0 )
  452. {
  453. nvault_prune( iVault, 0, get_systime( ) - ( iDays * ONE_DAY_IN_SECONDS ) );
  454. }
  455.  
  456. nvault_close( iVault );
  457. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement