PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variable auf Schirm anzeigen



Rusk
29.04.2009, 15:11
Hallo Com!
Ich hätte da wieder ein Problem, wo ich eure Hilfe benötige.
Ich möchte rechts oben auf dem Bildschirm den Inhalt einer Variable anzeigen.
Und das die ganze Zeit.Da würde sich ein Common Event anbieten mit einem Parallel Process.
Nachricht würde so lauten: \v[ID der Variable] (Den Advanced Message Script habe ich schon).
Sowas wird bei HUD gerne benutzt.
Ich hatte mal ein Script dafür, habs aber schon gelöscht gehabt.
Nur wie geht das? (Es soll nur ein kleines Fenster sein)
Ich weiß, dass ich manchmal so viel schreibe, aber ich wollte es ausführlich machen.
Kann mir jemand helfen.
MfG Deamonic

Shining Advances
29.04.2009, 16:00
ich hab mal schnell was probiert, hoffe es ist so wie du es dir vorgestellt hast (is im mom noch auf der linken seite)


über main einfügen.

class Scene_Map
alias variable_main main
alias variable_update update
def main
@variable = Window_Variable.new(1)
variable_main
@variable.dispose
end
def update
@variable.update
variable_update
end
end

class Window_Variable < Window_Base
def initialize(id)
@id = id
super(0,0,200,64)
self.contents = Bitmap.new(width-32,height-32)
refresh
end

def refresh
self.contents.clear
self.contents.draw_text(0,0,self.contents.width,32,$game_variables[@id].to_s,0)
@old_value = $game_variables[@id]
end

def update
super
refresh if @old_value != $game_variables[@id]
end
end

zeile 18

super(0,0,200,64)
ersten beiden zahlen = x und y koordinate
3 und 4 zahl = breite und höhe des fensters

zeile 5

@variable = Window_Variable.new(1)
die zahl ganz hinten ist die variablen id

falls du die ausrichtung innerhalb der textbox ändern willst:
zeile 25

self.contents.draw_text(0,0,self.contents.width,32,$game_variables[@id].to_s,0)
die 0 am ende durch 1 oder 2 ersetzen.
0 -> linksbündig
1 -> mittig
2 -> rechtsbündig

falls es probs oder so gibt bitte melden :)

Rusk
30.04.2009, 14:00
Danke, vielen Dank! http://www.multimediaxis.de/images/smilies/old/sm_12.gif
Es funzt und funzt!
Kannst du das Script sogar erweitern?
Ich hätte nämlich gerne ein Icon als Bild auch dabei.
z.B.: für eine Goldanzeige, ein Münzsymbol.
MfG Deamonic

PS: Credtiseintrag ist gesichert.

Shining Advances
30.04.2009, 14:34
kein prob
zeile 23 def refresh bis zum nächsten end damit ersetzen:

def refresh
self.contents.clear
icon = RPG::Cache.icon("032-Item01")
rect = Rect.new(0,0,24,24)
self.contents.blt(0,0,icon,rect)
self.contents.draw_text(30,0,self.contents.width-30,32,$game_variables[@id].to_s,0)
@old_value = $game_variables[@id]
end

anstelle von 032-Item01 kannst du den namen des icons angeben, dass du verwenden möchtest.

Rusk
30.04.2009, 14:51
Hmm, mir ist aufgefallen, dass ich das Script nicht gleich am Anfang des Spiels brauche.
Kann man das Script erst später aktivieren, wie bei einem Call-Script?

Shining Advances
30.04.2009, 15:07
wähle:
1. wenn du über call script das fenster regeln möchtest
2. wenn du einfach nur einen switch an oder aus schalten willst und damit das fenster zeigst oder versteckst.
1)
du fügst unter Scene_Map

attr_reader :variable
ein.

dann kannst du bei call script über

$scene.variable.visible = true/false
das fenster ein und ausschalten. (true = an, false = aus)


2)

ersetze das script durch das folgende. es ist eigtl das selbe nur halt mit der switch unterstützung.
(in zeile 5 gibt die erste zahl die id der variable und die 2. die id des switches an)

class Scene_Map
alias variable_main main
alias variable_update update
def main
@variable = Window_Variable.new(1,1)
variable_main
@variable.dispose
end
def update
@variable.update
variable_update
end
end

class Window_Variable < Window_Base
def initialize(id,switch)
@id = id
@switch = switch
super(0,0,200,64)
self.contents = Bitmap.new(width-32,height-32)
self.visible = $game_switches[@switch]
refresh
end

def refresh
self.contents.clear
icon = RPG::Cache.icon("032-Item01")
rect = Rect.new(0,0,24,24)
self.contents.blt(0,0,icon,rect)
self.contents.draw_text(30,0,self.contents.width-30,32,$game_variables[@id].to_s,0)
@old_value = $game_variables[@id]
end

def update
super
self.visible = $game_switches[@switch]
refresh if @old_value != $game_variables[@id]
end
end

Rusk
30.04.2009, 15:18
Mann du bist echt gut! :A
Es funktioniert schon wieder!
Habs mit der switch-Variante gemacht, weil die leichter zu verstehen ist.
Hab die erste ger nicht durchgelesen. ^^
Ich glaube das wars, mehr gibts nicht zu fragen.
Ich danke dir, dass du mir geholfen hast.
Das einzige, was ich dir bieten kann, ist ein Creditseintrag.
(falls du es möchtest)
MfG Deamonic

Chaoscrasher
19.10.2009, 12:57
Ich bräuchte dieses Skript auch dringend; nur müsste es bei mir 2 Variabeln anzeigen (eine rechts und eine links beispielsweise) und zusätzlich noch einen text vor dem Wert azeigen; kriegst du das hin? oO
Ich wäre dir sehr dankbar ( =

Shining Advances
19.10.2009, 15:00
class Scene_Map
alias variable_main main
alias variable_update update
def main
@variable = [
Window_Variable.new(0,0,200,64,1,1,"HP:"),
Window_Variable.new(440,0,200,64,2,1,"MP:"),
Window_Variable.new(0,400,200,64,3,1,"EXP:")
]
variable_main
@variable.each{|var| var.dispose}
end
def update
@variable.each{|var| var.update}
variable_update
end
end

class Window_Variable < Window_Base
def initialize(x,y,w,h,id,switch,text="")
@text = text
@id = id
@switch = switch
super(x,y,w,h)
self.contents = Bitmap.new(width-32,height-32)
self.visible = $game_switches[@switch]
refresh
end

def refresh
self.contents.clear
self.contents.draw_text(0,0,self.contents.width-30,32,@text+$game_variables[@id].to_s,0)
@old_value = $game_variables[@id]
end

def update
super
self.visible = $game_switches[@switch]
refresh if @old_value != $game_variables[@id]
end
end


@variable = [
Window_Variable.new(0,0,200,64,1,1,"HP:"),
Window_Variable.new(440,0,200,64,2,1,"MP:"),
Window_Variable.new(0,400,200,64,3,1,"EXP:")
]
diese stelle gibt die anzahl und eigenschaften der fenster an.
in diesem beispiel sind es 3 fenster, wenn es mehr oder weniger sein sollen einfach eine zeile löschen oder ein Window_Variable.new(x,y,b,h,vid,sid,text) anfügen.
in den klammern stehen die eigenschaften des fensters.
x = x koordinate
y = y koordinate
b = breite
h = höhe
vid = ID der Variable, die ausgelesen wird
sid = switch ID (ist der switch an, werden die fenster angezeigt)
text = text der vor der variable angezeigt wird (bitte an "" denken, siehe Bsp)

Chaoscrasher
19.10.2009, 16:47
Viielen Dank http://www.multimediaxis.de/images/smilies/old/sm_12.gif

Du verstehst wirklich dein Handwerk; deine Skripts funktionieren ohne Probleme und gleich beim ersten Mal. Ich kann nur sagen: du hast Talent :P
Am besten solltest du dieses Skript mal im Forum präsentieren bzw. fragen ob dus Hochladen kannst, denn dieses Skript können sicher viele gebrauchen :D
Weiter so und nochmal vielen Dank! http://www.multimediaxis.de/images/smilies/old/sm_12.gif
(Ein Creditseintrag ist dir bei meinem SKS auf jeden Fall sicher)