UltimaForum

Tutorial [XP] - Jak zrobić "Dziennik zadań".

Melvin - Nie 28 Mar, 2010 18:26
Temat postu: Jak zrobić "Dziennik zadań".
Helo!

Ostatni piszę skrypt na dziennik misji!
Chciałem zaprezentować w czterech krokach jak napisać taki skrypt.

Właśnie tu robię takie coś...

I jeszcze chcę podkreślić, że to mój pierwszy skrypt tego typu.

Dobra!

Zaczynamy!

Najpierw czytamy to: Okno w Ruby
(Bardzo dziękuję Time-mu za super poradę! Bez niego nigdy bym nie zaczął pisać skryptu.)

Ok.
Jak już przeczytałeś/aś poradę Time-go, bierzesz się za to:

Krok 1 - Window
Spoiler:


Najpierw robimy rzecz najprostszą...
Kod:
class Window_okno < Window_Base
  def initialize(x = 160, y = 120, width = 320, height = 240)
    super(x, y, width, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Tahoma"
    self.contents.font.size = 18
    self.back_opacity = 160
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.draw_text(0, 0, 288, 32, "Losowy tekst służący do zapełnienia okna", 1)
  end
end

Dobrze... Wypadałoby utworzyć jedno zadanie...
Ale najpierw zmień "Window_okno" na "Window_Zadania"... Będzie łatwiej...
Zamiast tego:
Kod:
    self.contents.draw_text(0, 0, 288, 32, "Losowy tekst służący do zapełnienia okna", 1)

Piszemy na przykład... "Zadanie 1 - Ukończone" i zmieniamy położenie wysokości tekstu... Czyli tak:
Kod:
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Nieukończone", 1)

OK!
Ale jak zrobić, żeby można zakończyć zadanie?!
Tak:
Piszemy nad:
Kod:
    self.contents.draw_text(0, 0, 288, 64, "Zadanie 1 - Nieukończone", 1)

Coś takiego:
Kod:
else

A jeszcze nad "else", takie coś:
Kod:
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Ukończone", 1)


Całość powinna wyglądać tak:
Kod:
class Window_Zadania < Window_Base
  def initialize(x = 160, y = 120, width = 320, height = 240)
    super(x, y, width, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Tahoma"
    self.contents.font.size = 18
    self.back_opacity = 160
    refresh
  end
  def refresh
    self.contents.clear
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Nieukończone", 1)
  end
end

Teraz wypadałoby dać jakiś nagłówek... Np... "Zadania". (Dość dobra nazwa)
Więc piszemy nad tym:
Kod:
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Nieukończone", 1)

To:
Kod:
     self.contents.draw_text(0, 0, 288, 32, "Zadania", 1)


Wszystko niby ok... ale nie do końca...
Trzeba zrobić np. zakończenie zadania po jakiejś zmiennej...

Piszemy więc tak:
Cytat:
self.contents.draw_text(0, 0, 288, 32, "Zadania", 1)
if $game_variables[1] == 3
self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Ukończone", 1)
else
self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Nieukończone", 1)


Kod:
if $game_variables[1] == 3

Znaczy to że zmienna musi wynosić 3 a "[1]" to numer zmiennej.
W przeciwnym wypadku zadanie pozostanie nadal nieukończone...

Całość wygląda tak:
Kod:
class Window_okno < Window_Base
  def initialize(x = 160, y = 120, width = 320, height = 240)
    super(x, y, width, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Tahoma"
    self.contents.font.size = 18
    self.back_opacity = 160
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.draw_text(0, 0, 288, 32, "Zadania", 1)
    if $game_variables[1] == 3
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Nieukończone", 1)
    end
  end
end


W temacie "Okno w Ruby" Asantos napisał:
Asantos napisał/a:
1. Kiedy okno się wyświetla strasznie "muli" się gra - jak otworzyć okno aby bohater stał nieruchomo.

Po czym Ayene odpisała:
Ayene napisał/a:
Co do zatrzymania bohatera. Należałoby skorzystać już nie z okna, tylko z klasy Scene.


Dokładnie!
Robimy klasę "Scene"!

Teraz można przeczytać poradę Thieffera tu: Thieffer’s Blog
Ale robimy dalej!

Krok 2 - Scene + Animacja wjazdowa
Spoiler:


Tworzymy nad poprzednią klasą(Window_Zadania) nową klasę:
Np:
Kod:
class Scene_Zadania

I pod tym:
Kod:
  def main

Następnie piszemy:
Kod:
 @zadania = Window_Zadania.new


Teraz gdy mamy już "odnośnik" do naszego okna... piszemy pod tym:

Kod:
 @zadania.x = 320 # Współrzędna X
    @zadania.y = 0 # Współrzędna Y
    @spriteset = Spriteset_Map.new
    @appearing = true # Animacja wjazdowa ON
    @disappearing = false # Animacja wjazdowa OFF
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end


@spriteset = Spriteset_Map.new - Jak tego nie dasz to mapa zrobi się czarna na czas wyświetlania okienka.

Następnie trzeba napisać tak:

Kod:
    Graphics.freeze
    @zadania.dispose
    @spriteset.dispose
    end
  def appear
    @zadania.x += 40 if @zadania.x < 320
    if @zadania.x == 320
      @appearing = false
    end
  end
  def disappear
    @zadania.x -= 20 if @zadania.x > -320
    if @zadania.x == -320
      $scene = Scene_Map.new
    end
  end
  def update
    if @appearing
      appear
    end
    if @disappearing
      disappear
    end
    @zadania.update
    @spriteset.update
    if Input.trigger?(Input::A)
      $game_system.se_play($data_system.cancel_se)
      @disappearing = true
   end
  end
end


Po kolej powiem co do czego służy...

Kod:
  def appear

Definicja wjazdowa okna.
Kod:
  def disappear

Definicja wyjazdowa okna.
Kod:
    if Input.trigger?(Input::A)
      $game_system.se_play($data_system.cancel_se)
      @disappearing = true
   end

Kiedy przycisk "A" jest wciśnięty, wtedy odgrywany jest dźwięk(anulowania) oraz animacja wyjazdowa(@disappearing = true) jest włączona. Inaczej mówiąc, okno się chowa.

Kod:
    @zadania.x += 40 if @zadania.x < 320
"<320" to znaczy, że okno porusza się aż nie osiągnie danej współrzędnej, natomiast "40" to "prędkość" okienka.


Na razie nasz kod prezentuje się następująco:
Spoiler:

Kod:
#-----------------------------------------------------------------------------
# class Scene_Zadania
#-----------------------------------------------------------------------------
class Scene_Zadania
  def main
@zadania.x = 320
    @zadania.y = 0
    @spriteset = Spriteset_Map.new
    @appearing = true
    @disappearing = false
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @zadania.dispose
    @spriteset.dispose
    end
  def appear
    @zadania.x += 40 if @zadania.x < 320
    if @zadania.x == 320
      @appearing = false
    end
  end
  def disappear
    @zadania.x -= 20 if @zadania.x > -320
    if @zadania.x == -320
      $scene = Scene_Map.new
    end
  end
  def update
    if @appearing
      appear
    end
    if @disappearing
      disappear
    end
    @zadania.update
    @spriteset.update
    if Input.trigger?(Input::A)
      $game_system.se_play($data_system.cancel_se)
      @disappearing = true
   end
  end
end
#-----------------------------------------------------------------------------
# class Window_Zadania
#-----------------------------------------------------------------------------
class Window_Zadania < Window_Base
  def initialize(x = 160, y = 120, width = 320, height = 240)
    super(x, y, width, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Tahoma"
    self.contents.font.size = 18
    self.back_opacity = 160
    refresh
  end
  def refresh
     self.contents.draw_text(0, 0, 288, 32, "Zadania", 1)
   if $game_variables[1] == 1
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Nieukończone", 1)
   end
 end
end


Krok 3 - Scene_Map
Spoiler:


Dobrze jeszcze tylko dwa kroki...!

Chcemy, aby nasze okno uruchamiało się automatycznie...
Kopiujemy z klasy Scene_Map:
Kod:
#-----------------------------------------------------------------------------
# class Scene_Map
#-----------------------------------------------------------------------------
class Scene_Map
  def main
    @spriteset = Spriteset_Map.new
    @message_window = Window_Message.new
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @spriteset.dispose
    @message_window.dispose
    if $scene.is_a?(Scene_Title)
      Graphics.transition
      Graphics.freeze
    end
  end
end


I dajemy do naszego skryptu...
Ale trzeba jeszcze dać uruchomianie przyciskiem...
Wklejić po:
Kod:
    loop do

To:
Kod:
     if Input.trigger?(Input::A)
       $scene = Scene_Zadania.new
     end



Mamy teraz taki kod:

Spoiler:

Kod:
#-----------------------------------------------------------------------------
# class Scene_Zadania
#-----------------------------------------------------------------------------
class Scene_Zadania
  def main
@zadania.x = 320
    @zadania.y = 0
    @spriteset = Spriteset_Map.new
    @appearing = true
    @disappearing = false
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @zadania.dispose
    @spriteset.dispose
    end
  def appear
    @zadania.x += 40 if @zadania.x < 320
    if @zadania.x == 320
      @appearing = false
    end
  end
  def disappear
    @zadania.x -= 20 if @zadania.x > -320
    if @zadania.x == -320
      $scene = Scene_Map.new
    end
  end
  def update
    if @appearing
      appear
    end
    if @disappearing
      disappear
    end
    @zadania.update
    @spriteset.update
    if Input.trigger?(Input::A)
      $game_system.se_play($data_system.cancel_se)
      @disappearing = true
   end
  end
end
#-----------------------------------------------------------------------------
# class Window_Zadania
#-----------------------------------------------------------------------------
class Window_Zadania < Window_Base
  def initialize(x = 160, y = 120, width = 320, height = 240)
    super(x, y, width, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Tahoma"
    self.contents.font.size = 18
    self.back_opacity = 160
    refresh
  end
  def refresh
     self.contents.draw_text(0, 0, 288, 32, "Zadania", 1)
   if $game_variables[1] == 1
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Nieukończone", 1)
   end
 end
end
#-----------------------------------------------------------------------------
# class Scene_Map
#-----------------------------------------------------------------------------
class Scene_Map
  def main
    @spriteset = Spriteset_Map.new
    @message_window = Window_Message.new
    Graphics.transition
    loop do
     if Input.trigger?(Input::A)
       $scene = Scene_Zadania.new
     end
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @spriteset.dispose
    @message_window.dispose
    if $scene.is_a?(Scene_Title)
      Graphics.transition
      Graphics.freeze
    end
  end
end



Właściwie to na tym etapie można zakończyć tutoriala, ale ten ostatni krok jest łatwy i przyjemny.(Jak dla mnie.)
Aby zakończyć zadanie wywołaj w zdarzeniu zmienną np. 1.
Krok 4 - module MOG
Spoiler:


Najpierw... co to jest?
module MOG, to system ułatwiający konfiguracje skryptu na:

Na początku skryptu umieść:
Kod:
module MOG

I po nim:
Kod:
end


W środku(pomiędzy "module MOG" a "end") napisz np:
Kod:
MPLOL = Input::A


Teraz znajdź w kodzie linijkę:(Twój Scene_Map)
Kod:
     if Input.trigger?(Input::A)
       $scene = Scene_Zadania.new
     end


I zmień:
Kod:
Input::A

Na:
Kod:
MOG::MPLOL


Teraz za pomocą "odnośnika" możesz łatwo konfigurować skrypt.


A tu daje cały mój skrypt: (MOŻESZ KOŻYSTAĆ ZE SKRYPTU POD WARUNKIEM, ŻE ZOSTAWISZ INFORMACJE O AUTORZE SKRYPTU - CZYLI JA.)
Spoiler:

Kod:
#==============================================================================
#  Scene_Zadania
#------------------------------------------------------------------------------
#  Dziennik zadań by Melvin (v1.5)
#==============================================================================
#                           Konfiguracja
module MOG
# Blokada okna.
  MPPA = false # false - okno włączone
               # true - okno wyłączone
               
# Przełącznik odpowiadający za włączanie/wyłączanie okna
  MPPAP = 1

# Klawisz odpowiadający za pokazywanie okna
  MPINP1 = Input::A

# Klawisz odpowiadający za chowanie okna
  MPINP2 = Input::A
               
# Nazwa czcionki w oknie
  MPFONT1 = "Times New Roman"

# Rozmiar czcionki w oknie
  MPFONT2 = 22

# Windowskin okna
  MPWIN = "001-blue01"
 
# Przezroczystość okna
  MPOPC = 255

# Szybkość wjazdowa okna
  MPXYW = 40

# Szybkość wyjazdowa okna
  MPXYE = 20

# Pozycja okna
# 0 - Górny prawy róg (Wjazd z lewej strony)
# 1 - Dolny prawy róg (Wjazd z lewej strony)
# 2 - Górny lewy róg (Wjazd z lewej strony)
# 3 - Dolny lewy róg (Wjazd z lewej strony)
# 4 - Na środku
# 5 - Pełny ekran
# 6 - Pełny ekran i brak animacji wjazdowej
# 7 - Dowolnie
  MPNMPS = 0
# Zmiana współrzędnych jeśli wybrano 7
  if MOG::MPNMPS == 7
    MPXYP1 = -320  # Pozycja X początkowa okna
    MPXYP2 = 0     # Pozycja Y początkowa okna
    MPXYP3 = 320   # Pozycja X wjeżdżającego okna (Wjazd)
    MPXYP4 = 320   # Pozycja X wjeżdżającego okna (Zatrzymanie)
    MPXYP5 = -320  # Pozycja X wyjeżdżającego okna (Wyjazd)
    MPXYP6 = -320  # Pozycja X wyjeżdżającego okna (Zatrzymanie)
    MPIR1 = 160    # Pozycja okna X
    MPIR2 = 120    # Pozycja okna Y
    MPIR3 = 320    # Szerokość okna
    MPIR4 = 240    # Wysokość okna
  end
#                              Koniec
end

  if MOG::MPNMPS == 0
    MPXYP1 = -320  # Pozycja X początkowa okna
    MPXYP2 = 0     # Pozycja Y początkowa okna
    MPXYP3 = 320   # Pozycja X wjeżdżającego okna (Wjazd)
    MPXYP4 = 320   # Pozycja X wjeżdżającego okna (Zatrzymanie)
    MPXYP5 = -320  # Pozycja X wyjeżdżającego okna (Wyjazd)
    MPXYP6 = -320  # Pozycja X wyjeżdżającego okna (Zatrzymanie)
    MPIR1 = 160    # Pozycja okna X
    MPIR2 = 120    # Pozycja okna Y
    MPIR3 = 320    # Szerokość okna
    MPIR4 = 240    # Wysokość okna
  end
  if MOG::MPNMPS == 1
    MPXYP1 = -320  # Pozycja X początkowa okna
    MPXYP2 = 240   # Pozycja Y początkowa okna
    MPXYP3 = 320   # Pozycja X wjeżdżającego okna (Wjazd)
    MPXYP4 = 320   # Pozycja X wjeżdżającego okna (Zatrzymanie)
    MPXYP5 = -320  # Pozycja X wyjeżdżającego okna (Wyjazd)
    MPXYP6 = -320  # Pozycja X wyjeżdżającego okna (Zatrzymanie)
    MPIR1 = 160    # Pozycja okna X
    MPIR2 = 120    # Pozycja okna Y
    MPIR3 = 320    # Szerokość okna
    MPIR4 = 240    # Wysokość okna
  end
  if MOG::MPNMPS == 2
    MPXYP1 = -320  # Pozycja X początkowa okna
    MPXYP2 = 0     # Pozycja Y początkowa okna
    MPXYP3 = 0     # Pozycja X wjeżdżającego okna (Wjazd)
    MPXYP4 = 0     # Pozycja X wjeżdżającego okna (Zatrzymanie)
    MPXYP5 = -320  # Pozycja X wyjeżdżającego okna (Wyjazd)
    MPXYP6 = -320  # Pozycja X wyjeżdżającego okna (Zatrzymanie)
    MPIR1 = 160    # Pozycja okna X
    MPIR2 = 120    # Pozycja okna Y
    MPIR3 = 320    # Szerokość okna
    MPIR4 = 240    # Wysokość okna
  end
  if MOG::MPNMPS == 3
    MPXYP1 = -320  # Pozycja X początkowa okna
    MPXYP2 = 240   # Pozycja Y początkowa okna
    MPXYP3 = 0     # Pozycja X wjeżdżającego okna (Wjazd)
    MPXYP4 = 0     # Pozycja X wjeżdżającego okna (Zatrzymanie)
    MPXYP5 = -320  # Pozycja X wyjeżdżającego okna (Wyjazd)
    MPXYP6 = -320  # Pozycja X wyjeżdżającego okna (Zatrzymanie)
    MPIR1 = 160    # Pozycja okna X
    MPIR2 = 120    # Pozycja okna Y
    MPIR3 = 320    # Szerokość okna
    MPIR4 = 240    # Wysokość okna
  end
  if MOG::MPNMPS == 4
    MPXYP1 = -320  # Pozycja X początkowa okna
    MPXYP2 = 120   # Pozycja Y początkowa okna
    MPXYP3 = 140   # Pozycja X wjeżdżającego okna (Wjazd)
    MPXYP4 = 140   # Pozycja X wjeżdżającego okna (Zatrzymanie)
    MPXYP5 = -320  # Pozycja X wyjeżdżającego okna (Wyjazd)
    MPXYP6 = -320  # Pozycja X wyjeżdżającego okna (Zatrzymanie)
    MPIR1 = 160    # Pozycja okna X
    MPIR2 = 120    # Pozycja okna Y
    MPIR3 = 320    # Szerokość okna
    MPIR4 = 240    # Wysokość okna
  end
  if MOG::MPNMPS == 5
    MPXYP1 = -640  # Pozycja X początkowa okna
    MPXYP2 = 0     # Pozycja Y początkowa okna
    MPXYP3 = 0     # Pozycja X wjeżdżającego okna (Wjazd)
    MPXYP4 = 0     # Pozycja X wjeżdżającego okna (Zatrzymanie)
    MPXYP5 = -640  # Pozycja X wyjeżdżającego okna (Wyjazd)
    MPXYP6 = -640  # Pozycja X wyjeżdżającego okna (Zatrzymanie)
    MPIR1 = 0      # Pozycja okna X
    MPIR2 = 0      # Pozycja okna Y
    MPIR3 = 640    # Szerokość okna
    MPIR4 = 480    # Wysokość okna
  end
  if MOG::MPNMPS == 6
    MPXYP1 = 0     # Pozycja X początkowa okna
    MPXYP2 = 0     # Pozycja Y początkowa okna
    MPXYP3 = 0     # Pozycja X wjeżdżającego okna (Wjazd)
    MPXYP4 = 0     # Pozycja X wjeżdżającego okna (Zatrzymanie)
    MPXYP5 = 0     # Pozycja X wyjeżdżającego okna (Wyjazd)
    MPXYP6 = 0     # Pozycja X wyjeżdżającego okna (Zatrzymanie)
    MPIR1 = 0      # Pozycja okna X
    MPIR2 = 0      # Pozycja okna Y
    MPIR3 = 640    # Szerokość okna
    MPIR4 = 480    # Wysokość okna
  end
#-----------------------------------------------------------------------------
# class Scene_Map
#-----------------------------------------------------------------------------
class Scene_Map
  def main
    @spriteset = Spriteset_Map.new
    @message_window = Window_Message.new
    Graphics.transition
    loop do
    if $game_switches[MOG::MPPAP] == MOG::MPPA
     if Input.trigger?(MOG::MPINP1)
       $scene = Scene_Zadania.new
     end
    end
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @spriteset.dispose
    @message_window.dispose
    if $scene.is_a?(Scene_Title)
      Graphics.transition
      Graphics.freeze
    end
  end
end
#-----------------------------------------------------------------------------
# class Scene_Zadania
#-----------------------------------------------------------------------------
class Scene_Zadania
  def main
    @zadania = Window_Zadania.new
    $game_system.se_play($data_system.decision_se)
    @zadania.x = MPXYP1
    @zadania.y = MPXYP2
    @spriteset = Spriteset_Map.new
    @appearing = true
    @disappearing = false
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @zadania.dispose
    @spriteset.dispose
    end
  def appear
    @zadania.x += MOG::MPXYW if @zadania.x < MPXYP3
    if @zadania.x == MPXYP4
      @appearing = false
    end
  end
  def disappear
    @zadania.x -= MOG::MPXYE if @zadania.x > MPXYP5
    if @zadania.x == MPXYP6
      $scene = Scene_Map.new
    end
  end
  def update
    if @appearing
      appear
    end
    if @disappearing
      disappear
    end
    @zadania.update
    @spriteset.update
   if $game_switches[MOG::MPPAP] == MOG::MPPA
    if Input.trigger?(MOG::MPINP2)
      $game_system.se_play($data_system.cancel_se)
      @disappearing = true
    end
   end
  end
end
#-----------------------------------------------------------------------------
# class Window_Zadania
#-----------------------------------------------------------------------------
class Window_Zadania < Window_Base
  def initialize (x = MPIR1, y = MPIR2, width = MPIR3, height = MPIR4)
    super(x, y, width, height)
    self.windowskin = RPG::Cache.windowskin(MOG::MPWIN)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = MOG::MPFONT1
    self.contents.font.size = MOG::MPFONT2
    self.back_opacity = MOG::MPOPC
    refresh
  end
  def refresh
     self.contents.draw_text(0, 0, 288, 32, "Zadania", 1)
   if $game_variables[1] == 1
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 64, "1 Zadanie - Nieukończone", 1)
   end
   if $game_variables[2] == 1
     self.contents.draw_text(0, 0, 288, 96, "2 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 96, "2 Zadanie - Nieukończone", 1)
   end
   if $game_variables[3] == 1
     self.contents.draw_text(0, 0, 288, 128, "3 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 128, "3 Zadanie - Nieukończone", 1)
   end
   if $game_variables[4] == 1
     self.contents.draw_text(0, 0, 288, 160, "4 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 160, "4 Zadanie - Nieukończone", 1)
   end
   if $game_variables[5] == 1
     self.contents.draw_text(0, 0, 288, 192, "5 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 192, "5 Zadanie - Nieukończone", 1)
   end
   if $game_variables[6] == 1
     self.contents.draw_text(0, 0, 288, 224, "6 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 224, "6 Zadanie - Nieukończone", 1)
   end
   if $game_variables[7] == 1
     self.contents.draw_text(0, 0, 288, 256, "7 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 256, "7 Zadanie - Nieukończone", 1)
   end
   if $game_variables[8] == 1
     self.contents.draw_text(0, 0, 288, 288, "8 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 288, "8 Zadanie - Nieukończone", 1)
   end
   if $game_variables[9] == 1
     self.contents.draw_text(0, 0, 288, 320, "9 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 288, 320, "9 Zadanie - Nieukończone", 1)
   end
   if $game_variables[10] == 1
     self.contents.draw_text(0, 0, 280, 352, "10 Zadanie - Ukończone", 1)
   else
     self.contents.draw_text(0, 0, 280, 352, "10 Zadanie - Nieukończone", 1)
   end
 end
end



Mam nadzieję, że się komuś przyda.

Pozdrawiam

CreeperCrisis - Sob 12 Cze, 2010 12:19

Tutek bardzo ładny i przejrzysty. Wszystko w nim rozumiem i inni również mogliby takie coś zrozumieć. :-) (serio, tutek jest świetny XD) i jeszcze coś. Fajna zabawa z skryptami :-)
erienus - Sob 12 Cze, 2010 15:14

Ja akurat mniej rozumiem xD Ale tutorial ładny, ale mógłbyś dać różne możliwości konfiguracji itp.
kenogawa - Sob 12 Cze, 2010 22:08

Dobry jesteś bowinszować tak dalej kolejnych skryptów przyda się :mrgreen:
Agumon - Pon 14 Cze, 2010 14:22

Bardzo fajnie opisany tutorial. Wszystko leży tam gdzie powinno. 10/5
postrach1992 - Nie 20 Cze, 2010 11:55

Bardzo dobry tutek Melvin
Moj - Sob 07 Sie, 2010 12:19

Dasz demo ?
Amelanduil - Pon 09 Sie, 2010 17:11

Cytat:
Dasz demo ?

nie, bo ma bana.
POZA TYM:
TUTORIALE są po to, żeby samemu robić, przy okazji ucząc się na programie, więc nie ma tak łatwo... zapewne tylko skopiowałbyś skrypt, prawda? :kable:

Kumpel - Wto 18 Sty, 2011 20:23

Dobry tutek!
haskias - Nie 27 Lut, 2011 09:15

Bardzo dobry tutek! Nawet ja zrozumiałem :-)

Powered by phpBB modified by Przemo © 2003 phpBB Group