How i get this API data into my script
#1


How i can get that code into my script?

PHP код:
public OnLookupResponse(sessionidresponsedata[])
{
    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,  xml[0][0], xml[0][1], 60);
    
strmidex(LookupData[playerid][ISP],      data,  xml[1][0], xml[1][1], 60);
    
strmidex(LookupData[playerid][Code],     data,  xml[2][0], xml[2][1],  3);
    
strmidex(LookupData[playerid][Country],  data,  xml[3][0], xml[3][1], 40);
    
strmidex(LookupData[playerid][Region],   data,  xml[4][0], xml[4][1], 40);
    
LookupData[playerid][Proxy] = strval(data[strfind(data"<proxy>"true) + 7]);
    
CallLocalFunction("OnLookupComplete""i"playerid);
    return 
1;

Reply
#2

Use json include.
Reply
#3

You also can use json plugin for that purpose.

https://sampforum.blast.hk/showthread.php?tid=543919
Reply
#4

Please example to me
Reply
#5

ERROR CODE PLEASE HELP
pawn Код:
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.
pawn Код:
//===[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);
Reply
#6

Your arrys size don't match so you can not assign them by = operator.

instead use format.

ex
PHP код:
LookupData[playerid][Hostname] = hostname
becomes
PHP код:
format(LookupData[playerid][Hostname], 60hostname); 
or also
PHP код:
json_get_string(jsonDataLookupData[playerid][Hostname], 60"ipName"); 
Reply
#7

Quote:
Originally Posted by jlalt
Посмотреть сообщение
Your arrys size don't match so you can not assign them by = operator.

instead use format.

ex
PHP код:
LookupData[playerid][Hostname] = hostname
becomes
PHP код:
format(LookupData[playerid][Hostname], 60hostname); 
or also
PHP код:
json_get_string(jsonDataLookupData[playerid][Hostname], 60"ipName"); 
Thank you but

Line 67 json_parse_string(jsonData, data);
and line 151 src[0] = "Anonymous";

still error

pawn Код:
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.
Reply
#8

You are getting those error because the syntax of json_parse_string() changed in the newer version of that JSON parser plugin.
Anyways here is an example based on the latest plugin version:
PHP код:
#include <a_samp>
#include <a_http>
#include <a_json>
public OnPlayerConnect(playerid) {
    new 
plrIP[16], url[128];
    
GetPlayerIp(playeridplrIPsizeof(plrIP));
    
format(urlsizeof(url), "http://extreme-ip-lookup.com/json/%s"plrIP);
    
HTTP(playeridHTTP_GETurl"""OnLookUpFinished");
    return 
1;
}
forward OnLookUpFinished(playeridresponse_codedata[]);
public 
OnLookUpFinished(playeridresponse_codedata[]) {
    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(dataNodecitysizeof(city), "city"); // getting node's value
    
printf("Player ID %d's city is %s"playeridcity);
    
// ...
    
json_close(dataNode); // clearing up memory when we are done with the data
    
return 1;

Reply
#9

Thank you everybody +rep
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)