Advertisement
Mr-Co0L

Untitled

Apr 22nd, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.80 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <hamsandwich>
  4. #include <fakemeta>
  5. #include <engine>
  6. #include <cstrike>
  7. #include <fun>
  8. #include <csx>
  9. #include <nvault>
  10.  
  11. enum Data {
  12. Points,
  13. Case,
  14. Keys,
  15. Fragments
  16. }
  17. enum eData {
  18. Name[32],
  19. vModel[64],
  20. pModel[64],
  21. Type,
  22. Chance
  23. }
  24.  
  25. new g_aSkins[32][eData];
  26.  
  27. /* Ranks system */
  28. enum eRankData
  29. {
  30. RankName[32],
  31. valFirst,
  32. valSecond
  33. }
  34.  
  35. new g_szRanks[32][eRankData] ;
  36. new g_szRank[33][2][32], ranksNum;
  37.  
  38. /* Gift system */
  39. new g_iReceiver[33], g_iIterator[33], g_iSkinToGift[33];
  40.  
  41. /* Destroy system */
  42. new g_iSkinToDestroy[33];
  43.  
  44. /* Raffle system */
  45. new g_iRafflePlayers[33], raffleMembers;
  46.  
  47. /* Market system */
  48. new g_iSkinsInMarket[33][32], g_iPrice[33], iSeller[33][32];
  49.  
  50. /* Mute system */
  51. new iMutedPlayers[33][33];
  52.  
  53. /* Core */
  54. new g_iPlayerSkins[33][32], g_iPlayerData[33][Data];
  55. new g_iSkins[33][32], g_iMaxChance, g_iShowedSkin[33][31], skinsNum;
  56.  
  57. new const szTag[] = "[CS:GO OUTSTANDING]"
  58.  
  59. enum
  60. {
  61. FM_CS_TEAM_UNASSIGNED = 0,
  62. FM_CS_TEAM_T,
  63. FM_CS_TEAM_CT,
  64. FM_CS_TEAM_SPECTATOR
  65. };
  66.  
  67.  
  68. new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
  69. "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
  70. "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
  71. "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
  72. "weapon_ak47", "weapon_knife", "weapon_p90" }
  73.  
  74. public plugin_init()
  75. {
  76. register_plugin("CSGO OUTSTANDING", "1.2", "FaTzZu a.k.a Jailbreak suge ****");
  77.  
  78. register_clcmd("say /menu", "cmdSayMenu");
  79. register_clcmd("say_team /menu", "cmdSayMenu");
  80.  
  81. register_clcmd ( "chooseteam", "cmdChangeTeam" );
  82. register_clcmd ( "jointeam", "cmdChangeTeam" );
  83.  
  84. register_logevent("evRoundEnd",2, "1=Round_End");
  85. register_event("DeathMsg", "evDeathMsg", "a");
  86.  
  87. register_event("SendAudio", "terroristsWin" , "a", "2&%!MRAD_terwin");
  88. register_event("SendAudio", "ctsWin", "a", "2&%!MRAD_ctwin");
  89.  
  90. for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
  91. {
  92. if (WEAPONENTNAMES[i][0])
  93. {
  94. RegisterHam(Ham_Item_AddToPlayer, WEAPONENTNAMES[i], "hamAddWeaponToPlayer");
  95. RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "hamItemDeploy", 1);
  96. }
  97. }
  98. register_forward(FM_SetModel, "fwSetModel");
  99.  
  100. register_clcmd("Insert_price", "cmdInsertPrice");
  101.  
  102. }
  103. public plugin_natives( )
  104. {
  105. register_native( "get_rankchat", "native_get_rankchat", 1 );
  106. }
  107.  
  108. public native_get_rankchat( id )
  109. {
  110. return g_szRank[id]
  111. }
  112. /* Precaching models */
  113. public plugin_precache()
  114. {
  115. new szConfigsDir[128];
  116.  
  117. get_configsdir(szConfigsDir, charsmax(szConfigsDir));
  118. add(szConfigsDir, charsmax(szConfigsDir), "/skins.ini");
  119.  
  120. if(!file_exists(szConfigsDir))
  121. {
  122. write_file(szConfigsDir, ";TYPES 28=Ak47 22=M4a1 18=AWP 26=Deagle 29=Knife");
  123. write_file(szConfigsDir, ";Skin name v_Model p_Model TYPE Chance");
  124. }
  125.  
  126. new f = fopen(szConfigsDir, "rt");
  127. if(!f)
  128. return;
  129. new szLineData[128], szName[32], szViewModel[64], szPlayerModel[64], szType[8], szChance[4];
  130. while(!feof(f))
  131. {
  132. fgets(f, szLineData, charsmax(szLineData));
  133.  
  134. if(strlen(szLineData) < 2 || szLineData[0] == ';' || !szLineData[0])
  135. continue;
  136.  
  137. parse(szLineData, szName, charsmax(szName), szViewModel, charsmax(szViewModel), szPlayerModel, charsmax(szPlayerModel), szType, charsmax(szType), szChance, charsmax(szChance))
  138.  
  139. new iType = str_to_num(szType);
  140. new iChance = str_to_num(szChance)
  141.  
  142. copy(g_aSkins[skinsNum][Name], 31, szName);
  143. copy(g_aSkins[skinsNum][vModel], 63, szViewModel);
  144. copy(g_aSkins[skinsNum][pModel], 63, szPlayerModel);
  145. g_aSkins[skinsNum][Type] = iType;
  146. g_aSkins[skinsNum][Chance] = iChance;
  147.  
  148. skinsNum++
  149. }
  150.  
  151. fclose(f);
  152.  
  153. /*g_iMaxChance = g_aSkins[0][Chance];
  154. for (new i = 1; i < sizeof skinsNum; i++)
  155. {
  156. if (g_aSkins[Chance] > g_iMaxChance)
  157. {
  158. g_iMaxChance = g_aSkins[Chance];
  159. }
  160. }
  161.  
  162. for(new i = 1; i < sizeof skinsNum; i++)
  163. {
  164. precache_model(g_aSkins[vModel]);
  165.  
  166. if(strlen(g_aSkins[pModel]))
  167. precache_model(g_aSkins[pModel]);
  168. }*/
  169. }
  170. /* Executing cfg's */
  171. public plugin_cfg()
  172. {
  173. new szConfigsDir[128];
  174. get_configsdir(szConfigsDir, charsmax(szConfigsDir));
  175.  
  176. add(szConfigsDir, charsmax(szConfigsDir), "/ranks.ini");
  177.  
  178. if(!file_exists(szConfigsDir))
  179. write_file(szConfigsDir, ";RANK - PRIMA VALOARE - A 2-A VALOARE", -1);
  180.  
  181. new f = fopen(szConfigsDir, "rt");
  182. if(!f)
  183. return;
  184. new szLineRankData[128], szRank[32], szFirstVal[8], szLastVal[8];
  185. while(!feof(f))
  186. {
  187. fgets(f, szLineRankData, charsmax(szLineRankData));
  188.  
  189. if(!szLineRankData[0] || szLineRankData[0] == ';' || strlen(szLineRankData) < 2)
  190. continue;
  191.  
  192. parse(szLineRankData, szRank, charsmax(szRank), szFirstVal, charsmax(szFirstVal), szLastVal, charsmax(szLastVal));
  193.  
  194. new iFirstVal = str_to_num(szFirstVal);
  195. new iLastVal = str_to_num(szLastVal);
  196.  
  197. copy(g_szRanks[ranksNum][RankName], charsmax(g_szRanks[]), szRank);
  198. g_szRanks[ranksNum][valFirst] = iFirstVal
  199. g_szRanks[ranksNum][valSecond] = iLastVal
  200.  
  201. ranksNum++;
  202. }
  203.  
  204.  
  205. }
  206. /* When client connects */
  207. public client_putinserver(id)
  208. {
  209. new iPlayers[32], iNum;
  210. get_players(iPlayers, iNum);
  211.  
  212. for(new i; i < iNum; i++)
  213. iMutedPlayers[id][iPlayers[i]] = 0;
  214.  
  215. for(new i; i < 31; i++)
  216. g_iShowedSkin[id][i] = skinsNum;
  217.  
  218. g_iSkinToGift[id] = skinsNum;
  219. g_iSkinToDestroy[id] = skinsNum;
  220. g_iPrice[id] = 0;
  221.  
  222. set_task(1.5, "taskSetRank", id);
  223.  
  224. LoadData(id);
  225. LoadMarket(id);
  226. }
  227. /* Set user's rank on putinserver and on player kill*/
  228. public taskSetRank(id)
  229. {
  230. new iStats[8], iBody[8];
  231. new iRankPos = get_user_stats(id, iStats, iBody);
  232.  
  233. for(new i; i <= ranksNum; i++)
  234. {
  235. if(g_szRanks[i][valFirst] <= iRankPos <= g_szRanks[i][valSecond])
  236. {
  237. copy(g_szRank[id][0], 31, g_szRanks[i][RankName])
  238. if(i!=0)
  239. copy(g_szRank[id][1], 31, g_szRanks[i-1][RankName])
  240.  
  241. break;
  242. }
  243. }
  244. }
  245. /* Hook DeathMsg event */
  246. public evDeathMsg()
  247. {
  248. refreshRanks();
  249.  
  250. new iChance;
  251. new iKiller = read_data(1);
  252. new iVictim = read_data(2);
  253.  
  254. if(!is_user_alive(iKiller) || iKiller == iVictim)
  255. return;
  256.  
  257. iChance = random_num(1, 100);
  258. if (iChance <= 50)
  259. {
  260. g_iPlayerData[iKiller][Points] += 5;
  261. client_print(iKiller, print_center, "+%d Points", 5);
  262. }
  263. if(iChance <= 10)
  264. {
  265. g_iPlayerData[iKiller][Case]++;
  266. }
  267.  
  268. refreshRanks();
  269. }
  270. /* Refreshing every player rank */
  271. stock refreshRanks()
  272. {
  273. new iPlayers[32], iNum;
  274. get_players(iPlayers, iNum);
  275. for(new i;i<iNum;i++)
  276. {
  277. new id = iPlayers[i];
  278. new iStats[8], iBody[8];
  279. new iRankPos = get_user_stats(id, iStats, iBody);
  280.  
  281. for(new i; i <= ranksNum; i++)
  282. if(g_szRanks[i][valFirst] <= iRankPos <= g_szRanks[i][valSecond])
  283. {
  284. copy(g_szRank[id][0], 31, g_szRanks[i][RankName])
  285. if(i!=0)
  286. copy(g_szRank[id][1], 31, g_szRanks[i-1][RankName])
  287.  
  288. break;
  289. }
  290. }
  291. }
  292. /* When client disconnect */
  293. public client_disconnect(id)
  294. {
  295. SaveData(id)
  296. }
  297. /* Ham_Item_Deploy */
  298. public hamItemDeploy(ent)
  299. {
  300. static id;
  301. id = fm_cs_get_weapon_ent_owner(ent);
  302.  
  303. if (!pev_valid(id))
  304. {
  305. return;
  306. }
  307.  
  308. if (g_iShowedSkin[id][cs_get_weapon_id(ent)] < skinsNum)
  309. {
  310. set_pev(id, pev_viewmodel2, g_aSkins[ g_iShowedSkin[id][cs_get_weapon_id(ent)]][vModel]);
  311.  
  312. if(strlen(g_aSkins[ g_iShowedSkin[id][cs_get_weapon_id(ent)]][pModel]))
  313. {
  314. set_pev(id, pev_weaponmodel2, g_aSkins[ g_iShowedSkin[id][cs_get_weapon_id(ent)]][pModel]);
  315. }
  316. }
  317. }
  318.  
  319. public cmdChangeTeam ( id )
  320. {
  321. static team
  322. team = fm_cs_get_user_team(id)
  323.  
  324. if (team == FM_CS_TEAM_SPECTATOR || team == FM_CS_TEAM_UNASSIGNED)
  325. return PLUGIN_CONTINUE;
  326.  
  327. cmdSayMenu(id)
  328. return PLUGIN_HANDLED;
  329. }
  330.  
  331. /** Principal Menu **/
  332. public cmdSayMenu(id)
  333. {
  334. new menu, szText[128], szText2[128]
  335.  
  336. menu = menu_create("\w[ \yCS:GO OUTSTANDING \w] By \yKenWood", "menuHandler");
  337.  
  338. menu_additem(menu, "Aplica \ySKIN");
  339. menu_additem(menu, "Deschide \ycufere \w| Crafteaza \ychei^n");
  340.  
  341. menu_additem(menu, "Ofera un \ycadou");
  342. menu_additem(menu, "Distruge un \yskin^n");
  343.  
  344. menu_additem(menu, "\wSkins \yMarket^n");
  345.  
  346. if(strlen(g_szRank[id][1]))
  347. formatex(szText2, charsmax(szText2), "Rank actual: \y%s^n\wRank urmator: \y%s", g_szRank[id][0], g_szRank[id][1])
  348. else formatex(szText2, charsmax(szText2), "Rank actual: \y%s \w( \dRank maxim \w)", g_szRank[id][0])
  349.  
  350. formatex(szText, charsmax(szText), "Jocuri de \ynoroc\w^n^n%s", szText2);
  351. menu_additem(menu, szText);
  352.  
  353. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  354. menu_display(id, menu, 0);
  355. }
  356. public menuHandler(id, menu, item)
  357. {
  358. if(item == MENU_EXIT)
  359. {
  360. menu_destroy(menu);
  361. return PLUGIN_HANDLED;
  362. }
  363.  
  364. switch(item)
  365. {
  366. case 0:
  367. {
  368. if (user_have_skins(id))
  369. {
  370. showSkins(id);
  371. }
  372. else
  373. {
  374. ColorChat(id, "!g%s!nNu ai !gskinuri !nin inventar!", szTag);
  375. cmdSayMenu(id);
  376. }
  377. }
  378.  
  379. case 1: openCaseMenu(id);
  380.  
  381. case 2:
  382. {
  383. if (user_have_skins(id))
  384. {
  385. showGiftMenu(id);
  386. }
  387. else
  388. {
  389. ColorChat(id, "!g%s!nNu ai !gskinuri !nin inventar!", szTag);
  390. cmdSayMenu(id);
  391. }
  392. }
  393.  
  394. case 3:
  395. {
  396. if (user_have_skins(id))
  397. {
  398. showDestroyMenu(id);
  399. }
  400. else
  401. {
  402. ColorChat(id, "!g%s!nNu ai !gskinuri !nin inventar!", szTag);
  403. cmdSayMenu(id);
  404. }
  405. }
  406.  
  407. case 4: cmdShowMarket(id)
  408.  
  409. //case 5: cmdShowTradeMenu(id);
  410.  
  411. case 5: showGamesMenu(id)
  412. }
  413.  
  414. menu_destroy(menu);
  415. return PLUGIN_HANDLED;
  416. }
  417. /* Apply skin menu */
  418. public showSkins(id)
  419. {
  420. new menu, szText[64], k=0;
  421. menu = menu_create("\w[ \yCS:GO OUTSTANDING \w] \ySkinurile \wtale", "skinsMenuHandler");
  422.  
  423. for(new i; i < skinsNum; i++)
  424. if(g_iPlayerSkins[id][i])
  425. {
  426. formatex(szText, charsmax(szText), "%s - \y%d \wBucati", g_aSkins[i][Name], g_iPlayerSkins[id][i]);
  427. menu_additem(menu, szText);
  428. g_iSkins[id][k++] = i;
  429. }
  430.  
  431. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  432. menu_display(id, menu, 0);
  433. }
  434. public skinsMenuHandler(id, menu, item)
  435. {
  436. if( item == MENU_EXIT )
  437. {
  438. menu_destroy(menu);
  439. return PLUGIN_HANDLED;
  440. }
  441.  
  442. new iSkinID = g_iSkins[id][item];
  443.  
  444. g_iShowedSkin [id][g_aSkins[iSkinID][Type]] = iSkinID;
  445. ColorChat(id, "!g%s!nAi aplicat skinul !g%s!n.", szTag, g_aSkins[iSkinID][Name]);
  446. hamItemDeploy(id);
  447. showSkins(id);
  448.  
  449. menu_destroy(menu);
  450. return PLUGIN_HANDLED;
  451. }
  452. /* Open case menu */
  453. public openCaseMenu(id)
  454. {
  455. new menu, szText[128];
  456. formatex(szText, charsmax(szText), "\w[ \yCSGO OUTSTANDING \w] Points: \y%d \w| Keys: \y%d \w| Case: \y%d \w| Fragments: \y%d", g_iPlayerData[id][Points], g_iPlayerData[id][Keys], g_iPlayerData[id][Case], g_iPlayerData[id][Fragments])
  457. menu = menu_create(szText, "openCaseMenuHandler");
  458.  
  459. if(!g_iPlayerData[id][Keys] || !g_iPlayerData[id][Case])
  460. formatex(szText, charsmax(szText), "\dDeschide \ycufar^n");
  461. else formatex(szText, charsmax(szText), "Deschide \ycufar^n");
  462. menu_additem(menu, szText);
  463.  
  464. formatex(szText, charsmax(szText), "Crafteaza o \ycheie \w( \y%d \w/ \y%d \w)", g_iPlayerData[id][Fragments], 3);
  465. menu_additem(menu, szText);
  466.  
  467. if(g_iPlayerData[id][Points] < 50)
  468. formatex(szText, charsmax(szText), "\dCumpara o \ycheie \w- \y%d \dPuncte", 50);
  469. else formatex(szText, charsmax(szText), "Cumpara o \ycheie \w- \y%d \wPuncte", 50);
  470. menu_additem(menu, szText);
  471.  
  472. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  473. menu_display(id, menu, 0);
  474. }
  475. public openCaseMenuHandler(id, menu, item)
  476. {
  477. if( item == MENU_EXIT )
  478. {
  479. menu_destroy(menu);
  480. return PLUGIN_HANDLED;
  481. }
  482.  
  483. switch(item)
  484. {
  485. case 0:
  486. {
  487. if(!g_iPlayerData[id][Keys])
  488. {
  489. ColorChat(id, "!g%s!n Nu ai o !gcheie!n!", szTag);
  490. return PLUGIN_HANDLED;
  491. }
  492. if(!g_iPlayerData[id][Case])
  493. {
  494. ColorChat(id, "!g%s!n Nu ai un !gcufar!n!", szTag);
  495. return PLUGIN_HANDLED;
  496. }
  497.  
  498. new iSkins[32], iRand, iChance, k=0;
  499.  
  500. iChance = random_num(1, g_iMaxChance);
  501. for(new i; i < skinsNum; i++)
  502. {
  503. if(iChance <= g_aSkins[i][Chance])
  504. iSkins[k++] = i;
  505. }
  506.  
  507. iRand = k == 0 ? iSkins[k] : iSkins[random(k)];
  508.  
  509. g_iPlayerSkins[id][iRand]++;
  510. g_iPlayerData[id][Keys]--;
  511. g_iPlayerData[id][Case]--;
  512.  
  513. ColorChat(id, "!g%s!nAi deschis un cufar si ai primit skinul !g%s!n.", szTag, g_aSkins[iRand][Name]);
  514. SaveData(id);
  515.  
  516. openCaseMenu(id);
  517. }
  518. case 1:
  519. {
  520. if(g_iPlayerData[id][Fragments] < 3)
  521. {
  522. ColorChat(id, "!g%s!n Insuficiente !gfragmente !npentru a crafta o !gcheie!n.", szTag);
  523. return PLUGIN_HANDLED;
  524. }
  525. g_iPlayerData[id][Keys]++;
  526. g_iPlayerData[id][Fragments] -= 3;
  527.  
  528. ColorChat(id, "!g%s!n Ai transformat !g%d!n fragmente intr-o !gcheie!n.", szTag, 3);
  529.  
  530. openCaseMenu(id);
  531. }
  532. case 2:
  533. {
  534. if(g_iPlayerData[id][Points] < 50)
  535. {
  536. ColorChat(id, "!g%s!n Insuficiente !gpuncte !npentru a cumpara o !gcheie!n.", szTag);
  537. return PLUGIN_HANDLED;
  538. }
  539. g_iPlayerData[id][Keys]++;
  540. g_iPlayerData[id][Points] -= 50;
  541. ColorChat(id, "!g%s!n Ai achizitionat o !gcheie!n.", szTag);
  542. SaveData(id);
  543.  
  544. openCaseMenu(id);
  545. }
  546. }
  547. menu_destroy(menu);
  548. return PLUGIN_HANDLED;
  549. }
  550. /* Gift menu */
  551. public showGiftMenu(id)
  552. {
  553. new menu, szText[128], szName[32];
  554. menu = menu_create("\w[ \yCS:GO OUTSTANDING\w] \yGift \wMenu", "giftMenuHandler");
  555.  
  556. if(g_iReceiver[id])
  557. {
  558. get_user_name(g_iReceiver[id], szName, charsmax(szName));
  559. formatex(szText, charsmax(szText), "Jucator: \y%s", szName);
  560. }
  561. else formatex(szText, charsmax(szText), "Alege \yjucator\w:");
  562. menu_additem(menu, szText);
  563.  
  564. if(g_iSkinToGift[id] == skinsNum)
  565. formatex(szText, charsmax(szText), "Alege \ySkin^n");
  566. else formatex(szText, charsmax(szText), "Skin spre oferire: \y%s^n", g_aSkins[g_iSkinToGift[id]][Name]);
  567. menu_additem(menu, szText);
  568. menu_additem(menu, "\rTrimite");
  569.  
  570. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  571. menu_display(id, menu, 0);
  572. }
  573. public giftMenuHandler(id, menu, item)
  574. {
  575. if( item == MENU_EXIT )
  576. {
  577. menu_destroy(menu);
  578. return PLUGIN_HANDLED;
  579. }
  580.  
  581. switch(item)
  582. {
  583. case 0:
  584. {
  585. new iPlayers[32], iNum, idReceiver;
  586. get_players(iPlayers, iNum);
  587.  
  588. idReceiver = iPlayers[g_iIterator[id]]
  589. g_iReceiver[id] = idReceiver;
  590. g_iIterator[id]++;
  591.  
  592. if(g_iIterator[id] == iNum)
  593. g_iIterator[id] = 0;
  594.  
  595. showGiftMenu(id);
  596. }
  597. case 1:
  598. {
  599. showSkinsForGift(id);
  600. }
  601. case 2:
  602. {
  603. if(g_iSkinToGift[id] == skinsNum)
  604. {
  605. ColorChat(id, "!g%s!n Alege un !gskin!n!",szTag);
  606. showGiftMenu(id)
  607. return PLUGIN_HANDLED;
  608. }
  609. if(g_iReceiver[id] == id)
  610. {
  611. ColorChat(id, "!g%s!n Nu iti da !gskinuri !ntie!",szTag);
  612. showGiftMenu(id)
  613. return PLUGIN_HANDLED;
  614. }
  615. new szName[32];
  616. get_user_name(id, szName, charsmax(szName));
  617.  
  618. g_iPlayerSkins[id][g_iSkinToGift[id]]--;
  619. g_iPlayerSkins[g_iReceiver[id]][g_iSkinToGift[id]]++;
  620.  
  621. ColorChat(g_iReceiver[id], "!g%s!nAi primit !g%s !n de la !g%s!n.", szTag, g_aSkins[g_iSkinToGift[id]][Name], szName);
  622. g_iSkinToGift[id] = skinsNum;
  623.  
  624. SaveData(id);
  625. SaveData(g_iReceiver[id]);
  626. }
  627. }
  628. menu_destroy(menu);
  629. return PLUGIN_HANDLED;
  630. }
  631. /* Skins List for gift */
  632. public showSkinsForGift(id)
  633. {
  634. new menu, szText[64], k=0;
  635. menu = menu_create("\w[ \yCS:GO OUTSTANDING \w] Alege skinul pe care vrei sa il daruiesti", "skinsForGiftMenuHandler");
  636.  
  637. for(new i; i < skinsNum; i++)
  638. if(g_iPlayerSkins[id][i])
  639. {
  640. formatex(szText, charsmax(szText), "%s - \y%d \wBucati", g_aSkins[i][Name], g_iPlayerSkins[id][i]);
  641. menu_additem(menu, szText);
  642. g_iSkins[id][k++] = i;
  643. }
  644.  
  645. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  646. menu_display(id, menu, 0);
  647. }
  648. public skinsForGiftMenuHandler(id, menu, item)
  649. {
  650. if( item == MENU_EXIT )
  651. {
  652. menu_destroy(menu);
  653. return PLUGIN_HANDLED;
  654. }
  655.  
  656. g_iSkinToGift[id] = g_iSkins[id][item];
  657. showGiftMenu(id);
  658.  
  659. menu_destroy(menu);
  660. return PLUGIN_HANDLED;
  661. }
  662. /* Destroy skin menu */
  663. public showDestroyMenu(id)
  664. {
  665. new menu, szText[128];
  666. menu = menu_create("\w[ \yCS:GO OUTSTANDING \w] \wDestroy \ySkin \wMenu", "destroyMenuHandler");
  667.  
  668. if(g_iSkinToDestroy[id] == skinsNum)
  669. formatex(szText, charsmax(szText), "Alege \ySkin^n");
  670. else formatex(szText, charsmax(szText), "Skin pentru distrugere: \y%s^n", g_aSkins[g_iSkinToDestroy[id]][Name]);
  671. menu_additem(menu, szText);
  672. menu_additem(menu, "\rDistruge");
  673.  
  674. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  675. menu_display(id, menu, 0);
  676. }
  677. public destroyMenuHandler(id, menu, item)
  678. {
  679. if( item == MENU_EXIT )
  680. {
  681. menu_destroy(menu);
  682. return PLUGIN_HANDLED;
  683. }
  684.  
  685. switch(item)
  686. {
  687. case 0:
  688. {
  689. showSkinsForDestroy(id);
  690. }
  691. case 1:
  692. {
  693. if(g_iSkinToDestroy[id] == skinsNum)
  694. {
  695. ColorChat(id, "!g%s!n Alege un !gskin!n!",szTag);
  696. showDestroyMenu(id)
  697. return PLUGIN_HANDLED;
  698. }
  699.  
  700. g_iPlayerSkins[id][g_iSkinToDestroy[id]]--;
  701. g_iPlayerData[id][Fragments]++;
  702. ColorChat(id, "!g%s!nAi distrus skinul !g%s!n si ai primit un !gfragment !nde !gcheie!n.", szTag, g_aSkins[g_iSkinToDestroy[id]][Name]);
  703.  
  704. g_iSkinToDestroy[id] = skinsNum;
  705. SaveData(id);
  706.  
  707. showDestroyMenu(id);
  708. }
  709. }
  710. menu_destroy(menu);
  711. return PLUGIN_HANDLED;
  712. }
  713. /* Skins List to destroy */
  714. public showSkinsForDestroy(id)
  715. {
  716. new menu, szText[64], k=0;
  717. menu = menu_create("\w[ \yCS:GO OUTSTANDING \w] Alege skinul pe care vrei sa il distrugi", "skinsForDestroyMenuHandler");
  718.  
  719. for(new i; i < skinsNum; i++)
  720. if(g_iPlayerSkins[id][i])
  721. {
  722. formatex(szText, charsmax(szText), "%s - \y%d \wBucati", g_aSkins[i][Name], g_iPlayerSkins[id][i]);
  723. menu_additem(menu, szText);
  724. g_iSkins[id][k++] = i;
  725. }
  726.  
  727. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  728. menu_display(id, menu, 0);
  729. }
  730. public skinsForDestroyMenuHandler(id, menu, item)
  731. {
  732. if( item == MENU_EXIT )
  733. {
  734. menu_destroy(menu);
  735. return PLUGIN_HANDLED;
  736. }
  737.  
  738. g_iSkinToDestroy[id] = g_iSkins[id][item];
  739. showDestroyMenu(id);
  740.  
  741. menu_destroy(menu);
  742. return PLUGIN_HANDLED;
  743. }
  744. /* Market menu */
  745. public cmdShowMarket(id)
  746. {
  747. new menu;
  748.  
  749. menu = menu_create("\w[ \yCSGO OUTSTANDING \w] Market Shop", "marketMenuHandler");
  750.  
  751. menu_additem(menu, "\wCumpara \yskin^n");
  752.  
  753. menu_additem(menu, "Adauga \yskin \win market");
  754. menu_additem(menu, "Retrage \yskin \wdin market");
  755.  
  756. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  757. menu_display(id, menu, 0);
  758. }
  759. public marketMenuHandler(id, menu, item)
  760. {
  761. if( item == MENU_EXIT )
  762. {
  763. menu_destroy(menu);
  764. return PLUGIN_HANDLED;
  765. }
  766.  
  767. switch(item)
  768. {
  769. case 0: showSkinsInMarketMenu(id);
  770. case 1: showSkinsToSellMenu(id);
  771. case 2: showRemoveSkinMenu(id);
  772. }
  773.  
  774. menu_destroy(menu);
  775. return PLUGIN_HANDLED;
  776. }
  777. /* Skins in market */
  778. public showSkinsInMarketMenu(id)
  779. {
  780. new menu, szText[256], szName[32], k=0;
  781.  
  782. new iPlayers[32], iNum, idV;
  783. get_players(iPlayers, iNum);
  784.  
  785. menu = menu_create("\w[ \yCSGO OUTSTANDING \w] Skinuri in market", "skinsInMarketMenuHandler");
  786.  
  787. for(new i; i < iNum; i++)
  788. {
  789. idV = iPlayers[i];
  790. for(new j; j < skinsNum; j++)
  791. {
  792. if(g_iSkinsInMarket[idV][j])
  793. {
  794. get_user_name(idV, szName, charsmax(szName));
  795.  
  796. formatex(szText, charsmax(szText), "\y%s \w[ \y%d \wpoints \w] [ Vanzator: \y%s \w]", g_aSkins[j][Name], g_iSkinsInMarket[idV][j], szName);
  797. menu_additem(menu, szText);
  798. g_iSkins[id][k] = j;
  799. iSeller[id][k++] = idV;
  800. }
  801. }
  802. }
  803.  
  804. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  805. menu_display(id, menu, 0);
  806. }
  807. public skinsInMarketMenuHandler(id, menu, item)
  808. {
  809. if( item == MENU_EXIT )
  810. {
  811. menu_destroy(menu);
  812. return PLUGIN_HANDLED;
  813. }
  814. new szSellerName[32], szName[32];
  815.  
  816. new iSkinID = g_iSkins[id][item]
  817. new iSellerID = iSeller[id][item];
  818.  
  819. if(g_iPlayerData[id][Points] < g_iSkinsInMarket[iSellerID][iSkinID])
  820. {
  821. ColorChat(id, "!g%s!nPuncte insuficiente pentru a cumpara skinul!", szTag);
  822. return PLUGIN_HANDLED;
  823. }
  824.  
  825. get_user_name(id, szName, charsmax(szName));
  826. get_user_name(iSellerID, szSellerName, charsmax(szSellerName));
  827.  
  828. g_iPlayerData[id][Points] -= g_iSkinsInMarket[iSellerID][iSkinID];
  829. g_iPlayerData[iSellerID][Points] += g_iSkinsInMarket[iSellerID][iSkinID];
  830.  
  831. g_iPlayerSkins[id][iSkinID]++;
  832.  
  833. ColorChat(0, "!g%s!nA fost achizitionat skinul !g%s !nde la !g%s !ncu !g%d !npuncte de catre !g%s!n.", szTag, g_aSkins[iSkinID][Name], szSellerName, g_iSkinsInMarket[iSellerID][iSkinID], szName);
  834. ColorChat(iSellerID, "!g%s!nTi-a fost achizitionat skinul !g%s !ncu !g%d !npuncte de catre !g%s!n.", szTag, g_aSkins[iSkinID][Name], g_iSkinsInMarket[iSellerID][iSkinID], szName);
  835.  
  836. g_iSkinsInMarket[iSellerID][iSkinID] = 0;
  837.  
  838. SaveData(id);
  839. SaveMarket(id);
  840.  
  841. menu_destroy(menu);
  842. return PLUGIN_HANDLED;
  843. }
  844. /* Skins to sell */
  845. public showSkinsToSellMenu(id)
  846. {
  847. new menu, szText[128], k=0;
  848.  
  849. menu = menu_create("\w[ \yCSGO OUTSTANDING \w] Alege skinul", "skinsToSellMenuHandler");
  850.  
  851. if(!g_iPrice[id])
  852. formatex(szText, charsmax(szText), "Alege \ypretul^n");
  853. else
  854. formatex(szText, charsmax(szText), "\yPret\r: \w%d^n", g_iPrice[id]);
  855. menu_additem(menu, szText);
  856. for(new i; i < skinsNum; i++)
  857. {
  858. if(g_iPlayerSkins[id][i])
  859. {
  860. formatex(szText, charsmax(szText), "\y%s \w- \r*\y%d \wBucati", g_aSkins[i][Name], g_iPlayerSkins[id][i]);
  861. menu_additem(menu, szText);
  862.  
  863. g_iSkins[id][k++] = i;
  864. }
  865. }
  866.  
  867. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  868. menu_display(id, menu, 0);
  869. }
  870. public skinsToSellMenuHandler(id, menu, item)
  871. {
  872. if( item == MENU_EXIT )
  873. {
  874. menu_destroy(menu);
  875. return PLUGIN_HANDLED;
  876. }
  877. new iSkinID, szName[32];
  878. get_user_name(id, szName, charsmax(szName));
  879. if(item == 0)
  880. {
  881. client_cmd(id, "messagemode Insert_price");
  882. menu_destroy(menu);
  883. return PLUGIN_HANDLED;
  884. }
  885. if(!g_iPrice[id])
  886. {
  887. ColorChat(id, "!g%s!nNu ai ales inca pretul!", szTag);
  888. showSkinsToSellMenu(id)
  889. return PLUGIN_HANDLED
  890. }
  891. iSkinID = g_iSkins[id][item-1];
  892.  
  893. if(g_iSkinsInMarket[id][iSkinID])
  894. {
  895. ColorChat(id, "!g%s!nAi pus deja acest !gskin in !gmarket!n!", szTag);
  896. showSkinsToSellMenu(id);
  897. return PLUGIN_HANDLED;
  898. }
  899.  
  900. g_iPlayerSkins[id][iSkinID]--;
  901. g_iSkinsInMarket[id][iSkinID] = g_iPrice[id];
  902.  
  903. ColorChat(id, "!g%s!nAi adaugat skinul !g%s !nin market cu !g%d !npuncte.", szTag, g_aSkins[iSkinID][Name], g_iPrice[id]);
  904. ColorChat(0, "!g%s!nJucatorul !g%s !na adaugat skinul !g%s !nin market cu !g%d !npuncte.", szTag, szName, g_aSkins[iSkinID][Name], g_iPrice[id]);
  905. g_iPrice[id] = 0;
  906.  
  907. SaveData(id)
  908. SaveMarket(id);
  909.  
  910. showSkinsToSellMenu(id);
  911.  
  912. menu_destroy(menu);
  913. return PLUGIN_HANDLED;
  914. }
  915. public cmdInsertPrice(id)
  916. {
  917. new szPrice[8];
  918. read_args(szPrice, charsmax(szPrice));
  919. remove_quotes(szPrice);
  920.  
  921. new iPrice = str_to_num(szPrice);
  922. if(!iPrice || iPrice < 0)
  923. {
  924. ColorChat(id, "!g%s!nInvalid number, try again!", szTag);
  925. client_cmd(id, "messagemode Insert_price");
  926. }
  927.  
  928. g_iPrice[id] = iPrice;
  929. showSkinsToSellMenu(id);
  930. }
  931. /* Remove skin from market */
  932. public showRemoveSkinMenu(id)
  933. {
  934. new menu, szText[128], k=0;
  935.  
  936. menu = menu_create("\w[ \yCSGO OUTSTANDING \w] Alege skinul pe care doresti sa il retragi", "skinsToRemoveMenuHandler");
  937. for(new i; i < skinsNum; i++)
  938. {
  939. if(g_iSkinsInMarket[id][i])
  940. {
  941. formatex(szText, charsmax(szText), "\y%s", g_aSkins[i][Name]);
  942. menu_additem(menu, szText);
  943.  
  944. g_iSkins[id][k++] = i;
  945. }
  946. }
  947.  
  948. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  949. menu_display(id, menu, 0);
  950. }
  951. public skinsToRemoveMenuHandler(id, menu, item)
  952. {
  953. if(item == MENU_EXIT)
  954. {
  955. cmdShowMarket(id);
  956. return PLUGIN_HANDLED;
  957. }
  958.  
  959. new szName[32], iSkinID;
  960.  
  961. get_user_name(id, szName, charsmax(szName));
  962. iSkinID = g_iSkins[id][item];
  963.  
  964. g_iSkinsInMarket[id][iSkinID] = 0;
  965. g_iPlayerSkins[id][iSkinID]++;
  966.  
  967. ColorChat(0, "!g%s!nJucatorul !g%s !na retras skinul !g%s !ndin market.", szTag, szName, g_aSkins[iSkinID][Name]);
  968.  
  969. cmdShowMarket(id);
  970. return PLUGIN_HANDLED;
  971. }
  972. /* Games Menu */
  973. public showGamesMenu(id)
  974. {
  975. new menu, szText[64];
  976. menu = menu_create("\w[ \yCS:GO OUTSTANDING \w] Meniu de \yjocuri", "gamesMenuHandler");
  977.  
  978. formatex(szText, charsmax(szText), "Tombola | \y%d \wPuncte", 10)
  979. menu_additem(menu, szText);
  980.  
  981. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  982. menu_display(id, menu, 0);
  983. }
  984. public gamesMenuHandler(id, menu, item)
  985. {
  986. if( item == MENU_EXIT )
  987. {
  988. menu_destroy(menu);
  989. return PLUGIN_HANDLED;
  990. }
  991.  
  992. switch(item)
  993. {
  994. case 0:
  995. {
  996. if(g_iPlayerData[id][Points] < 10)
  997. {
  998. ColorChat(id, "!g%s!nInsuficiente !gpuncte !npentru a juca la tombola", szTag);
  999. return PLUGIN_HANDLED;
  1000. }
  1001. new szName[32];
  1002. get_user_name(id, szName, charsmax(szName));
  1003.  
  1004. for(new i; i < raffleMembers; i++)
  1005. {
  1006. if(g_iRafflePlayers[i] == id)
  1007. {
  1008. ColorChat(id, "!g%s!nTe-ai inscris deja in tombola runda asta!", szTag);
  1009. return PLUGIN_HANDLED;
  1010. }
  1011. }
  1012.  
  1013. g_iRafflePlayers[raffleMembers++] = id;
  1014. g_iPlayerData[id][Points] -= 10
  1015. ColorChat(0, "!g%s!nJucatorul !g%s !ns-a inscris in !gtombola!n.Jucatori inscrisi: !g%d!n.", szTag, szName, raffleMembers);
  1016. }
  1017. }
  1018.  
  1019. menu_destroy(menu);
  1020. return PLUGIN_HANDLED;
  1021. }
  1022. /* Round end event */
  1023. public evRoundEnd()
  1024. {
  1025. if(raffleMembers)
  1026. {
  1027. new iRand, szName[32];
  1028.  
  1029. iRand = random(raffleMembers);
  1030. get_user_name(g_iRafflePlayers[iRand], szName, charsmax(szName));
  1031.  
  1032. g_iPlayerData[g_iRafflePlayers[iRand]][Points] += 10*raffleMembers;
  1033.  
  1034. ColorChat(0, "!g%s!nTombola pe runda aceasta s-a incheiat !", szTag);
  1035. ColorChat(0, "!g%s!nJucatorul !g%s !na avut bulan si a castigat !g%d!n puncte !", szTag, szName, 10*raffleMembers);
  1036. ColorChat(0, "!g%s!nNu fiti suparati, vorba aia, prost sa fii noroc sa ai !", szTag);
  1037.  
  1038. raffleMembers = 0;
  1039. }
  1040. else
  1041. {
  1042. ColorChat(0, "!g%s!nNiciun jucator !ginscris !nin aceasta runda !", szTag);
  1043. ColorChat(0, "!g%s!nAsteptam extragerea din runda urmatoare !", szTag);
  1044. }
  1045. }
  1046. /* Giving keys when win a round */
  1047. public terroristsWin()
  1048. {
  1049. new iPlayers[32], iNum, id, iRand;
  1050. get_players(iPlayers, iNum, "ae", "TERRORISTS");
  1051.  
  1052. for(new i; i < iNum; i++)
  1053. {
  1054. id = iPlayers[i];
  1055. iRand = random_num(1, 100);
  1056.  
  1057. if(iRand <= 60)
  1058. {
  1059. g_iPlayerData[id][Fragments]++;
  1060. ColorChat(id, "!g%s!nFelicitari, ai primit un !gfragment !nde cheie !", szTag);
  1061.  
  1062. SaveData(id);
  1063. }
  1064. }
  1065. }
  1066. public ctsWin()
  1067. {
  1068. new iPlayers[32], iNum, id, iRand;
  1069. get_players(iPlayers, iNum, "ae", "CT");
  1070.  
  1071. for(new i; i < iNum; i++)
  1072. {
  1073. id = iPlayers[i];
  1074. iRand = random_num(1, 100);
  1075.  
  1076. if(iRand <= 60)
  1077. {
  1078. g_iPlayerData[id][Fragments]++;
  1079. ColorChat(id, "!g%s!nFelicitari, ai primit un !gfragment !nde cheie !", szTag);
  1080.  
  1081. SaveData(id);
  1082. }
  1083. }
  1084. }
  1085. public hamAddWeaponToPlayer(ent, id)
  1086. {
  1087. if(!is_valid_ent(ent) || !is_user_connected(id))
  1088. return HAM_IGNORED;
  1089.  
  1090. for (new i; i < skinsNum; i++)
  1091. {
  1092. if(entity_get_int(ent, EV_INT_impulse) == 500+i)
  1093. {
  1094. entity_set_int(ent, EV_INT_impulse, 0);
  1095. g_iShowedSkin[id][g_aSkins[i][Type]] = i;
  1096.  
  1097. return HAM_HANDLED;
  1098. }
  1099. }
  1100. return HAM_IGNORED;
  1101. }
  1102. public fwSetModel(entity, model[])
  1103. {
  1104. if(!is_valid_ent(entity))
  1105. return FMRES_IGNORED;
  1106.  
  1107. static szClassName[33];
  1108. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName));
  1109.  
  1110. if(!equal(szClassName, "weaponbox"))
  1111. return FMRES_IGNORED;
  1112.  
  1113. static iOwner;
  1114.  
  1115. new szModels[][][] =
  1116. {
  1117. {"models/w_ak47.mdl", "weapon_ak47" },
  1118. {"models/w_m4a1.mdl", "weapon_m4a1" },
  1119. {"models/w_awp.mdl", "weapon_awp" }
  1120. }
  1121.  
  1122. new iWeapons[] =
  1123. {
  1124. CSW_AK47,
  1125. CSW_M4A1,
  1126. CSW_AWP
  1127. }
  1128.  
  1129. iOwner = entity_get_edict(entity, EV_ENT_owner);
  1130.  
  1131. for(new i; i < sizeof(szModels); i++)
  1132. if(equal(model, szModels[i][0]))
  1133. {
  1134. static iStoredAugID;
  1135. iStoredAugID = find_ent_by_owner(-1, szModels[i][1], entity);
  1136.  
  1137. if(!is_valid_ent(iStoredAugID))
  1138. return FMRES_IGNORED;
  1139.  
  1140. entity_set_int(iStoredAugID, EV_INT_impulse, 500+g_iShowedSkin[iOwner][iWeapons[i]]);
  1141. entity_set_model(entity, szModels[i][0]);
  1142.  
  1143. return FMRES_SUPERCEDE;
  1144. }
  1145. return FMRES_IGNORED;
  1146. }
  1147. /* Save & Load Data */
  1148. public SaveData(id)
  1149. {
  1150. new iVault = nvault_open("CSGOData2");
  1151.  
  1152. new szName[32], szData[256];
  1153. get_user_name(id, szName, charsmax(szName));
  1154.  
  1155. formatex(szData, charsmax(szData), "%i#%i#%i#%i", g_iPlayerData[id][Points], g_iPlayerData[id][Case], g_iPlayerData[id][Keys], g_iPlayerData[id][Fragments]);
  1156.  
  1157. for(new i; i < skinsNum; i++)
  1158. format(szData, charsmax(szData), "%s#%i", szData, g_iPlayerSkins[id][i]);
  1159.  
  1160. nvault_set(iVault, szName, szData);
  1161.  
  1162. nvault_close(iVault);
  1163. }
  1164. public LoadData(id)
  1165. {
  1166. new iVault = nvault_open("CSGOData2");
  1167.  
  1168. if(iVault == INVALID_HANDLE)
  1169. {
  1170. server_print("ERROR: Unable to open vault file");
  1171. log_amx("ERROR: Unable to open vault file %s", "CSGOData2");
  1172. return PLUGIN_HANDLED;
  1173. }
  1174.  
  1175.  
  1176. new szName[32], szData[256], szArg[32][9], iArg[32], iTimestamp;
  1177. get_user_name(id, szName, charsmax(szName));
  1178.  
  1179. if(nvault_lookup(iVault, szName, szData, charsmax(szData), iTimestamp))
  1180. {
  1181. for(new i; i < skinsNum + 4; i ++)
  1182. {
  1183. strtok(szData, szArg[i], charsmax(szArg[]), szData, charsmax(szData), '#');
  1184. iArg[i] = str_to_num(szArg[i]);
  1185. }
  1186.  
  1187. g_iPlayerData[id][Points] = iArg[0];
  1188. g_iPlayerData[id][Case] = iArg[1];
  1189. g_iPlayerData[id][Keys] = iArg[2];
  1190. g_iPlayerData[id][Fragments] = iArg[3];
  1191.  
  1192. for(new i; i < skinsNum; i++)
  1193. g_iPlayerSkins[id][i] = iArg[i+4]; /* +4 because we loaded points keys case and fragments */
  1194. }
  1195. else
  1196. {
  1197. g_iPlayerData[id][Points] = 15;
  1198. g_iPlayerData[id][Case] = 1;
  1199. g_iPlayerData[id][Keys] = 1;
  1200. g_iPlayerData[id][Fragments] = 0;
  1201.  
  1202. for(new i; i < skinsNum; i++)
  1203. g_iPlayerSkins[id][i] = 0;
  1204. }
  1205. nvault_close(iVault);
  1206. return PLUGIN_CONTINUE;
  1207. }
  1208. /* Save & Load Market */
  1209. public SaveMarket(id)
  1210. {
  1211. new iVault = nvault_open("CSGOMarket");
  1212.  
  1213. new szName[32], szData[256];
  1214. get_user_name(id, szName, charsmax(szName));
  1215.  
  1216. for(new i; i < skinsNum; i++)
  1217. format(szData, charsmax(szData), "%s#%i", szData, g_iSkinsInMarket[id][i]);
  1218.  
  1219. nvault_set(iVault, szName, szData);
  1220.  
  1221. nvault_close(iVault);
  1222. }
  1223. public LoadMarket(id)
  1224. {
  1225. new iVault = nvault_open("CSGOMarket");
  1226.  
  1227. new szName[32], szData[256], szArg[32][9], iArg[32];
  1228. get_user_name(id, szName, charsmax(szName));
  1229.  
  1230. nvault_get(iVault, szName, szData, charsmax(szData));
  1231.  
  1232. for(new i; i < skinsNum; i ++)
  1233. {
  1234. strtok(szData, szArg[i], charsmax(szArg[]), szData, charsmax(szData), '#');
  1235. iArg[i] = str_to_num(szArg[i]);
  1236. }
  1237. for(new i; i < skinsNum; i++)
  1238. g_iSkinsInMarket[id][i] = iArg[i];
  1239. nvault_close(iVault);
  1240. }
  1241. /* ColorChat */
  1242. stock ColorChat(const id,const input[], any:...)
  1243. {
  1244. new iNum = 1, iPlayers[32];
  1245. static szMessage[191];
  1246. vformat(szMessage, charsmax(szMessage),input, 3);
  1247.  
  1248. replace_all(szMessage, charsmax(szMessage), "!g", "^4");
  1249. replace_all(szMessage, charsmax(szMessage), "!n", "^1");
  1250. replace_all(szMessage, charsmax(szMessage), "!t", "^3");
  1251.  
  1252. if(id) iPlayers[0] = id;
  1253. else get_players(iPlayers, iNum, "ch");
  1254.  
  1255. for(new i = 0; i < iNum; i++)
  1256. {
  1257. if(is_user_connected(iPlayers[i]))
  1258. {
  1259. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayers[i]);
  1260. write_byte(iPlayers[i]);
  1261. write_string(szMessage);
  1262. message_end();
  1263. }
  1264. }
  1265. }
  1266. // Get Weapon Entity's Owner
  1267. stock fm_cs_get_weapon_ent_owner(ent)
  1268. {
  1269. // Prevent server crash if entity's private data not initalized
  1270. if (pev_valid(ent) != 2) return -1;
  1271.  
  1272. return get_pdata_cbase(ent, 41, 4);
  1273. }
  1274. stock user_have_skins(id)
  1275. {
  1276. new ok = 0;
  1277. for (new i; i < skinsNum; i++)
  1278. {
  1279. if (g_iPlayerSkins[id][i] > 0)
  1280. {
  1281. ok = 1;
  1282. }
  1283. }
  1284. return ok;
  1285. }
  1286.  
  1287. stock fm_cs_get_user_team ( id )
  1288. {
  1289. return get_pdata_int ( id, 114, 5 );
  1290. }
  1291. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  1292. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
  1293. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement