Hawaxi Opublikowano 20 Maja 2015 Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 20 Maja 2015 Udostępnij 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. ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 21 Maja 2015 Administratorzy Udostępnij Opublikowano 21 Maja 2015 https://gmclan.org/index.php?plik=227 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hawaxi Opublikowano 24 Maja 2015 Autor Udostępnij 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 :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 24 Maja 2015 Udostępnij 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 25 Maja 2015 Administratorzy Udostępnij 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hawaxi Opublikowano 25 Maja 2015 Autor Udostępnij Opublikowano 25 Maja 2015 Okej zrobiłem Alarm i troche opóźniłem działanie teraz wszystko działa dzięki za pomoc :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 26 Maja 2015 Udostępnij 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) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hawaxi Opublikowano 26 Maja 2015 Autor Udostępnij Opublikowano 26 Maja 2015 Okej, przypisałem wszystko do zmiennych dzięki za radę ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
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ę