UltimaForum

Tutorial [XP] - Własny ABS - początek

Mateusz SSJ8 - Pon 02 Kwi, 2012 13:20
Temat postu: Własny ABS - początek
Wszyscy znacie wiele różnych systemów walki. Każdy ma swoje zalety i wady.

Blizz-ABS:
+wrogowie upuszczają łupy.
-(jedno zdarzenie = jeden wróg), (działa stale)
=gry ABS z walkami odwiedzanymi tylko jeden raz.

XAS ABS:
+możliwość zrobienia klona Zeldy
-(działa stale), (jedna strona to za mało na jednego wroga)
=gry ABS z elementami platformowymi

MrMO ABS:
+więcej, niż 1 wróg na jedno zdarzenie (można zdecydować wtedy, który kiedy jest)
-współgra tylko ze standardową walką
=Gry (ABS+turówkówki), gdzie można każdą mapę odwiedzać wiele razy.

Ale jak napisać własny system walki łączący najlepsze z każdego istniejącego, a do tego działający na z góry przyjętych przez nas zasadach?

Na początek zajmijmy się klasą silnika walki.


Silnik walki odpowiada za jej działanie.
Kod:

class Silnik_Walki
 def initialize
 end
 def activate(*args)
 end
 def deactivate
 end
 def update
  update_drops
  update_projectiles
  update_events
  update_player
 end
 def update_drops
 end
 def update_projectiles
 end
 def update_events
 end
 def update_player
 end
end

Uzupełnij sam, bo ja nie wiem, czego potrzebujesz.


Kolejnym elementem jest klasa przeciwników.



Kod:

class Game_Enemy < Game_Battler
 def initialize(map, troop_id, member_index)
  super()
  return setup_map_enemy(troop_id) if map
  setup_troop_enemy(troop_id, member_index)
 end
 
 def setup_map_enemy(enemy_id)
  @troop_id = 0
  @enemy_id = enemy_id
 end
 def setup_troop_enemy(troop_id, member_index)
  @troop_id = troop_id
  return @troop_id = 0 unless self.troop.is_a?(troop_class)
  @enemy_id = self.troop.members[member_index].enemy_id
 end
 def troop
  return $data_troops[@troop_id]
 end
end

troop_class jest klasą odpowiedzialną za drużyny wrogów. Jeśli używasz "standardu", wpisz w tym miejscu "RPG::Troop", a w przeciwnym wypadku nazwę własnej klasy.


I to właśnie są dwa najczętsze elementy każdego ABSa. Zachęcam do wypróbowania tego tutorialu.

UWAGA!!!
Skrypt ABSa podany tutaj służy tylko do wskazania najwygodniejszej drogi do napisania własnego skryptu. Wszelkie próby przekonania do uzupełnienia będą ignorowane, a ich nadawcę zgłoszę administracji forum, jeśli dopatrzę się tekstów, które można uznać za groźby karalne.

Melvin - Pon 02 Kwi, 2012 15:54

Mateusz SSJ8 napisał/a:
Wszelkie próby przekonania do uzupełnienia będą ignorowane, a ich nadawcę zgłoszę administracji forum, jeśli dopatrzę się tekstów, które można uznać za groźby karalne.

Pojechałeś... Lol.
Tut nawet niezły, ale mogłeś więcej napisać.

Mateusz SSJ8 - Wto 03 Kwi, 2012 12:07

Muszę ci zwrócić uwagę, Melvin, że te elementy ABSa, które tu podałem, to tylko początek.

Powered by phpBB modified by Przemo © 2003 phpBB Group