Jaklub Opublikowano 17 Stycznia 2009 Udostępnij Opublikowano 17 Stycznia 2009 1. Jak zrobić wyszukiwanie dostępnych sesji? Z tego co wyczytałem w helpie, w standardowym multiplayerze jest to chyba śmiesznie łatwe (przez co wydaje mi się, że chyba zrezygnuję z 39dll w mojej grze, poza tym jest prostszy i nie będę operował zbyt wieloma przesyłanymi wartościami). 2 ROZWIĄZANY. Jak najprościej poznać, czy gracz się rozłączył? 3 ROZWIĄZANY. Oto mój skrypt dołączenia się do serwera. GML global.host=0; ip=get_string("Enter IP of the server.","127.0.0.1"); global.otherplayer = tcpconnect(ip, 14804, 1); if(!global.otherplayer) { show_message("Unable to connect to server."); exit; } room=net_servercreate; Mimo że serwer nie istnieje, gra przechodzi do danego rooma i żaden komunikat nie jest wyświetlany. Jaka może być tego przyczyna? 4. Jak przesłać sprite? Nie chodzi o to, którego sprita używa obiekt, tylko jak przesłać sprite zmieniony funkcją sprite_replace. Z góry dziękuję. Ten, kto pomoże (odpowie na minimum jedno z pytań), trafi do legendarnych creditsów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XivroX Opublikowano 17 Stycznia 2009 Udostępnij Opublikowano 17 Stycznia 2009 1. nie wiem 2. W game_end daj GML clearbuffer(); writebyte(disconnect); sendmessage(/*socket do którego m zostać wysłana wiadomość*/); (musisz mieć stałą disconnect) a w stepie GML while(1) { //odbiór wiadomości switch(readbyte()) { case disconnect: show_message('Gracz rozłączony') break; } } 3. if(!global.otherplayer) zamień na GML if(global.otherplayer<=0) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 17 Stycznia 2009 Autor Udostępnij Opublikowano 17 Stycznia 2009 Masz creditsy. Nie wiadomo, czy skorzystam, ale masz creditsy. ;p Bo chyba jednak skorzystam z wbudowanego mplaya. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Borek Opublikowano 17 Stycznia 2009 Udostępnij Opublikowano 17 Stycznia 2009 Masz creditsy. Nie wiadomo, czy skorzystam, ale masz creditsy. ;p Bo chyba jednak skorzystam z wbudowanego mplaya. Zdecydowanie odradzam. Wbudowany Mplay to jest tylko strata Twojego czasu, już lepiej jak się uczyć, to zacząć od 39dll. Na Mplayu będziesz miał masę problemów z firewallami i tego typu sprawami... Nawet jak wykorzystasz do prostej gry. Moim zdaniem pierwszą rzecz jaką powinni zmienić w nowym GM ( o ile w ogóle cholerstwo wyjdzie ), to właśnie Mplay. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XivroX Opublikowano 17 Stycznia 2009 Udostępnij Opublikowano 17 Stycznia 2009 39dll jest szybszy - tyle tylko powiem :) Ja ucząc się zacząłem od 39dll, wogóle nie umiem obsługiwać mplaya :o Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Borek Opublikowano 17 Stycznia 2009 Udostępnij Opublikowano 17 Stycznia 2009 39dll jest szybszy - tyle tylko powiem :) Ja ucząc się zacząłem od 39dll, wogóle nie umiem obsługiwać mplaya :o Szybszy, to swoją drogą, ale w Mplay każdy gracz musi się łączyć z następnym graczem. Dlatego są problemy z firewallami i przekierowywaniem portów. W 39dll łączysz się tylko do serwera, a ten rozsyła wszystkim informacje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 17 Stycznia 2009 Autor Udostępnij Opublikowano 17 Stycznia 2009 Zdecydowanie odradzam. Wbudowany Mplay to jest tylko strata Twojego czasu, już lepiej jak się uczyć, to zacząć od 39dll. Na Mplayu będziesz miał masę problemów z firewallami i tego typu sprawami... Nawet jak wykorzystasz do prostej gry. To wypada tylko znaleźć naprawdę porządnego tutoriala, który wszystko wyjaśni (bo ten Yody, z całym szacunkiem, ale wyjaśnia bardzo podstawowe podstawy). Ten 39dll jest, powiedzmy, trudny do opanowania. Wciąż szukam odpowiedzi na 1 punkt, bardzo mi na nim zależy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Borek Opublikowano 17 Stycznia 2009 Udostępnij Opublikowano 17 Stycznia 2009 z 39dll jest jak z matematyką. Jeżeli znasz strukturę działania, to później tylko zaczyna się myślenie :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XivroX Opublikowano 17 Stycznia 2009 Udostępnij Opublikowano 17 Stycznia 2009 huh, no dobrze, miałem to zachować dla siebie, ale mogę już dać, proszę się tylko nie śmiać - jest to ujęcie praktyczne na 39dll - miałem do tego tutka napisać, ale jak sam to przeczytałem to mi się odechciało ;x https://gmclan.org/up4821_4_przyklad_39dll.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 17 Stycznia 2009 Autor Udostępnij Opublikowano 17 Stycznia 2009 Ogromne dzięki, to mi bardzo pomogło. =P Jakby ktoś znalazł/znał odpowiedź na pierwsze pytanie, to niech się odezwie, creditsy czekają. EDIT: 4 punkt doszedł. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XivroX Opublikowano 18 Stycznia 2009 Udostępnij Opublikowano 18 Stycznia 2009 Ehhh... z tymi sesjami coś wymyśliłem, ale to chyba nie jest zbyt.... optymalne? możesz najpierw zapisać graczy do jednej globalnej tablicy, później niech serwer prześle listę dostępnych sesji, coś takiego... i zastosować dwuwymiarową tablicę players[nr_sesji,id_gracza] a np. podczas gry wysyłanie czegoś takiego (od gracza na serwre): GML writebyte(nr_sesji) //na przykład writebyte(id_gracza) //plus wszystkie inne info //i sendmessage a w serwerze: GML session = readbyte() //czytamy z jakiej sesji przyszło info id_gracza = readbyte() //czytamy id obj = players[session,id_gracza] //instancja gracza //tuataj poruszanie tą insancją //tutaj odbieranie innych info clearbuffer(); writebyte(id_gracza); //inne info for(i=0;i>liczba_graczy;i+=1) { var _obj; _obj = players[session,i] //wyszukiwanie instancji w tablicy with(_obj) { sendmessage(/*serwer*/) //wysyłanie informacji } przy dołązaniu do sesji, to np. serwer może wysłać jej numer lub takie coś... :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 18 Stycznia 2009 Autor Udostępnij Opublikowano 18 Stycznia 2009 IMO ok, ale ja nie mam ochoty bawić się w globalne serwery lub jakieś hamachi, więc może będzie, może nie. Punkt 4 jest bardzo ważny, jeśli ktoś zna odpowiedź niech ją poda. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Harrrry Opublikowano 18 Stycznia 2009 Udostępnij Opublikowano 18 Stycznia 2009 4. Najpierw sprite_save, a potem http://gmc.yoyogames.com/index.php?showtopic=408731 Co do pierwszego nie wiem i chętnie się dowiem jeśli ktoś zna rozwiązanie :rolleyes: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 18 Stycznia 2009 Autor Udostępnij Opublikowano 18 Stycznia 2009 Nie mam GM7 (powalone wpisywanie klucza, cracka ściągać nie zamierzam, a poza tym chcę robić tę grę również na kompie bez netu), więc nie mogę sobie użyć sprite_save, a poza tym mój sprite jes większy niż ekran. Ale spróbuję. edit: nie działa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Harrrry Opublikowano 18 Stycznia 2009 Udostępnij Opublikowano 18 Stycznia 2009 Jeśli jest tak duży to i tak nie ma sensu. Jeśli wysyłasz mapę to może trzymaj ją w pamięci jako listę różnych figur które po narysowaniu i oteksturowaniu tworzą ziemię? Renderowanie miałoby miejsce po otrzymaniu mapy. Chyba ze chodzi ci o wysyłanie spritów robali, to wtedy trzeba wymyślić coś innego. (Bo pamiętam że można tworzyć własne) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 18 Stycznia 2009 Autor Udostępnij Opublikowano 18 Stycznia 2009 Jeśli jest tak duży to i tak nie ma sensu. Jeśli wysyłasz mapę to może trzymaj ją w pamięci jako listę różnych figur które po narysowaniu i oteksturowaniu tworzą ziemię? Renderowanie miałoby miejsce po otrzymaniu mapy. Chyba ze chodzi ci o wysyłanie spritów robali, to wtedy trzeba wymyślić coś innego. (Bo pamiętam że można tworzyć własne) Sprity nie, bo planuję wyłączyć modowanie do internetowej rozgrywki. Co do mapy, będę musiał opracować jakieś kody generowania. Ale dzięki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XivroX Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 może zapisywanie samych figur albo cuś... np. koło | x | y | promień i tylko takie dane przesyłać ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 19 Stycznia 2009 Autor Udostępnij Opublikowano 19 Stycznia 2009 Właśnie wiem, ale to jest proste, nie tak jak mój nowy problem (też pewnie prosty, ale jestem nowy w 39dll, a akurat nie bardzo wiem, jak temu zaradzić). Otóż, kiedy jest dwóch graczy na serwerze (serwer i gracz), wszystko jest ok. Kiedy wchodzi trzeci gracz, robi się dziwnie. Kiedy trzeci gracz pisze na czacie, serwer tego nie chce odbierać (za to trzeci gracz dobrze widzi to, co piszą inni). Za to kiedy serwer przestawia ustawienia rozgrywki, oboje klienci odbierają to dobrze, natomiast kiedy serwer wysyła trzeciemu graczowi listę graczy, robi się kupa. Wniosek - trzeci gracz nie może wysyłać wiadomości i nie może niektórych (nie wszystkich) odbierać. Podejrzewam, że coś jest nie tak z dołączaniem większej ilości graczy do serwera, a jakoś nie mam ochoty robić tylko internetowych dueli. Mogę wysłać "obcięty" plik gm6 do niektórych osób. Ale tylko wtedy, kiedy to będzie potrzebne, teraz daję kody. Serwer przyjmuje nowych graczy (wycinek ze stepa). GML // Grab players. sock = tcpaccept(listen, 1); if(sock) { for(i=7; i>=1; i-=1) { if global.otherplayer<=0 { listened=i; } } players+=1; global.otherplayer[listened] = sock; show_message("global.otherplayer["+string(listened)+"]="+string(sock)+";"); listened=0; } Gracz lub serwer wysyła czat (czat jest wysyłany kiedy nowy gracz wchodzi na serwer, więc teoretycznie powinien być bezbłędny). GML clearbuffer(); writebyte(net_message_chat); for(i=0; i<=13; i+=1) { writestring(chat_meh.linijka); writeint(chat_meh.linijkakolor); } if global.host=0 sendmessage(global.otherplayer); if global.host=1 for(i=1; i<=7; i+=1) sendmessage(global.otherplayer); Kiedy serwer odbierze od gracza czat, automatycznie rozsyła go do innych graczy tą samą komendą. Serwer wysyła listę graczy. GML // Sends player list, also map and bg. for(i=1; i<=7; i+=1) { clearbuffer(); writebyte(net_message_actualnames); writeshort(controlserver.players); //sprite_assign(writestring(),cillitbang); for(u=0; u<=7; u+=1) { writestring(global.nick); writeshort(global.pindex); } sendmessage(global.otherplayer); } Z góry ogromne dzięki. poradziłem sobie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 11 Kwietnia 2012 Udostępnij Opublikowano 11 Kwietnia 2012 Brawo dla Jakluba za porządne napisanie co zostało rozwiązane, przekreślenie nieważnych treści itd. Lepiej się czyta po długim czasie. Tylko teraz co z punktem 1? Jak przeszukać cały internet (pobrać internet na dysk i wtedy szukać?) i dodaniu każdego ip z grą do tablicy? Ile jest w ogóle IP na świecie? :D Używać pętli for czy co? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Finn Opublikowano 11 Kwietnia 2012 Udostępnij Opublikowano 11 Kwietnia 2012 Mogłeś zrobić nowy temat zamiast odkopywać nowy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 11 Kwietnia 2012 Udostępnij Opublikowano 11 Kwietnia 2012 Mogłeś nic nie pisać zamiast pisać post nic nie wnoszący do tematu. Zauważyłem ostatnio, że wszystko wokoło hejtujesz. To źle... Tematu nowego nie robiłem, ponieważ po 1: Mój post odwołuje się do tego problemu, więc jak ktoś będzie szukał rozwiązania (tak jak ja) i znajdzie ten temat, to możliwe, że odpowiedź będzie miał. Po 2: Robienie tematu a odświeżanie starego nie ma żadnej różnicy, więc o co Ci kurka chodzi? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 11 Kwietnia 2012 Udostępnij Opublikowano 11 Kwietnia 2012 Jak przeszukać cały internet (pobrać internet na dysk i wtedy szukać?) i dodaniu każdego ip z grą do tablicy? Ile jest w ogóle IP na świecie? Używać pętli for czy co? Jeśli jesteś w posiadaniu tak szybkiego łącza i tak pojemnego dysku to gratuluję. Wgl pobranie całego internetu nie jest możliwe:P Załóż bazę i jak ktoś tworzy serwer to niech dopisuje go do tej bazy, a klient tylko odczytuje ip serwerów z bazy. @EDIT Btw. Brawo dla Jakluba za porządne napisanie co zostało rozwiązane, przekreślenie nieważnych treści itd. Lepiej się czyta po długim czasie. Wystarczy skopiować cały post do notatnika i już nie masz przekreśleń :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 11 Kwietnia 2012 Udostępnij Opublikowano 11 Kwietnia 2012 Drogi Utermiko, pierwsza cześć Twojego postu sugeruje, że nie potrafisz wyłapywać ironii w wypowiedziach. Nastomiast patrząc na drugą cześć mam wrażenie, że myślisz jakoby moja wypowiedź, wyśmiewała się z tego co zrobił Jaklub. Ja naprawdę sądzę, że te przekreślenia są dobre. Doczytać się można i wiadomo, co jest nie ważne i można pominąć :) Btw. Nad tym, żeby założyć serwer, do którego łączyłby się każdy host podawał swoje ip, a klient je pobierał też pomyślałem. Ale nie chce za bardzo w to inwestować, gdy chcę zrobić darmową grę. Już lepiej tak jak w większości gier, dołączasz do serweru podając jego IP i koniec. @Dół: "Jeśli jesteś w posiadaniu tak szybkiego łącza i tak pojemnego dysku to gratuluję." No mi to wyraźnie sugerowało, że bierzesz na poważnie pobranie całego internetu na dysk. Nie odpisujemy na posta pod nami! Pamiętaj! - Uzjel Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 11 Kwietnia 2012 Udostępnij Opublikowano 11 Kwietnia 2012 Jak przeszukać cały internet (pobrać internet na dysk i wtedy szukać?) i dodaniu każdego ip z grą do tablicy? Ile jest w ogóle IP na świecie? Używać pętli for czy co? Wg. mnie to sugerowało, że chcesz sprawdzić każdy możliwy adres IP czy hostuje twoją grę. No cóż myliłem się :D Sądząc po reszcie postu wydawało mi się, że mówisz całkiem poważnie(choć wydawało się głupie)^^ @TOPIC Już lepiej tak jak w większości gier, dołączasz do serweru podając jego IP i koniec. To jest raczej najlepszy i najprostszy sposób :P Możesz dorobić ewentualnie listę "ulubionych" serwerów, aby nie trzeba było za każdym razem wpisywać IP :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 11 Kwietnia 2012 Udostępnij Opublikowano 11 Kwietnia 2012 Albo jak nie masz serwera to użyj bazę danych. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 12 Kwietnia 2012 Udostępnij Opublikowano 12 Kwietnia 2012 ja w mojej gierce piłkarskiej online zrobiłem tak, że jak ktoś hostuje gre, to wysyła na serwer www info o nowym hoście, zapisuje w bazie IP, potem jak ktoś chce dołączyć do jakiejś gry, to pobiera liste serwerów z bazy, wybiera interesujący go serwer i łączą się. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 12 Kwietnia 2012 Udostępnij Opublikowano 12 Kwietnia 2012 ale były problemy z wygasaniem :P Pamiętam jak parę razy nie mogłem się zalogować bo pisało że już jestem zalogowany. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 12 Kwietnia 2012 Udostępnij Opublikowano 12 Kwietnia 2012 Dla tego nie robisz tego bezpośrednie, tylko przez skrypt na stronie. 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ę