[CCP] Custom Chat

TheZipa

Участник
Сообщения
45
Реакции
7
Как быть, если нужно, чтобы сервер добавлял уникальный префикс клиенту (который неизвестен заранее) в режиме реального времени, если все префиксы прописываются в файлы переводов? Это получается, что нужно чтобы плагин добавлял новую фразу для перевода (во время работы сервера), а только потом уже добавлял префикс в json. Может лучше плагин будет использовать просто строчку, а не фразу перевода или просто сделать натив, который будет добавлять новый префикс?
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
  • Автор ресурса
  • #62
Как быть, если нужно, чтобы сервер добавлял уникальный префикс клиенту (который неизвестен заранее) в режиме реального времени, если все префиксы прописываются в файлы переводов? Это получается, что нужно чтобы плагин добавлял новую фразу для перевода (во время работы сервера), а только потом уже добавлял префикс в json. Может лучше плагин будет использовать просто строчку, а не фразу перевода или просто сделать натив, который будет добавлять новый префикс?
Глупости какие-то, нет никакой проблемы хранить уже конечное значение в памяти.
Проверка TranslationPhraseExists() решает проблему с форматированием.
Наглядно: nyood/ccp-modules
 

TheZipa

Участник
Сообщения
45
Реакции
7
Глупости какие-то, нет никакой проблемы хранить уже конечное значение в памяти.
Проверка TranslationPhraseExists() решает проблему с форматированием.
Наглядно: nyood/ccp-modules
Я правильно понимаю, что я не могу записать префикс в json при этом не записывая фразу перевода?
У меня вот такая ошибка получается:

Error:
L 03/11/2021 - 13:53:03: [SM] Exception reported: Language phrase "[MyPrefix]" not found (arg 6)
L 03/11/2021 - 13:53:03: [SM] Blaming: ccp-customchat.smx
L 03/11/2021 - 13:53:03: [SM] Call stack trace:
L 03/11/2021 - 13:53:03: [SM]   [0] Format
L 03/11/2021 - 13:53:03: [SM]   [1] Line 326, /home/travis/build/nyood/ccp-modules/src/Custom-Chat/scripting/ccp-customchat.sp::cc_proc_OnRebuildString
L 03/11/2021 - 13:53:03: [SM]   [3] Call_Finish
L 03/11/2021 - 13:53:03: [SM]   [4] Line 23, /home/travis/build/nyood/ccprocessor/src/ccp-core/scripting/ccprocessor/forwards.sp::Call_RebuildString
L 03/11/2021 - 13:53:03: [SM]   [5] Line 335, /home/travis/build/nyood/ccprocessor/src/ccp-core/scripting/ccprocessor.sp::BuildMessage
L 03/11/2021 - 13:53:03: [SM]   [6] Line 148, /home/travis/build/nyood/ccprocessor/src/ccp-core/scripting/ccprocessor/natives.sp::Native_RebuildMessage
L 03/11/2021 - 13:53:03: [SM]   [8] ccp_RebuildMessage
L 03/11/2021 - 13:53:03: [SM]   [9] Line 135, /home/travis/build/nyood/ccprocessor/addons/sourcemod/scripting/include/ccprocessor/stocks.inc::stock_RebuildMsg
L 03/11/2021 - 13:53:03: [SM]   [10] Line 128, /home/travis/build/nyood/ccprocessor/src/ccp-handlers/scripting/ccp-saytext2.sp::SayText2_Completed
json:
[
    {
        "name":          "only_for_u",

        "type":         1,
        "value":        "STEAM_1:0:95440713",

        "priority":     3,

        "{PREFIXCO}":   "{GO}",
        "{PREFIX}":     "[MyPrefix]",
        "{NAMECO}":     "{R}",
        "{MSGCO}":      "{LG}"
    },
    {
        "name":          "only_for_root",

        "type":         2,
        "value":        "z",

        "priority":     2,

        "{PREFIXCO}":   "{PI}",
        "{PREFIX}":     "ex_root",
        "{NAMECO}":     "{G}",
        "{MSGCO}":      "{W}"
    },
    {
        "name":          "admin_group",

        "type":         3,
        "value":        "Admin",

        "priority":     1,

        "{PREFIXCO}":   "{B}",
        "{PREFIX}":     "ex_admin",
        "{NAMECO}":     "{G}",
        "{MSGCO}":      "{W}"
    }
]
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
  • Автор ресурса
  • #64
Я правильно понимаю, что я не могу записать префикс в json при этом не записывая фразу перевода?
У меня вот такая ошибка получается:

Error:
L 03/11/2021 - 13:53:03: [SM] Exception reported: Language phrase "[MyPrefix]" not found (arg 6)
L 03/11/2021 - 13:53:03: [SM] Blaming: ccp-customchat.smx
L 03/11/2021 - 13:53:03: [SM] Call stack trace:
L 03/11/2021 - 13:53:03: [SM]   [0] Format
L 03/11/2021 - 13:53:03: [SM]   [1] Line 326, /home/travis/build/nyood/ccp-modules/src/Custom-Chat/scripting/ccp-customchat.sp::cc_proc_OnRebuildString
L 03/11/2021 - 13:53:03: [SM]   [3] Call_Finish
L 03/11/2021 - 13:53:03: [SM]   [4] Line 23, /home/travis/build/nyood/ccprocessor/src/ccp-core/scripting/ccprocessor/forwards.sp::Call_RebuildString
L 03/11/2021 - 13:53:03: [SM]   [5] Line 335, /home/travis/build/nyood/ccprocessor/src/ccp-core/scripting/ccprocessor.sp::BuildMessage
L 03/11/2021 - 13:53:03: [SM]   [6] Line 148, /home/travis/build/nyood/ccprocessor/src/ccp-core/scripting/ccprocessor/natives.sp::Native_RebuildMessage
L 03/11/2021 - 13:53:03: [SM]   [8] ccp_RebuildMessage
L 03/11/2021 - 13:53:03: [SM]   [9] Line 135, /home/travis/build/nyood/ccprocessor/addons/sourcemod/scripting/include/ccprocessor/stocks.inc::stock_RebuildMsg
L 03/11/2021 - 13:53:03: [SM]   [10] Line 128, /home/travis/build/nyood/ccprocessor/src/ccp-handlers/scripting/ccp-saytext2.sp::SayText2_Completed
json:
[
    {
        "name":          "only_for_u",

        "type":         1,
        "value":        "STEAM_1:0:95440713",

        "priority":     3,

        "{PREFIXCO}":   "{GO}",
        "{PREFIX}":     "[MyPrefix]",
        "{NAMECO}":     "{R}",
        "{MSGCO}":      "{LG}"
    },
    {
        "name":          "only_for_root",

        "type":         2,
        "value":        "z",

        "priority":     2,

        "{PREFIXCO}":   "{PI}",
        "{PREFIX}":     "ex_root",
        "{NAMECO}":     "{G}",
        "{MSGCO}":      "{W}"
    },
    {
        "name":          "admin_group",

        "type":         3,
        "value":        "Admin",

        "priority":     1,

        "{PREFIXCO}":   "{B}",
        "{PREFIX}":     "ex_admin",
        "{NAMECO}":     "{G}",
        "{MSGCO}":      "{W}"
    }
]
добавьте проверку сюда и скомпилируйте: nyood/ccp-modules
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
  • Автор ресурса
  • #66
Ресурс в любом случае нужно будет обновить, ошибка может быть не у меня одного. Спасибо за ответ.
Это пользовательская потребность. Конфиг полностью прокомментирован и описаны правила его заполнения.
 

_wS_

Участник
Сообщения
383
Реакции
760
Проверка TranslationPhraseExists() решает проблему с форматированием.
Не решает. Решает это:

PHP:
if (IsTranslatedForLanguage(phrase, GetServerLanguage())
{

}
TranslationPhraseExists просто проверяет существует ли фраза, этого недостаточно.
Если фраза не переведена на язык клиента, то SM пробует перевести её на язык сервера, если и на язык сервера не удалось, то выдаёт ошибку.

---
Кст, на счёт перевода, открыта новая тайна: "%t" неправильно работает в PrintToConsole, ибо они не сделали g_pSM->SetGlobalTarget.
Вместо языка клиента может принудительно показывать язык сервера.
 
Последнее редактирование:

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
  • Автор ресурса
  • #68
TranslationPhraseExists просто проверяет существует ли фраза, этого недостаточно.
Если фраза не переведена на язык клиента, то SM пробует перевести её на язык сервера, если и на язык сервера не удалось, то выдаёт ошибку.
Этого вполне достаточно , тк наличие этой самой фразы без перевода на язык сервера поднимает соответствующие вопросики к администратору в виде исключения. Если же мы хотим обработать этот момент самостоятельно, то тогда - да и проверка на наличие перевода на конкретный язык имеет смысл
 

TheZipa

Участник
Сообщения
45
Реакции
7
Не решает. Решает это:

PHP:
if (IsTranslatedForLanguage(phrase, GetServerLanguage())
{

}
TranslationPhraseExists просто проверяет существует ли фраза, этого недостаточно.
Если фраза не переведена на язык клиента, то SM пробует перевести её на язык сервера, если и на язык сервера не удалось, то выдаёт ошибку.

---
Кст, на счёт перевода, открыта новая тайна: "%t" неправильно работает в PrintToConsole, ибо они не сделали g_pSM->SetGlobalTarget.
Вместо языка клиента может принудительно показывать язык сервера.
Для того, чтобы полностью не использовать файлы переводов для префиксов, мне этой модернизации хватило и пока ошибок не наблюдал. Я ещё протестирую несколько раз и дам знать, если наткнусь на проблемы.
 

_wS_

Участник
Сообщения
383
Реакции
760
Этого вполне достаточно , тк наличие этой самой фразы без перевода на язык сервера поднимает соответствующие вопросики к администратору в виде исключения.
Т.е. ты серьезно не против выслушивать жалобы про "Language phrase "..." not found? Ладно если бы это был просто спам в логах, но ошибка ломает функции (если ниже есть код). Есть простое решение, но похоже твоя гордость сильнее, тогда да, пусть лучше будут ошибки, заодно можно дополнительно где-то в описании поумалять пользователей, чтобы они обязательно переводили фразы на язык сервера. И яблоко пусть будет в саду (я про Еву и тд), и провод под напряжением со словами к ребенку "не трогай, а то убьёт", вместо того, чтобы просто сделать delete/hide провод.
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
  • Автор ресурса
  • #71
Есть простое решение, но похоже твоя гордость сильнее, тогда да, пусть лучше будут ошибки, заодно можно дополнительно где-то в описании поумалять пользователей, чтобы они обязательно переводили фразы на язык сервера
Что ж, походу моя гордость - Ноев ковчег.
 
Последнее редактирование:

John710

Участник
Сообщения
4
Реакции
1
Подскажи куда копать - В логах все чисто, но команда !prefix не вызывает меню. Будто бы плагина вообще нет.
Пробую на полностью чистый сервер cs:go, только сурсмод, метамод, ccp-core, ccp-packager, sm-jansson, ccp-customchat

Сразу не проверил, оказывается плагин не загружается в sm plugins list его просто нет.
 
Последнее редактирование:

_wS_

Участник
Сообщения
383
Реакции
760
Пришло уведомление, решил немного поспорить дальше, можно?)

да и проверка на наличие перевода на конкретный язык имеет смысл
Если проверка делается с целью "отправить сообщение игроку, если фраза переведена на ЕГО язык", то нет же смысла.
Если он есть, покажи пжалст, интересно =)
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
  • Автор ресурса
  • #75
