CS-bg.info - форумът на CS-bg :: Counter-Strike фен сайт

Become VIP Plus (+API)

Тук е мястото да представите плъгин(и), написани от вас!

Модератори: Екип C-Strike, Помощник-модератори

Re: Become VIP Plus (+API)

Мнениеот OciXCrom » 22 Юни 2016, 16:24

По подразбиране се запазват по ник, не по Стийм. Обаче, като се замисля, май трябва да направя лека промяна, тъй като играч много лесно може да изтрие точките на друг играч.
OciXCrom

Аватар
OciXCrom™ Official Profile
OciXCrom™ Official Profile
 
Регистриран на: 21 Мар 2013, 14:21
Местоположение: jb.iplay.bg:27015
Skype: doctor.crom1234
Профил в Steam
[ Профил в сайта ]

Re: Become VIP Plus (+API)

Мнениеот feruchio » 22 Юни 2016, 16:45

Може и примерно да добавиш rcon admin да може да дава убийства на друг играч, ако му се изтрият примерно.
feruchio

Аватар
Потребител
Потребител
 
Регистриран на: 14 Юни 2011, 20:02
Местоположение: 93.123.18.81:27017
Профил в Steam
[ Профил в сайта ]

Re: Become VIP Plus (+API)

Мнениеот OciXCrom » 22 Юни 2016, 19:14

Ъпдейтнах плъгина. Вече не би трябвало да се получава така.
OciXCrom

Аватар
OciXCrom™ Official Profile
OciXCrom™ Official Profile
 
Регистриран на: 21 Мар 2013, 14:21
Местоположение: jb.iplay.bg:27015
Skype: doctor.crom1234
Профил в Steam
[ Профил в сайта ]

Re: Become VIP Plus (+API)

Мнениеот feruchio » 30 Юни 2016, 15:52

Плъгинът и с този ъпдейт не работи добре при запазването на убийствата, поне в моят сървър, рестартират се даже по-често от преди. За това и преминах да ги взима от ранковата система и за сега съм доволен, но както бях писал преди за админ скин плъгина, който не работеше при auto VIP и ти ми го редактира за да си баца и сега по същата причина явно не бачка AdminPrefixes_WHITE_CHAT.amxx за auto VIP, та въпроса ми е възможно ли е да се направи нещо по въпроса?
Код: Избери целия код
/*  AMX Mod X script
*                               ______                       __                    __          __                              ________
*                     / ____ \                      \ \                  / /         /  |                            |______  |
*                    / /    \ \                      \ \                / /         /   |                        __         | |
*                   | /      \ |                      \ \              / /         / /| |                       |__|        | |
*                   | |      | |    ______     _    __ \ \            / /  _      / / | |       ______                      | |
*        _   _____   _____   | |      | |   / ____ \   | |  / /  \ \          / /  |_|    / /  | |      / ____ \                     | |
*   | | / __  | / __  |  | |      | |  | /    \_\  | | / /    \ \        / /    _    / /   | |     /_/    \ \                    | |
*   | |/ /  | |/ /  | |  | |      | |  | \_____    | |/ /      \ \      / /    | |  / /____| |__     ______| |                   | |
*   | | /   | | /   | |  | |      | |   \_____ \   | | /        \ \    / /     | | /_______  |__|   / _____  |                   | |
*   | |/    | |/    | |  | |      | |         \ |  | |/\         \ \  / /      | |         | |     / /     | |        __         | |
*    | |     | |     | |  | \      / |  __     | |  | |\ \         \ \/ /       | |         | |    | |     /| |       |  |        | |
*   | |     | |     | |   \ \____/ /   \ \____/ |  | | \ \         \  /        | |         | |     \ \___/ /\ \      / /    _____| |
*   |_|     |_|     |_|    \______/     \______/   |_|  \_\         \/         |_|         |_|      \_____/  \_\    /_/    |_______|
*
*
*
*** Copyright 2011 - 2013, m0skVi4a ;]
*** Plugin created in Rousse, Bulgaria
*
*
*** Plugin thread 1:
*   https://forums.alliedmods.net/showthread.php?t=183491
*
*** Plugin thread 2:
*   http://amxmodxbg.org/forum/viewtopic.php?t=38972
*
*
*** Description:
*
*   With this plugin you can set prefixes to Admins with special flags. Also Admins can put custom prefixes to them or to other players if they want, but only if they have the required flag.
*
*
*** Commands:
*
*   ap_reload_prefixes
*   Reloads Prefixes' file from console without restarting the server.
*
*   ap_reload_badprefixes
*   Reloads Bad Prefixes' file from console without restarting the server.
*
*   ap_put_player "name" "prefix"
*   Puts prefix to the name you type if you have the special flag. Or if there is no prefix typed, removes the prefix which the player has.
*
*
*** CVARS:
*
*   "ap_bad_prefixes"    -    Is the Bad Prefixes option on(1) or off(0).   Default: 1
*   "ap_listen"       -    Is the Admin Listen option on(1) or off(0).   Default: 1
*   "ap_listen_flag"    -   The flag, needed for Listen option.   Default: a
*   "ap_custom"       -   Is the Custom Prefix option for each Admin is on(1) or off(0).   Default: 1
*   "ap_custom_flag"     -   The flag, needed for setting custom prefix.   Default: b
*   "ap_say_characters"    -   Is the Start Say Characters option on(1) or off(0).   Default: 1
*   "ap_prefix_characters"    -   Is the Checker for Characters in Custom Prefixes' Options on(1) or off(0).   Default: 1
*
*   All CVARS are without quotes!
*
*
*** Credits:
*
*    m0skVi4a ;]       -   for the idea, making and testing the plugin
*   SpeeDeeR       -   for little help with the plugin
*   Ant1Lamer       -   for testing the plugin
*   Vasilii-Zaicev   -   for testing the plugin
*
*
*** Changelog:
*
*   April 22, 2012   -  V1.0:
*      -  First Release
*
*   May 19, 2012   -  V2.0:
*      -  Full optimization
*      -  Added Bad Prefixes' file
*      -  Added Multi-Lingual file
*      -  Added IP and Name support in ap_prefixes.ini
*      -  Added Forbidden Say characters
*      -  New CVARS for setting the flags for each of the options
*   
*   May 29, 2012   -  V2.1:
*      -  Fixed bug with some say or say_team commands are not executed
*
*   January 17, 2013   -  V3.0:
*      -  Full optimization
*      -  Fixed bug when typing spaces and in tha chat is showing an empty message
*      -  SteamID support
*      -  Removed nvault
*      -  Removed ap_put_player command
*      -  ap_put_player command is combined with ap_put command
*      -  Removed some CVARs
*
*   August 18, 2013   -  V4.0:
*      -  Small code changes and little bug fixes
*      -  Added Prefux Toggle command
*      -  Fixed bug with the supporting of the plugin on AMXX 1.8.2
*      -  AMXX 1.8.2 Supprot!
*      -  SQL Version!
*
*
*** Contact me on:
*   E-MAIL: pvldimitrov@gmail.com
*   SKYPE: pa7ohin
*/


#include <amxmodx>
#include <amxmisc>
#include <celltrie>
#include <cstrike>

#define VERSION "4.0 WHITE CHAT"
#define FLAG_LOAD ADMIN_CFG
#define MAX_PREFIXES 33
#define MAX_BAD_PREFIXES 100

new g_bad_prefix, g_listen, g_listen_flag, g_custom, g_custom_flag, g_say_characters, g_prefix_characters;
new pre_ips_count = 0, pre_names_count = 0, pre_steamids_count, pre_flags_count = 0, bad_prefix_count = 0, i, temp_cvar[2];
new configs_dir[64], file_prefixes[128], file_bad_prefixes[128], text[128], prefix[32], type[2], key[32], length, line = 0, error[256];
new g_teaminfo, g_saytxt, g_maxplayers, CsTeams:g_team;
new g_typed[192], g_message[192], g_name[32];
new Trie:pre_ips_collect, Trie:pre_names_collect, Trie:pre_steamids_collect, Trie:pre_flags_collect, Trie:bad_prefixes_collect, Trie:client_prefix;
new str_id[16], temp_key[35], temp_prefix[32], temp_value;
new bool:g_toggle[33];
new bool:is_admin;

new const say_team_info[2][CsTeams][] =
{
   {"*SPEC* ", "*DEAD* ", "*DEAD* ", "*SPEC* "},
   {"", "", "", ""}
}

new const sayteam_team_info[2][CsTeams][] =
{
   {"(Spectator) ", "*DEAD*(Terrorist) ", "*DEAD*(Counter-Terrorist) ", "(Spectator) "},
   {"(Spectator) ", "(Terrorist) ", "(Counter-Terrorist) ", "(Spectator) "}
}

new const forbidden_say_symbols[] = {
   "/",
   "!",
   "%",
   "$"
}

new const forbidden_prefixes_symbols[] = {
   "/",
   "\",
   "%",
   "$",
   ".",
   ":",
   "?",
   "!",
   "@",
   "#",
   "%"
}

new const separator[] = "************************************************"
new const in_prefix[] = "[AdminPrefixes]"

new const g_team_names[CsTeams][] = {
   "",
   "TERRORIST",
   "CT",
   "SPECTATOR"
}

public plugin_init()
{
   register_plugin("Admin Prefixes", VERSION, "m0skVi4a ;]")

   g_bad_prefix = register_cvar("ap_bad_prefixes", "1")
   g_listen = register_cvar("ap_listen", "1")
   g_listen_flag = register_cvar("ap_listen_flag", "a")
   g_custom = register_cvar("ap_custom_current", "1")
   g_custom_flag = register_cvar("ap_custom_current_flag", "b")
   g_say_characters = register_cvar("ap_say_characters", "1")
   g_prefix_characters = register_cvar("ap_prefix_characters", "1")

   g_teaminfo = get_user_msgid("TeamInfo")
   g_saytxt = get_user_msgid ("SayText")
   g_maxplayers = get_maxplayers()

   register_concmd("ap_reload_prefixes", "LoadPrefixes")
   register_concmd("ap_reload_badprefixes", "LoadBadPrefixes")
   register_concmd("ap_put", "SetPlayerPrefix")
   register_clcmd("say", "HookSay")
   register_clcmd("say_team", "HookSayTeam")

   pre_ips_collect = TrieCreate()
   pre_names_collect = TrieCreate()
   pre_steamids_collect = TrieCreate()
   pre_flags_collect = TrieCreate()
   bad_prefixes_collect = TrieCreate()
   client_prefix = TrieCreate()

   register_dictionary("admin_prefixes.txt")

   get_configsdir(configs_dir, charsmax(configs_dir))
   formatex(file_prefixes, charsmax(file_prefixes), "%s/ap_prefixes.ini", configs_dir)
   formatex(file_bad_prefixes, charsmax(file_bad_prefixes), "%s/ap_bad_prefixes.ini", configs_dir)

   LoadPrefixes(0)
   LoadBadPrefixes(0)
}
   
public LoadPrefixes(id)
{
   if(!(get_user_flags(id) & FLAG_LOAD))
   {
      console_print(id, "%L", LANG_SERVER, "PREFIX_PERMISSION", in_prefix)
      return PLUGIN_HANDLED
   }

   TrieClear(pre_ips_collect)
   TrieClear(pre_names_collect)
   TrieClear(pre_steamids_collect)
   TrieClear(pre_flags_collect)

   line = 0, length = 0, pre_flags_count = 0, pre_ips_count = 0, pre_names_count = 0;

   if(!file_exists(file_prefixes))
   {
      formatex(error, charsmax(error), "%L", LANG_SERVER, "PREFIX_NOT_FOUND", in_prefix, file_prefixes)
      set_fail_state(error)
   }

   server_print(separator)

   while(read_file(file_prefixes, line++ , text, charsmax(text), length) && (pre_ips_count + pre_names_count + pre_steamids_count + pre_flags_count) <= MAX_PREFIXES)
   {
      if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
         continue

      parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
      trim(prefix)

      if(!type[0] || !prefix[0] || !key[0])
         continue

      replace_all(prefix, charsmax(prefix), "!g", "^x04")
      replace_all(prefix, charsmax(prefix), "!t", "^x03")
      replace_all(prefix, charsmax(prefix), "!n", "^x01")

      switch(type[0])
      {
         case 'f':
         {
            pre_flags_count++
            TrieSetString(pre_flags_collect, key, prefix)
            server_print("%L", LANG_SERVER, "PREFIX_LOAD_FLAG", in_prefix, prefix, key[0])
         }
         case 'i':
         {
            pre_ips_count++
            TrieSetString(pre_ips_collect, key, prefix)
            server_print("%L", LANG_SERVER, "PREFIX_LOAD_IP", in_prefix, prefix, key)
         }
         case 's':
         {
            pre_steamids_count++
            TrieSetString(pre_steamids_collect, key, prefix)
            server_print("%L", LANG_SERVER, "PREFIX_LOAD_STEAMID", in_prefix, prefix, key)
         }
         case 'n':
         {
            pre_names_count++
            TrieSetString(pre_names_collect, key, prefix)
            server_print("%L", LANG_SERVER, "PREFIX_LOAD_NAME", in_prefix, prefix, key)
         }
         default:
         {
            continue
         }
      }
   }

   if(pre_flags_count <= 0 && pre_ips_count <= 0 && pre_steamids_count <= 0 && pre_names_count <= 0)
   {
      server_print("%L", LANG_SERVER, "PREFIX_NO", in_prefix)
   }

   get_user_name(id, g_name, charsmax(g_name))
   server_print("%L", LANG_SERVER, "PREFIX_LOADED_BY", in_prefix, g_name)
   console_print(id, "%L", LANG_SERVER, "PREFIX_LOADED", in_prefix)

   server_print(separator)

   for(new i = 1; i <= g_maxplayers; i++)
   {
      num_to_str(i, str_id, charsmax(str_id))
      TrieDeleteKey(client_prefix, str_id)
      PutPrefix(i)
   }
   
   return PLUGIN_HANDLED
}

public LoadBadPrefixes(id)
{
   if(!get_pcvar_num(g_bad_prefix))
   {
      console_print(id, "%L", LANG_SERVER, "BADP_OFF", in_prefix)
      return PLUGIN_HANDLED
   }

   if(!(get_user_flags(id) & FLAG_LOAD))
   {
      console_print(id, "%L", LANG_SERVER, "BADP_PERMISSION", in_prefix)
      return PLUGIN_HANDLED
   }

   TrieClear(bad_prefixes_collect)

   line = 0, length = 0, bad_prefix_count = 0;

   if(!file_exists(file_bad_prefixes))
   {
      console_print(id, "%L", LANG_SERVER, "BADP_NOT_FOUND", in_prefix, file_bad_prefixes)
      return PLUGIN_HANDLED      
   }

   server_print(separator)

   while(read_file(file_bad_prefixes, line++ , text, charsmax(text), length) && bad_prefix_count <= MAX_BAD_PREFIXES)
   {
      if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
         continue

      parse(text, prefix, charsmax(prefix))

      if(!prefix[0])
         continue

      bad_prefix_count++
      TrieSetCell(bad_prefixes_collect, prefix, 1)
      server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix, prefix)
   }

   if(bad_prefix_count <= 0)
   {
      server_print("%L", LANG_SERVER, "BADP_NO", in_prefix)
   }

   get_user_name(id, g_name, charsmax(g_name))
   server_print("%L", LANG_SERVER, "BADP_LOADED_BY", in_prefix, g_name)
   console_print(id, "%L", LANG_SERVER, "BADP_LOADED", in_prefix)

   server_print(separator)

   return PLUGIN_HANDLED
}

public client_putinserver(id)
{
   g_toggle[id] = true
   num_to_str(id, str_id, charsmax(str_id))
   TrieSetString(client_prefix, str_id, "")
   PutPrefix(id)
}

public HookSay(id)
{
   read_args(g_typed, charsmax(g_typed))
   remove_quotes(g_typed)

   trim(g_typed)

   if(equal(g_typed, "") || !is_user_connected(id))
      return PLUGIN_HANDLED_MAIN

   if(equal(g_typed, "/prefix"))
   {
      if(g_toggle[id])
      {
         g_toggle[id] = false
         client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_OFF", in_prefix)
      }
      else
      {
         g_toggle[id] = true
         client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_ON", in_prefix)
      }

      return PLUGIN_HANDLED_MAIN
   }

   num_to_str(id, str_id, charsmax(str_id))

   if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
   {
      if(check_say_characters(g_typed))
         return PLUGIN_HANDLED_MAIN
   }

   get_user_name(id, g_name, charsmax(g_name))

   g_team = cs_get_user_team(id)

   if(temp_prefix[0] && g_toggle[id])
   {
      formatex(g_message, charsmax(g_message), "^1%s^3%s^4 %s :^3 %s", say_team_info[is_user_alive(id)][g_team], temp_prefix, g_name, g_typed)
      is_admin = true
   }
   else
   {
      formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", say_team_info[is_user_alive(id)][g_team], g_name, g_typed)
      is_admin = false
   }

   get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))

   for(new i = 1; i <= g_maxplayers; i++)
   {
      if(!is_user_connected(i))
         continue
         
      if(is_admin)
      {
         g_team = cs_get_user_team(i)
         change_team_info(i, g_team_names[CS_TEAM_SPECTATOR])
         send_message(g_message, i, i)
            change_team_info(i, g_team_names[g_team])
      }
      else
      {
         send_message(g_message, id, i)
      }
   }

   return PLUGIN_HANDLED_MAIN
}

public HookSayTeam(id)
{
   read_args(g_typed, charsmax(g_typed))
   remove_quotes(g_typed)

   trim(g_typed)

   if(equal(g_typed, "") || !is_user_connected(id))
      return PLUGIN_HANDLED_MAIN

   if(equal(g_typed, "/prefix"))
   {
      if(g_toggle[id])
      {
         g_toggle[id] = false
         client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_OFF", in_prefix)
      }
      else
      {
         g_toggle[id] = true
         client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_ON", in_prefix)
      }

      return PLUGIN_HANDLED_MAIN
   }

   num_to_str(id, str_id, charsmax(str_id))

   if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
   {
      if(check_say_characters(g_typed))
         return PLUGIN_HANDLED_MAIN
   }

   get_user_name(id, g_name, charsmax(g_name))

   g_team = cs_get_user_team(id)

   if(temp_prefix[0] &&  g_toggle[id])
   {
      formatex(g_message, charsmax(g_message), "^1%s^3%s^4 %s :^3 %s", sayteam_team_info[is_user_alive(id)][g_team], temp_prefix, g_name, g_typed)
      is_admin = true
   }
   else
   {
      formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", sayteam_team_info[is_user_alive(id)][g_team], g_name, g_typed)
      is_admin = false
   }

   get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))

   for(new i = 1; i <= g_maxplayers; i++)
   {
      if(!is_user_connected(i))
         continue

      if(get_user_team(id) == get_user_team(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
      {
         if(is_admin)
         {
            g_team = cs_get_user_team(i)
            change_team_info(i, g_team_names[CS_TEAM_SPECTATOR])
            send_message(g_message, i, i)
            change_team_info(i, g_team_names[g_team])
         }
         else
         {
            send_message(g_message, id, i)
         }
      }
   }

   return PLUGIN_HANDLED_MAIN
}

public SetPlayerPrefix(id)
{
   if(!get_pcvar_num(g_custom) || !get_pcvar_string(g_custom_flag, temp_cvar, charsmax(temp_cvar)))
   {
      console_print(id, "%L", LANG_SERVER, "CUSTOM_OFF", in_prefix)
      return PLUGIN_HANDLED
   }

   if(!(get_user_flags(id) & read_flags(temp_cvar)))
   {
      console_print(id, "%L", LANG_SERVER, "CUSTOM_PERMISSION", in_prefix)
      return PLUGIN_HANDLED
   }

   new input[128], target;
   new arg_type[2], arg_prefix[32], arg_key[35];
   new temp_str[16];

   read_args(input, charsmax(input))
   remove_quotes(input)
   parse(input, arg_type, charsmax(arg_type), arg_key, charsmax(arg_key), arg_prefix, charsmax(arg_prefix))
   trim(arg_prefix)

   if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(arg_prefix) && !equali(arg_prefix, ""))
   {
      console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, arg_prefix)
      return PLUGIN_HANDLED
   }

   if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(arg_prefix))
   {
      console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, arg_prefix, forbidden_prefixes_symbols[i])
      return PLUGIN_HANDLED
   }

   switch(arg_type[0])
   {
      case 'f':
      {
         target = 0
         temp_str = "Flag"
      }
      case 'i':
      {
         target = find_player("d", arg_key)
         temp_str = "IP"
      }
      case 's':
      {
         target = find_player("c", arg_key)
         temp_str = "SteamID"
      }
      case 'n':
      {
         target = find_player("a", arg_key)
         temp_str = "Name"
      }
      default:
      {
         console_print(id, "%L", LANG_SERVER, "CUSTOM_INVALID", in_prefix, arg_type)
         return PLUGIN_HANDLED
      }
   }

   get_user_name(id, g_name, charsmax(g_name))

   if(equali(arg_prefix, ""))
   {
      find_and_delete(arg_type, arg_key)

      if(target)
      {
         PutPrefix(target)
      }
      
      console_print(id, "%L", LANG_SERVER, "CUSTOM_REMOVE", in_prefix, temp_str, arg_key)
      server_print("%L", LANG_SERVER, "CUSTOM_REMOVE_INFO", in_prefix, g_name, temp_str, arg_key)
      return PLUGIN_HANDLED
   }

   find_and_delete(arg_type, arg_key)

   formatex(text, charsmax(text), "^"%s^" ^"%s^" ^"%s^"", arg_type, arg_key, arg_prefix)
   write_file(file_prefixes, text, -1)

   switch(arg_type[0])
   {
      case 'f':
      {
         TrieSetString(pre_flags_collect, arg_key, arg_prefix)
      }
      case 'i':
      {
         TrieSetString(pre_ips_collect, arg_key, arg_prefix)
      }
      case 's':
      {
         TrieSetString(pre_steamids_collect, arg_key, arg_prefix)
      }
      case 'n':
      {
         TrieSetString(pre_names_collect, arg_key, arg_prefix)
      }
   }

   if(target)
   {
      num_to_str(target, str_id, charsmax(str_id))
      TrieSetString(client_prefix, str_id, arg_prefix)
   }

   console_print(id, "%L", LANG_SERVER, "CUSTOM_CHANGE", in_prefix, temp_str, arg_key, arg_prefix)
   server_print("%L", LANG_SERVER, "CUSTOM_CHANGE_INFO", in_prefix, g_name, temp_str, arg_key, arg_prefix)

   return PLUGIN_HANDLED
}


public client_infochanged(id)
{
   if(!is_user_connected(id))
      return PLUGIN_CONTINUE

   new g_old_name[32];

   get_user_info(id, "name", g_name, charsmax(g_name))
   get_user_name(id, g_old_name, charsmax(g_old_name))

   if(!equal(g_name, g_old_name))
   {
      num_to_str(id, str_id, charsmax(str_id))
      TrieSetString(client_prefix, str_id, "")
      set_task(0.5, "PutPrefix", id)
      return PLUGIN_HANDLED
   }

   return PLUGIN_CONTINUE
}

public PutPrefix(id)
{
   num_to_str(id, str_id, charsmax(str_id))
   TrieSetString(client_prefix, str_id, "")

   new sflags[32], temp_flag[2];
   get_flags(get_user_flags(id), sflags, charsmax(sflags))

   for(new i = 0; i <= charsmax(sflags); i++)
   {
      formatex(temp_flag, charsmax(temp_flag), "%c", sflags[i])

      if(TrieGetString(pre_flags_collect, temp_flag, temp_prefix, charsmax(temp_prefix)))
      {
         TrieSetString(client_prefix, str_id, temp_prefix)
      }
   }

   get_user_ip(id, temp_key, charsmax(temp_key), 1)

   if(TrieGetString(pre_ips_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
   {
      TrieSetString(client_prefix, str_id, temp_prefix)
   }

   get_user_authid(id, temp_key, charsmax(temp_key))

   if(TrieGetString(pre_steamids_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
   {
      TrieSetString(client_prefix, str_id, temp_prefix)
   }

   get_user_name(id, temp_key, charsmax(temp_key))

   if(TrieGetString(pre_names_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
   {
      TrieSetString(client_prefix, str_id, temp_prefix)
   }

   return PLUGIN_HANDLED
}

send_message(const message[], const id, const i)
{
   message_begin(MSG_ONE, g_saytxt, {0, 0, 0}, i)
   write_byte(id)
   write_string(message)
   message_end()
}

change_team_info(const id, const team[])
{
   message_begin(MSG_ONE, g_teaminfo,_, id)
   write_byte(id)
   write_string(team)
   message_end()
}

bool:check_say_characters(const check_message[])
{
   for(new i = 0; i < charsmax(forbidden_say_symbols); i++)
   {
      if(check_message[0] == forbidden_say_symbols[i])
      {
         return true
      }
   }
   return false
}

bool:check_prefix_characters(const check_prefix[])
{
   for(i = 0; i < charsmax(forbidden_prefixes_symbols); i++)
   {
      if(containi(check_prefix, forbidden_prefixes_symbols[i]) != -1)
      {
         return true
      }
   }
   return false
}

bool:is_bad_prefix(const check_prefix[])
{
   if(TrieGetCell(bad_prefixes_collect, check_prefix, temp_value))
   {
      return true
   }
   return false
}

find_and_delete(const arg_type[], const arg_key[])
{
   line = 0, length = 0;

   while(read_file(file_prefixes, line++ , text, charsmax(text), length))
   {
      if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
         continue

      parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
      trim(prefix)

      if(!type[0] || !prefix[0] || !key[0])
         continue
         
      if(!equal(arg_type, type) || !equal(arg_key, key))
         continue
         
      write_file(file_prefixes, "", line - 1)
   }
   
   switch(arg_type[0])
   {
      case 'f':
      {
         TrieDeleteKey(pre_flags_collect, arg_key)
      }
      case 'i':
      {
         TrieDeleteKey(pre_ips_collect, arg_key)
      }
      case 's':
      {
         TrieDeleteKey(pre_steamids_collect, arg_key)
      }
      case 'n':
      {
         TrieDeleteKey(pre_names_collect, arg_key)
      }
   }
}
Благодаря предварително! :)
feruchio

Аватар
Потребител
Потребител
 
Регистриран на: 14 Юни 2011, 20:02
Местоположение: 93.123.18.81:27017
Профил в Steam
[ Профил в сайта ]

Re: Become VIP Plus (+API)

Мнениеот OciXCrom » 01 Юли 2016, 13:00

По какъв начин запазваш убийствата (ник/стийм/ип)?
Относно префиксите - не бачка, тъй като плъгинът за префиксите проверява флаговете ти когато влизаш в сървъра, а becomeVIP ги добавя след 5 секунди от влизането, тъй като ранковата система изисква забавяне.

Виж дали ще стане така:

Код: Избери целия код
    /*  AMX Mod X script
    *                               ______                       __                    __          __                              ________
    *                     / ____ \                      \ \                  / /         /  |                            |______  |
    *                    / /    \ \                      \ \                / /         /   |                        __         | |
    *                   | /      \ |                      \ \              / /         / /| |                       |__|        | |
    *                   | |      | |    ______     _    __ \ \            / /  _      / / | |       ______                      | |
    *        _   _____   _____   | |      | |   / ____ \   | |  / /  \ \          / /  |_|    / /  | |      / ____ \                     | |
    *   | | / __  | / __  |  | |      | |  | /    \_\  | | / /    \ \        / /    _    / /   | |     /_/    \ \                    | |
    *   | |/ /  | |/ /  | |  | |      | |  | \_____    | |/ /      \ \      / /    | |  / /____| |__     ______| |                   | |
    *   | | /   | | /   | |  | |      | |   \_____ \   | | /        \ \    / /     | | /_______  |__|   / _____  |                   | |
    *   | |/    | |/    | |  | |      | |         \ |  | |/\         \ \  / /      | |         | |     / /     | |        __         | |
    *    | |     | |     | |  | \      / |  __     | |  | |\ \         \ \/ /       | |         | |    | |     /| |       |  |        | |
    *   | |     | |     | |   \ \____/ /   \ \____/ |  | | \ \         \  /        | |         | |     \ \___/ /\ \      / /    _____| |
    *   |_|     |_|     |_|    \______/     \______/   |_|  \_\         \/         |_|         |_|      \_____/  \_\    /_/    |_______|
    *
    *
    *
    *** Copyright 2011 - 2013, m0skVi4a ;]
    *** Plugin created in Rousse, Bulgaria
    *
    *
    *** Plugin thread 1:
    *   https://forums.alliedmods.net/showthread.php?t=183491
    *
    *** Plugin thread 2:
    *   http://amxmodxbg.org/forum/viewtopic.php?t=38972
    *
    *
    *** Description:
    *
    *   With this plugin you can set prefixes to Admins with special flags. Also Admins can put custom prefixes to them or to other players if they want, but only if they have the required flag.
    *
    *
    *** Commands:
    *
    *   ap_reload_prefixes
    *   Reloads Prefixes' file from console without restarting the server.
    *
    *   ap_reload_badprefixes
    *   Reloads Bad Prefixes' file from console without restarting the server.
    *
    *   ap_put_player "name" "prefix"
    *   Puts prefix to the name you type if you have the special flag. Or if there is no prefix typed, removes the prefix which the player has.
    *
    *
    *** CVARS:
    *
    *   "ap_bad_prefixes"    -    Is the Bad Prefixes option on(1) or off(0).   Default: 1
    *   "ap_listen"       -    Is the Admin Listen option on(1) or off(0).   Default: 1
    *   "ap_listen_flag"    -   The flag, needed for Listen option.   Default: a
    *   "ap_custom"       -   Is the Custom Prefix option for each Admin is on(1) or off(0).   Default: 1
    *   "ap_custom_flag"     -   The flag, needed for setting custom prefix.   Default: b
    *   "ap_say_characters"    -   Is the Start Say Characters option on(1) or off(0).   Default: 1
    *   "ap_prefix_characters"    -   Is the Checker for Characters in Custom Prefixes' Options on(1) or off(0).   Default: 1
    *
    *   All CVARS are without quotes!
    *
    *
    *** Credits:
    *
    *    m0skVi4a ;]       -   for the idea, making and testing the plugin
    *   SpeeDeeR       -   for little help with the plugin
    *   Ant1Lamer       -   for testing the plugin
    *   Vasilii-Zaicev   -   for testing the plugin
    *
    *
    *** Changelog:
    *
    *   April 22, 2012   -  V1.0:
    *      -  First Release
    *
    *   May 19, 2012   -  V2.0:
    *      -  Full optimization
    *      -  Added Bad Prefixes' file
    *      -  Added Multi-Lingual file
    *      -  Added IP and Name support in ap_prefixes.ini
    *      -  Added Forbidden Say characters
    *      -  New CVARS for setting the flags for each of the options
    *   
    *   May 29, 2012   -  V2.1:
    *      -  Fixed bug with some say or say_team commands are not executed
    *
    *   January 17, 2013   -  V3.0:
    *      -  Full optimization
    *      -  Fixed bug when typing spaces and in tha chat is showing an empty message
    *      -  SteamID support
    *      -  Removed nvault
    *      -  Removed ap_put_player command
    *      -  ap_put_player command is combined with ap_put command
    *      -  Removed some CVARs
    *
    *   August 18, 2013   -  V4.0:
    *      -  Small code changes and little bug fixes
    *      -  Added Prefux Toggle command
    *      -  Fixed bug with the supporting of the plugin on AMXX 1.8.2
    *      -  AMXX 1.8.2 Supprot!
    *      -  SQL Version!
    *
    *
    *** Contact me on:
    *   E-MAIL: pvldimitrov@gmail.com
    *   SKYPE: pa7ohin
    */


    #include <amxmodx>
    #include <amxmisc>
    #include <celltrie>
    #include <cstrike>

    #define VERSION "4.0 WHITE CHAT"
    #define FLAG_LOAD ADMIN_CFG
    #define MAX_PREFIXES 33
    #define MAX_BAD_PREFIXES 100

    
new g_bad_prefixg_listeng_listen_flagg_customg_custom_flagg_say_charactersg_prefix_characters;
    new 
pre_ips_count 0pre_names_count 0pre_steamids_countpre_flags_count 0bad_prefix_count 0itemp_cvar[2];
    new 
configs_dir[64], file_prefixes[128], file_bad_prefixes[128], text[128], prefix[32], type[2], key[32], lengthline 0error[256];
    new 
g_teaminfog_saytxtg_maxplayersCsTeams:g_team;
    new 
g_typed[192], g_message[192], g_name[32];
    new 
Trie:pre_ips_collectTrie:pre_names_collectTrie:pre_steamids_collectTrie:pre_flags_collectTrie:bad_prefixes_collectTrie:client_prefix;
    new 
str_id[16], temp_key[35], temp_prefix[32], temp_value;
    new 
bool:g_toggle[33];
    new 
bool:is_admin;

    new const 
say_team_info[2][CsTeams][] =
    {
       {
"*SPEC* ""*DEAD* ""*DEAD* ""*SPEC* "},
       {
""""""""}
    }

    new const 
sayteam_team_info[2][CsTeams][] =
    {
       {
"(Spectator) ""*DEAD*(Terrorist) ""*DEAD*(Counter-Terrorist) ""(Spectator) "},
       {
"(Spectator) ""(Terrorist) ""(Counter-Terrorist) ""(Spectator) "}
    }

    new const 
forbidden_say_symbols[] = {
       
"/",
       
"!",
       
"%",
       
"$"
    
}

    new const 
forbidden_prefixes_symbols[] = {
       
"/",
       
"\",
       "
%",
       "
$",
       "
.",
       "
:",
       "
?",
       "
!",
       "
@",
       "
#",
       
"%"
    
}

    new const 
separator[] = "************************************************"
    
new const in_prefix[] = "[AdminPrefixes]"

    
new const g_team_names[CsTeams][] = {
       
"",
       
"TERRORIST",
       
"CT",
       
"SPECTATOR"
    
}

    public 
plugin_init()
    {
       
register_plugin("Admin Prefixes"VERSION"m0skVi4a ;]")

       
g_bad_prefix register_cvar("ap_bad_prefixes""1")
       
g_listen register_cvar("ap_listen""1")
       
g_listen_flag register_cvar("ap_listen_flag""a")
       
g_custom register_cvar("ap_custom_current""1")
       
g_custom_flag register_cvar("ap_custom_current_flag""b")
       
g_say_characters register_cvar("ap_say_characters""1")
       
g_prefix_characters register_cvar("ap_prefix_characters""1")

       
g_teaminfo get_user_msgid("TeamInfo")
       
g_saytxt get_user_msgid ("SayText")
       
g_maxplayers get_maxplayers()

       
register_concmd("ap_reload_prefixes""LoadPrefixes")
       
register_concmd("ap_reload_badprefixes""LoadBadPrefixes")
       
register_concmd("ap_put""SetPlayerPrefix")
       
register_clcmd("say""HookSay")
       
register_clcmd("say_team""HookSayTeam")

       
pre_ips_collect TrieCreate()
       
pre_names_collect TrieCreate()
       
pre_steamids_collect TrieCreate()
       
pre_flags_collect TrieCreate()
       
bad_prefixes_collect TrieCreate()
       
client_prefix TrieCreate()

       
register_dictionary("admin_prefixes.txt")

       
get_configsdir(configs_dircharsmax(configs_dir))
       
formatex(file_prefixescharsmax(file_prefixes), "%s/ap_prefixes.ini"configs_dir)
       
formatex(file_bad_prefixescharsmax(file_bad_prefixes), "%s/ap_bad_prefixes.ini"configs_dir)

       
LoadPrefixes(0)
       
LoadBadPrefixes(0)
    }
       
    public 
LoadPrefixes(id)
    {
       if(!(
get_user_flags(id) & FLAG_LOAD))
       {
          
console_print(id"%L"LANG_SERVER"PREFIX_PERMISSION"in_prefix)
          return 
PLUGIN_HANDLED
       
}

       
TrieClear(pre_ips_collect)
       
TrieClear(pre_names_collect)
       
TrieClear(pre_steamids_collect)
       
TrieClear(pre_flags_collect)

       
line 0length 0pre_flags_count 0pre_ips_count 0pre_names_count 0;

       if(!
file_exists(file_prefixes))
       {
          
formatex(errorcharsmax(error), "%L"LANG_SERVER"PREFIX_NOT_FOUND"in_prefixfile_prefixes)
          
set_fail_state(error)
       }

       
server_print(separator)

       while(
read_file(file_prefixesline++ , textcharsmax(text), length) && (pre_ips_count pre_names_count pre_steamids_count pre_flags_count) <= MAX_PREFIXES)
       {
          if(!
text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
             continue

          
parse(texttypecharsmax(type), keycharsmax(key), prefixcharsmax(prefix))
          
trim(prefix)

          if(!
type[0] || !prefix[0] || !key[0])
             continue

          
replace_all(prefixcharsmax(prefix), "!g""^x04")
          
replace_all(prefixcharsmax(prefix), "!t""^x03")
          
replace_all(prefixcharsmax(prefix), "!n""^x01")

          switch(
type[0])
          {
             case 
'f':
             {
                
pre_flags_count++
                
TrieSetString(pre_flags_collectkeyprefix)
                
server_print("%L"LANG_SERVER"PREFIX_LOAD_FLAG"in_prefixprefixkey[0])
             }
             case 
'i':
             {
                
pre_ips_count++
                
TrieSetString(pre_ips_collectkeyprefix)
                
server_print("%L"LANG_SERVER"PREFIX_LOAD_IP"in_prefixprefixkey)
             }
             case 
's':
             {
                
pre_steamids_count++
                
TrieSetString(pre_steamids_collectkeyprefix)
                
server_print("%L"LANG_SERVER"PREFIX_LOAD_STEAMID"in_prefixprefixkey)
             }
             case 
'n':
             {
                
pre_names_count++
                
TrieSetString(pre_names_collectkeyprefix)
                
server_print("%L"LANG_SERVER"PREFIX_LOAD_NAME"in_prefixprefixkey)
             }
             default:
             {
                continue
             }
          }
       }

       if(
pre_flags_count <= && pre_ips_count <= && pre_steamids_count <= && pre_names_count <= 0)
       {
          
server_print("%L"LANG_SERVER"PREFIX_NO"in_prefix)
       }

       
get_user_name(idg_namecharsmax(g_name))
       
server_print("%L"LANG_SERVER"PREFIX_LOADED_BY"in_prefixg_name)
       
console_print(id"%L"LANG_SERVER"PREFIX_LOADED"in_prefix)

       
server_print(separator)

       for(new 
1<= g_maxplayersi++)
       {
          
num_to_str(istr_idcharsmax(str_id))
          
TrieDeleteKey(client_prefixstr_id)
          
PutPrefix(i)
       }
       
       return 
PLUGIN_HANDLED
    
}

    public 
LoadBadPrefixes(id)
    {
       if(!
get_pcvar_num(g_bad_prefix))
       {
          
console_print(id"%L"LANG_SERVER"BADP_OFF"in_prefix)
          return 
PLUGIN_HANDLED
       
}

       if(!(
get_user_flags(id) & FLAG_LOAD))
       {
          
console_print(id"%L"LANG_SERVER"BADP_PERMISSION"in_prefix)
          return 
PLUGIN_HANDLED
       
}

       
TrieClear(bad_prefixes_collect)

       
line 0length 0bad_prefix_count 0;

       if(!
file_exists(file_bad_prefixes))
       {
          
console_print(id"%L"LANG_SERVER"BADP_NOT_FOUND"in_prefixfile_bad_prefixes)
          return 
PLUGIN_HANDLED      
       
}

       
server_print(separator)

       while(
read_file(file_bad_prefixesline++ , textcharsmax(text), length) && bad_prefix_count <= MAX_BAD_PREFIXES)
       {
          if(!
text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
             continue

          
parse(textprefixcharsmax(prefix))

          if(!
prefix[0])
             continue

          
bad_prefix_count++
          
TrieSetCell(bad_prefixes_collectprefix1)
          
server_print("%L"LANG_SERVER"BADP_LOAD"in_prefixprefix)
       }

       if(
bad_prefix_count <= 0)
       {
          
server_print("%L"LANG_SERVER"BADP_NO"in_prefix)
       }

       
get_user_name(idg_namecharsmax(g_name))
       
server_print("%L"LANG_SERVER"BADP_LOADED_BY"in_prefixg_name)
       
console_print(id"%L"LANG_SERVER"BADP_LOADED"in_prefix)

       
server_print(separator)

       return 
PLUGIN_HANDLED
    
}

    public 
client_putinserver(id)
    {
       
g_toggle[id] = true
       num_to_str
(idstr_idcharsmax(str_id))
       
TrieSetString(client_prefixstr_id"")
       
set_task(6.0"PutPrefix"id)
    }

    public 
HookSay(id)
    {
       
read_args(g_typedcharsmax(g_typed))
       
remove_quotes(g_typed)

       
trim(g_typed)

       if(
equal(g_typed"") || !is_user_connected(id))
          return 
PLUGIN_HANDLED_MAIN

       
if(equal(g_typed"/prefix"))
       {
          if(
g_toggle[id])
          {
             
g_toggle[id] = false
             client_print
(idprint_chat"%L"LANG_SERVER"PREFIX_OFF"in_prefix)
          }
          else
          {
             
g_toggle[id] = true
             client_print
(idprint_chat"%L"LANG_SERVER"PREFIX_ON"in_prefix)
          }

          return 
PLUGIN_HANDLED_MAIN
       
}

       
num_to_str(idstr_idcharsmax(str_id))

       if((
TrieGetString(client_prefixstr_idtemp_prefixcharsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefixstr_idtemp_prefixcharsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
       {
          if(
check_say_characters(g_typed))
             return 
PLUGIN_HANDLED_MAIN
       
}

       
get_user_name(idg_namecharsmax(g_name))

       
g_team cs_get_user_team(id)

       if(
temp_prefix[0] && g_toggle[id])
       {
          
formatex(g_messagecharsmax(g_message), "^1%s^3%s^4 %s :^3 %s"say_team_info[is_user_alive(id)][g_team], temp_prefixg_nameg_typed)
          
is_admin true
       
}
       else
       {
          
formatex(g_messagecharsmax(g_message), "^1%s^3%s :^1 %s"say_team_info[is_user_alive(id)][g_team], g_nameg_typed)
          
is_admin false
       
}

       
get_pcvar_string(g_listen_flagtemp_cvarcharsmax(temp_cvar))

       for(new 
1<= g_maxplayersi++)
       {
          if(!
is_user_connected(i))
             continue
             
          if(
is_admin)
          {
             
g_team cs_get_user_team(i)
             
change_team_info(ig_team_names[CS_TEAM_SPECTATOR])
             
send_message(g_messageii)
                
change_team_info(ig_team_names[g_team])
          }
          else
          {
             
send_message(g_messageidi)
          }
       }

       return 
PLUGIN_HANDLED_MAIN
    
}

    public 
HookSayTeam(id)
    {
       
read_args(g_typedcharsmax(g_typed))
       
remove_quotes(g_typed)

       
trim(g_typed)

       if(
equal(g_typed"") || !is_user_connected(id))
          return 
PLUGIN_HANDLED_MAIN

       
if(equal(g_typed"/prefix"))
       {
          if(
g_toggle[id])
          {
             
g_toggle[id] = false
             client_print
(idprint_chat"%L"LANG_SERVER"PREFIX_OFF"in_prefix)
          }
          else
          {
             
g_toggle[id] = true
             client_print
(idprint_chat"%L"LANG_SERVER"PREFIX_ON"in_prefix)
          }

          return 
PLUGIN_HANDLED_MAIN
       
}

       
num_to_str(idstr_idcharsmax(str_id))

       if((
TrieGetString(client_prefixstr_idtemp_prefixcharsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefixstr_idtemp_prefixcharsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
       {
          if(
check_say_characters(g_typed))
             return 
PLUGIN_HANDLED_MAIN
       
}

       
get_user_name(idg_namecharsmax(g_name))

       
g_team cs_get_user_team(id)

       if(
temp_prefix[0] &&  g_toggle[id])
       {
          
formatex(g_messagecharsmax(g_message), "^1%s^3%s^4 %s :^3 %s"sayteam_team_info[is_user_alive(id)][g_team], temp_prefixg_nameg_typed)
          
is_admin true
       
}
       else
       {
          
formatex(g_messagecharsmax(g_message), "^1%s^3%s :^1 %s"sayteam_team_info[is_user_alive(id)][g_team], g_nameg_typed)
          
is_admin false
       
}

       
get_pcvar_string(g_listen_flagtemp_cvarcharsmax(temp_cvar))

       for(new 
1<= g_maxplayersi++)
       {
          if(!
is_user_connected(i))
             continue

          if(
get_user_team(id) == get_user_team(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
          {
             if(
is_admin)
             {
                
g_team cs_get_user_team(i)
                
change_team_info(ig_team_names[CS_TEAM_SPECTATOR])
                
send_message(g_messageii)
                
change_team_info(ig_team_names[g_team])
             }
             else
             {
                
send_message(g_messageidi)
             }
          }
       }

       return 
PLUGIN_HANDLED_MAIN
    
}

    public 
SetPlayerPrefix(id)
    {
       if(!
get_pcvar_num(g_custom) || !get_pcvar_string(g_custom_flagtemp_cvarcharsmax(temp_cvar)))
       {
          
console_print(id"%L"LANG_SERVER"CUSTOM_OFF"in_prefix)
          return 
PLUGIN_HANDLED
       
}

       if(!(
get_user_flags(id) & read_flags(temp_cvar)))
       {
          
console_print(id"%L"LANG_SERVER"CUSTOM_PERMISSION"in_prefix)
          return 
PLUGIN_HANDLED
       
}

       new 
input[128], target;
       new 
arg_type[2], arg_prefix[32], arg_key[35];
       new 
temp_str[16];

       
read_args(inputcharsmax(input))
       
remove_quotes(input)
       
parse(inputarg_typecharsmax(arg_type), arg_keycharsmax(arg_key), arg_prefixcharsmax(arg_prefix))
       
trim(arg_prefix)

       if(
get_pcvar_num(g_bad_prefix) && is_bad_prefix(arg_prefix) && !equali(arg_prefix""))
       {
          
console_print(id"%L"LANG_SERVER"CUSTOM_FORBIDDEN"in_prefixarg_prefix)
          return 
PLUGIN_HANDLED
       
}

       if(
get_pcvar_num(g_prefix_characters) && check_prefix_characters(arg_prefix))
       {
          
console_print(id"%L"LANG_SERVER"CUSTOM_SYMBOL"in_prefixarg_prefixforbidden_prefixes_symbols[i])
          return 
PLUGIN_HANDLED
       
}

       switch(
arg_type[0])
       {
          case 
'f':
          {
             
target 0
             temp_str 
"Flag"
          
}
          case 
'i':
          {
             
target find_player("d"arg_key)
             
temp_str "IP"
          
}
          case 
's':
          {
             
target find_player("c"arg_key)
             
temp_str "SteamID"
          
}
          case 
'n':
          {
             
target find_player("a"arg_key)
             
temp_str "Name"
          
}
          default:
          {
             
console_print(id"%L"LANG_SERVER"CUSTOM_INVALID"in_prefixarg_type)
             return 
PLUGIN_HANDLED
          
}
       }

       
get_user_name(idg_namecharsmax(g_name))

       if(
equali(arg_prefix""))
       {
          
find_and_delete(arg_typearg_key)

          if(
target)
          {
             
PutPrefix(target)
          }
          
          
console_print(id"%L"LANG_SERVER"CUSTOM_REMOVE"in_prefixtemp_strarg_key)
          
server_print("%L"LANG_SERVER"CUSTOM_REMOVE_INFO"in_prefixg_nametemp_strarg_key)
          return 
PLUGIN_HANDLED
       
}

       
find_and_delete(arg_typearg_key)

       
formatex(textcharsmax(text), "^"%s^" ^"%s^" ^"%s^""arg_typearg_keyarg_prefix)
       
write_file(file_prefixestext, -1)

       switch(
arg_type[0])
       {
          case 
'f':
          {
             
TrieSetString(pre_flags_collectarg_keyarg_prefix)
          }
          case 
'i':
          {
             
TrieSetString(pre_ips_collectarg_keyarg_prefix)
          }
          case 
's':
          {
             
TrieSetString(pre_steamids_collectarg_keyarg_prefix)
          }
          case 
'n':
          {
             
TrieSetString(pre_names_collectarg_keyarg_prefix)
          }
       }

       if(
target)
       {
          
num_to_str(targetstr_idcharsmax(str_id))
          
TrieSetString(client_prefixstr_idarg_prefix)
       }

       
console_print(id"%L"LANG_SERVER"CUSTOM_CHANGE"in_prefixtemp_strarg_keyarg_prefix)
       
server_print("%L"LANG_SERVER"CUSTOM_CHANGE_INFO"in_prefixg_nametemp_strarg_keyarg_prefix)

       return 
PLUGIN_HANDLED
    
}


    public 
client_infochanged(id)
    {
       if(!
is_user_connected(id))
          return 
PLUGIN_CONTINUE

       
new g_old_name[32];

       
get_user_info(id"name"g_namecharsmax(g_name))
       
get_user_name(idg_old_namecharsmax(g_old_name))

       if(!
equal(g_nameg_old_name))
       {
          
num_to_str(idstr_idcharsmax(str_id))
          
TrieSetString(client_prefixstr_id"")
          
set_task(0.5"PutPrefix"id)
          return 
PLUGIN_HANDLED
       
}

       return 
PLUGIN_CONTINUE
    
}

    public 
PutPrefix(id)
    {
       
num_to_str(idstr_idcharsmax(str_id))
       
TrieSetString(client_prefixstr_id"")

       new 
sflags[32], temp_flag[2];
       
get_flags(get_user_flags(id), sflagscharsmax(sflags))

       for(new 
0<= charsmax(sflags); i++)
       {
          
formatex(temp_flagcharsmax(temp_flag), "%c"sflags[i])

          if(
TrieGetString(pre_flags_collecttemp_flagtemp_prefixcharsmax(temp_prefix)))
          {
             
TrieSetString(client_prefixstr_idtemp_prefix)
          }
       }

       
get_user_ip(idtemp_keycharsmax(temp_key), 1)

       if(
TrieGetString(pre_ips_collecttemp_keytemp_prefixcharsmax(temp_prefix)))
       {
          
TrieSetString(client_prefixstr_idtemp_prefix)
       }

       
get_user_authid(idtemp_keycharsmax(temp_key))

       if(
TrieGetString(pre_steamids_collecttemp_keytemp_prefixcharsmax(temp_prefix)))
       {
          
TrieSetString(client_prefixstr_idtemp_prefix)
       }

       
get_user_name(idtemp_keycharsmax(temp_key))

       if(
TrieGetString(pre_names_collecttemp_keytemp_prefixcharsmax(temp_prefix)))
       {
          
TrieSetString(client_prefixstr_idtemp_prefix)
       }

       return 
PLUGIN_HANDLED
    
}

    
send_message(const message[], const id, const i)
    {
       
message_begin(MSG_ONEg_saytxt, {000}, i)
       
write_byte(id)
       
write_string(message)
       
message_end()
    }

    
change_team_info(const id, const team[])
    {
       
message_begin(MSG_ONEg_teaminfo,_id)
       
write_byte(id)
       
write_string(team)
       
message_end()
    }

    
bool:check_say_characters(const check_message[])
    {
       for(new 
0charsmax(forbidden_say_symbols); i++)
       {
          if(
check_message[0] == forbidden_say_symbols[i])
          {
             return 
true
          
}
       }
       return 
false
    
}

    
bool:check_prefix_characters(const check_prefix[])
    {
       for(
0charsmax(forbidden_prefixes_symbols); i++)
       {
          if(
containi(check_prefixforbidden_prefixes_symbols[i]) != -1)
          {
             return 
true
          
}
       }
       return 
false
    
}

    
bool:is_bad_prefix(const check_prefix[])
    {
       if(
TrieGetCell(bad_prefixes_collectcheck_prefixtemp_value))
       {
          return 
true
       
}
       return 
false
    
}

    
find_and_delete(const arg_type[], const arg_key[])
    {
       
line 0length 0;

       while(
read_file(file_prefixesline++ , textcharsmax(text), length))
       {
          if(!
text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
             continue

          
parse(texttypecharsmax(type), keycharsmax(key), prefixcharsmax(prefix))
          
trim(prefix)

          if(!
type[0] || !prefix[0] || !key[0])
             continue
             
          if(!
equal(arg_typetype) || !equal(arg_keykey))
             continue
             
          
write_file(file_prefixes""line 1)
       }
       
       switch(
arg_type[0])
       {
          case 
'f':
          {
             
TrieDeleteKey(pre_flags_collectarg_key)
          }
          case 
'i':
          {
             
TrieDeleteKey(pre_ips_collectarg_key)
          }
          case 
's':
          {
             
TrieDeleteKey(pre_steamids_collectarg_key)
          }
          case 
'n':
          {
             
TrieDeleteKey(pre_names_collectarg_key)
          }
       }
    } 
OciXCrom

Аватар
OciXCrom™ Official Profile
OciXCrom™ Official Profile
 
Регистриран на: 21 Мар 2013, 14:21
Местоположение: jb.iplay.bg:27015
Skype: doctor.crom1234
Профил в Steam
[ Профил в сайта ]

Re: Become VIP Plus (+API)

Мнениеот feruchio » 01 Юли 2016, 18:18

По име ги запазвам убийствата и да аз знам защо не бачкаше (от предишното ми питане), просто не знам как да го направя да работи по начина по който трябва. Сега работи перфектно и явно към този момент използването на ранковата система е единственото спасение. :o
feruchio

Аватар
Потребител
Потребител
 
Регистриран на: 14 Юни 2011, 20:02
Местоположение: 93.123.18.81:27017
Профил в Steam
[ Профил в сайта ]

Re: Become VIP Plus (+API)

Мнениеот cs-burgas.info » 03 Сеп 2016, 01:51

Може да се направи да запаметява и по двата протокола,тоест (Protocol 47/48), но ще е нужно reunion-a или dproto да емулират по IP.

Като цяло плъгина е добре,но открих едно малко бъгче :D.Когато се използва ранковата система,hud съобщението не отчита правилно убийствата на следващия рунд.Според мен е желателно да се сложи един set_task,примерно да изкарава hud-а след 1 сек.

Код: Избери целия код
public eventPlayerSpawn(id)
{
     #if defined USE_HUD     
        set_task(1.0, "MsgInfo", id)
     #endif
}

public MsgInfo(id)
{
      бла бла бла .... :)
}

cs-burgas.info

Аватар
Потребител
Потребител
 
Регистриран на: 26 Яну 2015, 18:16
[ Профил в сайта ]

Re: Become VIP Plus (+API)

Мнениеот feruchio » 02 Окт 2016, 00:36

Бих искал да се включа отново и да отбележа, че плъгина си бачка що годе добре, но не за всички играчи може би за около половината хора. Едни не ги прави VIP на 500 kills, а за други не им го отчита винаги като влезнат в сървъра, в момента използвам по ранковата система да ги прави VIP. Не знам дали може да се направи нещо по въпроса, но реших го споделя. :dcygpd:
feruchio

Аватар
Потребител
Потребител
 
Регистриран на: 14 Юни 2011, 20:02
Местоположение: 93.123.18.81:27017
Профил в Steam
[ Профил в сайта ]

Re: Become VIP Plus (+API)

Мнениеот OciXCrom [2] » 05 Окт 2016, 20:11

feruchio написа:Бих искал да се включа отново и да отбележа, че плъгина си бачка що годе добре, но не за всички играчи може би за около половината хора. Едни не ги прави VIP на 500 kills, а за други не им го отчита винаги като влезнат в сървъра, в момента използвам по ранковата система да ги прави VIP. Не знам дали може да се направи нещо по въпроса, но реших го споделя. :dcygpd:


Не мога да кажа със сигурност на какво се дължи проблемът, обаче това не е единственото оплакване от плъгина. Ще се опитам внимателно да погледна плъгина за грешки когато имам повече свободно време.
OciXCrom [2]

Аватар
Потребител
Потребител
 
Регистриран на: 05 Окт 2016, 20:06
[ Профил в сайта ]

Re: Become VIP Plus (+API)

Мнениеот feruchio » 05 Окт 2016, 20:18

Благодаря за отделеното време и дано да е възможно да се оправи! Бих казал, че аз други проблеми не съм забелязал. :)
feruchio

Аватар
Потребител
Потребител
 
Регистриран на: 14 Юни 2011, 20:02
Местоположение: 93.123.18.81:27017
Профил в Steam
[ Профил в сайта ]

Предишна


Ето че в края на този месец се навършват точно 10 години от официалното пускане на българския CS фен сайт.
ESEA имат удоволствието да обявят сезон 25 на своята лига, който ще включва повече дивизии за някои региони, както и редица подобрения базирани на обратната връзка от сезон 24.
DreamHack потвърдиха, че Ninjas in Pyjamas и Virtus.pro са получили покани за тяхното събитие Masters в Малмьо.

Назад към Ваши плъгини

Кой е на линия

Потребители, разглеждащи този форум: 0 регистрирани

Creative Commons License

Valve, Steam, поредицата Counter-Strike и логото на всяко от изброените са търговски марки и/или
регистрирани търговски марки на Valve Corporation. Всички други търговски марки са собственост на съответните им собственици.

Design: iVoka • Special thanks: VaRkOlAKA
За сайта | Екип | За реклама | Карта на сайта | За контакти

Powered by phpBB® Forum Software © phpBB Group | Theme by A1ex, edit by iVoka
Превод: Йоан Арнаудов | Корекции: Ивомир Петров
Условия за ползване | Политика на поверителност