HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <nvault>
  4. #include <fakemeta>
  5. #include <hamsandwich>
  6. #include <cstrike>
  7. #include <xs>
  8.  
  9. #define PLUGIN "CSGO Remake"
  10. #define VERSION "v0.3-dev"
  11. #define AUTHOR "Kuamquat" //editelte Nanosuit!
  12.  
  13. #pragma compress 1
  14. #pragma semicolon 1
  15.  
  16. #define INSERT_COLOR_TAGS(%1) \
  17. { \
  18. replace_all( %1, charsmax( %1 ), "\n", "^n" ); \
  19. replace_all( %1, charsmax( %1 ), "!g", "^4" ); \
  20. replace_all( %1, charsmax( %1 ), "!t", "^3" ); \
  21. replace_all( %1, charsmax( %1 ), "!n", "^1" ); \
  22. replace_all( %1, charsmax( %1 ), "!y", "^1" ); \
  23. }
  24.  
  25. #define REMOVE_COLOR_TAGS(%1) \
  26. { \
  27. replace_all( %1, charsmax( %1 ), "^1", "" ); \
  28. replace_all( %1, charsmax( %1 ), "^2", "" ); \
  29. replace_all( %1, charsmax( %1 ), "^3", "" ); \
  30. replace_all( %1, charsmax( %1 ), "^4", "" ); \
  31. }
  32.  
  33. #define PRINT_COLORED_MESSAGE(%1,%2) \
  34. { \
  35. message_begin( MSG_ONE_UNRELIABLE, g_user_msgid, _, %1 ); \
  36. write_byte( %1 ); \
  37. write_string( %2 ); \
  38. message_end(); \
  39. }
  40.  
  41. #define MAX_COLOR_MESSAGE 192
  42. #define MAX_PLAYERS 32
  43.  
  44. new g_user_msgid;
  45.  
  46. new bool:g_is_color_chat_supported;
  47.  
  48. stock register_dictionary_colored( const filename[] )
  49. {
  50. if( !register_dictionary( filename ) )
  51. {
  52. return 0;
  53. }
  54.  
  55. new szFileName[ 256 ];
  56. get_localinfo( "amxx_datadir", szFileName, charsmax( szFileName ) );
  57. format( szFileName, charsmax( szFileName ), "%s/lang/%s", szFileName, filename );
  58. new fp = fopen( szFileName, "rt" );
  59.  
  60. if( !fp )
  61. {
  62. log_amx( "Nem sikerult megnyitni ezt a fajlt: %s", szFileName );
  63. return 0;
  64. }
  65.  
  66. new szBuffer[ 512 ], szLang[ 3 ], szKey[ 64 ], szTranslation[ 256 ], TransKey:iKey;
  67.  
  68. while( !feof( fp ) )
  69. {
  70. fgets( fp, szBuffer, charsmax( szBuffer ) );
  71. trim( szBuffer );
  72.  
  73. if( szBuffer[ 0 ] == '[' )
  74. {
  75. strtok( szBuffer[ 1 ], szLang, charsmax( szLang ), szBuffer, 1, ']' );
  76. }
  77. else if( szBuffer[ 0 ] )
  78. {
  79. #if AMXX_VERSION_NUM < 183
  80. strbreak( szBuffer, szKey, charsmax( szKey ), szTranslation, charsmax( szTranslation ) );
  81. #else
  82. argbreak( szBuffer, szKey, charsmax( szKey ), szTranslation, charsmax( szTranslation ) );
  83. #endif
  84.  
  85. iKey = GetLangTransKey( szKey );
  86.  
  87. if( iKey != TransKey_Bad )
  88. {
  89. INSERT_COLOR_TAGS( szTranslation )
  90. AddTranslation( szLang, iKey, szTranslation[ 2 ] );
  91. }
  92. }
  93. }
  94.  
  95. fclose( fp );
  96. return 1;
  97. }
  98.  
  99. stock color_print( const player_id, const lang_formatting[], any:... )
  100. {
  101. new formatted_message[ MAX_COLOR_MESSAGE ];
  102.  
  103. if( player_id )
  104. {
  105. if( g_is_color_chat_supported )
  106. {
  107. // Here all the colored messaged must to start within a color.
  108. formatted_message[ 0 ] = '^1';
  109. vformat( formatted_message[ 1 ], charsmax( formatted_message ) - 1, lang_formatting, 3 );
  110.  
  111. PRINT_COLORED_MESSAGE( player_id, formatted_message )
  112. }
  113. else
  114. {
  115. vformat( formatted_message, charsmax( formatted_message ), lang_formatting, 3 );
  116.  
  117. REMOVE_COLOR_TAGS( formatted_message )
  118. client_print( player_id, print_chat, "%s", formatted_message );
  119. }
  120. }
  121. else
  122. {
  123. new playersCount;
  124. new players[ MAX_PLAYERS ];
  125.  
  126. // Get the server players skipping the bots
  127. get_players( players, playersCount, "c" );
  128.  
  129. // Figure out if at least 1 player is connected, so we don't execute useless code
  130. if( !playersCount )
  131. {
  132. return;
  133. }
  134.  
  135. new player_id;
  136. new string_index;
  137. new argument_index;
  138. new multi_lingual_constants_number;
  139. new params_number;
  140. new Array:multi_lingual_indexes_array;
  141.  
  142. multi_lingual_indexes_array = ArrayCreate();
  143. params_number = numargs();
  144. multi_lingual_constants_number = 0;
  145.  
  146.  
  147. // ML can be used
  148. if( params_number > 3 )
  149. {
  150. for( argument_index = 2; argument_index < params_number; argument_index++ )
  151. {
  152.  
  153. // retrieve original param value and check if it's LANG_PLAYER value
  154. if( getarg( argument_index ) == LANG_PLAYER )
  155. {
  156. string_index = 0;
  157.  
  158. // as LANG_PLAYER == -1, check if next param string is a registered language translation
  159. while( ( formatted_message[ string_index ] =
  160. getarg( argument_index + 1, string_index++ ) ) )
  161. {
  162. }
  163. formatted_message[ string_index ] = '^0';
  164.  
  165. if( GetLangTransKey( formatted_message ) != TransKey_Bad )
  166. {
  167. // Store that argument as LANG_PLAYER so we can alter it later
  168. ArrayPushCell( multi_lingual_indexes_array, argument_index++ );
  169.  
  170. // Update ML array, so we'll know 1st if ML is used, 2nd how many arguments we have to change
  171. multi_lingual_constants_number++;
  172. }
  173.  
  174. }
  175. }
  176. }
  177.  
  178.  
  179. for( --playersCount; playersCount >= 0; --playersCount )
  180. {
  181. player_id = players[ playersCount ];
  182.  
  183. if( multi_lingual_constants_number )
  184. {
  185. for( argument_index = 0; argument_index < multi_lingual_constants_number; argument_index++ )
  186. {
  187. // Set all LANG_PLAYER args to player index ( = player_id ), so we can format the text for that specific player
  188. setarg( ArrayGetCell( multi_lingual_indexes_array, argument_index ), _, player_id );
  189. }
  190. }
  191.  
  192. if( g_is_color_chat_supported )
  193. {
  194. // Here all the colored messaged must to start within a color.
  195. formatted_message[ 0 ] = '^1';
  196. vformat( formatted_message[ 1 ], charsmax( formatted_message ) - 1, lang_formatting, 3 );
  197.  
  198. PRINT_COLORED_MESSAGE( player_id, formatted_message )
  199. }
  200. else
  201. {
  202. vformat( formatted_message, charsmax( formatted_message ), lang_formatting, 3 );
  203.  
  204. REMOVE_COLOR_TAGS( formatted_message )
  205. client_print( player_id, print_chat, "%s", formatted_message );
  206. }
  207. }
  208.  
  209. ArrayDestroy( multi_lingual_indexes_array );
  210. }
  211. }
  212.  
  213. new g_Vault;
  214.  
  215. new bool:g_bLogged[33];
  216. new bool:g_bSkinHasModelP[500]; // Alap 96
  217. //new bool:g_bSkinHasModelW[96];
  218. new g_MsgSync;
  219.  
  220. new g_WarmUpSync;
  221.  
  222. new g_szCfgDir[48];
  223. new g_szConfigFile[48];
  224.  
  225. new Array:g_aRankName;
  226. new Array:g_aRankKills;
  227.  
  228. new g_szDefaultSkinModel[31][48];
  229. new g_szDefaultPSkinModel[31][48];
  230. //new g_szDefaultWSkinModel[31][48];
  231.  
  232. new Array:g_aSkinWeaponID;
  233. new Array:g_aSkinName;
  234. new Array:g_aSkinModel;
  235. new Array:g_aSkinModelP;
  236. //new Array:g_aSkinModelW;
  237. new Array:g_aSkinType;
  238. new Array:g_aSkinChance;
  239. new Array:g_aSkinCostMin;
  240.  
  241. new Array:g_aDropSkin;
  242. new Array:g_aCraftSkin;
  243.  
  244. new Array:g_aTombola;
  245.  
  246. new Array:g_aJackpotSkins;
  247. new Array:g_aJackpotUsers;
  248.  
  249. new g_iRanksNum;
  250. new g_iSkinsNum;
  251.  
  252. new g_iUserSelectedSkin[33][31];
  253. new g_iUserSkins[33][500];
  254. new g_iUserPoints[33];
  255. new g_iUserDusts[33];
  256. new g_iUserKeys[33];
  257. new g_iUserCases[33];
  258. new g_iUserKills[33];
  259. new g_iUserRank[33];
  260.  
  261. new g_iDropSkinNum;
  262. new g_iCraftSkinNum;
  263.  
  264. new g_szName[33][32];
  265. new g_szUserPassword[33][16];
  266. new g_szUserSavedPass[33][16];
  267. new g_iUserPassFail[33];
  268.  
  269. new c_RegOpen;
  270.  
  271. new fw_CUIC;
  272. new HamHook:fw_PA[3];
  273. new HamHook:fw_SA[3];
  274. new HamHook:fw_ID[31];
  275. new HamHook:fw_ICD[31];
  276. new HamHook:fw_S1;
  277. new HamHook:fw_S2;
  278. new HamHook:fw_K1;
  279. new HamHook:fw_K2;
  280.  
  281. new c_DropType;
  282. new g_iDropType = 1;
  283.  
  284. new c_KeyPrice;
  285. new g_iKeyPrice = 250;
  286.  
  287. new c_DropChance;
  288. new g_iDropChance = 75;
  289.  
  290. new c_CraftCost;
  291. new g_iCraftCost = 10;
  292.  
  293. new c_Suicide;
  294.  
  295. new g_iLastOpenCraft[33];
  296.  
  297. new c_ShowDropCraft;
  298. new g_iShowDropCraft;
  299.  
  300. new g_Msg_SayText;
  301. new g_Msg_DeathMsg;
  302. new g_Msg_StatusIcon;
  303.  
  304. new g_iUserSellItem[33];
  305. new g_iUserItemPrice[33];
  306. new g_bUserSell[33];
  307. new c_WaitForPlace;
  308. new g_iWaitForPlace = 30;
  309. new g_iLastPlace[33];
  310. new c_KeyMinCost;
  311. new g_iKeyMinCost = 100;
  312. new c_CostMultiplier;
  313. new g_iCostMultiplier = 20;
  314. new c_CaseMinCost;
  315. new g_iCaseMinCost = 100;
  316.  
  317. new g_iMenuType[33];
  318. new c_DustForTransform;
  319. new g_iDustForTransform = 1;
  320. new c_ReturnPercent;
  321. new g_iReturnPercent;
  322.  
  323. new g_iGiftTarget[33];
  324. new g_iGiftItem[33];
  325.  
  326. new g_bTradeAccept[33];
  327. new g_iTradeTarget[33];
  328. new g_iTradeItem[33];
  329. new g_bTradeActive[33];
  330. new g_bTradeSecond[33];
  331. new g_iTradeRequest[33];
  332.  
  333. new g_iRouletteCost;
  334. new g_bRoulettePlay[33];
  335.  
  336. new g_iTombolaPlayers;
  337. new g_iTombolaPrize;
  338. new g_bUserPlay[33];
  339. new g_iNextTombolaStart;
  340. new c_TombolaCost;
  341. new g_iTombolaCost = 50;
  342. new c_TombolaTimer;
  343. new g_iTombolaTimer = 120;
  344. new g_bTombolaWork = 1;
  345.  
  346. new c_RouletteMin;
  347. new g_iRouletteMin = 2;
  348. new c_RouletteMax;
  349. new g_iRouletteMax = 10;
  350. new g_iUserBetPoints[33];
  351.  
  352. new bool:g_bJackpotWork;
  353. new g_iUserJackpotItem[33];
  354. new g_bUserPlayJackpot[33];
  355. new g_iJackpotClose;
  356. new c_JackpotTimer;
  357.  
  358. new g_iMaxPlayers;
  359. new c_ShowHUD;
  360.  
  361. new g_iRoundNum;
  362. new bool:g_bWarmUp;
  363. new c_WarmUpDuration;
  364. new g_iStartMoney;
  365. new p_StartMoney;
  366. new c_Competitive;
  367. new g_iCompetitive;
  368. new c_BestPoints;
  369. new c_Respawn;
  370. new c_RespawnDelay;
  371. new g_iRespawnDelay;
  372. new g_iTimer;
  373. new p_NextMap;
  374. new bool:g_bTeamSwap;
  375. new p_Freezetime;
  376. new g_iFreezetime;
  377.  
  378. new c_RankUpBonus;
  379. new c_CmdAccess;
  380. new c_OverrideMenu;
  381.  
  382. new bool:g_bBombExplode;
  383. new bool:g_bBombDefused;
  384. new g_iBombPlanter;
  385. new g_iBombDefuser;
  386.  
  387. new g_iRoundKills[33];
  388. new g_iDigit[33];
  389. new g_iUserMVP[33];
  390. new c_MVPMsgType;
  391. new g_iMVPMsgType;
  392. new g_iDealDamage[33];
  393. new c_AMinPoints;
  394. new g_iAMinPoints;
  395. new c_AMaxPoints;
  396. new g_iAMaxPoints;
  397. new c_MVPMinPoints;
  398. new g_iMVPMinPoints;
  399. new c_MVPMaxPoints;
  400. new g_iMVPMaxPoints;
  401.  
  402. new szMessage[128];
  403.  
  404. new c_RankModels;
  405. new g_iRankModels;
  406. new g_iRankEnt[33];
  407. new g_iInfoTargetAlloc;
  408.  
  409. new c_PruneDays;
  410. new g_iPruneDays = 30;
  411.  
  412. new c_HMinPoints;
  413. new g_iHMinPoints;
  414. new c_HMaxPoints;
  415. new g_iHMaxPoints;
  416. new c_KMinPoints;
  417. new g_iKMinPoints;
  418. new c_KMaxPoints;
  419. new g_iKMaxPoints;
  420. new c_HMinChance;
  421. new g_iHMinChance;
  422. new c_HMaxChance;
  423. new g_iHMaxChance;
  424. new c_KMinChance;
  425. new g_iKMinChance;
  426. new c_KMaxChance;
  427. new g_iKMaxChance;
  428. new g_iMostDamage[33];
  429. new g_iDamage[33][33];
  430.  
  431. new bool:g_IsChangeAllowed[33];
  432. new bool:ShortThrow;
  433.  
  434. new g_szRankModel[100] =
  435. {
  436. "models/csgo_remake/3dranks.mdl"
  437. };
  438.  
  439. new g_szTWin[] =
  440. {
  441. "csgo_remake/twingo.wav"
  442. };
  443. new g_szCTWin[] =
  444. {
  445. "csgo_remake/ctwingo.wav"
  446. };
  447.  
  448. new g_szNadeModels[3][] =
  449. {
  450. "models/csgo_remake/alap/w_he_csgor.mdl",
  451. "models/csgo_remake/alap/w_fb_csgor.mdl",
  452. "models/csgo_remake/alap/w_sg_csgor.mdl"
  453. };
  454.  
  455. new GrenadeName[3][] =
  456. {
  457. "weapon_hegrenade",
  458. "weapon_flashbang",
  459. "weapon_smokegrenade"
  460. };
  461.  
  462. new g_szWeaponEntName[31][] =
  463. {
  464. "",
  465. "weapon_p228",
  466. "",
  467. "weapon_scout",
  468. "weapon_hegrenade",
  469. "weapon_xm1014",
  470. "weapon_c4",
  471. "weapon_mac10",
  472. "weapon_aug",
  473. "weapon_smokegrenade",
  474. "weapon_elite",
  475. "weapon_fiveseven",
  476. "weapon_ump45",
  477. "weapon_sg550",
  478. "weapon_galil",
  479. "weapon_famas",
  480. "weapon_usp",
  481. "weapon_glock18",
  482. "weapon_awp",
  483. "weapon_mp5navy",
  484. "weapon_m249",
  485. "weapon_m3",
  486. "weapon_m4a1",
  487. "weapon_tmp",
  488. "weapon_g3sg1",
  489. "weapon_flashbang",
  490. "weapon_deagle",
  491. "weapon_sg552",
  492. "weapon_ak47",
  493. "weapon_knife",
  494. "weapon_p90"
  495. };
  496.  
  497. new g_iMaxBpAmmo[11] =
  498. {
  499. 0, 30, 90, 200, 90, 32, 100, 100, 35, 52, 120
  500. };
  501.  
  502. new szSprite[11][] =
  503. {
  504. "number_0",
  505. "number_1",
  506. "number_2",
  507. "number_3",
  508. "number_4",
  509. "number_5",
  510. "number_6",
  511. "number_7",
  512. "number_8",
  513. "number_9",
  514. "dmg_rad"
  515. };
  516.  
  517. public plugin_init()
  518. {
  519. register_plugin(PLUGIN, VERSION, AUTHOR);
  520.  
  521. register_cvar("csgo_remake_version", "1Gx", 68, 0.00);
  522. set_cvar_string("csgo_remake_version", "1Gx");
  523. register_cvar("csgo_remake_author", "Nubo | Translater: Nanosuit ", 68, 0.00);
  524. set_cvar_string("csgo_remake_author", "Nubo | Translater: Nanosuit");
  525. c_PruneDays = register_cvar("csgor_prunedays", "30", 0, 0.00);
  526.  
  527. register_dictionary_colored("csgoremake.txt");
  528. g_Msg_SayText = get_user_msgid("SayText");
  529. g_Msg_DeathMsg = get_user_msgid("DeathMsg");
  530. g_Msg_StatusIcon = get_user_msgid("StatusIcon");
  531. register_message(g_Msg_SayText, "Message_SayText");
  532. register_message(g_Msg_DeathMsg, "Message_DeathMsg");
  533. register_clcmd("say", "Message_SayHandle");
  534. register_clcmd("say_team", "Message_SayHandleTeam");
  535. register_event("HLTV", "ev_NewRound", "a", "1=0", "2=0");
  536. register_logevent("logev_Restart_Round", 2, "1&Restart_Round");
  537. register_logevent("logev_Game_Commencing", 2, "1&Game_Commencing");
  538. register_event("SendAudio", "ev_RoundWon_T", "a", "2&%!MRAD_terwin");
  539. register_event("SendAudio", "ev_RoundWon_CT", "a", "2&%!MRAD_ctwin");
  540.  
  541. for (new i; i < sizeof GrenadeName; i++)
  542. {
  543. fw_PA[i] = RegisterHam(Ham_Weapon_PrimaryAttack, GrenadeName[i], "Ham_Grenade_PA", 1);
  544. fw_SA[i] = RegisterHam(Ham_Weapon_SecondaryAttack, GrenadeName[i], "Ham_Grenade_SA", 1);
  545. }
  546.  
  547. fw_CUIC = register_forward(122, "fw_FM_ClientUserInfoChanged", 0);
  548. g_iInfoTargetAlloc = engfunc(EngFunc_AllocString, "info_target");
  549. c_OverrideMenu = register_cvar("csgor_override_menu", "1", 0, 0.00);
  550. c_ShowHUD = register_cvar("csgor_show_hud", "1", 0, 0.00);
  551. c_HMinPoints = register_cvar("csgor_head_minpoints", "11", 0, 0.00);
  552. c_HMaxPoints = register_cvar("csgor_head_maxpoints", "15", 0, 0.00);
  553. c_KMinPoints = register_cvar("csgor_kill_minpoints", "6", 0, 0.00);
  554. c_KMaxPoints = register_cvar("csgor_kill_maxpoints", "10", 0, 0.00);
  555. c_HMinChance = register_cvar("csgor_head_minchance", "25", 0, 0.00);
  556. c_HMaxChance = register_cvar("csgor_head_maxchance", "100", 0, 0.00);
  557. c_KMinChance = register_cvar("csgor_kill_minchance", "0", 0, 0.00);
  558. c_KMaxChance = register_cvar("csgor_kill_maxchance", "100", 0, 0.00);
  559. c_AMinPoints = register_cvar("csgor_assist_minpoints", "3", 0, 0.00);
  560. c_AMaxPoints = register_cvar("csgor_assist_maxpoints", "5", 0, 0.00);
  561. c_MVPMinPoints = register_cvar("csgor_mvp_minpoints", "20", 0, 0.00);
  562. c_MVPMaxPoints = register_cvar("csgor_mvp_maxpoints", "30", 0, 0.00);
  563. c_MVPMsgType = register_cvar("csgor_mvp_msgtype", "0", 0, 0.00);
  564. c_TombolaCost = register_cvar("csgor_tombola_cost", "50", 0, 0.00);
  565. c_RegOpen = register_cvar("csgor_register_open", "1", 0, 0.00);
  566. c_BestPoints = register_cvar("csgor_best_points", "300", 0, 0.00);
  567. c_RankUpBonus = register_cvar("csgor_rangup_bonus", "kc|200", 0, 0.00);
  568. c_ReturnPercent = register_cvar("csgor_return_percent", "10", 0, 0.00);
  569. c_DropType = register_cvar("csgor_drop_type", "1", 0, 0.00);
  570. c_KeyPrice = register_cvar("csgor_key_price", "250", 0, 0.00);
  571. c_TombolaTimer = register_cvar("csgor_tombola_timer", "180", 0, 0.00);
  572. c_JackpotTimer = register_cvar("csgor_jackpot_timer", "120", 0, 0.00);
  573. c_Competitive = register_cvar("csgor_competitive_mode", "1", 0, 0.00);
  574. c_WarmUpDuration = register_cvar("csgor_warmup_duration", "60", 0, 0.00);
  575. c_ShowDropCraft = register_cvar("csgor_show_dropcraft", "1", 0, 0.00);
  576. c_RouletteMin = register_cvar("csgor_roulette_min", "2", 0, 0.00);
  577. c_RouletteMax = register_cvar("csgor_roulette_max", "8", 0, 0.00);
  578. c_CostMultiplier = register_cvar("csgor_item_cost_multiplier", "20", 0, 0.00);
  579.  
  580. register_event("DeathMsg", "ev_DeathMsg", "a", "1>0");
  581. register_event("Damage", "ev_Damage", "b", "2!0", "3=0", "4!0");
  582. fw_S1 = RegisterHam(Ham_Spawn, "player", "Ham_Player_Spawn_Post", 1);
  583. fw_S2 = RegisterHam(Ham_Spawn, "player", "Ham_Player_Spawn_Pre", 0);
  584. fw_K1 = RegisterHam(Ham_Killed, "player", "Ham_Player_Killed_Post", 1);
  585. fw_K2 = RegisterHam(Ham_Killed, "player", "Ham_Player_Killed_Pre", 0);
  586. c_Respawn = register_cvar("csgor_respawn_enable", "0", 0, 0.00);
  587. c_RespawnDelay = register_cvar("csgor_respawn_delay", "3", 0, 0.00);
  588. c_DropChance = register_cvar("csgor_dropchance", "85", 0, 0.00);
  589. c_CraftCost = register_cvar("csgor_craft_cost", "10", 0, 0.00);
  590. c_CaseMinCost = register_cvar("csgor_case_min_cost", "100", 0, 0.00);
  591. c_KeyMinCost = register_cvar("csgor_key_min_cost", "100", 0, 0.00);
  592. c_WaitForPlace = register_cvar("csgor_wait_for_place", "30", 0, 0.00);
  593. c_DustForTransform = register_cvar("csgor_dust_for_transform", "1", 0, 0.00);
  594.  
  595. c_Suicide = register_cvar("csgor_suicide", "1", 0, 0.00);
  596. if (0 < get_pcvar_num(c_Suicide))
  597. {
  598. register_forward(FM_ClientKill, "concmd_kill");
  599. }
  600.  
  601. g_MsgSync = CreateHudSyncObj(0);
  602. g_WarmUpSync = CreateHudSyncObj(0);
  603. g_iMaxPlayers = get_maxplayers();
  604.  
  605. for (new i = 1; i < 31; i++)
  606. {
  607. if (g_szWeaponEntName[i][0])
  608. {
  609. fw_ID[i] = RegisterHam(Ham_Item_Deploy, g_szWeaponEntName[i], "Ham_Item_Deploy_Post", 1);
  610. fw_ICD[i] = RegisterHam(Ham_CS_Item_CanDrop, g_szWeaponEntName[i], "Ham_Item_Can_Drop", 0);
  611. }
  612. }
  613.  
  614. register_clcmd("say /reg", "clcmd_say_reg", -1, "", -1);
  615. register_clcmd("say /menu", "clcmd_say_menu", -1, "", -1);
  616. register_clcmd("say /skin", "clcmd_say_skin", -1, "", -1);
  617. register_clcmd("say /accept", "clcmd_say_accept", -1, "", -1);
  618. register_clcmd("say /deny", "clcmd_say_deny", -1, "", -1);
  619. if (0 < get_pcvar_num(c_OverrideMenu))
  620. {
  621. register_clcmd("chooseteam", "clcmd_chooseteam", -1, "", -1);
  622. }
  623. register_concmd("UserPassword", "concmd_password", -1, "", -1);
  624. register_concmd("ItemPrice", "concmd_itemprice", -1, "", -1);
  625. register_concmd("BetPoints", "concmd_betpoints", -1, "", -1);
  626.  
  627. g_Vault = nvault_open("csgoremake");
  628. if (g_Vault == -1)
  629. {
  630. set_fail_state("[CS:GO] Nem sikerült megnyitni a csgoremake.vault fájlt.");
  631. return 0;
  632. }
  633. else
  634. {
  635. log_amx("[CS:GO] csgoremake.vault fájl sikeresen betöltve.");
  636. }
  637.  
  638. c_CmdAccess = register_cvar("csgor_commands_access", "a", 0, 0.00);
  639. new Flags[8];
  640. get_pcvar_string(c_CmdAccess, Flags, 7);
  641. new Access = read_flags(Flags);
  642. register_concmd("csgor_givepoints", "concmd_givepoints", Access, "<Név> <Mennyiség>", -1);
  643. register_concmd("csgor_givecases", "concmd_givecases", Access, "<Név> <Mennyiség>", -1);
  644. register_concmd("csgor_givekeys", "concmd_givekeys", Access, "<Név> <Mennyiség>", -1);
  645. register_concmd("csgor_givedusts", "concmd_givedusts", Access, "<Név> <Mennyiség>", -1);
  646. register_concmd("csgor_setskins", "concmd_giveskins", Access, "<Név> <Skin ID> <Mennyiség>", -1);
  647. register_concmd("csgor_setrank", "concmd_setrank", Access, "<Név> <Rank ID>", -1);
  648. register_concmd("csgor_finddata", "concmd_finddata", Access, "<Név>", -1);
  649. register_concmd("csgor_resetdata", "concmd_resetdata", Access, "<Név> <Mód>", -1);
  650. register_concmd("csgor_getinfo", "concmd_getinfo", Access, "<Típus> <Index>", -1);
  651.  
  652. p_Freezetime = get_cvar_pointer("mp_freezetime");
  653. p_StartMoney = get_cvar_pointer("mp_startmoney");
  654.  
  655.  
  656. _InfoPlugin();
  657. return 0;
  658. }
  659.  
  660. public plugin_precache()
  661. {
  662. precache_sound(g_szTWin);
  663. precache_sound(g_szCTWin);
  664.  
  665. for (new i = 0; i < 3; i++)
  666. {
  667. precache_model(g_szNadeModels[i]);
  668. }
  669. new fp = fopen(g_szConfigFile, "rt");
  670. if (!fp)
  671. {
  672. set_fail_state("[CS:GO] Nem sikerült megnyitni a csgoremake.ini fájlt");
  673. return 0;
  674. }
  675. else
  676. {
  677. log_amx("[CS:GO] csgoremake.ini fájl sikeresen betöltve.");
  678. }
  679. new buff[128];
  680. new section;
  681. new leftpart[48];
  682. new rightpart[48];
  683. new weaponid[4];
  684. new weaponname[32];
  685. new weaponmodel[48];
  686. new weaponP[48];
  687. //new weaponW[48];
  688. new weapontype[4];
  689. new weaponchance[8];
  690. new weaponcostmin[8];
  691. while (!feof(fp))
  692. {
  693. fgets(fp, buff, 127);
  694. if (!(!buff[0] || buff[0] == 59))
  695. {
  696. if (buff[0] == 91)
  697. {
  698. section += 1;
  699. }
  700. switch (section)
  701. {
  702. case 1:
  703. {
  704. if (buff[0] != 91)
  705. {
  706. parse(buff, leftpart, 47, rightpart, 47);
  707. ArrayPushString(g_aRankName, leftpart);
  708. ArrayPushCell(g_aRankKills, str_to_num(rightpart));
  709. g_iRanksNum += 1;
  710. }
  711. }
  712. case 2:
  713. {
  714. if (buff[0] != 91)
  715. {
  716. //parse(buff, leftpart, 47, rightpart, 47, weaponP, 47, weaponW, 47);
  717. parse(buff, leftpart, 47, rightpart, 47, weaponP, 47);
  718. new wid = str_to_num(leftpart);
  719. copy(g_szDefaultSkinModel[wid], 47, rightpart);
  720. copy(g_szDefaultPSkinModel[wid], 47, weaponP);
  721. if (strlen(rightpart) > 0 && file_exists(rightpart))
  722. {
  723. precache_model(rightpart);
  724. }
  725. else if (0 < strlen(rightpart) && !file_exists(rightpart))
  726. {
  727. new error[128];
  728. formatex(error, 127 + strlen(rightpart), "[CS:GO] csgoremake.ini fájl [DEAFULT] szakaszából hiányzik ez a fájl: ^"%s^".", rightpart);
  729. set_fail_state(error);
  730. return 0;
  731. }
  732. if (strlen(weaponP) > 0 && file_exists(weaponP))
  733. {
  734. precache_model(weaponP);
  735. }
  736. else if (0 < strlen(weaponP) && !file_exists(weaponP))
  737. {
  738. new error[128];
  739. formatex(error, 127 + strlen(weaponP), "[CS:GO] csgoremake.ini fájl [DEAFULT] szakaszából hiányzik ez a model/skin: ^"%s^".", weaponP);
  740. set_fail_state(error);
  741. return 0;
  742. }
  743. //if (strlen(weaponW) > 0 && file_exists(weaponW))
  744. //{
  745. // precache_model(weaponW);
  746. //}
  747. //else if (0 < strlen(weaponW) && !file_exists(weaponW))
  748. //{
  749. // new error[128];
  750. // formatex(error, 127 + strlen(weaponW), "[CS:GO] File ^"%s^" from section [DEFAULT] in csgoremake.ini is missing.", weaponW);
  751. // set_fail_state(error);
  752. // return 0;
  753. //}
  754. }
  755. }
  756. case 3:
  757. {
  758. if (buff[0] != 91)
  759. {
  760. //parse(buff, weaponid, 3, weaponname, 31, weaponmodel, 47, weaponP, 47, weaponW, 47, weapontype, 3, weaponchance, 7, weaponcostmin, 7);
  761. parse(buff, weaponid, 3, weaponname, 31, weaponmodel, 47, weaponP, 47, weapontype, 3, weaponchance, 7, weaponcostmin, 7);
  762. ArrayPushCell(g_aSkinWeaponID, str_to_num(weaponid));
  763. ArrayPushString(g_aSkinName, weaponname);
  764. ArrayPushString(g_aSkinModel, weaponmodel);
  765. ArrayPushString(g_aSkinModelP, weaponP);
  766. //ArrayPushString(g_aSkinModelW, weaponW);
  767. ArrayPushString(g_aSkinType, weapontype);
  768. ArrayPushCell(g_aSkinChance, str_to_num(weaponchance));
  769. ArrayPushCell(g_aSkinCostMin, str_to_num(weaponcostmin));
  770. if (0 < strlen(weaponmodel) && file_exists(weaponmodel))
  771. {
  772. precache_model(weaponmodel);
  773. }
  774. else if (0 < strlen(weaponmodel) && !file_exists(weaponmodel))
  775. {
  776. new error[128];
  777. formatex(error, 127 + strlen(weaponmodel), "[CS:GO] csgoremake.ini fájl [SKINS] szakaszából hiányzik ez a fájl: ^"%s^".", weaponmodel);
  778. set_fail_state(error);
  779. return 0;
  780. }
  781. if (0 < strlen(weaponP) && file_exists(weaponP))
  782. {
  783. g_bSkinHasModelP[g_iSkinsNum] = true;
  784. precache_model(weaponP);
  785. }
  786. else if (0 < strlen(weaponP) && !file_exists(weaponP))
  787. {
  788. new error[128];
  789. formatex(error, 127 + strlen(weaponP), "[CS:GO] csgoremake.ini fájl [SKINS] szakaszából hiányzik ez a skin: ^"%s^".", weaponP);
  790. set_fail_state(error);
  791. return 0;
  792. }
  793. //if (0 < strlen(weaponW) && file_exists(weaponW))
  794. //{
  795. // g_bSkinHasModelW[g_iSkinsNum] = true;
  796. // precache_model(weaponW);
  797. //}
  798. //else if (0 < strlen(weaponW) && !file_exists(weaponW))
  799. //{
  800. // new error[128];
  801. // formatex(error, 127 + strlen(weaponW), "[CS:GO] File ^"%s^" from section [SKINS] in csgoremake.ini is missing.", weaponW);
  802. // set_fail_state(error);
  803. // return 0;
  804. //}
  805. switch (weapontype[0])
  806. {
  807. case 99:
  808. {
  809. ArrayPushCell(g_aCraftSkin, g_iSkinsNum);
  810. g_iCraftSkinNum += 1;
  811. }
  812. case 100:
  813. {
  814. ArrayPushCell(g_aDropSkin, g_iSkinsNum);
  815. g_iDropSkinNum += 1;
  816. }
  817. default:
  818. {
  819. }
  820. }
  821. g_iSkinsNum += 1;
  822. }
  823. }
  824. default:
  825. {
  826. }
  827. }
  828. }
  829. }
  830. fclose(fp);
  831. c_RankModels = register_cvar("csgor_3d_ranks", "1", 0, 0.00);
  832. g_iRankModels = get_pcvar_num(c_RankModels);
  833. if (0 < g_iRankModels)
  834. {
  835. precache_model(g_szRankModel);
  836. }
  837. return 0;
  838. }
  839.  
  840. public plugin_cfg()
  841. {
  842. g_is_color_chat_supported = (is_running("czero") || is_running("cstrike"));
  843.  
  844. g_user_msgid = get_user_msgid( "SayText" );
  845.  
  846. new id;
  847. new wid;
  848. id = 1;
  849. while (id <= g_iMaxPlayers)
  850. {
  851. wid = 1;
  852. while (wid <= 30)
  853. {
  854. g_iUserSelectedSkin[id][wid] = -1;
  855. wid++;
  856. }
  857. id++;
  858. }
  859. server_cmd("exec %s/csgoremake.cfg", g_szCfgDir);
  860. g_iTombolaTimer = get_pcvar_num(c_TombolaTimer);
  861. new Float:timer = float(g_iTombolaTimer);
  862. set_task(timer, "task_TombolaRun", 2000, "", 0, "b", 0);
  863. g_iNextTombolaStart = g_iTombolaTimer + get_systime(0);
  864. return 0;
  865. }
  866.  
  867. public plugin_natives()
  868. {
  869. get_configsdir(g_szCfgDir, 47);
  870. formatex(g_szConfigFile, 47, "%s/csgoremake.ini", g_szCfgDir);
  871. if (!file_exists(g_szConfigFile))
  872. {
  873. return 0;
  874. }
  875. g_aRankName = ArrayCreate(32, 1);
  876. g_aRankKills = ArrayCreate(1, 1);
  877. g_aSkinWeaponID = ArrayCreate(1, 1);
  878. g_aSkinName = ArrayCreate(32, 1);
  879. g_aSkinModel = ArrayCreate(48, 1);
  880. g_aSkinModelP = ArrayCreate(48, 1);
  881. //g_aSkinModelW = ArrayCreate(48, 1);
  882. g_aSkinType = ArrayCreate(2, 1);
  883. g_aSkinChance = ArrayCreate(1, 1);
  884. g_aSkinCostMin = ArrayCreate(1, 1);
  885. g_aDropSkin = ArrayCreate(1, 1);
  886. g_aCraftSkin = ArrayCreate(1, 1);
  887. g_aTombola = ArrayCreate(1, 1);
  888. g_aJackpotSkins = ArrayCreate(1, 1);
  889. g_aJackpotUsers = ArrayCreate(1, 1);
  890. register_native("csgor_get_user_points", "native_get_user_points", 0);
  891. register_native("csgor_set_user_points", "native_set_user_points", 0);
  892. register_native("csgor_get_user_cases", "native_get_user_cases", 0);
  893. register_native("csgor_set_user_cases", "native_set_user_cases", 0);
  894. register_native("csgor_get_user_keys", "native_get_user_keys", 0);
  895. register_native("csgor_set_user_keys", "native_set_user_keys", 0);
  896. register_native("csgor_get_user_dusts", "native_get_user_dusts", 0);
  897. register_native("csgor_set_user_dusts", "native_set_user_dusts", 0);
  898. register_native("csgor_get_user_rank", "native_get_user_rank", 0);
  899. register_native("csgor_set_user_rank", "native_set_user_rank", 0);
  900. register_native("csgor_get_user_skins", "native_get_user_skins", 0);
  901. register_native("csgor_set_user_skins", "native_set_user_skins", 0);
  902. register_native("csgor_is_user_logged", "native_is_user_logged", 0);
  903. return 0;
  904. }
  905.  
  906. public plugin_end()
  907. {
  908. ArrayDestroy(g_aRankName);
  909. ArrayDestroy(g_aRankKills);
  910. ArrayDestroy(g_aSkinWeaponID);
  911. ArrayDestroy(g_aSkinName);
  912. ArrayDestroy(g_aSkinModel);
  913. ArrayDestroy(g_aSkinModelP);
  914. ArrayDestroy(g_aSkinType);
  915. ArrayDestroy(g_aSkinChance);
  916. ArrayDestroy(g_aSkinCostMin);
  917. ArrayDestroy(g_aDropSkin);
  918. ArrayDestroy(g_aCraftSkin);
  919. if (0 < g_iPruneDays)
  920. {
  921. nvault_prune(g_Vault, 0, get_systime(0) - g_iPruneDays * 86400);
  922. }
  923. nvault_close(g_Vault);
  924. DisableHamForward(fw_S1);
  925. DisableHamForward(fw_S2);
  926. DisableHamForward(fw_K1);
  927. DisableHamForward(fw_K2);
  928. unregister_forward(122, fw_CUIC, 0);
  929. return 0;
  930. }
  931.  
  932. public client_putinserver(id)
  933. {
  934. set_task(10.00, "task_Info", id + 7000, "", 0, "", 0);
  935. get_user_name(id, g_szName[id], 31);
  936. g_iRankModels = get_pcvar_num(c_RankModels);
  937. if (0 < g_iRankModels)
  938. {
  939. new eng = engfunc(21, g_iInfoTargetAlloc);
  940. g_iRankEnt[id] = eng;
  941. if (pev_valid(eng))
  942. {
  943. set_pev(eng, pev_movetype, 12);
  944. set_pev(eng, pev_aiment, id);
  945. engfunc(EngFunc_SetModel, eng, g_szRankModel);
  946. }
  947. }
  948. g_IsChangeAllowed[id] = false;
  949. g_iDigit[id] = 0;
  950. g_iMostDamage[id] = 0;
  951. g_szUserPassword[id] = "";
  952. g_szUserSavedPass[id] = "";
  953. g_iUserPassFail[id] = 0;
  954. g_bLogged[id] = false;
  955. g_iUserPoints[id] = 0;
  956. g_iUserDusts[id] = 0;
  957. g_iUserKeys[id] = 0;
  958. g_iUserCases[id] = 0;
  959. g_iUserKills[id] = 0;
  960. g_iUserRank[id] = 0;
  961.  
  962. g_bUserSell[id] = 0;
  963. g_iUserSellItem[id] = -1;
  964. g_iLastPlace[id] = 0;
  965.  
  966. g_iMenuType[id] = 0;
  967.  
  968. g_iGiftTarget[id] = 0;
  969. g_iGiftItem[id] = -1;
  970.  
  971. g_iTradeTarget[id] = 0;
  972. g_iTradeItem[id] = -1;
  973. g_bTradeActive[id] = 0;
  974. g_bTradeAccept[id] = 0;
  975. g_bTradeSecond[id] = 0;
  976. g_iTradeRequest[id] = 0;
  977.  
  978. g_bUserPlay[id] = 0;
  979. g_iUserBetPoints[id] = 10;
  980. g_bRoulettePlay[id] = 0;
  981. g_iUserJackpotItem[id] = -1;
  982. g_bUserPlayJackpot[id] = 0;
  983. new wid = 1;
  984. while (wid <= 30)
  985. {
  986. g_iUserSelectedSkin[id][wid] = -1;
  987. wid++;
  988. }
  989. new sid;
  990. while (sid < 96)
  991. {
  992. g_iUserSkins[id][sid] = 0;
  993. sid++;
  994. }
  995. if(0 < get_pcvar_num(c_ShowHUD))
  996. {
  997. set_task(1.00, "task_HUD", id, "", 0, "b", 0);
  998. }
  999. }
  1000.  
  1001. public task_Info(task)
  1002. {
  1003. new id = task - 7000;
  1004. if (!is_user_connected(id))
  1005. {
  1006. return 0;
  1007. }
  1008. if (0 < id && 32 >= id)
  1009. {
  1010. color_print(id, "^4[Mód Infó] ^1Készítők: ^3Nubo ^1& ^3Kuamquat ^1| Fordította: ^3Nanosuit");
  1011. }
  1012. return 0;
  1013. }
  1014.  
  1015. _InfoPlugin()
  1016. {
  1017. new grelease[33] = "playtest-20210322";
  1018. new version[33] = "v0.3-dev";
  1019. new author[128] = "https://www.github.com/kuamquat940";
  1020. new rurl[128] = "https://www.github.com/kuamquat940/csgoremake/releases";
  1021. server_print("");
  1022. server_print("---------- CSGO REMAKE ----------");
  1023. server_print("[*] Github kiadás neve: %s", grelease);
  1024. server_print("[*] Verzió: %s", version);
  1025. server_print("[*] Készítő: %s", author);
  1026. server_print("[*] Tartsd frissítve a plugint: %s", rurl);
  1027. server_print("---------------------------------");
  1028. server_print("");
  1029. return 0;
  1030. }
  1031.  
  1032. public ev_NewRound()
  1033. {
  1034. p_NextMap = get_cvar_pointer("amx_nextmap");
  1035. arrayset(g_iRoundKills, 0, 33);
  1036. arrayset(g_bRoulettePlay, 0, 33);
  1037. g_iPruneDays = get_pcvar_num(c_PruneDays);
  1038. g_iRespawnDelay = get_pcvar_num(c_RespawnDelay);
  1039. g_iDropChance = get_pcvar_num(c_DropChance);
  1040. g_iCraftCost = get_pcvar_num(c_CraftCost);
  1041. g_iTombolaCost = get_pcvar_num(c_TombolaCost);
  1042. g_iDropType = get_pcvar_num(c_DropType);
  1043. g_iKeyPrice = get_pcvar_num(c_KeyPrice);
  1044. g_iCaseMinCost = get_pcvar_num(c_CaseMinCost);
  1045. g_iKeyMinCost = get_pcvar_num(c_KeyMinCost);
  1046. g_iWaitForPlace = get_pcvar_num(c_WaitForPlace);
  1047. g_iDustForTransform = get_pcvar_num(c_DustForTransform);
  1048. g_iReturnPercent = get_pcvar_num(c_ReturnPercent);
  1049. g_iHMinPoints = get_pcvar_num(c_HMinPoints);
  1050. g_iHMaxPoints = get_pcvar_num(c_HMaxPoints);
  1051. g_iKMinPoints = get_pcvar_num(c_KMinPoints);
  1052. g_iKMaxPoints = get_pcvar_num(c_KMaxPoints);
  1053. g_iHMinChance = get_pcvar_num(c_HMinChance);
  1054. g_iHMaxChance = get_pcvar_num(c_HMaxChance);
  1055. g_iKMinChance = get_pcvar_num(c_KMinChance);
  1056. g_iKMaxChance = get_pcvar_num(c_KMaxChance);
  1057. g_iAMinPoints = get_pcvar_num(c_AMinPoints);
  1058. g_iAMaxPoints = get_pcvar_num(c_AMaxPoints);
  1059. g_iMVPMinPoints = get_pcvar_num(c_MVPMinPoints);
  1060. g_iMVPMaxPoints = get_pcvar_num(c_MVPMaxPoints);
  1061. g_iMVPMsgType = get_pcvar_num(c_MVPMsgType);
  1062. g_iShowDropCraft = get_pcvar_num(c_ShowDropCraft);
  1063. g_iRouletteMin = get_pcvar_num(c_RouletteMin);
  1064. g_iRouletteMax = get_pcvar_num(c_RouletteMax);
  1065. g_iCostMultiplier = get_pcvar_num(c_CostMultiplier);
  1066. g_iCompetitive = get_pcvar_num(c_Competitive);
  1067. if (1 > g_iCompetitive)
  1068. {
  1069. return 0;
  1070. }
  1071. if (g_bWarmUp || 0 < get_pcvar_num(c_Respawn))
  1072. {
  1073. return 0;
  1074. }
  1075. if (2 > get_playersnum())
  1076. {
  1077. return 0;
  1078. }
  1079. if (!IsHalf() && !IsLastRound() && 0 < g_iRoundNum)
  1080. {
  1081. new szNextMap[32];
  1082. get_pcvar_string(p_NextMap, szNextMap, 31);
  1083. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_COMPETITIVE_INFO", g_iRoundNum, szNextMap);
  1084. }
  1085. if (IsLastRound())
  1086. {
  1087. set_pcvar_num(p_Freezetime, 10);
  1088. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_MAP_END");
  1089. _ShowBestPlayers();
  1090. set_task(7.00, "task_Map_End", 0, "", 0, "", 0);
  1091. }
  1092. if (IsHalf() && !g_bTeamSwap)
  1093. {
  1094. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_HALF");
  1095. _ShowBestPlayers();
  1096. new Float:delay = 0.0;
  1097. new i = 1;
  1098. while (i <= g_iMaxPlayers)
  1099. {
  1100. if (0 < i && 32 >= i)
  1101. {
  1102. delay = 0.2 * i;
  1103. set_task(delay, "task_Delayed_Swap", i + 8000, "", 0, "", 0);
  1104. }
  1105. i++;
  1106. }
  1107. server_cmd("exec %s/csgoremake.cfg", g_szCfgDir);
  1108. set_task(7.00, "task_Team_Swap", 0, "", 0, "", 0);
  1109. g_iRoundNum = 15;
  1110. }
  1111. if (!g_bWarmUp || !IsHalf())
  1112. {
  1113. g_iRoundNum += 1;
  1114. }
  1115. return 0;
  1116. }
  1117.  
  1118. bool:IsHalf()
  1119. {
  1120. if (!g_bTeamSwap && g_iRoundNum == 16)
  1121. {
  1122. return true;
  1123. }
  1124. return false;
  1125. }
  1126.  
  1127. bool:IsLastRound()
  1128. {
  1129. if (g_bTeamSwap && g_iRoundNum == 31)
  1130. {
  1131. return true;
  1132. }
  1133. return false;
  1134. }
  1135.  
  1136. _ShowBestPlayers()
  1137. {
  1138. new Pl[32];
  1139. new n;
  1140. new p;
  1141. new i;
  1142. new BestPlayer;
  1143. new Frags;
  1144. new BestFrags;
  1145. new MVP;
  1146. new BestMVP;
  1147. new bonus = get_pcvar_num(c_BestPoints);
  1148. get_players(Pl, n, "he", "TERRORIST");
  1149. if (0 < n)
  1150. {
  1151. i = 0;
  1152. while (i < n)
  1153. {
  1154. p = Pl[i];
  1155. MVP = g_iUserMVP[p];
  1156. if (MVP < 1 || MVP < BestMVP)
  1157. {
  1158. }
  1159. else
  1160. {
  1161. Frags = get_user_frags(p);
  1162. if (MVP > BestMVP)
  1163. {
  1164. BestPlayer = p;
  1165. BestMVP = MVP;
  1166. BestFrags = Frags;
  1167. }
  1168. else
  1169. {
  1170. if (Frags > BestFrags)
  1171. {
  1172. BestPlayer = p;
  1173. BestFrags = Frags;
  1174. }
  1175. }
  1176. }
  1177. i++;
  1178. }
  1179. }
  1180. if (BestPlayer && BestPlayer <= g_iMaxPlayers)
  1181. {
  1182. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_BEST_T", g_szName[BestPlayer], BestMVP, bonus);
  1183. }
  1184. else
  1185. {
  1186. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_ZERO_MVP", "Terrorist");
  1187. }
  1188. if (g_bLogged[BestPlayer])
  1189. {
  1190. g_iUserPoints[BestPlayer] += bonus;
  1191. }
  1192. get_players(Pl, n, "he", "CT");
  1193. BestPlayer = 0;
  1194. BestMVP = 0;
  1195. BestFrags = 0;
  1196. if (0 < n)
  1197. {
  1198. i = 0;
  1199. while (i < n)
  1200. {
  1201. p = Pl[i];
  1202. MVP = g_iUserMVP[p];
  1203. if (MVP < 1 || MVP < BestMVP)
  1204. {
  1205. }
  1206. else
  1207. {
  1208. Frags = get_user_frags(p);
  1209. if (MVP > BestMVP)
  1210. {
  1211. BestPlayer = p;
  1212. BestMVP = MVP;
  1213. BestFrags = Frags;
  1214. }
  1215. else
  1216. {
  1217. if (Frags > BestFrags)
  1218. {
  1219. BestPlayer = p;
  1220. BestFrags = Frags;
  1221. }
  1222. }
  1223. }
  1224. i++;
  1225. }
  1226. }
  1227. if (BestPlayer && BestPlayer <= g_iMaxPlayers)
  1228. {
  1229. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_BEST_CT", g_szName[BestPlayer], BestMVP, bonus);
  1230. }
  1231. else
  1232. {
  1233. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_ZERO_MVP", "Counter-Terrorist");
  1234. }
  1235. if (g_bLogged[BestPlayer])
  1236. {
  1237. g_iUserPoints[BestPlayer] += bonus;
  1238. }
  1239. return 0;
  1240. }
  1241.  
  1242. public task_Delayed_Swap(task)
  1243. {
  1244. new id = task + -8000;
  1245. if (!(0 < id && 32 >= id || !is_user_connected(id)) || !is_user_connected(id))
  1246. {
  1247. return 0;
  1248. }
  1249. switch(cs_get_user_team(id))
  1250. {
  1251. case CS_TEAM_T:
  1252. {
  1253. cs_set_user_team(id, CS_TEAM_CT);
  1254. }
  1255.  
  1256. case CS_TEAM_CT:
  1257. {
  1258. cs_set_user_team(id, CS_TEAM_T);
  1259. }
  1260. }
  1261.  
  1262. return 0;
  1263. }
  1264.  
  1265. public task_Team_Swap()
  1266. {
  1267. g_bTeamSwap = true;
  1268. set_pcvar_num(p_Freezetime, g_iFreezetime);
  1269. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_RESTART");
  1270. server_cmd("sv_restart 1");
  1271. return 0;
  1272. }
  1273.  
  1274. public task_Map_End()
  1275. {
  1276. emessage_begin(MSG_ALL, SVC_INTERMISSION, {0,0,0}, 0);
  1277. emessage_end();
  1278. return 0;
  1279. }
  1280.  
  1281. public ev_RoundWon_T()
  1282. {
  1283. client_cmd(0, "spk ^"%s^"", g_szTWin);
  1284. new data[1];
  1285. data[0] = 1;
  1286. set_task(1.00, "task_Check_Conditions", 0, data, 1, "a", 1);
  1287. if (IsHalf())
  1288. {
  1289. g_iFreezetime = get_pcvar_num(p_Freezetime);
  1290. set_pcvar_num(p_Freezetime, 10);
  1291. }
  1292. return 0;
  1293. }
  1294.  
  1295. public ev_RoundWon_CT()
  1296. {
  1297. client_cmd(0, "spk ^"%s^"", g_szCTWin);
  1298. new data[1];
  1299. data[0] = 2;
  1300. set_task(0.00, "task_Check_Conditions", 0, data, 1, "a", 1);
  1301. if (IsHalf())
  1302. {
  1303. g_iFreezetime = get_pcvar_num(p_Freezetime);
  1304. set_pcvar_num(p_Freezetime, 10);
  1305. }
  1306. return 0;
  1307. }
  1308.  
  1309. public bomb_explode(id, id2)
  1310. {
  1311. g_iBombPlanter = id;
  1312. g_bBombExplode = true;
  1313. return 0;
  1314. }
  1315.  
  1316. public bomb_defused(id)
  1317. {
  1318. g_iBombDefuser = id;
  1319. g_bBombDefused = true;
  1320. return 0;
  1321. }
  1322.  
  1323. public task_Check_Conditions(data[])
  1324. {
  1325. new team = data[0];
  1326. switch (team)
  1327. {
  1328. case 1:
  1329. {
  1330. if (g_bBombExplode)
  1331. {
  1332. _ShowMVP(g_iBombPlanter, 1);
  1333. }
  1334. else
  1335. {
  1336. new top1 = _GetTopKiller(1);
  1337. _ShowMVP(top1, 0);
  1338. }
  1339. }
  1340. case 2:
  1341. {
  1342. if (g_bBombDefused)
  1343. {
  1344. _ShowMVP(g_iBombDefuser, 2);
  1345. }
  1346. else
  1347. {
  1348. new top1 = _GetTopKiller(2);
  1349. _ShowMVP(top1, 0);
  1350. }
  1351. }
  1352. default:
  1353. {
  1354. }
  1355. }
  1356. return 0;
  1357. }
  1358.  
  1359. _ShowMVP(id, event)
  1360. {
  1361. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  1362. {
  1363. return 0;
  1364. }
  1365. if (event && 1 > g_iRoundKills[id] || 1 > g_iRoundKills[id])
  1366. {
  1367. return 0;
  1368. }
  1369. g_iUserMVP[id]++;
  1370. switch (g_iMVPMsgType)
  1371. {
  1372. case 0:
  1373. {
  1374. switch (event)
  1375. {
  1376. case 0:
  1377. {
  1378. color_print(0, "^4%s^1 Kör MVP: ^3%s^1 %L: ^4%d", "[CS:GO]", g_szName[id], -1, "CSGOR_MOST_KILL", g_iRoundKills[id]);
  1379. }
  1380. case 1:
  1381. {
  1382. color_print(0, "^4%s^1 Kör MVP: ^3%s^1 %L", "[CS:GO]", g_szName[id], -1, "CSGOR_PLANTING");
  1383. }
  1384. case 2:
  1385. {
  1386. color_print(0, "^4%s^1 Kör MVP: ^3%s^1 %L", "[CS:GO]", g_szName[id], -1, "CSGOR_DEFUSING");
  1387. }
  1388. default:
  1389. {
  1390. }
  1391. }
  1392. }
  1393. case 1:
  1394. {
  1395. set_hudmessage(0, 255, 0, -1.00, 0.10, 0, 0.00, 5.00, 0.00, 0.00, -1);
  1396. switch (event)
  1397. {
  1398. case 0:
  1399. {
  1400. show_hudmessage(0, "Kör MVP : %s ^n%L (%d).", g_szName[id], -1, "CSGOR_MOST_KILL", g_iRoundKills[id]);
  1401. }
  1402. case 1:
  1403. {
  1404. show_hudmessage(0, "Kör MVP : %s ^n%L", g_szName[id], -1, "CSGOR_PLANTING");
  1405. }
  1406. case 2:
  1407. {
  1408. show_hudmessage(0, "Kör MVP : %s ^n%L", g_szName[id], -1, "CSGOR_DEFUSING");
  1409. }
  1410. default:
  1411. {
  1412. }
  1413. }
  1414. }
  1415. default:
  1416. {
  1417. }
  1418. }
  1419. _GiveBonus(id, 1);
  1420. return 0;
  1421. }
  1422.  
  1423. _GetTopKiller(team)
  1424. {
  1425. new Pl[32];
  1426. new n;
  1427. switch(team)
  1428. {
  1429. case 1:
  1430. {
  1431. get_players(Pl, n, "h", "T");
  1432. }
  1433. case 2:
  1434. {
  1435. get_players(Pl, n, "h", "CT");
  1436. }
  1437. }
  1438. new p;
  1439. new pFrags;
  1440. new pDamage;
  1441. new tempF;
  1442. new tempD;
  1443. new tempID;
  1444. new i;
  1445. while (i < n)
  1446. {
  1447. p = Pl[i];
  1448. pFrags = g_iRoundKills[p];
  1449. if (!(pFrags < tempF))
  1450. {
  1451. pDamage = g_iDealDamage[p];
  1452. if (pFrags > tempF || pDamage > tempD)
  1453. {
  1454. tempID = p;
  1455. tempF = pFrags;
  1456. tempD = pDamage;
  1457. }
  1458. }
  1459. i++;
  1460. }
  1461. if (0 < tempF)
  1462. {
  1463. return tempID;
  1464. }
  1465. return 0;
  1466. }
  1467.  
  1468. _GiveBonus(id, type)
  1469. {
  1470. if (!g_bLogged[id])
  1471. {
  1472. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_REGISTER");
  1473. return 0;
  1474. }
  1475. new rpoints;
  1476. switch (type)
  1477. {
  1478. case 0:
  1479. {
  1480. rpoints = random_num(g_iAMinPoints, g_iAMaxPoints);
  1481. }
  1482. case 1:
  1483. {
  1484. rpoints = random_num(g_iMVPMinPoints, g_iMVPMaxPoints);
  1485. }
  1486. default:
  1487. {
  1488. return 0;
  1489. }
  1490. }
  1491. g_iUserPoints[id] += rpoints;
  1492. _SaveData(id);
  1493. set_hudmessage(255, 255, 255, -1.00, 0.25, 0, 6.00, 2.00, 0.00, 0.00, -1);
  1494. show_hudmessage(id, "%L", id, "CSGOR_BONUS_POINTS", rpoints);
  1495. return 0;
  1496. }
  1497.  
  1498. public logev_Restart_Round()
  1499. {
  1500. remove_task(10000, 0);
  1501. g_bJackpotWork = true;
  1502. new timer = get_pcvar_num(c_JackpotTimer);
  1503. set_task(float(timer), "task_Jackpot", 10000, "", 0, "b", 0);
  1504. g_iJackpotClose = timer + get_systime(0);
  1505. return 0;
  1506. }
  1507.  
  1508. public logev_Game_Commencing()
  1509. {
  1510. g_bTeamSwap = false;
  1511. g_iRoundNum = 0;
  1512. if (1 > get_pcvar_num(c_Competitive))
  1513. {
  1514. return 0;
  1515. }
  1516. g_bWarmUp = true;
  1517. g_iStartMoney = get_pcvar_num(p_StartMoney);
  1518. set_pcvar_num(p_StartMoney, 16000);
  1519. g_iTimer = get_pcvar_num(c_WarmUpDuration);
  1520. set_task(1.00, "task_WarmUp_CD", 9000, "", 0, "b", 0);
  1521. return 0;
  1522. }
  1523.  
  1524. public task_WarmUp_CD(task)
  1525. {
  1526. if (0 < g_iTimer)
  1527. {
  1528. set_hudmessage(0, 255, 0, -1.00, 0.80, 0, 0.00, 1.10, 0.00, 0.00, -1);
  1529. new second[64];
  1530. if (1 < g_iTimer)
  1531. {
  1532. formatex(second, 63, "%L", 0, "CSGOR_TOMB_TEXT_SECONDS");
  1533. }
  1534. else
  1535. {
  1536. formatex(second, 63, "%L", 0, "CSGOR_TOMB_TEXT_SECOND");
  1537. }
  1538. ShowSyncHudMsg(0, g_WarmUpSync, "Bemelegítő: %d %s", g_iTimer, second);
  1539. }
  1540. else
  1541. {
  1542. g_iRoundNum = 1;
  1543. g_bWarmUp = false;
  1544. set_pcvar_num(p_StartMoney, g_iStartMoney);
  1545. remove_task(task, 0);
  1546. server_cmd("sv_restart 1");
  1547. }
  1548. g_iTimer -= 1;
  1549. return 0;
  1550. }
  1551.  
  1552. public fw_FM_ClientUserInfoChanged(id)
  1553. {
  1554. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  1555. {
  1556. return 0;
  1557. }
  1558. static szNewName[32];
  1559. static szOldName[32];
  1560. pev(id, 6, szOldName, 31);
  1561. if (szOldName[0])
  1562. {
  1563. get_user_info(id, "name", szNewName, 31);
  1564. if (!equal(szOldName, szNewName, 0) && !g_IsChangeAllowed[id])
  1565. {
  1566. set_user_info(id, "name", szOldName);
  1567. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_CANT_CHANGE_ACC");
  1568. return 0;
  1569. }
  1570. }
  1571. return 0;
  1572. }
  1573.  
  1574. public Ham_Player_Spawn_Pre(id)
  1575. {
  1576. if (!is_user_connected(id) && !is_user_alive(id))
  1577. {
  1578. return 0;
  1579. }
  1580. new Float:flNextAttack = get_pdata_float(id, 83, 5, 5);
  1581. set_pdata_float(id, 83, 0.00, 5, 5);
  1582. new iPlayerItems = 368;
  1583. new iWeapon = 0;
  1584. while (iPlayerItems <= 369)
  1585. {
  1586. iWeapon = get_pdata_cbase(id, iPlayerItems, 5, 5);
  1587. if (pev_valid(iWeapon))
  1588. {
  1589. set_pdata_int(iWeapon, 54, 1, 4, 5);
  1590. ExecuteHamB(Ham_Item_PostFrame, iWeapon);
  1591. }
  1592. iPlayerItems++;
  1593. }
  1594. set_pdata_float(id, 83, flNextAttack, 5, 5);
  1595. return 0;
  1596. }
  1597.  
  1598. public Ham_Player_Spawn_Post(id)
  1599. {
  1600. if (!is_user_connected(id) && !is_user_alive(id))
  1601. {
  1602. return 0;
  1603. }
  1604. g_iRankModels = get_pcvar_num(c_RankModels);
  1605. if (0 < g_iRankModels && g_bLogged[id])
  1606. {
  1607. _SetRankModels(id);
  1608. }
  1609. set_task(0.25, "task_SetIcon", id + 32, "", 0, "", 0);
  1610. g_iMostDamage[id] = 0;
  1611. new iAmmoIndex = 1;
  1612. while (iAmmoIndex <= 10)
  1613. {
  1614. set_pdata_int(id, iAmmoIndex + 376, g_iMaxBpAmmo[iAmmoIndex], 5, 5);
  1615. iAmmoIndex++;
  1616. }
  1617. return 0;
  1618. }
  1619.  
  1620. _SetRankModels(id)
  1621. {
  1622. if (!g_bLogged[id])
  1623. {
  1624. return 0;
  1625. }
  1626. new rank = g_iUserRank[id];
  1627. new ent = g_iRankEnt[id];
  1628. if (pev_valid(ent))
  1629. {
  1630. set_pev(ent, pev_body, rank + 1);
  1631. }
  1632. return 0;
  1633. }
  1634.  
  1635. public task_SetIcon(task)
  1636. {
  1637. new id = task + -32;
  1638. if (0 < id && 32 >= id)
  1639. {
  1640. _SetKillsIcon(id, 1);
  1641. }
  1642. return 0;
  1643. }
  1644.  
  1645. _SetKillsIcon(id, reset)
  1646. {
  1647. switch (reset)
  1648. {
  1649. case 0:
  1650. {
  1651. new num = g_iDigit[id];
  1652. if (num > 10)
  1653. {
  1654. return 0;
  1655. }
  1656. num--;
  1657. message_begin(MSG_ONE_UNRELIABLE, g_Msg_StatusIcon, {0,0,0}, id);
  1658. write_byte(0);
  1659. write_string(szSprite[num]);
  1660. message_end();
  1661. num++;
  1662. message_begin(MSG_ONE_UNRELIABLE, g_Msg_StatusIcon, {0,0,0}, id);
  1663. write_byte(1);
  1664. if (num > 9)
  1665. {
  1666. write_string(szSprite[10]);
  1667. }
  1668. else
  1669. {
  1670. write_string(szSprite[num]);
  1671. }
  1672. write_byte(0);
  1673. write_byte(200);
  1674. write_byte(0);
  1675. message_end();
  1676. }
  1677. case 1:
  1678. {
  1679. new num = g_iDigit[id];
  1680. message_begin(MSG_ONE_UNRELIABLE, g_Msg_StatusIcon, {0,0,0}, id);
  1681. write_byte(0);
  1682. if (num > 9)
  1683. {
  1684. write_string(szSprite[10]);
  1685. }
  1686. else
  1687. {
  1688. write_string(szSprite[num]);
  1689. }
  1690. message_end();
  1691. g_iDigit[id] = 0;
  1692. message_begin(MSG_ONE_UNRELIABLE, g_Msg_StatusIcon, {0,0,0}, id);
  1693. write_byte(1);
  1694. write_string(szSprite[0]);
  1695. write_byte(0);
  1696. write_byte(200);
  1697. write_byte(0);
  1698. message_end();
  1699. }
  1700. default:
  1701. {
  1702. }
  1703. }
  1704. return 0;
  1705. }
  1706.  
  1707. public Ham_Player_Killed_Pre(id)
  1708. {
  1709. new iActiveItem = get_pdata_cbase(id, 373, 5, 0);
  1710. if (!pev_valid(iActiveItem))
  1711. {
  1712. return 0;
  1713. }
  1714. new imp = pev(iActiveItem, 82);
  1715. if (0 < imp)
  1716. {
  1717. return 0;
  1718. }
  1719. new iId = get_pdata_int(iActiveItem, 43, 4, 0);
  1720. if (1 << iId & 570425936)
  1721. {
  1722. return 0;
  1723. }
  1724. new skin = g_iUserSelectedSkin[id][iId];
  1725. if (skin != -1)
  1726. {
  1727. set_pev(iActiveItem, 82, skin + 1);
  1728. }
  1729. return 0;
  1730. }
  1731.  
  1732. public Ham_Player_Killed_Post(id)
  1733. {
  1734. if (g_bWarmUp)
  1735. {
  1736. set_task(1.00, "task_Respawn_Player", id + 6000, "", 0, "", 0);
  1737. return 0;
  1738. }
  1739. if (0 < get_pcvar_num(c_Respawn))
  1740. {
  1741. set_hudmessage(0, 255, 0, -1.00, 0.60, 0, 0.00, 2.50, 0.00, 0.10, -1);
  1742. new second[64];
  1743. if (1 > g_iRespawnDelay)
  1744. {
  1745. formatex(second, 63, "%L", 0, "CSGOR_TOMB_TEXT_SECOND");
  1746. }
  1747. else
  1748. {
  1749. formatex(second, 63, "%L", 0, "CSGOR_TOMB_TEXT_SECONDS");
  1750. }
  1751. new temp[64];
  1752. formatex(temp, 63, "%L", id, "CSGOR_RESPAWN_TEXT");
  1753. ShowSyncHudMsg(id, g_MsgSync, "%s %d %s...", temp, g_iRespawnDelay, second);
  1754. set_task(float(g_iRespawnDelay), "task_Respawn_Player", id + 6000, "", 0, "", 0);
  1755. }
  1756. return 0;
  1757. }
  1758.  
  1759. public task_Respawn_Player(task)
  1760. {
  1761. new id = task + -6000;
  1762. if (is_user_alive(id))
  1763. {
  1764. return 0;
  1765. }
  1766. switch(cs_get_user_team(id))
  1767. {
  1768. case CS_TEAM_SPECTATOR:
  1769. {
  1770. return 0;
  1771. }
  1772. }
  1773. respawn_player_manually(id);
  1774. return 0;
  1775. }
  1776.  
  1777. public respawn_player_manually(id)
  1778. {
  1779. ExecuteHamB(Ham_CS_RoundRespawn, id);
  1780. return 0;
  1781. }
  1782.  
  1783. public task_HUD(id)
  1784. {
  1785. if (g_bLogged[id] == true) {
  1786. set_hudmessage(0, 255, 0, 0.02, 0.90, 0, 6.00, 1.10, 0.00, 0.00, -1);
  1787. ShowSyncHudMsg(id, g_MsgSync, "%L", id, "CSGOR_HUD_INFO", g_iUserPoints[id], g_iUserKeys[id], g_iUserCases[id]);
  1788. } else {
  1789. set_hudmessage(255, 0, 0, 0.02, 0.90, 0, 6.00, 1.10, 0.00, 0.00, -1);
  1790. ShowSyncHudMsg(id, g_MsgSync, "%L", id, "CSGOR_NOT_LOGGED");
  1791. }
  1792. return 0;
  1793. }
  1794.  
  1795. public clcmd_say_reg(id)
  1796. {
  1797. if (g_bLogged[id] == true)
  1798. {
  1799. _ShowMainMenu(id);
  1800. }
  1801. else
  1802. {
  1803. _ShowRegMenu(id);
  1804. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_MUST_LOGIN");
  1805. }
  1806. return 0;
  1807. }
  1808.  
  1809. public clcmd_say_skin(id)
  1810. {
  1811. if (g_bLogged[id] == true)
  1812. {
  1813. _ShowSkinMenu(id);
  1814. }
  1815. else
  1816. {
  1817. _ShowRegMenu(id);
  1818. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_MUST_LOGIN");
  1819. }
  1820. return 0;
  1821. }
  1822.  
  1823. public clcmd_say_menu(id)
  1824. {
  1825. if (g_bLogged[id] == true)
  1826. {
  1827. _ShowMainMenu(id);
  1828. }
  1829. else
  1830. {
  1831. _ShowRegMenu(id);
  1832. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_MUST_LOGIN");
  1833. }
  1834. return 0;
  1835. }
  1836.  
  1837. public clcmd_chooseteam(id)
  1838. {
  1839. clcmd_say_menu(id);
  1840. return 1;
  1841. }
  1842.  
  1843. _LoadData(id)
  1844. {
  1845. new Data[576];
  1846. new Timestamp;
  1847. if (nvault_lookup(g_Vault, g_szName[id], Data, 575, Timestamp) == 1)
  1848. {
  1849. new buffer[64];
  1850. new userData[6][16];
  1851. strtok(Data, g_szUserSavedPass[id], 32, Data, 575, 61, 0);
  1852. strtok(Data, buffer, 63, Data, 575, 42, 0);
  1853. new i = 0;
  1854. while (i < 6)
  1855. {
  1856. strtok(buffer, userData[i], 32, buffer, 32, 44, 0);
  1857. i++;
  1858. }
  1859.  
  1860. g_iUserPoints[id] = str_to_num(userData[0]);
  1861. g_iUserDusts[id] = str_to_num(userData[1]);
  1862. g_iUserKeys[id] = str_to_num(userData[2]);
  1863. g_iUserCases[id] = str_to_num(userData[3]);
  1864. g_iUserKills[id] = str_to_num(userData[4]);
  1865. g_iUserRank[id] = str_to_num(userData[5]);
  1866.  
  1867. new skinbuff[96];
  1868. new temp[4];
  1869. strtok(Data, Data, 575, skinbuff, 95, 35, 0);
  1870. new j = 1;
  1871. while (j <= 30 && skinbuff[0] && strtok(skinbuff, temp, 3, skinbuff, 95, 44, 0))
  1872. {
  1873. g_iUserSelectedSkin[id][j] = str_to_num(temp);
  1874. j++;
  1875. }
  1876. new weaponData[8];
  1877. j = 0;
  1878. while (j < 96 && Data[0] && strtok(Data, weaponData, 7, Data, 575, 44, 0))
  1879. {
  1880. g_iUserSkins[id][j] = str_to_num(weaponData);
  1881. j++;
  1882. }
  1883. }
  1884. return 0;
  1885. }
  1886.  
  1887. _DisplayMenu(id, menu)
  1888. {
  1889. if (!is_user_connected(id))
  1890. return PLUGIN_HANDLED;
  1891.  
  1892. set_pdata_int(id, 205, 0, 5, 0);
  1893. menu_display(id, menu, 0);
  1894. return 0;
  1895. }
  1896.  
  1897. bool:IsRegistered(id)
  1898. {
  1899. new Data[576];
  1900. new Timestamp;
  1901. if (nvault_lookup(g_Vault, g_szName[id], Data, 575, Timestamp))
  1902. {
  1903. return true;
  1904. }
  1905. return false;
  1906. }
  1907.  
  1908. _MenuExit(menu)
  1909. {
  1910. menu_destroy(menu);
  1911. return 1;
  1912. }
  1913.  
  1914. _ShowRegMenu(id)
  1915. {
  1916. if (1 > get_pcvar_num(c_RegOpen))
  1917. {
  1918. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_REG_CLOSED");
  1919. return 0;
  1920. }
  1921. new temp[64];
  1922. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_REG_MENU");
  1923. new menu = menu_create(temp, "reg_menu_handler", 0);
  1924. new szItem[2];
  1925. szItem[1] = 0;
  1926. formatex(temp, 63, "\r%L \w%s", id, "CSGOR_REG_ACCOUNT", g_szName[id]);
  1927. szItem[0] = 0;
  1928. menu_additem(menu, temp, szItem, 0, -1);
  1929. formatex(temp, 63, "\r%L \w%s^n", id, "CSGOR_REG_PASSWORD", g_szUserPassword[id]);
  1930. szItem[0] = 1;
  1931. menu_additem(menu, temp, szItem, 0, -1);
  1932. if (g_bLogged[id] == false)
  1933. {
  1934. if (IsRegistered(id)) {
  1935. formatex(temp, 63, "\r%L", id, "CSGOR_REG_LOGIN");
  1936. szItem[0] = 3;
  1937. menu_additem(menu, temp, szItem, 0, -1);
  1938. } else {
  1939. formatex(temp, 63, "\r%L", id, "CSGOR_REG_REGISTER");
  1940. szItem[0] = 4;
  1941. menu_additem(menu, temp, szItem, 0, -1);
  1942. }
  1943. }
  1944. _DisplayMenu(id, menu);
  1945. return 0;
  1946. }
  1947.  
  1948. public reg_menu_handler(id, menu, item)
  1949. {
  1950. if (item == -3)
  1951. {
  1952. return _MenuExit(menu);
  1953. }
  1954. new itemdata[2];
  1955. new dummy;
  1956. new index;
  1957. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  1958. index = itemdata[0];
  1959. new pLen = strlen(g_szUserPassword[id]);
  1960. switch (index)
  1961. {
  1962. case 0:
  1963. {
  1964. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_CANT_CHANGE_ACC");
  1965. _ShowRegMenu(id);
  1966. }
  1967. case 1:
  1968. {
  1969. if (g_bLogged[id] != true)
  1970. {
  1971. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_REG_INSERT_PASS", 6);
  1972. client_cmd(id, "messagemode UserPassword");
  1973. }
  1974. }
  1975. case 2:
  1976. {
  1977. g_bLogged[id] = false;
  1978. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_LOGOUT_SUCCESS");
  1979. }
  1980. case 3:
  1981. {
  1982. _LoadData(id);
  1983. new spLen = strlen(g_szUserSavedPass[id]);
  1984. if (strlen(g_szUserPassword[id]) <= 0) {
  1985. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_REG_INSERT_PASS", 6);
  1986. client_cmd(id, "messagemode UserPassword");
  1987. return 0;
  1988. }
  1989. if (!equal(g_szUserPassword[id], g_szUserSavedPass[id], spLen))
  1990. {
  1991. g_iUserPassFail[id]++;
  1992. if (3 <= g_iUserPassFail[id])
  1993. {
  1994. new reason[32];
  1995. formatex(reason, 31, "%L", id, "CSGOR_MAX_PASS_FAIL", 3);
  1996. server_cmd("kick #%d ^"%s^"", get_user_userid(id), reason);
  1997. }
  1998. else
  1999. {
  2000. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_PASS_FAIL", g_iUserPassFail[id], 3);
  2001. _ShowRegMenu(id);
  2002. }
  2003. }
  2004. else
  2005. {
  2006. g_bLogged[id] = true;
  2007. _ShowMainMenu(id);
  2008. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_LOGIN_SUCCESS");
  2009. }
  2010. }
  2011. case 4:
  2012. {
  2013. if (pLen < 6)
  2014. {
  2015. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_REG_INSERT_PASS", 6);
  2016. _ShowRegMenu(id);
  2017. return _MenuExit(menu);
  2018. }
  2019. copy(g_szUserSavedPass[id], 15, g_szUserPassword[id]);
  2020. _SaveData(id);
  2021. _ShowRegMenu(id);
  2022. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_REG_SUCCESS", g_szUserSavedPass[id]);
  2023. }
  2024. default:
  2025. {
  2026. }
  2027. }
  2028. return _MenuExit(menu);
  2029. }
  2030.  
  2031. public concmd_password(id)
  2032. {
  2033. if (g_bLogged[id] == true)
  2034. {
  2035. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_ALREADY_LOGIN");
  2036. return 1;
  2037. }
  2038. new data[32];
  2039. read_args(data, 31);
  2040. remove_quotes(data);
  2041. if (6 > strlen(data))
  2042. {
  2043. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_REG_INSERT_PASS", 6);
  2044. client_cmd(id, "messagemode UserPassword");
  2045. return 1;
  2046. }
  2047. copy(g_szUserPassword[id], 15, data);
  2048. _ShowRegMenu(id);
  2049. return 1;
  2050. }
  2051.  
  2052. _SaveData(id)
  2053. {
  2054. new Data[576];
  2055. new infobuff[64];
  2056. new weapbuff[384];
  2057. new skinbuff[96];
  2058. formatex(infobuff, 63, "%s=%d,%d,%d,%d,%d,%d", g_szUserSavedPass[id], g_iUserPoints[id], g_iUserDusts[id], g_iUserKeys[id], g_iUserCases[id], g_iUserKills[id], g_iUserRank[id]);
  2059. formatex(weapbuff, 383, "%d", g_iUserSkins[id]);
  2060. new i = 1;
  2061. while (i < 96)
  2062. {
  2063. format(weapbuff, 383, "%s,%d", weapbuff, g_iUserSkins[id][i]);
  2064. i++;
  2065. }
  2066. formatex(skinbuff, 95, "%d", g_iUserSelectedSkin[id][1]);
  2067. i = 2;
  2068. while (i <= 30)
  2069. {
  2070. format(skinbuff, 95, "%s,%d", skinbuff, g_iUserSelectedSkin[id][i]);
  2071. i++;
  2072. }
  2073. formatex(Data, 575, "%s*%s#%s", infobuff, weapbuff, skinbuff);
  2074. nvault_set(g_Vault, g_szName[id], Data);
  2075. return 0;
  2076. }
  2077.  
  2078. _ShowMainMenu(id)
  2079. {
  2080. new temp[96];
  2081. formatex(temp, 95, "\r%s \w%L^n%L", "[CS:GO]", id, "CSGOR_MAIN_MENU", id, "CSGOR_MM_INFO", g_iUserPoints[id], g_iUserKills[id]);
  2082. new menu = menu_create(temp, "main_menu_handler", 0);
  2083. new szItem[2];
  2084. szItem[1] = 0;
  2085. formatex(temp, 95, "\w%L", id, "CSGOR_MM_SKINS");
  2086. menu_additem(menu, temp, szItem, 0, -1);
  2087. formatex(temp, 95, "\w%L", id, "CSGOR_MM_OPEN_CRAFT");
  2088. menu_additem(menu, temp, szItem, 0, -1);
  2089. if (g_bUserSell[id])
  2090. {
  2091. new szSell[32];
  2092. _GetItemName(g_iUserSellItem[id], szSell, 31);
  2093. formatex(temp, 95, "\w%L", id, "CSGOR_MM_MARKET_SELL", szSell);
  2094. }
  2095. else
  2096. {
  2097. formatex(temp, 95, "\w%L", id, "CSGOR_MM_MARKET");
  2098. }
  2099. menu_additem(menu, temp, szItem, 0, -1);
  2100. formatex(temp, 95, "\w%L", id, "CSGOR_MM_DUSTBIN");
  2101. menu_additem(menu, temp, szItem, 0, -1);
  2102. formatex(temp, 95, "\w%L", id, "CSGOR_MM_GIFT");
  2103. menu_additem(menu, temp, szItem, 0, -1);
  2104. formatex(temp, 95, "\w%L", id, "CSGOR_MM_TRADE");
  2105. menu_additem(menu, temp, szItem, 0, -1);
  2106. formatex(temp, 95, "\w%L", id, "CSGOR_MM_GAMES");
  2107. menu_additem(menu, temp, szItem, 0, -1);
  2108. formatex(temp, 95, "\w%L", id, "CSGOR_MM_REWARD");
  2109. menu_additem(menu, temp, szItem, 0, -1);
  2110. formatex(temp, 95, "\w%L", id, "CSGOR_MM_MVP");
  2111. menu_additem(menu, temp, szItem, 0, -1);
  2112. formatex(temp, 95, "\w%L", id, "CSGOR_MM_CROSSHAIR");
  2113. menu_additem(menu, temp, szItem, 0, -1);
  2114. new userRank = g_iUserRank[id];
  2115. new szRank[32];
  2116. ArrayGetString(g_aRankName, userRank, szRank, 31);
  2117. if (g_iRanksNum + -1 > userRank)
  2118. {
  2119. new nextRank = ArrayGetCell(g_aRankKills, userRank + 1) - g_iUserKills[id];
  2120. formatex(temp, 95, "\w%L^n%L", id, "CSGOR_MM_RANK", szRank, id, "CSGOR_MM_NEXT_KILLS", nextRank);
  2121. }
  2122. else
  2123. {
  2124. formatex(temp, 95, "\w%L^n%L", id, "CSGOR_MM_RANK", szRank, id, "CSGOR_MM_MAX_KILLS");
  2125. }
  2126. menu_addtext(menu, temp, 0);
  2127. _DisplayMenu(id, menu);
  2128. return 0;
  2129. }
  2130.  
  2131. _GetItemName(item, temp[], len)
  2132. {
  2133. switch (item)
  2134. {
  2135. case 0:
  2136. {
  2137. formatex(temp, len, "%L", -1, "CSGOR_ITEM_KEY");
  2138. }
  2139. case 1:
  2140. {
  2141. formatex(temp, len, "%L", -1, "CSGOR_ITEM_CASE");
  2142. }
  2143. default:
  2144. {
  2145. ArrayGetString(g_aSkinName, item, temp, len);
  2146. }
  2147. }
  2148. return 0;
  2149. }
  2150.  
  2151. public main_menu_handler(id, menu, item)
  2152. {
  2153. if (item == -3)
  2154. {
  2155. return _MenuExit(menu);
  2156. }
  2157. switch (item)
  2158. {
  2159. case 0:
  2160. {
  2161. _ShowSkinMenu(id);
  2162. }
  2163. case 1:
  2164. {
  2165. _ShowOpenCaseCraftMenu(id);
  2166. }
  2167. case 2:
  2168. {
  2169. _ShowMarketMenu(id);
  2170. }
  2171. case 3:
  2172. {
  2173. _ShowDustbinMenu(id);
  2174. }
  2175. case 4:
  2176. {
  2177. _ShowGiftMenu(id);
  2178. }
  2179. case 5:
  2180. {
  2181. _ShowTradeMenu(id);
  2182. }
  2183. case 6:
  2184. {
  2185. _ShowGamesMenu(id);
  2186. }
  2187. case 7:
  2188. {
  2189. client_cmd(id, "say /reward");
  2190. }
  2191. case 8:
  2192. {
  2193. client_cmd(id, "say /mvp");
  2194. }
  2195. case 9:
  2196. {
  2197. client_cmd(id, "say /crosshair");
  2198. }
  2199. default:
  2200. {
  2201. }
  2202. }
  2203. return _MenuExit(menu);
  2204. }
  2205.  
  2206. _ShowSkinMenu(id)
  2207. {
  2208. new temp[64];
  2209. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_SKIN_MENU");
  2210. new menu = menu_create(temp, "skin_menu_handler", 0);
  2211. new szItem[2];
  2212. szItem[1] = 0;
  2213. new bool:hasSkins;
  2214. new num;
  2215. new skinName[48];
  2216. new skintype[4];
  2217. new wid;
  2218. new apply;
  2219. new craft;
  2220. new i = 0;
  2221. while (i < g_iSkinsNum)
  2222. {
  2223. num = g_iUserSkins[id][i];
  2224. if (num > 0)
  2225. {
  2226. ArrayGetString(g_aSkinName, i, skinName, 47);
  2227. ArrayGetString(g_aSkinType, i, skintype, 3);
  2228. if (equali(skintype, "d", 3))
  2229. {
  2230. craft = 0;
  2231. }
  2232. else
  2233. {
  2234. craft = 1;
  2235. }
  2236. wid = ArrayGetCell(g_aSkinWeaponID, i);
  2237. if (i == g_iUserSelectedSkin[id][wid])
  2238. {
  2239. apply = 1;
  2240. }
  2241. else
  2242. {
  2243. apply = 0;
  2244. }
  2245. new crafted[64];
  2246. new applied[64];
  2247.  
  2248. switch (craft)
  2249. {
  2250. case 1:
  2251. {
  2252. crafted = "*";
  2253. }
  2254.  
  2255. default:
  2256. {
  2257. crafted = "";
  2258. }
  2259. }
  2260.  
  2261. switch (apply)
  2262. {
  2263. case 1:
  2264. {
  2265. applied = "#";
  2266. }
  2267.  
  2268. default:
  2269. {
  2270. applied = "";
  2271. }
  2272. }
  2273. formatex(temp, 63, "\w%s \y%s\r| \y%L \r%s", skinName, crafted, id, "CSGOR_SM_PIECES", num, applied);
  2274. szItem[0] = i;
  2275. menu_additem(menu, temp, szItem, 0, -1);
  2276. hasSkins = true;
  2277. }
  2278. i++;
  2279. }
  2280. if (!hasSkins)
  2281. {
  2282. formatex(temp, 63, "\r%L", id, "CSGOR_SM_NO_SKINS");
  2283. szItem[0] = -10;
  2284. menu_additem(menu, temp, szItem, 0, -1);
  2285. }
  2286. _DisplayMenu(id, menu);
  2287. return 0;
  2288. }
  2289.  
  2290. public skin_menu_handler(id, menu, item)
  2291. {
  2292. if (item == -3)
  2293. {
  2294. _ShowMainMenu(id);
  2295. return _MenuExit(menu);
  2296. }
  2297. new itemdata[2];
  2298. new dummy;
  2299. new index;
  2300. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  2301. index = itemdata[0];
  2302. switch (index)
  2303. {
  2304. case -10:
  2305. {
  2306. _ShowMainMenu(id);
  2307. }
  2308. default:
  2309. {
  2310. new wid = ArrayGetCell(g_aSkinWeaponID, index);
  2311. new bool:SameSkin;
  2312. if (index == g_iUserSelectedSkin[id][wid])
  2313. {
  2314. SameSkin = true;
  2315. }
  2316. new sName[32];
  2317. ArrayGetString(g_aSkinName, index, sName, 31);
  2318. if (!SameSkin)
  2319. {
  2320. g_iUserSelectedSkin[id][wid] = index;
  2321. _SaveData(id);
  2322. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_SELECT_SKIN", sName);
  2323. }
  2324. else
  2325. {
  2326. g_iUserSelectedSkin[id][wid] = -1;
  2327. _SaveData(id);
  2328. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_DESELECT_SKIN", sName);
  2329. }
  2330. _ShowSkinMenu(id);
  2331. }
  2332. }
  2333. return _MenuExit(menu);
  2334. }
  2335.  
  2336. public Ham_Grenade_PA(ent)
  2337. {
  2338. if (!(pev_valid(ent) == 2))
  2339. return PLUGIN_HANDLED;
  2340.  
  2341. get_pdata_cbase(ent, 41, 4, 5);
  2342. ShortThrow = false;
  2343. return 0;
  2344. }
  2345.  
  2346. public Ham_Grenade_SA(ent)
  2347. {
  2348. if (!(pev_valid(ent) == 2))
  2349. return PLUGIN_HANDLED;
  2350.  
  2351. get_pdata_cbase(ent, 41, 4, 5);
  2352. ExecuteHamB(Ham_Weapon_PrimaryAttack, ent);
  2353. ShortThrow = true;
  2354. return 0;
  2355. }
  2356.  
  2357. public grenade_throw(id, ent, csw)
  2358. {
  2359. if (!(pev_valid(ent)) || !(0 < id && 32 >= id || !is_user_connected(id)))
  2360. return PLUGIN_HANDLED;
  2361.  
  2362. switch (csw)
  2363. {
  2364. case 4:
  2365. {
  2366. engfunc(EngFunc_SetModel, ent, g_szNadeModels[0]);
  2367. }
  2368. case 9:
  2369. {
  2370. engfunc(EngFunc_SetModel, ent, g_szNadeModels[2]);
  2371. }
  2372. case 25:
  2373. {
  2374. engfunc(EngFunc_SetModel, ent, g_szNadeModels[1]);
  2375. }
  2376. default:
  2377. {
  2378. }
  2379. }
  2380. if (csw == 25)
  2381. {
  2382. set_pev(ent, pev_dmgtime, get_gametime() + 1.00);
  2383. }
  2384. if (!ShortThrow)
  2385. {
  2386. return 0;
  2387. }
  2388. new Float:grenadeVelocity[3];
  2389. pev(ent, pev_velocity, grenadeVelocity);
  2390. xs_vec_mul_scalar(grenadeVelocity, 0.5, grenadeVelocity);
  2391. set_pev(ent, pev_velocity, grenadeVelocity);
  2392. return 0;
  2393. }
  2394.  
  2395. public Ham_Item_Deploy_Post(weapon_ent)
  2396. {
  2397. new owner = fm_cs_get_weapon_ent_owner(weapon_ent);
  2398. if (!is_user_alive(owner))
  2399. {
  2400. return 0;
  2401. }
  2402. new weaponid = cs_get_weapon_id(weapon_ent);
  2403. new userskin = g_iUserSelectedSkin[owner][weaponid];
  2404. if (userskin != -1)
  2405. {
  2406. if (1 > g_iUserSkins[owner][userskin])
  2407. {
  2408. g_iUserSelectedSkin[owner][weaponid] = -1;
  2409. userskin = -1;
  2410. }
  2411. }
  2412. new imp = pev(weapon_ent, 82);
  2413. new model[48];
  2414. if (0 < imp)
  2415. {
  2416. ArrayGetString(g_aSkinModel, imp + -1, model, 47);
  2417. set_pev(owner, pev_viewmodel2, model);
  2418. if (g_bSkinHasModelP[imp + -1])
  2419. {
  2420. ArrayGetString(g_aSkinModelP, imp + -1, model, 47);
  2421. set_pev(owner, pev_weaponmodel2, model);
  2422. }
  2423. }
  2424. else
  2425. {
  2426. if (userskin != -1 && g_bLogged[owner] == true)
  2427. {
  2428. ArrayGetString(g_aSkinModel, userskin, model, 47);
  2429. set_pev(owner, pev_viewmodel2, model);
  2430. if (g_bSkinHasModelP[userskin])
  2431. {
  2432. ArrayGetString(g_aSkinModelP, userskin, model, 47);
  2433. set_pev(owner, pev_weaponmodel2, model);
  2434. }
  2435. }
  2436. if (g_szDefaultSkinModel[weaponid][0] && userskin == -1)
  2437. {
  2438. set_pev(owner, pev_viewmodel2, g_szDefaultSkinModel[weaponid]);
  2439. if (0 < strlen(g_szDefaultPSkinModel[weaponid][0]))
  2440. {
  2441. set_pev(owner, pev_weaponmodel2, g_szDefaultPSkinModel[weaponid]);
  2442. }
  2443. }
  2444. }
  2445. return 0;
  2446. }
  2447.  
  2448. fm_cs_get_weapon_ent_owner(ent)
  2449. {
  2450. if (pev_valid(ent) != 2)
  2451. {
  2452. return -1;
  2453. }
  2454. return get_pdata_cbase(ent, 41, 4, 5);
  2455. }
  2456.  
  2457. public Ham_Item_Can_Drop(ent)
  2458. {
  2459. if (pev_valid(ent) != 2)
  2460. {
  2461. return 0;
  2462. }
  2463. new weapon = get_pdata_int(ent, 43, 4, 5);
  2464. if (weapon < 1 || weapon > 30)
  2465. {
  2466. return 0;
  2467. }
  2468. if (1 << weapon & 570425936)
  2469. {
  2470. return 0;
  2471. }
  2472. new imp = pev(ent, 82);
  2473. if (0 < imp)
  2474. {
  2475. return 0;
  2476. }
  2477. new id = get_pdata_cbase(ent, 41, 4, 5);
  2478. if (!is_user_connected(id))
  2479. {
  2480. return 0;
  2481. }
  2482. new skin = g_iUserSelectedSkin[id][weapon];
  2483. if (skin != -1)
  2484. {
  2485. set_pev(ent, 82, skin + 1);
  2486. }
  2487. return 0;
  2488. }
  2489.  
  2490. _ShowOpenCaseCraftMenu(id)
  2491. {
  2492. new temp[96];
  2493. formatex(temp, 95, "\r%s \w%L", "[CS:GO]", id, "CSGOR_OC_CRAFT_MENU");
  2494. new menu = menu_create(temp, "oc_craft_menu_handler", 0);
  2495. new szItem[2];
  2496. szItem[1] = 0;
  2497. formatex(temp, 95, "\w%L^n%L^n", id, "CSGOR_OCC_OPENCASE", id, "CSGOR_OCC_OPEN_ITEMS", g_iUserCases[id], g_iUserKeys[id]);
  2498. szItem[0] = 0;
  2499. menu_additem(menu, temp, szItem, 0, -1);
  2500. if (0 < g_iDropType)
  2501. {
  2502. formatex(temp, 95, "\r%L^n\w%L^n", id, "CSGOR_OCC_BUY_KEY", id, "CSGOR_MR_PRICE", g_iKeyPrice);
  2503. szItem[0] = 2;
  2504. menu_additem(menu, temp, szItem, 0, -1);
  2505. formatex(temp, 95, "\r%L \w| %L^n", id, "CSGOR_OCC_SELL_KEY", id, "CSGOR_RECEIVE_POINTS", g_iKeyPrice / 2);
  2506. szItem[0] = 3;
  2507. menu_additem(menu, temp, szItem, 0, -1);
  2508. }
  2509. formatex(temp, 95, "\w%L^n%L", id, "CSGOR_OCC_CRAFT", id, "CSGOR_OCC_CRAFT_ITEMS", g_iUserDusts[id], g_iCraftCost);
  2510. szItem[0] = 1;
  2511. menu_additem(menu, temp, szItem, 0, -1);
  2512. _DisplayMenu(id, menu);
  2513. return 0;
  2514. }
  2515.  
  2516. public oc_craft_menu_handler(id, menu, item)
  2517. {
  2518. if (item == -3)
  2519. {
  2520. _ShowMainMenu(id);
  2521. return _MenuExit(menu);
  2522. }
  2523. new itemdata[2];
  2524. new dummy;
  2525. new index;
  2526. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  2527. index = itemdata[0];
  2528. switch (index)
  2529. {
  2530. case 0:
  2531. {
  2532. if (g_iUserCases[id] < 1 || g_iUserKeys[id] < 1)
  2533. {
  2534. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_OPEN_NOT_ENOUGH");
  2535. _ShowOpenCaseCraftMenu(id);
  2536. }
  2537. else
  2538. {
  2539. if (get_systime(0) < g_iLastOpenCraft[id] + 5)
  2540. {
  2541. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_DONT_SPAM", 5);
  2542. _ShowOpenCaseCraftMenu(id);
  2543. return 0;
  2544. }
  2545. _OpenCase(id);
  2546. }
  2547. }
  2548. case 1:
  2549. {
  2550. if (g_iCraftCost > g_iUserDusts[id])
  2551. {
  2552. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_CRAFT_NOT_ENOUGH", g_iCraftCost - g_iUserDusts[id]);
  2553. _ShowOpenCaseCraftMenu(id);
  2554. }
  2555. else
  2556. {
  2557. if (get_systime(0) < g_iLastOpenCraft[id] + 5)
  2558. {
  2559. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_DONT_SPAM", 5);
  2560. _ShowOpenCaseCraftMenu(id);
  2561. return 0;
  2562. }
  2563. _CraftSkin(id);
  2564. }
  2565. }
  2566. case 2:
  2567. {
  2568. if (g_iKeyPrice > g_iUserPoints[id])
  2569. {
  2570. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_NOT_ENOUGH_POINTS", g_iKeyPrice - g_iUserPoints[id]);
  2571. _ShowOpenCaseCraftMenu(id);
  2572. }
  2573. else
  2574. {
  2575. g_iUserPoints[id] -= g_iKeyPrice;
  2576. g_iUserKeys[id]++;
  2577. _SaveData(id);
  2578. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_BUY_KEY");
  2579. _ShowOpenCaseCraftMenu(id);
  2580. }
  2581. }
  2582. case 3:
  2583. {
  2584. if (1 > g_iUserKeys[id])
  2585. {
  2586. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_NONE_KEYS");
  2587. _ShowOpenCaseCraftMenu(id);
  2588. }
  2589. else
  2590. {
  2591. g_iUserPoints[id] += g_iKeyPrice / 2;
  2592. g_iUserKeys[id]--;
  2593. _SaveData(id);
  2594. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_SELL_KEY");
  2595. _ShowOpenCaseCraftMenu(id);
  2596. }
  2597. }
  2598. default:
  2599. {
  2600. }
  2601. }
  2602. return _MenuExit(menu);
  2603. }
  2604.  
  2605. _OpenCase(id)
  2606. {
  2607. new timer;
  2608. new bool:succes;
  2609. new rSkin;
  2610. new rChance;
  2611. new skinID;
  2612. new wChance;
  2613. new run;
  2614. do {
  2615. rSkin = random_num(0, g_iDropSkinNum + -1);
  2616. rChance = random_num(1, 100);
  2617. if (0 >= g_iDropSkinNum)
  2618. {
  2619. color_print(id, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_NO_DROP_SKINS");
  2620. _ShowOpenCaseCraftMenu(id);
  2621. return 0;
  2622. }
  2623. skinID = ArrayGetCell(g_aDropSkin, rSkin);
  2624. wChance = ArrayGetCell(g_aSkinChance, skinID);
  2625. if (rChance >= wChance)
  2626. {
  2627. succes = true;
  2628. }
  2629. timer++;
  2630. if (!(timer < 5 && !succes))
  2631. {
  2632. if (succes)
  2633. {
  2634. new Skin[32];
  2635. ArrayGetString(g_aSkinName, skinID, Skin, 31);
  2636. g_iUserSkins[id][skinID]++;
  2637. g_iUserCases[id]--;
  2638. g_iUserKeys[id]--;
  2639. _SaveData(id);
  2640. if (0 < g_iShowDropCraft)
  2641. {
  2642. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_DROP_SUCCESS_ALL", g_szName[id], Skin, 100 - wChance);
  2643. }
  2644. else
  2645. {
  2646. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_DROP_SUCCESS", Skin, 100 - wChance);
  2647. }
  2648. g_iLastOpenCraft[id] = get_systime(0);
  2649. _ShowOpenCaseCraftMenu(id);
  2650. }
  2651. else
  2652. {
  2653. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_DROP_FAIL");
  2654. _ShowOpenCaseCraftMenu(id);
  2655. }
  2656. return 0;
  2657. }
  2658. } while (run);
  2659. if (succes)
  2660. {
  2661. new Skin[32];
  2662. ArrayGetString(g_aSkinName, skinID, Skin, 31);
  2663. g_iUserSkins[id][skinID]++;
  2664. g_iUserCases[id]--;
  2665. g_iUserKeys[id]--;
  2666. _SaveData(id);
  2667. if (0 < g_iShowDropCraft)
  2668. {
  2669. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_DROP_SUCCESS_ALL", g_szName[id], Skin, 100 - wChance);
  2670. }
  2671. else
  2672. {
  2673. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_DROP_SUCCESS", Skin, 100 - wChance);
  2674. }
  2675. g_iLastOpenCraft[id] = get_systime(0);
  2676. _ShowOpenCaseCraftMenu(id);
  2677. }
  2678. else
  2679. {
  2680. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_DROP_FAIL");
  2681. _ShowOpenCaseCraftMenu(id);
  2682. }
  2683. return 0;
  2684. }
  2685.  
  2686. _CraftSkin(id)
  2687. {
  2688. new timer;
  2689. new bool:succes;
  2690. new rSkin;
  2691. new rChance;
  2692. new skinID;
  2693. new wChance;
  2694. new run;
  2695. do {
  2696. rSkin = random_num(0, g_iCraftSkinNum + -1);
  2697. rChance = random_num(1, 100);
  2698. if (0 >= g_iCraftSkinNum)
  2699. {
  2700. color_print(id, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_NO_CRAFT_SKINS");
  2701. _ShowOpenCaseCraftMenu(id);
  2702. return 0;
  2703. }
  2704. skinID = ArrayGetCell(g_aCraftSkin, rSkin);
  2705. wChance = ArrayGetCell(g_aSkinChance, skinID);
  2706. if (rChance >= wChance)
  2707. {
  2708. succes = true;
  2709. }
  2710. timer++;
  2711. if (!(timer < 5 && !succes))
  2712. {
  2713. if (succes)
  2714. {
  2715. new Skin[32];
  2716. ArrayGetString(g_aSkinName, skinID, Skin, 31);
  2717. g_iUserSkins[id][skinID]++;
  2718. g_iUserDusts[id] -= g_iCraftCost;
  2719. _SaveData(id);
  2720. if (0 < g_iShowDropCraft)
  2721. {
  2722. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_CRAFT_SUCCESS_ALL", g_szName[id], Skin, 100 - wChance);
  2723. }
  2724. else
  2725. {
  2726. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_CRAFT_SUCCESS", Skin, 100 - wChance);
  2727. }
  2728. g_iLastOpenCraft[id] = get_systime(0);
  2729. _ShowOpenCaseCraftMenu(id);
  2730. }
  2731. else
  2732. {
  2733. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_CRAFT_FAIL");
  2734. _ShowOpenCaseCraftMenu(id);
  2735. }
  2736. return 0;
  2737. }
  2738. } while (run);
  2739. if (succes)
  2740. {
  2741. new Skin[32];
  2742. ArrayGetString(g_aSkinName, skinID, Skin, 31);
  2743. g_iUserSkins[id][skinID]++;
  2744. g_iUserDusts[id] -= g_iCraftCost;
  2745. if (0 < g_iShowDropCraft)
  2746. {
  2747. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_CRAFT_SUCCESS_ALL", g_szName[id], Skin, 100 - wChance);
  2748. }
  2749. else
  2750. {
  2751. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_CRAFT_SUCCESS", Skin, 100 - wChance);
  2752. }
  2753. _SaveData(id);
  2754. g_iLastOpenCraft[id] = get_systime(0);
  2755. _ShowOpenCaseCraftMenu(id);
  2756. }
  2757. else
  2758. {
  2759. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_CRAFT_FAIL");
  2760. _ShowOpenCaseCraftMenu(id);
  2761. }
  2762. return 0;
  2763. }
  2764.  
  2765. _ShowMarketMenu(id)
  2766. {
  2767. new temp[96];
  2768. formatex(temp, 95, "\r%s \w%L", "[CS:GO]", id, "CSGOR_MARKET_MENU");
  2769. new menu = menu_create(temp, "market_menu_handler", 0);
  2770. new szItem[2];
  2771. szItem[1] = 0;
  2772. new szSkin[48];
  2773. if (!_IsGoodItem(g_iUserSellItem[id]))
  2774. {
  2775. formatex(temp, 95, "\y%L", id, "CSGOR_MR_SELECT_ITEM");
  2776. }
  2777. else
  2778. {
  2779. _GetItemName(g_iUserSellItem[id], szSkin, 47);
  2780. formatex(temp, 95, "\w%L^n\w%L", id, "CSGOR_MR_SELL_ITEM", szSkin, id, "CSGOR_MR_PRICE", g_iUserItemPrice[id]);
  2781. }
  2782. szItem[0] = 33;
  2783. menu_additem(menu, temp, szItem, 0, -1);
  2784. if (g_bUserSell[id])
  2785. {
  2786. formatex(temp, 95, "\r%L^n", id, "CSGOR_MR_CANCEL_SELL");
  2787. szItem[0] = 35;
  2788. menu_additem(menu, temp, szItem, 0, -1);
  2789. }
  2790. else
  2791. {
  2792. formatex(temp, 95, "\r%L^n", id, "CSGOR_MR_START_SELL");
  2793. szItem[0] = 34;
  2794. menu_additem(menu, temp, szItem, 0, -1);
  2795. }
  2796. new Pl[32];
  2797. new n;
  2798. new p;
  2799. get_players(Pl, n, "h", "");
  2800. if (n)
  2801. {
  2802. new items;
  2803. new sType[4];
  2804. new bool:craft;
  2805. new i;
  2806. while (i < n)
  2807. {
  2808. p = Pl[i];
  2809. if (g_bLogged[p] == true)
  2810. {
  2811. if (!(p == id))
  2812. {
  2813. if (g_bUserSell[p])
  2814. {
  2815. new index = g_iUserSellItem[p];
  2816. _GetItemName(index, szSkin, 47);
  2817. if (_IsItemSkin(index))
  2818. {
  2819. ArrayGetString(g_aSkinType, index, sType, 3);
  2820. }
  2821. else
  2822. {
  2823. formatex(sType, 3, "d");
  2824. }
  2825. if (equali(sType, "c", 0))
  2826. {
  2827. craft = true;
  2828. }
  2829. else
  2830. {
  2831. craft = false;
  2832. }
  2833. new crafted[64];
  2834. if (craft)
  2835. {
  2836. crafted = "*";
  2837. }
  2838. else
  2839. {
  2840. crafted = "";
  2841. }
  2842. formatex(temp, 95, "\w%s | \r%s \y%s\w| \y%d %L", g_szName[p], szSkin, crafted, g_iUserItemPrice[p], id, "CSGOR_POINTS");
  2843. szItem[0] = p;
  2844. menu_additem(menu, temp, szItem, 0, -1);
  2845. items++;
  2846. }
  2847. }
  2848. }
  2849. i++;
  2850. }
  2851. if (!items)
  2852. {
  2853. formatex(temp, 95, "\r%L", id, "CSGOR_NOBODY_SELL");
  2854. szItem[0] = -10;
  2855. menu_additem(menu, temp, szItem, 0, -1);
  2856. }
  2857. }
  2858. _DisplayMenu(id, menu);
  2859. return 0;
  2860. }
  2861.  
  2862. bool:_IsItemSkin(item)
  2863. {
  2864. if (0 <= item < g_iSkinsNum)
  2865. {
  2866. return true;
  2867. }
  2868. return false;
  2869. }
  2870.  
  2871. bool:_IsGoodItem(item)
  2872. {
  2873. if (0 <= item < g_iSkinsNum || item == 1 || item == 0)
  2874. {
  2875. return true;
  2876. }
  2877. return false;
  2878. }
  2879.  
  2880. public market_menu_handler(id, menu, item)
  2881. {
  2882. if (item == -3)
  2883. {
  2884. _ShowMainMenu(id);
  2885. return _MenuExit(menu);
  2886. }
  2887. new itemdata[2];
  2888. new dummy;
  2889. new index;
  2890. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  2891. index = itemdata[0];
  2892. switch (index)
  2893. {
  2894. case -10:
  2895. {
  2896. _ShowMarketMenu(id);
  2897. }
  2898. case 33:
  2899. {
  2900. if (g_bUserSell[id])
  2901. {
  2902. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_MUST_CANCEL");
  2903. _ShowMarketMenu(id);
  2904. }
  2905. else
  2906. {
  2907. _ShowItems(id);
  2908. }
  2909. }
  2910. case 34:
  2911. {
  2912. if (!_UserHasItem(id, g_iUserSellItem[id]))
  2913. {
  2914. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_MUST_SELECT");
  2915. _ShowMarketMenu(id);
  2916. }
  2917. else
  2918. {
  2919. if (g_iWaitForPlace > get_systime(0) - g_iLastPlace[id])
  2920. {
  2921. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_MUST_WAIT", g_iLastPlace[id] - get_systime(0));
  2922. }
  2923. if (1 > g_iUserItemPrice[id])
  2924. {
  2925. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_IM_SET_PRICE");
  2926. _ShowMarketMenu(id);
  2927. }
  2928. new wPriceMin;
  2929. new wPriceMax;
  2930. _CalcItemPrice(g_iUserSellItem[id], wPriceMin, wPriceMax);
  2931. if (!(wPriceMin <= g_iUserItemPrice[id] <= wPriceMax))
  2932. {
  2933. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_ITEM_MIN_MAX_COST", wPriceMin, wPriceMax);
  2934. _ShowMarketMenu(id);
  2935. return _MenuExit(menu);
  2936. }
  2937. g_bUserSell[id] = 1;
  2938. g_iLastPlace[id] = get_systime(0);
  2939. new Item[32];
  2940. _GetItemName(g_iUserSellItem[id], Item, 31);
  2941. color_print(0, "^4%s %L", "[CS:GO]", id, "CSGOR_SELL_ANNOUNCE", g_szName[id], Item, g_iUserItemPrice[id]);
  2942. }
  2943. }
  2944. case 35:
  2945. {
  2946. g_bUserSell[id] = 0;
  2947. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_CANCEL_SELL");
  2948. _ShowMarketMenu(id);
  2949. }
  2950. default:
  2951. {
  2952. new tItem = g_iUserSellItem[index];
  2953. new price = g_iUserItemPrice[index];
  2954. if (!g_bLogged[index] || !(0 < index && 32 >= index))
  2955. {
  2956. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_INVALID_SELLER");
  2957. g_bUserSell[index] = 0;
  2958. _ShowMarketMenu(id);
  2959. }
  2960. else
  2961. {
  2962. if (!_UserHasItem(index, tItem))
  2963. {
  2964. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_DONT_HAVE_ITEM");
  2965. g_bUserSell[index] = 0;
  2966. g_iUserSellItem[index] = -1;
  2967. _ShowMarketMenu(id);
  2968. }
  2969. if (price > g_iUserPoints[id])
  2970. {
  2971. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_NOT_ENOUGH_POINTS", price - g_iUserPoints[id]);
  2972. _ShowMarketMenu(id);
  2973. return 0;
  2974. }
  2975. new szItem[32];
  2976. _GetItemName(g_iUserSellItem[index], szItem, 31);
  2977. switch (tItem)
  2978. {
  2979. case 0:
  2980. {
  2981. g_iUserKeys[id]++;
  2982. g_iUserKeys[index]--;
  2983. g_iUserPoints[id] -= price;
  2984. g_iUserPoints[index] += price;
  2985. _SaveData(id);
  2986. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_X_BUY_Y", g_szName[id], szItem, g_szName[index]);
  2987. }
  2988. case 1:
  2989. {
  2990. g_iUserCases[id]++;
  2991. g_iUserCases[index]--;
  2992. g_iUserPoints[id] -= price;
  2993. g_iUserPoints[index] += price;
  2994. _SaveData(id);
  2995. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_X_BUY_Y", g_szName[id], szItem, g_szName[index]);
  2996. }
  2997. default:
  2998. {
  2999. g_iUserSkins[id][tItem]++;
  3000. g_iUserSkins[index][tItem]--;
  3001. g_iUserPoints[id] -= price;
  3002. _SaveData(id);
  3003. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_X_BUY_Y", g_szName[id], szItem, g_szName[index]);
  3004. }
  3005. }
  3006. g_iUserSellItem[index] = -1;
  3007. g_bUserSell[index] = 0;
  3008. g_iUserItemPrice[index] = 0;
  3009. _ShowMainMenu(id);
  3010. }
  3011. }
  3012. }
  3013. return _MenuExit(menu);
  3014. }
  3015.  
  3016. _ShowItems(id)
  3017. {
  3018. new temp[64];
  3019. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_ITEM_MENU");
  3020. new menu = menu_create(temp, "item_menu_handler", 0);
  3021. new szItem[2];
  3022. szItem[1] = 0;
  3023. new total;
  3024. if (0 < g_iUserCases[id])
  3025. {
  3026. formatex(temp, 63, "\w%L \r| \y%L", id, "CSGOR_ITEM_CASE", id, "CSGOR_SM_PIECES", g_iUserCases[id]);
  3027. szItem[0] = 1;
  3028. menu_additem(menu, temp, szItem, 0, -1);
  3029. total++;
  3030. }
  3031. if (g_iUserKeys[id] > 0 && g_iDropType < 1)
  3032. {
  3033. formatex(temp, 63, "\w%L \r| \y%L", id, "CSGOR_ITEM_KEY", id, "CSGOR_SM_PIECES", g_iUserKeys[id]);
  3034. szItem[0] = 0;
  3035. menu_additem(menu, temp, szItem, 0, -1);
  3036. total++;
  3037. }
  3038. new szSkin[32];
  3039. new num;
  3040. new type[2];
  3041. new i;
  3042. while (i < g_iSkinsNum)
  3043. {
  3044. num = g_iUserSkins[id][i];
  3045. if (0 < num)
  3046. {
  3047. ArrayGetString(g_aSkinName, i, szSkin, 31);
  3048. ArrayGetString(g_aSkinType, i, type, 1);
  3049. switch (type[0])
  3050. {
  3051. case 99:
  3052. {
  3053. formatex(temp, 63, "\w%s \r| \y%L \r#", szSkin, id, "CSGOR_SM_PIECES", num);
  3054. }
  3055.  
  3056. default:
  3057. {
  3058. formatex(temp, 63, "\w%s \r| \y%L", szSkin, id, "CSGOR_SM_PIECES", num);
  3059. }
  3060. }
  3061. szItem[0] = i;
  3062. menu_additem(menu, temp, szItem, 0, -1);
  3063. total++;
  3064. }
  3065. i++;
  3066. }
  3067. if (!total)
  3068. {
  3069. formatex(temp, 63, "\r%L", id, "CSGOR_NO_ITEMS");
  3070. szItem[0] = -10;
  3071. menu_additem(menu, temp, szItem, 0, -1);
  3072. }
  3073. _DisplayMenu(id, menu);
  3074. return 0;
  3075. }
  3076.  
  3077. public item_menu_handler(id, menu, item)
  3078. {
  3079. if (item == -3)
  3080. {
  3081. _ShowMarketMenu(id);
  3082. return _MenuExit(menu);
  3083. }
  3084. new itemdata[2];
  3085. new dummy;
  3086. new index;
  3087. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  3088. index = itemdata[0];
  3089. if (index == -10)
  3090. {
  3091. _ShowMarketMenu(id);
  3092. return _MenuExit(menu);
  3093. }
  3094. g_iUserSellItem[id] = index;
  3095. new szItem[32];
  3096. _GetItemName(index, szItem, 31);
  3097. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_IM_SELECT", szItem);
  3098. client_cmd(id, "messagemode ItemPrice");
  3099. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_IM_SET_PRICE");
  3100. return _MenuExit(menu);
  3101. }
  3102.  
  3103. public concmd_itemprice(id)
  3104. {
  3105. new item = g_iUserSellItem[id];
  3106. if (!_IsGoodItem(item))
  3107. return PLUGIN_HANDLED;
  3108.  
  3109. new data[16];
  3110. read_args(data, 15);
  3111. remove_quotes(data);
  3112. new uPrice;
  3113. new wPriceMin;
  3114. new wPriceMax;
  3115. uPrice = str_to_num(data);
  3116. _CalcItemPrice(item, wPriceMin, wPriceMax);
  3117. if (uPrice < wPriceMin || uPrice > wPriceMax)
  3118. {
  3119. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_ITEM_MIN_MAX_COST", wPriceMin, wPriceMax);
  3120. client_cmd(id, "messagemode ItemPrice");
  3121. }
  3122. g_iUserItemPrice[id] = uPrice;
  3123. _ShowMarketMenu(id);
  3124. return 1;
  3125. }
  3126.  
  3127. bool:_UserHasItem(id, item)
  3128. {
  3129. if (!_IsGoodItem(item))
  3130. {
  3131. return false;
  3132. }
  3133. switch (item)
  3134. {
  3135. case 0:
  3136. {
  3137. if (0 < g_iUserKeys[id])
  3138. {
  3139. return true;
  3140. }
  3141. }
  3142. case 1:
  3143. {
  3144. if (0 < g_iUserCases[id])
  3145. {
  3146. return true;
  3147. }
  3148. }
  3149. default:
  3150. {
  3151. if (0 < g_iUserSkins[id][item])
  3152. {
  3153. return true;
  3154. }
  3155. }
  3156. }
  3157. return false;
  3158. }
  3159.  
  3160. _CalcItemPrice(item, &min, &max)
  3161. {
  3162. switch (item)
  3163. {
  3164. case 0:
  3165. {
  3166. min = g_iKeyMinCost;
  3167. max = g_iCostMultiplier * g_iKeyMinCost;
  3168. }
  3169. case 1:
  3170. {
  3171. min = g_iCaseMinCost;
  3172. max = g_iCostMultiplier * g_iCaseMinCost;
  3173. }
  3174. default:
  3175. {
  3176. min = ArrayGetCell(g_aSkinCostMin, item);
  3177. new i = min;
  3178. max = i * 2;
  3179. }
  3180. }
  3181. return 0;
  3182. }
  3183.  
  3184. _ShowDustbinMenu(id)
  3185. {
  3186. new temp[64];
  3187. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_DB_MENU");
  3188. new menu = menu_create(temp, "dustbin_menu_handler", 0);
  3189. new szItem[2];
  3190. szItem[1] = 0;
  3191. formatex(temp, 63, "\y%L\n", id, "CSGOR_DB_TRANSFORM");
  3192. szItem[0] = 1;
  3193. menu_additem(menu, temp, szItem, 0, -1);
  3194. formatex(temp, 63, "\r%L", id, "CSGOR_DB_DESTROY");
  3195. szItem[0] = 2;
  3196. menu_additem(menu, temp, szItem, 0, -1);
  3197. _DisplayMenu(id, menu);
  3198. return 0;
  3199. }
  3200.  
  3201. public dustbin_menu_handler(id, menu, item)
  3202. {
  3203. if (item == -3)
  3204. {
  3205. _ShowMainMenu(id);
  3206. return _MenuExit(menu);
  3207. }
  3208. new itemdata[2];
  3209. new dummy;
  3210. new index;
  3211. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  3212. index = itemdata[0];
  3213. g_iMenuType[id] = index;
  3214. _ShowSkins(id);
  3215. return _MenuExit(menu);
  3216. }
  3217.  
  3218. _ShowSkins(id)
  3219. {
  3220. new temp[64];
  3221. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_SKINS");
  3222. new menu = menu_create(temp, "db_skins_menu_handler", 0);
  3223. new szItem[2];
  3224. szItem[1] = 0;
  3225. new szSkin[32];
  3226. new num;
  3227. new type[2];
  3228. new total;
  3229. new i;
  3230. while (i < g_iSkinsNum)
  3231. {
  3232. num = g_iUserSkins[id][i];
  3233. if (0 < num)
  3234. {
  3235. ArrayGetString(g_aSkinName, i, szSkin, 31);
  3236. ArrayGetString(g_aSkinType, i, type, 1);
  3237. switch (type[0])
  3238. {
  3239. case 99:
  3240. {
  3241. formatex(temp, 63, "\w%s \r| \y%L \r#", szSkin, id, "CSGOR_SM_PIECES", num);
  3242. }
  3243.  
  3244. default:
  3245. {
  3246. formatex(temp, 63, "\w%s \r| \y%L", szSkin, id, "CSGOR_SM_PIECES", num);
  3247. }
  3248. }
  3249. szItem[0] = i;
  3250. menu_additem(menu, temp, szItem, 0, -1);
  3251. total++;
  3252. }
  3253. i++;
  3254. }
  3255. if (!total)
  3256. {
  3257. formatex(temp, 63, "\r%L", id, "CSGOR_SM_NO_SKINS");
  3258. szItem[0] = -10;
  3259. menu_additem(menu, temp, szItem, 0, -1);
  3260. }
  3261. _DisplayMenu(id, menu);
  3262. return 0;
  3263. }
  3264.  
  3265. public db_skins_menu_handler(id, menu, item)
  3266. {
  3267. if (item == -3)
  3268. {
  3269. _ShowDustbinMenu(id);
  3270. return _MenuExit(menu);
  3271. }
  3272. new itemdata[2];
  3273. new dummy;
  3274. new index;
  3275. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  3276. index = itemdata[0];
  3277. if (index == -10)
  3278. {
  3279. _ShowMainMenu(id);
  3280. return _MenuExit(menu);
  3281. }
  3282. switch (g_iMenuType[id])
  3283. {
  3284. case 1:
  3285. {
  3286. g_iUserSkins[id][index]--;
  3287. g_iUserDusts[id] += g_iDustForTransform;
  3288. new Skin[32];
  3289. ArrayGetString(g_aSkinName, index, Skin, 31);
  3290. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TRANSFORM", g_iDustForTransform, Skin);
  3291. _SaveData(id);
  3292. }
  3293. case 2:
  3294. {
  3295. g_iUserSkins[id][index]--;
  3296. new Skin[32];
  3297. ArrayGetString(g_aSkinName, index, Skin, 31);
  3298. new sPrice = ArrayGetCell(g_aSkinCostMin, index);
  3299. new rest = sPrice / g_iReturnPercent;
  3300. g_iUserPoints[id] += rest;
  3301. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_DESTORY", Skin, rest);
  3302. _SaveData(id);
  3303. }
  3304. default:
  3305. {
  3306. }
  3307. }
  3308. g_iMenuType[id] = 0;
  3309. _ShowDustbinMenu(id);
  3310. return _MenuExit(menu);
  3311. }
  3312.  
  3313. _ShowGiftMenu(id)
  3314. {
  3315. new temp[64];
  3316. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_GIFT_MENU");
  3317. new menu = menu_create(temp, "gift_menu_handler", 0);
  3318. new szItem[2];
  3319. szItem[1] = 0;
  3320. new bool:HasTarget;
  3321. new bool:HasItem;
  3322. new target = g_iGiftTarget[id];
  3323. if (target)
  3324. {
  3325. formatex(temp, 63, "\w%L", id, "CSGOR_GM_TARGET", g_szName[target]);
  3326. szItem[0] = 0;
  3327. menu_additem(menu, temp, szItem, 0, -1);
  3328. HasTarget = true;
  3329. }
  3330. else
  3331. {
  3332. formatex(temp, 63, "\r%L", id, "CSGOR_GM_SELECT_TARGET");
  3333. szItem[0] = 0;
  3334. menu_additem(menu, temp, szItem, 0, -1);
  3335. }
  3336. if (!_IsGoodItem(g_iGiftItem[id]))
  3337. {
  3338. formatex(temp, 63, "\r%L^n", id, "CSGOR_GM_SELECT_ITEM");
  3339. szItem[0] = 1;
  3340. menu_additem(menu, temp, szItem, 0, -1);
  3341. }
  3342. else
  3343. {
  3344. new Item[32];
  3345. _GetItemName(g_iGiftItem[id], Item, 31);
  3346. formatex(temp, 63, "\w%L^n", id, "CSGOR_GM_ITEM", Item);
  3347. szItem[0] = 1;
  3348. menu_additem(menu, temp, szItem, 0, -1);
  3349. HasItem = true;
  3350. }
  3351. if (HasTarget && HasItem)
  3352. {
  3353. formatex(temp, 63, "\r%L", id, "CSGOR_GM_SEND");
  3354. szItem[0] = 2;
  3355. menu_additem(menu, temp, szItem, 0, -1);
  3356. }
  3357. _DisplayMenu(id, menu);
  3358. return 0;
  3359. }
  3360.  
  3361. public gift_menu_handler(id, menu, item)
  3362. {
  3363. if (item == -3)
  3364. {
  3365. _ShowMainMenu(id);
  3366. return _MenuExit(menu);
  3367. }
  3368. new itemdata[2];
  3369. new dummy;
  3370. new index;
  3371. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  3372. index = itemdata[0];
  3373. switch (index)
  3374. {
  3375. case 0:
  3376. {
  3377. _SelectTarget(id);
  3378. }
  3379. case 1:
  3380. {
  3381. _SelectItem(id);
  3382. }
  3383. case 2:
  3384. {
  3385. new target = g_iGiftTarget[id];
  3386. new _item = g_iGiftItem[id];
  3387. if (g_bLogged[target] != true || !(0 < target && 32 >= target))
  3388. {
  3389. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_INVALID_TARGET");
  3390. g_iGiftTarget[id] = 0;
  3391. _ShowGiftMenu(id);
  3392. }
  3393. else
  3394. {
  3395. if (!_UserHasItem(id, _item))
  3396. {
  3397. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_NOT_ENOUGH_ITEMS");
  3398. g_iGiftItem[id] = -1;
  3399. _ShowGiftMenu(id);
  3400. }
  3401. new gift[16];
  3402. switch (_item)
  3403. {
  3404. case 0:
  3405. {
  3406. g_iUserKeys[id]--;
  3407. g_iUserKeys[target]++;
  3408. formatex(gift, 15, "%L", id, "CSGOR_ITEM_KEY");
  3409. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_SEND_GIFT", gift, g_szName[target]);
  3410. color_print(target, "^4%s^1 %L", "[CS:GO]", target, "CSGOR_RECIEVE_GIFT", g_szName[id], gift);
  3411. }
  3412. case 1:
  3413. {
  3414. g_iUserCases[id]--;
  3415. g_iUserCases[target]++;
  3416. formatex(gift, 15, "%L", id, "CSGOR_ITEM_CASE");
  3417. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_SEND_GIFT", gift, g_szName[target]);
  3418. color_print(target, "^4%s^1 %L", "[CS:GO]", target, "CSGOR_RECIEVE_GIFT", g_szName[id], gift);
  3419. }
  3420. default:
  3421. {
  3422. g_iUserSkins[id][_item]--;
  3423. g_iUserSkins[target][_item]++;
  3424. new Skin[32];
  3425. _GetItemName(g_iGiftItem[id], Skin, 31);
  3426. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_SEND_GIFT", Skin, g_szName[target]);
  3427. color_print(target, "^4%s^1 %L", "[CS:GO]", target, "CSGOR_RECIEVE_GIFT", g_szName[id], Skin);
  3428. }
  3429. }
  3430. g_iGiftTarget[id] = 0;
  3431. g_iGiftItem[id] = -1;
  3432. _ShowMainMenu(id);
  3433. }
  3434. }
  3435. default:
  3436. {
  3437. }
  3438. }
  3439. return _MenuExit(menu);
  3440. }
  3441.  
  3442. _SelectTarget(id)
  3443. {
  3444. new temp[64];
  3445. formatex(temp, 63, "\r%s \y%L", "[CS:GO]", id, "CSGOR_GM_SELECT_TARGET");
  3446. new menu = menu_create(temp, "st_menu_handler", 0);
  3447. new szItem[2];
  3448. szItem[1] = 0;
  3449. new Pl[32];
  3450. new n;
  3451. new p;
  3452. get_players(Pl, n, "h", "");
  3453. new total;
  3454. if (n)
  3455. {
  3456. new i;
  3457. while (i < n)
  3458. {
  3459. p = Pl[i];
  3460. if (g_bLogged[p])
  3461. {
  3462. if (!(p == id))
  3463. {
  3464. szItem[0] = p;
  3465. menu_additem(menu, g_szName[p], szItem, 0, -1);
  3466. total++;
  3467. }
  3468. }
  3469. i++;
  3470. }
  3471. }
  3472. if (!total)
  3473. {
  3474. formatex(temp, 63, "\r%L", id, "CSGOR_ST_NO_PLAYERS");
  3475. szItem[0] = -10;
  3476. menu_additem(menu, temp, szItem, 0, -1);
  3477. }
  3478. _DisplayMenu(id, menu);
  3479. return 0;
  3480. }
  3481.  
  3482. public st_menu_handler(id, menu, item)
  3483. {
  3484. if (item == -3)
  3485. {
  3486. _ShowGiftMenu(id);
  3487. return _MenuExit(menu);
  3488. }
  3489. new itemdata[2];
  3490. new dummy;
  3491. new index;
  3492. new name[32];
  3493. menu_item_getinfo(menu, item, dummy, itemdata, 1, name, 31, dummy);
  3494. index = itemdata[0];
  3495. switch (index)
  3496. {
  3497. case -10:
  3498. {
  3499. _ShowMainMenu(id);
  3500. }
  3501. default:
  3502. {
  3503. g_iGiftTarget[id] = index;
  3504. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_YOUR_TARGET", name);
  3505. _ShowGiftMenu(id);
  3506. }
  3507. }
  3508. return _MenuExit(menu);
  3509. }
  3510.  
  3511. _SelectItem(id)
  3512. {
  3513. new temp[64];
  3514. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_ITEM_MENU");
  3515. new menu = menu_create(temp, "si_menu_handler", 0);
  3516. new szItem[2];
  3517. szItem[1] = 0;
  3518. new total;
  3519. if (0 < g_iUserCases[id])
  3520. {
  3521. formatex(temp, 63, "\w%L \r| \y%L", id, "CSGOR_ITEM_CASE", id, "CSGOR_SM_PIECES", g_iUserCases[id]);
  3522. szItem[0] = 1;
  3523. menu_additem(menu, temp, szItem, 0, -1);
  3524. total++;
  3525. }
  3526. if (0 < g_iUserKeys[id])
  3527. {
  3528. formatex(temp, 63, "\w%L \r| \y%L", id, "CSGOR_ITEM_KEY", id, "CSGOR_SM_PIECES", g_iUserKeys[id]);
  3529. szItem[0] = 0;
  3530. menu_additem(menu, temp, szItem, 0, -1);
  3531. total++;
  3532. }
  3533. new szSkin[32];
  3534. new num;
  3535. new type[2];
  3536. new i;
  3537. while (i < g_iSkinsNum)
  3538. {
  3539. num = g_iUserSkins[id][i];
  3540. if (0 < num)
  3541. {
  3542. ArrayGetString(g_aSkinName, i, szSkin, 31);
  3543. ArrayGetString(g_aSkinType, i, type, 1);
  3544. switch (type[0])
  3545. {
  3546. case 99:
  3547. {
  3548. formatex(temp, 63, "\w%s \r| \y%L \r#", szSkin, id, "CSGOR_SM_PIECES", num);
  3549. }
  3550.  
  3551. default:
  3552. {
  3553. formatex(temp, 63, "\w%s \r| \y%L", szSkin, id, "CSGOR_SM_PIECES", num);
  3554. }
  3555. }
  3556. szItem[0] = i;
  3557. menu_additem(menu, temp, szItem, 0, -1);
  3558. total++;
  3559. }
  3560. i++;
  3561. }
  3562. if (!total)
  3563. {
  3564. formatex(temp, 63, "\r%L", id, "CSGOR_NO_ITEMS");
  3565. szItem[0] = -10;
  3566. menu_additem(menu, temp, szItem, 0, -1);
  3567. }
  3568. _DisplayMenu(id, menu);
  3569. return 0;
  3570. }
  3571.  
  3572. public si_menu_handler(id, menu, item)
  3573. {
  3574. if (item == -3)
  3575. {
  3576. _ShowGiftMenu(id);
  3577. return _MenuExit(menu);
  3578. }
  3579. new itemdata[2];
  3580. new dummy;
  3581. new index;
  3582. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  3583. index = itemdata[0];
  3584. switch (index)
  3585. {
  3586. case -10:
  3587. {
  3588. _ShowMainMenu(id);
  3589. }
  3590. default:
  3591. {
  3592. if (index == g_iUserSellItem[id] && g_bUserSell[id])
  3593. {
  3594. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_INVALID_GIFT");
  3595. _SelectItem(id);
  3596. }
  3597. else
  3598. {
  3599. g_iGiftItem[id] = index;
  3600. new szItem[32];
  3601. _GetItemName(index, szItem, 31);
  3602. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_YOUR_GIFT", szItem);
  3603. _ShowGiftMenu(id);
  3604. }
  3605. }
  3606. }
  3607. return _MenuExit(menu);
  3608. }
  3609.  
  3610. public Message_SayText(msgId, msgDest, msgEnt)
  3611. {
  3612. return PLUGIN_HANDLED;
  3613. }
  3614.  
  3615. public Message_SayHandle(id)
  3616. {
  3617. if (is_user_connected(id) && g_bLogged[id])
  3618. {
  3619. read_argv(1, szMessage, 127);
  3620. for (new j = 1; j <= get_maxplayers(); j++)
  3621. {
  3622. if (j == 0 || equali(g_szName[id], "") || equali(szMessage, ""))
  3623. {
  3624. return 0;
  3625. }
  3626. new szRank[32];
  3627. ArrayGetString(g_aRankName, g_iUserRank[id], szRank, 31);
  3628. if (!is_user_alive(id) && cs_get_user_team(id) != CS_TEAM_SPECTATOR)
  3629. {
  3630. new temp[128];
  3631. formatex(temp, 127, "^1*HALOTT* ^4[%s] ^3%s ^1: %s", szRank, g_szName[id], szMessage);
  3632. if (is_user_connected(j))
  3633. {
  3634. send_message(temp, id, j);
  3635. }
  3636. }
  3637. if (is_user_alive(id))
  3638. {
  3639. new temp[128];
  3640. formatex(temp, 127, "^4[%s] ^3%s ^1: %s", szRank, g_szName[id], szMessage);
  3641. if (is_user_connected(j))
  3642. {
  3643. send_message(temp, id, j);
  3644. }
  3645. }
  3646. if (!is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_SPECTATOR)
  3647. {
  3648. new temp[128];
  3649. formatex(temp, 127, "^1*NÉZŐ* ^4[%s] ^3%s ^1: %s", szRank, g_szName[id], szMessage);
  3650. if (is_user_connected(j))
  3651. {
  3652. send_message(temp, id, j);
  3653. }
  3654. }
  3655. }
  3656. return 0;
  3657. }
  3658. else if (is_user_connected(id) && !g_bLogged[id])
  3659. {
  3660. read_argv(1, szMessage, 127);
  3661. for (new j = 1; j <= get_maxplayers(); j++)
  3662. {
  3663. if (j == 0 || equali(g_szName[id], "") || equali(szMessage, ""))
  3664. {
  3665. return 0;
  3666. }
  3667. if (!is_user_alive(id) && cs_get_user_team(id) != CS_TEAM_SPECTATOR)
  3668. {
  3669. new temp[128];
  3670. formatex(temp, 127, "^1*HALOTT* ^3%s ^1: %s", g_szName[id], szMessage);
  3671. if (is_user_connected(j))
  3672. {
  3673. send_message(temp, id, j);
  3674. }
  3675. }
  3676. if (is_user_alive(id))
  3677. {
  3678. new temp[128];
  3679. formatex(temp, 127, "^3%s ^1: %s", g_szName[id], szMessage);
  3680. if (is_user_connected(j))
  3681. {
  3682. send_message(temp, id, j);
  3683. }
  3684. }
  3685. if (!is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_SPECTATOR)
  3686. {
  3687. new temp[128];
  3688. formatex(temp, 127, "^1*NÉZŐ* ^3%s ^1: %s", g_szName[id], szMessage);
  3689. if (is_user_connected(j))
  3690. {
  3691. send_message(temp, id, j);
  3692. }
  3693. }
  3694. }
  3695. return 0;
  3696. }
  3697. return 0;
  3698. }
  3699.  
  3700. public Message_SayHandleTeam(id)
  3701. {
  3702. if (is_user_connected(id) && g_bLogged[id])
  3703. {
  3704. read_argv(1, szMessage, 127);
  3705. for (new j = 1; j <= get_maxplayers(); j++)
  3706. {
  3707. if (j == 0 || equali(g_szName[id], "") || equali(szMessage, ""))
  3708. {
  3709. return 0;
  3710. }
  3711. new szRank[32];
  3712. ArrayGetString(g_aRankName, g_iUserRank[id], szRank, 31);
  3713. if (!is_user_alive(id) && is_user_connected(j) && cs_get_user_team(j) == cs_get_user_team(id))
  3714. {
  3715. new temp[128];
  3716. if (cs_get_user_team(id) == CS_TEAM_T)
  3717. {
  3718. formatex(temp, 127, "^1*HALOTT* (Terrorist) ^4[%s] ^3%s ^1: %s", szRank, g_szName[id], szMessage);
  3719. }
  3720. if (cs_get_user_team(id) == CS_TEAM_CT)
  3721. {
  3722. formatex(temp, 127, "^1*HALOTT* (Counter-Terrorist) ^4[%s] ^3%s ^1: %s", szRank, g_szName[id], szMessage);
  3723. }
  3724. send_message(temp, id, j);
  3725. }
  3726. if (is_user_alive(id) && is_user_connected(j) && cs_get_user_team(j) == cs_get_user_team(id))
  3727. {
  3728. new temp[128];
  3729. if (cs_get_user_team(id) == CS_TEAM_T)
  3730. {
  3731. formatex(temp, 127, "^1(Terrorist) ^4[%s] ^3%s ^1: %s", szRank, g_szName[id], szMessage);
  3732. }
  3733. if (cs_get_user_team(id) == CS_TEAM_CT)
  3734. {
  3735. formatex(temp, 127, "^1(Counter-Terrorist) ^4[%s] ^3%s ^1: %s", szRank, g_szName[id], szMessage);
  3736. }
  3737. send_message(temp, id, j);
  3738. }
  3739. }
  3740. return 0;
  3741. }
  3742. else if (is_user_connected(id) && !g_bLogged[id])
  3743. {
  3744. read_argv(1, szMessage, 127);
  3745. for (new j = 1; j <= get_maxplayers(); j++)
  3746. {
  3747. if (j == 0 || equali(g_szName[id], "") || equali(szMessage, ""))
  3748. {
  3749. return 0;
  3750. }
  3751. if (!is_user_alive(id) && is_user_connected(j) && cs_get_user_team(j) == cs_get_user_team(id))
  3752. {
  3753. new temp[128];
  3754. if (cs_get_user_team(id) == CS_TEAM_T)
  3755. {
  3756. formatex(temp, 127, "^1*HALOTT* (Terrorist) ^3%s ^1: %s", g_szName[id], szMessage);
  3757. }
  3758. if (cs_get_user_team(id) == CS_TEAM_CT)
  3759. {
  3760. formatex(temp, 127, "^1*HALOTT* (Counter-Terrorist) ^3%s ^1: %s", g_szName[id], szMessage);
  3761. }
  3762. send_message(temp, id, j);
  3763. }
  3764. if (is_user_alive(id) && is_user_connected(j) && cs_get_user_team(j) == cs_get_user_team(id))
  3765. {
  3766. new temp[128];
  3767. if (cs_get_user_team(id) == CS_TEAM_T)
  3768. {
  3769. formatex(temp, 127, "^1(Terrorist) ^3%s ^1: %s", g_szName[id], szMessage);
  3770. }
  3771. if (cs_get_user_team(id) == CS_TEAM_CT)
  3772. {
  3773. formatex(temp, 127, "^1(Counter-Terrorist) ^3%s ^1: %s", g_szName[id], szMessage);
  3774. }
  3775. send_message(temp, id, j);
  3776. }
  3777. }
  3778. return 0;
  3779. }
  3780. return 0;
  3781. }
  3782.  
  3783. send_message(message[], id, i)
  3784. {
  3785. if (!is_user_connected(i))
  3786. {
  3787. return 0;
  3788. }
  3789. message_begin(MSG_ONE, g_Msg_SayText, {0,0,0}, i);
  3790. write_byte(id);
  3791. write_string(message);
  3792. message_end();
  3793. return 0;
  3794. }
  3795.  
  3796. _ShowTradeMenu(id)
  3797. {
  3798. if (g_bTradeAccept[id])
  3799. {
  3800. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TRADE_INFO2");
  3801. return 0;
  3802. }
  3803. new temp[64];
  3804. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_TRADE_MENU");
  3805. new menu = menu_create(temp, "trade_menu_handler", 0);
  3806. new szItem[2];
  3807. szItem[1] = 0;
  3808. new bool:HasTarget;
  3809. new bool:HasItem;
  3810. new target = g_iTradeTarget[id];
  3811. if (target)
  3812. {
  3813. formatex(temp, 63, "\w%L", id, "CSGOR_GM_TARGET", g_szName[target]);
  3814. szItem[0] = 0;
  3815. menu_additem(menu, temp, szItem, 0, -1);
  3816. HasTarget = true;
  3817. }
  3818. else
  3819. {
  3820. formatex(temp, 63, "\r%L", id, "CSGOR_GM_SELECT_TARGET");
  3821. szItem[0] = 0;
  3822. menu_additem(menu, temp, szItem, 0, -1);
  3823. }
  3824. if (!_IsGoodItem(g_iTradeItem[id]))
  3825. {
  3826. formatex(temp, 63, "\r%L^n", id, "CSGOR_GM_SELECT_ITEM");
  3827. szItem[0] = 1;
  3828. menu_additem(menu, temp, szItem, 0, -1);
  3829. }
  3830. else
  3831. {
  3832. new Item[32];
  3833. _GetItemName(g_iTradeItem[id], Item, 31);
  3834. formatex(temp, 63, "\w%L^n", id, "CSGOR_GM_ITEM", Item);
  3835. szItem[0] = 1;
  3836. menu_additem(menu, temp, szItem, 0, -1);
  3837. HasItem = true;
  3838. }
  3839. if (HasTarget && HasItem && !g_bTradeActive[id])
  3840. {
  3841. formatex(temp, 63, "\r%L", id, "CSGOR_GM_SEND");
  3842. szItem[0] = 2;
  3843. menu_additem(menu, temp, szItem, 0, -1);
  3844. }
  3845. if (g_bTradeActive[id] || g_bTradeSecond[id])
  3846. {
  3847. formatex(temp, 63, "\r%L", id, "CSGOR_TRADE_CANCEL");
  3848. szItem[0] = 3;
  3849. menu_additem(menu, temp, szItem, 0, -1);
  3850. }
  3851. _DisplayMenu(id, menu);
  3852. return 0;
  3853. }
  3854.  
  3855. public trade_menu_handler(id, menu, item)
  3856. {
  3857. if (item == -3)
  3858. {
  3859. if (g_bTradeSecond[id])
  3860. {
  3861. clcmd_say_deny(id);
  3862. }
  3863. _ShowMainMenu(id);
  3864. return _MenuExit(menu);
  3865. }
  3866. new itemdata[2];
  3867. new dummy;
  3868. new index;
  3869. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  3870. index = itemdata[0];
  3871. switch (index)
  3872. {
  3873. case 0:
  3874. {
  3875. if (g_bTradeActive[id] || g_bTradeSecond[id])
  3876. {
  3877. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TRADE_LOCKED");
  3878. _ShowTradeMenu(id);
  3879. }
  3880. else
  3881. {
  3882. _SelectTradeTarget(id);
  3883. }
  3884. }
  3885. case 1:
  3886. {
  3887. if (g_bTradeActive[id])
  3888. {
  3889. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TRADE_LOCKED");
  3890. _ShowTradeMenu(id);
  3891. }
  3892. else
  3893. {
  3894. _SelectTradeItem(id);
  3895. }
  3896. }
  3897. case 2:
  3898. {
  3899. new target = g_iTradeTarget[id];
  3900. new _item = g_iTradeItem[id];
  3901. if (!g_bLogged[target] || !(0 < target && 32 >= target))
  3902. {
  3903. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_INVALID_TARGET");
  3904. _ResetTradeData(id);
  3905. _ShowTradeMenu(id);
  3906. }
  3907. else
  3908. {
  3909. if (!_UserHasItem(id, _item))
  3910. {
  3911. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_NOT_ENOUGH_ITEMS");
  3912. g_iTradeItem[id] = -1;
  3913. _ShowTradeMenu(id);
  3914. }
  3915. if (g_bTradeSecond[id] && !_UserHasItem(target, g_iTradeItem[target]))
  3916. {
  3917. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TRADE_FAIL");
  3918. color_print(target, "^4%s^1 %L", "[CS:GO]", target, "CSGOR_TRADE_FAIL");
  3919. _ResetTradeData(id);
  3920. _ResetTradeData(target);
  3921. _ShowTradeMenu(id);
  3922. }
  3923. g_bTradeActive[id] = 1;
  3924. g_iTradeRequest[target] = id;
  3925. new szItem[32];
  3926. _GetItemName(g_iTradeItem[id], szItem, 31);
  3927. if (!g_bTradeSecond[id])
  3928. {
  3929. color_print(target, "^4%s^1 %L", "[CS:GO]", target, "CSGOR_TRADE_INFO1", g_szName[id], szItem);
  3930. color_print(target, "^4%s^1 %L", "[CS:GO]", target, "CSGOR_TRADE_INFO2");
  3931. }
  3932. else
  3933. {
  3934. new yItem[32];
  3935. _GetItemName(g_iTradeItem[target], yItem, 31);
  3936. color_print(target, "^4%s %L", "[CS:GO]", target, "CSGOR_TRADE_INFO3", g_szName[id], szItem, yItem);
  3937. color_print(target, "^4%s^1 %L", "[CS:GO]", target, "CSGOR_TRADE_INFO2");
  3938. g_bTradeAccept[target] = 1;
  3939. }
  3940. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TRADE_SEND", g_szName[target]);
  3941. }
  3942. }
  3943. case 3:
  3944. {
  3945. if (g_bTradeSecond[id])
  3946. {
  3947. clcmd_say_deny(id);
  3948. }
  3949. else
  3950. {
  3951. _ResetTradeData(id);
  3952. }
  3953. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TRADE_CANCELED");
  3954. _ShowTradeMenu(id);
  3955. }
  3956. default:
  3957. {
  3958. }
  3959. }
  3960. return _MenuExit(menu);
  3961. }
  3962.  
  3963. _SelectTradeTarget(id)
  3964. {
  3965. new temp[64];
  3966. formatex(temp, 63, "\r%s \y%L", "[CS:GO]", id, "CSGOR_GM_SELECT_TARGET");
  3967. new menu = menu_create(temp, "tst_menu_handler", 0);
  3968. new szItem[2];
  3969. szItem[1] = 0;
  3970. new Pl[32];
  3971. new n;
  3972. new p;
  3973. get_players(Pl, n, "h", "");
  3974. new total;
  3975. if (n)
  3976. {
  3977. new i;
  3978. while (i < n)
  3979. {
  3980. p = Pl[i];
  3981. if (g_bLogged[p])
  3982. {
  3983. if (!(p == id))
  3984. {
  3985. szItem[0] = p;
  3986. menu_additem(menu, g_szName[p], szItem, 0, -1);
  3987. total++;
  3988. }
  3989. }
  3990. i++;
  3991. }
  3992. }
  3993. if (!total)
  3994. {
  3995. formatex(temp, 63, "\r%L", id, "CSGOR_ST_NO_PLAYERS");
  3996. szItem[0] = -10;
  3997. menu_additem(menu, temp, szItem, 0, -1);
  3998. }
  3999. _DisplayMenu(id, menu);
  4000. return 0;
  4001. }
  4002.  
  4003. public tst_menu_handler(id, menu, item)
  4004. {
  4005. if (item == -3)
  4006. {
  4007. _ShowTradeMenu(id);
  4008. return _MenuExit(menu);
  4009. }
  4010. new itemdata[2];
  4011. new dummy;
  4012. new index;
  4013. new name[32];
  4014. menu_item_getinfo(menu, item, dummy, itemdata, 1, name, 31, dummy);
  4015. index = itemdata[0];
  4016. switch (index)
  4017. {
  4018. case -10:
  4019. {
  4020. _ShowMainMenu(id);
  4021. }
  4022. default:
  4023. {
  4024. if (g_iTradeRequest[index])
  4025. {
  4026. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TARGET_TRADE_ACTIVE", name);
  4027. }
  4028. else
  4029. {
  4030. g_iTradeTarget[id] = index;
  4031. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_YOUR_TARGET", name);
  4032. }
  4033. _ShowTradeMenu(id);
  4034. }
  4035. }
  4036. return _MenuExit(menu);
  4037. }
  4038.  
  4039. _SelectTradeItem(id)
  4040. {
  4041. new temp[64];
  4042. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_ITEM_MENU");
  4043. new menu = menu_create(temp, "tsi_menu_handler", 0);
  4044. new szItem[2];
  4045. szItem[1] = 0;
  4046. new total;
  4047. if (0 < g_iUserCases[id])
  4048. {
  4049. formatex(temp, 63, "\w%L \r| \y%L", id, "CSGOR_ITEM_CASE", id, "CSGOR_SM_PIECES", g_iUserCases[id]);
  4050. szItem[0] = 1;
  4051. menu_additem(menu, temp, szItem, 0, -1);
  4052. total++;
  4053. }
  4054. if (0 < g_iUserKeys[id])
  4055. {
  4056. formatex(temp, 63, "\w%L \r| \y%L", id, "CSGOR_ITEM_KEY", id, "CSGOR_SM_PIECES", g_iUserKeys[id]);
  4057. szItem[0] = 0;
  4058. menu_additem(menu, temp, szItem, 0, -1);
  4059. total++;
  4060. }
  4061. new szSkin[32];
  4062. new num;
  4063. new type[2];
  4064. new i;
  4065. while (i < g_iSkinsNum)
  4066. {
  4067. num = g_iUserSkins[id][i];
  4068. if (0 < num)
  4069. {
  4070. ArrayGetString(g_aSkinName, i, szSkin, 31);
  4071. ArrayGetString(g_aSkinType, i, type, 1);
  4072. switch (type[0])
  4073. {
  4074. case 99:
  4075. {
  4076. formatex(temp, 63, "\w%s \r| \y%L \r#", szSkin, id, "CSGOR_SM_PIECES", num);
  4077. }
  4078.  
  4079. default:
  4080. {
  4081. formatex(temp, 63, "\w%s \r| \y%L", szSkin, id, "CSGOR_SM_PIECES", num);
  4082. }
  4083. }
  4084. szItem[0] = i;
  4085. menu_additem(menu, temp, szItem, 0, -1);
  4086. total++;
  4087. }
  4088. i++;
  4089. }
  4090. if (!total)
  4091. {
  4092. formatex(temp, 63, "\r%L", id, "CSGOR_NO_ITEMS");
  4093. szItem[0] = -10;
  4094. menu_additem(menu, temp, szItem, 0, -1);
  4095. }
  4096. _DisplayMenu(id, menu);
  4097. return 0;
  4098. }
  4099.  
  4100. public tsi_menu_handler(id, menu, item)
  4101. {
  4102. if (item == -3)
  4103. {
  4104. _ShowTradeMenu(id);
  4105. return _MenuExit(menu);
  4106. }
  4107. new itemdata[2];
  4108. new dummy;
  4109. new index;
  4110. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  4111. index = itemdata[0];
  4112. switch (index)
  4113. {
  4114. case -10:
  4115. {
  4116. _ShowTradeMenu(id);
  4117. }
  4118. default:
  4119. {
  4120. if (index == g_iUserSellItem[id] && g_bUserSell[id])
  4121. {
  4122. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_INVALID_ITEM");
  4123. _SelectTradeItem(id);
  4124. }
  4125. else
  4126. {
  4127. g_iTradeItem[id] = index;
  4128. new szItem[32];
  4129. _GetItemName(index, szItem, 31);
  4130. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TRADE_ITEM", szItem);
  4131. _ShowTradeMenu(id);
  4132. }
  4133. }
  4134. }
  4135. return _MenuExit(menu);
  4136. }
  4137.  
  4138. _ResetTradeData(id)
  4139. {
  4140. g_bTradeActive[id] = 0;
  4141. g_bTradeSecond[id] = 0;
  4142. g_bTradeAccept[id] = 0;
  4143. g_iTradeTarget[id] = 0;
  4144. g_iTradeItem[id] = -1;
  4145. g_iTradeRequest[id] = 0;
  4146. return 0;
  4147. }
  4148.  
  4149. public clcmd_say_accept(id)
  4150. {
  4151. new sender = g_iTradeRequest[id];
  4152. if (1 > sender || 32 < sender)
  4153. {
  4154. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_DONT_HAVE_REQ");
  4155. return 1;
  4156. }
  4157. if (!g_bLogged[sender] || !(0 < sender && 32 >= sender))
  4158. {
  4159. _ResetTradeData(id);
  4160. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_INVALID_SENDER");
  4161. return 1;
  4162. }
  4163. if (!g_bTradeActive[sender] && id == g_iTradeTarget[sender])
  4164. {
  4165. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TRADE_IS_CANCELED");
  4166. _ResetTradeData(id);
  4167. return 1;
  4168. }
  4169. if (g_bTradeAccept[id])
  4170. {
  4171. new sItem = g_iTradeItem[sender];
  4172. new tItem = g_iTradeItem[id];
  4173. if (!_UserHasItem(id, tItem) || !_UserHasItem(sender, sItem))
  4174. {
  4175. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TRADE_FAIL2");
  4176. color_print(sender, "^4%s^1 %L", "[CS:GO]", sender, "CSGOR_TRADE_FAIL2");
  4177. _ResetTradeData(id);
  4178. _ResetTradeData(sender);
  4179. return 1;
  4180. }
  4181. switch (sItem)
  4182. {
  4183. case 0:
  4184. {
  4185. g_iUserKeys[id]++;
  4186. g_iUserKeys[sender]--;
  4187. }
  4188. case 1:
  4189. {
  4190. g_iUserCases[id]++;
  4191. g_iUserCases[sender]--;
  4192. }
  4193. default:
  4194. {
  4195. g_iUserSkins[id][sItem]++;
  4196. g_iUserSkins[sender][sItem]--;
  4197. }
  4198. }
  4199. switch (tItem)
  4200. {
  4201. case 0:
  4202. {
  4203. g_iUserKeys[id]--;
  4204. g_iUserKeys[sender]++;
  4205. }
  4206. case 1:
  4207. {
  4208. g_iUserCases[id]--;
  4209. g_iUserCases[sender]++;
  4210. }
  4211. default:
  4212. {
  4213. g_iUserSkins[id][tItem]--;
  4214. g_iUserSkins[sender][tItem]++;
  4215. }
  4216. }
  4217. new sItemsz[32];
  4218. new tItemsz[32];
  4219. _GetItemName(tItem, tItemsz, 31);
  4220. _GetItemName(sItem, sItemsz, 31);
  4221. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TRADE_SUCCESS", tItemsz, sItemsz);
  4222. color_print(sender, "^4%s^1 %L", "[CS:GO]", sender, "CSGOR_TRADE_SUCCESS", sItemsz, tItemsz);
  4223. _ResetTradeData(id);
  4224. _ResetTradeData(sender);
  4225. }
  4226. else
  4227. {
  4228. if (!g_bTradeSecond[id])
  4229. {
  4230. g_iTradeTarget[id] = sender;
  4231. g_iTradeItem[id] = -1;
  4232. g_bTradeSecond[id] = 1;
  4233. _ShowTradeMenu(id);
  4234. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TRADE_SELECT_ITEM");
  4235. }
  4236. }
  4237. return 1;
  4238. }
  4239.  
  4240. public clcmd_say_deny(id)
  4241. {
  4242. new sender = g_iTradeRequest[id];
  4243. if (sender < 1 || sender > 32)
  4244. {
  4245. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_DONT_HAVE_REQ");
  4246. return 1;
  4247. }
  4248. if (!g_bLogged[sender] || !(0 < sender && 32 >= sender))
  4249. {
  4250. _ResetTradeData(id);
  4251. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_INVALID_SENDER");
  4252. return 1;
  4253. }
  4254. if (!g_bTradeActive[sender] && id == g_iTradeTarget[sender])
  4255. {
  4256. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TRADE_IS_CANCELED");
  4257. _ResetTradeData(id);
  4258. return 1;
  4259. }
  4260. _ResetTradeData(id);
  4261. _ResetTradeData(sender);
  4262. color_print(sender, "^4%s^1 %L", "[CS:GO]", sender, "CSGOR_TARGET_REFUSE_TRADE", g_szName[id]);
  4263. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_YOU_REFUSE_TRADE", g_szName[sender]);
  4264. return 1;
  4265. }
  4266.  
  4267. _ShowGamesMenu(id)
  4268. {
  4269. new temp[64];
  4270. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_GAMES_MENU");
  4271. new menu = menu_create(temp, "games_menu_handler", 0);
  4272. new szItem[2];
  4273. szItem[1] = 0;
  4274. formatex(temp, 63, "\w%L", id, "CSGOR_MM_TOMBOLA", g_iTombolaCost);
  4275. menu_additem(menu, temp, szItem, 0, -1);
  4276. formatex(temp, 63, "\w%L", id, "CSGOR_GAME_ROULETTE", g_iRouletteCost);
  4277. menu_additem(menu, temp, szItem, 0, -1);
  4278. formatex(temp, 63, "\w%L", id, "CSGOR_GAME_JACKPOT");
  4279. menu_additem(menu, temp, szItem, 0, -1);
  4280. _DisplayMenu(id, menu);
  4281. return 0;
  4282. }
  4283.  
  4284. public games_menu_handler(id, menu, item)
  4285. {
  4286. if (item == -3)
  4287. {
  4288. _ShowMainMenu(id);
  4289. return _MenuExit(menu);
  4290. }
  4291. switch (item)
  4292. {
  4293. case 0:
  4294. {
  4295. _ShowTombolaMenu(id);
  4296. }
  4297. case 1:
  4298. {
  4299. new points = g_iUserPoints[id];
  4300. if (points < g_iRouletteCost)
  4301. {
  4302. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_NOT_ENOUGH_POINTS", g_iRouletteCost - points);
  4303. _ShowGamesMenu(id);
  4304. }
  4305. else
  4306. {
  4307. if (g_bRoulettePlay[id])
  4308. {
  4309. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_ROULETTE_NEXT");
  4310. _ShowGamesMenu(id);
  4311. }
  4312. else
  4313. {
  4314. _ShowRouletteMenu(id);
  4315. }
  4316. }
  4317. }
  4318. case 2:
  4319. {
  4320. if (g_bJackpotWork)
  4321. {
  4322. _ShowJackpotMenu(id);
  4323. }
  4324. else
  4325. {
  4326. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_JP_CLOSED", get_pcvar_num(c_JackpotTimer));
  4327. }
  4328. }
  4329. default:
  4330. {
  4331. }
  4332. }
  4333. return _MenuExit(menu);
  4334. }
  4335.  
  4336. _ShowTombolaMenu(id)
  4337. {
  4338. new temp[64];
  4339. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_TOMBOLA_MENU");
  4340. new menu = menu_create(temp, "tombola_menu_handler", 0);
  4341. new szItem[2];
  4342. szItem[1] = 0;
  4343. new Timer[32];
  4344. _FormatTime(Timer, 31, g_iNextTombolaStart);
  4345. formatex(temp, 63, "\w%L", id, "CSGOR_TOMB_TIMER", Timer);
  4346. szItem[0] = 0;
  4347. menu_additem(menu, temp, szItem, 0, -1);
  4348. formatex(temp, 63, "\w%L", id, "CSGOR_TOMB_PLAYERS", g_iTombolaPlayers);
  4349. szItem[0] = 0;
  4350. menu_additem(menu, temp, szItem, 0, -1);
  4351. formatex(temp, 63, "\w%L^n", id, "CSGOR_TOMB_PRIZE", g_iTombolaPrize);
  4352. szItem[0] = 0;
  4353. menu_additem(menu, temp, szItem, 0, -1);
  4354. if (g_bUserPlay[id])
  4355. {
  4356. formatex(temp, 63, "\r%L", id, "CSGOR_TOMB_ALREADY_PLAY");
  4357. szItem[0] = 0;
  4358. menu_additem(menu, temp, szItem, 0, -1);
  4359. }
  4360. else
  4361. {
  4362. formatex(temp, 63, "\r%L^n\w%L", id, "CSGOR_TOMB_PLAY", id, "CSGOR_TOMB_COST", g_iTombolaCost);
  4363. szItem[0] = 1;
  4364. menu_additem(menu, temp, szItem, 0, -1);
  4365. }
  4366. _DisplayMenu(id, menu);
  4367. return 0;
  4368. }
  4369.  
  4370. _FormatTime(timer[], len, nextevent)
  4371. {
  4372. new seconds = nextevent - get_systime(0);
  4373. new minutes;
  4374. while (seconds >= 60)
  4375. {
  4376. seconds += -60;
  4377. minutes++;
  4378. }
  4379. new bool:add_before;
  4380. new temp[32];
  4381. if (seconds)
  4382. {
  4383. new second[64];
  4384. if (seconds == 1)
  4385. {
  4386. formatex(second, 63, "%L", 0, "CSGOR_TOMB_TEXT_SECOND");
  4387. }
  4388. else
  4389. {
  4390. formatex(second, 63, "%L", 0, "CSGOR_TOMB_TEXT_SECONDS");
  4391. }
  4392. formatex(temp, 31, "%i %s", seconds, second);
  4393. add_before = true;
  4394. }
  4395. if (minutes)
  4396. {
  4397. if (add_before)
  4398. {
  4399. new minute[64];
  4400. if (minutes == 1)
  4401. {
  4402. formatex(minute, 63, "%L", 0, "CSGOR_TOMB_TEXT_MINUTE");
  4403. }
  4404. else
  4405. {
  4406. formatex(minute, 63, "%L", 0, "CSGOR_TOMB_TEXT_MINUTES");
  4407. }
  4408. format(temp, 31, "%i %s, %s", minutes, minute, temp);
  4409. }
  4410. else
  4411. {
  4412. new minute[64];
  4413. if (minutes == 1)
  4414. {
  4415. formatex(minute, 63, "%L", 0, "CSGOR_TOMB_TEXT_MINUTE");
  4416. }
  4417. else
  4418. {
  4419. formatex(minute, 63, "%L", 0, "CSGOR_TOMB_TEXT_MINUTES");
  4420. }
  4421. formatex(temp, 31, "%i %s", minutes, minute);
  4422. add_before = true;
  4423. }
  4424. }
  4425. if (add_before)
  4426. {
  4427. formatex(timer, len, "%s", temp);
  4428. }
  4429. return 0;
  4430. }
  4431.  
  4432. public tombola_menu_handler(id, menu, item)
  4433. {
  4434. if (item == -3)
  4435. {
  4436. _ShowGamesMenu(id);
  4437. return _MenuExit(menu);
  4438. }
  4439. new itemdata[2];
  4440. new dummy;
  4441. new index;
  4442. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  4443. index = itemdata[0];
  4444. switch (index)
  4445. {
  4446. case 0:
  4447. {
  4448. _ShowTombolaMenu(id);
  4449. }
  4450. case 1:
  4451. {
  4452. new uPoints = g_iUserPoints[id];
  4453. if (!g_bTombolaWork)
  4454. {
  4455. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_TOMB_NOT_WORK");
  4456. }
  4457. else
  4458. {
  4459. if (uPoints < g_iTombolaCost)
  4460. {
  4461. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_NOT_ENOUGH_POINTS", g_iTombolaCost - uPoints);
  4462. _ShowTombolaMenu(id);
  4463. return 0;
  4464. }
  4465. g_iUserPoints[id] -= g_iTombolaCost;
  4466. g_iTombolaPrize = g_iTombolaCost + g_iTombolaPrize;
  4467. g_bUserPlay[id] = 1;
  4468. ArrayPushCell(g_aTombola, id);
  4469. g_iTombolaPlayers += 1;
  4470. _SaveData(id);
  4471. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_TOMB_ANNOUNCE", g_szName[id]);
  4472. _ShowTombolaMenu(id);
  4473. }
  4474. }
  4475. default:
  4476. {
  4477. }
  4478. }
  4479. return _MenuExit(menu);
  4480. }
  4481.  
  4482. public task_TombolaRun(task)
  4483. {
  4484. if (1 > g_iTombolaPlayers)
  4485. {
  4486. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_TOMB_FAIL_REG");
  4487. }
  4488. else
  4489. {
  4490. if (2 > g_iTombolaPlayers)
  4491. {
  4492. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_TOMB_FAIL_NUM");
  4493. }
  4494. new id;
  4495. new size = ArraySize(g_aTombola);
  4496. new bool:succes;
  4497. new random;
  4498. new run;
  4499. do {
  4500. random = random_num(0, size + -1);
  4501. id = ArrayGetCell(g_aTombola, random);
  4502. if (0 < id && 32 >= id || !is_user_connected(id))
  4503. {
  4504. succes = true;
  4505. if (2 > g_iTombolaPlayers)
  4506. {
  4507. g_iUserPoints[id] += g_iTombolaCost;
  4508. _SaveData(id);
  4509. }
  4510. else
  4511. {
  4512. g_iUserPoints[id] += g_iTombolaPrize;
  4513. _SaveData(id);
  4514. new Name[32];
  4515. get_user_name(id, Name, 31);
  4516. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_TOMB_WINNER", Name, g_iTombolaPrize);
  4517. }
  4518. }
  4519. else
  4520. {
  4521. ArrayDeleteItem(g_aTombola, random);
  4522. size--;
  4523. }
  4524. if (!succes && size > 0)
  4525. {
  4526. }
  4527. } while (run);
  4528. }
  4529. arrayset(g_bUserPlay, 0, 33);
  4530. g_iTombolaPlayers = 0;
  4531. g_iTombolaPrize = 0;
  4532. ArrayClear(g_aTombola);
  4533. g_iNextTombolaStart = g_iTombolaTimer + get_systime(0);
  4534. new Timer[32];
  4535. _FormatTime(Timer, 31, g_iNextTombolaStart);
  4536. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_TOMB_NEXT", Timer);
  4537. return 0;
  4538. }
  4539.  
  4540. _ShowRouletteMenu(id)
  4541. {
  4542. new temp[64];
  4543. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_ROULETTE_MENU");
  4544. new menu = menu_create(temp, "roulette_menu_handler", 0);
  4545. new szItem[2];
  4546. szItem[1] = 0;
  4547. formatex(temp, 63, "\w%L", id, "CSGOR_ROU_UNDER", g_iRouletteMin);
  4548. menu_additem(menu, temp, szItem, 0, -1);
  4549. formatex(temp, 63, "\w%L", id, "CSGOR_ROU_OVER", g_iRouletteMin);
  4550. menu_additem(menu, temp, szItem, 0, -1);
  4551. formatex(temp, 63, "\w%L\n", id, "CSGOR_ROU_BETWEEN", g_iRouletteMax);
  4552. menu_additem(menu, temp, szItem, 0, -1);
  4553. formatex(temp, 63, "\r%L", id, "CSGOR_ROU_BET", g_iUserBetPoints[id]);
  4554. menu_additem(menu, temp, szItem, 0, -1);
  4555. _DisplayMenu(id, menu);
  4556. return 0;
  4557. }
  4558.  
  4559. public roulette_menu_handler(id, menu, item)
  4560. {
  4561. if (item == -3)
  4562. {
  4563. _ShowGamesMenu(id);
  4564. return _MenuExit(menu);
  4565. }
  4566. if (0 <= item <= 2)
  4567. {
  4568. if (g_iUserBetPoints[id] <= g_iUserPoints[id])
  4569. {
  4570. g_iUserPoints[id] -= g_iUserBetPoints[id];
  4571. }
  4572. else
  4573. {
  4574. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_NOT_ENOUGH_POINTS", g_iUserBetPoints[id] - g_iUserPoints[id]);
  4575. return _MenuExit(menu);
  4576. }
  4577. }
  4578. new chance = random_num(1, 100);
  4579. switch (item)
  4580. {
  4581. case 0:
  4582. {
  4583. if (chance < 48)
  4584. {
  4585. _RouletteWin(id, g_iRouletteMin, 0);
  4586. }
  4587. else
  4588. {
  4589. _RouletteLoose(id, chance);
  4590. }
  4591. }
  4592. case 1:
  4593. {
  4594. if (chance > 53)
  4595. {
  4596. _RouletteWin(id, g_iRouletteMin, 0);
  4597. }
  4598. else
  4599. {
  4600. _RouletteLoose(id, chance);
  4601. }
  4602. }
  4603. case 2:
  4604. {
  4605. if (48 <= chance <= 53)
  4606. {
  4607. _RouletteWin(id, g_iRouletteMax, 1);
  4608. }
  4609. else
  4610. {
  4611. _RouletteLoose(id, chance);
  4612. }
  4613. }
  4614. case 3:
  4615. {
  4616. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_INSERT_BET");
  4617. client_cmd(id, "messagemode BetPoints");
  4618. }
  4619. default:
  4620. {
  4621. }
  4622. }
  4623. return _MenuExit(menu);
  4624. }
  4625.  
  4626. _RouletteWin(id, multi, announce)
  4627. {
  4628. new num = multi * g_iUserBetPoints[id];
  4629. g_iUserPoints[id] += num;
  4630. g_bRoulettePlay[id] = 1;
  4631. if (0 < announce)
  4632. {
  4633. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_ROULETTE_WIN", g_szName[id], g_iUserBetPoints[id]);
  4634. }
  4635. else
  4636. {
  4637. color_print(id, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_ROULETTE_WIN_ONE", g_iUserBetPoints[id]);
  4638. }
  4639. _SaveData(id);
  4640. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_ROULETTE_NEXT");
  4641. return 0;
  4642. }
  4643.  
  4644. _RouletteLoose(id, num)
  4645. {
  4646. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_ROULETTE_LOOSE", num);
  4647. _ShowGamesMenu(id);
  4648. return 0;
  4649. }
  4650.  
  4651. public concmd_betpoints(id)
  4652. {
  4653. new data[16];
  4654. read_args(data, 15);
  4655. remove_quotes(data);
  4656. new Amount = str_to_num(data);
  4657. if (Amount < 10 || Amount > 1000)
  4658. {
  4659. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_BET_MIN_MAX", 10, 1000);
  4660. client_cmd(id, "messagemode BetPoints");
  4661. return 1;
  4662. }
  4663. g_iUserBetPoints[id] = Amount;
  4664. _ShowRouletteMenu(id);
  4665. return 1;
  4666. }
  4667.  
  4668. _ShowJackpotMenu(id)
  4669. {
  4670. new temp[64];
  4671. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_JACKPOT_MENU");
  4672. new menu = menu_create(temp, "jackpot_menu_handler", 0);
  4673. new szItem[2];
  4674. szItem[1] = 0;
  4675. if (!_IsGoodItem(g_iUserJackpotItem[id]))
  4676. {
  4677. formatex(temp, 63, "\w%L", id, "CSGOR_SKINS");
  4678. szItem[0] = 1;
  4679. menu_additem(menu, temp, szItem, 0, -1);
  4680. }
  4681. else
  4682. {
  4683. new Item[32];
  4684. _GetItemName(g_iUserJackpotItem[id], Item, 31);
  4685. formatex(temp, 63, "\w%L", id, "CSGOR_JP_ITEM", Item);
  4686. szItem[0] = 1;
  4687. menu_additem(menu, temp, szItem, 0, -1);
  4688. }
  4689. if (g_bUserPlayJackpot[id])
  4690. {
  4691. formatex(temp, 63, "\r%L^n", id, "CSGOR_JP_ALREADY_PLAY");
  4692. szItem[0] = 0;
  4693. menu_additem(menu, temp, szItem, 0, -1);
  4694. }
  4695. else
  4696. {
  4697. formatex(temp, 63, "\r%L^n", id, "CSGOR_JP_PLAY");
  4698. szItem[0] = 2;
  4699. menu_additem(menu, temp, szItem, 0, -1);
  4700. }
  4701. new Timer[32];
  4702. _FormatTime(Timer, 31, g_iJackpotClose);
  4703. formatex(temp, 63, "\w%L", id, "CSGOR_TOMB_TIMER", Timer);
  4704. szItem[0] = 0;
  4705. menu_additem(menu, temp, szItem, 0, -1);
  4706. _DisplayMenu(id, menu);
  4707. return 0;
  4708. }
  4709.  
  4710. public jackpot_menu_handler(id, menu, item)
  4711. {
  4712. if (item == -3)
  4713. {
  4714. _ShowGamesMenu(id);
  4715. return _MenuExit(menu);
  4716. }
  4717. new itemdata[2];
  4718. new dummy;
  4719. new index;
  4720. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  4721. index = itemdata[0];
  4722. if (!g_bJackpotWork)
  4723. {
  4724. _ShowGamesMenu(id);
  4725. return _MenuExit(menu);
  4726. }
  4727. switch (index)
  4728. {
  4729. case 0:
  4730. {
  4731. _ShowJackpotMenu(id);
  4732. }
  4733. case 1:
  4734. {
  4735. if (g_bUserPlayJackpot[id])
  4736. {
  4737. _ShowJackpotMenu(id);
  4738. }
  4739. else
  4740. {
  4741. _SelectJackpotSkin(id);
  4742. }
  4743. }
  4744. case 2:
  4745. {
  4746. new skin = g_iUserJackpotItem[id];
  4747. if (!_IsGoodItem(skin))
  4748. {
  4749. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_SKINS");
  4750. _ShowJackpotMenu(id);
  4751. }
  4752. else
  4753. {
  4754. if (!_UserHasItem(id, skin))
  4755. {
  4756. color_print(id, "^4%s^1 %L", "[CS:GO]", id, "CSGOR_NOT_ENOUGH_ITEMS");
  4757. g_iUserJackpotItem[id] = -1;
  4758. }
  4759. g_bUserPlayJackpot[id] = 1;
  4760. g_iUserSkins[id][skin]--;
  4761. ArrayPushCell(g_aJackpotSkins, skin);
  4762. ArrayPushCell(g_aJackpotUsers, id);
  4763. new szItem[32];
  4764. _GetItemName(skin, szItem, 31);
  4765. color_print(0, "^4%s %L", "[CS:GO]", -1, "CSGOR_JP_JOIN", g_szName[id], szItem);
  4766. }
  4767. }
  4768. default:
  4769. {
  4770. }
  4771. }
  4772. return _MenuExit(menu);
  4773. }
  4774.  
  4775. _SelectJackpotSkin(id)
  4776. {
  4777. new temp[64];
  4778. formatex(temp, 63, "\r%s \w%L", "[CS:GO]", id, "CSGOR_SKINS");
  4779. new menu = menu_create(temp, "jp_skins_menu_handler", 0);
  4780. new szItem[2];
  4781. szItem[1] = 0;
  4782. new szSkin[32];
  4783. new num;
  4784. new type[2];
  4785. new total;
  4786. new i;
  4787. while (i < g_iSkinsNum)
  4788. {
  4789. num = g_iUserSkins[id][i];
  4790. if (0 < num)
  4791. {
  4792. ArrayGetString(g_aSkinName, i, szSkin, 31);
  4793. ArrayGetString(g_aSkinType, i, type, 1);
  4794. switch (type[0])
  4795. {
  4796. case 99:
  4797. {
  4798. formatex(temp, 63, "\w%s \r| \y%L \r#", szSkin, id, "CSGOR_SM_PIECES", num);
  4799. }
  4800.  
  4801. default:
  4802. {
  4803. formatex(temp, 63, "\w%s \r| \y%L", szSkin, id, "CSGOR_SM_PIECES", num);
  4804. }
  4805. }
  4806. szItem[0] = i;
  4807. menu_additem(menu, temp, szItem, 0, -1);
  4808. total++;
  4809. }
  4810. i++;
  4811. }
  4812. if (!total)
  4813. {
  4814. formatex(temp, 63, "\w%L", id, "CSGOR_SM_NO_SKINS");
  4815. szItem[0] = -10;
  4816. menu_additem(menu, temp, szItem, 0, -1);
  4817. }
  4818. _DisplayMenu(id, menu);
  4819. return 0;
  4820. }
  4821.  
  4822. public jp_skins_menu_handler(id, menu, item)
  4823. {
  4824. if (item == -3)
  4825. {
  4826. _ShowJackpotMenu(id);
  4827. return _MenuExit(menu);
  4828. }
  4829. new itemdata[2];
  4830. new dummy;
  4831. new index;
  4832. menu_item_getinfo(menu, item, dummy, itemdata, 1, {0}, 0, dummy);
  4833. index = itemdata[0];
  4834. if (index == -10)
  4835. {
  4836. _ShowGamesMenu(id);
  4837. return _MenuExit(menu);
  4838. }
  4839. g_iUserJackpotItem[id] = index;
  4840. _ShowJackpotMenu(id);
  4841. return _MenuExit(menu);
  4842. }
  4843.  
  4844. public task_Jackpot(task)
  4845. {
  4846. if (!g_bJackpotWork)
  4847. {
  4848. return 0;
  4849. }
  4850. new id;
  4851. new size = ArraySize(g_aJackpotUsers);
  4852. if (1 > size)
  4853. {
  4854. color_print(0, "^4%s %L", "[CS:GO]", -1, "CSGOR_JP_NO_ONE");
  4855. _ClearJackpot();
  4856. return 0;
  4857. }
  4858. if (2 > size)
  4859. {
  4860. color_print(0, "^4%s %L", "[CS:GO]", -1, "CSGOR_JP_ONLY_ONE");
  4861. new id;
  4862. new k;
  4863. id = ArrayGetCell(g_aJackpotUsers, 0);
  4864. if (0 < id && 32 >= id || !is_user_connected(id))
  4865. {
  4866. k = ArrayGetCell(g_aJackpotSkins, 0);
  4867. g_iUserSkins[id][k]++;
  4868. }
  4869. _ClearJackpot();
  4870. return 0;
  4871. }
  4872. new bool:succes;
  4873. new random;
  4874. new run;
  4875. do {
  4876. random = random_num(0, size + -1);
  4877. id = ArrayGetCell(g_aJackpotUsers, random);
  4878. if (0 < id && 32 >= id || !is_user_connected(id))
  4879. {
  4880. succes = true;
  4881. new i;
  4882. new j;
  4883. new k;
  4884. i = ArraySize(g_aJackpotSkins);
  4885. j = 0;
  4886. while (j < i)
  4887. {
  4888. k = ArrayGetCell(g_aJackpotSkins, j);
  4889. g_iUserSkins[id][k]++;
  4890. j++;
  4891. }
  4892. _SaveData(id);
  4893. color_print(0, "^4%s %L", "[CS:GO]", -1, "CSGOR_JP_WINNER", g_szName[id]);
  4894. }
  4895. else
  4896. {
  4897. ArrayDeleteItem(g_aJackpotUsers, random);
  4898. size--;
  4899. }
  4900. if (!(!succes && size > 0))
  4901. {
  4902. _ClearJackpot();
  4903. return 0;
  4904. }
  4905. } while (run);
  4906. _ClearJackpot();
  4907. return 0;
  4908. }
  4909.  
  4910. _ClearJackpot()
  4911. {
  4912. ArrayClear(g_aJackpotSkins);
  4913. ArrayClear(g_aJackpotUsers);
  4914. arrayset(g_bUserPlayJackpot, 0, 33);
  4915. g_bJackpotWork = false;
  4916. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_JP_NEXT");
  4917. return 0;
  4918. }
  4919.  
  4920. public ev_DeathMsg()
  4921. {
  4922. new killer = read_data(1);
  4923. new victim = read_data(2);
  4924. new head = read_data(3);
  4925. new szWeapon[24];
  4926. read_data(4, szWeapon, 23);
  4927. if (victim == killer)
  4928. {
  4929. return 0;
  4930. }
  4931. new assist = g_iMostDamage[victim];
  4932. if (is_user_connected(assist) && assist != killer && cs_get_user_team(assist) == cs_get_user_team(killer))
  4933. {
  4934. _GiveBonus(assist, 0);
  4935. new kName[32];
  4936. new szName1[32];
  4937. new szName2[32];
  4938. new iName1Len = strlen(g_szName[killer]);
  4939. new iName2Len = strlen(g_szName[assist]);
  4940. if (iName1Len < 14)
  4941. {
  4942. formatex(szName1, iName1Len, "%s", g_szName[killer]);
  4943. formatex(szName2, 28 - iName1Len, "%s", g_szName[assist]);
  4944. }
  4945. else
  4946. {
  4947. if (iName2Len < 14)
  4948. {
  4949. formatex(szName1, 28 - iName2Len, "%s", g_szName[killer]);
  4950. formatex(szName2, iName2Len, "%s", g_szName[assist]);
  4951. }
  4952. formatex(szName1, 13, "%s", g_szName[killer]);
  4953. formatex(szName2, 13, "%s", g_szName[assist]);
  4954. }
  4955. formatex(kName, 31, "%s + %s", szName1, szName2);
  4956. set_msg_block(g_Msg_SayText, 1);
  4957. g_IsChangeAllowed[killer] = true;
  4958. set_user_info(killer, "name", kName);
  4959. new szWeaponLong[24];
  4960. if (equali(szWeapon, "grenade", 0))
  4961. {
  4962. formatex(szWeaponLong, 23, "%s", "weapon_hegrenade");
  4963. }
  4964. else
  4965. {
  4966. formatex(szWeaponLong, 23, "weapon_%s", szWeapon);
  4967. }
  4968. new args[4];
  4969. args[0] = killer;
  4970. args[1] = victim;
  4971. args[2] = head;
  4972. args[3] = get_weaponid(szWeaponLong);
  4973. set_task(0.10, "task_Send_DeathMsg", killer + 3000, args, 4, "", 0);
  4974. }
  4975. else
  4976. {
  4977. _Send_DeathMsg(killer, victim, head, szWeapon);
  4978. }
  4979. if (equal(szWeapon, "knife", 0))
  4980. {
  4981. cs_set_user_money(killer, min(cs_get_user_money(killer) + 1000, 16000), 1);
  4982. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_KNIFE_KILL", g_szName[killer], 1000);
  4983. }
  4984. g_iDigit[killer]++;
  4985. _SetKillsIcon(killer, 0);
  4986. g_iRoundKills[killer]++;
  4987. if (!g_bLogged[killer])
  4988. {
  4989. color_print(killer, "^4%s^1 %L", "[CS:GO]", killer, "CSGOR_REGISTER");
  4990. return 0;
  4991. }
  4992. g_iUserKills[killer]++;
  4993. _SaveData(killer);
  4994. new bool:levelup;
  4995. if (g_iRanksNum + -1 > g_iUserRank[killer])
  4996. {
  4997. if (ArrayGetCell(g_aRankKills, g_iUserRank[killer] + 1) <= g_iUserKills[killer] < ArrayGetCell(g_aRankKills, g_iUserRank[killer] + 2))
  4998. {
  4999. g_iUserRank[killer]++;
  5000. _SaveData(killer);
  5001. levelup = true;
  5002. new szRank[32];
  5003. ArrayGetString(g_aRankName, g_iUserRank[killer], szRank, 31);
  5004. color_print(0, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_LEVELUP_ALL", g_szName[killer], szRank);
  5005. }
  5006. }
  5007. new rpoints;
  5008. new rchance;
  5009. if (head)
  5010. {
  5011. rpoints = random_num(g_iHMinPoints, g_iHMaxPoints);
  5012. rchance = random_num(g_iHMinChance, g_iHMaxChance);
  5013. }
  5014. else
  5015. {
  5016. rpoints = random_num(g_iKMinPoints, g_iKMaxPoints);
  5017. rchance = random_num(g_iKMinChance, g_iKMaxChance);
  5018. }
  5019. g_iUserPoints[killer] += rpoints;
  5020. _SaveData(killer);
  5021. set_hudmessage(255, 255, 255, -1.00, 0.20, 0, 6.00, 2.00, 0.00, 0.00, -1);
  5022. show_hudmessage(killer, "%L", killer, "CSGOR_REWARD_POINTS", rpoints);
  5023. if (rchance > g_iDropChance)
  5024. {
  5025. new r;
  5026. if (0 < g_iDropType)
  5027. {
  5028. r = 1;
  5029. }
  5030. else
  5031. {
  5032. r = random_num(1, 2);
  5033. }
  5034. switch (r)
  5035. {
  5036. case 1:
  5037. {
  5038. g_iUserCases[killer]++;
  5039. _SaveData(killer);
  5040. if (0 < g_iDropType)
  5041. {
  5042. color_print(killer, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_REWARD_CASE2");
  5043. }
  5044. else
  5045. {
  5046. color_print(killer, "^4%s^1 %L", "[CS:GO]", -1, "CSGOR_REWARD_CASE");
  5047. }
  5048. }
  5049. case 2:
  5050. {
  5051. g_iUserKeys[killer]++;
  5052. _SaveData(killer);
  5053. color_print(killer, "^4%s %L", "[CS:GO]", -1, "CSGOR_REWARD_KEY");
  5054. }
  5055. default:
  5056. {
  5057. }
  5058. }
  5059. }
  5060. if (levelup)
  5061. {
  5062. new szBonus[16];
  5063. get_pcvar_string(c_RankUpBonus, szBonus, 15);
  5064. new keys;
  5065. new cases;
  5066. new points;
  5067. new i;
  5068. while (szBonus[i] != 124 && 16 > i)
  5069. {
  5070. switch (szBonus[i])
  5071. {
  5072. case 99:
  5073. {
  5074. cases++;
  5075. }
  5076. case 107:
  5077. {
  5078. keys++;
  5079. }
  5080. default:
  5081. {
  5082. }
  5083. }
  5084. i++;
  5085. }
  5086. new temp[8];
  5087. strtok(szBonus, temp, 7, szBonus, 15, 124, 0);
  5088. if (szBonus[0])
  5089. {
  5090. points = str_to_num(szBonus);
  5091. }
  5092. if (0 < keys)
  5093. {
  5094. g_iUserKeys[killer] += keys;
  5095. }
  5096. if (0 < cases)
  5097. {
  5098. g_iUserCases[killer] += cases;
  5099. }
  5100. if (0 < points)
  5101. {
  5102. g_iUserPoints[killer] += points;
  5103. }
  5104. _SaveData(killer);
  5105. color_print(killer, "^4%s^1 %L", "[CS:GO]", killer, "CSGOR_RANKUP_BONUS", keys, cases, points);
  5106. }
  5107. return 0;
  5108. }
  5109.  
  5110. public ev_Damage(id)
  5111. {
  5112. if (!(id && id <= g_iMaxPlayers))
  5113. {
  5114. return 0;
  5115. }
  5116. static att;
  5117. att = get_user_attacker(id);
  5118. if (!(0 < att && att <= g_iMaxPlayers))
  5119. {
  5120. return 0;
  5121. }
  5122. static damage;
  5123. damage = read_data(2);
  5124. g_iDealDamage[att] += damage;
  5125. g_iDamage[id][att] += damage;
  5126. new topDamager = g_iMostDamage[id];
  5127. if (g_iDamage[id][topDamager] < g_iDamage[id][att])
  5128. {
  5129. g_iMostDamage[id] = att;
  5130. }
  5131. return 0;
  5132. }
  5133.  
  5134. public task_Send_DeathMsg(arg[], task)
  5135. {
  5136. new killer = task + -3000;
  5137. new victim = arg[1];
  5138. new head = arg[2];
  5139. new weapon = arg[3];
  5140. new szWeapon[24];
  5141. get_weaponname(weapon, szWeapon, 23);
  5142. if (weapon == 4)
  5143. {
  5144. replace(szWeapon, 23, "weapon_he", "");
  5145. }
  5146. else
  5147. {
  5148. replace(szWeapon, 23, "weapon_", "");
  5149. }
  5150. _Send_DeathMsg(killer, victim, head, szWeapon);
  5151. set_msg_block(g_Msg_SayText, 1);
  5152. set_user_info(killer, "name", g_szName[killer]);
  5153. set_task(0.10, "task_Reset_AmxMode", killer + 4000, "", 0, "", 0);
  5154. return 0;
  5155. }
  5156.  
  5157. _Send_DeathMsg(killer, victim, hs, weapon[])
  5158. {
  5159. message_begin(MSG_ALL, g_Msg_DeathMsg, {0,0,0}, 0);
  5160. write_byte(killer);
  5161. write_byte(victim);
  5162. write_byte(hs);
  5163. write_string(weapon);
  5164. message_end();
  5165. return 0;
  5166. }
  5167.  
  5168. public Message_DeathMsg(msgId, msgDest, msgEnt)
  5169. {
  5170. return 1;
  5171. }
  5172.  
  5173. public task_Reset_AmxMode(task)
  5174. {
  5175. new id = task - 4000;
  5176. g_IsChangeAllowed[id] = false;
  5177. return 0;
  5178. }
  5179.  
  5180. public concmd_givepoints(id, level, cid)
  5181. {
  5182. if (!cmd_access(id, level, cid, 3, false))
  5183. {
  5184. return 1;
  5185. }
  5186. new arg1[32];
  5187. new arg2[16];
  5188. read_argv(1, arg1, 31);
  5189. read_argv(2, arg2, 15);
  5190. new target;
  5191. if (arg1[0] == 64)
  5192. {
  5193. _GiveToAll(id, arg1, arg2, 0);
  5194. return 1;
  5195. }
  5196. target = cmd_target(id, arg1, 3);
  5197. if (!target)
  5198. {
  5199. console_print(id, "%s %L", "[CS:GO]", id, "CSGOR_T_NOT_FOUND", arg1);
  5200. return 1;
  5201. }
  5202. new amount = str_to_num(arg2);
  5203. if (0 > amount)
  5204. {
  5205. g_iUserPoints[target] += amount;
  5206. if (0 > g_iUserPoints[target])
  5207. {
  5208. g_iUserPoints[target] = 0;
  5209. }
  5210. console_print(id, "%s %L %L", "[CS:GO]", id, "CSGOR_SUBSTRACT", arg1, amount, id, "CSGOR_POINTS");
  5211. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_SUB_YOU", g_szName[id], amount, target, "CSGOR_POINTS");
  5212. }
  5213. else
  5214. {
  5215. if (0 < amount)
  5216. {
  5217. g_iUserPoints[target] += amount;
  5218. console_print(id, "[CS:GO] Adtál %s-nak/nek %d eurót", arg1, amount);
  5219. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_ADD_YOU", g_szName[id], amount, target, "CSGOR_POINTS");
  5220. }
  5221. return 1;
  5222. }
  5223. _SaveData(target);
  5224. return 1;
  5225. }
  5226.  
  5227. public concmd_givecases(id, level, cid)
  5228. {
  5229. if (!cmd_access(id, level, cid, 3, false))
  5230. {
  5231. return 1;
  5232. }
  5233. new arg1[32];
  5234. new arg2[16];
  5235. read_argv(1, arg1, 31);
  5236. read_argv(2, arg2, 15);
  5237. new target;
  5238. if (arg1[0] == 64)
  5239. {
  5240. _GiveToAll(id, arg1, arg2, 1);
  5241. return 1;
  5242. }
  5243. target = cmd_target(id, arg1, 3);
  5244. if (!target)
  5245. {
  5246. console_print(id, "%s %L", "[CS:GO]", id, "CSGOR_T_NOT_FOUND", arg1);
  5247. return 1;
  5248. }
  5249. new amount = str_to_num(arg2);
  5250. if (0 > amount)
  5251. {
  5252. g_iUserCases[target] -= amount;
  5253. if (0 > g_iUserCases[target])
  5254. {
  5255. g_iUserCases[target] = 0;
  5256. }
  5257. console_print(id, "%s %L %L", "[CS:GO]", id, "CSGOR_SUBSTRACT", arg1, amount, id, "CSGOR_CASES");
  5258. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_SUB_YOU", g_szName[id], amount, target, "CSGOR_CASES");
  5259. }
  5260. else
  5261. {
  5262. if (0 < amount)
  5263. {
  5264. g_iUserCases[target] += amount;
  5265. console_print(id, "%s %L %L", "[CS:GO]", id, "CSGOR_ADD", arg1, amount, id, "CSGOR_CASES");
  5266. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_ADD_YOU", g_szName[id], amount, target, "CSGOR_CASES");
  5267. }
  5268. return 1;
  5269. }
  5270. _SaveData(target);
  5271. return 1;
  5272. }
  5273.  
  5274. public concmd_givekeys(id, level, cid)
  5275. {
  5276. if (!cmd_access(id, level, cid, 3, false))
  5277. {
  5278. return 1;
  5279. }
  5280. new arg1[32];
  5281. new arg2[16];
  5282. read_argv(1, arg1, 31);
  5283. read_argv(2, arg2, 15);
  5284. new target;
  5285. if (arg1[0] == 64)
  5286. {
  5287. _GiveToAll(id, arg1, arg2, 2);
  5288. return 1;
  5289. }
  5290. target = cmd_target(id, arg1, 3);
  5291. if (!target)
  5292. {
  5293. console_print(id, "%s %L", "[CS:GO]", id, "CSGOR_T_NOT_FOUND", arg1);
  5294. return 1;
  5295. }
  5296. new amount = str_to_num(arg2);
  5297. if (0 > amount)
  5298. {
  5299. g_iUserKeys[target] -= amount;
  5300. if (0 > g_iUserKeys[target])
  5301. {
  5302. g_iUserKeys[target] = 0;
  5303. }
  5304. console_print(id, "%s %L %L", "[CS:GO]", id, "CSGOR_SUBSTRACT", arg1, amount, id, "CSGOR_KEYS");
  5305. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_SUB_YOU", g_szName[id], amount, target, "CSGOR_KEYS");
  5306. }
  5307. else
  5308. {
  5309. if (0 < amount)
  5310. {
  5311. g_iUserKeys[target] += amount;
  5312. console_print(id, "%s %L %L", "[CS:GO]", id, "CSGOR_ADD", arg1, amount, id, "CSGOR_KEYS");
  5313. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_ADD_YOU", g_szName[id], amount, target, "CSGOR_KEYS");
  5314. }
  5315. return 1;
  5316. }
  5317. _SaveData(target);
  5318. return 1;
  5319. }
  5320.  
  5321. public concmd_givedusts(id, level, cid)
  5322. {
  5323. if (!cmd_access(id, level, cid, 3, false))
  5324. {
  5325. return 1;
  5326. }
  5327. new arg1[32];
  5328. new arg2[16];
  5329. read_argv(1, arg1, 31);
  5330. read_argv(2, arg2, 15);
  5331. new target;
  5332. if (arg1[0] == 64)
  5333. {
  5334. _GiveToAll(id, arg1, arg2, 3);
  5335. return 1;
  5336. }
  5337. target = cmd_target(id, arg1, 3);
  5338. if (!target)
  5339. {
  5340. console_print(id, "%s %L", "[CS:GO]", id, "CSGOR_T_NOT_FOUND", arg1);
  5341. return 1;
  5342. }
  5343. new amount = str_to_num(arg2);
  5344. if (0 > amount)
  5345. {
  5346. g_iUserDusts[target] -= amount;
  5347. if (0 > g_iUserDusts[target])
  5348. {
  5349. g_iUserDusts[target] = 0;
  5350. }
  5351. console_print(id, "%s %L %L", "[CS:GO]", id, "CSGOR_SUBSTRACT", arg1, amount, id, "CSGOR_DUSTS");
  5352. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_SUB_YOU", g_szName[id], amount, target, "CSGOR_DUSTS");
  5353. }
  5354. else
  5355. {
  5356. if (0 < amount)
  5357. {
  5358. g_iUserDusts[target] += amount;
  5359. console_print(id, "%s %L %L", "[CS:GO]", id, "CSGOR_ADD", arg1, amount, id, "CSGOR_DUSTS");
  5360. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_ADD_YOU", g_szName[id], amount, target, "CSGOR_DUSTS");
  5361. }
  5362. return 1;
  5363. }
  5364. _SaveData(target);
  5365. return 1;
  5366. }
  5367.  
  5368. _GiveToAll(id, arg1[], arg2[], type)
  5369. {
  5370. new Pl[32];
  5371. new n;
  5372. new target;
  5373. new amount = str_to_num(arg2);
  5374. if (amount)
  5375. {
  5376. switch (arg1[1])
  5377. {
  5378. case 65, 97:
  5379. {
  5380. get_players(Pl, n, "h", "");
  5381. }
  5382. case 67, 99:
  5383. {
  5384. get_players(Pl, n, "eh", "CT");
  5385. }
  5386. case 84, 116:
  5387. {
  5388. get_players(Pl, n, "eh", "TERRORIST");
  5389. }
  5390. default:
  5391. {
  5392. }
  5393. }
  5394. if (n)
  5395. {
  5396. switch (type)
  5397. {
  5398. case 0:
  5399. {
  5400. new i;
  5401. while (i < n)
  5402. {
  5403. target = Pl[i];
  5404. if (g_bLogged[target])
  5405. {
  5406. if (0 > amount)
  5407. {
  5408. g_iUserPoints[target] -= amount;
  5409. if (0 > g_iUserPoints[target])
  5410. {
  5411. g_iUserPoints[target] = 0;
  5412. }
  5413. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_SUB_YOU", g_szName[id], amount, target, "CSGOR_POINTS");
  5414. }
  5415. else
  5416. {
  5417. g_iUserPoints[target] += amount;
  5418. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_ADD_YOU", g_szName[id], amount, target, "CSGOR_POINTS");
  5419. }
  5420. }
  5421. i++;
  5422. }
  5423. new temp[64];
  5424. if (0 < amount)
  5425. {
  5426. if (amount == 1)
  5427. {
  5428. formatex(temp, 63, "Adtál 1 Eurót egy játékosnak!", id);
  5429. }
  5430. else
  5431. {
  5432. formatex(temp, 63, "Adtál %d Eurót egy játékosnak!", amount);
  5433. }
  5434. console_print(id, "%s %s", "[CS:GO]", temp);
  5435. }
  5436. else
  5437. {
  5438. if (amount == -1)
  5439. {
  5440. formatex(temp, 63, "Kaptál 1 Eurót egy játékostól!", id);
  5441. }
  5442. else
  5443. {
  5444. formatex(temp, 63, "Kaptál %d Eurót egy játékostól!", amount *= -1);
  5445. }
  5446. console_print(id, "%s %s", "[CS:GO]", temp);
  5447. }
  5448. }
  5449. case 1:
  5450. {
  5451. new i;
  5452. while (i < n)
  5453. {
  5454. target = Pl[i];
  5455. if (g_bLogged[target])
  5456. {
  5457. if (0 > amount)
  5458. {
  5459. g_iUserCases[target] -= amount;
  5460. if (0 > g_iUserCases[target])
  5461. {
  5462. g_iUserCases[target] = 0;
  5463. }
  5464. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_SUB_YOU", g_szName[id], amount, target, "CSGOR_CASES");
  5465. }
  5466. else
  5467. {
  5468. g_iUserCases[target] += amount;
  5469. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_ADD_YOU", g_szName[id], amount, target, "CSGOR_CASES");
  5470. }
  5471. }
  5472. i++;
  5473. }
  5474. new temp[64];
  5475. if (0 < amount)
  5476. {
  5477. if (amount == 1)
  5478. {
  5479. formatex(temp, 63, "Adtál 1 ládát egy játékosnak!", id);
  5480. }
  5481. else
  5482. {
  5483. formatex(temp, 63, "Adtál %d ládát egy játékosnak!", amount);
  5484. }
  5485. console_print(id, "%s %s", "[CS:GO]", temp);
  5486. }
  5487. else
  5488. {
  5489. if (amount == -1)
  5490. {
  5491. formatex(temp, 63, "Kaptál 1 ládát egy játékostól!", id);
  5492. }
  5493. else
  5494. {
  5495. formatex(temp, 63, "Kaptál %d ládát egy játékostól!", amount *= -1);
  5496. }
  5497. console_print(id, "%s %s", "[CS:GO]", temp);
  5498. }
  5499. }
  5500. case 2:
  5501. {
  5502. new i;
  5503. while (i < n)
  5504. {
  5505. target = Pl[i];
  5506. if (g_bLogged[target])
  5507. {
  5508. if (0 > amount)
  5509. {
  5510. g_iUserKeys[target] -= amount;
  5511. if (0 > g_iUserKeys[target])
  5512. {
  5513. g_iUserKeys[target] = 0;
  5514. }
  5515. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_SUB_YOU", g_szName[id], amount, target, "CSGOR_KEYS");
  5516. }
  5517. else
  5518. {
  5519. g_iUserKeys[target] += amount;
  5520. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_ADD_YOU", g_szName[id], amount, target, "CSGOR_KEYS");
  5521. }
  5522. }
  5523. i++;
  5524. }
  5525. new temp[64];
  5526. if (0 < amount)
  5527. {
  5528. if (amount == 1)
  5529. {
  5530. formatex(temp, 63, "Adtál 1 kulcsot egy játékosnak!", id);
  5531. }
  5532. else
  5533. {
  5534. formatex(temp, 63, "Adtál %d kulcsot egy játékosnak!", amount);
  5535. }
  5536. console_print(id, "%s %s", "[CS:GO]", temp);
  5537. }
  5538. else
  5539. {
  5540. if (amount == -1)
  5541. {
  5542. formatex(temp, 63, "Kaptál 1 kulcsot egy játékostól!", id);
  5543. }
  5544. else
  5545. {
  5546. formatex(temp, 63, "Kaptál %d kulcsot egy játékostól!", amount *= -1);
  5547. }
  5548. console_print(id, "%s %s", "[CS:GO]", temp);
  5549. }
  5550. }
  5551. case 3:
  5552. {
  5553. new i;
  5554. while (i < n)
  5555. {
  5556. target = Pl[i];
  5557. if (g_bLogged[target])
  5558. {
  5559. if (0 > amount)
  5560. {
  5561. g_iUserDusts[target] -= amount;
  5562. if (0 > g_iUserDusts[target])
  5563. {
  5564. g_iUserDusts[target] = 0;
  5565. }
  5566. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_SUB_YOU", g_szName[id], amount, target, "CSGOR_DUSTS");
  5567. }
  5568. else
  5569. {
  5570. g_iUserDusts[target] += amount;
  5571. color_print(target, "^4%s^1 %L %L", "[CS:GO]", target, "CSGOR_ADMIN_ADD_YOU", g_szName[id], amount, target, "CSGOR_DUSTS");
  5572. }
  5573. }
  5574. i++;
  5575. }
  5576. new temp[64];
  5577. if (0 < amount)
  5578. {
  5579. if (amount == 1)
  5580. {
  5581. formatex(temp, 63, "Adtál %d töredéket egy játékosnak!", id);
  5582. }
  5583. else
  5584. {
  5585. formatex(temp, 63, "Adtál %d töredéket egy játékosnak!", amount);
  5586. }
  5587. console_print(id, "%s %s", "[CS:GO]", temp);
  5588. }
  5589. else
  5590. {
  5591. if (amount == -1)
  5592. {
  5593. formatex(temp, 63, "Kaptál 1 töredéket egy játékostól!", id);
  5594. }
  5595. else
  5596. {
  5597. formatex(temp, 63, "Kaptál %d töredéket egy játékostól!", amount *= -1);
  5598. }
  5599. console_print(id, "%s %s", "[CS:GO]", temp);
  5600. }
  5601. }
  5602. default:
  5603. {
  5604. }
  5605. }
  5606. }
  5607. else
  5608. {
  5609. console_print(id, "%s Nem található játékos a kiválasztott kategóriában: %s", "[CS:GO]", arg1);
  5610. }
  5611. return 0;
  5612. }
  5613. console_print(id, "%s <Mennyiség> 0 (zéró) nem lehet!", "[CS:GO]");
  5614. return 0;
  5615. }
  5616.  
  5617. public concmd_setrank(id, level, cid)
  5618. {
  5619. if (!cmd_access(id, level, cid, 3, false))
  5620. {
  5621. return 1;
  5622. }
  5623. new arg1[32];
  5624. new arg2[8];
  5625. read_argv(1, arg1, 31);
  5626. read_argv(2, arg2, 7);
  5627. new target = cmd_target(id, arg1, 3);
  5628. if (!target)
  5629. {
  5630. console_print(id, "%s %L", "[CS:GO]", id, "CSGOR_T_NOT_FOUND", arg1);
  5631. return 1;
  5632. }
  5633. new rank = str_to_num(arg2);
  5634. if (rank < 0 || rank >= g_iRanksNum)
  5635. {
  5636. console_print(id, "%s %L", "[CS:GO]", id, "CSGOR_INVALID_RANKID", g_iRanksNum + -1);
  5637. return 1;
  5638. }
  5639. g_iUserRank[target] = rank;
  5640. if (rank)
  5641. {
  5642. g_iUserKills[target] = ArrayGetCell(g_aRankKills, rank + -1);
  5643. }
  5644. else
  5645. {
  5646. g_iUserKills[target] = 0;
  5647. }
  5648. _SaveData(target);
  5649. new szRank[32];
  5650. ArrayGetString(g_aRankName, g_iUserRank[target], szRank, 31);
  5651. console_print(id, "%s %L", "[CS:GO]", id, "CSGOR_SET_RANK", arg1, szRank);
  5652. color_print(target, "^4%s^1 %L", "[CS:GO]", target, "CSGOR_ADMIN_SET_RANK", g_szName[id], szRank);
  5653. return 1;
  5654. }
  5655.  
  5656. public concmd_giveskins(id, level, cid)
  5657. {
  5658. if (!cmd_access(id, level, cid, 4, false))
  5659. {
  5660. return 1;
  5661. }
  5662. new arg1[32];
  5663. new arg2[8];
  5664. new arg3[16];
  5665. read_argv(1, arg1, 31);
  5666. read_argv(2, arg2, 7);
  5667. read_argv(3, arg3, 15);
  5668. new target = cmd_target(id, arg1, 3);
  5669. if (!target)
  5670. {
  5671. console_print(id, "%s %L", "[CS:GO]", id, "CSGOR_T_NOT_FOUND", arg1);
  5672. return 1;
  5673. }
  5674. new skin = str_to_num(arg2);
  5675. if (skin < 0 || skin >= g_iSkinsNum)
  5676. {
  5677. console_print(id, "%s %L", "[CS:GO]", id, "CSGOR_INVALID_SKINID", g_iSkinsNum + -1);
  5678. return 1;
  5679. }
  5680. new amount = str_to_num(arg3);
  5681. new szSkin[32];
  5682. ArrayGetString(g_aSkinName, skin, szSkin, 31);
  5683. if (0 > amount)
  5684. {
  5685. g_iUserSkins[target][skin] -= amount;
  5686. if (0 > g_iUserSkins[target][skin])
  5687. {
  5688. g_iUserSkins[target][skin] = 0;
  5689. }
  5690. console_print(id, "%s %L x %s", "[CS:GO]", id, "CSGOR_SUBSTRACT", arg1, amount, szSkin);
  5691. color_print(target, "^4%s^1 %L x ^3%s", "[CS:GO]", target, "CSGOR_ADMIN_SUB_YOU", g_szName[id], amount, szSkin);
  5692. }
  5693. else
  5694. {
  5695. if (0 < amount)
  5696. {
  5697. g_iUserSkins[target][skin] += amount;
  5698. console_print(id, "%s %L x %s", "[CS:GO]", id, "CSGOR_ADD", arg1, amount, szSkin);
  5699. color_print(target, "^4%s^1 %L x ^3%s", "[CS:GO]", target, "CSGOR_ADMIN_ADD_YOU", g_szName[id], amount, szSkin);
  5700. }
  5701. return 1;
  5702. }
  5703. _SaveData(target);
  5704. return 1;
  5705. }
  5706.  
  5707. public native_get_user_points(iPluginID, iParamNum)
  5708. {
  5709. if (iParamNum != 1)
  5710. {
  5711. log_error(10, "[CS:GO] Helytelen paraméter ! Helyes: (PlayerID)");
  5712. return -1;
  5713. }
  5714. new id = get_param(1);
  5715. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  5716. {
  5717. log_error(10, "[CS:GO] Játékos nincs fent a szerveren (%d)", id);
  5718. return -1;
  5719. }
  5720. return g_iUserPoints[id];
  5721. }
  5722.  
  5723. public native_set_user_points(iPluginID, iParamNum)
  5724. {
  5725. if (iParamNum != 2)
  5726. {
  5727. log_error(10, "[CS:GO] Helytelen paraméter ! Helyes: (PlayerID, Amount)");
  5728. return 0;
  5729. }
  5730. new id = get_param(1);
  5731. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  5732. {
  5733. log_error(10, "[CS:GO] Játékos nincs fent a szerveren (%d)", id);
  5734. return 0;
  5735. }
  5736. new amount = get_param(2);
  5737. if (0 > amount)
  5738. {
  5739. log_error(10, "[CS:GO] Helytelen mennyiség (%d)", amount);
  5740. return 0;
  5741. }
  5742. g_iUserPoints[id] = amount;
  5743. _SaveData(id);
  5744. return 1;
  5745. }
  5746.  
  5747. public native_get_user_cases(iPluginID, iParamNum)
  5748. {
  5749. if (iParamNum != 1)
  5750. {
  5751. log_error(10, "[CS:GO] Helytelen paraméter ! Helyes:: (PlayerID)");
  5752. return -1;
  5753. }
  5754. new id = get_param(1);
  5755. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  5756. {
  5757. log_error(10, "[CS:GO] Játékos nincs fent a szerveren (%d)", id);
  5758. return -1;
  5759. }
  5760. return g_iUserCases[id];
  5761. }
  5762.  
  5763. public native_set_user_cases(iPluginID, iParamNum)
  5764. {
  5765. if (iParamNum != 2)
  5766. {
  5767. log_error(10, "[CS:GO] Helytelen paraméter ! Helyes: (PlayerID, Amount)");
  5768. return 0;
  5769. }
  5770. new id = get_param(1);
  5771. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  5772. {
  5773. log_error(10, "[CS:GO] Játékos nincs fent a szerveren (%d)", id);
  5774. return 0;
  5775. }
  5776. new amount = get_param(2);
  5777. if (0 > amount)
  5778. {
  5779. log_error(10, "[CS:GO] Helytelen mennyiség (%d)", amount);
  5780. return 0;
  5781. }
  5782. g_iUserCases[id] = amount;
  5783. _SaveData(id);
  5784. return 1;
  5785. }
  5786.  
  5787. public native_get_user_keys(iPluginID, iParamNum)
  5788. {
  5789. if (iParamNum != 1)
  5790. {
  5791. log_error(10, "[CS:GO] Helytelen paraméter ! Helyes: (PlayerID)");
  5792. return -1;
  5793. }
  5794. new id = get_param(1);
  5795. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  5796. {
  5797. log_error(10, "[CS:GO] Játékos nincs fent a szerveren (%d)", id);
  5798. return -1;
  5799. }
  5800. return g_iUserKeys[id];
  5801. }
  5802.  
  5803. public native_set_user_keys(iPluginID, iParamNum)
  5804. {
  5805. if (iParamNum != 2)
  5806. {
  5807. log_error(10, "[CS:GO] Helytelen paraméter ! Helyes: (PlayerID, Amount)");
  5808. return 0;
  5809. }
  5810. new id = get_param(1);
  5811. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  5812. {
  5813. log_error(10, "[CS:GO] Játékos nincs fent a szerveren (%d)", id);
  5814. return 0;
  5815. }
  5816. new amount = get_param(2);
  5817. if (0 > amount)
  5818. {
  5819. log_error(10, "[CS:GO] Helytelen mennyiség (%d)", amount);
  5820. return 0;
  5821. }
  5822. g_iUserKeys[id] = amount;
  5823. _SaveData(id);
  5824. return 1;
  5825. }
  5826.  
  5827. public native_get_user_dusts(iPluginID, iParamNum)
  5828. {
  5829. if (iParamNum != 1)
  5830. {
  5831. log_error(10, "[CS:GO] Helytelen paraméter ! Helyes: (PlayerID)");
  5832. return -1;
  5833. }
  5834. new id = get_param(1);
  5835. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  5836. {
  5837. log_error(10, "[CS:GO] Játékos nincs fent a szerveren (%d)", id);
  5838. return -1;
  5839. }
  5840. return g_iUserDusts[id];
  5841. }
  5842.  
  5843. public native_set_user_dusts(iPluginID, iParamNum)
  5844. {
  5845. if (iParamNum != 2)
  5846. {
  5847. log_error(10, "[CS:GO] Helytelen paraméter ! Helyes: (PlayerID, Amount)");
  5848. return 0;
  5849. }
  5850. new id = get_param(1);
  5851. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  5852. {
  5853. log_error(10, "[CS:GO] Játékos nincs fent a szerveren (%d)", id);
  5854. return 0;
  5855. }
  5856. new amount = get_param(2);
  5857. if (0 > amount)
  5858. {
  5859. log_error(10, "[CS:GO] Helytelen mennyiség szám (%d)", amount);
  5860. return 0;
  5861. }
  5862. g_iUserDusts[id] = amount;
  5863. _SaveData(id);
  5864. return 1;
  5865. }
  5866.  
  5867. public native_get_user_rank(iPluginID, iParamNum)
  5868. {
  5869. if (iParamNum != 3)
  5870. {
  5871. log_error(10, "[CS:GO] Helytelen paraméter ! Helyes: (PlayerID, Output, Len)");
  5872. return -1;
  5873. }
  5874. new id = get_param(1);
  5875. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  5876. {
  5877. log_error(10, "[CS:GO] Játékos nincs fent a szerveren (%d)", id);
  5878. return -1;
  5879. }
  5880. new rank = g_iUserRank[id];
  5881. new szRank[32];
  5882. ArrayGetString(g_aRankName, rank, szRank, 31);
  5883. new len = get_param(3);
  5884. set_string(2, szRank, len);
  5885. return rank;
  5886. }
  5887.  
  5888. public native_set_user_rank(iPluginID, iParamNum)
  5889. {
  5890. if (iParamNum != 2)
  5891. {
  5892. log_error(10, "[CS:GO] Helytelen paraméter ! Helyes: (PlayerID, RankID)");
  5893. return 0;
  5894. }
  5895. new id = get_param(1);
  5896. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  5897. {
  5898. log_error(10, "[CS:GO] Játékos nincs fent a szerveren (%d)", id);
  5899. return 0;
  5900. }
  5901. new rank = get_param(2);
  5902. if (rank < 0 || rank >= g_iRanksNum)
  5903. {
  5904. log_error(10, "[CS:GO] Helytelen RankID (%d)", rank);
  5905. return 0;
  5906. }
  5907. g_iUserRank[id] = rank;
  5908. g_iUserKills[id] = ArrayGetCell(g_aRankKills, rank + -1);
  5909. _SaveData(id);
  5910. return 1;
  5911. }
  5912.  
  5913. public native_get_user_skins(iPluginID, iParamNum)
  5914. {
  5915. if (iParamNum != 2)
  5916. {
  5917. log_error(10, "[CS:GO] Helytelen paraméter! Helyes: (PlayerID, SkinID)");
  5918. return -1;
  5919. }
  5920. new id = get_param(1);
  5921. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  5922. {
  5923. log_error(10, "[CS:GO] Játékos nincs fent a szerveren (%d)", id);
  5924. return -1;
  5925. }
  5926. new skin = get_param(2);
  5927. if (skin < 0 || skin >= g_iSkinsNum)
  5928. {
  5929. log_error(10, "[CS:GO] Helytelen SkinID (%d)", skin);
  5930. return -1;
  5931. }
  5932. new amount = g_iUserSkins[id][skin];
  5933. return amount;
  5934. }
  5935.  
  5936. public native_set_user_skins(iPluginID, iParamNum)
  5937. {
  5938. if (iParamNum != 3)
  5939. {
  5940. log_error(10, "[CS:GO] Helytelen paraméter ! Helyes: (PlayerID, SkinID, Amount)");
  5941. return 0;
  5942. }
  5943. new id = get_param(1);
  5944. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  5945. {
  5946. log_error(10, "[CS:GO] Játékos nincs fent a szerveren (%d)", id);
  5947. return 0;
  5948. }
  5949. new skin = get_param(2);
  5950. if (skin < 0 || skin >= g_iSkinsNum)
  5951. {
  5952. log_error(10, "[CS:GO] Helytelen SkinID (%d)", skin);
  5953. return 0;
  5954. }
  5955. new amount = get_param(3);
  5956. if (0 > amount)
  5957. {
  5958. log_error(10, "[CS:GO] Helytelen mennyiség (%d)", amount);
  5959. return 0;
  5960. }
  5961. g_iUserSkins[id][skin] = amount;
  5962. _SaveData(id);
  5963. return 1;
  5964. }
  5965.  
  5966. public native_is_user_logged(iPluginID, iParamNum)
  5967. {
  5968. if (iParamNum != 1)
  5969. {
  5970. log_error(10, "[CS:GO] Helytelen paraméter ! Helyes: (PlayerID)");
  5971. return 0;
  5972. }
  5973. new id = get_param(1);
  5974. if (!(0 < id && 32 >= id || !is_user_connected(id)))
  5975. {
  5976. log_error(10, "[CS:GO] Játékos nincs fent a szerveren (%d)", id);
  5977. return 0;
  5978. }
  5979. return g_bLogged[id];
  5980. }
  5981.  
  5982. public concmd_finddata(id, level, cid)
  5983. {
  5984. if (!cmd_access(id, level, cid, 2, false))
  5985. {
  5986. return 1;
  5987. }
  5988. new arg1[32];
  5989. read_argv(1, arg1, 31);
  5990. if (g_Vault == -1)
  5991. {
  5992. console_print(id, "%s Nvaultból való olvasás nem sikerült !", "[CS:GO]");
  5993. return 1;
  5994. }
  5995. new Data[64];
  5996. new Timestamp;
  5997. if (nvault_lookup(g_Vault, arg1, Data, 63, Timestamp))
  5998. {
  5999. new userData[6][16];
  6000. new password[16];
  6001. new buffer[48];
  6002. strtok(Data, password, 15, Data, 63, 61, 0);
  6003. strtok(Data, buffer, 47, Data, 63, 42, 0);
  6004. new i;
  6005. while (i < 6)
  6006. {
  6007. strtok(buffer, userData[i], 15, buffer, 47, 44, 0);
  6008. i++;
  6009. }
  6010. new rank = str_to_num(userData[5]);
  6011. new szRank[32];
  6012. ArrayGetString(g_aRankName, rank, szRank, 31);
  6013. console_print(id, "[CS:GO]", arg1, password);
  6014. console_print(id, "%s Euró: %s | Rank: %s", "[CS:GO]", userData[0], szRank);
  6015. console_print(id, "%s Kulcs: %s | Ládáok: %s", "[CS:GO]", userData[2], userData[3]);
  6016. console_print(id, "%s Töredék: %s | Ölések: %s", "[CS:GO]", userData[1], userData[4]);
  6017. }
  6018. else
  6019. {
  6020. console_print(id, "%s A fiók nem található: %s", "[CS:GO]", arg1);
  6021. }
  6022. return 1;
  6023. }
  6024.  
  6025. public concmd_resetdata(id, level, cid)
  6026. {
  6027. if (!cmd_access(id, level, cid, 3, false))
  6028. {
  6029. return 1;
  6030. }
  6031. new arg1[32];
  6032. new arg2[4];
  6033. read_argv(1, arg1, 31);
  6034. read_argv(2, arg2, 3);
  6035. new type = str_to_num(arg2);
  6036. if (g_Vault == -1)
  6037. {
  6038. console_print(id, "%s Nvaultból való olvasás nem sikerült !", "[CS:GO]");
  6039. return 1;
  6040. }
  6041. new Data[512];
  6042. new Timestamp;
  6043. if (nvault_lookup(g_Vault, arg1, Data, 511, Timestamp))
  6044. {
  6045. if (0 < type)
  6046. {
  6047. nvault_remove(g_Vault, arg1);
  6048. console_print(id, "%s A fiók sikeresen törölve lett: %s", "[CS:GO]", arg1);
  6049. return 1;
  6050. }
  6051. new infobuff[64];
  6052. new weapbuff[320];
  6053. new skinbuff[96];
  6054. new password[16];
  6055. strtok(Data, password, 15, Data, 511, 61, 0);
  6056. formatex(infobuff, 63, "%s=%d,%d,%d,%d,%d,%d", password, 0, 0, 0, 0, 0, 0);
  6057. formatex(weapbuff, 319, "%d", 0);
  6058. new i = 1;
  6059. while (i < 96)
  6060. {
  6061. format(weapbuff, 319, "%s,%d", weapbuff, 0);
  6062. i++;
  6063. }
  6064. formatex(skinbuff, 95, "%d", -1);
  6065. i = 2;
  6066. while (i <= 30)
  6067. {
  6068. format(skinbuff, 95, "%s,%d", skinbuff, -1);
  6069. i++;
  6070. }
  6071. formatex(Data, 511, "%s*%s#%s", infobuff, weapbuff, skinbuff);
  6072. nvault_set(g_Vault, arg1, Data);
  6073. console_print(id, "%s A fiók sikersen restartolva: %s", "[CS:GO]", arg1);
  6074. }
  6075. else
  6076. {
  6077. console_print(id, "%s A fiók nem található: %s", "[CS:GO]", arg1);
  6078. }
  6079. return 1;
  6080. }
  6081.  
  6082. public concmd_getinfo(id, level, cid)
  6083. {
  6084. if (!cmd_access(id, level, cid, 3, false))
  6085. {
  6086. return 1;
  6087. }
  6088. new arg1[8];
  6089. new arg2[8];
  6090. read_argv(1, arg1, 7);
  6091. read_argv(2, arg2, 7);
  6092. new num = str_to_num(arg2);
  6093. switch (arg1[0])
  6094. {
  6095. case 82, 114:
  6096. {
  6097. if (num < 0 || num >= g_iRanksNum)
  6098. {
  6099. console_print(id, "%s Rossz index. Válassz számot [0 és %d] között.", "[CS:GO]", g_iRanksNum + -1);
  6100. }
  6101. else
  6102. {
  6103. new Name[32];
  6104. ArrayGetString(g_aRankName, num, Name, 31);
  6105. new Kills = ArrayGetCell(g_aRankKills, num);
  6106. console_print(id, "%s Információ a RANK Indexről: %d", "[CS:GO]", num);
  6107. console_print(id, "%s Név: %s | Szükséges ölések: %d", "[CS:GO]", Name, Kills);
  6108. }
  6109. }
  6110. case 83, 115:
  6111. {
  6112. if (num < 0 || num >= g_iSkinsNum)
  6113. {
  6114. console_print(id, "%s Rossz index. Válassz számot [0 és %d] között.", "[CS:GO]", g_iSkinsNum + -1);
  6115. }
  6116. else
  6117. {
  6118. new Name[32];
  6119. ArrayGetString(g_aSkinName, num, Name, 31);
  6120. new Type[8];
  6121. ArrayGetString(g_aSkinType, num, Type, 7);
  6122. console_print(id, "%s Információ a SKIN Indexről: %d", "[CS:GO]", num);
  6123. switch (Type[0])
  6124. {
  6125. case 100:
  6126. {
  6127. console_print(id, "%s Név: %s | Típusa: drop", "[CS:GO]", Name);
  6128. }
  6129.  
  6130. default:
  6131. {
  6132. console_print(id, "%s Név: %s | Típusa: craft", "[CS:GO]", Name);
  6133. }
  6134. }
  6135. }
  6136. }
  6137. default:
  6138. {
  6139. console_print(id, "%s Rossz index. Válassz R vagy S között.", "[CS:GO]");
  6140. }
  6141. }
  6142. return 1;
  6143. }
  6144.  
  6145. public concmd_kill(id)
  6146. {
  6147. console_print(id, "Nem lehetsz öngyilkos.");
  6148. return FMRES_SUPERCEDE;
  6149. }
  6150. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  6151. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  6152. */
  6153.