UltimaForum

Tutorial [VXAce] - Kurs skryptowania #1

PaKiTos - Sob 05 Maj, 2012 15:25
Temat postu: Kurs skryptowania #1
Witam ;-) Skoro tutaj jesteś, zapewne chcesz się nauczyć skryptować. Skryptowanie nie jest takie trudne, gdy się je opanuje. No ale dobra, przejdźmy do poradnika.

Ta część poradnika nauczy cię:

  • Usuwać komendy walki
  • Kontrolować widoczność komend walki za pomocą przełącznika


Zaczynamy!
Uruchamiamy Rpg Makera VX Ace, otwieramy nasz projekt testowy i naciskamy F11. Widzimy listę różnych windowów, scenesów i innych nieznanych rzeczy. Chcemy zablokować niektóre komendy walki. W tym celu musimy poszukać Window_ActorCommand.
PODPOWIEDŹ!
Spoiler:

Szukaj w pobliżu windowów związanych z walką.


Naszym oczom ukazuje się kod:
Spoiler:

Kod:
class Window_ActorCommand < Window_Command
  def initialize
    super(0, 0)
    self.openness = 0
    deactivate
    @actor = nil
  end
  def window_width
    return 128
  end
  def visible_line_number
    return 4
  end
  def make_command_list
    return unless @actor
    add_attack_command
    add_skill_commands
    add_guard_command
    add_item_command
  end
  def add_attack_command
    add_command(Vocab::attack, :attack, @actor.attack_usable?)
  end
  def add_skill_commands
    @actor.added_skill_types.sort.each do |stype_id|
      name = $data_system.skill_types[stype_id]
      add_command(name, :skill, true, stype_id)
    end
  end
  def add_guard_command
    add_command(Vocab::guard, :guard, @actor.guard_usable?)
  end
  def add_item_command
    add_command(Vocab::item, :item)
  end
  def setup(actor)
    @actor = actor
    clear_command_list
    make_command_list
    refresh
    select(0)
    activate
    open
  end
end


Odpowiada on za komendy postaci w walce, np. atak, obrona, przedmioty... Jeśli na przykład nie chcemy mieć w swojej grze komendy obrony, kasujemy linijkę tworzącą ją. Najpierw musimy znaleźć taki kawałek kodu:
Kod:
  def make_command_list
    return unless @actor
    add_attack_command
    add_skill_commands
    add_guard_command
    add_item_command

Jeśli znasz się na angielskim, łatwo się domyślisz, co do czego służy.
PODPOWIEDŹ!
Spoiler:

attack = atak, skill = zdolność, guard = obrona, item = przedmiot


Czas usunąć komendę obrony. W tym celu usuwamy taki oto kawałek kodu:
Kod:
add_guard_command

Jeśli wszystko zrobiliśmy dobrze i uruchomimy grę, zauważymy brak komendy obrony podczas walki. Ale usunięcie komendy to połowa sukcesu, teraz nauczmy się kontrolować jej widoczność przełącznikiem.
Interesuje nas teraz komenda ataku. Chcemy kontrolować jej widoczność przełącznikiem nr. 1. W tym celu użyjmy warunku (if).
Przełącznik może być włączony(true) albo wyłączony(false). Użyjmy tej wiedzy dla kontrolowania komendy. Nad kawałkiem kodu:
Kod:
add_attack_command

dodajmy warunek:
Kod:
if $game_switches[1] == true

Nie zadziała, bo zapomnieliśmy zakoczyć warunek słówkiem end.
A więc pod linijką dodającą komendę ataku dodajemy jeszcze jedną. Wpisujemy do niej tylko słówko end.
Jeśli wszystko poszło pomyślnie, komenda ataku zostanie ukryta dopóki nie włączymy przełącznika nr. 1.
Nasz kod powinien wyglądać tak:
Spoiler:

Kod:
class Window_ActorCommand < Window_Command
  def initialize
    super(0, 0)
    self.openness = 0
    deactivate
    @actor = nil
  end
  def window_width
    return 128
  end
  def visible_line_number
    return 4
  end
  def make_command_list
    return unless @actor
    if $game_switches[1] == true
    add_attack_command
    end
    add_skill_commands
    add_item_command
  end
  def add_attack_command
    add_command(Vocab::attack, :attack, @actor.attack_usable?)
  end
  def add_skill_commands
    @actor.added_skill_types.sort.each do |stype_id|
      name = $data_system.skill_types[stype_id]
      add_command(name, :skill, true, stype_id)
    end
  end
  def add_guard_command
    add_command(Vocab::guard, :guard, @actor.guard_usable?)
  end
  def add_item_command
    add_command(Vocab::item, :item)
  end
  def setup(actor)
    @actor = actor
    clear_command_list
    make_command_list
    refresh
    select(0)
    activate
    open
  end
end


ĆWICZENIE!
Spoiler:

Zmień skrypt w taki sposób, żeby przełącznik nr. 2 kontrolował widocznością komendy Przedmioty.


Nie dawać na inne strony bez pozwolenia!

sled - Nie 06 Maj, 2012 10:04

Fajny poradnik-przyda się początkującym ;-) Tym bardziej że są to dosłownie podstawy w ruby
AvenCrazy - Sro 30 Maj, 2012 00:09

Cytat:
Skryptowanie nie jest takie trudne, gdy się je opanuje.


Cpt. Obvious on duty :D

Całkiem fajny poradnik, na pewno się przyda, kiedy w końcu zabiorę się za jakiś projekt.

CrasheR - Wto 17 Lip, 2012 10:55

Może w końcu napisze jakiś skrypt sam ^^
makerowiec64 - Nie 18 Lis, 2012 20:21

Bardzo fajne!Jako że jestem zielony jak ogórek w skryptowaniu to się przyda.
Proszę...rób kolejne części.Dałbym ci pomógł,ale niestety nie mogę...

filiotef - Nie 21 Kwi, 2013 21:33

Świetny poradnik :zeby:
Zrobisz kolejne części :?:


Powered by phpBB modified by Przemo © 2003 phpBB Group