• Anmelden

1

Samstag, 26. Dezember 2015, 23:04

[Erledigt] Erweiterte Item-/Skillbeschreibung

Hallöchen.

Ich hab zwar schon gegooglet und die Forensuche benutzt, allerdings kann ich bei meinem Talent, was das Suchen betrifft, nicht wirklich von Erfolg sprechen.
Ich bin auf der Suche nach einem Skript, das es ermöglicht, auf Knopfdruck (oder auch nicht auf Knopfdruck, das ist relativ egal, denke ich) eine erweiterte Beschreibung von Items oder auch von Skills anzuzeigen (wobei der Hauptaugenmerk bei den Items liegt, die Skills sind noch vernachlässigbar). Vielleicht kennt der ein oder andere von euch diese Funktion aus den Spielen der Dark Souls-Reihe, wo die Items einerseits eine Beschreibung mit für das Gameplay relevanten Informationen erhält, die sofort ersichtlich ist, andererseits aber auch eine andere, längere Beschreibung aufrufbar ist, die dann meistens die Beziehung zur Lore verdeutlich.
Das ist ein Prinzip, das ich sehr schön finde, da man auf diese Art und Weise eine Geschichte erzählen kann, die über die Oberflächlichkeit der Hauptstory hinaus geht und die Welt und ihre Zusammenhänge etwas verdeutlicht und lebendiger macht.

Ich wäre schon sehr zufrieden, wenn mir jemand sagen könnte, ob es ein solches Skript bereits gibt, ich kenne mich in dem Bereich nämlich überhaupt nicht aus.
Oh, und wenn irgendjemand unter akuter Langeweile leidet und fancy Rubyskills besitzt, wäre es natürlich auch wunderbar, wenn mir dieser Jemand ein solches Skript schreibt. ; )

Beste Grüße, Coelestus

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Coelestus« (5. Januar 2016, 01:55)


2

Samstag, 2. Januar 2016, 22:57

Dieser Beitrag wurde durch die Formulierung "fancy Rubyskill[z]" getriggert.

Hallo Coelestus,
es gibt schon Scripts, die dir mehr Informationen anzeigen, aber in der Regel sind das dann die Attribute und Wertänderung des Items aus der Database und kein Zusatztext.
Zufällig laufen hier aber ein paar Scripter in der Community rum, also wenn Du beschreibst, wie diese Zusatzinformationen aussehen und sich anfühlen sollte inGame, dann käme vielleicht am Ende dein Wunschscript raus.

Wie und wo soll diese Info denn angezeigt werden? Soll das Itemmenü zur Seite scrollen und da ist dann das Textfenster, oder erscheint das Textfenster einfach in der Mitte des Screens und überdeckt den Rest oder soll das obere Fenster in dem Fall größer werden oder reicht vielleicht das obere Fenster in der Itemszene bereits, um deinen Text anzuzeigen?

3

Montag, 4. Januar 2016, 02:32

Ha, ich wusste doch, dass ich die richtige Formulierung gewählt habe. :'D

Öh, ja, gute Frage.
Ich bin mir nicht ganz sicher, aber ich würde wahrscheinlich durchschnittlich drei oder vier Sätze zu jedem Item schreiben,
also kommt mir die Lösung, entweder das schon vorhandene Fenster zu erweitern oder einfach ein neues Fenster in der Menümitte einzublenden, als die praktikabelste vor,
aber keine Ahnung, was davon eleganter oder besser umzusetzen ist.

4

Montag, 4. Januar 2016, 03:19

Zitat

Ha, ich wusste doch, dass ich die richtige Formulierung gewählt habe. :'D
;)

Reicht dir einfarbiger Text ohne dynamische Extras, oder hättest Du gerne die selben Formatierungsmöglichkeiten wie bei ShowText? Das wäre nicht viel aufwändiger, man müsste die Window-Klasse dann aber etwas anders schreiben.

5

Montag, 4. Januar 2016, 03:49

Ja, der Text kann definitiv ruhig einfarbig sein,
ich benutze die Formatierungsmöglichkeiten sowieso nie. D:

6

Montag, 4. Januar 2016, 04:37

Hallo Coelestus,
ich habe dein Script fertig gestellt - Du findest es unten im Spoiler.

Einfach mal als neues Script über Main einfügen und ausprobieren. Zum Testen brauchst Du nur einen Heiltrank im Inventar und eine Shift-Taste.
Weitere Fragen oder Wünsche sind kein Problem.

Spoiler: :ruby: Quellcode

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#==============================================================================
# ** Extended Item Description
#------------------------------------------------------------------------------
#  Ermöglicht es, für jeden Itemtyp Hintergrundinformationen zu hinterlegen.
#  Der Spieler kann diese abrufen, indem er im Itembildschirm den Cursor auf
#  ein Item setzt und den A-Button (Shift-Taste) drückt.
#      Die genauen Texte, welche dann angezeigt werden kannst Du ab Zeile 28
#  definieren.
#------------------------------------------------------------------------------
#  Autor: Playm
#  Datum: Januar 2016
#  Maker: RPG Maker XP
#  Einfache Nutzung in nicht-kommerziellen  RMXP  Projekten ist gestattet.
#  Keine kommerzielle Nutzung gestattet. Für Lizenzen an den Autor wenden.
#  Keine Weiterverbreitung in originaler oder abgeänderter Form gestattet.
#==============================================================================
# ** Scene_Item (Part I)
#==============================================================================
class Scene_Item
  #--------------------------------------------------------------------------
  # * Liefert zu einer Item ID eine Hintergrundinformation
  #   ~ Zeilenumbrüche müssen explizit durch "\n" gesetzt werden.
  #   ~ Zur Übersicht _kann_ man die Zeilen als verknüpfte (+) Zeichenketten
  #     notieren.
  #--------------------------------------------------------------------------
  def get_description( item_id )
    case item_id
    when 1 # kleiner Heiltrank
      "Einst braute der weise Alchemist Lylu Carion\n" +
      "zufällig ein Gebräu, dessen Wärme und Wohligkeit\n" +
      "direkt auf den Nutzer überging. Das Rezept dazu ist\n" +
      "seit jahrzehnten überliefert."
    when 2 # größerer Heiltrank
      "Für seine Meisterprüfung entwickelt damals Shari\n"+
      "Backerus die Formel von Carion weiter und ver-\n"+
      "stärkte die Wirkung des Trankes noch um ein\n"+
      "Vielfaches."
    when 23 # Türschlüssel
      "Das Schließhandwerk ist die neueste,\n"+
      "technische Erungenschaft."
    else # Wenn für das Item keine Beschreibung hinterlegt ist
      "Zu diesem Item liegt keine besondere\nGeschichte vor."
    end
  end
end
#==============================================================================
# ** Window_ItemDescription
#------------------------------------------------------------------------------
#  This window displays extended item descriptions.
#==============================================================================
class Window_ItemDescription < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 480, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.x = 320 - width / 2
    self.y = 240 - height / 2
    self.z = 1000
    hide
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.visible = true
    contents.clear
    contents.font.color = system_color
    contents.draw_text(4, 0, 120, 32, "Hintergrund")
    contents.font.color = normal_color
    line_numer = 1
    @description.each_line do |line|
      line = line.gsub("\n",'') # remove linebreak character
      contents.draw_text(4, line_numer*32, contents.width-8, 32, line)
      line_numer += 1
    end
  end
  #--------------------------------------------------------------------------
  # * Setup new text and show window on screen
  #--------------------------------------------------------------------------
  def setup( new_description )
    @description = new_description
    refresh
  end
  #--------------------------------------------------------------------------
  # * Hide Window
  #--------------------------------------------------------------------------
  def hide
    self.visible = false
  end
end
#==============================================================================
# ** Scene_Item (Part II)
#==============================================================================
class Scene_Item
  #--------------------------------------------------------------------------
  # * Alias
  #--------------------------------------------------------------------------
  alias_method( :org_main_wo_extdesc, :main )
  alias_method( :org_update_wo_extdesc, :update )
  alias_method( :org_update_item_wo_extdesc, :update_item )
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    @description_window = Window_ItemDescription.new
    org_main_wo_extdesc
    @description_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    @description_window.update
    org_update_wo_extdesc
    update_extended_description if @description_window.visible
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when item window is active)
  #--------------------------------------------------------------------------
  def update_item
    if Input.trigger?(Input::A)
      if @item_window.item.nil?
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @item_window.active = false
      @description_window.setup( get_description(@item_window.item.id) )
      return
    end
    org_update_item_wo_extdesc
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when description window is visible)
  #--------------------------------------------------------------------------
  def update_extended_description
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @item_window.active = true
      @description_window.hide
    end
  end
end
zum Lesen den Text mit der Maus markieren

7

Montag, 4. Januar 2016, 17:43

Irgendwie schockiert mich, wie schnell du ein Skript schreiben kannst, ich meine, ich brauche meistens schon eine halbe Stunde,
um überhaupt zu verstehen, wie ich ein Skript anpassen kann. D:

Aber hey, das Skript ist perfekt und macht genau das, was es können soll. Ich bin beeindruckt.
Vielen Dank dafür.
Ich hab halt nur noch ein Problem: Scheinbar kann ich zu einem Heilkraut mehr...interessante Hintergrundinformationen finden,
als der Platz in der Textbox ausreicht und meine Versuche, das Fenster zu erweitern, indem ich random Werte erhöhe, haben auch nicht funktioniert.
Kannst du mir sagen, wie ich mehr in die Textbox schreiben kann?^^

8

Dienstag, 5. Januar 2016, 00:14

Zitat

Aber hey, das Skript ist perfekt und macht genau das, was es können soll. Ich bin beeindruckt.
Vielen Dank dafür.
Gern geschehen.

Zitat

Kannst du mir sagen, wie ich mehr in die Textbox schreiben kann?

Ruby Quellcode

56
    super(0, 0, 480, 192)
Die Breite (480) und Höhe (192) des Fensters. Du kannst die Höhe ja um 32 erhöhen, für noch eine Zeile. Die Alternative wäre es, dass sich das Fenster auf die benötigte Höhe immer anpasst - ich weiß nicht, was Du schöner findest.

9

Dienstag, 5. Januar 2016, 01:54

Nein, das ist schon in Ordnung so, ich will dir auch nicht zuviel Arbeit machen, haha.
Ich schränke die Texte dann einfach ein bisschen ein.

Nochmals danke für das Skript - es ist genau so geworden, wie ich wollte. :3

Ähnliche Themen

Social Bookmarks