MetalowyNerd Opublikowano 5 Listopada 2016 Udostępnij Opublikowano 5 Listopada 2016 Witam. Jak zawsze jestem zielony w sprawach gier online. Dla mnie to zawsze było czarną magią i nigdy nie potrafiłem zapamiętać czegokolwiek z tematu programowania gier online. Jednak chciałbym spróbować stworzyć coś banalnego, co mógłbym później rozwijać dla ludzi. Na początek chciałbym stworzyć jedynie klienta i serwer dla na przykład czatu. Po odpaleniu serwera, w kliencie pokazywałaby się lista osób, które są na czacie i oczywiście rozmowa. Bardzo mi zależy na tym, żeby skrypty były możliwie jak najprostsze, bo serio to dla mnie czarna magia, a mam fajny pomysł na przekształcenie tego czatu w grę. Jeśli ktoś się zna na Networkingu w GM:S'ie, to bardzo proszę o odpowiedź ;). Pozdrawiam wszystkich serdecznie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 5 Listopada 2016 Udostępnij Opublikowano 5 Listopada 2016 Odesłał bym do wuja google ale Odsyłanie do wujka google.pl nie rozwiązuje problemu! Lepiej podaj od razu konkretnego linka do strony gdzie użytkownik znajdzie rozwiązanie problemu, bądź po prostu w ogóle się nie udzielaj. http://www.yoyogames.com/blog/6 https://docs.yoyogames.com/ https://forum.gmclan.org/index.php?showtopic=31065 Zrobienie chatu w gm:s to parę linijek kodu, a twoje pytanie jest zbyt ogólne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MetalowyNerd Opublikowano 5 Listopada 2016 Autor Udostępnij Opublikowano 5 Listopada 2016 No więc chodzi mi właśnie o te parę linijek kodu. W pierwszym linku, który podałeś, jest tutorial do prostej gierki, nie czatu. W drugim dokumentacja, a szukam banalnego przykładu w postaci projektu, albo jak to zrobić krok po kroku. W trzecim linku jest już to, co mnie właśnie interesuje, ale akurat po wybraniu opcji "C - Client", wyskakuje błąd i nie wiem, dlaczego (bo to dla mnie czarna magia, nie zwykłe pisanie gierki). Nie wiem, o co w tym chodzi, bo się na Networkingu kompletnie nie znam, ale taki wyrzuca błąd: ERROR in action number 1 of Async Event: Networking for object oServer: Attempting to read from outside the buffer, returning 0 at gml_Object_oServer_Other_68 Ten błąd znajduje się w tej wersji: https://gmclan.org/up7589_4_Przyk_ad.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 5 Listopada 2016 Udostępnij Opublikowano 5 Listopada 2016 https://gmclan.org/up539_4_Multi_zabawy.html Tutaj jest mój nieukończony projekt, miała to być platformówka ale skończyło się na byciu, chatem z kolorowymi tekstami (po stronie klienta tylko bo wip). Graczy może wchodzić dowolna ilość. Porzuciłem projekt bo znudziło mi się :P W oGameControler musisz podać swoje IP. Używam tutaj nie blokujących socketów co sprawiło że kod jest trochę zawiły i wszystko tylko i wyłącznie po to by kręciła się ikonka loadingu w rogu zamiast freezować grę haha. U clienta chat włącza się klawiszem T, a na serverze jest zawsze widoczny, numerki na serverze przy każdej linice to HUE tekstu, a enterem chyba jest lista graczy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 5 Listopada 2016 Udostępnij Opublikowano 5 Listopada 2016 Podmień w oServer w Networking, tak swoją drogą to od 2 lat nikt tego nie sprawdził? GML var t_buffer = buffer_create(256, buffer_grow, 1); var eventid = ds_map_find_value(async_load, "id"); if( server == eventid ) { //////////////////////////////////////Jezeli sie polaczyl//////////////////////////////////////////// { var t = ds_map_find_value(async_load, "type"); var sock = ds_map_find_value(async_load, "socket"); var ip = ds_map_find_value(async_load, "ip"); if( t==network_type_connect) { global.idd++; ds_list_add( socketlist, sock ); var inst = instance_create(64,192, oPlayer); // Players[global.idd,0]= inst; // Players[global.idd]= global.idd; ds_map_add( Clients, sock, global.idd ); ConsoleAdd("Nowy gracz dolaczyl! ID:"+string(global.idd)); // show_message("Serwer: "+string(global.idd)); buffer_seek(t_buffer, buffer_seek_start, 0); buffer_write(t_buffer, buffer_u8, 3 ); buffer_write(t_buffer , buffer_s8, global.idd); network_send_packet(ds_list_find_value(Clients, global.idd-1), t_buffer, buffer_tell(t_buffer)); Online += 1; // show_message(Players[]); } else {////////////////////////////Gracz się rozlaczyl////////////////////////////////// /*****Znajduje tego gracza co sie rozlaczyl*****/ var inst = ds_map_find_value(Clients, sock ); ConsoleAdd("Gracz "+string(Players[inst])+" sie rozlaczyl: "); ds_map_delete(Clients, sock ); Players[inst]=0; // with(inst) { instance_destroy(); } Online -= 1; // Also delete the socket from our global list of connected clients var index = ds_list_find_index( socketlist, sock ); ds_list_delete(socketlist,index); buffer_seek(t_buffer, buffer_seek_start, 0); buffer_write(t_buffer, buffer_u8, 1); buffer_write(t_buffer , buffer_string,"Gracz "+string(Players[inst])+" sie rozlaczyl: "); for (var i = 0; i < ds_list_size(socketlist); i++;) { network_send_packet(ds_list_find_value(Clients, i), t_buffer, buffer_tell(t_buffer)); } buffer_delete(t_buffer); Players[inst]=0; } } }//////////////////Do tąd/////////////////////////////////////////////////////////// else if( eventid==0) { } else { /////////////////////////////////Odbieranie danych////////////////////////////////// { var buff = ds_map_find_value(async_load, "buffer"); var cmd = buffer_read(buff, buffer_s16 ); var sock = ds_map_find_value(async_load, "id"); var inst = ds_map_find_value(Clients, sock ); if( cmd==1 ) //Wiadomosc { wiad = buffer_read(buff, buffer_string); ConsoleAdd("<"+string(Players[inst])+">"+string(wiad)); buffer_seek(t_buffer, buffer_seek_start, 0); buffer_write(t_buffer, buffer_u8, 1); buffer_write(t_buffer , buffer_string,"<"+string(Players[inst])+">"+string(wiad)); for (var i = 0; i < ds_list_size(socketlist); i++;) { network_send_packet(ds_list_find_value(Clients, i), t_buffer, buffer_tell(t_buffer)); } buffer_delete(t_buffer); } else if ( cmd == 2 ) { Players[inst] = buffer_read(buff, buffer_string); //show_message(Players[inst]); ConsoleAdd("ID:"+string(global.idd)+" Nick: "+string(Players[inst])); buffer_seek(t_buffer, buffer_seek_start, 0); buffer_write(t_buffer, buffer_u8, 1); buffer_write(t_buffer , buffer_string,"Gracz "+string(Players[inst])+" dolaczyl!"); for (var i = 0; i < ds_list_size(socketlist); i++;) { network_send_packet(ds_list_find_value(Clients, i), t_buffer, buffer_tell(t_buffer)); } buffer_delete(t_buffer); } } //////////////////////////////////Koniec//////////////////////////// } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MetalowyNerd Opublikowano 5 Listopada 2016 Autor Udostępnij Opublikowano 5 Listopada 2016 ediepl, nadal wywala mi ten błąd: ERROR in action number 1 of Async Event: Networking for object oServer: Attempting to read from outside the buffer, returning 0 at gml_Object_oServer_Other_68 I am Lord, Tu znowu nie mogę wejść, jako client, bo nie może się połączyć, a tylko server działa. Niech mi ktoś podrzuci możliwie najprostszego clienta i server do czatowania w postaci projektu. Wiem, że jesteście w stanie to zrobić, bo macie doświadczenie w Networkingu.Chodzi mi tylko o to, żebym to zrozumiał w pełni 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ę