Skocz do zawartości

Niszczenie obiektu


vincenty4

Rekomendowane odpowiedzi

Witam

Mam pytanie jaki kod użyć, żeby zniszczyć 1 obiekt, tak żeby zaraz wsyztkie się nie niszczyły. Taki przykład: żeby zrobić figurkę z gliny muszę mieć jej powiedzmy 3, a w plecaku mam 5. Gdzy wstawie kod z instance_destroy to zniszczy mi wszystkie gliny, a kodu z IP też nie użyje, bo przecież nie wiadomo którą akurat glinę będę miał w plecaku (no bo nie zawsze biorę z ziemi kurat tą konkretną). Poprostu: jak zniszczyć 1 obiekt danego rodzaju tak żeby nie zniszcyć reszty, ale bez znajomego IP (nie zawsze będzie to obiekt o tym akurat IP) . Ciężko mi to opisać, ale chyba wyraziłem się jasno.

Odnośnik do komentarza
Udostępnij na innych stronach

znam Twój problem; )

 

zrób tak

(mi to działa, niszczy tylko jeden, nie wszystkie)

 

np. masz tak:

obj_bomba

obj_ściana

 

kolizja obj_bomba z obj_ściana

instance_destroy;

 

kolzija obj.ściana z obj. bomba

instance_destroy;

 

 

 

no, rozumiesz? musisz instance'a dać i tu i tu.

w kod tego co się niszczy i w kod tego niszczącego.

Odnośnik do komentarza
Udostępnij na innych stronach

Nadal nie widzicie różnicy?

Instancja to jeden konkretny egzemplarz obiektu który istnieje w roomie. Każdy ma swój unikalny ID większy lub równy 100000.

Obiekt to definicja zachowania wszystkich jego instancji, jeden z zasobów gry (sprity, soundy, roomy). Obiekty też mają swoje IDy jak inne zasoby, czyli większe lub równe 0. Aby otrzymać tą liczbę trzeba po prostu wpisać nazwę (np. obj_player)

Tak więc instance_destroy() nie usuwa obiektu, tylko aktualną instancję która wykonuje ten skrypt. Można też usunąć wszystkie INSTANCJE obiektu [with(objID)instance_destroy();]. Obiekty własciwie można usuwać ale jest to bez sensu, przed usunięciem obiektu trzeba się upewnić że nie istnieje żadna jego instancja.

Odnośnik do komentarza
Udostępnij na innych stronach

Można też usunąć wszystkie INSTANCJE obiektu [with(objID)instance_destroy();]. Obiekty własciwie można usuwać ale jest to bez sensu, przed usunięciem obiektu trzeba się upewnić że nie istnieje żadna jego instancja.

 

no jak podam id to usunie te jedna "instancje" o tym wlasnie id, a nie wszystkie...

 

co do problemu:

 

robisz inventory jakies na obiektach, coz twoja wola masochisto.

https://gmclan.org/up3255_11_test_kill.html prostacki przyklad niszczenie kilku obiektow -

WCISKAMY SPACJE I PODAJEMI LICZBE OBIEKTOW DO LIKWIDACJI

Odnośnik do komentarza
Udostępnij na innych stronach

Czyli jaki ma być wkońcu kod na: po kliknięciu w kwadrat PRODUKCJA z plecaka znika mi 6 glin (składniki) i pojawia się dany przedmiot. Chodzi mi wogóe o szkielet kodu, bo konkretnej odpowiedzi mi nie podał (a te co były to nie nadają się do wykorztystania). Bo GM traktuje jako instancje wszystkie obiekty danego rodzaju, a nie tylko 1, więc instance destroy nie da bo mi niszczy wszystkie gliny, które są (with też nic nie daje bo niszczy obiekt który jest najbliżej nieważne czy w plecaku czy nie, ale spróbuje coś z tym pokombinować)

Odnośnik do komentarza
Udostępnij na innych stronach

ojej

 

masz zmienna: global.glina - czyli liczbe gliny

 

chcesz ulepic nocnik - wymaga 5 porcji gliny wiec

 

if(global.glina>=5) //sprawdzamy czy jest tyle gliny ile trzeba

{

global.glina-=5; // zabieramy 5 porcji

<< cos tam zeby zrobil sie nocniczek - instance_create albo cos >>

}

else // jesli nie mamy tyle gliny ile trzeba to...

{

show_message("za malo gliny") // ... wyswietla komunikat

}

Odnośnik do komentarza
Udostępnij na innych stronach

@UP: Ale ja wiem o tym wszystkim Chodzi mi tylko o to jaki ma być kod, żeby liczba gliny była przypisana do global.glina albo nawet nie musi być przypisane tylko żeby zrobić jakoś to instance_destroy ale jak mówiłem wtedy niszczy wszystką glinę jaką mam. I własnie o to mi chodzi co zrobić, żeby mi niszczyło tyle ile trzeba, a nie wszystko.

Odnośnik do komentarza
Udostępnij na innych stronach

o moj boshe, napisanie : global.glina=5 przypisuje zmiennej globalnej <<glina>> wartosc 5, mozesz ja dodawac, odejmowac, mnozyc i dzielic, wyswietlac tak aby bylo wiadomo ile masz tej paprykowanej gliny...

 

ja ciem bardzom rozumiem ze chcesz to zrobic po swojemu, ale po swojemu nie zawsze znaczy lepiej zwlaszcza w przypadku osob poczatkujacych. plecak robiony na obiektach przynosi wiecej problemow niz pozytku.

 

bo przeciez latwiej jest zanotowac na kartce: "Mam 5 worków gliny", niz taszczyc je bez przerwy ze soba. w obu przypadkach masz 5 workow gliny. a jak bedziesz chcial sie pozbyc jednego wystarczy ze zapiszesz na kartce "zostały mi 4 worki gliny", zmiast brac worek i niesc go do osedlowego smietnika...

(kartka - zmienne, worki - obiekty, -tyle tytulem wyjasnien dla niekumkatych)

 

jesli sie dalej upierasz przy swoim przewin kilka postow wstecz i znajdz przykladzik jaki wczoraj wydziergalem specjalnie dla ciebie.

Odnośnik do komentarza
Udostępnij na innych stronach

o moj boshe, napisanie : global.glina=5 przypisuje zmiennej globalnej <<glina>> wartosc 5, mozesz ja dodawac, odejmowac, mnozyc i dzielic, wyswietlac tak aby bylo wiadomo ile masz tej paprykowanej gliny...

Ty mnie żle zrozumiałeś, ja tak własnie robie. Tylko że mam taki problem że glinę mam przedstawioną jako sprite i chce żeby mi zniknęło tyle spritów(czyli też i obiektów) ile jej użyłem, a nie wszystko. To co napisał Harrrry daje to samo co ja napisałem. Aha odnośnie tego przykładu to nie jestem takim Newbie żeby mi to w 50% na klockach robić :) . A poza tym ten kod w przykładzie niszczy obiekt który jest najbliżej tego co kliknąłem bez względu czy jest to glina czy nie. (Czyli mogło by tam być cokolwiek a i tak by się zniszczyło).

Odnośnik do komentarza
Udostępnij na innych stronach

o wy niebaczni na modlitwy i blagania, ktorzy sa jako waz, jako bestia szalona niczym huragan...

ekhm... czlowieku nie dobijajmnie. najpierw piszesz o obiektach ze znikaja ci wszystkie, teraz piszesz ze przechowujesz gline w zmiennej globalnej, i masz ja przedstawiona jako sprite. mam wrazenie ze niemasz zielonego pojecia o czym piszesz. moja rada - nie zabieraj sie za cos co cie przerasta jesli niepotrafisz nawet wyciagac logicznych wnioskow z rad innych. wez sie ucz na pamiec faq, bo jesli nie potrafisz przeanalizowac jednego prostego przykladu...

a wlasnie przyklad:

niszczy obiekt który jest najbliżej tego co kliknąłem bez względu czy jest to glina czy nie.

-to se wstaw, kurcze pieczone urwal nac pietrucha, funkcje warunkowa w zaleznosci od tego co chcesz usunac. chyba ze nawet tego nie potrafisz. wez sie lepiej za nauke podstaw, potem rob gry.

Odnośnik do komentarza
Udostępnij na innych stronach

(czyli też i obiektów)
Instancji!

 

To ja mam pomysł! (omg jak ja na to wpadłem <_< )

Skrypt na przedstawienie aktualnej ilości gliny jako powtarzający się sprajt:

GML
var i,xx,yy;

xx=view_xview+32;

yy=view_yview+32;

for(i=0;i<global.glina;i+=1) draw_sprite(sprajt,0,xx+i*16,yy);

Odnośnik do komentarza
Udostępnij na innych stronach

Wez sie lepiej za nauke podstaw, potem rob gry.

Nie bulwersuj się tak, nie jestem początkującym, w GM "robie" rok, poprostu chciałem zwykły kawałek kodu. A te obiekty czy też instancje już mi się namieszały po tych wszytkich postach. Naprawdę wiem jak programować dobrze bo już naprawdę dużo zrobiłem jak chcesz to ci coś podeślę na PW. POPROSTU poprzednie posty strasznie mi namieszały bo niektóre wzajemnie się wykluczją (ale już doszedłem co i jak)

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