Hunter Opublikowano 2 Listopada 2009 Udostępnij Opublikowano 2 Listopada 2009 Witam, mam mały problemik, zapewne banalny, ale że nie działa to dowodzi tylko o mojej prostocie. No więc do rzeczy, mam problem z robieniem Sklepu. Gdy player kupi jakiś przedmiot tworze go na serwie, a następnie wysyłam: GML self._id = SetItemID(); self._rodzaj = 1; global.itemID[self._id] = self._id; var _x,_y,_rodz; _x = mouse_x; _y = mouse_y; _rodz = 1; clearbuffer(); writebyte(13); writeshort(_x); writeshort(_y); writeshort(_id); writeshort(_rodz); with(obj_client) { sendmessage(tcp); } w_eq = 0; w_inv = 0; I odbieram : GML case 13: var _x,_y,_rodz,_id; _x = readshort(); _y = readshort(); _id = readshort(); _rodz = readshort(); ___i = instance_create(_x,_y,Item); ___i.rodzaj = _rodz; ___i.ID = _id; break; Problem w tym że u playera tworzą sie 2 i więcej przedmioty. Oczywiscie instancje na serwie tworze w evencie ktory wykonuje się raz. Myśle że winą jest tu GML with(obj_client) { sendmessage(tcp); } I wysyła dane po kilka razy do klienta, ale nie wiem jak sobie z tym poradzic. Prosze o pomoc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XxMichałxX Opublikowano 2 Listopada 2009 Udostępnij Opublikowano 2 Listopada 2009 a czemu "with(obj_client)" a nie poprostu sendmessage(tcp); ? bo to bys wtedy to wszystko musiał do buferu obj_clienta dodawac Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Listopada 2009 Administratorzy Udostępnij Opublikowano 2 Listopada 2009 nie musi. W ten sposób może wysłać po sockecie danego klienta dane z domyślnego bufora, bo sendmessage nie czyści go, dopiero clearbuffer to robi :) Edit: ten pierwszy kod w jakim jest evencie ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 2 Listopada 2009 Autor Udostępnij Opublikowano 2 Listopada 2009 Pierwszy w Create, drugi to step. Chodz nie wiem czy Nie powinienem z create przenieść do jakiegos buttona. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Listopada 2009 Administratorzy Udostępnij Opublikowano 2 Listopada 2009 rozumiem, że step wygląda tak: GML while(true) { size = receivemessage(global.socket); if ( size <= 0 ) break; packet = readbyte(); switch(packet) { case 13: ... break; default: break; } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 2 Listopada 2009 Autor Udostępnij Opublikowano 2 Listopada 2009 Oczywiście ;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Listopada 2009 Administratorzy Udostępnij Opublikowano 2 Listopada 2009 A w obiekcie obj_player nie ma sendmessage(); w stepie, który mógłby raz jeszcze wysyłać te dane bez clearbuffer ?? bo jakimś cudem one są wysyłane kilka razy :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 2 Listopada 2009 Autor Udostępnij Opublikowano 2 Listopada 2009 Ni ma analizowałem zanim napisałem, ale właśnie zauważyłem pewną zbierzność. Gdy mam np. 3 userów w grze tworzy sie juz nie 2 ale 3 lub 6 przedmiotów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Listopada 2009 Administratorzy Udostępnij Opublikowano 2 Listopada 2009 czyli leci po tym samym sockecie :) zatem coś nie tak jest z połączeniem :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 2 Listopada 2009 Autor Udostępnij Opublikowano 2 Listopada 2009 a moze to byc wina tego samego ip ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Listopada 2009 Administratorzy Udostępnij Opublikowano 2 Listopada 2009 Raczej nie, bo ja takowych problemów nie zauważyłem u siebie. Gdzieś musisz mieć błędy w kodzie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 2 Listopada 2009 Autor Udostępnij Opublikowano 2 Listopada 2009 tylko ze wszystko inne chodzi bez problemu, wiadomosci, pokazywanie graczy, potworów i innych pierdułek. ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Listopada 2009 Administratorzy Udostępnij Opublikowano 2 Listopada 2009 Nie znam twojego kodu, nie wiem gdzie masz błąd, ale on może być wszędzie przy bardziej rozbudowanej grze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 2 Listopada 2009 Autor Udostępnij Opublikowano 2 Listopada 2009 No dobra, myślę dalej, mozliwosci wykluczone wiec błąd musi być głębiej. A jeszcze takie pytanko jest mozliwe określenie jakie pakiety (a w nich jakie zmienne, tablice) idą do jakiego gracza. Nie chodzi tu o wielkość wiadomosci tylko o konkretne wartosci i nazwy zmiennych. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 2 Listopada 2009 Udostępnij Opublikowano 2 Listopada 2009 I u każdego gracza jest po 3 itemy czy tylko u jednego z nich? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 2 Listopada 2009 Autor Udostępnij Opublikowano 2 Listopada 2009 u każdego, wydaje mi się ze ten mój kod rozsyła pakiet do klientow tyle razy ile graczy w grze ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 2 Listopada 2009 Udostępnij Opublikowano 2 Listopada 2009 sprawdź jakimś programem ile, kiedy i jakie porty są podłączone do twojej aplikacji być może któryś nie zamykasz albo same się zamykają do tego przyd ci się Netpeeker Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 2 Listopada 2009 Udostępnij Opublikowano 2 Listopada 2009 A dlaczego twój pierwszy kod jest jakoś tak dziwnie po spacjach? Na pewno nic nie ukrywasz xD? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 2 Listopada 2009 Autor Udostępnij Opublikowano 2 Listopada 2009 chodzi ci o ten kod : GML self._id = SetItemID(); self._rodzaj = 1; global.itemID[self._id] = self._id; var _x,_y,_rodz; _x = mouse_x; _y = mouse_y; _rodz = 1; clearbuffer(); writebyte(13); writeshort(_x); writeshort(_y); writeshort(_id); writeshort(_rodz); with(obj_client) { sendmessage(tcp); } w_eq = 0; w_inv = 0; To jest całe Create Itemu na kliencie. Nic tam wiecej nie ma. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Listopada 2009 Administratorzy Udostępnij Opublikowano 2 Listopada 2009 więc całe zamieszanie powoduje jakiś inny fragment kodu, ale do tego trzeba by mieć po pierwsze caluśki projekt, po drugie czas i chęci. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 3 Listopada 2009 Udostępnij Opublikowano 3 Listopada 2009 Bardzo to dziwne. A na serwie widzisz ile obiektów się tworzy? Może tworzony obiekt ma jakiegoś parenta i jakoś to zapętla? 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ę