• Anmelden

1

Donnerstag, 11. April 2013, 17:37

Bilder anzeigen ($)

Hallo Leute.

Ich arbeite gerade an einem XP Projekt, dass ich in kürze vorstellen möchte.
Da ich mich mit RGSS nicht auskenne, und glaube (hoffe), dass meine Vorstellung von vielen hier in wenigen Minuten umgesetzt werden kann,
bitte ich euch um Hilfe.

Ich brauche ein Script, welches per scene_reputation.new aufgerufen werden kann und ein Bild mit den Maßen 640x480 einfadet.
Auf diesem Bild wiederum gibt es acht symetrisch angeordnete freie Plätze, auf welchen wiederum Bilder angezeigt werden.
Jeder Platz kann von jeweils 4 verschiedenen Bildern belegt werden, abhängig von einer jeweiligen ingame Variable.

Zur verdeutlichung hier eine Skizze:
Bild



Am besten wäre es, wenn oben als Überschrift, genau mittig, noch ein Text angezeigt werden könnte.


Im Vorraus vielen Dank für alle die helfen!

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Cassim« (18. April 2013, 18:36)


2

Donnerstag, 18. April 2013, 18:36

Also ich sehe, dass es nicht mehr so wie früher ist, dass Leute aus Spaß scripts für andere schreiben...

Würde es jemand gegen Bezahlung machen?

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

3

Donnerstag, 18. April 2013, 23:26

Du scheinst aber auch nur einer zu sein, der nur dann kommt, wenn er was braucht.
Ich werde mich mal dran setzen.

Spoiler: das ist ein 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
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
class Window_Reputation < Window_Base
  GAME_VARIABLE = 0
  WINDOW_TITLE  = "Text"
  BITMAPS = [[RPG::Cache.picture("Bitmap 1-1"),
              RPG::Cache.picture("Bitmap 1-2"),
              RPG::Cache.picture("Bitmap 1-3"),
              RPG::Cache.picture("Bitmap 1-4")],
             [RPG::Cache.picture("Bitmap 2-1"),
              RPG::Cache.picture("Bitmap 2-2"),
              RPG::Cache.picture("Bitmap 2-3"),
              RPG::Cache.picture("Bitmap 2-4")],
             [RPG::Cache.picture("Bitmap 3-1"),
              RPG::Cache.picture("Bitmap 3-2"),
              RPG::Cache.picture("Bitmap 3-3"),
              RPG::Cache.picture("Bitmap 3-4")],
             [RPG::Cache.picture("Bitmap 4-1"),
              RPG::Cache.picture("Bitmap 4-2"),
              RPG::Cache.picture("Bitmap 4-3"),
              RPG::Cache.picture("Bitmap 4-4")],
             [RPG::Cache.picture("Bitmap 5-1"),
              RPG::Cache.picture("Bitmap 5-2"),
              RPG::Cache.picture("Bitmap 5-3"),
              RPG::Cache.picture("Bitmap 5-4")],
             [RPG::Cache.picture("Bitmap 6-1"),
              RPG::Cache.picture("Bitmap 6-2"),
              RPG::Cache.picture("Bitmap 6-3"),
              RPG::Cache.picture("Bitmap 6-4")],
             [RPG::Cache.picture("Bitmap 7-1"),
              RPG::Cache.picture("Bitmap 7-2"),
              RPG::Cache.picture("Bitmap 7-3"),
              RPG::Cache.picture("Bitmap 7-4")],
             [RPG::Cache.picture("Bitmap 8-1"),
              RPG::Cache.picture("Bitmap 8-2"),
              RPG::Cache.picture("Bitmap 8-3"),
              RPG::Cache.picture("Bitmap 8-4")]]
 
  class Window_Title < Window_Base
    def initialize(text)
      super(220, 5, 200, 50)
      self.z = 1000
      self.contents = Bitmap.new(width - 32, height - 32)
      set_text(text)
    end
 
    def set_text(text)
      self.contents.clear()
      self.contents.draw_text(0, 0, self.contents.width, self.contents.height, text, 1)
    end
  end
 
  class Window_Kind < Window_Base
    attr_accessor(:text)
    def initialize(x, y, id)
      @id = id
      super(x, y, 120, 200)
      self.contents = Bitmap.new(width - 32, height - 32)
      @text = "test"
      refresh()
    end
 
    def refresh()
      self.contents.clear()
      bmp   = BITMAPS[@id][$game_variables[GAME_VARIABLE + @id]]
      rect1 = Rect.new(0, 0, self.contents.width, self.contents.height)
      rect2 = Rect.new(0, 0, bmp.width, bmp.height)
      self.contents.stretch_blt(rect1, bmp, rect2)
      self.contents.draw_text(0, 0, self.contents.width, 35, @text, 1)
    end
  end
 
  def initialize()
    super(0, 0, 640, 480)
    @window_title = Window_Title.new(WINDOW_TITLE)
    @window_kinds = [] #Window_Kind.new(30, 45, 0)
    4.times do |i|
      x = 30 + 144 * i
      y = 30
      @window_kinds.push(Window_Kind.new(x, y, i))
      y = 260
      @window_kinds.push(Window_Kind.new(x, y, i * 2))
    end
  end
 
  def update()
  end
end
 
 
class Scene_Reputation
  def main()
    @window_reputation = Window_Reputation.new()
    loop do
      Graphics.update()
      Input.update()
      update()
    end
  end
 
  def update()
    @window_reputation.update()
  end
end
zum Lesen den Text mit der Maus markieren
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Reborn« (18. April 2013, 23:26)


4

Freitag, 19. April 2013, 14:54

Erst mal vielen Dank für deine Hilfe. Ist doch mehr zu schreiben gewesen, als ich dachte...

Ich möchte das Script mit dem "Ring Command Window V1.0" von Fomar0153 nutzen. Vielleicht kennt ihr es.
Jedenfalls habe ich versucht das Script hierfür anzupassen. Erstaunlicher Weise bin ich ziemlich weit gekommen.


Das Fenster öffnet sich sobald ich im Ringmenü auf das entsprechende Symbol klicke. Wenn ich allerdings den
"zurück"-Knopf (in diesem Fall B) betätige bleibt das Fenster für einige Sekunden noch haltbtransparent
bestehen, und geht dann erst weg. Ist bestimmt ne grundsätzliche Kleinigkeit die ich falsch gemacht habe.


Hier das angepasste Script; Ich habe zugefügten Teil blau markiert:


Spoiler
zum Lesen den Text mit der Maus markieren
Spoiler

class Window_Reputation < Window_Base
GAME_VARIABLE = 0
WINDOW_TITLE = "Reputation"
BITMAPS = [[RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Gloria_Fc"),
RPG::Cache.picture("Basil_Fc"),
RPG::Cache.picture("Hilda_Fc")],
[RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Gloria_Fc"),
RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc")],
[RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc")],
[RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc")],
[RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc")],
[RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc")],
[RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc")],
[RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc"),
RPG::Cache.picture("Hilda_Fc")]]

class Window_Title < Window_Base
def initialize(text)
super(220, 5, 200, 50)
self.z = 1000
self.contents = Bitmap.new(width - 32, height - 32)
set_text(text)
end

def set_text(text)
self.contents.clear()
self.contents.draw_text(0, 0, self.contents.width, self.contents.height, text, 1)
end
end

class Window_Kind < Window_Base
attr_accessor(:text)
def initialize(x, y, id)
@id = id
super(x, y, 120, 200)
self.contents = Bitmap.new(width - 32, height - 32)
@text = "test"
refresh()
end

def refresh()
self.contents.clear()
bmp = BITMAPS[@id][$game_variables[GAME_VARIABLE + @id]]
rect1 = Rect.new(0, 0, self.contents.width, self.contents.height)
rect2 = Rect.new(0, 0, bmp.width, bmp.height)
self.contents.stretch_blt(rect1, bmp, rect2)
self.contents.draw_text(0, 0, self.contents.width, 35, @text, 1)
end
end

def initialize()
super(0, 0, 640, 480)
@window_title = Window_Title.new(WINDOW_TITLE)
@window_kinds = [] #Window_Kind.new(30, 45, 0)
4.times do |i|
x = 30 + 144 * i
y = 30
@window_kinds.push(Window_Kind.new(x, y, i))
y = 260
@window_kinds.push(Window_Kind.new(x, y, i * 2))
end
end

def update()


end
end




class Scene_Reputation
def main()


Graphics.transition
@window_reputation = Window_Reputation.new()
loop do
Graphics.update()
Input.update()
update()
if $scene != self
break
end
end
Graphics.freeze


end

def update()
@window_reputation.update()
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to map screen
$scene = $scene = Scene_Menu.new(1)
return
@hero.refresh
@stats.refresh
@gold.update
@steps.update
@time.update
@background.ox += 1 if Graphics.frame_count % 2 == 0
@background.oy += 1 if Graphics.frame_count % 2 == 0
end
end
end
zum Lesen den Text mit der Maus markieren



Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

5

Freitag, 19. April 2013, 15:00

mit dem return verlässt du die Methode, der Rest wird also nicht aufgerufen...
Du musst noch alle bilder disposen, das macht du mit:
@window_title.dispose
@window_kinds.each {|i| i.dispose}
self.dispose # oder nur dispose
theoretisch müsstest du dann noch vor dem Graphics.freeze ein Graphics.update aufrufen
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

6

Freitag, 19. April 2013, 15:21

Also so? Bekomme für jeden einzelnen Befehl die Fehlermeldung "undefined method"

Spoiler

Zitat

class Scene_Reputation
def main()

Graphics.transition
@window_reputation = Window_Reputation.new()
loop do
Graphics.update()
Input.update()
update()
if $scene != self
break
end
end
Graphics.update()
Graphics.freeze

end

def update()
@window_reputation.update()
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to map screen
$scene = $scene = Scene_Menu.new(1)
@window_title.dispose
@window_kinds.each {|i| i.dispose}
self.dispose # oder nur dispose
return
@hero.refresh
@stats.refresh
@gold.update
@steps.update
@time.update
@background.ox += 1 if Graphics.frame_count % 2 == 0
@background.oy += 1 if Graphics.frame_count % 2 == 0
end
end
end
zum Lesen den Text mit der Maus markieren


Mir ist leider auch aufgefallen, dass das erste Paar Bilder immer das gleiche Bild anzeigt. Unabhängig davon
was vorher festgelegt wurde immer das Bild des ersteren. Also ganz links oben und unten, die Beiden.

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

7

Freitag, 19. April 2013, 18:41

oh ja klar, ich habe dir Müll erzählt, self.dispose gehört weg und dafür @window_reputation.dispose
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

8

Freitag, 19. April 2013, 22:15

Sorry, aber jetzt fadet zwar das Window im Hintergrund aus, doch @window_title.dispose und @window_kinds.each {|i| i.dispose}
geben immer noch den Fehler "undefined method".


Irgendne Idee?

Social Bookmarks