Chat Responses

Тема в разделе "Запросы", создана пользователем diller110, 9 сен 2014.

  1. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    47
    Прошу сделать аналог Simple Chat Responses, для CS GO. А именно автоответчик на сообщения. К примеру: Игрок пишет в чат слово
    Updates или фразу "Show me updates", и в чат/меню выводится из файла настроек записанные последние обновления на сервере. Пригодится так же для таких фраз как: Дай админку, Правила, Vip.
    Желательно (незнаю может для этого отдельно что-то надо), чтобы распознавал команды c "!" и "/" - таким образом получается почти универсальный информационный плагин.

    Если слишком требовательный запрос готов заплатить.

    Прим.: Насчет фразы, надо чтобы был не поиск во всём сообщении слова например updates, и срабатывания на это, а именно конкретной фразы "Show me updates" или любой другой из конфига. Во избежание лишних
    ошибок.
     
  2. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.505
    Симпатии:
    1.960
    Это нетрудно, благо всё предусмотрено. Считывание всех фраз и ответов к ним из файла - вот это посложнее. Если без файлов, то вообще легко, бесплатно могут написать.
     
  3. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.977
    diller110, если будешь юзать русский то будут проблемы с регистром и на их решение придется тратить время и ресурсы.
     
  4. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    47
    Если возьметесь на плагин с конфигурацией, готов заплатить. Не то чтобы сам потом исходник подправить не смогу, просто обновления и проч. плюшки каждый раз изменять и компилировать не дело.

    Если проблема по типу: Updates не updates и не UpDaTeS, то думаю решать эту проблему в лоб. Дублировать на каждый вариант регистра. Хотя, если это не чересчур затратно, хотелось бы с фиксом этого недочёта.
     
  5. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    47
    Да, имел ввиду пример русского регистра.
    _ _ _
    В любом случае: Решать или не решать проблему дело ваше. Только скажите что при этом нельзя будет использовать.
     
  6. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.977
    diller110, я сразу написал что при использовании русского языка.
    Т.к. у SP проблема с ним, а в частности с регистрами. Поэтому использовать чувствительность к регистру при работе с русским текстом не выйдет.


    AlmazON, кстати, ты не проверял как именно это выражается, функции всегда чувствительны к регистру или наоборот игнорируют его (что в даном случае было бы к стати)?
     
  7. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.505
    Симпатии:
    1.960
    Ты о чём? Если на примере, как выше, то просто игнорируют. Хоть поиск строки, хоть сравнение. Даже через Regex не всё так просто.
     
  8. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    47
    То есть проблема весьма затратная для осуществления? А если тогда просто английские слова фразы. На подобии примера первого поста. Также, трудно ли будет включить библиотеку цветов CS GO colors и будет ли она работать в меню?
     
  9. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.977
    Можно просто изменять регистр всех символов на маленький и тогда уже искать фразу в конфигах.
     
  10. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.977
    AlmazON,
    Если с русски не проканает то мне komashchenko скинул код делающий это.
     
    AlmazON нравится это.
  11. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.977
    Удивлен что ты не видел.

    Да не, там всё нормально.
     
  12. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    47
    Вижу вы заинтересованы)
    это можно например взять из оригинального плагина.

    Пользуясь случаем и вашим опытом посоветуйте рабочий !admins (adminlist) плагин для cs go, перепробывал все что были на alliedmodders, никак.
     
  13. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.977
    Надо проверить..
     
  14. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.505
    Симпатии:
    1.960
    Не будет походу... Для этого используются побайтовые многочисленные сравнения (туда-сюда, правда сразу)... И да, работает!
     
  15. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    47
    А всё таки кто нибудь возьмется? Даже без считывания русских фраз.
     
  16. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.505
    Симпатии:
    1.960
    Бесплатно предложил без файлов так сделать. А с файлами надо больше думать.
     
  17. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    47
    Давай без файлов, потом в случае необходимости подумаем о "большем".
     
  18. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    47
    Вопрос актуален. Цена ваша.
     
  19. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.505
    Симпатии:
    1.960
    diller110, проснулся... Мне пока не до этого.
     
  20. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    без проверок и т.п.
    PHP:
    #include <sourcemod>
    #include <sdktools>

    #define FILE "addons/sourcemod/configs/chat_responses.cfg"

    new Handle:GlobalArray[2] = {INVALID_HANDLE, ...};

    public 
    OnPluginStart()
    {
        
    RegServerCmd("chat_reload"Callback);

        
    AddCommandListener(ACL_Callback"say");
        
    AddCommandListener(ACL_Callback"say_team");

        for (new 
    02i++)
        {
            
    GlobalArray[i] = CreateArray(256);
        }

        
    OnCreateArray();
    }

    public 
    Action:Callback(args)
    {
        for (new 
    02i++)
        {
            
    ClearArray(GlobalArray[i]);
        }

        
    OnCreateArray();

        
    PrintToServer("File %s successful reloaded"FILE);

        return 
    Plugin_Handled;
    }

    public 
    OnCreateArray()
    {
        new 
    Handle:kv CreateKeyValues("chat_responses");

        if (!
    FileToKeyValues(kvFILE)) 
        { 
            
    SetFailState("Could not open file '%s'"FILE);
        }
        else
        {
            if (
    KvGotoFirstSubKey(kv))
            {
                
    decl String:buffer[2][256];
                do
                {
                    
    KvGetString(kv"param1"buffer[0], 256);
                    
    KvGetString(kv"param2"buffer[1], 256);

                    for (new 
    02i++)
                    {
                        
    PushArrayString(GlobalArray[i], buffer[i]);
                    }
                }
                while (
    KvGotoNextKey(kv));
            }
            else
            {
                
    SetFailState("File is empty");
            }
        }

        
    CloseHandle(kv);
    }

    public 
    Action:ACL_Callback(client, const String:command[], argc)
    {
        
    decl String:buffer[256];
        
    GetCmdArgString(buffer256);
        
    StripQuotes(buffer);

        new 
    FindStringInArray(GlobalArray[0], buffer);
        if (
    != -1)
        {
            
    GetArrayString(GlobalArray[1], xbuffer256);
            
    PrintToChat(client"%s"buffer);
        }
    }
    PHP:
    "chat_responses"
    {
        
    "1"
        
    {
            
    "param1"    "update"
            "param2"    "UPDATE NEW"
        
    }

        
    "2"
        
    {
            
    "param1"    "Test"
            "param2"    "TEST GREAT"
        
    }

        
    "3"
        
    {
            
    "param1"    "проверка"
            "param2"    "ПРОВЕРКА"
        
    }

        
    "4"
        
    {
            
    "param1"    "пРовЕрка"
            "param2"    "ПРОВЕРКА (аа)"
        
    }

    }
     
    diller110 нравится это.