fervi (Skovv) Opublikowano 25 Maja 2009 Udostępnij Opublikowano 25 Maja 2009 Witam. Mam taki problem z 39dll: Wysyłanie: GML if keyboard_check(costam) { writebyte(1) } if keyboard_check(costam) { writebyte(2) } Odbieranie: var msg,nag; msg=receivemessage(othersocket) if msg { nag=readbyte() switch(nag) { case 1: cos break; case 2: cos break; } } I teraz załóżmy że przy wysyłaniu są naciśnięte obydwa przyciski - wysyłają się 2 nagłówki. A przy odbieraniu? W pierwszym stepie odczyta nagłówek 1, a dopiero w drugim nagłówek 2 - czyli opóźnienie jednego stepa, a jak przez więcej stepów będzie wciśnięte to to opóźnienie będzie coraz większe. Jak temu zapobiec? Tak sobie myślałem, że można by w odbieraniu dać: GML repeat(ilość_wszystkich_rodzajów_nagłówków) { odbieranie } I wtedy by odebrało, ale z drugiej strony to teraz nie przesył danych, ale gra by mogła mulić, ale nie jestem pewien.. no jakby duzo bylo tych rodzajów. Albo może: while(msg) ? Doradźcie coś, co z tym zrobić. Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 25 Maja 2009 Udostępnij Opublikowano 25 Maja 2009 można w takich przypadkach łączyć pakiety i wysyłać parę, i tak jak mówiłeś, zrobić parser który by czytał te wszystkie wiadomości. Tak zawsze to działa i nie ma innego wyjścia. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
fervi (Skovv) Opublikowano 25 Maja 2009 Autor Udostępnij Opublikowano 25 Maja 2009 Zrobić tak... GML if keyboard_check(vk_up) nagbyl[1]=true if keyboard_check(vk_left) nagbyl[2]=true clearbuffer() for(i=0; i<2; i+=1) { if nagbyl=true writebyte(i) } sendmessage(othersocket) ...czy może tak... GML msg=receivemessage(othersocket) while(msg) { msg=receivemessage(othersocket) <odbieranie> } ?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 25 Maja 2009 Udostępnij Opublikowano 25 Maja 2009 ten drugi jest bez sensu coś raczej typu GML msg=receivemessage(othersocket) while(msg) { while ToNieKoniecPakietu // sprawdzanie czy wszystkie bity zostały przeczytane { switch readbyte(msg) // czytanie po koleji kazdego bita, w pakiecie, w pętli (dlatego trzeba to zapętlić) case 1: costam; break; case 2: costam; break ... } } kapiszi? kod moze byc nie prawidłowo napisany ale raczej powinienes zrozumiec ocb itd. a co do pierwszego, to właśnie o to mi chodzi ;) tylko potem trzeba to jakoś sensownie odczytać. Tak właśnie działają co lepsze gry ;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
fervi (Skovv) Opublikowano 25 Maja 2009 Autor Udostępnij Opublikowano 25 Maja 2009 Więc zdam się na pierwsze + mam lepszy pomysł: na początku stepa dam clearbuffer() a potem juz nie i bedzie sie dodawać bajt do buforu jeśli warunek jest spełniony, tylko trzeba jeszcze wysyłać, ile dodano bajtów do buforu. thx Pieter e: jednak nie bedzie problemu z tym zeby wyslac ile bajtów ma pakiet, bo jest juz taka funkcja w 39dll: buffsize. No to już bardziej się chyba nie da zoptymalizować :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 25 Maja 2009 Udostępnij Opublikowano 25 Maja 2009 oj da się ;p ale to już przy przesyłaniu bardziej złożonych pakietów ;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
autsajder Opublikowano 25 Maja 2009 Udostępnij Opublikowano 25 Maja 2009 Więc zdam się na pierwsze + mam lepszy pomysł: na początku stepa dam clearbuffer() a potem juz nie i bedzie sie dodawać bajt do buforu jeśli warunek jest spełniony, tylko trzeba jeszcze wysyłać, ile dodano bajtów do buforu. - Jesteś geniuszem - Natomiast ty jesteś spamerem. Dostajesz bana na tydzień, jak nie pomoże to permamentnego. Borek 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ę