Opisek Opublikowano 24 Marca 2014 Udostępnij Opublikowano 24 Marca 2014 Witam, tworzę grę multiplayer na podstawie tego poradnika: (klik). Wszystko idzie dobrze lecz gracze nie widzą się nawzajem oraz id każdego gracze zawsze wynosi 0. Przed tym problemem miałem jeszcze błąd "unknown variable clients or array index out of bounds" lecz po zaznaczeniu opcji przypisania nieznanym zmiennym wartości 0 (w Global Game Settings), ten błąd zniknął. Czy to może być wina tego, a jeżeli tak to w jaki sposób wyeliminować błąd z nieznaną zmienną clients? Kody: Information about object: obj_Menu Sprite: <no sprite> Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Create Event: execute code: global.gracze = 0 global.maxGracze = 0 Key Press Event for H-key Key: execute code: instance_create(0,0,obj_Server) Key Press Event for J-key Key: execute code: instance_create(0,0,obj_Client) Information about object: obj_Server Sprite: <no sprite> Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Create Event: execute code: global.maxGraczy = get_integer("Podaj maksymalną ilość graczy:","2") net_init("dll_39dll.dll",false) net_server_start(0001,global.maxGraczy) net_client_connect("",0001) net_client_send(CONNECT,1,NET_INT,0) net_client_send(DISCONNECT,2,NET_INT,0,0) last_con = 0 last_dis = 0 found_id = 0 global.gracze = 1 for(i = 0; i>= global.maxGraczy; i += 1) { clients = 0 } Step Event: execute code: net_server_update() net_client_update() net_client_send(global.maxGraczy,1,NET_INT,global.maxGraczy) pack_con = net_client_get(CONNECT,1) if pack_con != last_con then { global.gracze+=1 last_con = pack_con found = false for(i = 1; i <=global.gracze; i += 1) { if found = false then { if clients = 0 then { clients = i found_id = i found = true net_client_send(RESPONSE,2,NET_INT,pack_con,found_id) } } } } pack_dis = net_client_get(DISCONNECT,1) if pack_dis != last_dis then { pack_client = net_client_get(DISCONNECT,2) global.gracze -=1 last_dis = pack_dis players[pack_client] = 0 } net_client_send(PLAYERS,1,NET_INT,global.gracze) Draw Event: execute code: draw_text(100 + view_xview, 20 + view_yview , "Gracze:" + string(global.gracze-1) + "/" + string(global.maxGraczy)) Information about object: obj_Client Sprite: <no sprite> Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Create Event: execute code: net_init("dll_39dll.dll",false) net_client_connect("",0001) xy_id = round(random(600)) net_client_send(CONNECT,1,NET_INT,xy_id) player_id = 0 got_id = false name = "" Step Event: execute code: net_client_update() return_id = net_client_get(RESPONSE,2) if got_id = false && return_id = xy_id { found_id = net_client_get(RESPONSE,2) player_id = found_id got_id = true name="Player" + string(player_id) } else { net_client_send(player_id,2,NET_INT,x,y) } if keyboard_check(ord("W")) then y -=5 if keyboard_check(ord("S")) then y +=5 if keyboard_check(ord("A")) then x -=5 if keyboard_check(ord("D")) then x +=5 Other Event: Game End: execute code: net_client_send(DISCONNECT,2,NET_INT,round(random(600)),player_id) Draw Event: execute code: //draw_text(100 + view_xview, 20 + view_yview , "Gracze:" + string(global.gracze)) draw_text(10 + view_xview, 10 + view_yview, "Twoje id:" + string(player_id)) for (count = 1; count<= global.gracze-1; count+=1) { if count != player_id { xx = net_client_get(count,1) yy = net_client_get(count,2) draw_circle(xx,yy,5,false) draw_text(xx,yy-16,"Player"+ string(count)) } } draw_circle(x,y,5,false) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Czarny Ass Opublikowano 24 Marca 2014 Udostępnij Opublikowano 24 Marca 2014 Na podstawie poradnika na youtube? To tak się da robić gry? :o Nie pamiętam już prawie nic z GMa, a gier Multiplayer tym bardziej nie. Nie wiem co ty robisz, ale id 0 to nie jest przypadkiem identyfikator serwera, a reszta to klienci, tj np w grze co-op, 0 to ty, a 1 to twój kolega, a u niego na odwrót? ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Opisek Opublikowano 24 Marca 2014 Autor Udostępnij Opublikowano 24 Marca 2014 Nie, serwer i wszyscy klienci mają id 0. Nie wiem w czym jest błąd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Czarny Ass Opublikowano 24 Marca 2014 Udostępnij Opublikowano 24 Marca 2014 Jak to sprawdzasz? Wyświetlasz u każdego z graczy id, czy u siebie wszystkie? :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lechu4444 Opublikowano 25 Marca 2014 Udostępnij Opublikowano 25 Marca 2014 Odwołujesz się gdzieś do elementu tablicy który nie istnieje. Skoro robisz to na podstawie jakiegoś tutka to przerób go najlepiej jeszcze raz gdzieś musiałeś popełnić błąd, zobacz jeszcze czy na pewno umieściłeś wszystkie obiekty w roomie i czy przypadkiem nie doublują się nazwy zasobów. Ale takie to teraz moje wróżenie z fusów, bo nie dałeś żadnego kodu. Zresztą teraz nawet nie miałbym go jak sprawdzić, chyba że dałbyś kod w poście, a na prawdę ukrywanie kodu, który nie działa, bo pojawia się obawa że ktoś może go skopiować do swojej gry mnie rozbawiło. W necie znajduje się masa przykładów gier mmo które dodatkowo działają, więc nie wiem czego się boisz. :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Opisek Opublikowano 26 Marca 2014 Autor Udostępnij Opublikowano 26 Marca 2014 @Niggass U każdego z graczy wyświetla się jego id. -------------------------------------- EDIT: U serwera widać ile jest graczy aktualnie - to działa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Czarny Ass Opublikowano 26 Marca 2014 Udostępnij Opublikowano 26 Marca 2014 No to jest pewnie tak jak mówiłem. Zrób by u każdego z graczy wyświetlały się wszystkie identyfikatory. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 29 Marca 2014 Udostępnij Opublikowano 29 Marca 2014 GML for(i = 0; i>= global.maxGraczy; i += 1) { clients = 0 } Poważnie nikt nei zwrócil na to uwagę? Z tym błędem (>= zamiast <=) pętla nie wykonuje się ani razu więc ta tablica NIE ISTNIEJE Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Czarny Ass Opublikowano 29 Marca 2014 Udostępnij Opublikowano 29 Marca 2014 Ja nawet nie wiedziałem, że wrzucił kod. Jak już coś dodajecie, piszcie nowy post. :) 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ę