Advertisement
Mr-Co0L

Untitled

May 2nd, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 39.66 KB | None | 0 0
  1. #include < amxmodx >
  2. #include < amxmisc >
  3. #include < hamsandwich >
  4. #include < fakemeta >
  5. #include < adv_vault >
  6. /* ====== START EDIT SECTION ====== */
  7.  
  8. // Aqui cambia "32" por la cantidad maxima de jugadores que pueden entrar a tu server
  9. #define MAXPLAYERS 32
  10.  
  11. #define CLANNAME_LENGHT 20
  12. #define CLAN_MAXMEMBERS 5
  13. #define CLAN_MINMEMBERS 2
  14. #define MENU_TITTLE_LENGHT 128
  15. #define PASSWORD_LENGHT 50
  16.  
  17. new const MENU_PREFIX[ ] = "\r[ \yCS:GO Outstanding \dCLAN \ySYSTEM \r]\w";
  18. new const CHAT_PREFIX[ ] = "!g[ CS:GO Outstanding CLAN SYSTEM ]!n";
  19.  
  20. /* ==== END EDIT SECTION ==== */
  21.  
  22. #define MP MAXPLAYERS+1
  23.  
  24. #define flag_get(%1,%2) (%1 & (1 << (%2 & 31)))
  25. #define flag_set(%1,%2) (%1 |= (1 << (%2 & 31)))
  26. #define flag_unset(%1,%2) (%1 &= ~(1 << (%2 & 31)))
  27.  
  28. #define TASK_HUD 1000
  29. #define ID_HUD ( taskid - TASK_HUD )
  30.  
  31. enum
  32. {
  33. C_MEMBERSHIP, C_CLANNAME, C_DATE, C_PASS, C_PNAME, C_KILLS, C_DEATHS, C_HS_KILLS, C_HS_DEATHS,
  34. C_KNIFE_KILLS, C_KNIFE_DEATHS, C_SUICIDES, C_SPAWNS, C_CLAN_CHAT,
  35.  
  36. C_MAX
  37. }
  38.  
  39. enum { WITHOUT_CLAN = 0, CLAN_MEMBER, CLAN_BOSS, CLAN_OWNER, MAX_MEMBER_RANGES }
  40. enum { LOAD= 0, SAVE }
  41. enum { NOT_REGISTERED = 0, REGISTERED, LOGGUED, MAX_STATUS }
  42. enum _:DATA_RANK { KILLS, DEATHS, HS_KILLS, HS_DEATHS, KNIFE_KILLS, KNIFE_DEATHS, SUICIDES, SPAWNS }
  43. enum _:BITS { CONNECTED, ALIVE, CAN_CHANGE_PW }
  44. enum _:MSGS { MSG_VGUI, MSG_SHOWMENU, MSG_SAYTEXT, MSG_TEAMINFO }
  45.  
  46. new const P_NAME[ ] = "CLAN SYSTEM";
  47. new const P_VERSION[ ] = "1.1b";
  48. new const P_AUTOR[ ] = "kikizon";
  49.  
  50. new kBits[BITS], kMsg[MSGS];
  51.  
  52. new kClanMembership[ MP ], kRange[ MP ], kActivatedClanChat[ MP ];
  53.  
  54. new kInvited[ MP ], kClanOwner[ MP ], kDataRank[ MP ][ DATA_RANK ];
  55.  
  56. new kClanName[ MP ][ CLANNAME_LENGHT ], kClanNameConfirmated[ MP ];
  57.  
  58. new kPlayerName[ MP ][ 32 ], kPname[ MP ][ 32 ];
  59.  
  60. new vault, kFields[ C_MAX ], kPassword[ MP ][ PASSWORD_LENGHT ], kPassword2[ MP ][ PASSWORD_LENGHT ], kDate[ MP ][ 32 ], kStatus[ MP ];
  61.  
  62. new hudSync;
  63.  
  64. new const Status[ MAX_STATUS ][ ] = { "Neinregistrat", "Inregistrat", "Logat" };
  65. new const MemberRange[ MAX_MEMBER_RANGES ][ ] = { "Fara Clan", "Membru", "Conducator", "Fondator" };
  66.  
  67. /* ================ */
  68.  
  69. public plugin_init()
  70. {
  71. register_plugin( P_NAME, P_VERSION, P_AUTOR );
  72.  
  73. register_event("DeathMsg", "ev_DeathMsg", "a");
  74.  
  75. RegisterHam(Ham_Killed, "player", "ham_PlayerKilledPost", true );
  76. RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawnPost", true );
  77.  
  78. register_forward( FM_ClientUserInfoChanged, "fm_ClientInfoChanged" );
  79.  
  80. register_clcmd( "say", "Block_Say" );
  81. register_clcmd( "say_team", "Block_TeamSay" );
  82. register_clcmd( "say /clan", "cmd_CLAN" );
  83. register_clcmd( "JOIN_CLAN_NAME", "JoinClanName" );
  84. register_clcmd( "JOIN_PASSWORD", "JoinPassword" );
  85.  
  86.  
  87. kMsg[MSG_VGUI] = get_user_msgid("VGUIMenu");
  88. kMsg[MSG_SHOWMENU] = get_user_msgid("ShowMenu");
  89. kMsg[MSG_SAYTEXT] = get_user_msgid("SayText");
  90. kMsg[MSG_TEAMINFO] = get_user_msgid("TeamInfo");
  91. register_message(kMsg[MSG_VGUI], "message_VGUImenu");
  92. register_message(kMsg[MSG_SHOWMENU], "message_VGUImenu");
  93.  
  94.  
  95. hudSync = CreateHudSyncObj();
  96.  
  97.  
  98. vault = adv_vault_open( "CLAN_SYSTEM", true );
  99.  
  100. kFields[ C_MEMBERSHIP ] = adv_vault_register_field( vault, "MEMBRESIA");
  101. kFields[ C_CLANNAME ] = adv_vault_register_field( vault, "NOMBRE DE CLAN", DATATYPE_STRING, CLANNAME_LENGHT-1 );
  102. kFields[ C_DATE ] = adv_vault_register_field( vault, "FECHA", DATATYPE_STRING, 32 );
  103. kFields[ C_PASS ] = adv_vault_register_field( vault, "PASSWORD", DATATYPE_STRING, PASSWORD_LENGHT-1 );
  104. kFields[ C_PNAME ] = adv_vault_register_field( vault, "NOMBRE", DATATYPE_STRING, 31 );
  105. kFields[ C_KILLS ] = adv_vault_register_field( vault, "KILLS" );
  106. kFields[ C_DEATHS ] = adv_vault_register_field( vault, "DEATHS" );
  107. kFields[ C_HS_KILLS ] = adv_vault_register_field( vault, "HS KILLS" );
  108. kFields[ C_HS_DEATHS ] = adv_vault_register_field( vault, "HS DEATHS" );
  109. kFields[ C_KNIFE_KILLS ] = adv_vault_register_field( vault, "KNIFE KILLS" );
  110. kFields[ C_KNIFE_DEATHS ] = adv_vault_register_field( vault, "KNIFE DEATHS" );
  111. kFields[ C_SUICIDES ] = adv_vault_register_field( vault, "SUICIDES" );
  112. kFields[ C_SPAWNS ] = adv_vault_register_field( vault, "RESPAWNS" );
  113. kFields[ C_CLAN_CHAT ] = adv_vault_register_field( vault, "CLANCHAT" );
  114.  
  115. adv_vault_init( vault );
  116. }
  117.  
  118. public client_putinserver( index )
  119. {
  120. flag_set(kBits[CONNECTED], index);
  121. get_user_name( index, kPlayerName[ index ], 31 );
  122. get_time( "%c", kDate[ index ], 31);
  123.  
  124. kClanMembership[ index ] = WITHOUT_CLAN;
  125. kClanName[ index ] = "^0";
  126. kPassword[ index ] = "^0";
  127. kClanNameConfirmated[ index ] = false;
  128. kRange[ index ] = 0;
  129. kActivatedClanChat[ index ] = false;
  130.  
  131. DataManagement( index, LOAD );
  132. }
  133.  
  134. public client_disconnect( index )
  135. {
  136. remove_task( index+TASK_HUD );
  137. DataManagement( index, SAVE );
  138.  
  139. flag_unset(kBits[CONNECTED], index);
  140. }
  141.  
  142. public Block_Say(index)
  143. {
  144. static said[191];
  145. read_args(said, charsmax(said));
  146. szRemove_Quotes(said, said);
  147. replace_all(said, charsmax(said), "%", "");
  148. replace_all(said, charsmax(said), "#", "");
  149.  
  150. if (!ValidMessage(said, 1)) return PLUGIN_CONTINUE;
  151.  
  152. static color[11], prefix[111], range[64];
  153. get_user_team(index, color, charsmax(color));
  154.  
  155. formatex(range, charsmax(range), "^x03(^x04 %s ^x03)", kClanName[ index ][ 0 ] ? kClanName[ index ] : "Fara Clan" );
  156. formatex(prefix, charsmax(prefix), "%s%s^x03 %s", flag_get(kBits[ALIVE],index)?"^x01":"^x01*Mort* ", range, kPlayerName[index]);
  157.  
  158. if (is_user_admin(index)) format(said, charsmax(said), "^x04%s", said);
  159.  
  160. format(said, charsmax(said), "%s^x01 : %s", prefix, said);
  161.  
  162. static i, team[11];
  163.  
  164. for (i = 1; i <= MAXPLAYERS; ++i)
  165. {
  166. if (!flag_get(kBits[CONNECTED],i)) continue;
  167.  
  168. if (is_user_admin(i) || flag_get(kBits[ALIVE],index) && flag_get(kBits[ALIVE],i) || !flag_get(kBits[ALIVE],index) && !flag_get(kBits[ALIVE],i))
  169. {
  170. get_user_team(i, team, charsmax(team));
  171. changeTeamInfo(i, color);
  172. writeMessage(i, said);
  173. changeTeamInfo(i, team);
  174. }
  175. }
  176.  
  177. return PLUGIN_HANDLED_MAIN;
  178. }
  179.  
  180.  
  181. public Block_TeamSay(index)
  182. {
  183. static said[191];
  184. read_args(said, 190);
  185. szRemove_Quotes( said, said );
  186. replace_all(said, 190, "%", "");
  187. replace_all(said, 190, "#", "");
  188.  
  189. if(kActivatedClanChat[ index ] )
  190. {
  191. if(!ValidMessage(said, 1) || kClanMembership[ index ] == WITHOUT_CLAN)
  192. {
  193. ColorChat(0, "!gMesajul dvs. este inevalid sau nu sunteti intr-un clan");
  194. return PLUGIN_HANDLED;
  195. }
  196.  
  197. static i, team[11], color[11], range[128], prefix[111];
  198. get_user_team(index, color, charsmax(color));
  199.  
  200. formatex(range, charsmax(range), "^x03(^x01 PRIVATE CHAT:^x04 %s ^x03)", kClanName[ index ]);
  201. formatex(prefix, charsmax(prefix), "%s%s^x03 %s", flag_get(kBits[ALIVE],index)?"^x01":"^x01*Mort* ", range, kPlayerName[index]);
  202.  
  203. if (kClanMembership[ index ] == CLAN_OWNER || kClanMembership[ index ] == CLAN_BOSS) format(said, charsmax(said), "^x04%s", said);
  204.  
  205. format(said, charsmax(said), "%s^x01 : %s", prefix, said);
  206.  
  207. for (i = 1; i <= MAXPLAYERS; ++i)
  208. {
  209. if (!flag_get(kBits[CONNECTED],i)) continue;
  210.  
  211. if ( equal(kClanName[ index ], kClanName[ i ]) )
  212. {
  213. get_user_team(i, team, charsmax(team));
  214. changeTeamInfo(i, color);
  215. writeMessage(i, said);
  216. changeTeamInfo(i, team);
  217. }
  218. }
  219. }
  220. else
  221. {
  222. if (!ValidMessage(said, 1)) return PLUGIN_CONTINUE;
  223.  
  224. static playerTeam, playerTeamName[19];
  225. playerTeam = get_user_team(index);
  226.  
  227. switch (playerTeam)
  228. {
  229. case 1: copy (playerTeamName, 6, "^x03 * CT *");
  230. case 2: copy (playerTeamName, 8, "^x03 * TT *");
  231. default: copy (playerTeamName, 11, "* SPEC *");
  232. }
  233.  
  234. static color[11], prefix[111], range[128];
  235. get_user_team(index, color, charsmax(color));
  236.  
  237. formatex(range, charsmax(range), "^x03(^x04 %s ^x03)", kClanName[ index ][ 0 ] ? kClanName[ index ] : "Fara Clan" );
  238. formatex(prefix, charsmax(prefix), "%s%s %s^x03 %s", flag_get(kBits[ALIVE],index)?"^x01":"^x01*Mort* ", playerTeamName, range, kPlayerName[index]);
  239.  
  240. if (is_user_admin(index)) format(said, charsmax(said), "^x04%s", said);
  241.  
  242. format(said, charsmax(said), "%s^x01 : %s", prefix, said);
  243.  
  244. static i, team[11];
  245. for (i = 1; i <= MAXPLAYERS; ++i)
  246. {
  247. if (!flag_get(kBits[CONNECTED],i)) continue;
  248.  
  249. if (get_user_team(i) == playerTeam)
  250. {
  251. if (flag_get(kBits[ALIVE],index) && flag_get(kBits[ALIVE],i) || !flag_get(kBits[ALIVE],index) && !flag_get(kBits[ALIVE],i))
  252. {
  253. get_user_team(i, team, charsmax(team));
  254. changeTeamInfo(i, color);
  255. writeMessage(i, said);
  256. changeTeamInfo(i, team);
  257. }
  258. }
  259. }
  260. }
  261.  
  262. return PLUGIN_HANDLED_MAIN;
  263. }
  264.  
  265. public ham_PlayerKilledPost( victim, attacker, shouldgib )
  266. {
  267. if( !is_user_connected( attacker ) || victim == attacker || !attacker )
  268. return;
  269.  
  270. if(get_user_weapon( attacker ) == CSW_KNIFE)
  271. {
  272. ++kDataRank[ attacker ][ KNIFE_KILLS ];
  273. ++kDataRank[ victim ][ KNIFE_DEATHS ];
  274. }
  275.  
  276. ++kDataRank[ attacker ][ KILLS ];
  277. ++kDataRank[ victim ][ DEATHS ];
  278.  
  279. flag_unset(kBits[ALIVE],victim);
  280. }
  281.  
  282. public ham_PlayerSpawnPost( index )
  283. {
  284. flag_set(kBits[ALIVE],index);
  285.  
  286. if( !flag_get(kBits[ALIVE], index)) return;
  287.  
  288. ++kDataRank[ index ][ SPAWNS ];
  289. }
  290.  
  291. public ev_DeathMsg()
  292. {
  293. static victim, attacker, headshot;
  294.  
  295. attacker = read_data(1);
  296. victim = read_data(2);
  297. headshot = read_data(3);
  298.  
  299. if( !attacker || victim == attacker )
  300. {
  301. ++kDataRank[ victim ][ SUICIDES ];
  302. return;
  303. }
  304.  
  305. if( headshot )
  306. {
  307. ++kDataRank[ attacker ][ HS_KILLS ];
  308. ++kDataRank[ victim ][ HS_DEATHS ];
  309. }
  310. }
  311.  
  312. /* ================ */
  313.  
  314. public cmd_CLAN( index )
  315. {
  316. if( kClanMembership[ index ] == WITHOUT_CLAN )
  317. {
  318. ShowMenuCreateClan( index );
  319. return PLUGIN_HANDLED;
  320. }
  321.  
  322. ShowMenuClan( index );
  323. return PLUGIN_HANDLED;
  324. }
  325.  
  326. public JoinClanName( index )
  327. {
  328. read_args(kClanName[ index ], CLANNAME_LENGHT-1);
  329. szRemove_Quotes(kClanName[ index ], kClanName[ index ]);
  330. trim(kClanName[ index ]);
  331.  
  332. if( kClanNameConfirmated[ index ])
  333. {
  334. ColorChat(0, "!gAi confirmat deja numele clanului");
  335. ShowMenuCreateClan( index );
  336. return;
  337. }
  338.  
  339. if( !kClanName[ index ][ 0 ])
  340. {
  341. ColorChat(0, "!g INTRODUCETI NUMELE CLANULUI ");
  342. client_cmd( index, "messagemode ^"JOIN_CLAN_NAME^"");
  343. return;
  344. }
  345.  
  346. static xd; xd = get_membersnum( index );
  347.  
  348. if( xd )
  349. {
  350. ColorChat(0, "!gAcest clan este folosit");
  351. kClanName[ index ] = "^0";
  352. ShowMenuCreateClan( index )
  353. return;
  354. }
  355.  
  356. ShowMenuConfirmateClanName( index );
  357. }
  358.  
  359. public JoinPassword( index )
  360. {
  361. read_args(kPassword[ index ], PASSWORD_LENGHT-1);
  362. szRemove_Quotes(kPassword[ index ], kPassword[ index ]);
  363. trim(kPassword[ index ]);
  364.  
  365. if( !kPassword[ index ][ 0 ] || containi( kPassword[ index ], " ") != -1 )
  366. {
  367. ColorChat(0, "!gEroare parola" );
  368. client_cmd( index, "messagemode ^"JOIN_PASSWORD^"");
  369. return;
  370. }
  371.  
  372. switch(kStatus[ index ])
  373. {
  374. case NOT_REGISTERED:
  375. {
  376. ColorChat(0, "!gConfirmati parola pentru a continua");
  377. copy(kPassword2[ index ], PASSWORD_LENGHT-1, kPassword[ index ]);
  378.  
  379. ShowMenuConfirmatePw( index );
  380. }
  381. case REGISTERED:
  382. {
  383. new buffer[PASSWORD_LENGHT];
  384. adv_vault_get_prepare( vault, _, kPassword[ index ]);
  385. adv_vault_get_field( vault, kFields[ C_PASS ], buffer, charsmax(buffer));
  386.  
  387. if(! equal(buffer, kPassword[ index ]))
  388. {
  389. ShowLogMenu( index );
  390. ColorChat(0, "!gParola incorecta" );
  391. return;
  392. }
  393.  
  394. ColorChat(0, "!gTe-ai conectat la contul tau");
  395. ForceJoinTeam( index );
  396. }
  397. case LOGGUED:
  398. {
  399. if(flag_get(kBits[CAN_CHANGE_PW], index))
  400. {
  401. ColorChat(0, "!gV-ati schimbat deja contorul pe aceasta harta");
  402. return;
  403. }
  404.  
  405. ColorChat(0, "!gConfirmati-va parola pentru a o schimba ..." );
  406. copy(kPassword2[ index ], PASSWORD_LENGHT-1, kPassword[ index ]);
  407. ShowMenuConfirmatePw( index );
  408. }
  409. }
  410. }
  411.  
  412. /*============================
  413. MENUS
  414. ============================*/
  415.  
  416. ShowMenuCreateClan( index )
  417. {
  418. static menu, tittle[MENU_TITTLE_LENGHT], members; members = get_membersnum( index );
  419. formatex( tittle, MENU_TITTLE_LENGHT-1, "%s CREAZA CLAN", MENU_PREFIX );
  420. menu = menu_create( tittle, "menu_create_hand" );
  421.  
  422. formatex( tittle, MENU_TITTLE_LENGHT-1, "Numele Clan: \d%s", kClanName[ index ] );
  423. menu_additem( menu, (!kClanName[ index ][ 0 ])?"Introduceti numele clanului":tittle, "1" );
  424.  
  425. formatex( tittle, MENU_TITTLE_LENGHT-1, "Adaugati membrii ... \d( \r%d \y/ \r%d \d)", members, CLAN_MAXMEMBERS);
  426. menu_additem( menu, (!kClanName[ index ][ 0 ])?"\dAdaugati membri":tittle, "2" );
  427.  
  428. menu_additem( menu, (members >= CLAN_MINMEMBERS )?"CREARE CLAN":"\dCREARE CLAN", "3" );
  429.  
  430. menu_display( index, menu );
  431. }
  432.  
  433. public menu_create_hand( index, menu, item )
  434. {
  435. switch( item )
  436. {
  437. case MENU_EXIT: { menu_destroy( menu ); return PLUGIN_HANDLED; }
  438.  
  439. case 0:
  440. {
  441. if(!kClanNameConfirmated[ index ] )
  442. {
  443. ColorChat(0, "!g INTRODUCETI NUMELE CLANULUI" );
  444. client_cmd( index, "messagemode ^"JOIN_CLAN_NAME^"" );
  445.  
  446. return PLUGIN_HANDLED;
  447. }
  448.  
  449. ColorChat(0, "!gAti confirmat deja numele clanului" );
  450. ShowMenuCreateClan( index );
  451. }
  452. case 1:
  453. {
  454. if(!kClanName[ index ][ 0 ])
  455. {
  456. ColorChat(0, "!gTrebuie sa creati numele clanului inainte");
  457. ShowMenuCreateClan( index );
  458. return PLUGIN_HANDLED;
  459. }
  460.  
  461. ShowInviteMenu( index );
  462. }
  463. case 2:
  464. {
  465. static members; members = get_membersnum( index );
  466.  
  467. if(members >= CLAN_MINMEMBERS )
  468. CreateClan( index );
  469. else
  470. ColorChat(0, "!gAi nevoie de cel putin %d membrii pentru a crea clan", CLAN_MINMEMBERS );
  471. }
  472. }
  473.  
  474. menu_destroy( menu );
  475. return PLUGIN_HANDLED;
  476. }
  477.  
  478. ShowMenuClan( index )
  479. {
  480. static menu, tittle[ MENU_TITTLE_LENGHT ], members; members = get_membersnum( index );
  481. formatex( tittle, MENU_TITTLE_LENGHT-1, "%s MENU CLAN: \r%s^n\wMembrii: \y%d \d/ \y%d",
  482. MENU_PREFIX, kClanName[ index ], members, CLAN_MAXMEMBERS );
  483. menu = menu_create( tittle, "menu_clan" );
  484.  
  485.  
  486. switch(kClanMembership[ index ])
  487. {
  488. case CLAN_OWNER:
  489. {
  490. menu_additem( menu, "Vedeti membrii", "1" );
  491. menu_additem( menu, "Scoateti membrii", "2" );
  492. menu_additem( menu, (members >= CLAN_MAXMEMBERS)?"\dInvita membrii":"Invita membrii", "3" );
  493. menu_additem( menu, "Editeaza Rankurile \d( Din Clan )^n", "4" );
  494.  
  495. formatex(tittle, MENU_TITTLE_LENGHT-1, "%s \wClan Chat \y( \dPrivate chat \d^"\rTEAM SAY\d^"\y)",
  496. kActivatedClanChat[ index ] ? "\rDesactiveaza":"\rActiveaza");
  497. menu_additem( menu, tittle, "5");
  498. }
  499. case CLAN_BOSS:
  500. {
  501. menu_additem( menu, "Vedeti membrii", "1" );
  502. menu_additem( menu, "Scoateti membrii", "2" );
  503. menu_additem( menu, (members >= CLAN_MAXMEMBERS)?"\dInvita membrii":"Invita membrii", "3" );
  504.  
  505. formatex(tittle, MENU_TITTLE_LENGHT-1, "%s \wClan Chat \y( \dPrivate chat \d^"\rTEAM SAY\d^"\y)",
  506. kActivatedClanChat[ index ] ? "Dezactiveaza":"Activeaza");
  507. menu_additem( menu, tittle, "4");
  508. }
  509. case CLAN_MEMBER:
  510. {
  511. menu_additem( menu, "Vedeti membrii^n", "1" );
  512.  
  513. formatex(tittle, MENU_TITTLE_LENGHT-1, "%s \wClan Chat \y( \dPrivate chat \d^"\rTEAM SAY\d^"\y)",
  514. kActivatedClanChat[ index ] ? "Dezactiveaza":"Activeaza");
  515. menu_additem( menu, tittle, "2");
  516. }
  517. }
  518.  
  519. menu_display( index, menu );
  520. }
  521.  
  522. public menu_clan( index, menu, item )
  523. {
  524. if( item == MENU_EXIT )
  525. {
  526. menu_destroy( menu );
  527. return PLUGIN_HANDLED;
  528. }
  529.  
  530. static members; members = get_membersnum( index );
  531. switch(kClanMembership[ index ])
  532. {
  533. case CLAN_OWNER:
  534. {
  535. switch( item )
  536. {
  537. case 0: ShowClanMembers( index );
  538. case 1: ShowKickMembersMenu( index );
  539. case 2:
  540. {
  541. if(members < CLAN_MAXMEMBERS)
  542. {
  543. ShowInviteMenu( index );
  544. return PLUGIN_HANDLED;
  545. }
  546.  
  547. ColorChat(0,"!gNumarul maxim de membri a fost deja atins");
  548. }
  549.  
  550. case 3: EditRangesMembers( index );
  551. case 4:
  552. {
  553. if(kActivatedClanChat[ index ])
  554. {
  555. kActivatedClanChat[ index ] = false;
  556. ShowMenuClan( index );
  557. return PLUGIN_HANDLED;
  558. }
  559.  
  560. kActivatedClanChat[ index ] = true;
  561. ShowMenuClan( index );
  562. }
  563. }
  564. }
  565. case CLAN_BOSS:
  566. {
  567. switch( item )
  568. {
  569. case 0: ShowClanMembers( index );
  570. case 1: ShowKickMembersMenu( index );
  571. case 2:
  572. {
  573. if(members < CLAN_MAXMEMBERS)
  574. {
  575. ShowInviteMenu( index );
  576. return PLUGIN_HANDLED;
  577. }
  578.  
  579. ColorChat(0,"!gNumarul maxim de membri a fost deja atins");
  580. }
  581. case 3:
  582. {
  583. if(kActivatedClanChat[ index ])
  584. {
  585. kActivatedClanChat[ index ] = false;
  586. ShowMenuClan( index );
  587. return PLUGIN_HANDLED;
  588. }
  589.  
  590. kActivatedClanChat[ index ] = true;
  591. ShowMenuClan( index );
  592. }
  593. }
  594. }
  595. case CLAN_MEMBER:
  596. {
  597. switch( item )
  598. {
  599. case 0: ShowClanMembers( index );
  600. case 1:
  601. {
  602. if(kActivatedClanChat[ index ])
  603. {
  604. kActivatedClanChat[ index ] = false;
  605. ShowMenuClan( index );
  606. return PLUGIN_HANDLED;
  607. }
  608.  
  609. kActivatedClanChat[ index ] = true;
  610. ShowMenuClan( index );
  611. }
  612. }
  613. }
  614. }
  615.  
  616. menu_destroy( menu );
  617. return PLUGIN_HANDLED;
  618. }
  619.  
  620. ShowInviteMenu( index )
  621. {
  622. static n, menu, pos[3], tittle[MENU_TITTLE_LENGHT];
  623. formatex( tittle, MENU_TITTLE_LENGHT-1, "%s Trimiteti invitatii pentru a se alatura clanului", MENU_PREFIX );
  624. menu = menu_create( tittle, "menu_invite_hand" );
  625.  
  626. for( n = 1; n <= MAXPLAYERS; ++n )
  627. {
  628. if( !flag_get(kBits[CONNECTED], n) ) continue;
  629.  
  630. if( kClanMembership[ n ] != WITHOUT_CLAN ) continue;
  631.  
  632. if( index == n ) continue;
  633.  
  634. num_to_str( n, pos, 2 );
  635.  
  636. menu_additem( menu, kPlayerName[ n ], pos );
  637. }
  638.  
  639. menu_display( index, menu );
  640. }
  641.  
  642. public menu_invite_hand( index, menu, item )
  643. {
  644. if( item == MENU_EXIT )
  645. {
  646. menu_destroy( menu );
  647. return PLUGIN_HANDLED;
  648. }
  649.  
  650. static iKey[ 6 ], iAccess, iCallback;
  651.  
  652. menu_item_getinfo( menu, item, iAccess, iKey, charsmax( iKey ), _, _, iCallback );
  653. kInvited[ index ] = str_to_num( iKey );
  654.  
  655. if( get_membersnum( index ) == CLAN_MAXMEMBERS )
  656. {
  657. ColorChat(0, "!g[CS:GO Outstanding] Ati atins numarul maxim de membri");
  658. menu_destroy( menu );
  659. return PLUGIN_HANDLED;
  660. }
  661.  
  662. ColorChat(0, "!g[CS:GO Outstanding] Ati invitat %s sa se alature clanului.", kPlayerName[ kInvited[index] ] );
  663. client_print( kInvited[ index ], print_chat, "[CS:GO Outstanding] %s ti-a trimis o invitatie sa et alaturi clanului lui: %s", kPlayerName[ index ], kClanName[ index ] );
  664.  
  665. kClanOwner[ kInvited[ index ] ] = index;
  666.  
  667. if(is_user_bot( kInvited[ index ] ) )
  668. {
  669. kClanMembership[ kInvited[ index ] ] = CLAN_MEMBER;
  670. copy(kClanName[ kInvited[index] ], CLANNAME_LENGHT-1, kClanName[ index ] );
  671. ColorChat(0, "!g[CS:GO Outstanding] %s a acceptat solicitarea dvs.", kPlayerName[ kInvited[index] ] );
  672.  
  673. DataManagement( kInvited[ index ], SAVE );
  674. cmd_CLAN( index );
  675. }
  676. else
  677. ShowMenuInvited( kInvited[ index ] , index );
  678.  
  679. menu_destroy( menu );
  680. return PLUGIN_HANDLED;
  681. }
  682.  
  683. ShowMenuInvited( invited, owner )
  684. {
  685. static menu, tittle[ MENU_TITTLE_LENGHT ];
  686. formatex( tittle, MENU_TITTLE_LENGHT-1, "%s \r%s \w?i-a trimis o invita?ie de a intra in clan: \y%s",
  687. MENU_PREFIX, kPlayerName[ owner ], kClanName[ owner ] );
  688.  
  689. menu = menu_create(tittle, "menu_invited_hand");
  690.  
  691. menu_additem( menu, "\yAcepta", "1");
  692.  
  693. menu_additem( menu, "\rRespinge", "2");
  694.  
  695. menu_setprop( menu, MPROP_EXIT, MEXIT_NEVER );
  696.  
  697. menu_display( invited, menu );
  698. }
  699.  
  700. public menu_invited_hand( index, menu, item )
  701. {
  702. switch (item)
  703. {
  704. case 0:
  705. {
  706. kClanMembership[ index ] = CLAN_MEMBER;
  707. copy(kClanName[ index ], CLANNAME_LENGHT-1, kClanName[ kClanOwner[index] ]);
  708. client_print( kClanOwner[ index ], print_chat, "[CS:GO Outstanding] %s a acceptat solicitarea dvs.", kPlayerName[ index ]);
  709.  
  710. cmd_CLAN( kClanOwner[ index ] );
  711. }
  712. case 1:
  713. {
  714. client_print( kClanOwner[ index ], print_chat, "[CS:GO Outstanding] %s a respins solicitarea dvs", kPlayerName[ index ]);
  715.  
  716. cmd_CLAN( kClanOwner[ index ] );
  717.  
  718. kClanMembership[ index ] = WITHOUT_CLAN;
  719. kClanOwner[ index ] = 0;
  720. kClanName[ index ] = "^0";
  721. }
  722.  
  723. case MENU_EXIT: { menu_destroy(menu); return PLUGIN_HANDLED; }
  724. }
  725.  
  726. menu_destroy(menu);
  727.  
  728. return PLUGIN_HANDLED;
  729. }
  730.  
  731. ShowMenuConfirmateClanName( index )
  732. {
  733. static menu, tittle[ MENU_TITTLE_LENGHT ];
  734. formatex( tittle, MENU_TITTLE_LENGHT-1, "%s Numele clanului va fi: \d%s", MENU_PREFIX, kClanName[ index ] );
  735. menu = menu_create( tittle, "menu_confirm_hand" );
  736.  
  737. menu_additem( menu, "Da, Continua", "1" );
  738. menu_additem( menu, "Nu, Vreau sa il rescriu", "2");
  739.  
  740. menu_setprop( menu, MPROP_EXIT, MEXIT_NEVER );
  741. menu_display( index, menu );
  742. }
  743.  
  744. public menu_confirm_hand( index, menu, item )
  745. {
  746. switch( item )
  747. {
  748. case MENU_EXIT: { menu_destroy(menu); return PLUGIN_HANDLED; }
  749.  
  750. case 0:
  751. {
  752. ColorChat(0, "!g[CS:GO Outstanding] Numele clanului a fost creat corect." );
  753. kClanNameConfirmated[ index ] = true;
  754. DataManagement( index, SAVE );
  755. ShowMenuCreateClan( index );
  756. }
  757. case 1:
  758. {
  759. ColorChat(0, "!g INTRODUCEtI NUMELE CLANULUI ");
  760. client_cmd( index, "messagemode ^"JOIN_CLAN_NAME^"");
  761. }
  762. }
  763.  
  764. menu_destroy( menu );
  765. return PLUGIN_HANDLED;
  766. }
  767.  
  768. ShowClanMembers( index )
  769. {
  770. static menu, keyindex, szkeyindex[5], item[128], item2[50], tittle[ MENU_TITTLE_LENGHT ];
  771. formatex( tittle, MENU_TITTLE_LENGHT-1, "%s Lista membrilor din clan: \d %s", MENU_PREFIX, kClanName[ index ]);
  772. menu = menu_create( tittle, "menu_members_hand");
  773.  
  774. adv_vault_find_start( vault, kFields[ C_CLANNAME ], kClanName[ index ], FINDFLAGS_EQUAL);
  775.  
  776. while((keyindex = adv_vault_find_next( vault )))
  777. {
  778. adv_vault_get_field( vault, kFields[ C_PNAME], item2, charsmax(item2) );
  779. num_to_str( keyindex, szkeyindex, charsmax(szkeyindex) );
  780. formatex( item, charsmax(item), "%s \d( \y %s \d)", item2, MemberRange[adv_vault_get_field(vault, kFields[C_MEMBERSHIP])] );
  781. menu_additem( menu, item, szkeyindex);
  782. }
  783.  
  784. adv_vault_find_closed( vault );
  785.  
  786. menu_display( index, menu );
  787. }
  788.  
  789. public menu_members_hand( index, menu, item )
  790. {
  791. if( item == MENU_EXIT)
  792. {
  793. cmd_CLAN( index );
  794. menu_destroy( menu );
  795. return PLUGIN_HANDLED;
  796. }
  797.  
  798. static iKey, szitem[5], keyindex;
  799. menu_item_getinfo( menu, item, iKey, szitem, charsmax(szitem), _, _, iKey );
  800. keyindex = str_to_num(szitem);
  801.  
  802. ShowMenuPlayerStats( index, keyindex );
  803.  
  804. menu_destroy( menu );
  805. return PLUGIN_HANDLED;
  806. }
  807.  
  808. ShowMenuPlayerStats( index, keyindex )
  809. {
  810. new name[32], tittle[ MENU_TITTLE_LENGHT ], menu
  811.  
  812. if(!adv_vault_get_prepare( vault, keyindex ))
  813. return;
  814.  
  815. adv_vault_get_field( vault, kFields[ C_PNAME ], name, 31 );
  816. formatex( tittle, MENU_TITTLE_LENGHT-1, "%s \wInformatii despre: \y%s \r", MENU_PREFIX, name );
  817.  
  818. menu = menu_create( tittle, "menu_playerstats_hand" );
  819.  
  820. formatex( tittle, MENU_TITTLE_LENGHT-1, "\wRank din clan: \y%s",
  821. MemberRange[ adv_vault_get_field( vault, kFields[ C_MEMBERSHIP]) ]);
  822. menu_additem( menu, tittle, "" );
  823.  
  824. formatex(tittle, MENU_TITTLE_LENGHT-1, "\wKills: \y%d", adv_vault_get_field( vault, kFields[ C_KILLS ]) );
  825. menu_additem( menu , tittle, "" );
  826.  
  827. formatex(tittle, MENU_TITTLE_LENGHT-1, "\wDeaths: \y%d", adv_vault_get_field( vault, kFields[ C_DEATHS ]) );
  828. menu_additem( menu, tittle, "" );
  829.  
  830. formatex(tittle, MENU_TITTLE_LENGHT-1, "\wHeadshot Kills: \y%d", adv_vault_get_field( vault, kFields[ C_HS_KILLS]) );
  831. menu_additem( menu, tittle, "");
  832.  
  833. formatex(tittle, MENU_TITTLE_LENGHT-1, "\wHeadshot Deaths: \y%d", adv_vault_get_field( vault, kFields[ C_HS_DEATHS]) );
  834. menu_additem( menu, tittle, "");
  835.  
  836. formatex(tittle, MENU_TITTLE_LENGHT-1, "\wKnife Kills: \y%d", adv_vault_get_field( vault, kFields[ C_KNIFE_KILLS ]) );
  837. menu_additem( menu, tittle, "");
  838.  
  839. formatex(tittle, MENU_TITTLE_LENGHT-1, "\wKnife Deaths: \y%d", adv_vault_get_field( vault, kFields[ C_KNIFE_DEATHS]) );
  840. menu_additem( menu, tittle, "");
  841.  
  842. formatex(tittle, MENU_TITTLE_LENGHT-1, "\wSuicides: \y%d", adv_vault_get_field( vault, kFields[ C_SUICIDES ]) );
  843. menu_additem( menu, tittle, "");
  844.  
  845. formatex(tittle, MENU_TITTLE_LENGHT-1, "\wRespawns: \y%d", adv_vault_get_field( vault, kFields[ C_SPAWNS ]) );
  846. menu_additem( menu, tittle, "");
  847.  
  848. menu_display( index, menu );
  849. }
  850.  
  851. public menu_playerstats_hand( index, menu, item )
  852. {
  853. if( item == MENU_EXIT )
  854. {
  855. menu_destroy( menu );
  856. return PLUGIN_HANDLED;
  857. }
  858.  
  859. if(item < 6)
  860. menu_display( index, menu, 0);
  861. else
  862. menu_display( index, menu, 1);
  863.  
  864. return PLUGIN_HANDLED;
  865. }
  866.  
  867. ShowKickMembersMenu( index )
  868. {
  869. static menu, keyindex, szkeyindex[5], item[128], tittle[ MENU_TITTLE_LENGHT ];
  870. formatex( tittle, MENU_TITTLE_LENGHT-1, "%s Scoateti Jucatorii Clanului: \d %s", MENU_PREFIX, kClanName[ index ]);
  871. menu = menu_create( tittle, "menu_kick_hand");
  872.  
  873. adv_vault_find_start( vault, kFields[ C_CLANNAME ], kClanName[ index ], FINDFLAGS_EQUAL);
  874.  
  875. while((keyindex = adv_vault_find_next( vault )))
  876. {
  877. adv_vault_get_field( vault, kFields[ C_PNAME ], item, charsmax(item) );
  878. num_to_str( keyindex, szkeyindex, charsmax(szkeyindex) );
  879. menu_additem( menu, item, szkeyindex);
  880. }
  881.  
  882. adv_vault_find_closed( vault );
  883.  
  884. menu_display( index, menu );
  885. }
  886.  
  887. public menu_kick_hand( index, menu, item )
  888. {
  889. if( item == MENU_EXIT)
  890. {
  891. cmd_CLAN( index );
  892. menu_destroy( menu );
  893. return PLUGIN_HANDLED;
  894. }
  895.  
  896. static iKey, szitem[5], keyindex;
  897. menu_item_getinfo( menu, item, iKey, szitem, charsmax(szitem), _, _, iKey );
  898. keyindex = str_to_num(szitem);
  899.  
  900. if(!adv_vault_get_prepare( vault, keyindex ))
  901. return PLUGIN_HANDLED;
  902.  
  903. static level, name[32];
  904. adv_vault_get_field( vault, kFields[ C_PNAME ], name, 31);
  905. level = adv_vault_get_field( vault, kFields[ C_MEMBERSHIP]);
  906.  
  907. if(equal(name, kPlayerName[ index ]) )
  908. {
  909. ColorChat(0,"!gNu te pooi expedia singur");
  910. ShowMenuClan( index );
  911. return PLUGIN_HANDLED;
  912. }
  913.  
  914. if( level == CLAN_OWNER)
  915. {
  916. ColorChat(0,"!gNu puteti expedia fondatorul clanului");
  917. ShowMenuClan( index );
  918. return PLUGIN_HANDLED;
  919. }
  920.  
  921. adv_vault_set_start( vault )
  922. adv_vault_set_field( vault, kFields[ C_CLANNAME ], "^0");
  923. adv_vault_set_field( vault, kFields[ C_MEMBERSHIP ], WITHOUT_CLAN );
  924. adv_vault_set_field( vault, kFields[ C_CLAN_CHAT ], false);
  925. adv_vault_set_end( vault, _, name);
  926.  
  927. Color_Print(index, "Ai expulzat din Clan: %s", name );
  928. ShowMenuClan( index );
  929.  
  930. menu_destroy( menu );
  931. return PLUGIN_HANDLED;
  932. }
  933.  
  934. EditRangesMembers( index )
  935. {
  936. static menu, keyindex, szkeyindex[5], item[128], item2[50], tittle[ MENU_TITTLE_LENGHT ];
  937. formatex( tittle, MENU_TITTLE_LENGHT-1, "%s Clan Ranks Editor: \d %s", MENU_PREFIX, kClanName[ index ]);
  938. menu = menu_create( tittle, "menu_ranges_hand");
  939.  
  940. adv_vault_find_start( vault, kFields[ C_CLANNAME ], kClanName[ index ], FINDFLAGS_EQUAL);
  941.  
  942. while((keyindex = adv_vault_find_next( vault )))
  943. {
  944. adv_vault_get_field( vault, kFields[ C_PNAME], item2, charsmax(item2) );
  945. num_to_str( keyindex, szkeyindex, charsmax(szkeyindex) );
  946. formatex( item, charsmax(item), "%s \d( \y %s \d)", item2, MemberRange[adv_vault_get_field(vault, kFields[C_MEMBERSHIP])] );
  947. menu_additem( menu, item, szkeyindex);
  948. }
  949.  
  950. adv_vault_find_closed( vault );
  951.  
  952. menu_display( index, menu );
  953. }
  954.  
  955. public menu_ranges_hand( index, menu, item )
  956. {
  957. if( item == MENU_EXIT)
  958. {
  959. cmd_CLAN( index );
  960. menu_destroy( menu );
  961. return PLUGIN_HANDLED;
  962. }
  963.  
  964. static iKey, szitem[5], keyindex;
  965. menu_item_getinfo( menu, item, iKey, szitem, charsmax(szitem), _, _, iKey );
  966. keyindex = str_to_num(szitem);
  967.  
  968. if(!adv_vault_get_prepare( vault, keyindex ))
  969. return PLUGIN_HANDLED;
  970.  
  971. static level, name[32];
  972. adv_vault_get_field( vault, kFields[ C_PNAME ], name, 31);
  973. level = adv_vault_get_field( vault, kFields[ C_MEMBERSHIP]);
  974.  
  975. if(equal(name, kPlayerName[ index ]) )
  976. {
  977. ColorChat(0,"!gNu poti schimba rangul, singur");
  978. ShowMenuClan( index );
  979. return PLUGIN_HANDLED;
  980. }
  981.  
  982. if( level == CLAN_OWNER)
  983. {
  984. ColorChat(0,"!gNu puteti schimba Rank la fondatorul clanului");
  985. ShowMenuClan( index );
  986. return PLUGIN_HANDLED;
  987. }
  988.  
  989. adv_vault_set_start( vault )
  990.  
  991. if( level == CLAN_MEMBER )
  992. adv_vault_set_field( vault, kFields[ C_MEMBERSHIP ], CLAN_BOSS );
  993. else if( level == CLAN_BOSS )
  994. adv_vault_set_field( vault, kFields[ C_MEMBERSHIP ], CLAN_MEMBER );
  995.  
  996. adv_vault_set_end( vault, _, name);
  997.  
  998. Color_Print(index, "Ati schimbat rangul la: %s", name );
  999. ShowMenuClan( index );
  1000.  
  1001. menu_destroy( menu );
  1002. return PLUGIN_HANDLED;
  1003. }
  1004.  
  1005. /* ACCOUNT SYSTEM */
  1006.  
  1007. ShowLogMenu( index)
  1008. {
  1009. static menu, tittle[MENU_TITTLE_LENGHT];
  1010. formatex(tittle, MENU_TITTLE_LENGHT-1, "Sistem de logare \dCS:GO Outstanding^n\wBine ai venit \r%s^n\wStare: \r%s^n\wUltima ta visita a fost pe: \r%s",
  1011. kPlayerName[ index ], Status[ kStatus[ index ] ], kDate[ index ] );
  1012.  
  1013. menu = menu_create( tittle, "menu_log_hand" );
  1014.  
  1015. menu_additem(menu, (kStatus[ index ] == REGISTERED ) ? "Conectati-va":"\dConectati-va", "1" );
  1016. menu_additem(menu, (kStatus[ index ] == NOT_REGISTERED ) ? "inregistrare^n":"\dinregistrare^n", "2" );
  1017. menu_additem(menu, (kStatus[ index ] == LOGGUED && !flag_get(kBits[CAN_CHANGE_PW],index)) ? "Schimbati parola":"\dSchimbati parola", "3" );
  1018.  
  1019. menu_setprop( menu, MPROP_EXIT, MEXIT_NEVER );
  1020.  
  1021. menu_display( index, menu );
  1022. }
  1023.  
  1024. public menu_log_hand( index, menu, item )
  1025. {
  1026. switch( item )
  1027. {
  1028. case 0:
  1029. {
  1030. if(kStatus[ index ] == REGISTERED)
  1031. {
  1032. ColorChat(0, "!gIntroduceti parola pentru a intra in cont" );
  1033. client_cmd( index,"messagemode ^"JOIN_PASSWORD^"" );
  1034. }
  1035. else
  1036. {
  1037. ColorChat(0, "!gNu puteti alege aceasta optiune");
  1038. ShowLogMenu( index );
  1039. return PLUGIN_HANDLED;
  1040. }
  1041. }
  1042. case 1:
  1043. {
  1044. if(kStatus[ index ] == NOT_REGISTERED )
  1045. {
  1046. ColorChat(0, "!gIntroduceti o parola pentru a crea un cont" );
  1047. client_cmd( index ,"messagemode ^"JOIN_PASSWORD^"" );
  1048. }
  1049. else
  1050. {
  1051. ColorChat(0, "!gNu puteti alege aceasta optiune" );
  1052. ShowLogMenu( index );
  1053. return PLUGIN_HANDLED;
  1054. }
  1055. }
  1056. case 2:
  1057. {
  1058. if(kStatus[ index ] == LOGGUED && !flag_get(kBits[CAN_CHANGE_PW],index))
  1059. {
  1060. ColorChat(0, "!gIntroduceti noua parola" );
  1061. client_cmd( index,"messagemode ^"JOIN_PASSWORD^"");
  1062. }
  1063. else
  1064. {
  1065. ColorChat(0, "!gNu sunteti conectat sau v-ati schimbat deja parola pe parcursul hartii" );
  1066. ShowLogMenu( index );
  1067. return PLUGIN_HANDLED;
  1068. }
  1069. }
  1070.  
  1071. case MENU_EXIT: { menu_destroy( menu ); return PLUGIN_HANDLED; }
  1072. }
  1073.  
  1074. menu_destroy( menu );
  1075. return PLUGIN_HANDLED;
  1076. }
  1077.  
  1078. ShowMenuConfirmatePw( index )
  1079. {
  1080. static menu, Tit[ MENU_TITTLE_LENGHT ];
  1081. formatex( Tit, MENU_TITTLE_LENGHT-1,"Parola va fii \r%s^n^n\yconfirmi??", kPassword2[ index ]);
  1082.  
  1083. menu = menu_create( Tit, "menu_confirmpw_hand" );
  1084.  
  1085. menu_additem( menu,"\rDa\w, Confirma","1" );
  1086. menu_additem( menu,"\rNu\w,Vreau sa o rescriu","2" );
  1087.  
  1088. menu_setprop( menu, MPROP_EXIT, MEXIT_NEVER );
  1089.  
  1090. menu_display( index, menu );
  1091. }
  1092.  
  1093. public menu_confirmpw_hand( index, menu, item )
  1094. {
  1095. switch(item)
  1096. {
  1097. case 0:
  1098. {
  1099. if( kStatus[ index ] == LOGGUED )
  1100. {
  1101. copy(kPassword[ index ], PASSWORD_LENGHT-1, kPassword2[ index ]);
  1102. DataManagement( index, SAVE );
  1103. ColorChat(0, "!gParola dvs. a fost modificata cu succes");
  1104. flag_set(kBits[CAN_CHANGE_PW], index);
  1105. }
  1106. else
  1107. {
  1108. copy(kPassword[ index ], PASSWORD_LENGHT-1, kPassword2[ index ]);
  1109. ColorChat(0, "!gContul dvs. a fost creat cu succes" );
  1110. DataManagement( index, SAVE );
  1111. ForceJoinTeam( index );
  1112. }
  1113. }
  1114. case 1:
  1115. {
  1116. menu_destroy(menu);
  1117.  
  1118. client_cmd( index, "messagemode ^"JOIN_PASSWORD^"" );
  1119.  
  1120. if( kStatus[ index ] == LOGGUED )
  1121. ColorChat(0, "!gIntroduceti noua Parola" );
  1122. else
  1123. ColorChat(0, "!gIntroduceti Parola pentru contul dvs. nou" );
  1124. }
  1125.  
  1126. case MENU_EXIT: { menu_destroy( menu ); return PLUGIN_HANDLED; }
  1127. }
  1128.  
  1129. menu_destroy( menu );
  1130. return PLUGIN_HANDLED;
  1131. }
  1132.  
  1133. /*============================
  1134. STOCKS
  1135. ============================*/
  1136.  
  1137. stock szRemove_Quotes( const szStr[ ], szOut[ ] )
  1138. {
  1139. if ( !szStr[ 1 ] )
  1140. {
  1141. szOut[ 0 ] = EOS;
  1142. return 0;
  1143. }
  1144.  
  1145. copy( szOut, strlen( szStr )-2, szStr[ 1 ] );
  1146. trim( szOut );
  1147.  
  1148. static iLen, i;
  1149. iLen = strlen( szOut );
  1150.  
  1151. for ( i = 0; i < iLen; ++i)
  1152. {
  1153. if (szOut[ i ] == '"')
  1154. return 0;
  1155. }
  1156.  
  1157. return iLen;
  1158. }
  1159.  
  1160. stock ValidMessage(text[], maxcount)
  1161. {
  1162. static len, i, count;
  1163. len = strlen(text);
  1164. count = 0;
  1165.  
  1166. if (!len) return false;
  1167.  
  1168. for (i = 0; i < len; ++i)
  1169. {
  1170. if (text[i] != ' ')
  1171. {
  1172. ++count;
  1173.  
  1174. if (count >= maxcount)
  1175. return true;
  1176. }
  1177. }
  1178.  
  1179. return false;
  1180. }
  1181.  
  1182. public changeTeamInfo(player, team[])
  1183. {
  1184. message_begin(MSG_ONE, kMsg[MSG_TEAMINFO], _, player);
  1185. write_byte(player);
  1186. write_string(team);
  1187. message_end();
  1188. }
  1189.  
  1190. public writeMessage(player, message[])
  1191. {
  1192. message_begin(MSG_ONE, kMsg[MSG_SAYTEXT], {0, 0, 0}, player);
  1193. write_byte(player);
  1194. write_string(message);
  1195. message_end();
  1196. }
  1197.  
  1198. stock Color_Print(const id, const input[], any:...)
  1199. {
  1200. new count = 1, players[32];
  1201. static msg[191], len;
  1202.  
  1203. len = formatex(msg, charsmax(msg), "%s ", CHAT_PREFIX);
  1204. vformat(msg[len], 190 - len, input, 3);
  1205.  
  1206. replace_all(msg, 190, "!g", "^4");
  1207. replace_all(msg, 190, "!n", "^1");
  1208. replace_all(msg, 190, "!t", "^3");
  1209.  
  1210.  
  1211. if(id)
  1212. players[0] = id;
  1213. else
  1214. get_players(players, count, "ch");
  1215.  
  1216. for (new i = 0; i < count; ++i)
  1217. {
  1218. if(flag_get(kBits[CONNECTED], players[i]))
  1219. {
  1220. message_begin(MSG_ONE_UNRELIABLE, kMsg[MSG_SAYTEXT], _, players[i]);
  1221. write_byte(players[i]);
  1222. write_string(msg);
  1223. message_end();
  1224. }
  1225. }
  1226.  
  1227. }
  1228.  
  1229. public message_VGUImenu( msgid, dest, index )
  1230. {
  1231. if( kStatus[ index ] != LOGGUED )
  1232. ShowLogMenu( index );
  1233.  
  1234. return 1;
  1235. }
  1236.  
  1237. public DataManagement( index, type )
  1238. {
  1239. if( !flag_get(kBits[CONNECTED],index) ) return;
  1240.  
  1241. if(type == LOAD)
  1242. {
  1243. if( !adv_vault_get_prepare( vault, _, kPlayerName[ index ] ) )
  1244. {
  1245. kStatus[ index ] = NOT_REGISTERED;
  1246. return;
  1247. }
  1248. else
  1249. {
  1250. kStatus[ index ] = REGISTERED;
  1251.  
  1252. kClanMembership[ index ] = adv_vault_get_field( vault, kFields[ C_MEMBERSHIP ] );
  1253. adv_vault_get_field( vault, kFields[ C_CLANNAME ], kClanName[ index ], CLANNAME_LENGHT );
  1254. adv_vault_get_field( vault, kFields[ C_DATE ], kDate[ index ], 31);
  1255. adv_vault_get_field( vault, kFields[ C_PASS ], kPassword[ index ], PASSWORD_LENGHT-1);
  1256. adv_vault_get_field( vault, kFields[ C_PNAME ], kPname[ index ], 31 );
  1257. kDataRank[ index ][ KILLS ] = adv_vault_get_field( vault, kFields[ C_KILLS ] );
  1258. kDataRank[ index ][ DEATHS ] = adv_vault_get_field( vault, kFields[ C_DEATHS ] );
  1259. kDataRank[ index ][ HS_KILLS ] = adv_vault_get_field( vault, kFields[ C_HS_KILLS ] );
  1260. kDataRank[ index ][ HS_DEATHS ] = adv_vault_get_field( vault, kFields[C_HS_DEATHS ] );
  1261. kDataRank[ index ][ KNIFE_KILLS ] = adv_vault_get_field( vault, kFields[C_KNIFE_KILLS ] );
  1262. kDataRank[ index ][ KNIFE_DEATHS ] = adv_vault_get_field( vault, kFields[C_KNIFE_DEATHS ] );
  1263. kDataRank[ index ][ SUICIDES ] = adv_vault_get_field( vault, kFields[C_SUICIDES ] );
  1264. kDataRank[ index ][ SPAWNS ] = adv_vault_get_field( vault, kFields[C_SPAWNS ] );
  1265. kActivatedClanChat[ index ] = adv_vault_get_field( vault, kFields[ C_CLAN_CHAT ] );
  1266. }
  1267. }
  1268. else
  1269. {
  1270. copy(kPname[ index ], 31, kPlayerName[ index ]);
  1271. adv_vault_set_start( vault );
  1272.  
  1273. adv_vault_set_field( vault, kFields[ C_MEMBERSHIP ], kClanMembership[ index ] );
  1274. adv_vault_set_field( vault, kFields[ C_CLANNAME ], kClanName[ index ] );
  1275. adv_vault_set_field( vault, kFields[ C_DATE ], kDate[ index ]);
  1276. adv_vault_set_field( vault, kFields[ C_PASS ], kPassword[ index ]);
  1277. adv_vault_set_field( vault, kFields[ C_PNAME ], kPname[ index ]);
  1278. adv_vault_set_field( vault, kFields[ C_KILLS ], kDataRank[ index ][ KILLS ]);
  1279. adv_vault_set_field( vault, kFields[ C_DEATHS ], kDataRank[ index ][DEATHS]);
  1280. adv_vault_set_field( vault, kFields[ C_HS_KILLS ], kDataRank[ index ][ HS_KILLS ]);
  1281. adv_vault_set_field( vault, kFields[ C_HS_DEATHS ], kDataRank[ index ][ HS_DEATHS ]);
  1282. adv_vault_set_field( vault, kFields[ C_KNIFE_KILLS ], kDataRank[ index ][ KNIFE_KILLS ]);
  1283. adv_vault_set_field( vault, kFields[ C_KNIFE_DEATHS], kDataRank[ index ][ KNIFE_DEATHS ]);
  1284. adv_vault_set_field( vault, kFields[ C_SUICIDES], kDataRank[ index ][ SUICIDES ]);
  1285. adv_vault_set_field( vault, kFields[ C_SPAWNS ], kDataRank[ index ][ SPAWNS ]);
  1286. adv_vault_set_field( vault, kFields[ C_CLAN_CHAT ], kActivatedClanChat[ index ] );
  1287.  
  1288. adv_vault_set_end( vault, 0, kPlayerName[ index ] );
  1289. }
  1290. }
  1291.  
  1292. public fm_ClientInfoChanged( index, buffer )
  1293. {
  1294. if( flag_get(kBits[CONNECTED],index) )
  1295. {
  1296. if(kStatus[ index ] == LOGGUED)
  1297. {
  1298. static OldName[33];
  1299.  
  1300. engfunc(EngFunc_InfoKeyValue, buffer, "name", OldName, sizeof OldName - 1);
  1301.  
  1302. if(equal(OldName, kPlayerName[ index ]))
  1303. return FMRES_IGNORED;
  1304.  
  1305. set_user_info( index, "name", kPlayerName[ index ]);
  1306. client_cmd( index, "setinfo ^"name^" ^"%s^"", kPlayerName[ index ]);
  1307. }
  1308. }
  1309.  
  1310. return FMRES_IGNORED;
  1311. }
  1312.  
  1313. public ForceJoinTeam( index )
  1314. {
  1315. static teammsg_block, teammsg_block_vgui, restore, vgui;
  1316.  
  1317. restore = get_pdata_int( index, 510 );
  1318. vgui = restore & (1<<0);
  1319.  
  1320. if ( vgui ) set_pdata_int( index, 510, restore & ~(1<<0) );
  1321.  
  1322. teammsg_block = get_msg_block( kMsg[MSG_SHOWMENU] );
  1323. teammsg_block_vgui = get_msg_block( kMsg[MSG_VGUI] );
  1324.  
  1325. set_msg_block( kMsg[MSG_SHOWMENU], BLOCK_ONCE );
  1326. set_msg_block( kMsg[MSG_VGUI], BLOCK_ONCE );
  1327.  
  1328. engclient_cmd( index, "jointeam", "5" );
  1329. engclient_cmd( index, "joinclass", "5" );
  1330.  
  1331. set_msg_block( kMsg[MSG_SHOWMENU], teammsg_block);
  1332. set_msg_block( kMsg[MSG_VGUI], teammsg_block_vgui);
  1333.  
  1334. if (vgui) set_pdata_int( index, 510, restore );
  1335.  
  1336. kStatus[ index ] = LOGGUED;
  1337.  
  1338. set_task( 1.0, "ShowHUD", index + TASK_HUD, _, _, "b" );
  1339. }
  1340.  
  1341. public ShowHUD( taskid )
  1342. {
  1343. static index; index = ID_HUD;
  1344.  
  1345. if ( !is_user_alive(index) )
  1346. {
  1347. index = pev( index, pev_iuser2 );
  1348.  
  1349. if ( !flag_get(kBits[ALIVE],index)) return;
  1350. }
  1351.  
  1352.  
  1353. if( index != ID_HUD)
  1354. {
  1355. set_hudmessage(255, 200, 220, 0.60, 0.50, 0, 6.0, 1.1, 0.0, 0.0, -1);
  1356. ShowSyncHudMsg(index, hudSync, "%s^nClan: %s",
  1357. kPlayerName[ index ], kClanName[index][0]?kClanName[index]:"Fara Clan", kRange[index]);
  1358. }
  1359. else
  1360. {
  1361. set_hudmessage(0, 255, 0, 0.0, 0.0, 0, 6.0, 1.1, 0.0, 0.0, -1);
  1362. ShowSyncHudMsg(index, hudSync, "^nClan: %s^nKilluri: %d / %d",
  1363. kRange[index], kClanName[ index ][0]?kClanName[ index ]:"Fara Clan", kDataRank[ index ][ KILLS ]);
  1364. }
  1365. }
  1366.  
  1367. public get_membersnum( index )
  1368. {
  1369. if( !kClanName[ index ][ 0 ]) return 0;
  1370.  
  1371. static num, keyindex, keyname[32]; num = 0;
  1372.  
  1373. adv_vault_find_start( vault, kFields[ C_CLANNAME ], kClanName[ index ], FINDFLAGS_EQUAL );
  1374.  
  1375. while((keyindex = adv_vault_find_next( vault )))
  1376. {
  1377. adv_vault_get_keyname( vault, keyindex, keyname, 31 );
  1378. ++num;
  1379. }
  1380.  
  1381. adv_vault_find_closed( vault );
  1382.  
  1383. if(!num) return 0;
  1384.  
  1385. return num;
  1386. }
  1387.  
  1388. CreateClan( index )
  1389. {
  1390. if(!flag_get(kBits[CONNECTED],index) ) return;
  1391.  
  1392. kClanMembership[ index ] = CLAN_OWNER;
  1393.  
  1394. DataManagement( index, SAVE );
  1395.  
  1396. cmd_CLAN( index );
  1397. }
  1398. stock ColorChat(const id,const input[], any:...) {
  1399. new iNum = 1, iPlayers[32];
  1400. static szMessage[191];
  1401. vformat(szMessage, charsmax(szMessage),input, 3);
  1402.  
  1403. replace_all(szMessage, charsmax(szMessage), "!g", "^4");
  1404. replace_all(szMessage, charsmax(szMessage), "!n", "^1");
  1405. replace_all(szMessage, charsmax(szMessage), "!t", "^3");
  1406.  
  1407. if(id) iPlayers[0] = id;
  1408. else get_players(iPlayers, iNum, "ch");
  1409.  
  1410. for(new i = 0; i < iNum; i++)
  1411. {
  1412. if(is_user_connected(iPlayers[i]))
  1413. {
  1414. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayers[i]);
  1415. write_byte(iPlayers[i]);
  1416. write_string(szMessage);
  1417. message_end();
  1418. }
  1419. }
  1420. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement