• Anmelden

1

Mittwoch, 8. März 2006, 13:09

Hallo Leutz!

Ich bin ein alter RM2k Hase, aber mit den Scripts noch nie klar gekommen.

HILFE!

Ich arbeite gerade an meinem neuen Projekt, einem Adventure alter "Point&Click" Schule.
Steuerung wird natürlich per Richtungstasten funkzn., aber es wird ein tolles Auswahlmenü geben, mit dem ihr untersuchen, sprechen und benutzen könnt.
ouhh....ich komme von Thema ab, ...

...also:

Ich habe mir ein tolles RingMenü (glaube von MakirouAru) in mein Script Editor reingepffifen.
Auswahlmöglichkeiten:
-Item
-skill
-equipt
-status
-save
-exit

Und ich habe ein supertolles Questlog-Script von Caesar.

Meine Bitte:

Da es ja ein Adventure sein soll, brauche ich die Status-Auswahlmöglichkeit nicht!
Statdessen bräuchte ich eine Verknüpfung (an Stelle von Status) mit dem Questlog.

Wenn mir nur jemand helfen könnte!
Ich bedanke mich schon mal jetzt für eure Hilfe!

2

Mittwoch, 8. März 2006, 13:15

Nun, poste oder sende mir das Skript deines Ringemenüs, (Ringe-)menüs sind meine Speziallität.
Dann Brauche ich noch den Class Name deines Questlogs, oder sende mir das einfach auch.
[ALIGN="center"] Bild [/align]

3

Mittwoch, 8. März 2006, 14:00

@Status_One

Schau dir das mal an, könnte für Point & Click hilfreich sein:

Analog Movement mit Maus-Unterstützung
Rabu

4

Mittwoch, 8. März 2006, 15:54

Zitat von »"Lelli"«

Dann Brauche ich noch den Class Name deines Questlogs

Wozu das denn? Der bringt dir nix^^

Zitat von »"Lelli"«

oder sende mir das einfach auch.

das schon eher^^
Questlog

@Status_One: Ich hab das Questlog-Script ein klein wenig geändert und im Ringmenü-Script die Status Option mit dem Questlog ersetzt.

Hier das modifizierte Ringmenü:
(s.u.)




Hier das etwas geänderte Questlog-Script:

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
 #//////////////////////////////////////////////Questlog///////////////////////////////////////////////
#~~~~~~~~~~~~~~~~~~~~by Caesar~~~~~~~~~~~~~~~~~~~~
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#_________________________________________________
 
class Scene_Questlog
  def main
    @window_titles = Window_Questlog_Titles.new
    @window_questlog_title = Window_Questlog_Title.new
    @window_description = (
        $game_system.questlog.count > 0 ? Window_Questlog_Description.new(
        $game_system.questlog.quests[0].description,
        $game_system.questlog.quests[0].picture) :
        Window_Questlog_Description.new("", ""))
    @spriteset = Spriteset_Map.new
    @index = @window_titles.index
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @window_titles.dispose
    @window_questlog_title.dispose
    @window_description.dispose
    @spriteset.dispose
  end
  #--------------------------------------------------------------------------
  def update
    @window_titles.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new
      return
    end
    if @index != @window_titles.index
      @index = @window_titles.index
      @window_description.description = $game_system.questlog.quests[@window_titles.index].description
      @window_description.picture = $game_system.questlog.quests[@window_titles.index].picture
      @window_description.refresh
    end
  end
end
#=============
class Quest
  attr_reader :title
  attr_reader :description
  attr_reader :icon
  attr_reader :picture
  def initialize(title, description, icon="", picture="")
    @title = title
    @description = description
    @icon = icon
    @picture = picture
  end
end
#============
class Questlog
  attr_reader  :quests
  def initialize
    @quests = []
  end
  #-----------
  def add(quest)
    @quests.push(quest)
  end
  #-----------
  def remove(title)
    @quests.delete_if{ |quest| quest.title == title}
  end
  #-----------
  def count
    return @quests.length
  end
end
#=============
class Window_Questlog_Description < Window_Base
  attr_accessor :description
  attr_accessor :picture
  def initialize(description, picture)
    super(275, 92, 300, 360)
    self.contents = Bitmap.new(width-32, height-32)
    self.contents.font.name = ($defaultfonttype != nil ? $defaultfonttype : $fontface)
    self.contents.font.size =( $defaultfontsize != nil ? $defaultfontsize : $fontsize)
    @description = description
    @picture = picture
    refresh
  end
  #-----------
  def refresh
    self.contents.clear
    lines = @description.split(/\n/)
    if (@picture != nil) && (not @picture == "")
      bitmap = RPG::Cache.picture(@picture)
      rect =  bitmap.rect
      self.contents.blt(width/2-rect.width/2-16, 0, bitmap, rect, 255)
      for i in 0...lines.length
        self.contents.draw_text(4, i*32+rect.height, 270, 32, lines[i])
      end
    else
      for i in 0...lines.length
        self.contents.draw_text(4, i*32, 270, 32, lines[i])
      end
    end
  end
end
#=============
class Window_Questlog_Titles < Window_Selectable
  def initialize
    super(65, 92, 210, 360)
    self.contents = Bitmap.new(width-32, height-32)
    self.contents.font.name = ($defaultfonttype != nil ? $defaultfonttype : $fontface)
    self.contents.font.size = ( $defaultfontsize != nil ? $defaultfontsize : $fontsize)
    self.index = 0
    @item_max = $game_system.questlog.count
    @column_max = 1
    refresh
  end
  #-------------
  def refresh
    self.contents.clear
    for i in 0...$game_system.questlog.count
      quest = $game_system.questlog.quests[i]
      y = i*32
      if (quest.icon != nil) && (not quest.icon == "")
        bitmap = RPG::Cache.icon(quest.icon)
        self.contents.blt(4, y+4, bitmap, Rect.new(0, 0, 24, 24), 255)
        self.contents.draw_text(29, y, 150, 32, quest.title)
      else
        self.contents.draw_text(4, y, 150, 32, quest.title)
      end
    end
  end
end
#===========
class Window_Questlog_Title < Window_Base
  def initialize
    super(65, 28, 510, 64)
    self.contents = Bitmap.new(width-32, height-32)
    self.contents.font.name = ($defaultfonttype != nil ? $defaultfonttype : $fontface)
    self.contents.font.size = 26
    refresh
  end
  #------------
  def refresh
    self.contents.clear
    self.contents.draw_text(self.contents.rect, "Questlog", 1)
  end
end
#===========
class Game_System
  attr_reader  :questlog
  alias init initialize
  def initialize
    init
    @questlog = Questlog.new
  end
end






Zitat

Ihre Nachricht ist zu lang. Bitte reduzieren sie diese auf 10000 Zeichen. Momentan ist sie 20560 Zeichen.

:( Was soll das denn?? Hab keine Lust, jetzt alle Kommentare aus dem Ringmenü-Script zu entfernen... Ich entschuldige mich im Voraus für den gleich folgenden Doppelpost.


EDIT: Waren immer noch 5000 Zeichen zu viel, also als Textdatei.

[COLOR="blue"]Edit von Lelli:
-.-; Toll. Wozu habe ich mir jetzt die Mühe gemacht?
*Fluch*[/COLOR]

[color="red"]Edit von Caesar:
Tschuldigung, nächstes Mal lass ich dich ;-)[/color]
Spoiler: Das neue RGSS Preisrätsel
Wie lassen sich die Werte zweier Integervariablen vertauschen? Machen Sie mit und gewinnen Sie Ruhm und Ehre! ?"Caesar"? Die kürzeste Lösung gewinnt. Gibt es mehrere richtige Einsendungen, wird ein zufälliger Gewinner aus diesen gezogen.
zum Lesen den Text mit der Maus markieren
Spoiler: Auflösung der letzten Runde
Die Aufgabe der letzten Runde lautete:

Zitat

Schreiben Sie einen Parser für die ASCII-Form des Dateiformats PBM (Portable Bitmap). Die Methode soll als Parameter einen Dateinamen erhalten und eine Bitmap zurückgeben. 0 ist weiß, 1 ist schwarz. Eine Beispieldatei, die den Buchstaben 'A' darstellti:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
P1
9 9
000010000
000010000
000101000
000101000
001000100
001111100
001000100
010000010
111000111
Es hat keiner teilgenommen, daher gibt es keinen Gewinner ^^ Eine mögliche Lösung wäre gewesen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def parse_pbm(filename)
  f = File.open(filename)
  return nil unless f.readline.chomp == "P1"
  width, height = f.readline.split(' ').collect {|i| i.to_i}
  bitmap = Bitmap.new(width, height)
  c0 = Color.new(255, 255, 255)
  c1 = Color.new(0, 0, 0)
  for iy in 0...height
    f.readline.chomp.split('').each_with_index do |v, k|
      bitmap.set_pixel(k, iy, v == '0' ? c0 : c1)
    end
  end
  return bitmap
end
zum Lesen den Text mit der Maus markieren
Spoiler: Schon gewusst?
...wie man zum Testen schnell einzelne Scripts "ausbaut", ohne das Script aus dem Scripeditor zu löschen? Ganz einfach: Man fügt im Scripteditor ganz oben im Script die folgende Zeile ein:

Quellcode

1
if false
und ganz unten als letzte Zeile:

Quellcode

1
end
Das hat den gleichen Effekt, wie wenn man das ganze Script aus dem Scripteditor gelöscht hätte.
zum Lesen den Text mit der Maus markieren

5

Mittwoch, 8. März 2006, 16:54

:ulgy08:

@Caesar
Wo bist du Caesar?
Hast du meine PN nicht erhalten?

Ich brauche dringend Hilfe, sonst geht so viel Arbeit flöten...

6

Mittwoch, 8. März 2006, 17:23

Bin doch da.
Hab deine PM erhalten und sag's noch mal für alle: Die Änderungen in Scene_Map (siehe hier) sind nur nötig, wenn man das Script von der Map aus mit F5 aufrufen können soll. Da ich allerdings diese Funktion rausgenommen habe, um es ins Ringmenü zu integrieren, führen die Änderungen in Scene_Map zu einem Fehler à la "no method or variable: $game_temp.questlog_calling". Also das ganz normale Scene_Map-Script benutzen!
Spoiler: Das neue RGSS Preisrätsel
Wie lassen sich die Werte zweier Integervariablen vertauschen? Machen Sie mit und gewinnen Sie Ruhm und Ehre! ?"Caesar"? Die kürzeste Lösung gewinnt. Gibt es mehrere richtige Einsendungen, wird ein zufälliger Gewinner aus diesen gezogen.
zum Lesen den Text mit der Maus markieren
Spoiler: Auflösung der letzten Runde
Die Aufgabe der letzten Runde lautete:

Zitat

Schreiben Sie einen Parser für die ASCII-Form des Dateiformats PBM (Portable Bitmap). Die Methode soll als Parameter einen Dateinamen erhalten und eine Bitmap zurückgeben. 0 ist weiß, 1 ist schwarz. Eine Beispieldatei, die den Buchstaben 'A' darstellti:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
P1
9 9
000010000
000010000
000101000
000101000
001000100
001111100
001000100
010000010
111000111
Es hat keiner teilgenommen, daher gibt es keinen Gewinner ^^ Eine mögliche Lösung wäre gewesen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def parse_pbm(filename)
  f = File.open(filename)
  return nil unless f.readline.chomp == "P1"
  width, height = f.readline.split(' ').collect {|i| i.to_i}
  bitmap = Bitmap.new(width, height)
  c0 = Color.new(255, 255, 255)
  c1 = Color.new(0, 0, 0)
  for iy in 0...height
    f.readline.chomp.split('').each_with_index do |v, k|
      bitmap.set_pixel(k, iy, v == '0' ? c0 : c1)
    end
  end
  return bitmap
end
zum Lesen den Text mit der Maus markieren
Spoiler: Schon gewusst?
...wie man zum Testen schnell einzelne Scripts "ausbaut", ohne das Script aus dem Scripeditor zu löschen? Ganz einfach: Man fügt im Scripteditor ganz oben im Script die folgende Zeile ein:

Quellcode

1
if false
und ganz unten als letzte Zeile:

Quellcode

1
end
Das hat den gleichen Effekt, wie wenn man das ganze Script aus dem Scripteditor gelöscht hätte.
zum Lesen den Text mit der Maus markieren

7

Freitag, 10. März 2006, 21:35

:danke: Ein großes Dankeschön!

Ich möchte mich für eure Hilfsbereitschaft bedanken.
Dank eurer Hilfe geht mein Adventure wie Butter auf Brot voran.

Classic Point&Click Adventures

Ich möchte gerne die tolle Adventurezeit wieder etwas zurück bringen.
Diese Spiele waren ein genialer Fortschritt und der Beginn heutiger Games.
Auch wenn die 2D Point&Click Games für manche veraltet scheinen mögen, sind sie wiederum für die Fans des Genre
das beste was es gibt.
Und es gibt immer noch eine Menge FANS da draußen.

:guckst: Was haltet Ihr von Adventures mit dem RMXP?
[COLOR="limegreen"]Tut mir leid, diese Frage gehört ja garnicht hierher! Ich mache Diesen Thread wo anders auf.[/COLOR]
(Wenn ich das nicht darf, oder es schon so ein Thema irgendwo anders gibt, dann bitte closen.)

Social Bookmarks