Плагин Lite Translit + Город

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
37
Реакции
9
Всем доброго вечера.
Народ, помогите пожалуйста объединить Два плагина.
Я особо не фонтан в скриптинге, но некоторые получается переделать под себя, а с этими, не могу допетрить, как правильно их скомпоновать.
И так, суть моей хотелки, допилить в плагин Lite Translit, вывод в чат города, из которого сам игрок.

Пример:
[Префикс][Город] Ник: всем привет.

Я немного подшаманил, но у меня так же немного не получилось, показывает это так:
Безымянный.png
Проблема заключается в том, что...
1. Показывает не полностью, это видно на скрине. (хотелось бы естественно исправить)
2. Показывает не твой город, а город того, кто только что зашёл на сервер.
Допустим, при конекте на сервер, показывает мол: Ник такой-то подключается из города Такого-то.
После того, как он подключился, любой из игроков, кто напишет что-нибудь в чат, будет писать Город последнего зашедшего на сервер.

Вот куски кода, которые я вставлял:
Код:
public plugin_init()
{
#define VERSION "2.8"
    register_plugin("Lite Translit", VERSION, "neygomon");
    register_cvar("lt_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
   
    register_clcmd("say /rus", "LangCtrlRus");
    register_clcmd("say /eng", "LangCtrlEng");
   
    register_clcmd("say", "HandlerSay");
    register_clcmd("say_team", "HandlerSayTeam");
   
    register_event("ResetHUD", "eResetHUD", "be");
    register_event("DeathMsg", "eDeathMsg", "a", "1>0");
}

enum _data
{
    _ip[16],
    _name[64],
    _city[64],
    _cc2iso[3],
    _country[32],
    _region[64]
}

new data[_data];
Код:
public client_putinserver(id)
{
#if defined LT_PREFIXES
    SearchClient(id);
#endif   
#if defined DEF_RUS
    g_bUseRus[id] = true;
#else
    g_bUseRus[id] = false;
#endif
#if defined STEAM
    g_bIsSteam[id] = is_user_steam(id) ? true : false;
#endif
#if defined ADMIN_ALLCHAT
    if(get_user_flags(id) & ADMIN_CHAT) SetBit(g_bitAdmin, id);
    else ResetBit(g_bitAdmin, id);
#endif
    if(is_user_bot(id) || is_user_hltv(id))
        return;

    get_user_ip(id,data[_ip],15,1);
    get_user_name(id,data[_name],63);

    sxgeo_data(data[_ip],data[_city],63,data[_country],63,data[_region],63,data[_cc2iso],2);
}
В чате (не знаю точно, в том месте или нет) я естественно дописал параметр:
Код:
#if defined TAGS   
    #if defined LT_PREFIXES
    if(g_szPrefix[id][0])
    {
        replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!n", "^1");
        replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!t", "^3");
        replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!g", "^4");
        iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^1[^4%s^1][^4%s^1]", g_szPrefix[id], data[_city][id]);
    }
Помогите пожалуйста, или направьте в правильное русло.
Спасибо.
Сам Lite Translit с моей переделкой.
 

Download all Attachments

Сообщения
94
Реакции
64
Помог
5 раз(а)
urpok, объявление вынеси желательно над public plugin_init() и у тебя там сразу ошибка, надо так
C++:
enum _data
{
    _ip[16],
    _name[64],
    _city[64],
    _cc2iso[3],
    _country[32],
    _region[64]
}
new data[33][_data];
после в public client_putinserver(id) опять у тебя чуть неправильно, надо так
C++:
get_user_ip(id, data[id][_ip], 15, 1);
get_user_name(id, data[id][_name], 63);
sxgeo_data(data[id][_ip], data[id][_city], 63, data[id][_country], 63, data[id][_region], 63, data[id][_cc2iso], 2);
и строку формировать после закрытия блока #if defined TAGS, а не в нем как у тебя сейчас
C++:
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^1[^4%s^1] ", data[id][_city]);
но желательно еще делать проверку, если название города вернет строку error и будет так и писать вместо города error
 

ssx

Сообщения
289
Реакции
73
а чем #include sypexgeo лучше использовать чем стандартный geoip2 ?
 
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
Пример вывода в чат что игрок подключился с geoip:
Код:
#include <amxmodx>
#include <geoip>

#if AMXX_VERSION_NUM < 183
    #include <colorchat>

    const MAX_PLAYERS = 32
    const MAX_NAME_LENGTH = 32
#endif

#define PLUGIN_NAME    "City After Connect"
#define PLUGIN_DATE    "15.04.2018"
#define PLUGIN_AUTHOR    "w0w"

new g_szCity[MAX_PLAYERS + 1][32]

public plugin_init() register_plugin(PLUGIN_NAME, PLUGIN_DATE, PLUGIN_AUTHOR)

public client_putinserver(id)
{
    if(is_user_bot(id) || is_user_hltv(id)) return

    new szIP[16]; get_user_ip(id, szIP, charsmax(szIP))
    geoip_city(szIP, g_szCity[id], charsmax(g_szCity[]))

    new szName[MAX_NAME_LENGTH]; get_user_name(id, szName, charsmax(szName))
    client_print_color(0, print_team_default, "^4* ^1Игрок ^3%s ^1присоединился! [^4%s^1]", szName, g_szCity[id][0] ? g_szCity[id] : "?")
}

Далее можно где угодно выводить: в меню, худ... используя g_szCity[id]
 
Последнее редактирование:
Сообщения
37
Реакции
9
ssx, Новая и обновлённая Библиотека с русскими названиями городов. (хотя, она уже старая)
16 Апр 2018
Немного по-крутил, по-вертел, как-то так.
Работает.png
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу