PDA

Просмотр полной версии : GeoInfo



Salvacore
25.04.2014, 05:14
Начнём.

#include a_http

forward Geo_OnPlayerConnect(playerid);
public Geo_OnPlayerConnect(playerid)
{
new string[128],ip[16];
GetPlayerIp(playerid,ip,sizeof(ip));
format(string,128,"speed-tester.info/ip_location.php?ip=%s",ip);
HTTP(playerid,HTTP_GET,string,"","GeoResponse");
}
forward GeoResponse(index, response_code, data[]);
public GeoResponse(index, response_code, data[])
{
if(response_code == 200)
{
new ep = 0, sp = ep, stringNum = 0;
do
{
ep = strfind(data, "\n", false, sp);
if(-1 < ep < strlen(data))
{
stringNum++;
if(stringNum == 27)
{
new temp[128],PlayerCountry[64];
strmid(temp,data,sp,ep);
strmid(PlayerCountry,temp,20,strfind(temp,"<br>",true)-4);
SetPVarString(index,"Country",PlayerCountry);
}
if(stringNum == 28)
{
new temp[128],PlayerCity[64];
strmid(temp,data,sp,ep);
strmid(PlayerCity,temp,62,strfind(temp,"\";",true)-2);
SetPVarString(index,"City",PlayerCity);
}
}
sp = ep+1;
}
while(-1 < ep < strlen(data));
}
return;
}
stock GetPlayerCountry(playerid,country[])
{
GetPVarString(playerid,"Country",country,64);
return country;
}
stock GetPlayerCity(playerid,city[])
{
GetPVarString(playerid,"City",city,64);
return city;
}



Geo_OnPlayerConnect(playerid);

CMD:GEO(playerid, params[])//DC_CMD
{
new gorod[64],strana[64],provider[64];
GetPlayerCity(playerid,gorod);
GetPlayerCountry(playerid,strana);
GetPlayerProvider(playerid,provider)
static const fmt_str[] = "Ваше местоположение: Страна [%s] Город [%s] Провайдер[%s]";
const fmt_size = sizeof(fmt_str)-2+30-2+30-2+30;
new str[fmt_size];
format(str,sizeof(str),fmt_str,strana,gorod,provider);
SendClientMessage(playerid,-1,str);
return 1;
}

Запас: http://www.ipinf.ru/uznat-gorod-po-ip.php?ip=
Автор: Неизвестно

Salvacore
25.04.2014, 05:52
Обновил.

Caypen
30.04.2014, 15:34
Город узнает с шансом 70 процентов, у меня например не один гео не может узнать правильный город, а провайдер вообще у меня берется самый первичный а вовсе не поставщик.

DeimoS
01.05.2014, 07:10
Да что за срач вы тут устроили то? Проблема не в данном коде, а в серверах, через которые вы пытаетесь узнать местоположение игрока. Если в базе данных того сервиса, что вы используете, нет деревни "Урюпино" - он её и не покажет, а покажет близлежащий населённый пункт, где найдутся сервера провайдера игрока.
Это объяснение сухое и неточное, но смысл ясен. Кому интересно, тот сам может погуглить и почитать о проблемах подобных сервисов.

wAx
25.05.2014, 08:03
почистил

wAx
26.05.2014, 12:59
cleared

Salvacore
10.09.2014, 21:46
/b/ + не работает.
Closed.