Фильтр пробела в чат-логе Discord

Статус
В этой теме нельзя размещать новые ответы.

b1ngoo

Участник
Сообщения
33
Реакции
3
Здравствуйте! Я новичок в SourcePawn, не судите строго😅

Появилась такая проблема.. Установил ядро плагина [Discord] Core в его описании как пример был "простой логгер чата" (см. спойлер)
PHP:
#include <sourcemod>
#include <discord_extended>

#pragma semicolon 1
#pragma newdecls required

public void OnPluginStart() {
    AddCommandListener(OnClientUseChat, "say");
    AddCommandListener(OnClientUseChat, "say_team");
}

public Action OnClientUseChat(int iClient, const char[] szCommand, int iArgCount) {
    if (!iClient || !IsClientInGame(iClient))
        return Plugin_Continue;

    char szMessage[256];
    GetCmdArgString(szMessage, sizeof(szMessage));

    Discord_StartMessage();
    Discord_SetUsername("Chat Logger");
    Discord_SetContent("[B]%N[/B], используя %sтекстовый чат, сказал:\n`[ICODE]\n%s\n[/ICODE]`", iClient, szCommand[3] == '_' ? "командный " : "", szMessage);
    Discord_EndMessage("chat_logger", true); // отправляем сообщение на веб-хук chat_logger из конфига, одобряя использование стандартного веб-хука, если нужного нет.

    return Plugin_Continue;
}
Но в итоге, если человек открывает чат и закрывает его нажатием Enter (или пишет в консоль просто say), приходит сообщение в дискорд такого типа: 𝐁𝖎𝖓𝖌𝖔 : "" или такого: 𝐁𝖎𝖓𝖌𝖔 : " " (если он нажал пробел и отправил сообщение).
Пытался сделать так сказать "фильтр пробела" таким образом:
Код:
char szMessage[256];
GetCmdArgString(szMessage, sizeof(szMessage));
if(!szMessage[0] || szMessage[0] == ' '){
    return Plugin_Handled;
    }
    else
    {
    Discord_SetUsername("MIRAGE Chat");
    Discord_SetContent("%s [B]%N[/B] : %s", szCommand[3] == '_' ? "(Team)" : "", iClient, szMessage);
    return Plugin_Continue;
    }
}
...но ничего не получилось! Подскажите в чём проблема?

P.S. Извините, если не туда пишу или не в ту тему...
 

DeathScore13

пирожок. пирожочек.
Сообщения
734
Реакции
403

b1ngoo

Участник
Сообщения
33
Реакции
3
прошу прощения, забыл что там ставятся кавЫчки
C-подобный:
TrimString(szMessage);
StripQuotes(szMessage);
if (!szMessage[0]) return;
Всё равно не робит... Не приходят сообщения в ДС..
Вставил PrintToChat пробелы, кавычки всё равно проходят...
Сообщения автоматически склеены:

Code:
#include <sourcemod>
#include <discord_extended>

#pragma semicolon 1
#pragma newdecls required

public void OnPluginStart() {
    AddCommandListener(OnClientUseChat, "say");
    AddCommandListener(OnClientUseChat, "say_team");
    AddCommandListener(OnClientUseChat, "sm_psay");
    AddCommandListener(OnClientUseChat, "sm_hsay");
    AddCommandListener(OnClientUseChat, "sm_csay");
    AddCommandListener(OnClientUseChat, "sm_tsay");
    AddCommandListener(OnClientUseChat, "sm_pmsay");
}

public Action OnClientUseChat(int iClient, const char[] szCommand, int iArgCount) {
    if (!iClient || !IsClientInGame(iClient))
        return Plugin_Continue;

    char szMessage[256];
    GetCmdArgString(szMessage, sizeof(szMessage));
  
    TrimString(szMessage);
    StripQuotes(szMessage);
    if (!szMessage[0])
    {
        return Plugin_Handled;
    }
    else
    {
    Discord_SetUsername("MIRAGE Chat");
    Discord_SetContent("%s [B]%N[/B] : %s", szCommand[3] == '_' ? "(Team)" : "", iClient, szMessage);
    Discord_EndMessage("chat_logger", true);
        return Plugin_Continue;
    }
}
может я что-то сделал не так? поправьте пожалуйста..😓
 
Последнее редактирование:

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
Всё равно не робит... Не приходят сообщения в ДС..
Вставил PrintToChat пробелы, кавычки всё равно проходят...
Сообщения автоматически склеены:

Code:
#include <sourcemod>
#include <discord_extended>

#pragma semicolon 1
#pragma newdecls required

public void OnPluginStart() {
    AddCommandListener(OnClientUseChat, "say");
    AddCommandListener(OnClientUseChat, "say_team");
    AddCommandListener(OnClientUseChat, "sm_psay");
    AddCommandListener(OnClientUseChat, "sm_hsay");
    AddCommandListener(OnClientUseChat, "sm_csay");
    AddCommandListener(OnClientUseChat, "sm_tsay");
    AddCommandListener(OnClientUseChat, "sm_pmsay");
}

public Action OnClientUseChat(int iClient, const char[] szCommand, int iArgCount) {
    if (!iClient || !IsClientInGame(iClient))
        return Plugin_Continue;

    char szMessage[256];
    GetCmdArgString(szMessage, sizeof(szMessage));

    TrimString(szMessage);
    StripQuotes(szMessage);
    if (!szMessage[0])
    {
        return Plugin_Handled;
    }
    else
    {
    Discord_SetUsername("MIRAGE Chat");
    Discord_SetContent("%s [B]%N[/B] : %s", szCommand[3] == '_' ? "(Team)" : "", iClient, szMessage);
    Discord_EndMessage("chat_logger", true);
        return Plugin_Continue;
    }
}
может я что-то сделал не так? поправьте пожалуйста..😓
C-подобный:
#pragma newdecls required

#include <discord_extended>

public Action OnClientSayCommand(int iClient, const char[] command, const char[] args) {
    if(!IsChatTrigger() && iClient && IsClietInGame(iClient) && !IsFakeClient(iClient)) {
        int i, len = strlen(args);
        while(i < len) {
            // 33 = '!'
            if(args[i] >= 33) {
                break;
            }

            i++;
        }

        if(len && i != len && args[i] >= 33) {
            char szMessage[PLATFORM_MAX_PATH];
            strcopy(szMessage, sizeof(szMessage), args);
            TrimString(szMessage);

            char szName[MAX_NAME_LENGTH];
            GetClientName(iClient, szName, sizeof(szName));

            Discord_SetUsername("MIRAGE Chat");
            Discord_SetContent("%s[B]%s[/B] : %s", command[3] == '_' ? "(Team) " : "", szName, szMessage);
            Discord_EndMessage("chat_logger", true);
        }
    }

    return Plugin_Continue;
}
 

b1ngoo

Участник
Сообщения
33
Реакции
3
C-подобный:
#pragma newdecls required

#include <discord_extended>

public Action OnClientSayCommand(int iClient, const char[] command, const char[] args) {
    if(!IsChatTrigger() && iClient && IsClietInGame(iClient) && !IsFakeClient(iClient)) {
        int i, len = strlen(args);
        while(i < len) {
            // 33 = '!'
            if(args[i] >= 33) {
                break;
            }

            i++;
        }

        if(len && i != len && args[i] >= 33) {
            char szMessage[PLATFORM_MAX_PATH];
            strcopy(szMessage, sizeof(szMessage), args);
            TrimString(szMessage);

            char szName[MAX_NAME_LENGTH];
            GetClientName(iClient, szName, sizeof(szName));

            Discord_SetUsername("MIRAGE Chat");
            Discord_SetContent("%s[B]%s[/B] : %s", command[3] == '_' ? "(Team) " : "", szName, szMessage);
            Discord_EndMessage("chat_logger", true);
        }
    }

    return Plugin_Continue;
}
Так-же не приходит сообщение в ДС..
P.S: в 6 строке IsClietInGame(iClient) > IsClientInGame(iClient)
 

b1ngoo

Участник
Сообщения
33
Реакции
3
Тему можно закрывать.. Ответа я так и не нашел. Спасибо
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу