Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Dziennik zadań
Autor Wiadomość
Melvin 




Preferowany:
RPG Maker XP

Ranga RM:
1 gra

Pomógł: 35 razy
Dołączył: 23 Paź 2009
Posty: 1063
Wysłany: Nie 28 Mar, 2010 15:05
Dziennik zadań
Dziennik zadań v1.4

Opis
Jest to mój pierwszy skrypt tego typu.
Dziennik zadań pozwala na wpisaniu do 10 zadań.

Zalety:
- Szybki podgląd ukończonych zadań.
- Łatwy w konfiguracji.
- Ładna animacja wjazdowa.
- Nie powinien kolidować z innymi skryptami.

Wady:
- Tylko do 10 zadań. (Dla chętnych mogę przerobić skrypt)
- Brak opisu zadań.
- Brak podziału na "Ukończone" i na"Nieukończone".
- Gracz zna od początku wszystkie zadania.
- Do jego działania potrzebna jest duża ilość zmiennych.

Autor skryptu
Melvin (Ja)

Kompatybilność
Tylko XP

Skrypt
Spoiler:

Kod:
#==============================================================================
#  Scene_Zadania
#------------------------------------------------------------------------------
#  Dziennik zadań by Melvin (v1.4)
#==============================================================================
#                           Konfiguracja
module MOG
# Klawisz odpowiadający za pokazywanie okna
  MPINP1 = Input::A

# Klawisz odpowiadający za chowanie okna
  MPINP2 = Input::A

# Nazwa czcionki
  MPFONT1 = "Times New Roman"

# Rozmiar czcionki
  MPFONT2 = 22

# 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 = Dowolnie
  MPNMPS = 2
# Zmiana współrzędnych jeśli wybrano 7
  if MOG::MPNMPS == 10
    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#(x = 160, y = 120, width = 320, height = 240)
    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
#-----------------------------------------------------------------------------
# class Scene_Map
#-----------------------------------------------------------------------------
class Scene_Map < Scene_Map
  def main
    @spriteset = Spriteset_Map.new
    @message_window = Window_Message.new
    Graphics.transition
    loop do
     if Input.trigger?(MOG::MPINP1)
       $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
#-----------------------------------------------------------------------------
# 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 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 = MPIR1, y = MPIR2, width = MPIR3, height = MPIR4)
    super(x, y, width, height)
    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



Demo


Instrukcja
1 - Wkleić skrypt nad main w edytorze skryptów(F11).
2 - Zrobić typowe, równoległe zdarzenie startujące na określony przełącznik.
3 - W typowym zdarzeniu umieścić warunek: "Kiedy przycisk A zostanie naciśnięty".
4 - W warunku: "skrypt:$scene = Scene_Zadania.new".
5 - Aby zakończyć zadanie numer 5, trzeba wywołać zmienną w zdarzeniu numer 5 i ustawić ją na liczbę na 1.

Konfiguracja
Podstawowa zmiana ustawień skryptu.
Spoiler:

Cytat:

1 - Aby zmienić nazwę zadania wejdź w edytor skryptów i w "Dziennik zadań".
2 - Następnie zjedź do linijki np. 219(Zadanie 1) i zmień fioletową nazwę zadania ukończonego i nieukończonego.

3 - Aby zmienić zmienną przypisaną do danego zadania, wejdź w edytor skryptów i w "Dziennik zadań".
4 - Następnie zjedź do linijki np. 218(Zadanie 1) i zmień liczbę w nawiasie kwadratowym([1]) na zmienną jaką chcesz przyporządkować do zadania.

Pozostała konfiguracja znajduje się na początku skryptu.



Dodatkowe informacje
- Działa na polskiej jak i angielskiej wersji R'M XP
________________________
MelvinClass:
Spoiler:

 
 
Czeliosss 



Ranga RM:
1 gra

Pomógł: 49 razy
Dołączył: 02 Lis 2009
Posty: 661
Skąd: Wa-wa
Wysłany: Nie 28 Mar, 2010 16:00
Fajnie, że ktoś uczy się Ruby. Mógłbyś podać mi sposób jak się go nauczyłeś.
Cytat:
- Tylko do 10 zadań. (Dla chętnych mogę przerobić skrypt)
- Brak opisu zadań.
- Brak podziału na "Ukończone" i na"Nieukończone".
- Gracz zna od początku wszystkie zadania.
- Do jego działania potrzebna jest duża ilość zmiennych.
Wiesz, że to są największe wady Dziennika Misji, ale trochę popracujesz lub poprosisz Ayene i będzie spoko.
________________________
...Amelanduil & FireBlade words will be remembered...
...Amelanduil & FireBlade acts will be remembered...
...Amelanduil & FireBlade never gonna die...

Nie pisać, bo nie odpiszę.
 
 
Melvin 




Preferowany:
RPG Maker XP

Ranga RM:
1 gra

Pomógł: 35 razy
Dołączył: 23 Paź 2009
Posty: 1063
Wysłany: Nie 28 Mar, 2010 16:18
czeliosss napisał/a:
Mógłbyś podać mi sposób jak się go nauczyłeś.

To bardzo proste... Ściągałem wiele skryptów i patrzyłem jak są zbudowane.
Jak wyskakiwał mi błąd w np. 15 linijce... kasowałem ją :mrgreen:
A potem pisałem to co zaobserwowałem w innych skryptach...

No i oczywiście wiele poradników.

Cytat:
- Tylko do 10 zadań. (Dla chętnych mogę przerobić skrypt)

Naprawiłem to. Teraz można ustawić nawet do 60 zadań.
Cytat:
- Brak opisu zadań.

Heh! To też właśnie naprawiam :mrgreen:
Cytat:
- Gracz zna od początku wszystkie zadania.

I analogicznie nad tym właśnie pracuje..
________________________
MelvinClass:
Spoiler:

 
 
R.I.P. 




Preferowany:
RPG Maker XP

Pomógł: 9 razy
Dołączył: 28 Mar 2010
Posty: 173
Skąd: Warszawa
Wysłany: Nie 28 Mar, 2010 20:47
Jak zmienić nazwę zadania?
 
 
Melvin 




Preferowany:
RPG Maker XP

Ranga RM:
1 gra

Pomógł: 35 razy
Dołączył: 23 Paź 2009
Posty: 1063
Wysłany: Pon 29 Mar, 2010 22:10
Kod:
1 - Aby zmienić nazwę zadania wejdź w edytor skryptów i w "Dziennik zadań".
2 - Następnie zjedź do linijki np. 219(Zadanie 1) i zmień fioletową nazwę zadania ukończonego i nieukończonego.

3 - Aby zmienić zmienną przypisaną do danego zadania, wejdź w edytor skryptów i w "Dziennik zadań".
4 - Następnie zjedź do linijki np. 218(Zadanie 1) i zmień liczbę w nawiasie kwadratowym([1]) na zmienną jaką chcesz przyporządkować do zadania.

Pozostała konfiguracja znajduje się na początku skryptu.

Było w konfiguracji.

WPROWADZIŁEM KONFIGURACJE!

Nowy skrypt!
Napisałem zupełnie od nowa!
Zaraz założę temat! :papa:
________________________
MelvinClass:
Spoiler:

 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene