Quest_log problem
Aktualny czas: 28-04-26, 23:44 Witaj! Przejdź do zakładki Logowanie lub Rejestracja


Wątek zamknięty 
[XP] Quest_log problem
Xovr Offline
*


Liczba postów: 17
Dołączył: 27-08-13

Pomógł: 0



Post: #1
pytajnik Quest_log problem

Gdy dodam quest i włącze dziennik wyświetla mi się błąd:
[Obrazek: file.php?id=1614]
Gdy żaden quest nie jest przyjęty wszystko działa poprawnie.

skrypt:
#===============================================================================​
# Thieffer's QuestLog
# version 1.0
# by Thieffer 09.05.2009
#===============================================================================​

#===============================================================================​
#  INSTRUKCJE
#===============================================================================​
# Aby włączyć dziennik zadań należy wywołać skrypt:
#   $scene = Scene_QuestLog.new
# Zadania powinny być wcześniej zdefiniowane wg wzoru:
#   $quest= ["nazwa", poziom, "grafika", "treść"]
# gdzie zamiast:
#   $quest --> możesz wpisać co zechcesz (nie będzie wyświetlane)
#   "nazwa" --> nazwa zadania (będzie wyświetlana)
#   poziom --> liczba od 1 do 5 (poziom trudności)
#   "grafika" --> nazwa pliku zawierającego obrazek o wymiarach 400px na 100px (obrazek przedstawiający scenkę z zadania)
#   "treść" --> treść zadania
# Konfiguracja:
#   $PICTURE_DIFFICULTY = true/false
#     (jeśli true, to poziom trudności będzie przedstawiony
#     za pomocą obrazków; jeśli false - za pomocą tekstu)
#     Obrazki muszą mieć nazwę: quest_difficulty1, quest_difficulty2 itd. (max 5) oraz rozmiary 125px na 48px.
#     Tekst możesz edytować w zmiennych $QD1, $QD2 itd.
#   $PICTURE_DESCRIPTION = true/false
#     (jeśli true, to w opisie zadania, pojawi się obrazek o wymiarach 400px na 100px;
#     jeśli false - brak obrazka)
#   $MAP_AS_BACKGROUND = true/false
#     (jeśli true, to w tle okienek widać mapę, na której jest bohater oraz podczas
#     wciśnięcia ESC pojawia nam się mapa; jeśli false - czarne tło oraz podczas
#     wciśnięcia ESC pojawia nam się Menu (opcjonalnie Scene_Menu.new))
# Obsługa:
#   Dodawanie zadania:
#     $game_party.add_quest($quest)
#     $quest --> to nazwa "robocza" zadania (ta, która nie jest wyświetlana)
#   Ukończenie zadania:
#     $game_party.complete_quest($quest)
#   Usunięcie zadania:
#     $game_party.remove_quest($quest)
#   Warunek - czy zadanie jest wykonane?
#     $game_party.is_quest_completed?($quest)
#===============================================================================​
# U W A G A ---> skrypt wymaga ATP(Advanced Text Paragrapher) V1.0 by Samo, The thief
#===============================================================================​

# START CONFIG
$QD1 = "Bardzo Łatwy"
$QD2 = "Łatwy"
$QD3 = "Średni"
$QD4 = "Trudny"
$QD5 = "Bardzo Trudny"
$PICTURE_DIFFICULTY = true
$PICTURE_DESCRIPTION = true
$MAP_AS_BACKGROUND = true
# END CONFIG

#===============================================================================​
# Game_Party
#===============================================================================​
class Game_Party
  alias :old_initialize :initialize
  def initialize
    old_initialize
    @quests = []
    @completed_quests = []
  end
#-----------------------------------------------------------------------
# Dodawanie zadania.
#-----------------------------------------------------------------------
  def add_quest(quest)
    @quests.push(quest) if not @quests.include?(quest)
  end
#-----------------------------------------------------------------------
# Ukończenie zadania.
#-----------------------------------------------------------------------
  def complete_quest(quest)
    if @quests.include?(quest) and not @completed_quests.include?(quest)
      @completed_quests.push(quest)
      @quests.delete(quest)
    end
  end
#-----------------------------------------------------------------------
# Usuwanie zadania.
#-----------------------------------------------------------------------
  def remove_quest(quest)
    @quests.delete(quest) if @quests.include?(quest)
  end
#-----------------------------------------------------------------------
# Warunek - czy zadanie jest ukończone?
#-----------------------------------------------------------------------
  def is_quest_completed?(quest)
    if @completed_quests.include?(quest)
      return true
    end
    return false
  end
#-----------------------------------------------------------------------
# Metoda zwraca nazwę zadania.
#-----------------------------------------------------------------------
  def quest_name(quest)
    return quest[0]
  end
#-----------------------------------------------------------------------
# Metoda zwraca poziom trudności zadania.
#-----------------------------------------------------------------------
  def quest_difficulty(quest)
    case quest[1]
    when 1
      $QD1
    when 2
      $QD2
    when 3
      $QD3
    when 4
      $QD4
    when 5
      $QD5
    end
  end
#-----------------------------------------------------------------------
# Metoda zwraca nazwę pliku z obrazkiem poziomu trudności zadania (125px na 48px).
#-----------------------------------------------------------------------
  def quest_picture_difficulty(quest)
    case quest[1]
    when 1
      "quest_difficulty1"
    when 2
      "quest_difficulty2"
    when 3
      "quest_difficulty3"
    when 4
      "quest_difficulty4"
    when 5
      "quest_difficulty5"
    end
  end
#-----------------------------------------------------------------------
# Metoda zwraca nazwę pliku z obrazkiem zadania (400px na 100px).
#-----------------------------------------------------------------------
  def quest_picture(quest)
    return quest[2]
  end
#-----------------------------------------------------------------------
# Metoda zwraca treść zadania.
#-----------------------------------------------------------------------
  def quest_description(quest)
    return quest[3]
  end
#-----------------------------------------------------------------------
# Metoda zwraca zadania do wykonania.
#-----------------------------------------------------------------------
  def quests
    return @quests
  end
#-----------------------------------------------------------------------
# Metoda zwraca zadania ukończone.
#-----------------------------------------------------------------------
  def completed_quests
    return @completed_quests
  end
#-----------------------------------------------------------------------
end

#===============================================================================​
# Window_QuestName
#===============================================================================​
class Window_QuestName < Window_Base
  def initialize(quest)
    super(20, 20, 450, 100)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z = 101
    self.back_opacity = 255
    @quest = quest
    refresh
  end
#-----------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = Color.new(244,197,43,255)
    self.contents.font.size = 23
    self.contents.draw_text(0,0,418,68,$game_party.quest_name(@quest),1)
  end
#-----------------------------------------------------------------------
end

#===============================================================================​
# Window_QuestDifficulty
#===============================================================================​
class Window_QuestDifficulty < Window_Base
  def initialize(quest)
    super(450, 30, 170, 80)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z = 100
    self.back_opacity = 230
    @quest = quest
    refresh
  end
#-----------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = Color.new(60,170,25,255)
    if $PICTURE_DIFFICULTY
      self.contents.blt(13, 0, RPG::Cache.picture($game_party.quest_picture_difficulty(@quest)), Rect.new(0, 0, 125, 48))
    else
      self.contents.draw_text(20,0,118,48,$game_party.quest_difficulty(@quest),1)​
    end
  end
#-----------------------------------------------------------------------
end

#===============================================================================​
# Window_QuestDescription
#===============================================================================​
class Window_QuestDescription < Window_Base
  def initialize(quest)
    super(40, 110, 580, 350)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z = 99
    self.back_opacity = 230
    @quest = quest
    refresh
  end
#-----------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.size = 18
    # wykorzystanie ATP
    paragraph = str_paragraph($game_party.quest_description(@quest),518)
    if $PICTURE_DESCRIPTION
      self.contents.blt(74,0, RPG::Cache.picture($game_party.quest_picture(@quest)), Rect.new(0,0,400,100))
      draw_paragraph(30,16,518,202, paragraph)
    else
      draw_paragraph(30,-116,518,318, paragraph)
    end
  end
#-----------------------------------------------------------------------
end

#===============================================================================​
# Scene_QuestLog
#===============================================================================​
class Scene_QuestLog
  def initialize
    @quests = $game_party.quests
    @completed_quests = $game_party.completed_quests
    @quests_names = []
    @completed_quests_names = []
    if @quests.size > 0
      for i in 0..(@quests.size-1)
        @quests_names.push @quests[i][0]
      end
    else
      @quests_names.push "Brak zadań"
    end
    if @completed_quests.size > 0
      for k in 0..(@completed_quests.size-1)
        @completed_quests_names.push @completed_quests[k][0]
      end
    else
      @completed_quests_names.push "Brak ukończonych zadań"
    end
  end
#-----------------------------------------------------------------------
  def main
    @command_window = Window_Command.new(210, ["Aktualne zadania", "Ukończone zadania"])
    @quests_command_window = Window_Command.new(220, @quests_names)
    @completed_quests_command_window = Window_Command.new(220, @completed_quests_names)
    @quests_command_window.active = false
    @quests_command_window.visible = false
    @completed_quests_command_window.active = false
    @completed_quests_command_window.visible = false
    @command_window.x = 640 - @command_window.width
    @command_window.y = 50
    @command_window.back_opacity = 190
    @quests_command_window.x = 640 - @quests_command_window.width
    @quests_command_window.y = 50
    @quests_command_window.height = 200
    @quests_command_window.back_opacity = 190
    @completed_quests_command_window.x = 640 - @completed_quests_command_window.width
    @completed_quests_command_window.y = 50
    @completed_quests_command_window.height = 200
    @completed_quests_command_window.back_opacity = 190
    if $MAP_AS_BACKGROUND
      @spriteset = Spriteset_Map.new
    end
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @command_window.dispose
    @quests_command_window.dispose
    @completed_quests_command_window.dispose
    if $MAP_AS_BACKGROUND
      @spriteset.dispose
    end
  end
#-----------------------------------------------------------------------
  def update
    @command_window.update
    @quests_command_window.update
    @completed_quests_command_window.update
    if $MAP_AS_BACKGROUND
      @spriteset.update
    end
    if @command_window.active
      update_command
      return
    end
    if @quests_command_window.active
      update_quests
      return
    end
    if @completed_quests_command_window.active
      update_completed_quests
      return
    end
    if @quests_mode
      if Input.trigger?(Input::B)
        $game_system.se_play($data_system.cancel_se)
        @quest_name_window.dispose
        @quest_difficulty_window.dispose
        @quest_description_window.dispose
        @quests_command_window.active = true
        @quests_command_window.visible = true
        @quests_command_window.index = @index
      end
      return
    end
    if @completed_quests_mode
      if Input.trigger?(Input::B)
        $game_system.se_play($data_system.cancel_se)
        @quest_name_window.dispose
        @quest_difficulty_window.dispose
        @quest_description_window.dispose
        @completed_quests_command_window.active = true
        @completed_quests_command_window.visible = true
        @completed_quests_command_window.index = @index
      end
      return
    end
  end
#-----------------------------------------------------------------------
  def update_command
    if Input.trigger?(Input::B)
      if $MAP_AS_BACKGROUND
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
        return
      else
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Menu.new(0)
      end
    end
    if Input.trigger?(Input::C)
      case @command_window.index
      when 0
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @command_window.visible = false
        @quests_command_window.active = true
        @quests_command_window.visible = true
      when 1
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @command_window.visible = false
        @completed_quests_command_window.active = true
        @completed_quests_command_window.visible = true
      end
    end
  end
#-----------------------------------------------------------------------
  def update_quests
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
        @command_window.active = true
        @command_window.visible = true
        @quests_command_window.active = false
        @quests_command_window.visible = false
    end
    if Input.trigger?(Input::C)
      if @quests.size > 0
        $game_system.se_play($data_system.decision_se)
        @index = @quests_command_window.index
        quest = @quests[@index]
        @quest_name_window = Window_QuestName.new(quest)
        @quest_difficulty_window = Window_QuestDifficulty.new(quest)
        @quest_description_window = Window_QuestDescription.new(quest)
        @quests_command_window.active = false
        @quests_command_window.visible = false
        @quests_mode = true
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    end
  end
#-----------------------------------------------------------------------
  def update_completed_quests
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
        @command_window.active = true
        @command_window.visible = true
        @completed_quests_command_window.active = false
        @completed_quests_command_window.visible = false
    end
    if Input.trigger?(Input::C)
      if @completed_quests.size > 0
        $game_system.se_play($data_system.decision_se)
        @index = @completed_quests_command_window.index
        quest = @completed_quests[@index]
        @quest_name_window = Window_QuestName.new(quest)
        @quest_difficulty_window = Window_QuestDifficulty.new(quest)
        @quest_description_window = Window_QuestDescription.new(quest)
        @completed_quests_command_window.active = false
        @completed_quests_command_window.visible = false
        @completed_quests_mode = true
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    end
  end
#-----------------------------------------------------------------------
end

Życie jest jak gra, jest ciekawe, trudne i szybko się kończy
15-09-13 13:05
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
M4t3us2 Offline
*


Liczba postów: 38
Dołączył: 03-05-13

Pomógł: 0



Post: #2
RE: Quest_log problem

W tym skrypcie wyświetlany jest mini obrazek questa, więc możliwe, że go nie zrobiłeś, jak zrobić i dodać to masz opisane w skrypcie (nazwa pliku zawierającego obrazek o wymiarach 400px na 100px (obrazek przedstawiający scenkę z zadania)

Ja np nie dodaje wcale obrazków

$quest1 = ["Nazwa questa",poziom trudności, "tu ja nic nie wpisuje",
"Opis questa"]
15-09-13 14:23
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Xovr Offline
*


Liczba postów: 17
Dołączył: 27-08-13

Pomógł: 0



Post: #3
RE: Quest_log problem

spróbuję bez, ale ja właśnie chce z obrazkiem

Życie jest jak gra, jest ciekawe, trudne i szybko się kończy
15-09-13 14:33
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
M4t3us2 Offline
*


Liczba postów: 38
Dołączył: 03-05-13

Pomógł: 0



Post: #4
RE: Quest_log problem

Wystarczy zrobić ss'a z gry i przerobić obrazek (nawet w paincie) na wymiary 400px na 100px, umieścić go w folderze pictures i całą jego nazwę wpisać tam gdzie ja napisałem, że nic nie wpisuje.
15-09-13 14:41
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Xovr Offline
*


Liczba postów: 17
Dołączył: 27-08-13

Pomógł: 0



Post: #5
RE: Quest_log problem

Ja pier.. tu nie chodzi o żaden głupi obrazek, błąd jest jak włączam dziennik.
$quest= ["nazwa", poziom, "grafika", "treść"].
Gdzie cza to wstawić? Ja daje to do zdarzenia (opcja wywołaj skrypt) dobrze robie?

Życie jest jak gra, jest ciekawe, trudne i szybko się kończy
15-09-13 14:51
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
M4t3us2 Offline
*


Liczba postów: 38
Dołączył: 03-05-13

Pomógł: 0



Post: #6
RE: Quest_log problem

To ty poprostu skopiowałeś sam ten skrypt?? on wymaga jeszcze 2 rzeczy
=begin

ATP(Advanced Text Paragrapher) V1.0 by Samo, The thief

Ok, Something of The Scripters do normally to draw a text in form of a paragraph is
doing an array [] that contains each line. The Time Has come For
This Microsoft Word Effect!
This Script Just need a Long String and it will paragraph it!

How to call it?

paragraph = str_paragraph(string, width of the paragraph.)

Example :

@my_paragraph = str_paragraph("La la la la la la la la la , This is a Looooong Strriiiing!", 120)


Returns an Array with each line separately.

How to draw it?

draw_paragraph(x,y,width,height, paragraph)

width and height for each line, not for the paragraph.

.::-NOTE-::.

If you put a ' ^ '(must be between spaces), the text will pass to the next line.
This Symbol Won't be drawed.

Reminder: Always use '' instead of ""! It works faster!

=end


class Window_Base < Window
#--------------------------------------------------
  def str_paragraph(str_old, width)
    temp_str = ''
    str = '' + str_old
    words = []
    size = 0
    str_size = 0
    #
    while ((c = str.slice!(/./m)) != nil)
      temp_str += c
      str_size += 1
      if c == ' '
        words.push(temp_str)
        temp_str = ''
      end
      if str.size == 0
        words.push(temp_str)
        temp_str = ''
      end
    end
    lines = []
    for i in 0...words.size
      word = words[i]
      if word == '^ '
        lines.push(temp_str)
        temp_str = ''
        next
      end
      temp_str += word
      size = contents.text_size(temp_str).width
      if size > width - contents.text_size(' ').width
        for i in 1..word.size
          temp_str = temp_str.chop
        end
        lines.push(temp_str)
        temp_str = ''
        temp_str += word
      end
    end
    words = words.compact
    if temp_str != ''
      lines.push(temp_str)
    end
    return lines
  end
#---------------------------------------------------------------------
  def draw_paragraph(x,y,width,height,lines,align = 0)
    for i in 0...lines.size
      self.contents.draw_text(x, y + i * self.contents.font.size + 1, width, height, lines[i], align)
    end
  end
#-----------------------------------------------------------------
end

oraz zrób nową rubryke nad skryptem o nazwie data_quest(chyba, że już to masz) i tam wpisujesz te $quest= ["nazwa", poziom, "grafika", "treść"]

i wyluzuj troche, pisałem "możliwe" więc sam nie byłem tego pewien bo na skrytptach się nie znam a zasugerowałem się słowem obrazek.
(Ten post był ostatnio modyfikowany: 15-09-13 15:12 przez M4t3us2.)
15-09-13 15:10
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Xovr Offline
*


Liczba postów: 17
Dołączył: 27-08-13

Pomógł: 0



Post: #7
RE: Quest_log problem

Spoko, ATP już mam
ale o data_quest jeszcz nie słyszałem.

Jak wkleiłem to do nowego okna skryptu (data_quest, u mnie Quest_Data) wszystko działa jak nalezy, wielkie dzięki.
W instrukcji w komach nie było mowy o tym gdzie to wklejać więc skąd miałem wiedzieć?

Jeszcze jedno pytanko. Jak zrobić żeby informacje o misji wyświetliły się zaraz po jej aktywowaniu?(nie menu misji tylko misja?

Życie jest jak gra, jest ciekawe, trudne i szybko się kończy
(Ten post był ostatnio modyfikowany: 15-09-13 15:27 przez Xovr.)
15-09-13 15:20
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
M4t3us2 Offline
*


Liczba postów: 38
Dołączył: 03-05-13

Pomógł: 0



Post: #8
RE: Quest_log problem

W wywoływaniu innego zdarzenia niż sam dziennik zadań Ci nie pomogę bo nie potrafie ;/ będziesz musiał poczekać na kogoś kto zna się na skryptach ;d
15-09-13 15:58
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Xovr Offline
*


Liczba postów: 17
Dołączył: 27-08-13

Pomógł: 0



Post: #9
RE: Quest_log problem

No to czekam, a w między czasie sam pokombinuje.

Życie jest jak gra, jest ciekawe, trudne i szybko się kończy
15-09-13 16:04
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Ayene Offline
*


Liczba postów: 758
Dołączył: 09-04-13

Pomógł: 112



Post: #10
RE: Quest_log problem

Doklej do skryptu:
class Scene_QuestNew
  def main
    quest = $game_party.quests.clone.pop
    @quest_name_window = Window_QuestName.new(quest)
    @quest_difficulty_window = Window_QuestDifficulty.new(quest)
    @quest_description_window = Window_QuestDescription.new(quest)
    if $MAP_AS_BACKGROUND
      @spriteset = Spriteset_Map.new
    end
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @quest_name_window.dispose
    @quest_difficulty_window.dispose
    @quest_description_window.dispose
    if $MAP_AS_BACKGROUND
      @spriteset.dispose
    end
  end
  
  def update
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      if $MAP_AS_BACKGROUND
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
        return
      else
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Menu.new(0)
      end
    end
  end
end
Po dodaniu misji wywołaj komendą "Scripts":
$scene = Scene_QuestNew.new
Skrypt wyświetla ostatnio dodaną misję.

[Obrazek: aye_furniture_pres.png]
15-09-13 19:08
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Wątek zamknięty 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości

Kontakt | Ultima Forum | Wróć do góry | Wróć do forów | Wersja bez grafiki | RSS
Powered By MyBB. © 2013 MyBB Group. All Rights Reserved.
Skórka by Ayene.