Skocz do zawartości

Zablokowane Strzelanie w gierce Online


Rekomendowane odpowiedzi

Opublikowano

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? :(

Opublikowano

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.

Opublikowano

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

Opublikowano

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...

Opublikowano

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.

Opublikowano
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 :)

Opublikowano

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

Opublikowano

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)

Opublikowano

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? :(

Opublikowano

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

Opublikowano

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

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...