Specjalne uruchomienie typowego zdarzenia.
Aktualny czas: 01-12-20, 06:39 Witaj! Przejdź do zakładki Logowanie lub Rejestracja


Wątek zamknięty 
[XP] Specjalne uruchomienie typowego zdarzenia.
Shadi Offline
*


Liczba postów: 21
Dołączył: 05-05-13

Pomógł: 0



Post: #1
Specjalne uruchomienie typowego zdarzenia.

Witam. Mam pewien problem.
Pewnie mnie ludzie kojarzą, bo nie pierwszy raz piszę na tym forum z prośbą o pomoc, ale w razie gdyby na nowej wersji tak nie było napiszę że tworzę już od paru lat grę o pokemonach i obecnie zetknąłem się z pewnymi błędem, którego od jakiegoś czasu próbuję naprawić.
Najpierw wyjaśnienie - w mojej grze początkowo dzikie pokemony( w trawie i wodzie) bazowały na zdarzeniach na mapie. Miało to istotną wadę, ponieważ spowolniało grę i to znacznie na większych mapach.
Poza tym było to mało opłacalne, trzeba było kopiować zdarzenia i kopiować. Jakiś czas temu przeszedłem na typowe zdarzenia.
Pojawił się jednak istotny problem - jak za pomocą typowych zdarzeń zrobić tak żeby pokemony dzikie nie wyskakiwały co chwila a co jakąś ilość kroków, najlepiej losową.
GameBoy napisał mi bardzo fajny skrypt na to, a wygląda on tak:
def increase_steps
    super
    id = 235
    tag = 0
    # If move route is not forcing
    unless @move_route_forcing
      x = $game_system.map_interpreter.get_character(-1).x
      y = $game_system.map_interpreter.get_character(-1).y
      if $game_map.terrain_tag(x,y) != tag
        if $game_variables[id] > 0
          $game_variables[id] -= 1
        end
      end
      # Increase steps
      $game_party.increase_steps
      # Number of steps are an even number
      if $game_party.steps % 2 == 0
        # Slip damage check
        $game_party.check_map_slip_damage
      end
    end
  end
I wszystko byłoby ok, gdyby nie to, że zanim zmienna 235 zostanie wylosowana, zdarzenie dzikich pokemonów zdołało uruchomić się ponownie i tak w nieskończoność. Przebudowałem więc typowe zdarzenia dzikich pokemonów, (jest ich kilka w zależności od środowiska i nie tylko) i zrobiłem typowe zdarzenie nimi sterujące wyglądające tak:
https://dl.dropboxusercontent.com/u/1067...ewybor.png
Po każdej walce z dzikim pokemonem umieściłem reset zmiennej 235 losowo pomiędzy 15 a 35.
Teraz chciałbym aby to typowe zdarzenie sterujące innymi uruchamiało się kiedy zmienna o id 235 osiągnie wartość zero. Przy czym uruchamiało się jednocześnie zawsze kiedy ten warunek będzie spełniony i zarazem jednorazowo - żeby zmienna 235 ZDĄŻYŁA się wylosować.
Ma ktoś na to jakiś pomysł?
01-06-13 14:47
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
SaE Offline
*


Liczba postów: 32
Dołączył: 14-04-13

Pomógł: 1



Post: #2
RE: Specjalne uruchomienie typowego zdarzenia.

Próbowałeś w typowym zdarzeniu ustawić warunek jeżeli zmienna jest równa 0 to losujesz ją na nowo?
01-06-13 16:19
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Shadi Offline
*


Liczba postów: 21
Dołączył: 05-05-13

Pomógł: 0



Post: #3
RE: Specjalne uruchomienie typowego zdarzenia.

Zrobiłem coś innego - którekolwiek ze zdarzeń dzikich pokemonów ma startować kiedy zmienna = 0 i kiedy zostanie wywołane przez zdarzenie wyboru - te https://dl.dropboxusercontent.com/u/1067...ewybor.png
zatem po każdej walce wywołanej typowym zdarzeniem umieściłem losowanie zmiennej pomiędzy 15 a 35.
Widzę jednak że zwróciłeś uwagę na poboczny problem. W tej chwili chciałbym się dowiedzieć jak uruchomić typowe zdarzenie wyboru( do którego screena link wyżej) zawsze kiedy zmienna = 0.
W condition switchach można wybrać tylko przełącznik, więc trzeba chyba trzeba zrobić to skryptami. Przy ten problem poboczny też jest istotny - czyli żeby to zdarzenie nie uruchamiało się w nieskończoność tylko raz zostaje wykonane po osiągnięciu przez zmienną wartości 0 i do momentu ponownego osiągnięcia wartości 0 tak się nie działo.
Wydaje mnie się że skoro umieszczam w każdym zdarzeniu pokemonów wywoływanych przez to zdarzenie którego obrazek masz losowanie zmiennej, to tak nie powinno być. Ale jestem zapobiegawczy i dlatego naświetliłem od razu jeszcze by ten problem nie występował.
(Ten post był ostatnio modyfikowany: 02-06-13 16:58 przez Shadi.)
02-06-13 16:57
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Shadi Offline
*


Liczba postów: 21
Dołączył: 05-05-13

Pomógł: 0



Post: #4
RE: Specjalne uruchomienie typowego zdarzenia.

Witam. Postanowiłem sam coś jeszcze zrobić i napisałem sam coś takiego na podstawie systemu na zdarzeniach, którego nie umiałem odpalić wtedy "kiedy zmienna = 0".
if $game_variables[235] = 0
  if $game_switches[161] = true
    if $game_switches[1463] = true
      if $game_variables[108] = 1
        $game_temp.common_event_id = 30
      else
        if $game_variables[108] = 3
          $gmae_temp.common_event_id = 28
        end
      end
    else
      if $game_switches[554] = true
        if $game_variables[108] = 1
          $game_temp.common_event_id = 21
        else
          if $game_variables[108] = 3
            $game_temp.common_event_id = 28
          end
        end
      else
        if $game_switches[275] = true
          if $game_switches[359] = true
            $game_temp.common_event_id = 23
          end
        end
        if $game_variables[108] = 1
          $game_temp.common_event_id = 24
        else
          if $game_variables[108] = 3
            $game_temp.common_event_id = 28
          end
        end
      end
    end
  else
    if $game_variables[108] = 1
      $game_temp.common_event_id = 31
    else
      if $game_variables[108] = 3
        $game_temp.common_event_id = 7
      end
    end
  end
end
Teraz kiedy uruchamiam projekt mam błąd line 1 undefined method "[]=" for nil:NilClass. Czy wszystko do niczego, czy mój wysiłek z tym może coś da?
16-06-13 17:41
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Ayene Offline
*


Liczba postów: 758
Dołączył: 09-04-13

Pomógł: 112



Post: #5
RE: Specjalne uruchomienie typowego zdarzenia.

'$gmae_temp'? Tutaj masz literówkę.
No i jeśli chcesz jedynie sprawdzić wartość to dajesz podwójny znak równości, czyli np.
if $game_variables[235] == 0

[Obrazek: aye_furniture_pres.png]
16-06-13 17:50
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Shadi Offline
*


Liczba postów: 21
Dołączył: 05-05-13

Pomógł: 0



Post: #6
RE: Specjalne uruchomienie typowego zdarzenia.

Dziękuję. Poprawiłem to i kod teraz wygląda tak:
if $game_variables[235] == 0
  if $game_switches[161] == true
    if $game_switches[1463] == true
      if $game_variables[108] == 1
        $game_temp.common_event_id = 30
      else
        if $game_variables[108] == 3
          $game_temp.common_event_id = 28
        end
      end
    else
      if $game_switches[554] == true
        if $game_variables[108] == 1
          $game_temp.common_event_id = 21
        else
          if $game_variables[108] == 3
            $game_temp.common_event_id = 28
          end
        end
      else
        if $game_switches[275] == true
          if $game_switches[359] == true
            $game_temp.common_event_id = 23
          end
        end
        if $game_variables[108] == 1
          $game_temp.common_event_id = 24
        else
          if $game_variables[108] == 3
            $game_temp.common_event_id = 28
          end
        end
      end
    end
  else
    if $game_variables[108] == 1
      $game_temp.common_event_id = 31
    else
      if $game_variables[108] == 3
        $game_temp.common_event_id = 7
      end
    end
  end
end
Z pewnością to coś poprawiło bo taka literówka np: psuła by wszystko.
Mimo to wyskakuje błąd line 1 NoMethod error occured.
Żeby było bardziej jasne objaśnię zmienne i przełączniki:
Cytat:Przełącznik 235 - licznik kroków ( z każdym kolejnym odejmuje 1 aż nie dojdzie do 0. Po każdej walce ma ustawione, żeby się resetował losowo od 15 do 35).
Przełącznik 161 - Aktywność pór dnia
Przełącznik 1463 - Czy gracz jest na pustyni ( wtedy jest odrębne zdarzenie do pokemonów w trawie)
Zmienna 108 - terrain tag - 1 to trawa i jaskinia 3 to woda
Przełącznik 554 - Pora dnia 4 - czyli noc
Przełącznik 275 - czy gracz jest zły
Przełącznik 359 - czy gracz ma 4 odznakę
w Przełącznikach 275 i 359 chodzi o to że jeżeli zostaną spełnione te warunki to oprócz zdarzenia zwykłego dzikich pokemonów ma wyskakiwać zdarzenie z latios/latias.
Z góry dziękuję za dalszą pomoc.
(Ten post był ostatnio modyfikowany: 16-06-13 19:19 przez Shadi.)
16-06-13 19:16
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Wątek zamknięty 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości

Kontakt | Ultima Forum | Wróć do góry | Wróć do forów | Wersja bez grafiki | RSS
Powered By MyBB. © 2013 MyBB Group. All Rights Reserved.
Skórka by Ayene.