kubasz Opublikowano 17 Lutego 2008 Udostępnij Opublikowano 17 Lutego 2008 Te skrypty to: PACK(byte1,byte2): GML var byteA,byteB; byteA = (argument0 div 255)+1; byteB = (argument0 mod 255)+1; return chr(byteA) + chr(byteB); UNPACK(byte): GML var byteA,byteB; byteA = ord(string_char_at(argument0,argument1*2-1))-1; byteB = ord(string_char_at(argument0,argument1*2))-1; return (byteA*255)+byteB Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 17 Lutego 2008 Udostępnij Opublikowano 17 Lutego 2008 Ja nie mówię o żadnych bajtach. Chodzi mi, aby kod: GML writestring( '20|20|167' ); sprawiał, że: GML x = 20; y = 20; image_angle = 167; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kryniak Opublikowano 17 Lutego 2008 Udostępnij Opublikowano 17 Lutego 2008 Hmmm... Co myslicie o wysylaniu wszystkich danych za pomoca jednego writebyte i jednego stringa? np: writebyte(20); (funkcja update'ujaca pozycje) writestring(string(x)+'|'+string(y)+'|'+string(image_angle)); A na serwerze rozdzielanie tego z powrotem na zmienne? Czy dzieki temu uniknalbym wysylania zbyt wielu bajtow? Po co się męczyć jeszcze ich parsowaniem. W dodatku więcej bajtów będzie do wysłania. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 17 Lutego 2008 Udostępnij Opublikowano 17 Lutego 2008 @Misztrzunio a może by zrobić skrypt odczyt : GML if argument0 == 0 { while( true ) { if ( string_char_at( _s, _i ) == '|' ) { argument1 = real( string_copy( _s, _temp, _i ) ); _temp = _i + 1; break; } _i += 1; } } else { while( true ) { if ( _i = string_length( _s ) ) { argument0 = real( string_copy( _s, _temp, _i ) ); break; } _i += 1; } } a potem GML _s = readstring(); _i = 1; _temp = _i; odczyt(0,x); odczyt(0,y); odczyt(1,image_angle);//1 by sie dawalo jakby byla osatnia zmienna Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 17 Lutego 2008 Udostępnij Opublikowano 17 Lutego 2008 Miszczu, do tego wskaźników potrzeba, ty tylko operujesz argumentami. Myślisz, że taki głupi jestem? Do tego execute_string() jak już... @Edit: Może tak: skrypt odczyt: GML list = ds_list_create(); while( true ) { while( true ) { if ( string_char_at( _s, _i ) == '|' ) { ds_list_add( list, string_copy( _s, _temp - _i - 1, _i ) ); _temp = _i + 1; break; } if ( string_length( _s ) == _i ) { ds_list_add( list, string_copy( _s, _temp - _i - 1, _i ) ); return list; _i += 1; } } } Kod: GML _l = odczyt( '20|21|36' ); for( i = 0; i < ds_list_size( _l ); i += 1; ) show_message( ds_list_find_value( _l, i ) ); Nie testowane =P . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Lutego 2008 Administratorzy Udostępnij Opublikowano 17 Lutego 2008 A może założyć, że x i y są zawsze mniejsze od 65025 czyli FFFF (Hex), a image angle zapisywać za pomocą FFF (chociaż 4096 to trochę za dużo, ale FF czyli 255 to za mało :P) i mamy wtedy (4+4+3)*4 = 44 bitów zamiast jak w przypadku '20|20|167' 9*255 = 2295. Ale to tylko taka moja teoria. GM obsługuje chyba szesnastkowe liczby (zapisuje się je poprzedzając znakiem $). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 17 Lutego 2008 Udostępnij Opublikowano 17 Lutego 2008 A taki skrypt string explode? http://gmc.yoyogames.com/index.php?showtop...mode=linearplus EDIT: @gnysek: Ooo, trzeba bylo od razu powiedziec :P A jak pozniej z powrotem to przerzucic na DEC? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 17 Lutego 2008 Udostępnij Opublikowano 17 Lutego 2008 Tam jest prościej, bo używa string_pos() =) . A co do tego twojego kodu to już wcześniej miałem wątpliwości :P . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 17 Lutego 2008 Udostępnij Opublikowano 17 Lutego 2008 Ale przy wysylaniu wiekszych ilosci to sie chyba oplaca, nie? :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 17 Lutego 2008 Udostępnij Opublikowano 17 Lutego 2008 Nie. To by było bezsensowne imo. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hanjuso Opublikowano 17 Lutego 2008 Udostępnij Opublikowano 17 Lutego 2008 W przypadku 39dll takie rzeczy sa chyba niepotrzebne, bo z tego co wiem to on dziala tak jak napisal to gnysek. Po to wlasnie jest tyle funkcji zapisywania danych do buffera (writebyte, writeshort itp). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
miki_96 Opublikowano 18 Lutego 2008 Udostępnij Opublikowano 18 Lutego 2008 bardzo fajnie napisany tutek pozdro :] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piczer Opublikowano 18 Lutego 2008 Udostępnij Opublikowano 18 Lutego 2008 A ja nic nie kumam ;x Mi czeba wytłumaczyć tak jak dla pszedszkolaczka ;3 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ę