XxMichałxX Opublikowano 27 Maja 2009 Udostępnij Opublikowano 27 Maja 2009 Setting up the server. To create a multiplayer game, one person needs to host the server and the other person needs to connect. To set up a server using the dll you first need to create an object which controls the setting up of the server and accepting any new connection. What you will need to do is create a menu that has 2 buttons. The first button says "Host" and the second button should say "Connect". When the user selects host, make it execute this code "global.master = true;" and make the room change to a room called "rmWaiting". Create a new object and call it "objWait". In the create event of this object add this code: listen = tcplisten(14804, 2, true); if(listen <= 0) { show_message("Failed to listen on port 14804"); game_end(); } Spoko, mam tak: GML global.port=get_integer('Type port for host new game',23852) global.socket=tcplisten(port,30,1) if global.socket<=0 { show_message('You can not host new game at port '+string(global.port)+'. Probably the port is not free.') exit; } global.hoster=1 room_goto(rm_wait) Accepting new connections. To accept new connections you need to create a step event for the "objWait" object we created. In the step event add this code: client = tcpaccept(listen, true); if(client <= 0) exit; global.udpsock = udpconnect(14805, true); global.otherplayer = client; global.otherip = lastip(); global.otherudpport = 14803; room_goto(rmGame); Tak, to też mam: GML var new; new=tcpaccept(global.socket,1) if new<=0 exit; global.udpjoiner=udpconnect(global.port,1) global.joiner=new global.joinerip=lastip() global.joinerport=global.port room_goto(rm_play) Connecting to the server. To join a multiplayer game we need to connect to a server. In the room where you have the button "Host" and the button "Connect", make it so when the player clicks connect it executes this code: global.master = false; server = tcpConnect("127.0.0.1", 14804, true); if(server <= 0) { show_message("Unable to connect to server"); game_end(); exit; } global.otherplayer = server; global.udp = udpconnect(14803, true); global.otherip = tcpip(server); global.otherudpport = 14805; room_goto(rmGame); Pewnie już się domyśliłeś - owszem to też mam. GML ip=get_string('Type ip for join to game',ip) port=get_integer('Type port for join to game',23852) serw=tcpconnect(ip,port,1) if serw<=0 { show_message('Can not join to game with ip '+ip+' and port '+string(port)+'!') exit; } global.server=serw global.udpserver=udpconnect(port,1) global.serverip=tcpip(global.server) global.serverport=port global.hoster=0 room_goto(rm_play) Skoro wszystko mam, to czemu gdy podłączam się do gry - joiner przechodzi do rm_play i sobie gra, a w serwerze zostaje: Waiting for joiner... ? :/ edit: kur** co ja gadam! nie to co u góry, tylko jest tak że joiner pisze mi ze nie moze sie podłączyć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 27 Maja 2009 Udostępnij Opublikowano 27 Maja 2009 Zamień room_goto(rm_play) na instance_destroy() a w evencie destroy daj: closesocket(ID socketa na którym nasłuchujesz) room_goto(rm_play) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 27 Maja 2009 Udostępnij Opublikowano 27 Maja 2009 Port najlepiej ustawić stały, żeby nie trzeba było się bawić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 27 Maja 2009 Udostępnij Opublikowano 27 Maja 2009 A po diabła ty każdej nowej osobie otwierasz nowy port UDP oO? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 27 Maja 2009 Udostępnij Opublikowano 27 Maja 2009 UDP, a serwer musi mieć osobny port, bo będzie innaczej zapchany, czyli joinerport, musi być inny nić tcpconnect i udpconnect. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 27 Maja 2009 Udostępnij Opublikowano 27 Maja 2009 No ale to wystarczy 1 port dla hosta i 2 port dla wszystkich dołączających. DWA porty, nie 100 ;/ 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ę