Ogłoszenie |
Administracja Forum
|
Zamknięty przez: Ayene Sob 05 Maj, 2012 20:28 |
Uniemożliwienie ataku w walce |
Autor |
Wiadomość |
Shadi
Preferowany:
Ranga RM:
Dołączył: 07 Lut 2010 Posty: 51
|
Wysłany: Pią 02 Mar, 2012 17:44
|
|
Uniemożliwienie ataku w walce
|
Witam, czy w standardowym systemie walki rpg makera zdarzeniem bądź skryptami da się zablokować możliwość atakowania naszym bohaterom których mamy w drużynie? Jeśli tak to jak? Jest mi to potrzebne, bo chcę zrobić w mojej grze walki na safari zone, w których możemy łapać pokemony tylko rzucając pokeballe, nie mając możliwości ich osłabiania, a używam standardowego systemu walki - nie używam starter kita. |
|
|
|
Mateusz SSJ8
Preferowany:
Pomógł: 1 raz Dołączył: 07 Sty 2012 Posty: 46 Skąd: Polska
|
Wysłany: Pią 02 Mar, 2012 20:27
|
|
|
W pierwszej kolejności zapoznaj się ze składnią Ruby, na którym opera się RGSS. Musisz wiedzieć, jak skrypty się składają. Dopiero wtedy możesz zabrać się za takie przedsięwzięcie. Ze mną też tak było. Też wklejałem cudze skrypty do swoich gier, zanim po raz pierwszy w życiu napisałem własny skrypt na potrzeby gry, którą robiłem (SSJ8_ABS do gry "ModernTown Shippuuden: The Return of Fnowflake Pirates"). I nie używaj zmiennych Cytat: | @damage_pop = false
@damage = nil
@states_plus = []
@states_minus = []
@critical = nil | , jeśli nie chcesz mieć większych problemów. Zamiast tego użyj
Cytat: | class Game_ActionResult
attr_accessor :pop
def initialize
@pop = false
initialize_damage
initialize_states
initialize_critical
initialize_absorb
end
attr_accessor :damage_hp, :damage_sp, :damage_st
def initialize_damage
@damage_hp = 0
@damage_sp = 0
@damage_st = 0
end
attr_accessor :poison, :states_plus, :states_minus, :states_effect
def initialize_states
@poison = []
@states_plus = []
@states_minus = []
@states_effect = []
end
attr_accessor :critical_level, :critical_levels
def initialize_critical
@critical_level = -1
@critical_levels = []
end
attr_accessor :absorb_hp, :absorb_sp, :absorb_st
def initialize_absorb
@absorb_hp = false
@absorb_sp = false
@absorb_st = false
end
end | , pamiętając, że @critical_level zwraca tylko stan wynikowy ciosu
Cytat: | -1 = pudło
0 = unik
1 = trafienie
Więcej niż 1 = cios krytyczny |
Będziesz musiał potem zmienić całą skryptologię, ale zyskasz trochę szybkości z wykonywaniem skryptów, jeśli dobrze wszystko rozplanujesz. |
________________________ Ryzykując, że zrobisz super gniota, możesz zrobić super hit lub super gniota. |
|
|
|
Shadi
Preferowany:
Ranga RM:
Dołączył: 07 Lut 2010 Posty: 51
|
Wysłany: Pią 02 Mar, 2012 20:39
|
|
Hmm. Nie,dzięki
|
Sorry, nie wiem czy się nie zrozumieliśmy, ale ja nie chcę całego zmieniać systemu dotyczącego obrazeń- żeby kontrolować czy atak trafi, tylko chcę mieć skrypt dzięki któremu wpisuje w poleceniach walki wywołaj skrypt wpisuje tam krótki kod i wtedy ataki nie działają w tej właśnie walce w której to umieściłem.
Ayene mi pomogła wcześniej z czymś takim żeby przez jakiś czas w walce grafiki bohaterów, niezależnie od tego jakich bohaterów mamy w drużynie, oprócz pierwszego nie były widoczne, więc może teraz coś wymyśli też. Wtedy z kolei miałem animację jak trener wypuszcza pokemony i właśnie pierwszy bohater zmieniał grafikę na kolejne klatki animacji wypuszczania, i nie chciałem by pozostali poza pierwszym bohaterowie nie byli widoczni.
Ayene mi pomogła, więc może teraz też da radę.
Poza tym, co do skryptów, to ja w tworzeniu gry prawie w całości opieram się na eventach więc jak do czegoś potrzebny jest skrypt to chyba logiczne ze proszę o pomoc? |
|
|
|
Ayene
Ranga RM:
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
|
Wysłany: Nie 04 Mar, 2012 12:50
|
|
|
Czyli co... atakować miałaby tylko pierwsza osoba w drużynie? Myślę, że dałoby radę zablokować. Gorzej dać warunek, kto miałby jednak akcje wykonywać. |
________________________
|
|
|
|
Shadi
Preferowany:
Ranga RM:
Dołączył: 07 Lut 2010 Posty: 51
|
Wysłany: Pon 05 Mar, 2012 16:20
|
|
|
Nie. Tym razem chciałbym żeby żaden bohater nie mógłby atakować ale właśnie tylko w wybranych walkach( walki w safari zone). Wystarczyłby mi skrypt za pomocą którego mógłbym tę możliwość ataku "wyłączyć" i " z powrotem włączyć". |
|
|
|
Ayene
Ranga RM:
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
|
Wysłany: Wto 06 Mar, 2012 23:42
|
|
|
Nie do końca rozumiem Opisz mi dokładnie, jak to ma wyglądać, bo z tego wynika, że chcesz, aby gracz wszedł do walki, ale nie mógł podjąć akcji żadną postacią. Z kolei chcesz, aby w wybranym przez Ciebie momencie gry, mógł coś robić, bo tę opcję włączysz... tak? Ale w takim razie, jak zakończy się walka, skoro gracz nie może nic zrobić? Chcesz ją zautomatyzować, czy co? |
________________________
|
|
|
|
Shadi
Preferowany:
Ranga RM:
Dołączył: 07 Lut 2010 Posty: 51
|
Wysłany: Sro 07 Mar, 2012 20:47
|
|
|
Jakby co to mogę to olać i nie sprawiać wam więcej problemów z dostosowaniem się do moich szalonych wymagań.
Chodzi o to że nie chcę wyłączyć akcji tylko możliwości ataku, bohaterowie w teamie mógłby się bronić, używać itemów itp. I ma to dotyczyć KILKU WYBRANYCH WALK, dlatego chcę mieć możliwość tego wyłączenia i przywrócenia do poprzedniego stanu jakimś krótkim skryptem że np w czasie takiej wybranej walki włączam to, a po niej wyłączam. Ogólnie to wyjaśniam czemu to ma służyć. Ja tworzę grę pokemon. W oryginalnych pokemonach na DS'a czy GBA jest coś takiego jak safari zone. I w takim safari zone, możemy rzucać safari ballami w celu złapania poka( 30 mamy do dyspozycji ich), albo rzucić mu jedzeniem lub kamyczkiem. Pokemon może nam uciec i wtedy jest "Koniec walki" Jak rzucimy kamyczkiem to rośnie szansa jego złapania, ale też rośnie szansa jego ucieczki. Jak rzucimy jedzeniem to rośnie wyłącznie jego szansa złapania. To wszystko dotąd udało mnie się odwzorować. Sęk w tym że w pokemonowym safari zone, zarówno nasze pokemony, jak i pok jakiego napotkamy nie mogą atakować. My możemy rzucać balle, lub cokolwiek, a pok albo nic nie zrobi albo ucieknie. Z powodu tego że nie wierzę by zablokowanie w tych właśnie wybranych walkach do safari możliwości ataku dla zarówno wroga jak i nas, było możliwe, a także chcę te walki safariowe utrudnić, wysunąłem poszukiwanie jakiejś formuły,skryptu, na to co jest wyżej napisane. |
|
|
|
Ayene
Ranga RM:
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
|
Wysłany: Sro 07 Mar, 2012 22:51
|
|
|
Najlepiej będzie modyfikować skrypt domyślny. Wejdź w skrypt 'Scene_Battle 1' i znajdź fragment:
Kod: | @actor_command_window.visible = false |
pod nim dodaj:
Kod: | # Edycja START
if $game_switches[12]
@actor_command_window.disable_item(0)
@actor_command_window.disable_item(1)
end
# Edycja END |
Następnie wejdź w skrypt 'Scene_Battle 3' i znajdź:
pod tym dodaj:
Kod: | # Edycja START
if $game_switches[12]
$game_system.se_play($data_system.buzzer_se)
return
end
# Edycja END |
Znajdź:
po tym dodaj:
Kod: | # Edycja START
if $game_switches[12]
$game_system.se_play($data_system.buzzer_se)
return
end
# Edycja END |
Zauważ, że trzy razy pojawia się liczba 12, to numer przełącznika, możesz go zmienić na inny dowolnie wybrany. |
________________________
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|