klech Opublikowano 24 Stycznia 2010 Udostępnij Opublikowano 24 Stycznia 2010 Jak by wygładały te skrypty pod 39dll? Czytanie danych: GML if global.master=false { x=mplay_data_read(1); y=mplay_data_read(2); } Wysyłanie danych i chodzenie: GML if global.master=true { x-=global.s; mplay_data_write(1,x); } Z góry dziękuję. P.S.:Wiem że są artykuły ale nic z nich nie rozumiem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 24 Stycznia 2010 Udostępnij Opublikowano 24 Stycznia 2010 Wejdź sobie w dodatki,mój poradnik o 39DLL jak zrobić ping-ponga, to widzisz, to nie takie łatwe jak mplay, z resztą nie wiem xD Odbieranie daje się w pętli, a wysyłając trzeba wysłać ID wiadomości... rozumiem że gra na 2 graczy? Jeśli tak to tutaj poradnik: https://forum.gmclan.org/index.php?showtopic=18378 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 24 Stycznia 2010 Udostępnij Opublikowano 24 Stycznia 2010 Odczytywanie: GML while (1) { var messageS; messageS = receivemessage(socket);//otrzymujemy wiadomosc if (messageS <=0) then break;//jesli nic nie odebralismy wylamujemy sie z petli var mID; mID = readbyte();//odczytujemy id wiadomosci switch (mID) { case 1://id wiadomosci x = readshort();//odczytanie wartosci (x) y = readshort();//odczytanie wartosci (y) break; } Wysyłanie: GML clearbuffer();//czyscimy buffer danych writebyte(id_wiadomosci);//wysylanie id wiadomosci writeshort(x);//wysylanie pozycji (x) writeshort(y);//wysylanie pozycji (y) with (obj) { sendmessage(socket);//wysylanie pozycji do wszystkich } tak to ogolnie wygląda przeanalizuj i poczytaj kursy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
klech Opublikowano 24 Stycznia 2010 Autor Udostępnij Opublikowano 24 Stycznia 2010 Tak to fajnie tylko że Unkown variable socket. Czym zamienić "socket"? I czy dla serwera i klienta inny socket jest potrzebny? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 24 Stycznia 2010 Udostępnij Opublikowano 24 Stycznia 2010 Socket, to coś do czego wysyłasz, mówie Ci oblookaj mój poradnik, tam jest krok po kroku, jak zrobić ping ponga, to nie takie proste jak mplay, tutaj musisz łączyć się, a potem dopiero wysyłać... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
klech Opublikowano 24 Stycznia 2010 Autor Udostępnij Opublikowano 24 Stycznia 2010 Wciąż tak naprawde nie czy mogę coś ruszać to założmy że przykładowy kod ruszania to: GML // to dla hosta if global.master=true { x-=global.s data_write(true,0,x,) } //a to dla klienta if global.master=false { x-=global.s data_write(true,0,x,) } //data_write to skrypt który zawiera to co masz w tutku</span></span> Założmy że to co napisałem wyżej rozumiem.Ale przy odbieraniu jaki jest priorytet odbierania tzn. nie chcę żeby x stało się nagle y.Jak to przerobić bo tak szczerze to funkcje rozumiem(a całości nie) ale po co to umieszczać w wiadomości skoro można (chyba)tak samo jak w mplay(czyli id i wartość)?Jak to wygląda jak chcę odebrać x i y? P.S.:Nie zdziwie się jak nie dacie mi odpowiedzi ): robie sie uciążliwy. GML while (1) { var messageS; messageS = receivemessage(socket); if (messageS <=0) then break; var mID; mID = readbyte(); switch (mID) { case 1: x = readshort(); y = readshort(); break; } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 25 Stycznia 2010 Udostępnij Opublikowano 25 Stycznia 2010 Założmy że to co napisałem wyżej rozumiem.Ale przy odbieraniu jaki jest priorytet odbierania tzn. nie chcę żeby x stało się nagle y. Jeśli wysyłasz jako pierwsze x a jako drugie y: GML clearbuffer(); writebyte(ID);//wysyłamy id wiadomości writeshort(x);//wysyłamy x writeshort(y);//i y sendmessage(socket); To jest nasz kod wysyłu, z tego co widzimy najpierw wysyłami ID potem x i y i w takiej samej kolejności musimy odebrać te dane, czyli najpierw odebrać ID potem x a następnie y. Jeśli odbierzesz w innej kolejności wówczas x stanie sie y lub Id i bedzie bałagan. Czyli Odbieramy to w ten sposób, po kolei: GML while (1)//pętla odbierania danych { var messageS;//zmienna tymczasowa messageS = receivemessage(socket);//przypisujemy jej ilosc odebranych danych if (messageS <=0) then break;//jesli nie ma danych wówczas wyłamujemy sie z pętli var mID;//zmienna tymczasowa id mID = readbyte();//TUTAJ ODCZYTUJEMY ID KTÓRE WYSŁALIŚMY PIERWSZE! switch (mID)//switch wiadomo rozpoznajemy id i już wiemy jaką operacje maa wykonywać dostarczony nam pakiet danych { case 1: x = readshort();//TUTAJ ODBIERAMY POZYCJE X KTÓRA ZOSTAŁA WYSŁANA JAKO DRUGA y = readshort();//A TU POZYCJE Y KTÓRA ZOSTAŁA WYSŁANA JAKO 3 DZIEKI CZEMU NIC NAM SIE NIE PRZEMIESZA. break; } } ale po co to umieszczać w wiadomości skoro można (chyba)tak samo jak w mplay(czyli id i wartość)? Tej części zdania nie czaje, sorry :D Jak to wygląda jak chcę odebrać x i y? Kod ci podałem już w moim 1 poście, poprostu, Client wysyła dane tak jak ci pokazałem do serwera a on rozsyła twoje x i y do reszty i je zmienia, dzieki temu wszyscy widzą ze sie przemiesciles. uff... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 25 Stycznia 2010 Administratorzy Udostępnij Opublikowano 25 Stycznia 2010 Ojej, poza samym odpowiednikiem tego kodu, trzeba też zrobić połączenie serwer-klient i wiele innych rzeczy, 39dll nie może być alternatywą tylko dla wybranych funkcji GMowych, on jest alternatywą tylko w całości i rozdzielnie z funkcjami mplay_* i funkcji tych nie można łączyć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
klech Opublikowano 26 Stycznia 2010 Autor Udostępnij Opublikowano 26 Stycznia 2010 Tyle to wiem xD.Teraz już rozumiem.Podsumuwując dane są w kolejce w wiadomości. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 26 Stycznia 2010 Udostępnij Opublikowano 26 Stycznia 2010 Dokładnie, to co wysyłasz pierwsze, odbierasz również pierwsze, jak już mówiłem. Jeśli zrobisz to w odwrotnej kolejności to wiadomo co się stanie. 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ę