Nobody Opublikowano 8 Lipca 2007 Udostępnij Opublikowano 8 Lipca 2007 Siemka Robie gre online (strzelaninke) na silniku -0NL1N3- Klik! ale mam problem. Nie wiem jak zrobic, ze gdy jeden gracz strzela, to drugi widzi ten pocisk i moze nim "dostac" xP Moze ktos pomoc? :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Micanser Opublikowano 8 Lipca 2007 Udostępnij Opublikowano 8 Lipca 2007 Zapewne popsortu ustawiłeś graczowi aby tworzył pocisk, a zapomniałeś wysłać informacji do klienta o tym iż postać strzela, pokombinuj z wysyłanymi danymi, dorób np. zmienną, i gdy będziesz strzelał wyślesz wartość zmiennej jako 1, co u innego gracza będzie oznaczać iż też powinien stworzyć pocisk. Powineneś zrozumieć, dokładniej tłumaczyć nie będe. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomalas Opublikowano 8 Lipca 2007 Udostępnij Opublikowano 8 Lipca 2007 W Create obiektu bullet czyli naboju image_angle = point_direction(x,y,mouse_x,mouse_y); move_towards_point(mouse_x,mouse_y,2); clearbuffer(); writebyte(5); writeshort(x); writeshort(y); writeshort(direction); writeshort(speed); sendmessage(global.clienttcp); Dwie pierwsze linijki mozna zmienic jest to ustalenie ze naboj porusza sie do myszki W serwerze w obiekcie obj_client w stepie znajdz case 4 przejedz na dol i wstaw case 5 case 5: //Update position var bullet; bullet.x = readshort(); bullet.y = readshort(); bullet.direction = readshort(); bullet.speed = readshort(); clearbuffer(); writebyte(10); writebyte(value); writeshort(bullet.x); writeshort(bullet.y); writeshort(bullet.direction); writeshort(bullet.speed); with(obj_client) { sendmessage(tcp); } break; I na koniec w kliencie obj_client dodaj case 10: var bul; bul = instance_create(readshort(), readshort(), bullet); bul.direction = readshort; bul.speed = readshort(); break; Mozesz nie przesylac speeda to zalezy jak tam robisz gre wystarczy ze w create naboju dasz speed Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Micanser Opublikowano 8 Lipca 2007 Udostępnij Opublikowano 8 Lipca 2007 Lepiej wysłać jedną informacje z gracza niż tyle z naboju. (bardziej optymalne i wygodne w obsłudze) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomalas Opublikowano 8 Lipca 2007 Udostępnij Opublikowano 8 Lipca 2007 Tak ? A skąd inny gracz będzie wiedział gdzie stworzyć ten nabój i w jakim kierunku ? Jezeli przeslesz tylko zmienna ze ma stworzyc ale reszta sama się zrobi... na moje tak jest wygodniej... Niech robi jak chce Edit: I jezeli jeszcze dojda rozne bronie czyli rozne pociski... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Micanser Opublikowano 8 Lipca 2007 Udostępnij Opublikowano 8 Lipca 2007 Poco wysyłać informacje o x i y oraz direction pocisku skoro wysyłane są informacje o x y i direction postaci, no chyba że pocisk pokazuje się w losowym miejscu na mapie, a nie na postaci i nie leci w tą stronę w którą postać celuje. Ja robiłem tak w AOS i jakos działa, nie wysyłałem informacji o x, y oraz direction strzały. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 8 Lipca 2007 Autor Udostępnij Opublikowano 8 Lipca 2007 okej wszystko fajnie tylko ze jak "wystrzele" pocisk to u mnie go nie widac (od razu trafia we mnie) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomalas Opublikowano 8 Lipca 2007 Udostępnij Opublikowano 8 Lipca 2007 No to w takim razie musi wyslac id gracza ktory strzelil Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 8 Lipca 2007 Autor Udostępnij Opublikowano 8 Lipca 2007 i wtedy? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 8 Lipca 2007 Udostępnij Opublikowano 8 Lipca 2007 i wtedy zobaczyc że jeszcze za mało umiesz na napisanie takiej gry, tadam... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Borek Opublikowano 9 Lipca 2007 Udostępnij Opublikowano 9 Lipca 2007 Poco wysyłać informacje o x i y oraz direction pocisku skoro wysyłane są informacje o x y i direction postaci, no chyba że pocisk pokazuje się w losowym miejscu na mapie, a nie na postaci i nie leci w tą stronę w którą postać celuje. Ja robiłem tak w AOS i jakos działa, nie wysyłałem informacji o x, y oraz direction strzały. Mylisz się Micanser. Jeżeli tworzysz pocisk ( u drugiego gracza ) na podstawie jego X i Y, to nigdy nie będziesz miał prawdziwych współrzędnych pocisku. Pamiętaj, że X i Y są czytane z serwera i teraz jeżeli nasz kochany DOWNLOAD trochę się przycina, to owy gracz skacze, albo nie nadąża za prawidłowymi współrzędnymi, wówczas jeżeli stworzysz z jego pozycji obiekt pocisk, to ten poleci w nieprawidłowym miejscu. Informacje tego typu, muszą czysto wychodzić z serwera, bo potem bywają sytuacje, że wygląda na to, iż pocisk nas nie trafia, a tak naprawdę trafia, tylko gracz, który do nas strzela po prostu skacze. image_angle = point_direction(x,y,mouse_x,mouse_y); move_towards_point(mouse_x,mouse_y,2); clearbuffer(); writebyte(5); writeshort(x); writeshort(y); writeshort(direction); writeshort(speed); sendmessage(global.clienttcp); Ja bym bardziej tutaj zajął się optymalizacją. Pierwsze co rzuca się w oczy, to dlaczego writeshort(speed)? Lepiej będzie writebyte(speed) - mniejszy pakiet do wysłania, a wątpie żeby speed był większy od 255 :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 9 Lipca 2007 Autor Udostępnij Opublikowano 9 Lipca 2007 ech... brakuje mi tylko tego, ze jak strzele pocisk, on wyleci przede mnie a nie w srodku mnie ;/ i jeszcze jedna sprawa. jak strzelam, to pocisk ciagle sie tworzy i powstaje sznur :( nawet jak daje mouse left pressed Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 9 Lipca 2007 Autor Udostępnij Opublikowano 9 Lipca 2007 Czy moze mi ktos pomoc? :( edit: ok z tym sznurem juz zalatwilem ale co z tym, ze pocisk stwarza sie we mnie? jak zrobic zeby tworzyl sie np kilka pikseli PRZEDE mna? (tj. kilka pikseli w strone myszki) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jakim Opublikowano 9 Lipca 2007 Udostępnij Opublikowano 9 Lipca 2007 pocisk.x+=lengthdir_x(point_direction(gracz.x,gracz.y,mouse_x,mouse_y),16) pocisk.y+=lengthdir_y(point_direction(gracz.x,gracz.y,mouse_x,mouse_y),16) 16 to wartość oczywiście przykładowa :). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 9 Lipca 2007 Autor Udostępnij Opublikowano 9 Lipca 2007 okej nastepny problem. troche zmienilem ten kod, bo przy jednym strzale (stworzeniu pocisku) robil sie caly sznur (bo w create bylo ze ma wyslac wiadomosc do serwera a on tworzyl nastepny pocisk w ktorym bylo w create ze ma wyslac wiadomosc do serwera i tak w kolko.) wiec wysylanie wiadomosci do serwera dalem w global left button. To jego zawartosc clearbuffer(); writebyte(5); writeshort(x+lengthdir_x(point_direction(obj_bohater.x,obj_bohater.y,mouse_x,mouse_y),16)); writeshort(y+lengthdir_y(point_direction(obj_bohater.x,obj_bohater.y,mouse_x,mouse_y),16)); writeshort(point_direction(obj_bohater.x,obj_bohater.y,mouse_x,mouse_y)); writebyte(5); writebyte(img_index); sendmessage(global.clienttcp); a obj_client step (w miejscu odbierania wiadomosci) case 12: var bul; sound_play(snd_shoot) bul = instance_create(readshort(), readshort(), obj_pocisk); bul.direction = readshort; bul.speed = readbyte(); bul.image_index = readbyte(); break; i wszystko byloby dobrze, gdyby pocisk nie lecial ciagle w gore :( Co moze byc tego przyczyna? :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 11 Lipca 2007 Autor Udostępnij Opublikowano 11 Lipca 2007 Bardzo prosze o pomoc :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 11 Lipca 2007 Udostępnij Opublikowano 11 Lipca 2007 case 12: var bul; sound_play(snd_shoot) bul = instance_create(readshort(), readshort(), obj_pocisk); bul.direction = readshort; -- czy tu nie powinno być nawiasow? bul.speed = readbyte(); bul.image_index = readbyte(); break; Zastanawia mnie co to jest na samym poczatku writebyte(5) a potem jest case 12: oO Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 11 Lipca 2007 Autor Udostępnij Opublikowano 11 Lipca 2007 ech... ten case 12 jest w kliencie. w serwerze jest case 5... Edit: poprawilem nawiasy, ale nie pomoglo :( Edit2: pobawilem sie chwilke i sie udalo :) zamykam temat Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi