public OnLookupResponse(sessionid, response, data[])
{
new xml[5][2],
playerid = GetPlayerFromSession(sessionid);
if(playerid == -1) return 1;
if(response != 200)
{
if(Retry[playerid] == 0)
{
Retry[playerid] = 1;
LookupPlayerIP(playerid);
}
return 1;
}
xml[0][0] = strfind(data, "<host>", true);
xml[0][1] = strfind(data, "</host>", true);
xml[1][0] = strfind(data, "<isp>", true);
xml[1][1] = strfind(data, "</isp>", true);
xml[2][0] = strfind(data, "<code>", true);
xml[2][1] = strfind(data, "</code>", true);
xml[3][0] = strfind(data, "<country>", true);
xml[3][1] = strfind(data, "</country>", true);
xml[4][0] = strfind(data, "<region>", true);
xml[4][1] = strfind(data, "</region>", true);
strmidex(LookupData[playerid][Hostname], data, 6 + xml[0][0], xml[0][1], 60);
strmidex(LookupData[playerid][ISP], data, 5 + xml[1][0], xml[1][1], 60);
strmidex(LookupData[playerid][Code], data, 6 + xml[2][0], xml[2][1], 3);
strmidex(LookupData[playerid][Country], data, 9 + xml[3][0], xml[3][1], 40);
strmidex(LookupData[playerid][Region], data, 8 + xml[4][0], xml[4][1], 40);
LookupData[playerid][Proxy] = strval(data[strfind(data, "<proxy>", true) + 7]);
CallLocalFunction("OnLookupComplete", "i", playerid);
return 1;
}
C:\Users\User\Desktop\Server\pawno\include\lookup.inc(67) : error 035: argument type mismatch (argument 1)
C:\Users\User\Desktop\Server\pawno\include\lookup.inc(76) : error 047: array sizes do not match, or destination array is too small
C:\Users\User\Desktop\Server\pawno\include\lookup.inc(77) : error 047: array sizes do not match, or destination array is too small
C:\Users\User\Desktop\Server\pawno\include\lookup.inc(78) : error 047: array sizes do not match, or destination array is too small
C:\Users\User\Desktop\Server\pawno\include\lookup.inc(79) : error 047: array sizes do not match, or destination array is too small
C:\Users\User\Desktop\Server\pawno\include\lookup.inc(80) : error 047: array sizes do not match, or destination array is too small
C:\Users\User\Desktop\Server\pawno\include\lookup.inc(82) : error 006: must be assigned to an array
C:\Users\User\Desktop\Server\pawno\include\lookup.inc(151) : error 006: must be assigned to an array
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
8 Errors.
//===[Misc]=====================================================================
#include <a_http>
#include <a_json>
#define GetPlayerHost(%1) LookupData[%1][Hostname]
#define GetPlayerISP(%1) LookupData[%1][ISP]
#define GetPlayerCountryCode(%1) LookupData[%1][Code]
#define GetPlayerCountryName(%1) LookupData[%1][Country]
#define GetPlayerCountryRegion(%1) LookupData[%1][Region]
#define IsProxyUser(%1) LookupData[%1][Proxy]
enum ldata
{
Hostname[60],
ISP[60],
Code[3],
Country[45],
Region[43],
Proxy
};
new
LookupData[MAX_PLAYERS][ldata],
PlayerSession[MAX_PLAYERS],
Retry[MAX_PLAYERS];
forward OnLookupResponse(sessionid, response, data[]);
forward OnLookupComplete(playerid);
//===[Callbacks]================================================================
public OnPlayerConnect(playerid)
{
cleardata(LookupData[playerid][Hostname]);
cleardata(LookupData[playerid][ISP]);
cleardata(LookupData[playerid][Code]);
cleardata(LookupData[playerid][Country]);
cleardata(LookupData[playerid][Region]);
LookupData[playerid][Proxy] = 0;
Retry[playerid] = 0;
PlayerSession[playerid] = 0;
LookupPlayerIP(playerid);
return CallLocalFunction("Lookup_OnPlayerConnect", "i", playerid);
}
public OnLookupResponse(sessionid, response, data[])
{
new JSONNode:jsonData;
new hostname[128], isp[128], code[128], country[128], region[128], proxy[128];
new playerid = GetPlayerFromSession(sessionid);
if(playerid == -1) return 1;
if(response != 200)
{
if(Retry[playerid] == 0)
{
Retry[playerid] = 1;
LookupPlayerIP(playerid);
}
return 1;
}
json_parse_string(jsonData, data);
json_get_string(jsonData, hostname, sizeof(hostname), "ipName");
json_get_string(jsonData, isp, sizeof(isp), "isp");
json_get_string(jsonData, code, sizeof(code), "countryCode");
json_get_string(jsonData, country, sizeof(country), "country");
json_get_string(jsonData, region, sizeof(region), "region");
json_get_string(jsonData, proxy, sizeof(proxy), "query");
LookupData[playerid][Hostname] = hostname;
LookupData[playerid][ISP] = isp;
LookupData[playerid][Code] = code;
LookupData[playerid][Country] = country;
LookupData[playerid][Region] = region;
LookupData[playerid][Proxy] = proxy;
CallLocalFunction("OnLookupComplete", "i", playerid);
return 1;
}
//===[Functions]================================================================
stock LookupPlayerIP(playerid)
{
if(!IsPlayerNPC(playerid))
{
new ip[16], lQuery[60];
static
SessionIndex;
SessionIndex++;
PlayerSession[playerid] = SessionIndex;
GetPlayerIp(playerid, ip, sizeof(ip));
format(lQuery, sizeof(lQuery), "extreme-ip-lookup.com/json/%s", ip);
HTTP(SessionIndex, HTTP_GET, lQuery, "", "OnLookupResponse");
}
}
stock GetPlayerFromSession(sessionid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && PlayerSession[i] == sessionid)
return i;
}
return -1;
}
stock DisplayLookupData(playerid, targetid)
{
new lstr[300], boxname[40];
GetPlayerIp(targetid, boxname, sizeof(boxname));
format(boxname, sizeof(boxname), "IP Lookup: %s", boxname);
format(lstr, sizeof(lstr),
"Hostname: %s\n\
ISP: %s\n\
Country: %s (%s)\n\
State/Region: %s",
LookupData[targetid][Hostname],
LookupData[targetid][ISP],
LookupData[targetid][Country],
LookupData[targetid][Code],
LookupData[targetid][Region]);
ShowPlayerDialog(playerid, 30000, DIALOG_STYLE_MSGBOX, boxname, lstr, "Close", "");
}
stock strmidex(dest[], const src[], start, end, maxlength=sizeof dest)
{
if(end - start > 1)
strmid(dest, src, start, end, maxlength);
}
stock cleardata(src[])
{
src[0] = "Anonymous";
new c = 1;
while(src[c] != '\0')
{
src[c] = '\0';
c++;
}
}
//===[Hooking]==================================================================
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect Lookup_OnPlayerConnect
forward Lookup_OnPlayerConnect(playerid);
LookupData[playerid][Hostname] = hostname;
format(LookupData[playerid][Hostname], 60, hostname);
json_get_string(jsonData, LookupData[playerid][Hostname], 60, "ipName");
Your arrys size don't match so you can not assign them by = operator.
instead use format. ex PHP код:
PHP код:
PHP код:
|
C:\Users\User\Desktop\Server\pawno\include\lookup.inc(67) : error 035: argument type mismatch (argument 1)
C:\Users\User\Desktop\Server\pawno\include\lookup.inc(151) : error 006: must be assigned to an array
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Errors.
#include <a_samp>
#include <a_http>
#include <a_json>
public OnPlayerConnect(playerid) {
new plrIP[16], url[128];
GetPlayerIp(playerid, plrIP, sizeof(plrIP));
format(url, sizeof(url), "http://extreme-ip-lookup.com/json/%s", plrIP);
HTTP(playerid, HTTP_GET, url, "", "OnLookUpFinished");
return 1;
}
forward OnLookUpFinished(playerid, response_code, data[]);
public OnLookUpFinished(playerid, response_code, data[]) {
if(response_code != 200) {
printf("Something went wrong, response code: %d", response_code);
return 1;
}
new JSONNode:dataNode = json_parse_string(data); // parsing JSON string
new city[128];
json_get_string(dataNode, city, sizeof(city), "city"); // getting node's value
printf("Player ID %d's city is %s", playerid, city);
// ...
json_close(dataNode); // clearing up memory when we are done with the data
return 1;
}