fino25 Opublikowano 21 Stycznia 2005 Udostępnij Opublikowano 21 Stycznia 2005 Witam! Pewnie myslicie sobie: "Co on ciągle z tymi wartościami...". Lecz muszę napisać ten temat, ponieważ umiem to zrobić (wiem jak), ale nurtuje mnie pewna rzecz (właśnie dlatego piszę). Chciałbym się nauczyć GM'a i żeby wszystko było dla mnie zrozumiałe, mam pytanie: Jeśli mam np. Object Create: "global.amunicja = 60;" Alarm0: [KLOCEK "IF VAR..."] "Variable: global.amunicja, Value: 60, Operation: Equal to"//No i tutaj kolejne akcje// Wszystko działa... Jednak jeśli mam wartość lokalną: Object Create: [code] "local.amunicja = 60;" Alarm0: [KLOCEK "IF VAR..."] "Variable: local.amunicja, Value: 60, Operation: Equal to"//No i tutaj kolejne akcje// Jeśli tak zrobię i uruchomię grę, pisze mi coś w tym stylu: Unknown Variable "local.amunicja". Ale jeśli wartość amunicja zadeklaruję poprostu: Object Create: [code] "amunicja = 60;" Alarm0 [KLOCEK "IF VAR..."] "Variable: amunicja, Value: 60, Operation: Equal to"//No i tutaj kolejne akcje// To wtedy wszystko działa! Więc moje pytanie brzmi... PO CO ISTNIEJE TAKIE COŚ JAK "local.", jeśli bez tego "local." wszystko działa, a jak już przed wartością wpiszę "local." to nie działa i wyskakuje błąd, że program nie może wyszukać wartości... Może "local." działa tylko w samym kodzie, a nie w klockach? Jeśli tak, to jak napisać kodem (zamiast klocka "IF VAR..."): "Jeśli wartość lokalna "amunicja" = 60 to ustaw np. szybkość obiektu (np. obj_bohater) na 100..." Bardzo byłbym wdzięczny za odpowiedź, sorki, za zaśmiecanie forum, ale naprawdę taka mala rzecz, a mnie nurtuje od kilku dni... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gooman Opublikowano 21 Stycznia 2005 Udostępnij Opublikowano 21 Stycznia 2005 No to tak. Wartości lokalne są definiowane dla obiektu w ktorym dana wartość jest tworzona. Wyjątkiem tu jest wpisanie prefixu global , other lub prefixu nazwy obiektu. Chodzi tutaj o to że gdy wpisywałeś przed nazwą zmiennej local. Game Maker "zrozumiał", że ma zmienić, lub stworzyć wartość zmienną o nazwie amunicja w obiekcie local. Mam nadzieje, że to pomogło Ci w zrozumieniu ;) Jak coś to daj znać na numer 3535931 to postaram Ci pomóc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 22 Stycznia 2005 Filar Społeczności Udostępnij Opublikowano 22 Stycznia 2005 Krótko mówiąc zmienne globalne definiujemy za pomocą przedrostka global., natomiast zmienne lokalne nie mają żadnego prefixu. Gdzie ty znalazłeś to "local." jako przedrostek? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Woock Opublikowano 22 Stycznia 2005 Udostępnij Opublikowano 22 Stycznia 2005 GMowy edytor skryptów zaznacza przedrostek local w taki sam sposób jak global. Dlaczego? :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
fino25 Opublikowano 22 Stycznia 2005 Autor Udostępnij Opublikowano 22 Stycznia 2005 No wlaśnie... DLACZEGO? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marmot Opublikowano 22 Stycznia 2005 Udostępnij Opublikowano 22 Stycznia 2005 Może kolejna ukryta funkcja, której Mark nie opisał, albo przypadek :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 22 Stycznia 2005 Filar Społeczności Udostępnij Opublikowano 22 Stycznia 2005 Dziwne, poniewaz nie jest to udokumentowane w helpie, ale dziala. Znaczy sie nie w takim przypadku jak fino napisal, ale zadeklarowanie poprzez przedrostek local, a potem odwolanie sie do niej z tego samego skryptu nie powoduje bledu nieznanej zmiennej. To tak jakby local.zmienna dzialala tak samo jak var. Moze fino nie wie o co chodzi z tym var, wiec juz tlumacze: global.zmienna = 0; //zasieg globalny zmienna = 0; //zasieg lokalny var zmienna; //zasieg lokalny dla danego okna skryptu. zmienna = 0; Ostatni sposob deklaracji poprzez slowo var powoduje, ze zmienna bedzie widziana tylko dla tego skryptu a nie calego obiektu, przydaje sie np. przy tworzeniu zmiennych uzywanych w pętlach np. i j k ... a nie chcemy by obiekt przechowywal te zmienne caly czas. Beda one usuwane po zakonczeniu uzycia skryptu. Ale najczesciej sie je uzywa w skryptach uzywanych jako funkcje, wtedy tym sposobem nie dopuszczamy nowo zadeklarowych zmiennych w funkcj do wycieku do obiektu, ktory odwolal sie do tego skryptu - funkcji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
fino25 Opublikowano 22 Stycznia 2005 Autor Udostępnij Opublikowano 22 Stycznia 2005 Heh... Teraz już zrozumiałem. Local służy do zadeklarowania zmiennej w tym samym skrypcie... No, a var to to samo co to, jak bym uzyl local. Dzięki Ranma za wyjaśnienie, już mnie problem nie nurtuje i moge spac spokojnie :D 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ę