bigshark Opublikowano 2 Lutego 2005 Udostępnij Opublikowano 2 Lutego 2005 Chcielbym zrobic rpg ale mam problem. Object hero ma zmienną level, ktorą dalem w create, level=1. Jednak podczas gry są rozne roomy. Chodzi mi o normalną plansze i o room z walką. Jednak gdy zyskuje level, to gdy przechodze do innego roomu logicznie patrzac, level bedzie rowny jeden ... wiec nie ma mozliwosci rozwoju. Probowalem wsadzic zmienną level do game start , ale gdy przechodze miedzy roomami to wtedy zmienna level nie jest wliczana jako zmienna, bo jest wliczana tylko na poczatku gry. Pewnie jest na to jakis banalny sposob ktory zapomnialem. Pomozcie! :( Aha nie chce uzywac globalow Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Firemark Opublikowano 2 Lutego 2005 Udostępnij Opublikowano 2 Lutego 2005 ^^ - bigshark helpa czytaj od samego początku!W romie jest persisten.Zaznacz.Powinno wystarczyć.A level zrób na global.level.Tak moim zdaniem :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SLy Opublikowano 2 Lutego 2005 Udostępnij Opublikowano 2 Lutego 2005 Np. gdzieś w menu daj: hero.level = 1 Nie ustawiaj "persistent" bo wtedy obiekt bedzie w każdym room'ie. Pamietaj, że do zminnej lokalnej odwoływać można się na dwa sposoby: a) w obiekcie "hero" zmienną level zmienisz za pomocą level += 1 W tym wypadku level zwiększy się o jeden; B) jeżeli chcesz odwołać się do zminnej level obiektu hero w jakimś innym obiekcie to zrób to tak: hero.level +=1 P.S. Tyle razy ci mówiłem, że zmienne nie zależą od room'ów tylko od obiektów... ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ajot Opublikowano 4 Lutego 2005 Udostępnij Opublikowano 4 Lutego 2005 Sly - Wydaje mi się że latwiej będzie wykorzystac zmienną globalną niż bawienie się w skazywanie obiektu, i zmiennej. Zmienne globalne są owiele bardziej poręczniejsze... global.level=1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 4 Lutego 2005 Filar Społeczności Udostępnij Opublikowano 4 Lutego 2005 Poza tym sposób SLy'a nie będzie działać. Zmienne nie zależą bezpośrednio od roomów, ale lokalne tak, bo wszystkie obiekty typu niepersistent zostaną zniszczone przy przejściu do następnej planszy, a tym samym i ich zmienne lokalne zostaną utracone. Bigshark: A co, wkurza przedrostek global. ? Właśnie do takich rzeczy zostały one stworzone. Nie wywarzaj okna skoro drzwi są otwarte. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 4 Lutego 2005 Udostępnij Opublikowano 4 Lutego 2005 Chyba sobie żartujecie :blink: . Ranma_man już kilka razy tłumaczył o co chodzi z tymi zmiennymi :blink: tylko dobrze poszukać na forum :D . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
bigshark Opublikowano 5 Lutego 2005 Autor Udostępnij Opublikowano 5 Lutego 2005 Bigshark: A co, wkurza przedrostek global. ? W sumie to moja gra jest dobrze wykonana i bedzie sie dalo ją zrobic z przedrostkiem global, ale gdyby w mojej grze było kilku bohaterów, i kazdy z nich by mial inny poziom to wtedy nie wystarczyl by jeden przedrostek global, trzeba byloby ich robic kilka(np. global.levelhero1, global.levelhero2, global.levelhero3 itd.) Takie cos moze znacznie skomplikowac gre :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 5 Lutego 2005 Filar Społeczności Udostępnij Opublikowano 5 Lutego 2005 Wystarczy zrobić globalną tablicę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marmot Opublikowano 5 Lutego 2005 Udostępnij Opublikowano 5 Lutego 2005 Heh, kolejny leń się znalazł :P . Pozatym globalne, nie skomplikują ci gry! Jak coś wydłużą o te 2 sekundy pisanie kodu :P . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
bigshark Opublikowano 5 Lutego 2005 Autor Udostępnij Opublikowano 5 Lutego 2005 Wystarczy zrobić globalną tablicę. Co to jest ta globalna tablica?? Groznie to brzmi :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SLy Opublikowano 5 Lutego 2005 Udostępnij Opublikowano 5 Lutego 2005 To zykła tablica tylko z przedrostkiem "global". Działa tak samo jak zmienne globalne. global.tablica[n] tak wygląda odwołanie do n-tego elementu jednowymiarowej tablicy "tablica". Tablice mogą byc dwuwymiarowe, trój(trzy)wymiarowe... Wtedy wygląda to tak: global.tablica[n,o] - tablica dwuwymiarowa global.tablia[n,o,p] - tablica trój(trzy)wymiarowa Temat tablic był już kilka razy poruszany na forum... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 5 Lutego 2005 Filar Społeczności Udostępnij Opublikowano 5 Lutego 2005 No to jest to samo co zwykła tablica: heroes[0] = "Stefan"; heroes[1] = "Gienek"; heroes[2] = "Zdzichu"; Forma globalna: global.heroes[0] = "Stefan"; global.heroes[1] = "Gienek"; global.heroes[2] = "Zdzichu"; ------------------------------------------------------ Tworzymy odpowiednią tablicę dwówymiarową: global.heroes[0,0] = "Stefan"; global.heroes[0,1] = 1; global.heroes[0,2] = 50; global.heroes[0,3] = 100; global.heroes[1,0] = "Gienek"; global.heroes[1,1] = 2; global.heroes[1,2] = 60; global.heroes[1,3] = 200; global.heroes[2,0] = "Zdzichu"; global.heroes[2,1] = 1; global.heroes[2,2] = 70; global.heroes[2,3] = 100; Pierwsza liczba w nawiasie kwadratowym to numer herosa, druga to typ pola: 0 - Imie, 1 - Level, 2 - Energia, 3 - Maksymalna energia. Mamy trzech herosów. Każdy z nich ma zmienną lokalną o nazwie id_herosa. Pierwszy ma 0, drugi 1, trzeci 2. Tworzymy skrypt: dodaj_energie: global.heroes[id_herosa,2] += argument0; if ( global.heroes[id_herosa,2] > global.heroes[id_herosa,3] ) { global.heroes[id_herosa,2] = global.heroes[id_herosa,3]; } I teraz w kazdym z herosow mozemy wywolac taka funkcje: dodaj_energie(20); Argumentem jest liczba do dodania do energii. Skrypt sam pobierze z obiektu id_herosa i doda żądaną liczbę i skoryguje wartość gdyby pojemność energii została przekroczona. To sie nazywa elastyczne programowanie. Dzięki temu nie musisz powtarzać skryptów dodawania energii do każdego z obiektów, a zmienne masz zawsze dostępne z poziomu każdego obiektu i nic ze sobą nie koliduje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 5 Lutego 2005 Udostępnij Opublikowano 5 Lutego 2005 Ranma_man ! Mistrz zmiennych globalnych ! :] P.S. Chce ci sie pisać w kółko to samo ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę