Skocz do zawartości

Sprawdzanie czy obiekt powinien zostać usunięty


Rekomendowane odpowiedzi

Witam. Tworzę bardzo prostą gierkę, tylko i wyłącznie aby czasem pograć z przyjaciółmi. Wygląda to tak: Jest dwóch graczy i dość dużo bloków. Po mapie lata smok i te bloki niszczy. Trzeba jak najdłużej wytrzymać skacząc z bloku na blok. Tyle słowem wstępu. Problem polega na tym, że usuwanie bloków wygląda inaczej u hosta, a inaczej u osoby która się dołączyła. Wiem, że problem jest w tym, że po prostu jest instance_destroy() kiedy blok dotknie smoka, a nie są te informacje wysyłane przez serwer. I tu się rodzi mój problem. Jak zrobić aby każdy blok był usuwany zgodnie z hostem?

Odnośnik do komentarza
Udostępnij na innych stronach

Tak każdy blok(obiekt) ma swoje id , ale możesz też sam sobie stworzyć zmienną id i na tej podstawie wysyłać odpowiednią informacje. :)

Wybór należy do ciebie, choć wydaje mi się że własny identyfikator bloku byłby lepszy.

Żeby przypisać własne ID, muszę stworzyć tablice? Troszkę ogarniam C++, więc może mi się to akurat przyda. Szukam po forum, ale nie mogę znaleźć, czegoś co by mi pomogło. Mógł by mnie ktoś odesłać, do przykładu, albo napisać kod, który by takowe ID, przypisywał? Nie mam pomysłu jak by to wyglądało.

edit: Chyba już wiem. Mam korzystać z instance_position ?

Odnośnik do komentarza
Udostępnij na innych stronach

Dziękuje za odpowiedzi. Myślę, że będę się częściej udzielał teraz na forum. Wszystko na razie pięknie działa ;)

EDIT: Czy mogę wysłać instance_id, aby potem sprawdziło czy id są takie same i usunęło blok? Bo kiedy chcę używać takiego sposobu, Game Maker przestaje odpowiadać.

Odnośnik do komentarza
Udostępnij na innych stronach

Bloczki stoją w miejscu. Tylko smok lata i je niszczy. Próbowałem tego kodu który wysłałeś i niby działa, ale nie dokładnie. Na mój prymitywny tok myślenia, host nie nadąża wysyłać informacji i tylko co któryś tam blok zostaje usunięty. Ostatecznie mogę na podstawie speed i direction starać się przewidywać gdzie zostaną zniszczone bloczki.

Odnośnik do komentarza
Udostępnij na innych stronach

host = server

argh... chodziło mi o serwer - klient : |

 

Ja robię tak, że tworzę u klienta mapę, ktora za klucze ma ID obiektów serwera (pobiera je zawczasu, zależnie od rodzaju gry może to być na początku rozgrywki, gdy wszyscy klienci są już połączeni, albo w trakcie, kiedy klienci dopiero dołączają - to jest nieco trudniejsze), a za wartości - ID odpowiadających im obiektów klienta. Rozwala mi to wszystkie problemy z kompatybilnością - serwer wysyła ID obiektu w swojej aplikacji, a mapa klienta zwraca ID odpowiedniego obiektu w aplikacji klienta.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie chciałbym zaśmiecać forum i zakładać 10 nowych wątków. Wiem, że powinienem sobie poradzić sam, ale naprawdę nie wiem jak.

https://gmclan.org/up9511_12_Game.html

Mam problem, ponieważ niszczą się tylko niektóre klocki. Nie wiem dlaczego tak się dzieje. Nie proszę o odwalenie całej roboty, a naprowadzenie mnie. I proszę się nie dziwić, że mam bałagan w kodach. To coś w stylu nauki na błędach ;p

Odnośnik do komentarza
Udostępnij na innych stronach

GML
case 3:

global.iks = readshort();

with(objBlock){if(global.iks == myID)instance_destroy();}

break;

 

A w objBlock w kolizji z pileczka wywal ostatni blok kodu, step cały usuń.

Wszystko działa wyśmienicie. Czasem mi ten smok stoi w miejscu u klienta, ale to sam postaram się zlikwidować. Dziękuje za pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

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