Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- #
- # MK3 - Phoenix Power Productions Presents: Erfolge 0.98a
- # Letztes Update: Freitag, 09.10.2009
- # Title Add-On by: HungrySnake
- # Update on: 2.10.2011
- # Level: Leicht, Normal
- #
- # Dieses Script erweitert das Spiel um die Möglichkeit, einen Gamerscore ähnlich
- # dem bei der XBox 360 einzubauen.
- # Ferner hat es noch ein Custom Menu eingebaut bekommen, dieses ist allerdings
- # noch nicht so umfangreich ausgebaut und wird später wahrscheinlich in ein
- # eigenes Script übertragen.
- #
- #===============================================================================
- # Updates:
- # ----------------------------------------------------------------------------
- # o 05.10.2009 - Beginn des Scripts.
- # o 06.10.2009 - Vollendung der Pre-A, offiziell Version 0.51a
- # o 07.10.2009 - Erweiterung des Moduls, Einbau eines Custom-Menus, V 0.91
- # o 08.10.2009 - Bei Erhalt eines Erfolgs wird "Battle_end" in der Database
- # abgespielt, Versionsnummer auf 0.97a erhöht
- # o 09.10.2009 - Erweiterung der Einstellungsmöglichkeiten, V 0.98
- #===============================================================================
- # Installation und Anleitung
- #===============================================================================
- #
- # Platziere dieses Script irgendwo zwischen Material und Main.
- # Im Modul Erfolge nach dieser Einleitung gibt es einen Punkt "ERFOLGE_LISTE".
- # In diesen können sämtliche Erfolge eingetragen werden, müssen dabei allerdings
- # durchgezählt sein, sonst findet die Scene sie nicht.
- # Mit "Geheime_Erfolge" können die Erfolge angegeben werden, welche nicht von
- # Anfang an ausführlich angezeigt werden.
- # Darunter kann man bei "GEHEIM_BESCHREIBUNG" die Erfolgs-IDs reinsetzen, welche
- # zwar den Namen vor Erhalt anzeigen, nicht jedoch die Beschreibung.
- # Will man einem Spieler einen Erfolg verleihen (sprich: er hat ihn erreicht),
- # so funktioniert dies mit dem Befehl "gib_erfolg(ID)" unter 'Script' im Event-
- # Command 'Advance'. Dabei steht ID für die Nummer, unter welcher der Erfolg in
- # Aufzählung ERFOLGE_LISTE zu finden ist.
- # Seit Version 0.71 ist es mit Add-On 1 kompatibel.
- # Seit Version 0.80 unterstützt das Script auch die Möglichkeit, in anderen Scripts
- # mit dem Befehl "$mk.gib_erfolg(id)" Erfolge nach denselben Regeln freizuschalten,
- # wie dies in Events bisher möglich war.
- # Seit Version 0.91 ist es mit Add-On 2 kompatibel.
- # Will man das Script ohne Menü-Einbettung nutzen, so kann man es auch per Event
- # mit dem Script-Command "ruf_erfolg(scene)" (ohne die "") aufrufen. Dabei steht
- # scene für die Scene, zu welcher nach Verlassen des Erfolgs-Screens zurückgekehrt
- # werden soll, also Scene_Battle, wenn man es während dem Kampf aufruft, Scene_Map,
- # wenn man es von der Karte aus aufruft,...
- #
- #===============================================================================
- #
- # Kompatibilität
- # - Alias: Game_System: initialize
- # - Alias: Scene_Title: start
- # - Alias: Scene_File: write_save_data, load_save_data
- # - Alias: Scene_Menu: create_command_window, update_command_selection, terminate
- # - Alias: Scene_Map: update
- # - Overwrite: Window_Help: initialize
- # - Overwrite: Scene_Menu: update
- # - Overwrite: Scene_Item: return_scene
- # - Overwrite: Scene_Skill: return_scene
- # - Overwrite: Scene_Status: return_scene
- # - Overwrite: Scene_File: return_scene
- # - Overwrite: Scene_End: return_scene
- #
- #===============================================================================
- module MK3
- module Erfolge
- # Mit diesem Namen wird der Erfolgs-Bildschirm-Aufruf betitelt, wenn man ihn
- # über das Custom Menu aufruft.
- ERFOLGE_NAME = "Erfolge"
- # Dieser Schalter bestimmt, ob der Erfolgs-Screen in den Titel-Bildschirm
- # integriert wird. Gleichzeitig bewirkt er auch, dass die Erfolge nicht von
- # einem Spielstand, sondern vom Spiel direkt geladen werden, sind also immer
- # in jedem Spielstand des jeweiligen Exemplars gleich.
- INTEGRATE_TITLE = true
- # Mit diesem Schalter kann man bestimmen, ob der Erfolgs-Screen per Taste auf
- # der Map gerufen werden kann.
- MAP_ACCESS = false
- # Wenn MAP_ACCESS = true, wird mit diesem Button (nach Controller-Regelung)
- # der Erfolgs-Screen geöffnet. Die Rückkehr erfolg danach automatisch wieder
- # zurück zur jeweiligen Map. Der Default-Wert "X" wäre in dem Fall zum Bei-
- # spiel die Taste A auf dem Keyboard, wenn man nicht mit F1 die Tastenbele-
- # gung geändert hat.
- MAP_CALL_BUTTON = Input::X
- # Dieser Schalter bestimmt, ob Erfolge über das Menü aufgerufen werden kann.
- # Es wird außerdem für die Custom-Menu-Funktionen unten in diesem Modul be-
- # nötigt.
- MENU_ACCESS = true
- # Mit dieser Liste bestimmt ihr die Reihenfolge der Menü-Einträge. Aller-
- # dings unterstützt sie nur die Grundelemente und das Erfolgs-Script (Rest
- # muss noch getestet werden). Wer mehr Punkte integrieren möchte, braucht
- # sich nur dieses Script:
- #
- # http://pockethouse.wordpress.com/vx/scene-menu-redux/
- #
- # zu besorgen und sich darin ein wenig einzuarbeiten. Es ist nicht schwierig.
- #
- # Die ID muss mit den Zahlen in MENU_SORT übereinstimmen, der erste Eintrag
- # im Array ist die Scene, welche aufgerufen wird (wenn Parameter übergeben
- # werden müssen, unterstützt dieses Scriptdabei nur jene aus dem Grundpro-
- # gramm). Der zweite Eintrag schließlich ist der Name, mit welchem die Scenes
- # im Menü eingetragen werden.
- MENU_LIST = {
- # ID Scene zum Aufruf Name im Menü
- 1 => ["Scene_Item", "Item"],
- 2 => ["Scene_Skill", "Skill"],
- 3 => ["Scene_Equip", "Equip"],
- 4 => ["Scene_Status", "Status"],
- 5 => ["Scene_File", "Save"],
- 6 => ["Scene_End", "Shutdown"],
- 7 => ["Scene_Erfolge", ERFOLGE_NAME],
- }
- # In dem Array unter diesem Kommentar werden die Aufrufe in der Reihenfolge
- # eingegeben, wie sie im Menü erscheinen sollen. Sie müssen hierbei exakt
- # mit den IDs in MENU_LIST übereinstimmen.
- MENU_SORT = [4, 5, 1, 3, 2, 7, 6]
- # Dieser Schalter bestimmt, ob die bisherige Spielzeit im Menü angezeigt wird.
- # Funktioniert nur, wenn "MENU_ACCESS = true".
- SHOW_TIME = false
- # In diesem Array müssen alle Scenes stehen, bei welchen man zuvor eine
- # Actor-Auswahl im Menü-Status machen möchte. Standardmäßig sind dies 2 für
- # Skill, 3 für Equip und 4 für Status.
- # Dieses Feature ist noch nicht fertig ausgebaut und unterstützt deshalb nur
- # Skill, Equip und Status, die Zahl, welche man eingibt, gibt die Position an,
- # in welcher der jeweilige Befehl in MENU_SORT drinsteht (beginnt bei 1).
- CHAR_WAHL = [1, 4, 5]
- # In der folgenden Liste kannst du alle Erfolge einrichten. Die ID ist die
- # Nummer, mit welcher du Erfolge verwalten kannst, Titel ist der Name des
- # Erfolgs, welcher in der Liste angezeigt wird, Beschreibung sind ein paar
- # nähere Worte zu dem Erfolg und Score ist die Punktzahl, welche er bringt.
- # Bei Beschreibung kann man mit dem Zeichen "|" einen Zeilenumbruch anzeigen.
- # Hierbei empfehle ich aber, nicht mehr als zwei Zeilen zu verwenden, da es
- # sonst wahrscheinlich nicht richtig angezeigt wird (habe es noch nicht ge-
- # testet).
- # Mit Version 0.94 ist eine freiwillige Zeile hinzugekommen. Man kann nun
- # jedem einzelnen Erfolg eine Icon-ID zuweisen, welche nach Erhalt des Erfolgs
- # bei diesem angezeigt wird (vorausgesetzt, ICON_ZEIGEN = true). Man kann die
- # Icon_ID einfach hinter die Position der Punktzahl in den Array schreiben
- # (Komma nicht vergessen).
- ERFOLGE_LISTE = {
- # ID Titel Beschreibung Score Icon-ID
- 1 => ["Questling", "Beende deine 5. Quest.", 5],
- 2 => ["Questler", "Beende deine 25. Quest.", 10],
- 3 => ["Questor", "Beende deine 50. Quest.", 25],
- 4 => ["Questinator", "Beende deine 100. Quest.", 50]
- }
- # Im Event-Command "Advanced - Script" kannst du mit dem Befehl "gib_erfolg(ID)
- # den Erfolg freischalten. Damit wird dem Spieler die Punktzahl des Erfolgs
- # gutgeschrieben und der Erfolg als erhalten gekennzeichnet
- # Der Schalter bestimmt, ob ein Icon gezeigt wird oder nicht. Diese Einstellung
- # betrifft ALLE Icon-Optionen des Scripts, also auch jene bei ERFOLGE_LISTE
- ICON_ZEIGEN = true
- # Der Schalter bestimmt, ob zusätzlich zu freigeschalteten Erfolgen auch die
- # noch nicht erhaltenen Erfolge ein ICON erhalten, wobei dieses immer dasselbe
- # ist, unabhängig von der Zuweisung bei ERFOLGE_LISTE oder ICON_INDEX.
- ICON_ZEIGEN_UNDONE = true
- # Diese Zahl entspricht der Icon-ID, welche angezeigt wird für nicht erhaltene
- # und nicht geheime Erfolge , wenn ICON_ZEIGEN und ICON_ZEIGEN_UNDONE = true.
- ICON_UNDONE = 331
- # Dieser Schalter bestimmt, ob (wenn ICON_ZEIGEN_UNDONE = true) die Icons von
- # geheimen Erfolgen versteckt werden sollen. Hierbei bedeutet false, dass die
- # Icons gezeigt werden.
- GEHEIM_ICON_ZEIGEN = true
- # Wenn ICON_ZEIGEN und ICON_ZEIGEN_UNDONE = true und ICON_ZEIGEN_VERSTECKEN =
- # false, dann wird für nicht freigeschaltete, geheime Erfolge die Icon-ID,
- # welche in diesem Punkt angegeben ist, angezeigt.
- ICON_GEHEIM = 331
- # Gibt den Index des Icons an, welches bei erhaltenen Erfolgen gezeigt wird.
- # Wenn man als Wert 0 eingibt, werden Icons nur dort angezeigt, wo man auch
- # explizit welche wünscht.
- ERHALTEN_ICON_DEFAULT = 516
- # In ICON_INDEX kann man jedem Punktwert eine Icon-ID zuweisen, nämlich mit
- # "X => Y" (ohne Anführungszeichen), wobei X der jeweilige Punktwert und Y
- # die dazugehörige Icon-ID ist. Jeder Punktwert, der darin nicht vorkommt,
- # und auch nicht in ERFOLGE_LISTE ist (welche bevorzugt behandelt wird), kriegt
- # automatisch die Icon-ID in ERHALTEN_ICON_DEFAULT zugewiesen.
- ICON_INDEX = {
- 5 => 516,
- 10 => 516,
- 15 => 516,
- }
- # Der Schalter bestimmt, ob erlangte Erfolge eingefärbt werden sollen
- HAT_ERFOLG_FARBE = true
- # Gibt die Farbe an, in welche der Erfolg eingefärbt wird.
- ERFOLG_FARBE = 17
- # Für diejenigen, die es nicht wissen: die Farbe richtet sich nach den Flächen
- # unten rechts im Window-Bild, also jener Bild-Datei unter System, welche die
- # Anzeige sämtlicher Windows steuert. Dabei wird in gewohnter Leserichtung
- # durchgezählt, begonnen mit 0.
- # Dieser Schalter bestimmt, ob das Punktefenster oben rechts angezeigt wird.
- # Ist dieser Schalter false, wird das erklärende Fenster oben links entspre-
- # chend gestretcht (was einen längeren Erklär-Text ermöglicht)
- SHOW_SCORE_WINDOW = true
- # Diese Einstellung steuert die Anzeige des Einzel-Score (also die Darstellung
- # der Erfolgs-Punktzahl eines einzelnen Erfolges). Steht der Wert auf 1, wird
- # die Erfolgs-Punktzahl am rechten Rand hinter dem jeweiligen Titel angezeigt,
- # steht er auf 2 steht er am unteren rechten Rand der Beschreibung. Bei 0 wird
- # der Score nicht angezeigt.
- SHOW_SINGLE_SCORE = 1
- # Dieser Text bestimmt, was dem Score hintenangestellt werden soll, wenn die
- # Konstante SHOW_SINGLE_SCORE auf 1 oder 2 steht und der Score über 1 beträgt.
- SINGLE_SCORE_PLUS = " Punkte"
- # Dieser Text funktioniert genauso wie SINGLE_SCORE_PLUS, allerdings berück-
- # sichtigt er nur Erfolgs-Punkte, die 1 entsprechen. Soll das Anhängsel bei
- # beiden Fällen gleich sein, einfach dasselbe wie bei SINGLE_SCORE_PLUS ein-
- # bauen. Tipp: Es sieht besser aus, wenn der Text genauso viele Zeichen ent-
- # hält wie jener in SINGLE_SCORE_PLUS.
- SINGLE_SCORE_PLUS_ONE = " Punkt "
- # In dieses Feld kannst du einfügen, welcher Text vor der Beschreibung stehen
- # soll. Soll kein Text da stehen, so schreibe "" in das Feld.
- BESCHREIBUNG = "Beschreibung: " # denke an das Leerzeichen, sonst wird es
- # gequetscht
- # In diese Liste kannst du alle Erfolge aufzählen, welche vor Erhalt nicht
- # näher beschrieben werden, sobald sie (mit "gib_erfolg(ID)") freigeschaltet
- # wurden, werden sie jedoch wie gewohnt angezeigt
- Geheime_Erfolge = []
- # Diese Liste funktioniert fast wie die Liste Geheime_Erfolge, nur versteckt
- # sie lediglich den beschreibenden Text, der Titel wird hingegen angezeigt.
- GEHEIME_BESCHREIBUNG = [3]
- # Dieser Name wird für den Erfolg angezeigt, wenn er in der Liste Geheime_Erfolge
- # steht und noch nicht freigeschaltet wurde
- GEHEIM_TITEL = "Geheim"
- # Diese Beschreibung erhält man, wenn man einen geheimen, nicht freigeschalteten
- # Erfolg anwählt. Genauso wie bei den Beschreibungen in der ERFOLGE_LISTE kann
- # auch diese mit "|" mit Zeilenumbruch versehen werden (trotzdem sollte es bei
- # zwei Zeilen bleiben).
- GEHEIM_BESCHREIBUNG = "Beschreibung: Dies ist ein geheimer Erfolg, du musst ihn erst|freischalten, um ihn betrachten zu können"
- # Dieser Schalter bestimmt, ob im Hilfe-Fenster die Zahl der gesammelten/
- # insgesamten Erfolge angezeigt werden sollen
- # Steht der Schalter auf false, sollte der Text in ERFOLGE_HILFE dement-
- # sprechend angepasst werden
- ERFOLGSZAHL_ZEIGEN = true
- # Diese Nachricht steht im Hilfe-Fenster, ist "ERFOLGSZAHL_ZEIGEN" (s. oben)
- # true, so wird der Text um X/Y erweitert, wobei X für die Anzahl bereits
- # freigeschalteter Bilder steht und Y für die Gesamtzahl aller Erfolge
- ERFOLGE_HILFE = "Dies sind deine Erfolge. Du hast "
- # Dieser Schalter bestimmt, ob bei Erhalt eines Erfolgs die ME, welche in der
- # Database bei "Battle_End" (Default: Victory1) abgespielt wird.
- PLAY_ERFOLG_SOUND = true
- end
- end
- $imported = {} if $imported == nil
- $imported["MK3_Erfolge_Basis"] = true
- module MK3::Commands
- def gib_erfolg(id)
- if !$Erfolge_erhalten.include?(id) then
- $Erfolge_erhalten << id
- if MK3::Erfolge::PLAY_ERFOLG_SOUND
- $game_system.battle_end_me.play
- end
- end
- end
- def ruf_erfolg(scene)
- $scene = Scene_Erfolge.new(scene)
- end
- end
- class Game_Interpreter
- include MK3::Commands
- end
- class MK3_Commands
- def initialize
- end
- def gib_erfolg(id)
- if !$Erfolge_erhalten.include?(id)
- $Erfolge_erhalten << id
- if MK3::Erfolge::PLAY_ERFOLG_SOUND
- $game_system.battle_end_me.play
- end
- end
- end
- end
- class Game_System
- alias mk_initialize initialize
- def initialize
- mk_initialize
- $mk = MK3_Commands.new
- end
- end
- class Window_ErfolgsScore < Window_Base
- def initialize(x, y, width, height)
- super(x, y, width, height)
- create_contents
- now_score = get_score
- text = now_score.to_s + "/" + $score.to_s + " Punkte"
- contents.draw_text (0, 0, contents.width, WLH, text, 1)
- end
- def get_score
- now_score = 0
- for id in $Erfolge_erhalten do
- erfolg = MK3::Erfolge::ERFOLGE_LISTE[id]
- next unless erfolg != nil
- now_score += erfolg[2]
- end
- return now_score
- end
- end
- class Window_Erfolge < Window_Selectable
- WLH = 24
- def initialize(x, y, width, height, spacing = 76)
- super(x, y, width, height, spacing)
- self.index = 0
- refresh
- end
- def refresh
- self.contents.clear
- @data = []
- MK3::Erfolge::ERFOLGE_LISTE.each_key do |key|
- if $Erfolge_erhalten.include?(key) then
- @data << key
- end
- end
- MK3::Erfolge::ERFOLGE_LISTE.each_key do |key|
- if !$Erfolge_erhalten.include?(key) then
- @data << key
- end
- end
- @item_max = @data.size
- create_contents
- for i in 1...@item_max+1
- draw_erfolg(i)
- end
- end
- def make_icon(id)
- if $Erfolge_erhalten.include?(id)
- get_icon_id = MK3::Erfolge::ERFOLGE_LISTE[id]
- if get_icon_id[3] != nil
- icon_id = get_icon_id[3]
- else
- icon_weiser = []
- MK3::Erfolge::ICON_INDEX.each_key do |key|
- icon_weiser << key
- end
- icon_weiser.each do |id_test|
- if id_test = get_icon_id[2]
- icon_id = MK3::Erfolge::ICON_INDEX[id_test]
- end
- end
- end
- elsif MK3::Erfolge::ICON_ZEIGEN_UNDONE
- if MK3::Erfolge::Geheime_Erfolge.include?(id) or MK3::Erfolge::GEHEIME_BESCHREIBUNG.include?(id)
- if MK3::Erfolge::GEHEIM_ICON_ZEIGEN
- icon_id = MK3::Erfolge::ICON_GEHEIM
- end
- else
- icon_id = MK3::Erfolge::ICON_UNDONE
- end
- end
- draw_icon(icon_id, 0, (WLH * id)-WLH)
- end
- def draw_icon(icon_index, x, y, enabled = true)
- bitmap = Cache.system("Iconset")
- rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
- self.contents.blt(x, y, bitmap, rect, enabled ? 255 : 128)
- end
- def draw_erfolg(id)
- contents.font.color = text_color(0)
- erfolg = MK3::Erfolge::ERFOLGE_LISTE[id] # theoretisch mit @data sortierbar
- if MK3::Erfolge::ICON_ZEIGEN
- make_icon(id)
- end
- if MK3::Erfolge::Geheime_Erfolge.include?(id) and !$Erfolge_erhalten.include?(id) then
- text = MK3::Erfolge::GEHEIM_TITEL
- elsif $Erfolge_erhalten.include?(id) then
- if erfolg != nil
- if MK3::Erfolge::HAT_ERFOLG_FARBE
- contents.font.color = text_color(MK3::Erfolge::ERFOLG_FARBE)
- end
- text = erfolg[0]
- end
- else
- if erfolg != nil
- text = erfolg[0]
- end
- end
- case MK3::Erfolge::ICON_ZEIGEN
- when true
- x = 25
- x_width = 480
- else
- x = 0
- x_width = 505
- end
- self.contents.draw_text(x, WLH * (id - 1), x_width, 24, text, 0)
- if MK3::Erfolge::SHOW_SINGLE_SCORE == 1
- case erfolg[2]
- when 1
- bonus = MK3::Erfolge::SINGLE_SCORE_PLUS_ONE
- when nil
- bonus = ""
- else
- bonus = MK3::Erfolge::SINGLE_SCORE_PLUS
- end
- if erfolg[2] != nil
- score = erfolg[2].to_s + bonus
- else
- score = ""
- end
- self.contents.draw_text(x, WLH * (id - 1), x_width, 24, score, 2)
- end
- end
- def draw_medal(medal_name, x = 0, y = 0)
- return if medal_name == nil
- bitmap = Cache.picture(medal_name)
- rect = Rect.new(0, 0, 72, 72)
- self.contents.blt(x, y, bitmap, rect)
- end
- def item_rect(index)
- rect = Rect.new(0, 0, 0, 0)
- case MK3::Erfolge::ICON_ZEIGEN
- when true
- x_width = 25
- else
- x_width = 0
- end
- rect.width = ((contents.width + @spacing) / @column_max - @spacing) - x_width
- rect.height = WLH
- rect.x = (index % @column_max * (rect.width + @spacing)) + x_width
- rect.y = index / @column_max * WLH # Faktor muss identisch sein mit y-Faktor bei Titel
- return rect
- end
- def update
- super
- end
- def create_contents
- self.contents.dispose
- self.contents = Bitmap.new(width - 32, [height - 32, row_max * WLH].max)
- end
- def row_max
- return (@item_max + @column_max - 1) / @column_max
- end
- end
- class Window_ErfolgsBeschreibung < Window_Base
- def initialize(x, y, width, height)
- super(x, y, width, height)
- end
- end
- class Scene_Title < Scene_Base
- alias mk_start start
- def start
- mk_start
- if $Erfolge_erhalten == nil then
- $Erfolge_erhalten = []
- end
- get_erfolgpoints
- end
- def get_erfolgpoints
- $score = 0
- MK3::Erfolge::ERFOLGE_LISTE.each_value do |val|
- $score += val[2]
- end
- end
- def create_command_window
- s1 = Vocab::new_game
- s2 = Vocab::continue
- s3 = Vocab::shutdown
- if MK3::Erfolge::INTEGRATE_TITLE
- s4 = MK3::Erfolge::ERFOLGE_NAME
- @command_window = Window_Command.new(172, [s1, s2, s4,s3])
- @command_window.y = 288 - 24
- else
- @command_window = Window_Command.new(172, [s1, s2, s3])
- @command_window.y = 288
- end
- @command_window.x = (544 - @command_window.width) / 2
- if @continue_enabled # If continue is enabled
- @command_window.index = 1 # Move cursor over command
- else # If disabled
- @command_window.draw_item(1, false) # Make command semi-transparent
- end
- @command_window.openness = 0
- @command_window.open
- end
- def update
- super
- @command_window.update
- if Input.trigger?(Input::C)
- case @command_window.index
- when 0; command_new_game
- when 1; command_continue
- when 2
- if MK3::Erfolge::INTEGRATE_TITLE
- $scene = Scene_Erfolge.new(Scene_Title)
- else
- command_shutdown
- end
- end
- if MK3::Erfolge::INTEGRATE_TITLE
- case @command_window.index
- when 3
- command_shutdown
- end
- end
- end
- end
- end
- class Window_Time < Window_Base
- def update(text)
- self.create_contents
- self.contents.draw_text(0, 0, 128, 24, text, 1)
- end
- end
- class Window_Help_Vary < Window_Base
- def initialize(x = 0, y = 0, width = 544, height = WLH + 32)
- super(x, y, width, height)
- end
- def set_text(text, align = 0)
- if text != @text or align != @align
- self.contents.clear
- self.contents.font.color = normal_color
- self.contents.draw_text(4, 0, self.width - 40, WLH, text, align)
- @text = text
- @align = align
- end
- end
- end
- class Scene_Menu < Scene_Base
- alias mk_create_command_window create_command_window
- alias mk_update_command_selection update_command_selection
- alias mk_terminate terminate
- def update
- super
- update_menu_background
- @command_window.update
- @gold_window.update
- if MK3::Erfolge::SHOW_TIME
- text = game_time
- @time_window.update(text)
- end
- @status_window.update
- if @command_window.active
- update_command_selection
- elsif @status_window.active
- if MK3::Erfolge::MENU_ACCESS then
- #mk_update_actor_selection
- update_actor_selection
- else
- update_actor_selection
- end
- end
- end
- def terminate
- mk_terminate
- if MK3::Erfolge::SHOW_TIME
- @time_window.dispose
- end
- end
- def game_time(modificate = false)
- @gametime = Graphics.frame_count / Graphics.frame_rate
- hours = @gametime / 3600
- minutes = @gametime / 60 % 60
- seconds = @gametime % 60
- if modificate then
- result = sprintf("%d%02d%02d", hours, minutes, seconds)
- else
- result = sprintf("%d:%02d:%02d", hours, minutes, seconds)
- end
- return result
- end
- def create_command_window
- if MK3::Erfolge::MENU_ACCESS
- if MK3::Erfolge::SHOW_TIME
- @time_window = Window_Time.new(0, 300, 160, 60)
- @time_window.contents.clear
- @time_window.create_contents
- text = game_time
- @time_window.contents.draw_text(0, 0, 24, 128, text, 1)
- end
- @liste = MK3::Erfolge::MENU_SORT
- @command = []
- @liste.each do |id|
- name = MK3::Erfolge::MENU_LIST[id]
- @command << name[1]
- end
- @command_window = Window_Command.new(160, @command)
- @command_window.index = @menu_index
- if $game_party.members.size == 0 # If number of party members is 0
- @command_window.draw_item(0, false) # Disable item
- @command_window.draw_item(1, false) # Disable skill
- @command_window.draw_item(2, false) # Disable equipment
- @command_window.draw_item(3, false) # Disable status
- end
- if $game_system.save_disabled # If save is forbidden
- @command_window.draw_item(4, false) # Disable save
- end
- else
- mk_create_command_window
- end
- end
- def update_command_selection
- if MK3::Erfolge::MENU_ACCESS
- if Input.trigger?(Input::B)
- Sound.play_cancel
- $scene = Scene_Map.new
- elsif Input.trigger?(Input::C)
- if $game_party.members.size == 0 and @command_window.index < 4
- Sound.play_buzzer
- return
- elsif $game_system.save_disabled and @command_window.index == 4
- Sound.play_buzzer
- return
- end
- Sound.play_decision
- befehl = @liste
- aufruf = MK3::Erfolge::MENU_LIST[befehl[@command_window.index]]
- if MK3::Erfolge::CHAR_WAHL.include?(@command_window.index + 1)
- start_actor_selection
- return
- end
- scene = aufruf[0] + ".new"
- case scene
- when "Scene_File.new" then
- scene += "(true, false, false)"
- end
- $scene = eval(scene)
- end
- else
- mk_update_command_selection
- end
- end
- def mk_update_actor_selection
- if Input.trigger?(Input::B)
- Sound.play_cancel
- end_actor_selection
- elsif Input.trigger?(Input::C)
- $game_party.last_actor_index = @status_window.index
- Sound.play_decision
- position = MK3::Erfolge::MENU_SORT[@command_window.index]
- from = MK3::Erfolge::MENU_LIST[position]
- if Input.trigger?(Input::C)
- case from[0]
- when "Scene_Skill" # skill
- $scene = Scene_Skill.new(@status_window.index)
- when "Scene_Equip" # equipment
- $scene = Scene_Equip.new(@status_window.index)
- when "Scene_Status" # status
- $scene = Scene_Status.new(@status_window.index)
- end
- end
- end
- end
- end
- class Scene_Map < Scene_Base
- alias mk_update update
- def update
- mk_update
- if MK3::Erfolge::MAP_ACCESS
- if Input.trigger?(MK3::Erfolge::MAP_CALL_BUTTON)
- $scene = Scene_Erfolge.new(Scene_Map)
- end
- end
- end
- end
- class Scene_Base
- def get_menu_index(scene)
- MK3::Erfolge::MENU_LIST.each do |key, val|
- if val.include?(scene)
- x = MK3::Erfolge::MENU_SORT.index(key)
- return x != nil ? x : 0
- end
- end
- end
- end
- class Scene_Item < Scene_Base
- def return_scene
- x = get_menu_index("Scene_Item")
- $scene = Scene_Menu.new(x)
- end
- end
- class Scene_Skill < Scene_Base
- def return_scene
- x = get_menu_index("Scene_Skill")
- $scene = Scene_Menu.new(x)
- end
- end
- class Scene_Equip < Scene_Base
- def return_scene
- x = get_menu_index("Scene_Equip")
- $scene = Scene_Menu.new(x)
- end
- end
- class Scene_Status < Scene_Base
- def return_scene
- x = get_menu_index("Scene_Status")
- $scene = Scene_Menu.new(x)
- end
- end
- class Scene_File < Scene_Base
- alias mk_write_save_data write_save_data
- alias mk_read_save_data read_save_data
- def return_scene
- if @from_title
- $scene = Scene_Title.new
- elsif @from_event
- $scene = Scene_Map.new
- else
- x = get_menu_index("Scene_File")
- $scene = Scene_Menu.new(x)
- end
- end
- def write_save_data(file)
- mk_write_save_data(file)
- if !MK3::Erfolge::INTEGRATE_TITLE
- Marshal.dump($Erfolge_erhalten, file)
- end
- end
- def read_save_data(file)
- mk_read_save_data(file)
- if !MK3::Erfolge::INTEGRATE_TITLE
- $Erfolge_erhalten = Marshal.load(file)
- end
- end
- end
- class Scene_End < Scene_Base
- def return_scene
- x = get_menu_index("Scene_End")
- $scene = Scene_Menu.new(x)
- end
- end
- class Scene_Erfolge < Scene_Base
- def initialize(scene = Scene_Menu)
- @scene = scene
- end
- def start
- create_menu_background
- text = MK3::Erfolge::ERFOLGE_HILFE
- if MK3::Erfolge::ERFOLGSZAHL_ZEIGEN
- text += $Erfolge_erhalten.length.to_s + "/" + MK3::Erfolge::ERFOLGE_LISTE.length.to_s
- end
- if MK3::Erfolge::SHOW_SCORE_WINDOW
- @score_window = Window_ErfolgsScore.new(404, 0, 140, 56)
- @help_window = Window_Help_Vary.new(0, 0, 404)
- else
- @help_window = Window_Help_Vary.new
- end
- @help_window.contents.clear
- @help_window.set_text (text, 1)
- @erfolg_titel_window = Window_Erfolge.new(0, 56, 544, 275)
- @erfolg_def_window = Window_ErfolgsBeschreibung.new(0, 331, 544, 85)
- @erfolg_titel_window.active = true
- end
- def terminate
- super
- dispose_menu_background
- @help_window.dispose
- if MK3::Erfolge::SHOW_SCORE_WINDOW
- @score_window.dispose
- end
- @erfolg_titel_window.active = false
- @erfolg_titel_window.dispose
- @erfolg_def_window.dispose
- end
- def update
- super
- update_menu_background
- @erfolg_titel_window.update
- @erfolg_def_window.update
- update_erfolg_def(@erfolg_titel_window.index)
- if Input.trigger?(Input::B)
- Sound.play_cancel
- if @scene == Scene_Menu
- $scene = @scene.new(6)#(get_menu_index("Scene_Erfolge"))
- else
- $scene = @scene.new
- end
- end
- end
- def update_erfolg_def(id)
- id += 1
- erfolg = MK3::Erfolge::ERFOLGE_LISTE[id]
- if (MK3::Erfolge::GEHEIME_BESCHREIBUNG.include?(id) or MK3::Erfolge::Geheime_Erfolge.include?(id)) and !$Erfolge_erhalten.include?(id)
- text = MK3::Erfolge::GEHEIM_BESCHREIBUNG
- else
- text = MK3::Erfolge::BESCHREIBUNG
- text += erfolg[1]
- end
- @erfolg_def_window.contents.clear
- @erfolg_def_window.create_contents
- y = 0
- txsize = 24
- nwidth = 512
- buf = text.gsub(/\\N(\[\d+\])/i) { "\\__#{$1}" }
- lines = buf.split(/(?:[|]|\\n)/i)
- lines.each_with_index { |l, i|
- l.gsub!(/\\__(\[\d+\])/i) { "\\N#{$1}" }
- @erfolg_def_window.contents.draw_text(0, i * txsize + y, nwidth, 24, l, 0)
- }
- if (MK3::Erfolge::SHOW_SINGLE_SCORE == 2)# and (l = i.size)
- case erfolg[2]
- when 1
- bonus = MK3::Erfolge::SINGLE_SCORE_PLUS_ONE
- when nil
- bonus = ""
- else
- bonus = MK3::Erfolge::SINGLE_SCORE_PLUS
- end
- if erfolg[2] != nil
- score = erfolg[2].to_s + bonus
- else
- score = ""
- end
- @erfolg_def_window.contents.draw_text(0, txsize + y, nwidth, 24, score, 2)
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement