Paqoo Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 Mam w drav obiektu gracza coś takiego: GML //Draw the player... draw_sprite_ext(sprite_index,-1,round(x),round(y),image_xscale,image_yscale,image_angle,image_blend,image_alpha); Jest to gra MMORPG. Jak gracz się pojawia na serwerze wyskakuje mi error: O co chodzi? Co mam robić? Wcześniej wszystko działało.. Co namieszałem? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mike_p Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 Chodzi o to co pisze, nie możesz narysować tego sprite'a bo nie istnieje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 7 Kwietnia 2008 Autor Udostępnij Opublikowano 7 Kwietnia 2008 Jakto nie istnieje jak go mam.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 Kiedy to się dzieje? Przy włączaniu gry czy podczas jej? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 7 Kwietnia 2008 Autor Udostępnij Opublikowano 7 Kwietnia 2008 Jak uruchomię serwer i zaloguję się do niego na kliencie. Może to coś związane z tym, że nie mogę się połączyć, bo NO-IP coś mi odwala. Nie do końca działa.. ?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mike_p Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 Jaki to ma związek z nieistniejącym sprite'em? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 A jest ten sprite i na kliencie i na serwerze? na pewno gdzieś go nie ma. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 Ogólnie to powinno być: GML if( sprite_exists( sprite_index ) ) { draw_sprite_ext(sprite_index, image_index,round(x),round(y),image_xscale,image_yscale,image_angle,image_blend, image_alpha); } No i pamiętaj, że indeksy spritów muszą być takie same na kliencie i serwerze jeśli używasz ich przy przekazywaniu danych. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Luksor Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 Czy w obiekcie obj_player_self wybrałeś sprite? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 7 Kwietnia 2008 Autor Udostępnij Opublikowano 7 Kwietnia 2008 O rany to na serwerze też ma być ten sprite? To BOMBA! To dlaczego wcześniej mi działało bez niego? Hahahah!? Czyli można robić ciekawe rzeczy.. A co będzie jak nie użyję?: GML if( sprite_exists( sprite_index ) ) { } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 Tak, ma być. I to dokładnie z tym samym indeksem co na kliencie. Sprawdzi czy sprite w ogóle istnieje przed narysowaniem. Czytaj dokumentację. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 A co będzie jak nie użyję?: V sprite_exists(ind) - Sprawdza czy obrazek istnieje jako dany indeks. @up: wops, edytnąłeś. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 7 Kwietnia 2008 Administratorzy Udostępnij Opublikowano 7 Kwietnia 2008 A ja strzelam, że jakiś obiekt i sprite mają taką samą nazwę i stąd problem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 7 Kwietnia 2008 Autor Udostępnij Opublikowano 7 Kwietnia 2008 Nie nie mają takiej samej nazwy, ale dzięki że myślisz nad wszystkim Tymon :) Zaraz odpalę i chyba powinno już go rysować.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 No, ale taka sama nazwa to dalej mało. Pod nazwami kryją się indeksy spritów, tak więc trzeba to trochę inaczej załatwić. Robisz takie dwie tablice: GML sprites_in[0] = sprite1; sprites_in[1] = sprite2; sprites_in[2] = sprite3; sprites_in[3] = sprite4; sprites_count = 4; for( i = 0; i < sprites_count; i += 1 ) { sprites_out[sprites_in] = i; } Powinno być coś takiego na serwerze i na kliencie. Teraz tak, przy wysyłaniu:GML writereal( sprite_out[sprite_index] ); i przy odbieraniu:GML sprite_index = sprite_in[readreal()]; Czy coś takiego. ;P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 7 Kwietnia 2008 Autor Udostępnij Opublikowano 7 Kwietnia 2008 Ale po co tak to komplikować? Moje pytanie: CZEMU TO SŁUŻY? Dlaczego muszę pisać to w jakichś tablicach? I czegoś nie rozumiem-dlaczego ten bug zaczął się od niedawna pojawiać? Wcześniej wszystko działało jak trzeba. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 Przypisuje spritom uniwersalne indeksy które są zrozumiałe dla serwera jak i klienta. Bo tablice są wygodne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Luksor Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 I czegoś nie rozumiem-dlaczego ten bug zaczął się od niedawna pojawiać? Wcześniej wszystko działało jak trzeba. Na pewno samo się nie zepsuło. :jezor: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 7 Kwietnia 2008 Autor Udostępnij Opublikowano 7 Kwietnia 2008 Chyba jest źle z tym: GML player.sprite_index = sprite_in[readreal()]; Wydaje mi się, że trzeba z tej tablicy czytać po prostu tak jak inne dane, czyli mamy cyfry to czytamy z readbyte()? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 Jak zapisujesz writereal to odczytujesz readreal. Po za tym, mógłbyś zmienić tablicę na globalną, wtedy nie będziesz musiał wszystkiego deklarować 10 razy w każdym obiekcie. No i jeszcze jedno, klient i serwer to oddzielnie pisane aplikacje czy jako jedna? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 7 Kwietnia 2008 Autor Udostępnij Opublikowano 7 Kwietnia 2008 Są pisane oddzielnie. O rany ile to będzie roboty.. Pomóżcie mi z tym, bo ludzie na mnie liczą.. A jak napiszę tak: wysyłanie: writeshort(player.sprite_out[sprite_index]); odbieranie: player.sprite_index = sprite_in[readbyte()]; To będzie źle? Jak piszę z tym writereal/readreal to wogóle nie działa, jakieś syntax errory są. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 Źle, tak: writeshort(player.sprite_out[sprite_index]); i player.sprite_index = sprite_in[readshort()]; A readreal i writereal to tak mi się jakoś ubzdurało, oczywiście miałeś to zamienić na własne odpowiedniki, ja nie pamiętam funkcji 39dll. :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 7 Kwietnia 2008 Autor Udostępnij Opublikowano 7 Kwietnia 2008 Teraz wyskakuje coś takiego jak się loguje dwóch graczy na serwerze: Co się dzieje.. ?:P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 7 Kwietnia 2008 Udostępnij Opublikowano 7 Kwietnia 2008 Ujemny index tablicy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 8 Kwietnia 2008 Udostępnij Opublikowano 8 Kwietnia 2008 Czy indeks tablicy może zawierać sprite'a? :D Lub w ogóle znaki? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 8 Kwietnia 2008 Udostępnij Opublikowano 8 Kwietnia 2008 Indeks może zawierać tylko liczby od 0 do 31999. Czyli może zawierać sprite'a (tzn. jego index). Aha, jeśli obiekt nie ma sprite'a to sprite_index zwraca -1. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 8 Kwietnia 2008 Udostępnij Opublikowano 8 Kwietnia 2008 Dzięki za uświadomienie mi :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 8 Kwietnia 2008 Udostępnij Opublikowano 8 Kwietnia 2008 Ja miałem taki problem jak dobrze pamiętam, że wysyłałem sprite_index i odbierałem w serwerze i przesyłałem dalej do wszystkich... wkońcu to nie mogło się udać bo w obu klientach wywalało że nie ma takiego sprita. Taki sam problem może być u ciebie. Cu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 8 Kwietnia 2008 Autor Udostępnij Opublikowano 8 Kwietnia 2008 Czyli jak to rozwiazac?;P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 8 Kwietnia 2008 Udostępnij Opublikowano 8 Kwietnia 2008 Usuń na serwerze rysowanie postaci, lub ustaw jakiegoś innego sprite'a. Prawdopodobnie klient wysyła sprite'a, który jest w nim, ale nie ma go na serwerze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi