Skocz do zawartości

Trochę problemów do rozwiązania.


donway

Rekomendowane odpowiedzi

Mam trochę problemów do rozwiązania, a ponieważ jestem newbie, nie proszę tylko o rozwiązanie, ale także o podanie przyczyny problemu, bo chcę na przyszłość sam naprawić błąd, a nie za każdym razem odwiedzać forum.

 

 

Problemy : p

 

1.Mam potworka o nazwie "Rat", gdy umieszczam ich kilka na mapce, i zabijam jednego to znikają wszystkie.

 

2.Za zabicie potworka dostaję np. 10 doświadczenia. I mam wpisane "if global.exp>10 then show_message('Awansujesz na poziom 2!'); Problem w tym, że gdy zamykam informację wyświetla się ona ponownie, cały czas. Wtf ?

 

3.Nie potrafię zrobić czegoś takiego, że : Mam okno "Plecak" ale gdy chodzę po mapce zostaję ono w jednym miejscu, a chciałbym by było ciągle "w tym samym miejscu na ekranie" tzn. chodziło za bohaterem : p

 

4.Mam sporo problemów z "Menu głównym" jakby ktoś umiał mi wytłumaczyć co i jak to bym prosił. Chodzi mi o: Menu z własnym tłem, full screen, własne opcję itp.

 

 

Z góry thx za pomoc, nie śpieszcie się bo będę dopiero jutro rano : p

Odnośnik do komentarza
Udostępnij na innych stronach

1.Mam potworka o nazwie "Rat", gdy umieszczam ich kilka na mapce, i zabijam jednego to znikają wszystkie.

1. Do określenia HP potworka prawdopodobnie użyłeś zmiennej globalnej. Użyj lokalnej.

 

Lub uzywa zmiennej lokalnej ale hp odejmuje w innym obiekcie który adresując ustala zmienną lokalną we wszystkich robakach.

Najlepiej adresować moby po ich id.

 

2.Za zabicie potworka dostaję np. 10 doświadczenia. I mam wpisane "if global.exp>10 then show_message('Awansujesz na poziom 2!'); Problem w tym, że gdy zamykam informację wyświetla się ona ponownie, cały czas. Wtf ?

 

Tak jak powiedział Nobody, lub też tak :

 

[step]

 

GML
if (maxexp<=exp)

{

show_message('lvl: '+string(lvl));

maxexp = exp*3

}

Chociaz bez sensu jest sprawdzać to co step, radził bym ci to robić przy kazdym dodaniu expa tak aby gra była wydajniejsza. Mozesz operować tak na 1 zmiennej do wszytskich poziomow jakie bedziesz chciał wyświetlić. Pomyśl sam, nie ebde pisał wszytskiego za ciebie ;) . Praca domowa :P .

 

3.Nie potrafię zrobić czegoś takiego, że : Mam okno "Plecak" ale gdy chodzę po mapce zostaję ono w jednym miejscu, a chciałbym by było ciągle "w tym samym miejscu na ekranie" tzn. chodziło za bohaterem : p

 

Wystarczy zmienna która bedzie sprawdzac czy przedmiot jest w plecaku, jesli warunek bedzie nieprawdziwy wystarczy zrobic tak:

GML
if !(warunek_ze_w_plecaku_jest_item)

{

x = view_xview[0] + iles;

y = view_yview[0] + iles;

}

 

4.Mam sporo problemów z "Menu głównym" jakby ktoś umiał mi wytłumaczyć co i jak to bym prosił. Chodzi mi o: Menu z własnym tłem, full screen, własne opcję itp.

 

Poszukaj w dziale skrypty i przykłady tego, na pewno było.

Odnośnik do komentarza
Udostępnij na innych stronach

1. Pewnie niszczysz w obiekcie bohatera za pomocą klocka instance destroy i tam dajesz object rat i dlatego zdychają wszystkie. Wnioskuje, że robisz rpg więc w obiekcie szczura:

GML
//create

hp=10

uderzony=0

//w kolizji z czymś co odpowiada za broń odejmującą hp (o ile bazujesz na hp)

if uderzony=0

{

hp-=1//tu możesz wstawić wartość np swojego dmga czyli global.dmgherosa

alarm[0]=room_speed*czas_do_ponownego_ataku_w_sekundach

}

//alarm[0]

uderzony=0

//step lub draw (draw wykonuje czynność 4 razy na 1 step)

if hp<=0

instance_destroy()

 

2. Musisz mieć tak jak Hunter powiedział jakąś zmienną odpowiadającą za maksymalną ilość expa na dany lvl, bo twoje sprawdzanie robi się co step i co step stwierdza, że exp jest większy niż 10. Zrób jak hunter pisze.

 

3.Zakładam, że masz to na viewie więc muszisz rysować ekwipunek na nim:

GML
//w draw gdzie rysujesz plecak

draw_sprite(sprite,sprite_index,view_xview[0]+ileśtam,view_yview[0]+ileśtam)

 

4.LINK :>

Odnośnik do komentarza
Udostępnij na innych stronach

Kurde. Z tego wszystkiego zadziałało tylko to żeby szczury nie znikały. Nobody miał rację : p

 

Nie rozumiem czegoś takiego:

 

GML
if (maxexp<=exp)

{

show_message('lvl: '+string(lvl));

maxexp = exp*3

}

 

a zaciekawiło mnie to, prosiłbym o wyjaśnienie : D

 

Z tym plecakiem próbowałem wszystkiego i nie chce zadziałać =/

Odnośnik do komentarza
Udostępnij na innych stronach

maxexp-to liczba potrzebna do zdobycia kolejnego lvla

exp-aktualna liczba

jeżeli exp jest równy bądź większy od liczby potrzebnej do osiagnięcia kolejnego lvla to wyswietla wiadomość że masz kolejny lvl i zwiększa liczbę maxexp. Ja bym to zrobił trochę inaczej:

GML
if (maxexp<=exp)

{

twojazmiennalvl+=1

show_message('lvl: '+string(twojazmiennalvl));

maxexp *=3

}

Odnośnik do komentarza
Udostępnij na innych stronach

lol nie możecie używać exp...

zamiast exp daj jakąś inna nazwę zmiennej

 

A wyświetla Ci sie wiadomość cały czas dlatego ze dałeś to w step, a to co jest w stepie wykonuje sie domyślnie 30x na sekundę i za każdym razem sprawdza czy doświadczenie jest większe niz 10 i ze za każdym razem mu wychodzi ze tak to za każdym razem wyświetla wiadomość ;p

 

zrob to np tak:

 

GML
if( doswiadczenie >10 )and( poziom==1 )

{

//wiadmosc itp

poziom+=1

}

 

oczywiście gdzieś w create musisz dac: poziom=1;

 

Co do plecaka to musisz go ustawiac w zależnosci o viewa tak jak pisali poprzednicy.

Zapewne ustawiales sobie viewy w opcjach rooma w zakladce view.

Służy to do tego by nie wyświetlać calej planszy tylko wybranego fragmentu

ustawiaj wiec plecka w odniesieniu do viewu.

Teraz powiedz nam jak dziala twój plecak, bo nie można podać Ci żadnego kodu dopóki się nie dowiemy w jaki sposób wyświetlasz plecak^^

 

Morrwind: w twoim kodzie jest błąd^^ hp się będzie odejmować co stepa a nie co iles sekund ponieważ nie przestawiasz zmiennej uderzony ;p

Odnośnik do komentarza
Udostępnij na innych stronach

Danielus

 

Dzięki za exp : p

 

Plecak, mam go z przykładu tylko jakiego.... O mam "Skrypt plecaka z przedmiotami v1.1, © 2006 Piotr 'gnysek' Gnys dla gmclan.org" coś takiego. Miałem z nim sporo problemów, ale już wszystkie rozwiązałem prócz tego by chodził za ekranem. Nie mogę ustawić go w view w planszy, ponieważ mam już tam ustawione, żeby ekran podążał za bohaterem.

 

Tak przy okazji, wie ktoś jak zrobić "pasek hp/mp" ? Nie tylko sobię ale i potworkom. : p

Odnośnik do komentarza
Udostępnij na innych stronach

Kurde, nie pamiętam skąd go ściągałem ;/, ale chętnie przyjme jakiś nowy plecak, oby działało :l

 

Prócz tych problemów mam kolejne:

 

1. Mam pasek HP i MP i gdy wciskam klawisz F12 uzdrawia mi ileś tam hp i zabiera trochę mp. Ale, nie ma wyznaczonej maxhp i mp czyli ile może się maksymalnie ładować, gdy przekroczy pasek hp i mp ładuje się dalej, za paskiem.

 

2.Mam coś takiego, że co 1*room_speed ( jakoś tak : p) ładuje mi się 1hp i 1mp, tylko po 1. za szybko leci, jak zwolnic ? po 2.także wykracza poza pasek :/

Odnośnik do komentarza
Udostępnij na innych stronach

Musisz zrobić maxhp i maxmp bo będziesz się męczyć.

Ja u siebie w Dark Rune miałem taki kod:

GML
draw_sprite_ext(s_mainbar,1,x,y,1,1,direction,c_white,1)

var _x, _y;

_x = 45;

_y = 1932;

draw_rectangle_color( _x, _y, _x + global.hp * ( dlugosc / global.max_hp ), _y + 6,c_dkgray,c_red,c_red,c_dkgray, false );

draw_rectangle_color( _x, _y, dlugosc+_x, _y + 6,c_dkgray,c_red,c_red,c_dkgray, true );

//w dlugosc wstaw jak dlugi ma byc pasek</span>

 

2. Zwiększ liczbę, przez którą mnożysz room_speed np. room_speed*5 (co 5 sekund)

Odnośnik do komentarza
Udostępnij na innych stronach

Thx wam. Ale mam ostatnią prośbę : p W jaki sposób mam zrobić najprostszy system walki + pokazywanie dmg + zwiększenie ataku wraz z poziomem postaci ? Do tej pory miałem tylko w colision z potwór hp-=ileś tam. Pls help : p I nadal nie mam tego plecaka, jak ktoś umie to też bym prosił : D

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za rade, ale nie skorzystam, jakbyś potrafił czytać ze zrozumieniem, wyczytałbyś, że wszystkie problemy które wymieniłeś już zostały rozwiązane prócz plecaka. Skoro to tego trzeba mieć mózg to nie wiem jak cokolwiek na tym programie zrobiłeś. Każdy kiedyś zaczynał i prosił o pomoc, rady itp. Zresztą nie prosiłem o krytykę byle kogo tylko o pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

To nie jest pomoc. Ty chcesz, żeby ktoś zrobił wszystko za ciebie.

Takie pytania mógłby zadawać 8-10 latek... No chyba, że tyle masz, to sry.

byle kogo

Byle kogo ? Nawet nie wiesz kim jestem. A to, że napisałem dopiero 14 postów nic nie znaczy.

Każdy kiedyś zaczynał i prosił o pomoc, rady itp.

Tak. Ale nie o tak banalne rzeczy.

 

Usiądź i pomyśl trochę sam. Problemy trzeba umieć rozwiązywać samemu. Inaczej nigdy się nie nauczysz.

Odnośnik do komentarza
Udostępnij na innych stronach

To nie jest pomoc. Ty chcesz, żeby ktoś zrobił wszystko za ciebie.

Takie pytania mógłby zadawać 8-10 latek... No chyba, że tyle masz, to sry.

 

Czy ja mówię, że chce aby ktoś zrobił wszystko za mnie ? Po prostu nie radze sobie z pewnymi rzeczami bo dopiero zaczynam, więc pytam...

 

Byle kogo ? Nawet nie wiesz kim jestem. A to, że napisałem dopiero 14 postów nic nie znaczy.

 

Nie wiem i nie chce wiedzieć, mam to gdzieś.

 

Tak. Ale nie o tak banalne rzeczy.

 

A skąd mam wiedzieć te "banalne rzeczy" jak nie od innych osób ?

 

Usiądź i pomyśl trochę sam. Problemy trzeba umieć rozwiązywać samemu. Inaczej nigdy się nie nauczysz.

 

Gdybym umiał rozwiązać te problemy sam, nie pisałbym tego tematu ...

Odnośnik do komentarza
Udostępnij na innych stronach

nie rozumiem na jakiej podstawie sadzisz że on chce zebyśmy wszystko zrobili za niego...

Na takiej podstawie, że takie proste problemy rozwiązuje się samemu.

O pomoc się prosi wtedy, gdy naprawdę po kilku godzinach nie jesteśmy w stanie NIC nowego wymyśleć.

A skąd mam wiedzieć te "banalne rzeczy" jak nie od innych osób ?

Trzeba się nauczyć. Jak z rysowaniem, trzeba ćwiczyć, żeby umieć. PRAKTYKA.

mam to gdzieś.

Wyrażaj się.

 

No dobra... Żeby nie było, że potrafię tylko skrytykować potrzebującego.

if global.hp/global.mp>global.hpmax/global.mpmax then ...

Jeśli wstawiłeś znaki "/" i oba (hp,mp) w jednym obliczeniu, to będzie to działało źle. Pisząc "/", miałem na myśli "lub". Inaczej mówiąc, trzeba napisać obliczenie osobno do hp i mp. Będzie to wyglądać jakoś tak:

GMLif global.hp > global.hpmax then global.hp = global.hpmax

Tak samo z mp, wystarczy podmienić, ale to już chyba wiesz. Nie wiem po co operujesz tu globalami, ale nie ważne...

prócz plecaka.

Hm, przecież ktoś już to pisał ?

x = view_xview[0] + iles;

y = view_yview[0] + iles;

View_x(y)view to pozycja okna na planszy (czyli miejsca, które widzimy). I teraz, żeby plecak się przesuwał, do jego x i y wystarczy dodać właśnie view_xview oraz view_yview (jak w cytacie).

Odnośnik do komentarza
Udostępnij na innych stronach

Ehhh... Masz ten plecak gdzieśtam w rogu ekranu. Jeśli w górnym lewym, wystarczy

GML
x = view_xview[0]

y = view_yview[0]

A jeśli nie, to do view_xview oraz view_yview dodajesz odpowiednie wartości. Wartości te będą odpowiedzialne za pozycję plecaka na ekranie. Np.

GML
x = view_xview[0] + 100

y = view_yview[0] + 50

To tylko przykład !

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