MetalowyNerd Opublikowano 7 Kwietnia 2017 Udostępnij Opublikowano 7 Kwietnia 2017 Witam. Bardzo interesuje mnie Networking w GM:Studio, ale za nic nie mogę tego zrozumieć. Chcę mieć dwa programy, Server i Client. W projekcie Server mam następujący kod: Create: GML GMLglobal.metal = 500; ini_open("metal.data"); ini_write_real("saved","metal",global.metal); ini_close(); Networking: GML GMLnetwork_create_server(network_socket_tcp,6510,20); buff = buffer_load("metal.data"); network_send_packet(sock, buff, buffer_get_size(buff)); Natomiast w projekcie Client mam: Create: GML GMLglobal.metal = 0; Networking: GML GMLclient = network_create_socket(network_socket_tcp); network_connect(client,"192.134.0.1",6510); I nie rozumiem jednej rzeczy, jak Client ma odebrać pakiet z wartością zmiennej global.metal z Server'a? Chcę, żeby Client mógł ją wyświetlić w swoim okienku. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Danielus Opublikowano 7 Kwietnia 2017 Udostępnij Opublikowano 7 Kwietnia 2017 Tu masz wszystko opisane: https://help.yoyogames.com/hc/en-us/article...orking-Overview ogólnie jak pakiet dojdzie to dane będą w specjalnej mapie z której możesz sobie je odebrać Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 7 Kwietnia 2017 Udostępnij Opublikowano 7 Kwietnia 2017 W evencie networking nie zapisujesz tworzenia serwera/klienta tylko obslugujesz przychodzace pakiety. Serwer i klienta musisz zrobic w jakims innym evencie, np. w create. W evencie networking korzystasz ze stałej async_load aby skorzystać z ds_mapy w której masz przychodzące dane, zapisane w async_load[? "buffer"] bądź ds_map_find_value(async_load,"buffer"); w zaleznosci od tego czy uzywasz accessorow czy nie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MetalowyNerd Opublikowano 9 Kwietnia 2017 Autor Udostępnij Opublikowano 9 Kwietnia 2017 Hmm. No to teraz to wszystko wygląda tak i nadal nie działa, a dodatkowo Client wyrzuca błąd i wyłącza Server. SERVER: Create: GML ini_open("data.sav"); ini_write_real("saved","metal",500); ini_close(); network_create_server(network_socket_tcp,6510,20); Networking: GML buff = buffer_load("data.sav"); network_send_packet(sock, buff, buffer_get_size(buff)); CLIENT: Create: GML global.metal = 0; client = network_create_socket(network_socket_tcp); network_connect(client,"127.0.0.1",6510); Networking: GML if (ds_map_find_value(async_load, metal) == true)//chciałem przy okazji zrobić, żeby ustawiało wartość -666, kiedy nie odbiera pakietu ze zmienną "metal" global.metal = ds_map_find_value(async_load, metal); else global.metal = -666; Draw: GML draw_text(10,10,fps); draw_text(300,300,global.metal);//Żeby było widać, kiedy przychodzą pakiety z Server'a</span> Wiem. Ostro kaleczę, ale zawsze miałem problem z programowaniem czegoś, co działa przez neta. Chodzi mi tylko i wyłącznie o to, żebym wiedział, jak przesłać zmienną z serwera na oddzielny program klienta. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 9 Kwietnia 2017 Udostępnij Opublikowano 9 Kwietnia 2017 W async_load nie ma klucza o nazwie "metal". Dane przekazuje sie tak: 1. Wyczyść bufor za pomocą buffer_seek 2. Dodaj dane do bufora za pomocą buffer_write 3. Wyślij bufor za pomocą network_send_packet 4. Odbierz bufor za pomocą async_load[? "buffer"] lub ds_map_find_value(async_load, "buffer") 5. Wczytaj dane z bufora w tej samej kolejnosci i uzywajac tego samego typu danych co zapisujac dane w kroku 2. Kroki 4 i 5 są w evencie networking 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ę