-
Postów
866 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Odpowiedzi opublikowane przez XxMichałxX
-
-
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:
GMLglobal.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:
GMLvar 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.
GMLip=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ć.
-
ale podobno działa szybciej
UDP is a lot faster then TCP and should be utilized in a game were the main packet is sent continuously. -
po tym kodzie juz dalej nie idzie i do środka nie wchodzi też
e: nawet jak exit; usunąłem to i tak dalej nie szło
e2: jakiś bug chyba ;3
-
a patrz dobry pomysł
GMLif global.socket<=0{
show_message('You can not host new game at port '+string(global.port)+'. Probably the port is not free.')
exit;
}
Na tym sie zatrzymuje..
edit: usunąłem ten kod i działa.. ale czemu? co w tym jest zle?
-
lool dobre
-
opisz dokladniej, i daj wiecej kodu
-
stripslashes($news_topic);
stripslashes($news_contents);
A nie przypadkiem:
$news_topic=stripslashes($news_topic);
$news_contents=stripslashes($news_contents);
bo coś mi sie wydaje że to chyba zwraca
-
tu jest akcja związana z odbijaniem się pocisku od wieży i niszczenie przy zetknięciu się z o_wrog1.
lol?
po co ma sie odbijac od wiezy. usun to i sproboj.
-
ale ja chce ramke, tylko z jakimś spritem
-
aha bo ja napisałem zamiast "valign" to "valgin" .. czasami niektóre wyrazy przekręcam angielskie i zawsze je tak czytam.. albo np przekręciłem z "tutoriale" na "turiotale" i wszdzie bylo napisane "tutoriale" a ja czytałem "turiotale" ; o
edit: no dobra juz działa thx, tylko jeszcze jedno małe pytanko przy okazji: jak zmienic wygląd ramek?
-
nie pomogło :(
-
GMLif show_message_ext('Are you going to host new game?','Yes',0,'No')!=1 exit;
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)
Czemu nie przechodzi do rm_wait ? Nie wyświetla mi You can not..
-
pokaż kod
-
hm a w tabelach to czemu Newsy i Shoutbox mają od górnej krawędzi odstęp 2-3 linijek? czyli są na wyśrodkowanej wysokosci?
-
no a jak człowiek ma 200x400 a takich biegnie np 30.
-
hm.. moze wrog idzie w bok czy cos i nie zdarzy doleciec bo juz sie przesunie? czy idzie prosto na wieze? jak tak to nie wiem.
e: pokaż kody
-
bo pamięć graficzna (z której korzysta surface) jest ograniczona.
dlatego pwoiedziałem ze surface muli. bo przeciwnikow pewnie bedzie duzo,a np u mnie jest słabiutka karta i przy paru przeciwnikach juz by mi muliło.
-
ale narysujesz i wciaz musisz zmieniac i tak jego pozycje jak przeciwniks ie rusza. a z reszta surface muli ;p
-
a jest to topdown, platformowka czy co? bo nie wiem. widac na wprost przeciwnika przed sobą od przodu? jak tak to zrób np sprite_rana i takie coś:
GML/*CREATE PRZECIWNIKA:*/ilosc_ran=0
rana=0
/* DRAW PRZECIWNIKA: */
draw_sprite(sprite_przeciwnik,-1,x,y)
if ilosc_ran=0 exit;
for(i=0; i<ilosc_ran; i+=1)
{
draw_sprite(sprite_rana,-1,rana[i,1],rana[i,2])
}
/* KOLIZJA POCISKU Z PRZECIWNIKIEM */
obj_przeciwnik.ilosc_ran+=1
obj_przeciwnik.rana[obj_przeciwnik.ilosc_ran,1]=x
obj_przeciwnik.rana[obj_przeciwnik.ilosc_ran,2]=y
Powinno działać, ale są też bardziej zoptymalizowane i łatwiejsze sposoby, teraz mi sie nie chce kombinowac ;p
-
PsichiX no właśnie teraz tez z div-em kombinowałem ale nie bardzo wiem co i jak.. podaj mi jakiś przykładowy kod na zrobienie trzech paneli: Nawigacja __ _____________Newsy________________ __Shoutboks
-
aaa a ja dawałem td width..
e; nie działczy
-
Jak zrobić, że gdy w <td></td> piszę np długi tekst to sie tabela rozszerza razem z długością tekstu, a ja chcę zablokować zeby np width bylo wciaz takie same a jak tekst jest za dlugi to automatyczne łamanie lini i przerzuca nizej.. jak to zrobic?
-
nie mogę uruchomić. wywala jakiś błąd winrar
-
no czyli jak idzie w prawo do obiektu solid i jest juz w odleglosci 3 pixeli to sie zatrzymuje bo nie moze isc dalej - jest warunek.
39DDL, brak skryptu O.o
w Pytania zaawansowanych
Opublikowano
a ile razy szybciej na oko to jest?
e:
gnysek ale to nie dotatrcie raczej rzadko się zdarza, a jak ma się zdarzać przy słabym łączu czy coś, to może daćby alarma ktory co 10 sekund wysylalby pozycje tak zeby wyprostować?