Paqoo Opublikowano 12 Grudnia 2007 Udostępnij Opublikowano 12 Grudnia 2007 No coż pojmuje już jak to mniej więcej działa, ale mam problem żeby to, co z "gry" przechodzi do klienta trafiało na server.. <_< Pomożecie? :unsure: Mam coś takiego: KLIENT: obiekt pocisku: <alarm 0> clearbuffer(); writebyte(10); writeshort(x); writeshort(y); writeshort(image_index); writeshort(image_speed); sendmessage(global.clienttcp); obj_klient: <step> case 10: //pocisk pocisk_x = readshort(); pocisk_y = readshort(); pocisk_image_speed = readshort(); pocisk_image_index = readshort(); break; SERVER: obj_klient <step> case 10: pocisk_x = readshort(); pocisk_y = readshort(); pocisk_image_speed = readshort(); pocisk_image_index = readshort(); clearbuffer(); writebyte(10); writeshort(pocisk_x); writeshort(pocisk_y); writeshort(pocisk_image_speed); writeshort(pocisk_image_index); with(obj_client) { sendmessage(tcp); } break; Co to ma ze sobą wspólnego i czemu nie działa? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 12 Grudnia 2007 Filar Społeczności Udostępnij Opublikowano 12 Grudnia 2007 Nie wiem w sumie co chcesz osiągnąć. Jaką strukturę sieciową ma twoja gra? Układ gwiaździsty czyli serwer, do którego podłączeni są klienci? Jeśli tak, to wszystkie dane z klienta muszą przechodzić przez serwer. Co KLIENT trzyma pod zmienną global.clienttcp? Daj większy kawałek kodu, to co jest przed case lub zdebuguj czy w ogóle case jest wywoływane. Umiesz korzystać z debuggera GM? W SERVER step zamień: case 10: pocisk_x = readshort(); na case 10: show_debug_message( 'wykonywanie case 10' ); pocisk_x = readshort(); Następnie odpal serwer w trybie debuggerskim (czerwony trójkąt) i wybierz z menu TOOLS -> SHOW MESSAGES. Jeżeli nie pojawi się tam "wykonywanie case 10", to znaczy że coś jest nie tak z odczytem pakietu. Jeżeli się pojawi, to zaczniemy myśleć dalej. Pamiętaj by korzystać z debuggera GMa bo to strasznie ułatwia wychwytywanie błędów. Btw. zapisywanie image_speed jako short jest fatalnym pomysłem, ponieważ image_speed to ułamek od 0 do 1, a short to liczba całkowita 0-65535. Zamień to na writedouble i readdouble. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 12 Grudnia 2007 Autor Udostępnij Opublikowano 12 Grudnia 2007 Nigdy nie korzystałem z tego debuggera.. Nie wiedziałem, że taka komenda istnieje. Dzięki :) Gra ma takš strukturę, że jest server i klienci sš do niego podłšczeni. Pod global.clienttcp jest co takiego: global.clienttcp = tcpconnect(global.serverip,global.serverport,1); Po odpaleniu debuggera nic się nie pojawiło. Mamy problem z odczytywaniem pakietu... Zmieniłem to image_speed na writedouble i odczyt z readdouble. Co teraz?;/ EDIT: Już sobie z tym poradziłem. Wystarczyło dokładnie przeanalizować kod.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi