Pszełoncznik [VX]

Problemy związane z pracą w RM, poszukiwania współpracowników. Uwaga na zasady zakładania tematów!

Moderatorzy: Dragon Kamillo, GameBoy

Awatar użytkownika
Yoroiookami

Golden Forki 2015 - Pełne Wersje (miejsce 2); Golden Forki 2014 - Pełne Wersje (miejsce 3); Golden Forki 2010 - Gry (miejsce 2)
Posty: 504
Rejestracja: 02 wrz 2014, 12:45

Pszełoncznik [VX]

Postautor: Yoroiookami » 01 lis 2017, 17:06

Jak wiecie, na niektórych mapkach w Kabelku gra się przycinała, szczególnie na słabszych tosterach z 2005 roku. :L
Ponieważ typowe zdarzenie z ubrankami oraz ze skillami są dwukrotnie większe niż w Kable III, chciałbym żeby przełączniki uruchamiały się jedynie po wyjściu z menu. (Czyli po zmianie ekwipunku)
Istnieje jakiś sposób na uruchomienie przełącznika gdzieś w skryptach? Albo na wywołanie skryptu?
Cokolwiek oszczędniejszego.

Pytam, bo pamiętam że kiedyś gra strasznie się zacinała gdy miałem zbyt wiele opcji w warunkach, a zdarzenie typowe które je sprawdzało było odpalone cały czas.

Trochę nietypowa prośba, ale może ktoś coś wie. :lol:
Awatar użytkownika
Soul
Posty: 481
Rejestracja: 19 mar 2011, 21:24
Lokalizacja: Gorzów Wielkopolski

Re: Pszełoncznik [VX]

Postautor: Soul » 01 lis 2017, 19:09

$game_switches[n] = true/false ?
Awatar użytkownika
Dragon Kamillo

Golden Forki 2016 - Pełne Wersje (miejsce 3); Golden Forki 2013 - Zapowiedzi (zwycięstwo); Liga Mapperów Sezon IV (miejsce 2)
Posty: 1788
Rejestracja: 18 paź 2009, 21:23
Lokalizacja: Poznań/Granowiec

Re: Pszełoncznik [VX]

Postautor: Dragon Kamillo » 01 lis 2017, 23:03

Ja to zawsze rozwiązywałem tak, że zablokowywałem dostęp do menu.
Potem typowe równoległe zdarzenie z warunkiem jeśli gracz wciśnie przycisk - wywołaj menu, a poniżej wstawiasz co chcesz np wywołujesz ten przełącznik itp.

Szczerze to był mój mus skrypt w każdym projekcie jaki robiłem w XP czy w 2k/3. Bez tego ciężko było o cokolwiek XD.
Awatar użytkownika
Yoroiookami

Golden Forki 2015 - Pełne Wersje (miejsce 2); Golden Forki 2014 - Pełne Wersje (miejsce 3); Golden Forki 2010 - Gry (miejsce 2)
Posty: 504
Rejestracja: 02 wrz 2014, 12:45

Re: Pszełoncznik [VX]

Postautor: Yoroiookami » 01 lis 2017, 23:46

Nie jestem pewien, gdzie to wstawić Soul.

A twoje rozwiązanie Dragon Kamillo dosyć ciekawe, ale wolałbym bez takiego kombinowania. :>
Awatar użytkownika
Rave

Golden Forki 2010 - Dema (miejsce 2)
Posty: 1955
Rejestracja: 15 kwie 2009, 21:33
Lokalizacja: '; DROP TABLE 'Messages'

Re: Pszełoncznik [VX]

Postautor: Rave » 08 lis 2017, 00:25

Ty tych switchy używasz do widocznego ekwipunku (na mapie)? Jak tak, to nie dałoby się twojego rozwiązania zastąpić skryptem na widoczny ekwipunek? Jak poprosisz na RMWeb, to pewnie ktoś coś znajdzie.

/edit: Ew. zrób sobie label na końcu eventu po sprawdzeniu ubranek i daj jump to label po "założeniu" właściwych ubranek, żeby RM nie sprawdzał warunków które i tak nie mają prawa się spełnić.

Np. Jeśli masz np. taki event:

Kod: Zaznacz cały

<>If Actor A has Ubranie1 equipped
  <>Change graphic Actor A, Ubranie1
<>If Actor A has Ubranie2 equipped
  <>Change graphic Actor A, Ubranie2
<>If Actor A has Ubranie3 equipped
  <>Change graphic Actor A, Ubranie3
...


to zrób z tego


Kod: Zaznacz cały

<>If Actor A has Ubranie1 equipped
  <>Change graphic Actor A, Ubranie1
  <>Jump to label 1
<>If Actor A has Ubranie2 equipped
  <>Change graphic Actor A, Ubranie2
  <>Jump to label 1
<>If Actor A has Ubranie3 equipped
  <>Change graphic Actor A, Ubranie3
  <>Jump to label 1
...
<>Label 1


Uwaga: Nawet jeśli masz warunki w Else, to i tak ta optymalizacja zadziała gdyż interpreter eventów w RM jest niezbyt optymalnie napisany, szczególnie w XP/VX. Jest to nieco odwlekanie problemu w czasie, ale przynajmniej przez pierwsze kilka godzin (?) zabawy gracz nic nie zauważy, a potem będzie chciał skończyć twoją grę to przeżyje.

A jeśli ubrania zależą nie od założonego EQ, tylko od np. zmiennej, to jeszcze lepiej, bo możesz połączyć poprzednią optymalizację z takim czymś:

Kod: Zaznacz cały

<>If Variable 1>6
  <>Jump to label 3
<>If Variable 1>3
  <>Jump to label 2
<>If Variable 1==1
  <>Change graphic Actor A, Ubranie1
  <>Jump to label 1
<>If Variable 1==2
  <>Change graphic Actor A, Ubranie2
  <>Jump to label 1
<>If Variable 1==3
  <>Change graphic Actor A, Ubranie3
  <>Jump to label 1
<>Label 2
<>If Variable 1==4
  <>Change graphic Actor A, Ubranie4
  <>Jump to label 1
<>If Variable 1==5
  <>Change graphic Actor A, Ubranie5
  <>Jump to label 1
<>If Variable 1==6
  <>Change graphic Actor A, Ubranie6
  <>Jump to label 1
<>Label 3
<>If Variable 1==7
  <>Change graphic Actor A, Ubranie7
  <>Jump to label 1
<>If Variable 1==8
  <>Change graphic Actor A, Ubranie8
  <>Jump to label 1
<>If Variable 1==9
  <>Change graphic Actor A, Ubranie9
  <>Jump to label 1
<>Label 1


Wiem, goto i te sprawy, wygląda to tragicznie, ale tak trzeba w makerze kombinować żeby jakoś działało. Jak mam rację co do odpowiednich sekcji ubrań opartych na zmiennych a przełączniki są tylko po to aby sprawdzić czy zmiana jest potrzebna, ew. do parallel eventa w bazie, to podziel odpowiednio na sekcje, niekoniecznie tak małe, to tylko przykład. Niestety w oryginalnym problemie ci pomóc nie mogę, bo nie znam RGSS2 na tyle, ale mogę ci pomóc zoptymalizować ubrankowe eventy.

Radziłbym też poczytać posty na rpgmaker.net o optymalizacji eventów (także tutki i artykuły), większość jest do 2k3, ale generalne koncepty pasują do każdego makera.
Awatar użytkownika
Yoroiookami

Golden Forki 2015 - Pełne Wersje (miejsce 2); Golden Forki 2014 - Pełne Wersje (miejsce 3); Golden Forki 2010 - Gry (miejsce 2)
Posty: 504
Rejestracja: 02 wrz 2014, 12:45

Re: Pszełoncznik [VX]

Postautor: Yoroiookami » 08 lis 2017, 08:24

Kurczę, Rave, dzięki za rozpisanie się. :>
Faktycznie mógłbym użyć takiego skryptu, chyba nawet poszukam. Bo skoro jest lepsze rozwiązanie, to nie będę niepotrzebnie się męczyć.

Nie wiedziałem, że etykiety tak dziwnie działają. :I

Kod: Zaznacz cały

<>If Actor A has Ubranie1 equipped
  <>Change graphic Actor A, Ubranie1
  <>Jump to label 1
<>If Actor A has Ubranie2 equipped
  <>Change graphic Actor A, Ubranie2
  <>Jump to label 1
<>If Actor A has Ubranie3 equipped
  <>Change graphic Actor A, Ubranie3
  <>Jump to label 1
...
<>Label 1

Czy w tym przykładzie warunek i tak nie będzie ciągle sprawdzany? Bo odsyła nas na koniec, ale dopiero po sprawdzeniu. @_@
Awatar użytkownika
Dragon Kamillo

Golden Forki 2016 - Pełne Wersje (miejsce 3); Golden Forki 2013 - Zapowiedzi (zwycięstwo); Liga Mapperów Sezon IV (miejsce 2)
Posty: 1788
Rejestracja: 18 paź 2009, 21:23
Lokalizacja: Poznań/Granowiec

Re: Pszełoncznik [VX]

Postautor: Dragon Kamillo » 08 lis 2017, 09:19

Nie jeśli na końcu dasz przełącznik który wyłącza to zdarzenia. Ale wtedy nadal musisz go uruchomić zaraz po wyjściu z menu.

Jeśli używasz podstawowego (cudzego w sumie też, powinni być podobnie) menu to znajdź w skryptach zakładkę scene_menu (czy coś podobnego), a w tej zakładce znajdź w kodzie coś związanego ze scene_map i przed linijkę która to zawiera wklej to co napisał soul wyżej. Wtedy powinien się włączać przełącznik przy wyjściu z menu. A przynajmniej tak to można zrobić w RMXP i będzie śmigało, VX ma jakieś dziwne te skrypty, co prawda lepiej zoptymalizowane, ale przez to straciły cechę "na chłopski rozum" którą stosowałem w RMXP XD.
Awatar użytkownika
Yoroiookami

Golden Forki 2015 - Pełne Wersje (miejsce 2); Golden Forki 2014 - Pełne Wersje (miejsce 3); Golden Forki 2010 - Gry (miejsce 2)
Posty: 504
Rejestracja: 02 wrz 2014, 12:45

Re: Pszełoncznik [VX]

Postautor: Yoroiookami » 08 lis 2017, 13:15

Wielkie dzięki, Kamillo. Wrzuciłem to tutaj i wszystko działa jak powinno. :>

Kod: Zaznacz cały

#--------------------------------------------------------------------------
  # * Update Command Selection
  #--------------------------------------------------------------------------
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $game_switches[98] = true
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and @command_window.index < 4
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and @command_window.index == 4
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case @command_window.index
      when 0      # Item
        $scene = Scene_Item.new
      when 1,2  # Skill, equipment, status
        start_actor_selection
      when 3      # End Game
        $scene = Scene_End.new
      end
    end
  end

Wróć do „Pomoc”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości