Префикс город (sxgeo)

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
511
Реакции
111
Помог
16 раз(а)
Решил сделать в чат менеджере мистика префикс города, при этом не понимая как правильно это сделать. Методом тыка получилось,но я не уверен что все верно,помогите пожалуйста что еще я упустил,кроме проверки на bot hltv живой не живой и тд,это понятно.

1627577655428.png

Собственно в public FormatMessage было добавлено аналогично как в плагинах подобного типа (например sxgeo connect info )

Код:
    new szIP[16];
    get_user_ip(sender, szIP, charsmax(szIP), 0);
    new szCountry[64];
    new bool:bCountryFound = sxgeo_country(szIP, szCountry, charsmax(szCountry), "ru");
    if (bCountryFound)
    len += formatex(text[len], charsmax(text) - len, "^1[^4%s^1] ", szCountry);
из инкуда sxgeo

Код:
/*
* Look up the full country name for the given IP address.
*
* @param ip         The IP address to look up.
* @param output     The output of the sxgeo look up.
* @param len        The maximum length of the output buffer.
* @param lang       Which language to the output of result the sxgeo lookup.
*                   Supported languages:
*                   "ru", "en"
*
* @return           true on a successful lookup, false on a failed lookup.
*/
native bool:sxgeo_country(const ip[], output[], const len, const lang[] = "en");
вопрос то больше в том что правильно что по сути каждый раз при написании сообщения сервер будет дергать эту инфу что бы вывести город,правильно ли это?
или есть другой вариант
 
Сообщения
94
Реакции
64
Помог
5 раз(а)
r1nk0, тебе нужно создать глобальный массив для всех игроков, а потом в client_putinserver получать информацию как ты делал выше и записывать ее в этот массив (что бы как ты сам выше писал не дергать постоянно инфу), а потом при форматировании сообщения использовать глобальный массив для подстановки ранее записанного значения
 
Сообщения
511
Реакции
111
Помог
16 раз(а)
@Dager,ну вот с этим то у меня и проблемы,я тут то еле замутил :D куда мне массивы,ну я сначала так и думал что в client_putinserver и там должно 1 раз хранится все,и потом уже берется

Тут ты писал по идее решение,но там под geoip а он вроде хуже работает
 
Последнее редактирование:
Сообщения
94
Реакции
64
Помог
5 раз(а)
массив для страны и в будущем может город захочешь вывести вместо страны
C:
enum _geo_info
{
    _city[64],
    _country[64]
}
new geo_data[MAX_PLAYERS + 1][_geo_info];
при заходе игрока
C:
public client_putinserver(id)
{
    if (!is_user_bot(id) || !is_user_hltv(id))
    {
        new szIP[16], szCountry[64], szCity[64];
        get_user_ip(id, szIP, charsmax(szIP), 0);

        new bool:bCountryFound = sxgeo_country(szIP, szCountry, charsmax(szCountry), "ru");
        new bool:bCityFound = sxgeo_city(szIP, szCity, charsmax(szCity), "ru");

        if (bCountryFound)
        {
            if (equali(szCountry, ""))
                copy(geo_data[id][_country], charsmax(geo_data[][_country]), "Страна 007");
            else
                copy(geo_data[id][_country], charsmax(geo_data[][_country]), szCountry);
        }
        else
        {
            copy(geo_data[id][_country], charsmax(geo_data[][_country]), "Страна 007");
        }

        if (bCityFound)
        {
            if (equali(szCity, ""))
                copy(geo_data[id][_city], charsmax(geo_data[][_city]), "Город 007");
            else
                copy(geo_data[id][_city], charsmax(geo_data[][_city]), szCity);
        }
        else
        {
            copy(geo_data[id][_city], charsmax(geo_data[][_city]), "Город 007");
        }
    }
}
ну и форматирование как ты делал в функции отправки сообщения, где id это тот, кто отправляет сообщение
C:
len += formatex(text[len], charsmax(text) - len, "^1[^4%s^1] ", geo_data[id][_country]);
далее все тесты за тобой
 
Сообщения
511
Реакции
111
Помог
16 раз(а)
@Dager,Все работает как и хотел,спасибо
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.

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

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