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

    Регистрация:
    17.11.15
    Сообщения:
    312
    Симпатии:
    27
    Пол:
    Мужской
    Не знаю сто в нем не так, пробовал как colorchat так и chatcolor библиотеки,
    плагин работает не исправно, ошибки в спойлере

    Код (Unknown Language):
    1. #include <amxmodx>
    2. #include <amxmisc>
    3. #include <colorchat>
    4.  
    5. #define ADMIN_FLAG ADMIN_LEVEL_A     // Флаг D
    6. #define VIP_FLAG ADMIN_LEVEL_H         // Флаг T
    7.  
    8. new const PLUGIN[] = "Admin/VIP Annonce"
    9. new const VERSION[] = "1.0"
    10. new const AUTHOR[] = ""
    11.  
    12. public plugin_init()
    13. {
    14.     register_plugin( PLUGIN, VERSION, AUTHOR )
    15. }
    16.  
    17. public client_putinserver(id)
    18. {
    19.     new name[32],flags = get_user_flags(id)
    20.     get_user_name(id,name,charsmax(name))
    21.  
    22.     if(flags & ADMIN_FLAG)
    23.     {
    24.      
    25.         client_print_color(0, -2, "^1[^4VIP^1] ^1Администратор ^4%s ^1подключается к серверу.", name);
    26.         client_cmd(0, "spk misc/adminjoin.wav");
    27.         return;
    28.     }
    29.  
    30.     if(flags & VIP_FLAG)
    31.     {
    32.      
    33.         client_print_color(0, -3, "^1[^4VIP^^1] ^4VIP ^1Игрок ^4%s ^1подключается к серверу.", name);
    34.         client_cmd(0, "spk misc/adminjoin.wav");
    35.         return;
    36.     }
    37. }
    38.  
    39.  
    40. public plugin_precache()
    41.  
    42. {
    43.     precache_generic("sound/misc/adminjoin.wav");
    44. }
    45.  
    46.  
    47.  
    L 03/26/2016 - 11:35:36: Start of error session.
    L 03/26/2016 - 11:35:36: Info (map "de_dust2") (file "addons/amxmodx/logs/error_20160326.log")
    L 03/26/2016 - 11:35:36: [AMXX] Displaying debug trace (plugin "vip_connect_1337.amxx")
    L 03/26/2016 - 11:35:36: [AMXX] Run time error 4: index out of bounds
    L 03/26/2016 - 11:35:36: [AMXX] [0] colorchat.inc::client_print_color (line 145)
    L 03/26/2016 - 11:35:36: [AMXX] [1] vip_connect_1337.sma::client_putinserver (line 45)


    #if defined _colorchat_included
    #endinput
    #endif
    #define _colorchat_included
    /* ColorChat Support */
    #define NORMAL DontChange
    #define GREEN DontChange
    #define TEAM_COLOR DontChange
    #define RED Red
    #define BLUE Blue
    #define GREY Grey
    #define ColorChat client_print_color
    /* ColorChat Support */
    enum _:Colors {
    DontChange,
    Red,
    Blue,
    Grey
    }
    stock const g_szTeamName[Colors][] =
    {
    "UNASSIGNED",
    "TERRORIST",
    "CT",
    "SPECTATOR"
    }
    stock client_print_color(id, iColor=DontChange, const szMsg[], any:...)
    {
    // check if id is different from 0
    if( id && !is_user_connected(id) )
    {
    return 0;
    }
    if( iColor > Grey )
    {
    iColor = DontChange;
    }
    new szMessage[192];
    if( iColor == DontChange )
    {
    szMessage[0] = 0x04;
    }
    else
    {
    szMessage[0] = 0x03;
    }
    new iParams = numargs();
    // Specific player code
    if(id)
    {
    if( iParams == 3 )
    {
    copy(szMessage[1], charsmax(szMessage)-1, szMsg);
    }
    else
    {
    vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4);
    }
    if( iColor )
    {
    new szTeam[11]; // store current team so we can restore it
    get_user_team(id, szTeam, charsmax(szTeam));
    // set id TeamInfo in consequence
    // so SayText msg gonna show the right color
    Send_TeamInfo(id, id, g_szTeamName[iColor]);
    // Send the message
    Send_SayText(id, id, szMessage);
    // restore TeamInfo
    Send_TeamInfo(id, id, szTeam);
    }
    else
    {
    Send_SayText(id, id, szMessage);
    }
    }
    // Send message to all players
    else
    {
    // Figure out if at least 1 player is connected
    // so we don't send useless message if not
    // and we gonna use that player as team reference (aka SayText message sender) for color change
    new iPlayers[32], iNum;
    get_players(iPlayers, iNum, "ch");
    if( !iNum )
    {
    return 0;
    }
    new iFool = iPlayers[0];
    new iMlNumber, i, j;
    new Array:aStoreML = ArrayCreate();
    if( iParams >= 5 ) // ML can be used
    {
    for(j=4; j<iParams; j++)
    {
    // retrieve original param value and check if it's LANG_PLAYER value
    if( getarg(j) == LANG_PLAYER )
    {
    i=0;
    // as LANG_PLAYER == -1, check if next parm string is a registered language translation
    while( ( szMessage[ i ] = getarg( j + 1, i++ ) ) ) {}
    if( GetLangTransKey(szMessage) != TransKey_Bad )
    {
    // Store that arg as LANG_PLAYER so we can alter it later
    ArrayPushCell(aStoreML, j++);
    // Update ML array saire so we'll know 1st if ML is used,
    // 2nd how many args we have to alterate
    iMlNumber++;
    }
    }
    }
    }
    // If arraysize == 0, ML is not used
    // we can only send 1 MSG_BROADCAST message
    if( !iMlNumber )
    {
    if( iParams == 3 )
    {
    copy(szMessage[1], charsmax(szMessage)-1, szMsg);
    }
    else
    {
    vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4);
    }
    if( iColor )
    {
    new szTeam[11];
    get_user_team(iFool, szTeam, charsmax(szTeam));
    Send_TeamInfo(0, iFool, g_szTeamName[iColor]);
    Send_SayText(0, iFool, szMessage);
    Send_TeamInfo(0, iFool, szTeam);
    }
    else
    {
    Send_SayText(0, iFool, szMessage);
    }
    }
    // ML is used, we need to loop through all players,
    // format text and send a MSG_ONE_UNRELIABLE SayText message
    else
    {
    new szTeam[11], szFakeTeam[10];

    if( iColor )
    {
    get_user_team(iFool, szTeam, charsmax(szTeam));
    copy(szFakeTeam, charsmax(szFakeTeam), g_szTeamName[iColor]);
    }
    for( i = 0; i < iNum; i++ )
    {
    id = iPlayers;
    for(j=0; j<iMlNumber; j++)
    {
    // Set all LANG_PLAYER args to player index ( = id )
    // so we can format the text for that specific player
    setarg(ArrayGetCell(aStoreML, j), _, id);
    }
    // format string for specific player
    vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4);
    if( iColor )
    {
    Send_TeamInfo(id, iFool, szFakeTeam);
    Send_SayText(id, iFool, szMessage);
    Send_TeamInfo(id, iFool, szTeam);
    }
    else
    {
    Send_SayText(id, iFool, szMessage);
    }
    }
    ArrayDestroy(aStoreML);
    }
    }
    return 1;
    }
    stock Send_TeamInfo(iReceiver, iPlayerId, szTeam[])
    {
    static iTeamInfo = 0;
    if( !iTeamInfo )
    {
    iTeamInfo = get_user_msgid("TeamInfo");
    }
    message_begin(iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iTeamInfo, .player=iReceiver);
    write_byte(iPlayerId);
    write_string(szTeam);
    message_end();
    }
    stock Send_SayText(iReceiver, iPlayerId, szMessage[])
    {
    static iSayText = 0;
    if( !iSayText )
    {
    iSayText = get_user_msgid("SayText");
    }
    message_begin(iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iSayText, .player=iReceiver);
    write_byte(iPlayerId);
    write_string(szMessage);
    message_end();
    }
    stock register_dictionary_colored(const filename[])
    {
    if( !register_dictionary(filename) )
    {
    return 0;
    }
    new szFileName[256];
    get_localinfo("amxx_datadir", szFileName, charsmax(szFileName));
    format(szFileName, charsmax(szFileName), "%s/lang/%s", szFileName, filename);
    new fp = fopen(szFileName, "rt");
    if( !fp )
    {
    log_amx("Failed to open %s", szFileName);
    return 0;
    }
    new szBuffer[512], szLang[3], szKey[64], szTranslation[256], TransKey:iKey;
    while( !feof(fp) )
    {
    fgets(fp, szBuffer, charsmax(szBuffer));
    trim(szBuffer);
    if( szBuffer[0] == '[' )
    {
    strtok(szBuffer[1], szLang, charsmax(szLang), szBuffer, 1, ']');
    }
    else if( szBuffer[0] )
    {
    strbreak(szBuffer, szKey, charsmax(szKey), szTranslation, charsmax(szTranslation));
    iKey = GetLangTransKey(szKey);
    if( iKey != TransKey_Bad )
    {
    while( replace(szTranslation, charsmax(szTranslation), "!g", "^4") ){}
    while( replace(szTranslation, charsmax(szTranslation), "!t", "^3") ){}
    while( replace(szTranslation, charsmax(szTranslation), "!n", "^1") ){}
    AddTranslation(szLang, iKey, szTranslation[2]);
    }
    }
    }

    fclose(fp);
    return 1;
    }
     
  2. Lex Пользователь

    Регистрация:
    13.02.16
    Сообщения:
    41
    Симпатии:
    7
    Пол:
    Мужской
    Попробуй stocs
     
  3. ferz Пользователь

    Регистрация:
    02.03.15
    Сообщения:
    83
    Симпатии:
    69
    Пол:
    Мужской
    В самом стоке нету значений -3, -2

    А должно быть так:

    enum {
    DontChange = 0,
    Grey = -1,
    Red = -2,
    Blue = -3
    };

    Вот и выдает ошибки.

    Или используй вместо -2, -3 (Red и Blue)

    Вот, держи нормальный colorchat, в котором это все есть.
     

    Вложения:

    • colorchat.inc
      Размер файла:
      6,2 КБ
      Просмотров:
      3
    Последнее редактирование: 26.03.16
  4. kupidon Пользователь

    Регистрация:
    17.11.15
    Сообщения:
    312
    Симпатии:
    27
    Пол:
    Мужской
    ок не трогаю код, скомпилю с этим колором
     
  5. maFFyoZZyk Черный Жнец ^_^ Команда форума

    Регистрация:
    14.01.16
    Сообщения:
    1.236
    Симпатии:
    541
    Пол:
    Мужской
    new const PLUGIN[] = "Admin/VIP Annonce"
    new const VERSION[] = "1.0"
    new const AUTHOR[] = ""

    Подозреваю специально автор удален, там как пить дать твое имя было
    --- добавлено 27.03.16 ---
    сразу отпало желание помогать
     
  6. kupidon Пользователь

    Регистрация:
    17.11.15
    Сообщения:
    312
    Симпатии:
    27
    Пол:
    Мужской
    Автор не указан - обосраться...

    Плагин сделан из кусков кода что выкладывали в моем топике Анонс в чате
     
  7. maFFyoZZyk Черный Жнец ^_^ Команда форума

    Регистрация:
    14.01.16
    Сообщения:
    1.236
    Симпатии:
    541
    Пол:
    Мужской
    Из кусков? Код полностью взят и вырезаны функции, добавлены только звуки, сказки другим расскажи
     
  8. kupidon Пользователь

    Регистрация:
    17.11.15
    Сообщения:
    312
    Симпатии:
    27
    Пол:
    Мужской
    этот код ты мне и дал,
    я вырезал функцию которую ты мне указал

    что блять тебя не устраивает... там человек писал что у него ошибки, я создал тему чтобы ему исправили код
     
  9. maFFyoZZyk Черный Жнец ^_^ Команда форума

    Регистрация:
    14.01.16
    Сообщения:
    1.236
    Симпатии:
    541
    Пол:
    Мужской
    Предупреждение!

    Ни какого уважения к чужому труду
    В помощи отказано
     
Статус темы:
Закрыта.