[XP] Walka 1vs1 z możliwością zmiany walczącego

Poszukiwane grafiki, muzyka, skrypty, prośby o edycję itp.

Moderatorzy: GameBoy, Dragon Kamillo

ODPOWIEDZ
Shadi
Posty: 65
Rejestracja: 08 maja 2012, 16:48
Lokalizacja: Warszawa

[XP] Walka 1vs1 z możliwością zmiany walczącego

Post autor: Shadi »

Witajcie.
Próbuję w przerwach pomiędzy dostawaniem uwag od testerów, możliwie upodobnić swoją grę do oryginalnych gier pokemon. Teraz wziąłem na warsztat walkę. I otóż chciałbym z systemu walki rpg makera uczynić system walki 1 na 1 z możliwością zmiany walczącego/pokemona. Znalazłem różne skrypty party switchery, ale one nie interesują mnie ze względu na to że zmiana bohaterów w party następuję na kogoś kto nie jest w party, a jest w bazie danych, a mnie interesuję zmiana jedynie w obrębie tego co gracz ma już w drużynie - żeby z tego tylko jednego bohatera/pokemona wystawiał do walki na raz. Inna rzecz to że systemy walki 1 vs 1 które znalazłem właśnie ograniczały wielkość drużyny do 1 bohatera, a u mnie bohaterów ma być tyle co zwykle - czyli 4, a ograniczenie ma polegać na tym, że tylko jeden z nich na raz ma być wystawiany do walki. Plus tak jak w oryginalnych pokemonach ma być możliwość jego zmiany - z menu walki, najlepiej w zamian za fizyczny atak bronią, który nie jest mi potrzebny - oraz po tym jak przeciwnikowi pokemon/potwór padnie i będzie wystawiał kolejnego.
Najlepiej jakby był to skrypt, myślałem też o zrobieniu tego na zdarzeniach, ale tutaj pojawiał się problem teleportu z walki na mapę gdzie wybiera się pokemona/bohatera - gra w momencie tego ustawiania zacinała mi się. + mam 450 walk w grze, więc ustawianie powrotu z mapy wyboru stworka do konkretnej walki to byłaby trochę katorga. Wydajniej byłoby zrobić to na skryptach, tylko niestety ja nie umiem programować, a w RGSS to już całkowicie.
To by było na tyle. Czekam na jakąś odpowiedź.
Obrazek
Shadi
Posty: 65
Rejestracja: 08 maja 2012, 16:48
Lokalizacja: Warszawa

Re: [XP] Walka 1vs1 z możliwością zmiany walczącego

Post autor: Shadi »

Znalazłem skrypt który w miarę by mi odpowiadał. https://forum.chaos-project.com/index.php?topic=5845.0
Tylko są dwa problemy. Pierwszy polega na konfiguracji skryptu -

Kod: Zaznacz cały

  #--------------------------------------------------------------------------
  # * Position=
  #--------------------------------------------------------------------------
  def position=(val)
    # If not configured, set default
    if val == 0
      actor = $data_actors[actor_id]
      actor_class = $data_classes[actor.class_id]
      # Correct the default (poaition starts with 0) to comply with
      # the new convention (starts with 1)
      val = $data_classes[@class_id].position + 1
    end
    # Correction
    val = FTSConfig::MAX_POSITION if val > FTSConfig::MAX_POSITION
    val = 1 if val < 0
    @position = val
  end
end
Otóż actor id oraz actor class id w mojej grze są zmienne - jeżeli gracz wybrał faceta, to wynoszą one 001, jeżeli kobietę to 002, zaś dopóki nie dokonał wyboru - w intrze do gry - 003 (bohater ten nazywa się Nikt). I potrzebuję tutaj to ustawić. Ponadto wydaję mi się, że trzeba aby w obydwu przypadkach liczenie kolejności następnych zaczynało się od 004 bo taki jest dopiero ID następnego Pokemona/bohatera a przeciwna płeć oraz bohater-nikt nie powinien być liczony. Ale mogę się mylić, może jeżeli bohater nie jest w drużynie, to nawet jeżeli jest przeskok między 001 a 004, to dopiero 004 jest liczony. Nie wiem jak to działa.
Drugi problem natomiast polega na tym, aby rozbudować to tak, by zawsze tylko pierwszy w kolejności pokemon/bohater brał udział w walce oraz żeby zastąpić fizyczny atak w walce aktywowaniem tej opcji ustawiania kolejności.
Trzeci problem polega na aktywowaniu zmiany bohatera automatycznie gdy tylko ten pierwszy umrze oraz by ten, który umarł nie mógł już być wybrany (chyba że to automatycznie tak działa).
Czwarty i ostatni polega na tym aby zablokować zmianę kolejności bohaterów lub pokemonów poza walką. Chodzi o to że używam skryptu gąsienicy (catepillar) i po prostu nie chcę byśmy kierowali pokemonem, a za tym szedł człowiek. Natomiast w walce nie jest to problemem, bo autor pozostawił możliwość skryptem $game_actors[<ACTOR_ID>].position = <POSITION> zmiany kolejności bohatera w czasie walki, więc mógłbym wrócić kolejność do oryginalnej po wygranej lub przegranej walce.
Jeżeli komuś by się to przydało to poza tym używam skryptów Ring Menu by Reno-s--Joker, Actor Enemy Hp Bars, Fantasy Bestiary by Thieffer and Dante, ATP by Samo, The thief, Thieffers QuestLog, Multi Panorama, MOG_Damage System by MogHunter i Kategoryzację Przedmiotów by Ayene. To w razie gdyby był problem z kompatybilnością z innymi skryptami, ale wydaje mi się, że nie powinno być.
Tak to wydaje mi się, że znalazłem to czego szukałem.
To by było chyba na tyle. Z góry dziękuję za pomoc. Miłego dnia.
Obrazek
Shadi
Posty: 65
Rejestracja: 08 maja 2012, 16:48
Lokalizacja: Warszawa

Re: [XP] Walka 1vs1 z możliwością zmiany walczącego

Post autor: Shadi »

Tak się akurat złożyło, że po długich poszukiwaniach znalazłem dużo lepszy skrypt, który by zaspokajał moje potrzeby:
https://forum.chaos-project.com/index.p ... 310.0.html
Jest tylko jedna rzecz, którą w nim potrzebuje zmienić tudzież dodać. By za pomocą wywołania skryptu można było zapamiętać wejściowy skład (przed rozpoczęciem zmian w składzie drużyny) i móc przywrócić go po walce. Ma to służyć temu żeby utrzymywać pozory że jest to jedynie manipulowanie wyborem walczącego, a nie składem drużyny w ogóle, poza tym żeby było gwarantowane że pierwszym bohaterem jest bohater z grafiką człowieka, a nie pokemona (kuriozalne by było jakby w gąsienicy człowiek szedł za pokemonem).
Z góry dziękuję za pomoc. Miłego dnia.
Obrazek
Shadi
Posty: 65
Rejestracja: 08 maja 2012, 16:48
Lokalizacja: Warszawa

Re: [XP] Walka 1vs1 z możliwością zmiany walczącego

Post autor: Shadi »

Próbowałem samemu jakoś sobie z tym problemem poradzić. Stworzyłem w tym celu system typowych zdarzeń który najpierw na przełącznikach zapisywałby przed użyciem skryptu Party Switchera Leona_Westbroke jakich bohaterów/pokemony mamy w drużynie - typu przełączniki o nazwie "pokemon a jest w drużynie" , a potem dodawał te pokemony do drużyny po walce. Przy czym najpierw byłby dodany starter, aby był pierwszy w drużynie, potem byłby usunięty z drużyny i przesunięty do rezerwy każdy pokemon który pozostał w drużynie po selekcji dokonanej przez Party Changer (polega ona na wybraniu tylko jednego bohatera do walki), a potem z powrotem dodany do drużyny. Ma to służyć temu, żeby starter zajął jego miejsce, pierwsze miejsce w drużynie. Tylko zamiast polecenia "zmień drużynę"/"change party" w rpg makerze dla kompatybilności z skryptem użyłem komend w nim polecanych do tego celu, to znaczy:
$game_party.remove_actor_to_party(006)
$game_party.add_actor_to_party(006)
Najprawdopodobniej z tego powodu, być może także dlatego, że chciałem aktywować skrypt w walce, nie jestem tutaj pewien, wyskoczył mi błąd:
Party Switcher line 287: NoMethodError occurred
W linijce 287 jest coś takiego napisane w tymże skrypcie: if $game_party.locked.include?(@actor.id)
Ma ktoś jakiś pomysł co z tym zrobić, czy da się to jakoś przezwyciężyć? Szkoda by było aby taki dobry party changer na nic się nie zdał. Z góry dziękuję za odpowiedź.
Obrazek
ODPOWIEDZ