Hawaxi Opublikowano 20 Maja 2015 Opublikowano 20 Maja 2015 Witam, Czytałem dużo tematów i natknąłem się na to json_decode ale nie za bardzo rozumiem jak działa, a w dokumentacji nie mogłem go znaleść.Chciałem pobrać informacje ze strony i później wyświetlać je w mojej grze. Czy moge wyjąć informacje z tej strony jeśli jej kod zródłowy wygląda tak: {"hawaxi":{"id":28669616,"name":"Hawaxi","profileIconId":552,"summonerLevel":30,"revisionDate":1432142221000}} Mój kod: GML Asynchronous HTTP event: strona = http_get("https://eune.api.pvp.net/api/lol/eune/v1.4/summoner/by-name/Hawaxi?api_key="); wynik = json_decode(strona); draw event: draw_text(x,y,wynik); Pozdrawiam Hawaxi
Threef Opublikowano 20 Maja 2015 Opublikowano 20 Maja 2015 json_decode() zwraca Ci specjalny ds_map. Czemu specjalny? Bo on może w sobie zawierać inne struktury. W twoim przypadku żeby odczytać coś z tego co podałeś musiałbyś zrobić np tak: GML wynik = json_decode(strona); gracz=wynik[?"hawaxi"] draw_text(x,y,gracz[?"summonerLevel"]) To ze znakiem zapytania to skrócona funkcja do działań na ds_grid. Mam nadzieję że już to umiesz. Edit: Przeniosłem do pytań zaawansowanych. ;) Edit2: Mam nadzieję że http_get() nie obsługujesz tak ja tu napisałeś. Ech, muszę się wyspać bo nie doczytałem. ;)
Administratorzy gnysek Opublikowano 21 Maja 2015 Administratorzy Opublikowano 21 Maja 2015 https://gmclan.org/index.php?plik=227
Hawaxi Opublikowano 24 Maja 2015 Autor Opublikowano 24 Maja 2015 Okej dzieki wszyskim za pomoc, ale wciąż mam z tym problem. Mógłby mi ktoś wytłumaczyć co robię źle? HTTP: GML strona = http_get("https://eune.api.pvp.net/api/lol/eune/v1.4/summoner/by-name/hawaxi?api_key=") wynik = json_decode(strona); gracz = wynik[?"hawaxi"] Draw: GML draw_text(x,y,gracz[?"summonerLevel"]) Wywala mi błąd z draw_text: Push :: Execution Error - Variable Get 100000.gracz(100002, -2147483648) at gml_Object_object0_DrawEvent_1 (line 1) - draw_text(x,y,gracz[?"summonerLevel"]) Jak wrzuciłem wszystko do draw event, pokazywalo undefined... Pozdrawiam Hawaxi :)
Threef Opublikowano 24 Maja 2015 Opublikowano 24 Maja 2015 Dane zostają pobrane dopiero po chwili. Przedtem zmienna (a dokładnie całe ds_map) nie istnieje. Przypisuj do jakiejś zmiennej.
Administratorzy gnysek Opublikowano 25 Maja 2015 Administratorzy Opublikowano 25 Maja 2015 http://docs.yoyogames.com/source/dadiospic...s/http_get.html This function will generate multiple "call backs" which are picked up by any HTTP Events. These will generate a ds_map (more commonly known as a "dictionary") that is exclusive to this event and is stored in the special variable async_load Użyj odpowiedniego eventu (z others), żeby odczytać zapytanie jak zostanie wykonane (to trwa 1-2s). http://docs.yoyogames.com/source/dadiospic...vents/http.html Zresztą w przykładzie który podałem powinno to być prawidłowo zrobione.
Hawaxi Opublikowano 25 Maja 2015 Autor Opublikowano 25 Maja 2015 Okej zrobiłem Alarm i troche opóźniłem działanie teraz wszystko działa dzięki za pomoc :)
Threef Opublikowano 26 Maja 2015 Opublikowano 26 Maja 2015 Eh. Myślałem że problem był już rozwiazany. Nie mozesz używać do tego alarmu. Błąd wciaż będzie występować jeżeli ktoś będzie mieć bardzo słaby ping, brak internetu, albo serwer z którego pobierasz informacje padnie. Wystarczy że stworzysz sobie zmienną w create. np: GML summonerLevel="" a potem w event'cie HTTP sprawdzisz czy dane zostały pobrane i przypiszesz je do tej zmiennej. GML wynik = json_decode(strona); gracz = wynik[?"hawaxi"] summonerLevel=gracz[?"summonerLevel"] ds_map_destroy(wynik)
Hawaxi Opublikowano 26 Maja 2015 Autor Opublikowano 26 Maja 2015 Okej, przypisałem wszystko do zmiennych dzięki za radę ;)
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się