Skocz do zawartości

Pętla for problem


Madness

Rekomendowane odpowiedzi

Witam.

Mam taki oto problem, że zamiast u wszystkich przedmiotów visible=false, jest to tylko przy ostatnim przedmiocie w ekwipunku.

Kod w objekcie parent:

GML
with(object0)

 

{if visible=true {item.visible=true}else{item.visible=false}}

 

Włoże do ekwipunku przykładowo 3 przedmioty, i tylko ten 3 zniknie wraz z ekwipunkiem, pozostałe 2 dalej są widoczne.Jest jakiś sposób, żeby temu zaradzić?

Próbowałem z pętlą for, i to samo było, tylko ostatni przedmiot znikał.

Odnośnik do komentarza
Udostępnij na innych stronach

Ooo moje eq ;) .

Stwórz sobie nowy objekt, i dodaj event keybord press key i:

GML
if object0.visible=true {

with (object0){

var i,j;

for (j=0;j<=3;j+=1;){

for (i=0;i<=4;i+=1;){

if inventory[i,j]!=-1

inventory[i,j].visible=false

}

}

}

object0.visible=false

}else{

object0.visible=true

with (object0){

var i,j;

for (j=0;j<=3;j+=1;){

for (i=0;i<=4;i+=1;){

if inventory[i,j]!=-1

inventory[i,j].visible=true

}

}

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

Sory za double posta, ale wiadomo, po co robić new temata do tego:

Mam taki problem, że jak visible=false i wciskam LPM to ma się wsadzać item do eq, i wszystko jest ok, dopóki nie zrobie tego 2x w sensie wyłączam eq klikam na item raz, potem 2 raz na kolejny item, i tego już nie będe opisywał bo po co, luknijcie sami:

Link do Inwentarza

Odnośnik do komentarza
Udostępnij na innych stronach

Proszę:

GML
if collision_point(mouse_x,mouse_y,parent,1,1)

{

item=collision_point(mouse_x,mouse_y,parent,1,1)

visible=true

for(j=0;j<=3;j+=1) {

for(i=0;i<=4;i+=1) {

if inventory[i,j]=0 {

inventory[i,j].visible=true

inventory[i,j]=item

item=0

inventory[i,j].visible=false

visible=false

exit;

}

}}}

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze:

GML
inventory_x[i,j] = x+0+(64*i)// x

inventory_y[i,j] = y+0+(64*j)// y</span></span></span></span>

To nie ma sensu. Tworzysz zmienne, których wartości i tak nie zmieniasz. Lepiej wszędzie, gdzie jest: inventory_y[i,j] po prostu pisać te y+0+(64*j). Dodatkowa tablica to brak jakiejkolwiek elegancji ;) . A jeśli, nie daj Boże, zmienisz położenie ekwipunku... ups.

 

Po drugie:

GML
if item!=0 {

for(j=0;j<=3;j+=1) {

for(i=0;i<=4;i+=1) {

if collision_mouse(inventory_x[i,j],inventory_y[i,j],inventory_x[i,j]+64,inventory_y[i,j]+64) {

if inventory[i,j]=0 { //je?li kratka jest pusta wsadza item

inventory[i,j]=item

item=0

exit;

}else{//je?li nie to zamiania itemy

temp=inventory[i,j]

inventory[i,j]=item

item=temp

}}}}}}

Zrozumienie kodu, w którym jest sześć klamer zamykających pod rząd nie należy do łatwych zadań... Zainwestuj we wcięcia, tabulatory, spacje i inne białe znaki, które poprawią czytelność. Obecny stan to masakra!

 

Swoją drogą, polecam mój przykład ;) .

Odnośnik do komentarza
Udostępnij na innych stronach

Ach, więc to nie twój przykład? To dobrze :) . Zapodam ci inny (coby nie było, że mój: autorstwa Petnala): https://gmclan.org/index.php?czytajart=53. Nawet cały artykuł jest, jak to zrobić. Jest jeszcze chyba podobny Tymona czy kogoś.

 

Pomógłbym ci z chęcią, ale przykład w ogóle mi nie pasuje, z tego kodu nic nie potrafię odczytać i jest nieoptymalny. Choć nie taki najgorszy. Mogę ci ewentualnie napisać na życzenie dostosowany do twoich potrzeb.

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