Пришло уведомление, решил немного поспорить дальше, можно?)
Сорри, но позвольте поинтересоваться, Вы все это время подбирали аргументы и выстроивали линию защиты? Если это так, то у меня нет и шанса...
 
  • Фэйспалм
Реакции: _wS_

_wS_

Участник
Сообщения
383
Реакции
760
Сорри, но позвольте поинтересоваться, Вы все это время подбирали аргументы и выстроивали линию защиты? Если это так, то у меня нет и шанса...
Я ж говорю, пришло уведомление (колокол вверху), видимо подписка на тему осталась, и почему-то захотелось вспомнить былое 🦕
Но судя по ответу, похоже нет смысла, ибо мистер nyood не из тех, кто признаёт свои ошибки, он всегда прав 🐴
О ещё и клоуна мне влепил, найс =)
Нет чтобы сказать истину, вроде "Да, ты прав, спс.", а ты крутишься и никак не хочешь признавать фэйл.
Я бы только спасибо сказал тому, кто нашёл у меня где-то ошибку. Omg.
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
  • Автор ресурса
  • #77
Я ж говорю, пришло уведомление (колокол вверху), видимо подписка на тему осталась, и почему-то захотелось вспомнить былое 🦕
Но судя по ответу, похоже нет смысла, ибо мистер nyood не из тех, кто признаёт свои ошибки, он всегда прав 🐴
Бог с ним с этим колоколом.
К сожалению, мистер nyood просто не проникся дискуссией, которую Вы, почему-то, заклеймили спором и по каким-то неведомым ему причинам решили защищать деструктивные действия третьей стороны
 

John710

Участник
Сообщения
4
Реакции
1
Вы тут серьезно спор устроили? Идите в личку.
@nyood, ответь пожалуйста на вопрос по теме, выше.
 
  • Мне нравится
Реакции: _wS_

_wS_

Участник
Сообщения
383
Реакции
760
Такая манера речи, как-будто я в суде, пришлось гуглить некоторые слова, чтобы их понять =)

Проверка TranslationPhraseExists() решает проблему с форматированием.
Это же фейк, false, неправда, не решает же это проблему, а решает проверка переведена ли фраза на ЯЗЫК СЕРВЕРА. Если фраза существует, то не факт, что она переведена на язык сервера, а это значит, что есть шанс: Language phrase "x" not found. Ты тут что-то говоришь, "о, ну это виноват владелец сервера, почему он не добавил перевод", а почему ты обязываешь его добавлять перевод и вообще рассчитываешь на это? Разве задача не в том, чтобы избежать ошибки Language phrase "x" not found? Тебе как раз подсказали, как это сделать более правильно.

не проникся дискуссией
Ну да, зачем, тебе всего-лишь указывают на твои ошибки, и не с целью как-то унизить или ещё что, а чтобы помочь/прийти к истине (неважно кто прав).

Покупка твоего продукта заново при смене айпи клиента, есть большая ошибка.
Так не совершай её =)
Перед покупкой прекрасно видно соглашение/условия.
Ошибкой является и вера в то, что якобы у кого-то сменился адрес, хотя он просто захотел бесплатный plugin на другой сервер.
 
Сверху Снизу