MegastoRM

Say Klase v2

Jul 27th, 2016
365
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.05 KB | None | 0 0
  1. #include <amxmodx>
  2.  
  3. new Trie:g_tClassName, Trie:g_tClassAccessFlag
  4. new g_szPlayerClassName[33][32], bool:g_bCustomClass[33]
  5.  
  6. new const gc_szFilePath[] = "addons/amxmodx/configs/say_classes.ini"
  7.  
  8. new const gc_szCharReplacements[][][] = {
  9.     { "!n", "^x01" },
  10.     { "!t", "^x03" },
  11.     { "!g", "^x04" }
  12. }
  13.  
  14. public plugin_init() {
  15.     register_plugin("Say Classes", "2.0", "Autor")
  16.     register_message(get_user_msgid("SayText"), "h_msgSayText")
  17. }
  18.  
  19. public h_msgSayText(MsgID, MsgDest, MsgEnt) {
  20.     new index = get_msg_arg_int(1)
  21.     if(is_user_connected(index) && g_bCustomClass[index]) {
  22.         new szTemp[192], szTemp2[192]
  23.         get_msg_arg_string(2, szTemp, sizeof(szTemp) - 1)
  24.         if(equal(szTemp, "#Cstrike_Chat_All")) {
  25.             add(szTemp2, sizeof(szTemp2) - 1, g_szPlayerClassName[index])
  26.             add(szTemp2, sizeof(szTemp2) - 1, " ^x03 %s1^x01 :  %s2");
  27.             set_msg_arg_string(2, szTemp2)
  28.         }
  29.     }
  30.     return PLUGIN_CONTINUE
  31. }
  32.  
  33. public plugin_cfg() {
  34.     g_tClassName = TrieCreate()
  35.     g_tClassAccessFlag = TrieCreate()
  36.     LoadClasses()
  37. }
  38.  
  39. public LoadClasses() {
  40.     if(!file_exists(gc_szFilePath))
  41.     {
  42.         write_file(gc_szFilePath, "; Primer dodavanja klase")
  43.         write_file(gc_szFilePath, "; ^"STEAM ID^" ^"Klasa^" ^"flag^"")
  44.         write_file(gc_szFilePath, "; Maksimalna duzina linije moze biti 64 znaka (24 za steam id, 32 za klasu i 1 za flag (+ ostali znakovi))")
  45.         write_file(gc_szFilePath, "; Boje koje se mogu koristiti: !t - boja tima, !g - zelena, !n - default (narandzasta)")
  46.         write_file(gc_szFilePath, "; ^"STEAM_0:1:12345^" ^"!g[!tClass !nname!g]^" ^"a^"")
  47.     }
  48.     new szContent[64], szSteamID[24], szClassName[32], cFlag[2], iFlag
  49.     new pFile = fopen(gc_szFilePath, "r")
  50.     while(!feof(pFile)) {
  51.         fgets(pFile, szContent, sizeof(szContent) - 1)
  52.         if(szContent[0] == ';' || strlen(szContent) < 34) continue
  53.  
  54.         if(parse(szContent, szSteamID, sizeof(szSteamID) - 1, szClassName, sizeof(szClassName) - 1, cFlag, sizeof(cFlag) - 1) > 1) {
  55.             CleanUpColors(szClassName, sizeof(szClassName) - 1)
  56.             TrieSetString(g_tClassName, szSteamID, szClassName)
  57.  
  58.             if(strlen(cFlag) > 0) {
  59.                 iFlag = read_flags(cFlag)
  60.                 TrieSetCell(g_tClassAccessFlag, szSteamID, iFlag)
  61.             }
  62.         } else {
  63.             log_amx("Invalid data supplied to parse function: [%s]", szContent)
  64.         }
  65.     }
  66.     fclose(pFile)
  67. }
  68.  
  69. public client_putinserver(id) {
  70.     new szSteamID[24], FLAG
  71.     g_bCustomClass[id] = false
  72.     g_szPlayerClassName[id][0] = '^0'
  73.     get_user_authid(id, szSteamID, sizeof(szSteamID) - 1)
  74.     if(TrieGetString(g_tClassName, szSteamID, g_szPlayerClassName[id], sizeof(g_szPlayerClassName[]) - 1)) {
  75.         if(TrieGetCell(g_tClassAccessFlag, szSteamID, FLAG)) {
  76.             if(get_user_flags(id) & FLAG) {
  77.                 g_bCustomClass[id] = true
  78.             }
  79.             else {
  80.                 g_szPlayerClassName[id][0] = '^0'
  81.             }
  82.         } else {
  83.             g_bCustomClass[id] = true
  84.         }
  85.     }
  86. }
  87.  
  88. public plugin_end() {
  89.     TrieDestroy(g_tClassName)
  90.     TrieDestroy(g_tClassAccessFlag)
  91. }
  92.  
  93. stock CleanUpColors(in[], iLen) {
  94.     for(new i = 0; i < sizeof(gc_szCharReplacements); i++) {
  95.         replace_all(in, iLen, gc_szCharReplacements[i][0], gc_szCharReplacements[i][1])
  96.     }
  97.     format(in, iLen, "^x01%s^x01", in)
  98. }
Advertisement
Add Comment
Please, Sign In to add comment