PDA

Просмотр полной версии : [Include] g_geolocation



Geebrox
06.07.2016, 20:54
Автор: Я


Версия: 1


Описание:


Распознает название страны игрока по IP-адресу и сохраняет его в переменной player_country[playerid].
Если не удалось определить страну игрока, то система вместо названия страны напишет: "Неизвестно" или "--", если был использован параметр сокращения названия страны


Параметры:


G_GEO_COUNTRY_LESS - сокращает название страны до 2 символов, к примеру Russia = RU
G_GEO_SEND_COUNTRY_INFO - отправляет в общий чат информацию о подключение игрока, имя игрока и название страны



Пример:

//Добавляем перед подключением инклуда, один из параметров:
#define G_GEO_SEND_COUNTRY_INFO //Описание параметра можете найти чуть выше
//подключаем сам инклуд
#include <g_geolocation>


Примечание:


Для корректной работы инклуда требуется подключить инклуды: sscanf2 и a_http


Скачать:


GitHub (https://github.com/Geebrox/Pawn/blob/master/g_geolocation/g_geolocation.inc)


Авторские права:


Нельзя выкладывать в другие источники!


Жду ваших отзывов и предложение для дальнейших версий!

Desulaid
07.07.2016, 19:14
Можно продублировать подключение инклуда, ничего этому не помешает.

Зачем решать за других как будет называться массив? Лучше бы функцию определил и значение передал ей. И чем форматировать, можно воспользоваться операцией конкатенации (понтуюсь. конкатенация - скрепление - strcat()).

Geebrox
08.07.2016, 13:14
Можно продублировать подключение инклуда, ничего этому не помешает.

Зачем решать за других как будет называться массив? Лучше бы функцию определил и значение передал ей. И чем форматировать, можно воспользоваться операцией конкатенации (понтуюсь. конкатенация - скрепление - strcat()).

Учту)

m1n1vv
08.07.2016, 21:27
#if defined G_GEO_SEND_COUNTRY_INFO
const MAX_MES = 30;
new g_geo_name[MAX_PLAYER_NAME];
GetPlayerName(playerid, g_geo_name, MAX_PLAYER_NAME);
new str[MAX_MES] = !"Новое подключение! Имя: [ {CD0000}";
strcat(str, g_geo_name);
strcat(str, !"{ffffff} ] Страна: [ {CD0000}");
strcat(str, player_country[playerid]);
strcat(str, !"{ffffff} ]");
SendClientMessageToAll(-1, str);
#endif

Geebrox
08.07.2016, 21:35
#if defined G_GEO_SEND_COUNTRY_INFO
const MAX_MES = 30;
new g_geo_name[MAX_PLAYER_NAME];
GetPlayerName(playerid, g_geo_name, MAX_PLAYER_NAME);
new str = !"Новое подключение! Имя: [ {CD0000}";
strcat(str, g_geo_name);
strcat(str, !"{ffffff} ] Страна: [ {CD0000}");
strcat(str, player_country[playerid]);
strcat(str, !"{ffffff} ]");
SendClientMessageToAll(-1, message);
#endif

Я не просил код и перепроверь свой код :acute:

m1n1vv
08.07.2016, 21:38
Я не просил код и перепроверь свой код :acute:
Невнимательность )

А не проще сделать выбор

#define G_GEO_COUNTRY_INFO (1)
или

#define G_GEO_COUNTRY_INFO (2)
и в условии проверять значение G_GEO_COUNTRY_INFO?

Geebrox
08.07.2016, 22:37
А не проще сделать выбор

#define G_GEO_COUNTRY_INFO (1)
или

#define G_GEO_COUNTRY_INFO (2)
и в условии проверять значение G_GEO_COUNTRY_INFO?

Не вижу смысла

m1n1vv
08.07.2016, 22:40
Не вижу смысла


#define G_GEO_COUNTRY_INFO (1)
#if G_GEO_COUNTRY_INFO == 1
//код
#else
//код
#endif

Geebrox
08.07.2016, 22:42
#define G_GEO_COUNTRY_INFO (1)
#if G_GEO_COUNTRY_INFO == 1
//код
#else
//код
#endif

В чем СМЫСЛ? Отличие от моих макросов?

m1n1vv
08.07.2016, 22:44
В чем СМЫСЛ? Отличие от моих макросов?

В удобстве.
Удобней просто поменять цифру, чем заново писать G_GEO_COUNTRY_LESS или G_GEO_SEND_COUNTRY_INFO.

Geebrox
08.07.2016, 22:47
В удобстве.
Удобней просто поменять цифру, чем заново писать G_GEO_COUNTRY_LESS или G_GEO_SEND_COUNTRY_INFO.

уверен?

А если я хочу сразу включить и G_GEO_COUNTRY_LESS и G_GEO_SEND_COUNTRY_INFO? То какую цифру ставить? или нужно придумать для каждой цифре отдельное предназначение и запоминать эти цифры и что они делают? Прости-ка, это для меня просто убого, а называть макросы по их предназначениям, увеличивает удобства при использование их

m1n1vv
08.07.2016, 22:58
А если я хочу сразу включить и G_GEO_COUNTRY_LESS и G_GEO_SEND_COUNTRY_INFO? То какую цифру ставить?
Но если ты даже сразу включишь G_GEO_COUNTRY_LESS и G_GEO_SEND_COUNTRY_INFO, то выполнится только G_GEO_COUNTRY_LESS

Geebrox
08.07.2016, 22:59
Но если ты даже сразу включишь G_GEO_COUNTRY_LESS и G_GEO_SEND_COUNTRY_INFO, то выполнится только G_GEO_COUNTRY_LESS

Откуда такая инфа?

m1n1vv
08.07.2016, 23:05
Откуда такая инфа?

По условию. И для убедительности протестировал.

Geebrox
08.07.2016, 23:06
Протестировал

Пожалуйста не надо обманывать) лично для тебя подключил сейчас инклуд включил обе параметра и сделал скриншот:

http://i.imgur.com/mIRfsTZ.png

m1n1vv
08.07.2016, 23:08
Пожалуйста не надо обманывать) лично для тебя подключил сейчас инклуд включил обе параметра и сделал скриншот:

http://i.imgur.com/mIRfsTZ.png

И где G_GEO_SEND_COUNTRY_INFO?

Geebrox
08.07.2016, 23:09
И где G_GEO_SEND_COUNTRY_INFO?

Да хватит оффтопить отправка сообщение в чат и есть G_GEO_SEND_COUNTRY_INFO