Skocz do zawartości

Zablokowane Strzelanie w gierce Online


Rekomendowane odpowiedzi

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

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

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

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

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

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

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

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

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