Статус темы:
Закрыта.
  1. Hnt Пользователь

    Регистрация:
    27.02.16
    Сообщения:
    102
    Симпатии:
    27
    Пол:
    Мужской
    Приветствую, господа помогите пофиксить Localize bug именно в этом чёртовом Админчате, сервер спать отправляю say_team:
    say_team @ %s%s%s%s%s%s%s%s%s%S%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s5s%s%s%s%s%s%s%s%s%s%s%s%s5s%s%s%s%s
    Код (Unknown Language):
    1. /* AMX Mod X
    2. *   Admin Chat Plugin
    3. *
    4. * by the AMX Mod X Development Team
    5. *  originally developed by OLO
    6. *
    7. * This file is part of AMX Mod X.
    8. *
    9. *
    10. *  This program is free software; you can redistribute it and/or modify it
    11. *  under the terms of the GNU General Public License as published by the
    12. *  Free Software Foundation; either version 2 of the License, or (at
    13. *  your option) any later version.
    14. *
    15. *  This program is distributed in the hope that it will be useful, but
    16. *  WITHOUT ANY WARRANTY; without even the implied warranty of
    17. *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    18. *  General Public License for more details.
    19. *
    20. *  You should have received a copy of the GNU General Public License
    21. *  along with this program; if not, write to the Free Software Foundation,
    22. *  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    23. *
    24. *  In addition, as a special exception, the author gives permission to
    25. *  link the code of this program with the Half-Life Game Engine ("HL
    26. *  Engine") and Modified Game Libraries ("MODs") developed by Valve,
    27. *  L.L.C ("Valve"). You must obey the GNU General Public License in all
    28. *  respects for all of the code used other than the HL Engine and MODs
    29. *  from Valve. If you modify this file, you may extend this exception
    30. *  to your version of the file, but you are not obligated to do so. If
    31. *  you do not wish to do so, delete this exception statement from your
    32. *  version.
    33. *
    34. * Changes by Safety1st:
    35. * new: separate access flag for triggering HUD-messages
    36. * new: colored messages (text only) from admins; user see its team color for red/blue/grey
    37. *  it needs custom include for all colorchat support http://forums.alliedmods.net/showthread.php?p=1697491
    38. * support amx_show activity for amx_say command (now it is possible to hide admin's nick)
    39. *  it needs custom dictionary "adminchat.txt" (included)
    40. * change: HUD messages are bigger and looks like more pretty
    41. *  it needs custom include 'Director Hud Message' http://forums.alliedmods.net/showthread.php?t=149210
    42. * fix: small typo correction in cmdSayChat help
    43. *
    44. */
    45.  
    46. #include <amxmodx>
    47. #include <amxmisc>
    48. #include <dhudmessage>
    49. #include <colorchat>
    50.  
    51. new g_msgChannel
    52.  
    53. #define MAX_CLR 10
    54.  
    55. new g_Colors[MAX_CLR][] = {"COL_WHITE", "COL_RED", "COL_GREEN", "COL_BLUE", "COL_YELLOW", "COL_MAGENTA", "COL_CYAN", "COL_ORANGE", "COL_OCEAN", "COL_MAROON"}
    56. new g_Values[MAX_CLR][] = {{255, 255, 255}, {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 0}, {255, 0, 255}, {0, 255, 255}, {227, 96, 8}, {45, 89, 116}, {103, 44, 38}}
    57. new Float:g_Pos[4][] = {{0.0, 0.0}, {0.05, 0.55}, {-1.0, 0.2}, {-1.0, 0.7}}
    58.  
    59. new amx_show_activity;
    60. new g_AdminChatFlag = ADMIN_CHAT | ADMIN_LEVEL_H;    // flag 't'
    61. new g_AdminHUDFlag = ADMIN_CHAT;        // flag 'i', only that players are granted to use HUD
    62.  
    63. public plugin_init()
    64. {
    65.     new admin_chat_id
    66.  
    67.     register_plugin("Admin Chat", AMXX_VERSION_STR, "AMXX Dev Team")
    68.     register_dictionary("adminchat.txt")
    69.     register_dictionary("common.txt")
    70.     register_clcmd("say", "cmdSayChat", g_AdminHUDFlag, "@[@|@][r|g|b|y|m|c|o] <text> - displays hud message, white color default")
    71.     register_clcmd("say_team", "cmdSayAdmin", 0, "@<text> - displays message to admins")
    72.     register_concmd("amx_say", "cmdSay", g_AdminHUDFlag, "<message> - sends message to all players")
    73.     admin_chat_id = register_concmd("amx_chat", "cmdChat", g_AdminChatFlag, "<message> - sends message to admins")
    74.     register_concmd("amx_psay", "cmdPsay", g_AdminChatFlag, "<name or #userid> <message> - sends private message")
    75.     register_concmd("amx_tsay", "cmdTsay", g_AdminHUDFlag, "<color> <message> - sends left side hud message to all players")
    76.     register_concmd("amx_csay", "cmdTsay", g_AdminHUDFlag, "<color> <message> - sends center hud message to all players")
    77.    
    78.     amx_show_activity = get_cvar_pointer("amx_show_activity");
    79.    
    80.     if (amx_show_activity == 0)
    81.     {
    82.         amx_show_activity = register_cvar("amx_show_activity", "2");
    83.     }
    84.  
    85.     new str[1]
    86.     get_concmd(admin_chat_id, str, 0, g_AdminChatFlag, str, 0, -1)
    87. }
    88.  
    89. public cmdSayChat(id)
    90. {
    91.     if (!access(id, g_AdminHUDFlag))
    92.     {
    93.         return PLUGIN_CONTINUE
    94.     }
    95.    
    96.     new said[6], i = 0
    97.     read_argv(1, said, 5)
    98.    
    99.     while (said[i] == '@')
    100.     {
    101.         i++
    102.     }
    103.    
    104.     if (!i || i > 3)
    105.     {
    106.         return PLUGIN_CONTINUE
    107.     }
    108.    
    109.     new message[192], a = 0
    110.     read_args(message, 191)
    111.     remove_quotes(message)
    112.    
    113.     switch (said[i])
    114.     {
    115.         case 'r': a = 1
    116.         case 'g': a = 2
    117.         case 'b': a = 3
    118.         case 'y': a = 4
    119.         case 'm': a = 5
    120.         case 'c': a = 6
    121.         case 'o': a = 7
    122.     }
    123.    
    124.     new n, s = i
    125.     if (a)
    126.     {
    127.         n++
    128.         s++
    129.     }
    130.     while (said[s] && isspace(said[s]))
    131.     {
    132.         n++
    133.         s++
    134.     }
    135.    
    136.  
    137.     new name[32], authid[32], userid
    138.    
    139.     get_user_authid(id, authid, 31)
    140.     get_user_name(id, name, 31)
    141.     userid = get_user_userid(id)
    142.    
    143.     log_amx("Chat: ^"%s<%d><%s><>^" tsay ^"%s^"", name, userid, authid, message[i + n])
    144.     log_message("^"%s<%d><%s><>^" triggered ^"amx_tsay^" (text ^"%s^") (color ^"%L^")", name, userid, authid, message[i + n], "en", g_Colors[a])
    145.    
    146.     if (++g_msgChannel > 6 || g_msgChannel < 3)
    147.     {
    148.         g_msgChannel = 3
    149.     }
    150.    
    151.     new Float:verpos = g_Pos[i][1] + float(g_msgChannel) / 35.0
    152.    
    153.     set_dhudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], g_Pos[i][0], verpos, 0, 6.0, 6.0, 0.5, 0.15, false)
    154.  
    155.     switch ( get_pcvar_num(amx_show_activity) )
    156.     {
    157.         case 3, 4:
    158.         {
    159.             new maxpl = get_maxplayers();
    160.             for (new pl = 1; pl <= maxpl; pl++)
    161.             {
    162.                 if (is_user_connected(pl) && !is_user_bot(pl))
    163.                 {
    164.                     if (is_user_admin(pl))
    165.                     {
    166.                         show_dhudmessage(pl, "%s :   %s", name, message[i + n])
    167.                         client_print(pl, print_notify, "%s :   %s", name, message[i + n])
    168.                     }
    169.                     else
    170.                     {
    171.                         show_dhudmessage(pl, "%s", message[i + n])
    172.                         client_print(pl, print_notify, "%s", message[i + n])
    173.                     }
    174.                 }
    175.             }
    176.         }
    177.         case 2:
    178.         {
    179.             show_dhudmessage(0, "%s :   %s", name, message[i + n])
    180.             client_print(0, print_notify, "%s :   %s", name, message[i + n])
    181.         }
    182.         default:
    183.         {
    184.             show_dhudmessage(0, "%s", message[i + n])
    185.             client_print(0, print_notify, "%s", message[i + n])
    186.         }
    187.     }
    188.  
    189.     return PLUGIN_HANDLED
    190. }
    191.  
    192. public cmdSayAdmin(id)
    193. {
    194.     new said[2]
    195.     read_argv(1, said, 1)
    196.    
    197.     if (said[0] != '@')
    198.         return PLUGIN_CONTINUE
    199.    
    200.     new message[192], name[32], authid[32], userid
    201.    
    202.     read_args(message, 191)
    203.     remove_quotes(message)
    204.     get_user_authid(id, authid, 31)
    205.     get_user_name(id, name, 31)
    206.     userid = get_user_userid(id)
    207.    
    208.     log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message[1])
    209.     log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message[1])
    210.  
    211.     new players[32], inum, plr
    212.     get_players(players, inum)
    213.     new bIsSenderAdmin = is_user_admin(id)
    214.  
    215.     for (new i = 0; i < inum; ++i) {
    216.         plr = players[i]
    217.         if(plr == id || get_user_flags(plr) & g_AdminChatFlag) {
    218.             if ( bIsSenderAdmin ) {
    219.                 ColorChat( plr, DontChange, "^3(^4%L^3) %s ^1:  %s", LANG_PLAYER, "ADMIN", name, message[1] )
    220.             }
    221.             else {
    222.                 ColorChat( plr, DontChange, "^3(^4%L^3) %s ^1:  %s", LANG_PLAYER, "PLAYER", name, message[1] )
    223.             }
    224.         }
    225.     }
    226.    
    227.     return PLUGIN_HANDLED
    228. }
    229.  
    230. public cmdChat(id, level, cid)
    231. {
    232.     if (!cmd_access(id, level, cid, 2))
    233.         return PLUGIN_HANDLED
    234.  
    235.     new message[192], name[32], players[32], inum, authid[32], userid, plr
    236.    
    237.     read_args(message, 191)
    238.     remove_quotes(message)
    239.     get_user_authid(id, authid, 31)
    240.     get_user_name(id, name, 31)
    241.     userid = get_user_userid(id)
    242.     get_players(players, inum)
    243.    
    244.     log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message)
    245.     log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message)
    246.    
    247.     for (new i = 0; i < inum; ++i)
    248.     {
    249.         plr = players[i]
    250.         if (access(plr, g_AdminChatFlag))
    251.         {
    252.             ColorChat(plr, DontChange, "^3(^4АДМИН ЧАТ^3) %s ^1:  %s", name, message)
    253.         }
    254.     }
    255.  
    256.     console_print(id, "%s", message)
    257.    
    258.     return PLUGIN_HANDLED
    259. }
    260.  
    261. public cmdSay(id, level, cid)
    262. {
    263.     if (!cmd_access(id, level, cid, 2))
    264.         return PLUGIN_HANDLED
    265.  
    266.     new message[192], name[32], authid[32], userid
    267.     new players[32], inum, plr
    268.    
    269.     read_args(message, 191)
    270.     remove_quotes(message)
    271.     get_user_authid(id, authid, 31)
    272.     get_user_name(id, name, 31)
    273.     userid = get_user_userid(id)
    274.  
    275.     get_players(players, inum)
    276.     for (new i = 0; i < inum; ++i) {
    277.         plr = players[i]
    278.  
    279.         switch ( get_pcvar_num(amx_show_activity) ) {
    280.             case 2:
    281.             {
    282.                 ColorChat(plr, DontChange, "^4%L %s :^1  %s", LANG_PLAYER, "ADMIN", name, message)
    283.             }
    284.             case 3, 4:
    285.             {
    286.                 if(plr == id || get_user_flags(plr) & g_AdminHUDFlag)
    287.                     ColorChat(plr, DontChange, "^4%L %s ^1:  %s", LANG_PLAYER, "ADMIN", name, message)
    288.                 else
    289.                     ColorChat(plr, DontChange, "^4%L ^1:  %s", LANG_PLAYER, "ADMIN", message)
    290.             }
    291.             default:
    292.             {
    293.                 ColorChat(plr, DontChange, "^4%L ^1:  %s", LANG_PLAYER, "ADMIN", message)
    294.             }
    295.         }
    296.     }
    297.  
    298.     console_print(id, "(%L) %s :  %s", LANG_PLAYER, "PRINT_ALL", name, message)
    299.    
    300.     log_amx("Chat: ^"%s<%d><%s><>^" say ^"%s^"", name, userid, authid, message)
    301.     log_message("^"%s<%d><%s><>^" triggered ^"amx_say^" (text ^"%s^")", name, userid, authid, message)
    302.    
    303.     return PLUGIN_HANDLED
    304. }
    305.  
    306. public cmdPsay(id, level, cid)
    307. {
    308.     if (!cmd_access(id, level, cid, 3))
    309.         return PLUGIN_HANDLED
    310.    
    311.     new name[32]
    312.     read_argv(1, name, 31)
    313.     new priv = cmd_target(id, name, 0)
    314.  
    315.     if (!priv)
    316.         return PLUGIN_HANDLED
    317.    
    318.     new length = strlen(name) + 1
    319.  
    320.     get_user_name(priv, name, 31);
    321.    
    322.     new message[192], name2[32], authid[32], authid2[32], userid, userid2
    323.    
    324.     get_user_authid(id, authid, 31)
    325.     get_user_name(id, name2, 31)
    326.     userid = get_user_userid(id)
    327.     read_args(message, 191)
    328.    
    329.     if (message[0] == '"' && message[length] == '"') // HLSW fix
    330.     {
    331.         message[0] = ' '
    332.         message[length] = ' '
    333.         length += 2
    334.     }
    335.    
    336.     remove_quotes(message[length])
    337.     get_user_name(priv, name, 31)
    338.    
    339.     if (id && id != priv)
    340.     {
    341.         ColorChat(id, DontChange, "^3(^4%s^3) %s ^1:  %s", name, name2, message[length])
    342.     }
    343.     ColorChat(priv, DontChange, "^3(^4%s^3) %s ^1:  %s", name, name2, message[length])
    344.  
    345.     console_print(id, "(%s) %s :   %s", name, name2, message[length])
    346.     get_user_authid(priv, authid2, 31)
    347.     userid2 = get_user_userid(priv)
    348.    
    349.     log_amx("Chat: ^"%s<%d><%s><>^" psay ^"%s<%d><%s><>^" ^"%s^"", name2, userid, authid, name, userid2, authid2, message[length])
    350.     log_message("^"%s<%d><%s><>^" triggered ^"amx_psay^" against ^"%s<%d><%s><>^" (text ^"%s^")", name2, userid, authid, name, userid2, authid2, message[length])
    351.    
    352.     return PLUGIN_HANDLED
    353. }
    354.  
    355. public cmdTsay(id, level, cid)
    356. {
    357.     if (!cmd_access(id, level, cid, 3))
    358.         return PLUGIN_HANDLED
    359.    
    360.     new cmd[16], color[16], color2[16], message[192], name[32], authid[32], userid = 0
    361.    
    362.     read_argv(0, cmd, 15)
    363.     new bool:tsay = (tolower(cmd[4]) == 't')
    364.    
    365.     read_args(message, 191)
    366.     remove_quotes(message)
    367.     parse(message, color, 15)
    368.    
    369.     new found = 0, a = 0
    370.     new lang[3], langnum = get_langsnum()
    371.  
    372.     for (new i = 0; i < MAX_CLR; ++i)
    373.     {
    374.         for (new j = 0; j < langnum; j++)
    375.         {
    376.             get_lang(j, lang)
    377.             format(color2, 15, "%L", lang, g_Colors[i])
    378.            
    379.             if (equali(color, color2))
    380.             {
    381.                 a = i
    382.                 found = 1
    383.                 break
    384.             }
    385.         }
    386.         if (found == 1)
    387.             break
    388.     }
    389.    
    390.     new length = found ? (strlen(color) + 1) : 0
    391.    
    392.     if (++g_msgChannel > 6 || g_msgChannel < 3)
    393.         g_msgChannel = 3
    394.  
    395.     new Float:verpos = (tsay ? 0.55 : 0.1) + float(g_msgChannel) / 35.0
    396.    
    397.     get_user_authid(id, authid, 31)
    398.     get_user_name(id, name, 31)
    399.     userid = get_user_userid(id)
    400.     set_dhudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], tsay ? 0.05 : -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15, false)
    401.  
    402.     switch ( get_pcvar_num(amx_show_activity) )
    403.     {
    404.         case 3, 4:
    405.         {
    406.             new maxpl = get_maxplayers();
    407.             for (new pl = 1; pl <= maxpl; pl++)
    408.             {
    409.                 if (is_user_connected(pl) && !is_user_bot(pl))
    410.                 {
    411.                     if (is_user_admin(pl))
    412.                     {
    413.                         show_dhudmessage(pl, "%s :   %s", name, message[length])
    414.                         client_print(pl, print_notify, "%s :   %s", name, message[length])
    415.                     }
    416.                     else
    417.                     {
    418.                         show_dhudmessage(pl, "%s", message[length])
    419.                         client_print(pl, print_notify, "%s", message[length])
    420.                     }
    421.                 }
    422.             }
    423.             console_print(id, "%s :  %s", name, message[length])
    424.         }
    425.         case 2:
    426.         {
    427.             show_dhudmessage(0, "%s :   %s", name, message[length])
    428.             client_print(0, print_notify, "%s :   %s", name, message[length])
    429.             console_print(id, "%s :  %s", name, message[length])
    430.         }
    431.         default:
    432.         {
    433.             show_dhudmessage(0, "%s", message[length])
    434.             client_print(0, print_notify, "%s", message[length])
    435.             console_print(id, "%s", message[length])
    436.         }
    437.     }
    438.  
    439.     log_amx("Chat: ^"%s<%d><%s><>^" %s ^"%s^"", name, userid, authid, cmd[4], message[length])
    440.     log_message("^"%s<%d><%s><>^" triggered ^"%s^" (text ^"%s^") (color ^"%s^")", name, userid, authid, cmd, message[length], color2)
    441.  
    442.     return PLUGIN_HANDLED
    443. }
    Спасибо.
     
  2. bristol Пользователь

    Регистрация:
    10.04.15
    Сообщения:
    93
    Симпатии:
    24
    Hnt,
     

    Вложения:

    • adminchat.sma
      Размер файла:
      10,9 КБ
      Просмотров:
      12
  3. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.586
    Симпатии:
    4.156
    Пол:
    Мужской
    replace_all(msg, 190, "%", "")
     
    Hnt нравится это.
  4. Hnt Пользователь

    Регистрация:
    27.02.16
    Сообщения:
    102
    Симпатии:
    27
    Пол:
    Мужской
    bristol,
    С фиксом ,зато без dhud и colorchat как мой :)
    Ошибку выдает если:
    Код (Unknown Language):
    1. public cmdSayAdmin(id)
    2. {
    3.   new said[2]
    4.   read_argv(1, said, 1)
    5.  
    6.   if (said[0] != '@')
    7.   return PLUGIN_CONTINUE
    8.  
    9.   new message[192], name[32], authid[32], userid
    10.  
    11.   read_args(message, 191)
    12.   remove_quotes(message)
    13.   replace_all(msg, 190, "%", " ")
    14.   get_user_authid(id, authid, 31)
    15.   get_user_name(id, name, 31)
    16.   userid = get_user_userid(id)
    А если так ,все ок. Оставить? :):
    replace_all(message, charsmax(message), "%", " ")
     
  5. maFFyoZZyk Черный Жнец ^_^ Команда форума

    Регистрация:
    14.01.16
    Сообщения:
    1.236
    Симпатии:
    541
    Пол:
    Мужской
    а если
    PHP:
    1. replace_all(message, 190, "%", "")
     
    Hnt нравится это.
  6. Hnt Пользователь

    Регистрация:
    27.02.16
    Сообщения:
    102
    Симпатии:
    27
    Пол:
    Мужской
    Loose identation
     

    Вложения:

  7. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    650
    Симпатии:
    239
    Пол:
    Мужской
    Выравнивание строк.
     
    Hnt нравится это.
  8. maFFyoZZyk Черный Жнец ^_^ Команда форума

    Регистрация:
    14.01.16
    Сообщения:
    1.236
    Симпатии:
    541
    Пол:
    Мужской
    выравнивание хреновое, а так плагин скомпилин
     
    Hnt нравится это.
  9. Hnt Пользователь

    Регистрация:
    27.02.16
    Сообщения:
    102
    Симпатии:
    27
    Пол:
    Мужской
    Выровнял методом тыка ,всем спасибо тему можно прикрыть :)
     
Статус темы:
Закрыта.