Advertisement
Narzew

RMXP Thieffer Questlog Modded by Narzew v 2.1

Nov 1st, 2012
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 16.21 KB | None | 0 0
  1. #===============================================================================
  2. # Thieffer's QuestLog
  3. # version 1.2
  4. # by Thieffer 09.05.2009
  5. # version 1.1 by Narzew 07.01.2011
  6. # version 1.2 by Narzew 19.01.2011
  7. #===============================================================================
  8. #Historia skryptu
  9. #09.05.2009 - Thieffer - Pierwsze wydanie
  10. #07.01.2011 - Narzew - Wersja 1.1
  11. #Dodane funkcje i metody
  12. #Nieudane zadania
  13. #Spalenie zadania aktywnego (jeśli nie ukończone)
  14. #Spalenie zadania (brutalne)
  15. #Dodanie ukończonego zadania
  16. #Dodanie nieudanego zadania
  17. #Warunek czy zadanie jest aktywne?
  18. #Warunek czy zadanie jest nieudane?
  19. #19.01.2011 - Narzew - Wersja 1.2 - Usunięto bugi (zapis w historii 26.04.2011)
  20. #===============================================================================
  21. #  INSTRUKCJE
  22. #===============================================================================
  23. # Aby włączyć dziennik zadań należy wywołać skrypt:
  24. #   $scene = Scene_QuestLog.new
  25. # Zadania powinny być wcześniej zdefiniowane wg wzoru:
  26. #   $quest= ["nazwa", poziom, "grafika", "treść"]
  27. # gdzie zamiast:
  28. #   $quest --> możesz wpisać co zechcesz (nie będzie wyświetlane)
  29. #   "nazwa" --> nazwa zadania (będzie wyświetlana)
  30. #   poziom --> liczba od 1 do 5 (poziom trudności)
  31. #   "grafika" --> nazwa pliku zawierającego obrazek o wymiarach 400px na 100px (obrazek przedstawiający scenkę z zadania)
  32. #   "treść" --> treść zadania
  33. # Konfiguracja:
  34. #   $PICTURE_DIFFICULTY = true/false
  35. #     (jeśli true, to poziom trudności będzie przedstawiony
  36. #     za pomocą obrazków; jeśli false - za pomocą tekstu)
  37. #     Obrazki muszą mieć nazwę: quest_difficulty1, quest_difficulty2 itd. (max 5) oraz rozmiary 125px na 48px.
  38. #     Tekst możesz edytować w zmiennych $QD1, $QD2 itd.
  39. #   $PICTURE_DESCRIPTION = true/false
  40. #     (jeśli true, to w opisie zadania, pojawi się obrazek o wymiarach 400px na 100px;
  41. #     jeśli false - brak obrazka)
  42. #   $MAP_AS_BACKGROUND = true/false
  43. #     (jeśli true, to w tle okienek widać mapę, na której jest bohater oraz podczas
  44. #     wciśnięcia ESC pojawia nam się mapa; jeśli false - czarne tło oraz podczas
  45. #     wciśnięcia ESC pojawia nam się Menu (opcjonalnie Scene_Menu.new))
  46. # Obsługa:
  47. #   Dodawanie zadania:
  48. #     $game_party.add_quest($quest)
  49. #     $quest --> to nazwa "robocza" zadania (ta, która nie jest wyświetlana)
  50. #   Ukończenie zadania:
  51. #     $game_party.complete_quest($quest)
  52. #   Usunięcie zadania:
  53. #     $game_party.remove_quest($quest)
  54. #   Warunek - czy zadanie jest wykonane?
  55. #     $game_party.is_quest_completed?($quest)
  56. #   Warunek - czy zadanie jest aktywne?
  57. #     $game_party.is_quest_active?($quest)
  58. #   Warunek - czy zadanie jest nieudane?
  59. #     $game_party.is_quest_failed?($quest)
  60. $QD1 = "Bardzo Łatwy"
  61. $QD2 = "Łatwy"
  62. $QD3 = "Średni"
  63. $QD4 = "Trudny"
  64. $QD5 = "Bardzo Trudny"
  65. $PICTURE_DIFFICULTY = true
  66. $PICTURE_DESCRIPTION = false
  67. $MAP_AS_BACKGROUND = true
  68. WINDOWSKIN_GRAPHIC = "Windowskin 3"
  69. class Game_Party
  70.   alias :old_initialize1 :initialize
  71.   def initialize
  72.     old_initialize1
  73.     @quests = []
  74.     @completed_quests = []
  75.     @failed_quests = []
  76.   end
  77.   def add_quest(quest)
  78.     @quests.push(quest) if not @quests.include?(quest)
  79.   end
  80.   def complete_quest(quest)
  81.     if @quests.include?(quest) and not @completed_quests.include?(quest)
  82.       @completed_quests.push(quest)
  83.       @quests.delete(quest)
  84.     end
  85.   end
  86.     def fail_quest(quest)
  87.     if @quests.include?(quest) and not @failed_quests.include?(quest)
  88.       @failed_quests.push(quest)
  89.       @quests.delete(quest)
  90.     end
  91.   end
  92.   def fail_quest_force(quest)
  93.     if not @failed_quests.include?(quest)
  94.     @failed_quests.push(quest)
  95.     @quests.delete(quest)
  96.     @completed_quests.delete(quest)
  97.     end
  98.   end
  99.     def fail_quest2(quest)
  100.     if @quests.include?(quest) and not @failed_quests.include?(quest)
  101.       @failed_quests.push(quest)
  102.       @quests.delete(quest)
  103.     end
  104.     if @completed_quests.include?(quest) and not @failed_quests.include?(quest)
  105.       @failed_quests.push(quest)
  106.       @quests.delete(quest)
  107.     end
  108.   end
  109.   def remove_quest(quest)
  110.     @quests.delete(quest) if @quests.include?(quest)
  111.   end
  112.   def is_quest_completed?(quest)
  113.     if @completed_quests.include?(quest)
  114.       return true
  115.     end
  116.     return false
  117.   end
  118.   def is_quest_active?(quest)
  119.     if @quests.include?(quest)
  120.       return true
  121.     end
  122.     return false
  123.   end
  124.     def is_quest_failed?(quest)
  125.     if @failed_quests.include?(quest)
  126.       return true
  127.     end
  128.     return false
  129.   end
  130.   def quest_name(quest)
  131.     return quest[0]
  132.   end
  133.   def quest_difficulty(quest)
  134.     case quest[1]
  135.     when 1
  136.       $QD1
  137.     when 2
  138.       $QD2
  139.     when 3
  140.       $QD3
  141.     when 4
  142.       $QD4
  143.     when 5
  144.       $QD5
  145.     end
  146.   end
  147.   def quest_picture_difficulty(quest)
  148.     case quest[1]
  149.     when 1
  150.       "quest_difficulty1"
  151.     when 2
  152.       "quest_difficulty2"
  153.     when 3
  154.       "quest_difficulty3"
  155.     when 4
  156.       "quest_difficulty4"
  157.     when 5
  158.       "quest_difficulty5"
  159.     end
  160.   end
  161.   def quest_picture(quest)
  162.     return quest[2]
  163.   end
  164.   def quest_description(quest)
  165.     return quest[3]
  166.   end
  167.   def quests
  168.     return @quests
  169.   end
  170.   def completed_quests
  171.     return @completed_quests
  172.   end
  173.   def failed_quests
  174.     return @failed_quests
  175.   end
  176. end
  177. class Window_QuestName < Window_Base
  178.   def initialize(quest)
  179.     super(20, 20, 450, 150)
  180.     self.contents = Bitmap.new(width - 32, height - 32)
  181.     self.z = 101
  182.     self.back_opacity = 255
  183.     @quest = quest
  184.     refresh
  185.   end
  186.   def refresh
  187.     self.contents.clear
  188.     self.contents.font.color = Color.new(244,197,43,255)
  189.     self.contents.font.size = 23
  190.     self.contents.draw_text(0,0,418,68,$game_party.quest_name(@quest),1)
  191.   end
  192. end
  193. class Window_QuestDifficulty < Window_Base
  194.   def initialize(quest)
  195.     super(450, 30, 170, 80)
  196.     self.contents = Bitmap.new(width - 32, height - 32)
  197.     self.z = 100
  198.     self.back_opacity = 230
  199.     @quest = quest
  200.     refresh
  201.   end
  202.   def refresh
  203.     self.contents.clear
  204.     self.contents.font.color = Color.new(60,170,25,255)
  205.     if $PICTURE_DIFFICULTY
  206.       self.contents.blt(13, 0, RPG::Cache.picture($game_party.quest_picture_difficulty(@quest)), Rect.new(0, 0, 125, 48))
  207.     else
  208.       self.contents.draw_text(20,0,118,48,$game_party.quest_difficulty(@quest),1)
  209.     end
  210.   end
  211. end
  212. class Window_QuestDescription < Window_Base
  213.   def initialize(quest)
  214.     super(40, 110, 580, 350)
  215.     self.contents = Bitmap.new(width - 32, height - 32)
  216.     self.z = 99
  217.     self.back_opacity = 230
  218.     @quest = quest
  219.     refresh
  220.   end
  221.   def refresh
  222.     self.contents.clear
  223.     self.contents.font.size = 18
  224.     paragraph = str_paragraph($game_party.quest_description(@quest),518)
  225.     if $PICTURE_DESCRIPTION
  226.       self.contents.blt(74,0, RPG::Cache.picture($game_party.quest_picture(@quest)), Rect.new(0,0,400,100))
  227.       draw_paragraph(30,16,518,202, paragraph)
  228.     else
  229.       draw_paragraph(30,-116,518,318, paragraph)
  230.     end
  231.   end
  232. end
  233. class Scene_QuestLog
  234.   def initialize
  235.     @quests = $game_party.quests
  236.     @completed_quests = $game_party.completed_quests
  237.     @failed_quests = $game_party.failed_quests
  238.     @quests_names = []
  239.     @completed_quests_names = []
  240.     @failed_quests_names = []
  241.     if @quests.size > 0
  242.       for i in 0..(@quests.size-1)
  243.         @quests_names.push @quests[i][0]
  244.       end
  245.     elsif
  246.       @quests_names.push "Brak zadań"
  247.     end
  248.     if @completed_quests.size > 0
  249.       for k in 0..(@completed_quests.size-1)
  250.         @completed_quests_names.push @completed_quests[k][0]
  251.       end
  252.     else
  253.       @completed_quests_names.push "Brak ukończonych zadań"
  254.     end
  255.      if @failed_quests.size > 0
  256.       for k in 0..(@failed_quests.size-1)
  257.         @failed_quests_names.push @failed_quests[k][0]
  258.       end
  259.     else
  260.       @failed_quests_names.push "Brak nieudanych zadań"
  261.     end
  262.   end
  263.   def main
  264.     @command_window = Window_Command.new(210, ["Aktualne zadania", "Ukończone zadania", "Nieudane zadania"])
  265.     @quests_command_window = Window_Command.new(220, @quests_names)
  266.     @completed_quests_command_window = Window_Command.new(220, @completed_quests_names)
  267.     @failed_quests_command_window = Window_Command.new(220, @failed_quests_names)
  268.     @quests_command_window.active = false
  269.     @quests_command_window.visible = false
  270.     @completed_quests_command_window.active = false
  271.     @completed_quests_command_window.visible = false
  272.     @failed_quests_command_window.active = false
  273.     @failed_quests_command_window.visible = false
  274.     @command_window.x = 640 - @command_window.width
  275.     @command_window.y = 50
  276.     @command_window.back_opacity = 190
  277.     @quests_command_window.x = 640 - @quests_command_window.width
  278.     @quests_command_window.y = 50
  279.     @quests_command_window.height = 200
  280.     @quests_command_window.back_opacity = 190
  281.     @completed_quests_command_window.x = 640 - @completed_quests_command_window.width
  282.     @completed_quests_command_window.y = 50
  283.     @completed_quests_command_window.height = 200
  284.     @completed_quests_command_window.back_opacity = 190
  285.     @failed_quests_command_window.x = 640 - @completed_quests_command_window.width
  286.     @failed_quests_command_window.y = 50
  287.     @failed_quests_command_window.height = 200
  288.     @failed_quests_command_window.back_opacity = 190
  289.     if $MAP_AS_BACKGROUND
  290.       @spriteset = Spriteset_Map.new
  291.     end
  292.     Graphics.transition
  293.     loop do
  294.       Graphics.update
  295.       Input.update
  296.       update
  297.       if $scene != self
  298.         break
  299.       end
  300.     end
  301.     Graphics.freeze
  302.     @command_window.dispose
  303.     @quests_command_window.dispose
  304.     @completed_quests_command_window.dispose
  305.     @failed_quests_command_window.dispose
  306.     if $MAP_AS_BACKGROUND
  307.       @spriteset.dispose
  308.     end
  309.   end
  310.   def update
  311.     @command_window.update
  312.     @quests_command_window.update
  313.     @completed_quests_command_window.update
  314.     @failed_quests_command_window.update
  315.     if $MAP_AS_BACKGROUND
  316.       @spriteset.update
  317.     end
  318.     if @command_window.active
  319.       update_command
  320.       return
  321.     end
  322.     if @quests_command_window.active
  323.       update_quests
  324.       return
  325.     end
  326.     if @completed_quests_command_window.active
  327.       update_completed_quests
  328.       return
  329.     end
  330.     if @failed_quests_command_window.active
  331.       update_failed_quests
  332.       return
  333.     end
  334.     if @quests_mode
  335.       if Input.trigger?(Input::B)
  336.         $game_system.se_play($data_system.cancel_se)
  337.         @quest_name_window.dispose
  338.         @quest_difficulty_window.dispose
  339.         @quest_description_window.dispose
  340.         @quests_command_window.active = true
  341.         @quests_command_window.visible = true
  342.         @quests_command_window.index = @index
  343.       end
  344.       return
  345.     end
  346.     if @completed_quests_mode
  347.       if Input.trigger?(Input::B)
  348.         $game_system.se_play($data_system.cancel_se)
  349.         @quest_name_window.dispose
  350.         @quest_difficulty_window.dispose
  351.         @quest_description_window.dispose
  352.         @completed_quests_command_window.active = true
  353.         @completed_quests_command_window.visible = true
  354.         @completed_quests_command_window.index = @index
  355.       end
  356.       return
  357.     end
  358.     if @failed_quests_mode
  359.       if Input.trigger?(Input::B)
  360.         $game_system.se_play($data_system.cancel_se)
  361.         @quest_name_window.dispose
  362.         @quest_difficulty_window.dispose
  363.         @quest_description_window.dispose
  364.         @failed_quests_command_window.active = true
  365.         @failed_quests_command_window.visible = true
  366.         @failed_quests_command_window.index = @index
  367.       end
  368.       return
  369.     end
  370.   end
  371.   def update_command
  372.     if Input.trigger?(Input::B)
  373.       if $MAP_AS_BACKGROUND
  374.         $game_system.se_play($data_system.cancel_se)
  375.         $scene = Scene_Menu.new(4)
  376.         return
  377.       else
  378.         $game_system.se_play($data_system.cancel_se)
  379.         $scene = Scene_Menu.new(4)
  380.       end
  381.     end
  382.     if Input.trigger?(Input::C)
  383.       case @command_window.index
  384.       when 0
  385.         $game_system.se_play($data_system.decision_se)
  386.         @command_window.active = false
  387.         @command_window.visible = false
  388.         @quests_command_window.active = true
  389.         @quests_command_window.visible = true
  390.       when 1
  391.         $game_system.se_play($data_system.decision_se)
  392.         @command_window.active = false
  393.         @command_window.visible = false
  394.         @completed_quests_command_window.active = true
  395.         @completed_quests_command_window.visible = true
  396.       when 2
  397.         $game_system.se_play($data_system.decision_se)
  398.         @command_window.active = false
  399.         @command_window.visible = false
  400.         @failed_quests_command_window.active = true
  401.         @failed_quests_command_window.visible = true
  402.       end
  403.     end
  404.   end
  405.   def update_quests
  406.     if Input.trigger?(Input::B)
  407.       $game_system.se_play($data_system.cancel_se)
  408.         @command_window.active = true
  409.         @command_window.visible = true
  410.         @quests_command_window.active = false
  411.         @quests_command_window.visible = false
  412.     end
  413.     if Input.trigger?(Input::C)
  414.       if @quests.size > 0
  415.         $game_system.se_play($data_system.decision_se)
  416.         @index = @quests_command_window.index
  417.         quest = @quests[@index]
  418.         @quest_name_window = Window_QuestName.new(quest)
  419.         @quest_difficulty_window = Window_QuestDifficulty.new(quest)
  420.         @quest_description_window = Window_QuestDescription.new(quest)
  421.         @quests_command_window.active = false
  422.         @quests_command_window.visible = false
  423.         @quests_mode = true
  424.       else
  425.         $game_system.se_play($data_system.buzzer_se)
  426.       end
  427.     end
  428.   end
  429.   def update_completed_quests
  430.     if Input.trigger?(Input::B)
  431.       $game_system.se_play($data_system.cancel_se)
  432.         @command_window.active = true
  433.         @command_window.visible = true
  434.         @completed_quests_command_window.active = false
  435.         @completed_quests_command_window.visible = false
  436.     end
  437.     if Input.trigger?(Input::C)
  438.       if @completed_quests.size > 0
  439.         $game_system.se_play($data_system.decision_se)
  440.         @index = @completed_quests_command_window.index
  441.         quest = @completed_quests[@index]
  442.         @quest_name_window = Window_QuestName.new(quest)
  443.         @quest_difficulty_window = Window_QuestDifficulty.new(quest)
  444.         @quest_description_window = Window_QuestDescription.new(quest)
  445.         @completed_quests_command_window.active = false
  446.         @completed_quests_command_window.visible = false
  447.         @completed_quests_mode = true
  448.       else
  449.         $game_system.se_play($data_system.buzzer_se)
  450.       end
  451.     end
  452.   end
  453.     def update_failed_quests
  454.     if Input.trigger?(Input::B)
  455.       $game_system.se_play($data_system.cancel_se)
  456.         @command_window.active = true
  457.         @command_window.visible = true
  458.         @failed_quests_command_window.active = false
  459.         @failed_quests_command_window.visible = false
  460.     end
  461.     if Input.trigger?(Input::C)
  462.       if @failed_quests.size > 0
  463.         $game_system.se_play($data_system.decision_se)
  464.         @index = @failed_quests_command_window.index
  465.         quest = @failed_quests[@index]
  466.         @quest_name_window = Window_QuestName.new(quest)
  467.         @quest_difficulty_window = Window_QuestDifficulty.new(quest)
  468.         @quest_description_window = Window_QuestDescription.new(quest)
  469.         @failed_quests_command_window.active = false
  470.         @failed_quests_command_window.visible = false
  471.         @failed_quests_mode = true
  472.       else
  473.         $game_system.se_play($data_system.buzzer_se)
  474.       end
  475.     end
  476.   end
  477. end
  478. #Dane questów (Twórz według przykładu :) )
  479. $quest1 = ["Wszechmoc żywiołowa", 5, "" ,
  480. "Przekaż Drak' Daeiemu wiadomość o pojawieniu się elementu lodu. Element lodu powiedział mi, że można go spotkać w Rechnam."]
  481. $quest1_1 = ["Wszechmoc żywiołowa", 5, "" ,
  482. "Przekaż Drak' Daeiemu wiadomość o pojawieniu się elementu lodu. Element lodu powiedział mi, że można go spotkać w Rechnam. Żeby dostać się do Rechnam muszę mieć przepustkę. Można ją uzyskać u Daeka w Dorang-Zaoschang. Jednak on nie słucha nikogo poniżej 35 poziomu."]
  483. $quest_2 = ["Paczka dla brata",1,"",
  484.  "Mieszkaniec Kenchan poprosił mnie o dostarczenie paczki dla jego brata. Mieszka w Dorang-Zaoschang."]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement