Lieber Besucher, herzlich willkommen bei: RPG Studio - Make your World real. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Avery

Dinoritterin mit Herrschaft über die Contests und Ressourcen

  • »Avery« ist der Autor dieses Themas
  • Nachricht senden

1

Donnerstag, 30. Oktober 2014, 23:58

Skript Explorer 1.2

Einst hier als Tool angeboten, ist der Script Explorer leider momentan nicht mehr direkt verfügbar, deswegen hier der Reupload.

Hier der Originalthread .
Und ein Vorschauscreen:
Attachment 22536
»Avery« hat folgende Datei angehängt:

2

Freitag, 31. Oktober 2014, 13:55

Hab das tool noch aus'm Jahr 2005/6. Wollte es auch auch uploaden bist mir ja anscheinend davorgekommen...... :))

Wäre aber nicht schlecht, wenn man eine aktualisierte Version herausgeben könnte mit all den neuen Skrips, die inzwischen erschienen sind.

Avery

Dinoritterin mit Herrschaft über die Contests und Ressourcen

  • »Avery« ist der Autor dieses Themas
  • Nachricht senden

3

Samstag, 1. November 2014, 12:15

Tatsächlich sind wir das am Überlegen, allerdings muss man natürlich auch die Lizenzen der einzelnen Scripter beachten und viele wünschen keine Weiterverbreitung.

4

Dienstag, 4. November 2014, 23:57

Hab mir jetzt nochmal die enthaltenen Skripte angesehen und *in txt guck* würde 8 Skripte komplett ersetzen und mindestens drei Skripte etwas anpassen, bevor ich es für nach dem aktuellen Wissensstand als brauchbare und "schöne" Skripte bezeichnen würde.

Gibt es weitere, die Lust hätten sich mit mir zusammenzusetzen und erstmal den bestehenden Kern aufzuarbeiten? Wenn der Explorer noch benutzt wird, kann ich auch gerne meine CC-Skripte als kompatible Dateien zur Verfügung stellen.

Shabraxxx

Projekt: Ressourcenbereich & Seitenredaktion

Motto: Mein Luftkissenfahrzeug ist voller Aale.

  • Nachricht senden

5

Mittwoch, 5. November 2014, 13:52

Hallo Playm,

zumindest für die Hilfetexte und Testmaps wäre ich dabei - meine Dienste in dieser Richtung sind ja bekannt.
Gruß, Shabz
„Albrecht Dürer, geboren 1471, gestorben 1530.
Der Nürnberger Maler, der ganz Europa faszinierte; mit seinem scharfen Auge, seiner Meisterschaft in Linienführung und Plastizität, sowie seiner Leihwagenfirma.“

6

Mittwoch, 5. November 2014, 22:41

Prima! Viele Skripte im Explorer haben eben das 2005-Problem: Sie wurden geschrieben, bevor man sich mit den Skripten wirklich auseinandergesetzt hatte, es gab noch keine englische Übersetzung des Makers, wodurch Skriptkommentare nur auf japanisch existierten und Ruby war noch nicht so verbreitet.

Nehmen wir mal das Animationsentruckler Skript. Das ist recht groß und lang, und implementiert nochmal einen eigenen Cache, neben RPG::Cache nur für Animationen. Das ist natürlich unnötig kompliziert und unsinnig gedoppelt (aber man wusste es früher halt nicht besser). Simpler wäre folgender Code, der genau das gleiche leistet:
Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
# Autor: Playm
# Keine Nutzung gestattet, keine Verbreitung gestattet
module RPG
  module Cache
    def self.preload_animations
      for i in 1...$data_animations.size
        name = $data_animations[i].animation_name
        hue = $data_animations[i].animation_hue
        animation(name,hue) # preload and cache bitmap
      end
    end
  end
end
zum Lesen den Text mit der Maus markieren


Auch der Random Event Teleport ist in meinen Augen umständlich, ich schlage folgende Lösung vor:
Spoiler

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
# Autor: Playm
# Keine Nutzung gestattet, keine Verbreitung gestattet
class Interpreter
  #--------------------------------------------------------------------------
  # * Teleportiert einen Character auf eine zufällige passierbare Stelle
  #   auf der Map.
  #     id  :  -1  den Spieler bewegen
  #             0  dieses Event bewegen
  #             n  das Event mit der ID  n  bewegen
  #   Wird nach 1000 Versuchen immernoch kein Zielort gefunden, wird im
  #   Testmodus stattdessen eine Meldung ausgegeben.
  #--------------------------------------------------------------------------
  def random_teleport( id )
    char = get_character( id )
    return unless char
    for i in 0..1000
      dx = rand($game_map.width)
      dy = rand($game_map.height)
      if char.passable?( dx, dy, 0 )
        char.moveto( dx, dy )
        return [dx, dy]
      end
    end
    print( "Kein Zielpunkt für Random Teleport gefunden!" ) if $DEBUG
    return true
  end
end
zum Lesen den Text mit der Maus markieren


:navigation-right: Aber aktuell sind das noch Skripte in der Entwicklung, bitte verbreitet diese noch nicht, oder verwendet diese auch nicht in euren Projekten.


Findet sich auch noch jemand der im Skripten erfahren ist, als Unterstützung?

7

Donnerstag, 6. November 2014, 13:43

Ich habe auch noch so einige Skripte in meinem Ordner. Von Menüs bis Kampfsysteme ist alles dabei.
Wäre bereit vieles online zu laden.

8

Donnerstag, 6. November 2014, 16:28

Cool, so ne große Sammlung dazu ist ja toll. :)
Unter welcher Lizenz stehen die Skripte denn, bzw. welche Bedingungen hat der Autor zur Verwendung, Weitergabe und Bearbeitung gestellt? Oder sind die Skripte von dir?

9

Sonntag, 9. November 2014, 01:44

Sitze gerade daran, das Ringmenü neu zu schreiben. Das war ja schrecklich unschön umgesetzt.


Ich schreibe das Command, da es weder einen Cursor noch einen Fensterrahmen hat, als Sprite Subklasse. Der Sprite ist auch schon fertig und produktiv einsetzbar, es fehlt aber noch das angepasste Menü.
Spoiler: Ring Command

Zu Demonstrationszwecken. Keine Weiterverbreitung gestattet. Keine Nutzung gestattet.

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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
#==============================================================================
# ** Ring Command
#------------------------------------------------------------------------------
#  Stellt eine ringförmige Auswahl zur Verfügung, die von außen wie ein
#  Window_Command genutzt werden kann.
#  Bei der Initialisierung muss ein Array von RingMenu_Command Objekten
#  übergeben werden. Das könnte zum Beispiel für die Scene_Menu so aussehen:
#  
#      commands = [ RingMenu_Command.new("Item"  , "032-Item01"  , :item),
#                   RingMenu_Command.new("Skill" , "044-Skill01" , :skill),
#                   RingMenu_Command.new("Equip" , "010-Head01"  , :equip),
#                   RingMenu_Command.new("Status", "001-Weapon01", :status),
#                   RingMenu_Command.new("Save"  , "002-Weapon02", :save),
#                   RingMenu_Command.new("End"   , "003-Weapon03", :leave)
#                 ]
#      @command_window = Sprite_RingMenu.new( nil, 80, commands )
#      @command_window.x = 80
#      @command_window.y = 96
#      @command_window.index = @menu_index
#  
#  
#------------------------------------------------------------------------------
#  Autor : Playm
#  
#  Maker : RPG Maker XP
#  Datum : November 2014
#==============================================================================
# ** RingMenu_Command
#------------------------------------------------------------------------------
#      name    :  Name of Menuitem (displayed under the center of the ring)
#      icon    :  Iconname displayed on the ring.
#      command :  Optional. ID Symbol, is returned by Sprite_RingMenu#command
#                 and can be used instead of Sprite_RingMenu#index
#==============================================================================
RingMenu_Command = Struct.new( :name, :icon, :command )
#==============================================================================
# ** Sprite_RingMenu
#==============================================================================
class Sprite_RingMenu < Sprite
  #--------------------------------------------------------------------------
  # * Consants
  #--------------------------------------------------------------------------
  MOVING_FRAMES = 10  # Amount of Frames used to switch selected item
  #--------------------------------------------------------------------------
  # * Object Initialisation
  #     vp       : Viewport used for this Sprite
  #     radius   : Ringradius
  #     commands : RingMenu_Command Array
  #--------------------------------------------------------------------------
  def initialize( vp, radius, commands )
    super( vp )
    @radius   = radius
    @commands = commands
    @item_max = commands.size
    @active   = true
    setup_variables
    setup_bitmap
    refresh
  end
  #--------------------------------------------------------------------------
  # * Calculate Bitmapsize by Diameter and Icon size
  #   Change Starting Point to bitmap center (use this later for item pos)
  #--------------------------------------------------------------------------
  def setup_bitmap
    self.bitmap = Bitmap.new( 24 + @radius * 2, 24 + @radius * 2 )
    self.ox = self.bitmap.width / 2
    self.oy = self.bitmap.height / 2
  end
  #--------------------------------------------------------------------------
  # * Setup Variablevalues, based on radius and commands
  #--------------------------------------------------------------------------
  def setup_variables
    # Instanzvariablen mit Startwerten belegen
    @disabled = Array.new(@item_max){ false }
    @index = 0
    @phase = :initialize
    @steps = MOVING_FRAMES
    # Den Vollkreis in @item_max Winkelstücke einteilen (im Bogenmaß)
    @angle_segment = 2.0 * Math::PI / @item_max
    # Den Winkel nochmal unterteilen für die Bewegung zwischen zwei Winkeln
    @angle_segment_part = @angle_segment / MOVING_FRAMES
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    if @steps < 1
      @phase = :idle
    else
      @steps -= 1
    end
    refresh
    update_input if idle? and active
  end
  #--------------------------------------------------------------------------
  # * Is last Movement complete?
  #--------------------------------------------------------------------------
  def idle?
    @phase == :idle
  end
  #--------------------------------------------------------------------------
  # * Is Ringmenu initializing Itemposition on screen?
  #--------------------------------------------------------------------------
  def initializing?
    @phase == :initialize
  end
  #--------------------------------------------------------------------------
  # * Is Ring rotating to the right at this moment?
  #--------------------------------------------------------------------------
  def rotating_right?
    @phase == :rotating_right
  end
  #--------------------------------------------------------------------------
  # * Frame Update: Check Input
  #--------------------------------------------------------------------------
  def update_input
    if Input.repeat?( Input::LEFT ) or Input.repeat?( Input::UP )
      @steps = MOVING_FRAMES
      @index = (@index + 1) % @item_max
      @phase = :rotating_left
      $game_system.se_play($data_system.cursor_se)
    elsif Input.repeat?( Input::RIGHT ) or Input.repeat?( Input::DOWN )
      @steps = MOVING_FRAMES
      @index = @index - 1
      @index = @item_max - 1 if @index < 0
      @phase = :rotating_right
      $game_system.se_play($data_system.cursor_se)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw all Items on Ring
  #--------------------------------------------------------------------------
  def refresh
    self.bitmap.clear
    # Radius. Zu Anfang den Radius langsam zur vollen Größe ausdehnen
    radius  = @radius
    radius -= 1.0 * @radius * @steps / MOVING_FRAMES if initializing?
    # Zeichne alle Icons auf den Kreisbogen (wähle Vielfache von angle_segment)
    for i in 0...@item_max
      j = i - @index
      angle  = @angle_segment * j
      angle += @angle_segment_part * @steps * (rotating_right? ? -1 : 1)
      x = self.ox + ( radius * Math.sin( angle ) ).to_i - 12
      y = self.oy + ( radius * Math.cos( angle ) ).to_i - 12
      draw_item( i, x, y)
    end
    text_rect = Rect.new( 0, self.oy, self.bitmap.width, 32)
    self.bitmap.draw_text( text_rect, @commands[@index].name, 1)
  end
  #--------------------------------------------------------------------------
  # * Draw Item at Index i at Point x|y
  #--------------------------------------------------------------------------
  def draw_item( i, x, y )
    command = @commands[i]
    opacity = (i == @index) ? 255 : 128
    src_bmp = RPG::Cache.icon(command.icon)
    rect    = Rect.new( 0, 0, 24, 24)
    self.bitmap.blt( x, y, src_bmp, rect, opacity )
    draw_disabled_overlay( x, y, opacity ) if @disabled[i]
  end
  #--------------------------------------------------------------------------
  # * Draw Overlay for disabled Items
  #--------------------------------------------------------------------------
  def draw_disabled_overlay( x, y, opacity )
    self.bitmap.draw_text( x, y, 24, 24, "X", 1 )
  end
  #--------------------------------------------------------------------------
  # * Disable Item visually
  #   index_or_command : Index of Item or
  #                      Command Symbol used for Item
  #--------------------------------------------------------------------------
  def disable_item( index_or_command )
    case index_or_command
    when Symbol
      cmd = @commands.select{ |item| item.command == index_or_command }.first
      @disabled[ @commands.index(cmd) ] = true
    when Numeric
      @disabled[index_or_command] = true
    end
  end
  #--------------------------------------------------------------------------
  # * Dispose Sprite
  #--------------------------------------------------------------------------
  def dispose
    self.bitmap.dispose
    super
  end
  #--------------------------------------------------------------------------
  # * Get selected Command Symbol
  #--------------------------------------------------------------------------
  def command
    @commands.at(@index).command
  end
  #--------------------------------------------------------------------------
  # * Attr
  #--------------------------------------------------------------------------
  attr_accessor( :index, :active )
end
zum Lesen den Text mit der Maus markieren

Daran, das angepasste Menü zu schreiben, mach ich mich dann als nächstes - theoretisch kann man dieses Command aber in jeder Scene nutzen. Wer es mal ausprobieren möchte, einfach als neues Skript über Main einfügen und dazu dann noch dieses Skript hier, um es im Menü zu benutzen:
Spoiler: Scene_Menu Edit

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
#==============================================================================
# ** Scene_Menu
#==============================================================================
class Scene_Menu
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Make command window
    commands = [ RingMenu_Command.new("Item"  , "032-Item01"  , :item),
                 RingMenu_Command.new("Skill" , "044-Skill01" , :skill),
                 RingMenu_Command.new("Equip" , "010-Head01"  , :equip),
                 RingMenu_Command.new("Status", "001-Weapon01", :status),
                 RingMenu_Command.new("Save"  , "002-Weapon02", :save),
                 RingMenu_Command.new("End"   , "003-Weapon03", :leave)
               ]
    @command_window = Sprite_RingMenu.new( nil, 80, commands )
    @command_window.x = 80
    @command_window.y = 96
    @command_window.index = @menu_index
    # If number of party members is 0
    if $game_party.actors.size == 0
      # Disable items, skills, equipment, and status
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # If save is forbidden
    if $game_system.save_disabled
      # Disable save
      @command_window.disable_item(4)
    end
    # Make play time window
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 224
    # Make steps window
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
    # Make gold window
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    # Make status window
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @command_window.dispose
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
  end
end
zum Lesen den Text mit der Maus markieren


Für das Locationwindow habe ich mir überlegt eine etwas andere Lösung anzustreben, als es bisherige Skripte tun. Der Name der Map ist eigentlich nur für den Editor relevant und wird deswegen nicht in der jeweiligen Map.rxdata gespeichert, sondern in der MapInfos.rxdata, die den Maptree enthält, also die kleine Baumdarstellung eurer vorhandenen Maps, die ihr im Editor unten links seht.
Die Lösung die ich so kenne ist, diese Datei zu laden und einen Hash mit 'MapID -> MapName' Paaren global zu speichern. Bei einem Projekt mit sagen wir 200 Maps, dümpeln dann aber 200 Mapnamen im Speicher rum, wovon man 199 aktuell garnicht braucht. Weil ich das unschön finde, wird bei jedem Setup (also zum Beispiel Spielstart oder Teleport auf eine neue Map, kurz nachgeguckt wie die aktuelle Map heißt und diese Info dann gespeichert.

Spoiler: Game_Map#map_name

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
#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  Beim Setup wird auch der Name der Map gespeichert und kann über
#      $game_map.map_name
#  abgefragt werden.
#------------------------------------------------------------------------------
#  Autor: Playm
#  
#  Maker: RPG Maker XP
#  Datum: November 2014
#==============================================================================
 
class Game_Map
  #--------------------------------------------------------------------------
  # * Alias
  #--------------------------------------------------------------------------
  alias_method(:org_setup_wo_mapname, :setup) unless $!
  #--------------------------------------------------------------------------
  # * Setup
  #--------------------------------------------------------------------------
  def setup(*args)
    org_setup_wo_mapname(*args)
    @map_name = load_data("Data/MapInfos.rxdata")[@map_id].name
  end
  #--------------------------------------------------------------------------
  # * Get Maps Name as used in Editor
  #--------------------------------------------------------------------------
  def map_name
    @map_name
  end
end
zum Lesen den Text mit der Maus markieren


Ich schau dann mal demnächst das komplette Ringmenü umzusetzen. Ist ja jetzt nichtmehr viel Arbeit. (Wer gerade Zeit und Lust hat, kann das auch selber tun und hier posten. ;))

:navigation-right: Aber aktuell ist das noch Skripte in der Entwicklung, bitte verbreitet dieses noch nicht, oder verwendet dieses auch nicht in euren Projekten.

Würde mich über Tipps, Anmerkungen oder eigene Arbeiten für den SkriptExplorer freuen. :thumbsup:

10

Sonntag, 9. November 2014, 23:54

Hallo Playm, ich könnte hier ein paar Edits vorstellen, die ich an den Standardskripten gemacht habe, falls da Interesse bestehen sollte. Leider wärs das auch fast schon, aber vielleicht kann man dir mit graphischen Ressourcen bei irgendwelchen Skripten helfen, zum Beispiel einem Ingame-Charaktereditor (Viel Arbeit, aber vielleicht besteht da ja Interesse), oder kann man dir sonst noch irgendwie helfen?
Bild

11

Sonntag, 9. November 2014, 23:59

@Lycaon: Klar, zeig gerne mal was Du da so hast. :)

Graphische Ressourcen ist eine gute Idee, habe da garnicht so drüber nachgedacht, aber da kann man sicher auch nochmal einiges tun. Ein Ingame-Charaktereditor ist von der Technik her schnell gemacht, ich glaube das schwierigste wären hier die Ressourcen, die auf die jeweilige Characterbase abgestimmt seien müssten, aber wenn Du an sowas Spaß hast, können wir uns da gerne zusammensetzen.

Neben den Skripten müssen ja auch die Demoprojekte (wenn gebraucht) und Skriptbeschreibungen überarbeitet werden. Da kann man auch viel helfen, dafür hatte sich ja schon Shab angeboten, aber ist bestimmt genug Arbeit für Drei da.

Ganz allgemein @ Alle: Gibt es sonst noch Wünsche und Anmerkungen zu den Skripten? Wenn ich die Skripte eh gerade korrigiere oder neuschreibe, dann kann ich auch noch ein paar Extrawürste auf den Grill packen. Gerade das Ringmenü gefällt mir in seiner Gestalltung nicht so, wie geht es euch da? In welchen Scenes wollt ihr das eigentlich alles drin haben, dann liefer ich da direkt die Skripte zu mit.

Ansonsten habe ich da nicht viel weiter gemacht, habe noch das Locationwindow neu gemacht, mit Icon statt generischem Text, aber überlege jetzt wie wohl die Menübedienung am angenhmsten wäre.

Spoiler
Zu Demonstrationszwecken. Keine Weiterverbreitung gestattet. Keine Nutzung gestattet.

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
#==============================================================================
# ** Window_Location
#------------------------------------------------------------------------------
#  Zeigt die aktuelle Postion des Helden in der Spielwelt an, indem neben
#  einem passenden Icon (standardmäßig die Karte aus dem RTP) der Mapname
#  (so wie $game_map.map_name ihn zurückliefert) angezeigt wird.
#==============================================================================
class Window_Location < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialisation
  #--------------------------------------------------------------------------
  def initialize( x=0, y=0 )
    super( x, y, 160, 64)
    self.contents = Bitmap.new( width-32, height-32)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh Content bitmap
  #--------------------------------------------------------------------------
  def refresh
    icon = RPG::Cache.icon('038-Item07')
    self.contents.blt( 4, 4, icon, Rect.new( 0, 0, 24, 24) )
    self.contents.draw_text( 32, 0, 96, 32, $game_map.map_name, 2)
  end
end
zum Lesen den Text mit der Maus markieren

12

Samstag, 15. November 2014, 16:44

Ich habe auf meinem alten PC alle möglichen Skripte, Resourcen gespeichert. Ich bin aber bisschen faul meinen alten PC anzuschließen.

Hier ist ein altes Questlog Skript von Caesar für den RPG XP
Eine detaillierte Anleitung hat der Autor selbst dazu als PDF verfasst. Einfach lesen.

Credits gehen an Ceasar. Er hat es seinerseits selbst auf der alten RPG xp Seite hochgeladen.
Als Anhang:

Edit: Hier ist noch ein Trainactor von fukuyama.
Credits an fukuyama.
»Colchianrebell1995« hat folgende Dateien angehängt:
  • questlog_demo.rar (1,41 MB - 39 mal heruntergeladen - zuletzt: 22. April 2018, 10:31)
  • trainactor.rar (182,2 kB - 36 mal heruntergeladen - zuletzt: 22. April 2018, 10:31)

13

Samstag, 15. November 2014, 20:54

Hi Colchianrebell :) das Questlog ist bereits im Datenkern des SkriptExplorers enthalten.

Ceasars Skript hat aber das selbe 2005er Problem, wie viele andere Skripte aus dem Skript Explorer: Es ist mit wenig expertise geschrieben und damit sowohl technisch unschön, als auch umständlich in der Umsetzung sowie Anwendung und teils fehlerhaft. Das steht bereits bei mir auf der ToDo Liste, das neu zu machen. Wer da bestimmte Wünsche und (eigennützige) Vorschläge für die neue Umsetzung des Questlog hat, oder bereits ein eigenes Skript geschrieben hat, das er hier beisteuern möchte, nur zu! :thumbsup:

Das Ringmenü selbst ist inzwischen technisch fertig, es fehlt nurnoch die Platzierung der Windows in der Scene - ich finde das Vorschau-Statusfenster (Window_MenuStauts) bisher nicht so schön, dass dieses nur sichtbar wird wenn man auf Skills, Equip oder Status geht - da überlege ich noch.

14

Montag, 17. November 2014, 16:12

Gut in diesem Zusammenhang möchte ich dich auf einen Bug hinweisen beim Questlog von Ceaser, da du ja scheinbar an einer Verbesserung arbeitest :))

Wenn man in einer Quest ein Icon einfügt ist alles wie gewollt. Wenn man aber noch einmal eine Quest mit einem Icon startet mit einem Skript call dann kann man nurnoch das Icon des zweitens Questes sehen. Die Icons der vorherigen Quests werden nicht mehr angezeigt.

Questlog.add("<icon=1>Raus Hier", "Verlasse diesen Ort!<br><image=11><down=8><space=20><br><style=system>Ort: </style> Berlin<br><style=system>Belohnung: </style> ???")


Wenn ich jetzt noch einen quest adden würde, dass würde wie z.B.

Questlog.add("<icon=1>Raus Hier verdammt", "Verlasse diesen Ort aber ganz Schnell!<br><image=12><down=8><space=20><br><style=system>Ort: </style> Berlin<br><style=system>Belohnung: </style> ???")


dann wird das Icon der ersten quest nicht mehr angezeigt sondern überschrieben sozusagen.

Edit: Hier ist noch ein Cloud Altitude Skript von Heretic. Credits gehen an Heretics, den Autor.
Dieser Skript lässt fogs realistisch aussehen. Sieht einfach hammer aus.


Hier sind nochmal gute Seiten mit vielen nützlichen Skripts:
RMXP Script
RMXP Script Database

Atelier RGSS - Rpg Maker XP
»Colchianrebell1995« hat folgende Datei angehängt:

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Colchianrebell1995« (17. November 2014, 19:50)


15

Montag, 17. November 2014, 23:44

Danke für die Fehlermeldung, Colchianrebell. Gerade getestet und das Zeichnen im Auswahlfenster links scheint allgemein nicht so ganz ausgereift zu sein.

Das was Caesar als "HTML-Rendering-Engine" bezeichnet, und eigentlich mit HTML nur die spitzen Klammern gemeinsam hat ist auch wirklich nicht gut. Hätte jemand etwas dagegen wenn ich das komplett rauswerfe und einfach die Textformatierung des ShowText Befehls etwas erweitert übernehme? Würde dann "\V" "\C" und "\N" übernehmen und zusätzlich "[icon_name]" für Icons und soetwas wie "\picture[name|ausrichtung]" für Bilder und "\t" für Tabulatorschritte einfügen. Aber das was Caesar sich da überlegt hat ist zum einen Syntaktisch nicht sauber zum anderen echt nicht gut umgesetzt.

Das Cloud Altitude Skript schau ich mir die Tage mal an.


Wer noch eine gute Idee zum Layout des Ringmenüs hat, nur her damit.

Zitat von »Playm«

Das Ringmenü selbst ist inzwischen technisch fertig, es fehlt nurnoch die Platzierung der Windows in der Scene - ich finde das Vorschau-Statusfenster (Window_MenuStauts) bisher nicht so schön, dass dieses nur sichtbar wird wenn man auf Skills, Equip oder Status geht - da überlege ich noch.

16

Dienstag, 25. November 2014, 02:07

Hmm , wie sehen die Fenster bzw. das Ringmenü insgesamt denn bisher aus? Wenn du ein paar Screens zur Verfügung stellst, würde ich mich gerne ästhetisch daran auslassen.

Anderes Thema: Das nächste Update in meinem Thread wird wohl ein Bastelset für RTP-Chars, bei dem ich nun wirklich überlege, ob man es nicht kombiniert mit einem Ingame-Charsetgenerator herausgeben sollte.
Bild

17

Dienstag, 25. November 2014, 02:31

Habe dir mal einen Screen angehangen. Im Original ist das Ringmenü um den Helden zentriert, allerdings wird das Statusfenster dann nur eingeblendet, wenn man für Skill, Equip, Status einen Helden wählen, muss - was mir nicht gefällt, da man dann nicht auf einen Blick sieht, wie es der Gruppe HP-technisch und EXP mäßig geht.

Ich habe derweil für das Questlog eine neue Routine für formatierten Text entworfen, der sich wie ewähnt eher an ShowText orientiert:
Spoiler
Zu Demonstrationszwecken. Keine Weiterverbreitung gestattet. Keine Nutzung gestattet.

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
#==============================================================================
# ** In Fenstern formatierten Text zeichnen
#------------------------------------------------------------------------------
#  Mit diesem Skript könnt ihr formatierten Text zeichen, analog zum ShowText
#  Befehl in Events, allerdings für alle Windows.
#  Benutzt dafür die Methode Window_Base#draw_text_formated
#  Informationen zur Textformatierung findet ihr weiter unten bei der Methoden-
#  definition.
#  
#  Dieses Skript ist eine Entwicklerhilfe, ändert also selber nichts an den
#  Standardskripten oder wird von selbst aktiv.
#------------------------------------------------------------------------------
#  Autor : Playm
#  
#  Maker : RPG Maker XP
#  Datum : November 2014
#==============================================================================
# ** Window_Base
#==============================================================================
class Window_Base
  #--------------------------------------------------------------------------
  # * Alias
  #--------------------------------------------------------------------------
  alias_method( :org_ini_wo_tab, :initialize )
  #--------------------------------------------------------------------------
  # * Initialize @tab_length
  #--------------------------------------------------------------------------
  def initialize(*args)
    org_ini_wo_tab(*args)
    @tab_length = 32
  end
  #--------------------------------------------------------------------------
  # * Draw Text on Content Bitmap. Same as Bitmap#draw_text
  #--------------------------------------------------------------------------
  def draw_text(*args)
    contents.draw_text(*args)
  end
  #--------------------------------------------------------------------------
  # * Draw text formated
  #   
  #   dx           : draw spot x-coordinate
  #   dy           : draw spot y-coordinate
  #   line_height  : line height
  #   string       : text string with escapecodes
  #   
  #   Escapecodes
  #     \V[n]      : Replaces the value in variable #n.
  #     \N[n]      : Replaces actor #n's name.
  #     \C[n]      : Display the folowing characters in color #n.
  #     \t         : Tabulator. Steplength 32px.
  #     \n         : Linebreak.
  #     \I[string] : Draw Icon with Name string.
  #--------------------------------------------------------------------------
  def draw_text_formated( dx, dy, line_height, string )
    # Setup
    str = str.to_s.clone
    head = Point_2D.new( dx, dy )
    # Replace Escapecodes
    str.gsub!(/\\/)             { "\e" }
    str.gsub!(/\e\e/)           { "\\" }
    begin
      str.gsub!(/\eV\[(\d+)\]/i){ $game_variables[$1.to_i] }
    end while $1
    str.gsub!(/\eN\[(\d+)\]/i)  { (a = $game_actors[$1.to_i]) ? a.name : "" }
    # Process Characters and draw text
    while ((c = str.slice!(/./m)) != nil)
      if c == "\e"
        c = str.slice!(/./m)
        case c.upcase
        when 'C'
          color_code = (str.slice!(/^\[\d+\]/)[/\d+/].to_i rescue 0)
          contents.font.color = text_color(color_code) if color_code >= 0
          next
        when 'N'
          head.x = dx
          head.y = head.y + line_height
          next
        when 'T'
          head.x = (head.x / @tab_length + 1) * @tab_length
          next
        when 'I'
          str.sub!(/\[([^\]]+)\]/, "")
          icon_name = $1
          icon = RPG::Cache.icon(icon_name)
          contents.blt( head[0] + 4, 4, icon, Rect.new(0,0,24,24) )
          head.x += 32
          next
        end
      end
      draw_text( head.x, head.y, 32, line_height, c )
      head.x += contents.text_size(c).width
    end
  end
end
#==============================================================================
# ** Point_2D
#==============================================================================
Point_2D = Struct.new( :x, :y )
zum Lesen den Text mit der Maus markieren

Wer das mal ausprobieren will, mit dieser kann zusätzlich noch dieses Skript einfügen:

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
#==============================================================================
# ** Window_Help
#==============================================================================
class Window_Help
  #--------------------------------------------------------------------------
  # * Set Text
  #  text  : text string displayed in window
  #  align : alignment (0..flush left, 1..center, 2..flush right)
  #--------------------------------------------------------------------------
  def set_text(text, align = 0)
    # If at least one part of text and alignment differ from last time
    if text != @text or align != @align
      # Redraw text
      self.contents.clear
      self.contents.font.color = normal_color
      if align != 0
        self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
      else
        draw_text_formated(4, 0, 32, text)
      end
      @text = text
      @align = align
      @actor = nil
    end
    self.visible = true
  end
end
Und dann mal die Escapecodes in den Itembeschreibungen verwenden.

Wünsche, Tipps, Anmerkungen - wie immer gerne gesehen. Finde es eigentlich schade, das zwar viele mitlesen, aber wenige ihre Ideen niederschreiben. Nur Mut! ^_^

Aktuell arbeite ich parallel an Ringmenü und Questlog - mal hier mal da ein bisschen so zwischendurch. Wegen dem Ingame-Charsetgenerator Lycaon, wie genau sollte sowas denn aussehen? Hat da jemand Ideen?
»Playm« hat folgende Bilder angehängt:
  • ringmenu.png
  • Ringmenü.jpg

18

Freitag, 28. November 2014, 22:10

Hmm, wenn man beim Ringmenü mehr als den Ring anzeigen will, kommt wohl nicht um die Maßnahme drum rum, den Ring unabhängig von der Spielerposition zu platzieren. Wenn aber die Screen-Mitte wählt, sollte sich der Spieler wenigstens in den meisten Fällen, insbesondere auf großen Maps, im Ringzentrum befinden. Ich würde sowas vorschlagen:

Bild

Charsetgenerator: Hier wäre es vielleicht am leichtesten, wenn man die Parameter für den Sprite in Kommentarform in das Event schreiben könnte (z.B. fat, old, male, rich).
Bild

19

Freitag, 28. November 2014, 22:47

Ringmenu


Finde deinen Vorschlag optisch jetzt nicht soo klasse. Kannst es ja selber mal ausprobieren, hier das Setup dafür:
Edit Zu Demonstrationszwecken. Keine Weiterverbreitung gestattet. Keine Nutzung gestattet.
Spoiler: Part 1

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
#==============================================================================
# ** Scene_Menu
#==============================================================================
class Scene_Menu
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Setup Map Spriteset for Background
    spriteset = Spriteset_Map.new
    # Make command window
    commands = [ RingMenu_Command.new("Item"  , "032-Item01"  , :item),
                 RingMenu_Command.new("Skill" , "044-Skill01" , :skill),
                 RingMenu_Command.new("Equip" , "010-Head01"  , :equip),
                 RingMenu_Command.new("Status", "001-Weapon01", :status),
                 RingMenu_Command.new("Save"  , "002-Weapon02", :save),
                 RingMenu_Command.new("End"   , "003-Weapon03", :leave)
               ]
    @command_window = Sprite_RingMenu.new( nil, 60, commands, 1 )
    @command_window.x = 320
    @command_window.y = 240
    @command_window.index = @menu_index
    # If number of party members is 0
    if $game_party.actors.size == 0
      # Disable items, skills, equipment, and status
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # If save is forbidden
    if $game_system.save_disabled
      # Disable save
      @command_window.disable_item(4)
    end
    # Make play time window
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 160
    @playtime_window.back_opacity = 128
    # Make steps window
    @steps_window = Window_Steps.new
    @steps_window.x = 320
    @steps_window.back_opacity = 128
    # Make gold window
    @gold_window = Window_Gold.new
    @gold_window.x = 480
    @gold_window.back_opacity = 128
    # Make status window
    @status_window = Window_MenuStatus.new
    @status_window.back_opacity = 128
    # Make location window
    @location = Window_Location.new
    @location.back_opacity = 128
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @command_window.dispose
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
    spriteset.dispose
 
    @location.dispose
  end
end
zum Lesen den Text mit der Maus markieren

Spoiler: Part 2

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
#==============================================================================
# ** Window_MenuStatus
#==============================================================================
class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 320, 640, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    @column_max = @item_max
    for i in 0...$game_party.actors.size
      x = 4 + i * 160
      y = 0
      actor = $game_party.actors[i]
      draw_actor_graphic(actor, x + 112, y + 64)
      draw_actor_name(actor, x, y)
      draw_actor_state(actor, x, y + 32)
      draw_actor_hp(actor, x, y + 64)
      draw_actor_sp(actor, x, y + 96)
    end
  end
  #--------------------------------------------------------------------------
  # * Cursor Rectangle Update
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(@index * 160, 0, 160, 128)
    end
  end
end
zum Lesen den Text mit der Maus markieren

Spoiler: Part 3

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
#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  Beim Setup wird auch der Name der Map gespeichert und kann über
#      $game_map.map_name
#  abgefragt werden.
#------------------------------------------------------------------------------
#  Autor: Playm
#  
#  Maker: RPG Maker XP
#  Datum: November 2014
#==============================================================================
 
class Game_Map
  #--------------------------------------------------------------------------
  # * Alias
  #--------------------------------------------------------------------------
  alias_method(:org_setup_wo_mapname, :setup) unless $!
  #--------------------------------------------------------------------------
  # * Setup
  #--------------------------------------------------------------------------
  def setup(*args)
    org_setup_wo_mapname(*args)
    @map_name = load_data("Data/MapInfos.rxdata")[@map_id].name
  end
  #--------------------------------------------------------------------------
  # * Get Maps Name as used in Editor
  #--------------------------------------------------------------------------
  def map_name
    @map_name
  end
end
zum Lesen den Text mit der Maus markieren

Spoiler: Part 4

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
#==============================================================================
# ** Window_Location
#------------------------------------------------------------------------------
#  Zeigt die aktuelle Postion des Helden in der Spielwelt an, indem neben
#  einem passenden Icon (standardmäßig die Karte aus dem RTP) der Mapname
#  (so wie $game_map.map_name ihn zurückliefert) angezeigt wird.
#==============================================================================
class Window_Location < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialisation
  #--------------------------------------------------------------------------
  def initialize( x=0, y=0 )
    super( x, y, 160, 64)
    self.contents = Bitmap.new( width-32, height-32)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh Content bitmap
  #--------------------------------------------------------------------------
  def refresh
    icon = RPG::Cache.icon('038-Item07')
    self.contents.blt( 4, 4, icon, Rect.new( 0, 0, 24, 24) )
    self.contents.draw_text( 32, 0, 96, 32, $game_map.map_name, 2)
  end
end
zum Lesen den Text mit der Maus markieren

Einfach jeweils als neue Skriptseiten über Main einfügen. (Sollte klappen, es seiden ich habe vergessen eine Klasse hier einzufügen - aber bei mir läuft es : D)

Questlog


Habe übrigens das System für den Questlog, das Caesars "Sowas ähnliches wie HTML1"-Engine ersetzen soll, fertig gestellt:
Spoiler
Zu Demonstrationszwecken. Keine Weiterverbreitung gestattet. Keine Nutzung gestattet.

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
146
147
148
149
#==============================================================================
# ** In Fenstern formatierten Text zeichnen
#------------------------------------------------------------------------------
#  Mit diesem Skript könnt ihr formatierten Text zeichen, analog zum ShowText
#  Befehl in Events, allerdings für alle Windows.
#  Benutzt dafür die Methode Window_Base#draw_text_formated
#  Informationen zur Textformatierung findet ihr weiter unten bei der Methoden-
#  definition.
#  
#  Dieses Skript ist eine Entwicklerhilfe, ändert also selber nichts an den
#  Standardskripten oder wird von selbst aktiv.
#------------------------------------------------------------------------------
#  Autor : Playm
#  
#  Maker : RPG Maker XP
#  Datum : November 2014
#==============================================================================
# ** Window_Base
#==============================================================================
class Window_Base
  #--------------------------------------------------------------------------
  # * Alias
  #--------------------------------------------------------------------------
  alias_method( :org_ini_wo_tab, :initialize )
  #--------------------------------------------------------------------------
  # * Initialize @tab_length
  #--------------------------------------------------------------------------
  def initialize(*args)
    org_ini_wo_tab(*args)
    @tab_length = 32
  end
  #--------------------------------------------------------------------------
  # * Draw Text on Content Bitmap. Same as Bitmap#draw_text
  #--------------------------------------------------------------------------
  def draw_text(*args)
    contents.draw_text(*args)
  end
  #--------------------------------------------------------------------------
  # * Draw text formated
  #   
  #   dx           : draw spot x-coordinate
  #   dy           : draw spot y-coordinate
  #   line_height  : line height
  #   string       : text string with escapecodes
  #   align        : :left, :center or :right aligned at dx (optional)
  #   
  #   Escapecodes
  #     \V[n]      : Replaces the value in variable #n.
  #     \N[n]      : Replaces actor #n's name.
  #     \C[n]      : Display the folowing characters in color #n.
  #     \t         : Tabulator. Steplength 32px.
  #     \n         : Linebreak.
  #     \I[string] : Draw Icon with Name string.
  #--------------------------------------------------------------------------
  def draw_text_formated( dx, dy, line_height, string, align = :left )
    # Setup
    str = _parse_escape_codes( string )
    line_widths = _calculate_line_widths( dx, str )
    line_index = 0
    case align
      when :left then   starting_x = dx
      when :right then  starting_x = dx - line_widths[line_index]
      when :center then starting_x = dx - line_widths[line_index] / 2
    end
    head = Point_2D.new( starting_x, dy )
    # Process Characters and draw text
    while ((c = str.slice!(/./m)) != nil)
      if c == "\e"
        c = str.slice!(/./m)
        case c.upcase
        when 'C'
          color_code = (str.slice!(/^\[\d+\]/)[/\d+/].to_i rescue 0)
          contents.font.color = text_color(color_code) if color_code >= 0
          next
        when 'N'
          line_index += 1
          case align
            when :left then   head.x = dx
            when :right then  head.x = dx - line_widths[line_index]
            when :center then head.x = dx - line_widths[line_index] / 2
          end  
          head.y = head.y + line_height
          next
        when 'T'
          head.x = (head.x / @tab_length + 1) * @tab_length
          next
        when 'I'
          str.sub!(/\[([^\]]+)\]/, "")
          icon_name = $1
          icon = RPG::Cache.icon(icon_name)
          contents.blt( head[0] + 4, 4, icon, Rect.new(0,0,24,24) )
          head.x += 32
          next
        end
      end
      draw_text( head.x, head.y, 32, line_height, c )
      head.x += contents.text_size(c).width
    end
  end
  #--------------------------------------------------------------------------
  # * Parse Escape Codes
  #--------------------------------------------------------------------------
  def _parse_escape_codes( string )
    str = string.to_s.clone
    str.gsub!(/\\/)             { "\e" }
    str.gsub!(/\e\e/)           { "\\" }
    begin
      str.gsub!(/\eV\[(\d+)\]/i){ $game_variables[$1.to_i] }
    end while $1
    str.gsub!(/\eN\[(\d+)\]/i)  { (a = $game_actors[$1.to_i]) ? a.name : "" }
    str
  end
  #--------------------------------------------------------------------------
  # * Calculated Linewidths
  #--------------------------------------------------------------------------
  def _calculate_line_widths( dx, string )
    string = string.gsub(/\eC\[\d+\]/i, '')
    string_line_width = []
    string_lines = string.split(/\eN/i)
    string_lines.each_with_index do |line, line_index|
      string_line_width[line_index] = 0
      i = 0
      string_x = dx
      while( i < line.size ) do
        if line[i,1] == "\e"
          i += 1
          case line[i,1].upcase
          when 'I'
            i += 1 while line[i-1,1] != ']'
            string_line_width[line_index] += 32
          when 'T'
            i += 1
            tab_index = (dx + string_line_width[line_index]) / @tab_length + 1
            #print line[i,1], "\n", tab_index, "\n", string_line_width[line_index]
            string_line_width[line_index] = tab_index * @tab_length - dx
          end
          next
        end
        string_line_width[line_index] += contents.text_size(line[i,1]).width
        i += 1
      end
    end
    string_line_width
  end
end
#==============================================================================
# ** Point_2D
#==============================================================================
Point_2D = Struct.new( :x, :y )

zum Lesen den Text mit der Maus markieren

Muss nurnoch den Code etwas aufräumen und gegebenfalls vereinfachen. Wer dazu Tipps oder Anmerkungen hat, immer gerne. Ausprobieren könnt ihr es, indem ihr in einem Fenster statt self.contents.draw_text mal draw_text_formated aufruft. Parameter stehen im Quellcode erklärt, das sind nicht exakt die selben wie in der RGSS Methode.

Avery

Dinoritterin mit Herrschaft über die Contests und Ressourcen

  • »Avery« ist der Autor dieses Themas
  • Nachricht senden

20

Freitag, 28. November 2014, 23:48

Playm, ich finde die linke Variante da irgendwie viel zu überladen.
Die alte "spartanische" fand ich da ansprechender, mir haben die nicht eingebelendeten Chars auch gar nicht gefehlt. Die hatte man ja über den Statusaufruf sofort zu Hand und dafür eine aufgeräumtere und ausgewogenere Auswahl.

Ähnliche Themen

Social Bookmarks