PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche Script um Variablen auf Bildschirm auszugeben



chrisbyRRC
12.09.2010, 17:14
Hallihallo! Ich suche schon mehere Tage verzweifelt nach diesen Script.
Doch da ich den Namen nichtmehr weiss ist es ziemlich schwer es zu finden.

Ich konnte damit bestimmte Zeichen oder auch Variabeln direkt an bistimmten Koordinaten des Bildschirms anzeigen lassen. Das bräuchte ich wieder um mein selbst gemachtes HUD mit Variabel-Werten zu füllen.:)

Wär nett wenn ihr mir helfen könntet!

-KD-
12.09.2010, 17:40
Tutorial zum Erstellen von Variablenanzeigen (http://www.rpg-studio.de/scientia/Ruby/RGSS/Tutorials/Rubykurs/3-_-RGSS/3#Erstellen_eines_Variablenfensters)

chrisbyRRC
12.09.2010, 18:01
Jo Danke dafür, aber das hilfft mir sogut wie garnicht weiter, weil ich kein Ruby kann und auch nich vorhabe zu lernen. Ich brauch einfach sonn fertiges Script wo ich mit nem anschließenden Call-Script den Wert, unszwar ausschließlich den
der Variable ohne Fenster anzeigen kann.

Das ganze wird ja in nem extra Fenster ausgegeben und ist somit unbrauchbar für mein vorhaben.

Es gab aber dieses Script schon fertig, extra für solche Sachen.
Wenn ich es nur finden würde.:confused:

LordAntrax
12.09.2010, 18:19
man könnte z.B die Suchfunktion benützen

http://www.multimediaxis.de/showthread.php?t=118635

chrisbyRRC
12.09.2010, 18:41
Hah du bist ja witzig aber lesen kannst du auch nich, oder?:D
Ich brauch keine Message-Box, weil ich ein eigenes HUD erstellt hab wo nur die Zahl kommen soll und keine MessageBox mit der Variablen.

Hmm wo ist nur dieses blöde Script hin...

makenshi
12.09.2010, 18:51
Hah du bist ja witzig aber lesen kannst du auch nich, oder?:D
Ich brauch keine Message-Box, weil ich ein eigenes HUD erstellt hab wo nur die Zahl kommen soll und keine MessageBox mit der Variablen.

Hmm wo ist nur dieses blöde Script hin...

Kommst du dir wenigstens ansatzweise blöd vor, wenn man dir sagt das du den Code insofern modifizieren kannst das nur die Zahlenanzeige übrig bleibt?
Kostenlos Hilfe wollen und dann auch noch die Helfer blöd anmachen. Du hast es raus Bursche.

chrisbyRRC
12.09.2010, 18:58
Meine Güte kein Grund gleich so patzig zu werden, ich sagte doch bereits das ich kein Plan von Ruby hab und das umschreiben eines fertigen Script ist dann jawohl total unzumutbar!

Wie wärs wenn du mir sagen würdest wie ich den Code umschreibe?
Woher soll ich wissen ob es schwer oder einfach ist den Code für meine Bedürfnisse anzupassen?
Echt nicht nett von dir, außerdem war es eher lustig gemeint als das ich hier irgendjemanden beschimpfen würde.

Ich bin für jede Hilfe dankbar!http://www.multimediaxis.de/images/smilies/old/sm_12.gif

Cornix
13.09.2010, 13:20
Was genau soll dieser Script leisten und was willst du selbst konfigurieren können?
Ich könnte dir vielleicht helfen, es ist nicht besonders schwer ein derartiges Script zu schreiben. Ich würde dir dennoch raten dich nicht gegen Ruby zu blockieren, gerade wenn du mit dem RPG-Maker XP arbeitest.
Meiner Meinung nämlich sind die einzigen Vorteile welche der RMXP im Gegensatz zu all seinen Nachteilen gegenüber den Vorgängern bietet zum einen die bessere Grafik und zum anderen die Möglichkeit über Ruby scripts ein zu binden.

chrisbyRRC
13.09.2010, 15:16
@Cornix
Ja da magst du Recht haben. Habe gestern schonma bischen Quellcode angeschaut, aber ziemlich kompliziert ist es trotzdem für mich.
Wenn du mir helfen könntest wär das echt supa!:)

Also im Script selber müsste ich irgendwie die x und y coordinaten angeben können, wo der text auf dem Screen landet. Dann wäre cool wenn der Text der Ausgegeben werden soll aus einer Variabel gelesen wird.
Ich möchte nämlich den Geld-Wert den der Spieler hat anzeigen lassen.
Der Geldwert ist aber unterschiedlich dem vordefinierten, also er liegt einfach in
einer Variabel.

Ganz wichtig ist halt das wirklich nur der Inhalt der Variabel auf dem Bildschirm
landet, nicht etwa eine blaue MessageBox drum herum oder irgendwas anderes wo die Zahl drinn angezeigt wird. Also sowas NICHT.

Kannst du mir sagen wie ich das hinbekomme, oder gar mir die
Script-Befehle geben?;)

Cornix
13.09.2010, 18:24
Das ist garkein Problem, sollen die x und y Parameter auf die Mitte des Textes oder auf die linke obere Ecke verweisen?

Soll das Font mit welchem der Text geschrieben wird variable für jeden Text individuell wählbar sein?

Sollen andere Funktionen wie zum Beispiel:
Farbwechsel, Zeigen / Verstecken, Fading und ähnliches vorhanden sein?

Edit:

Soweit ist es fertig, schau ob dies das ist was du haben möchtest und sag bescheid falls noch etwas ergänzt werden sollte oder falls du etwas erklärt haben möchtest.
Der Script ist im Moment extra etwas minimalistisch gehalten, er kann beliebig erweitert werden.

Dies ist die einzige Klasse welche benötigt wird. Einfach über dem Script "Main" einfügen:

class Floating_Text < Sprite

################################################
# Setting for the Floating Texts font #
#(This font will be used by all floating texts)#
################################################
Floating_Texts_Font = Font.new
Floating_Texts_Font.name = "Sylfaen"
Floating_Texts_Font.size = 18
Floating_Texts_Font.bold = false
Floating_Texts_Font.italic = false
Floating_Texts_Font.color = Color.new(255,255,255,255)

#######################################################
# Initialization #
#(Creates a new floating text at the desired position)#
#######################################################
def initialize(x = 0, y = 0)
super()
self.x = x
self.y = y
self.bitmap = Bitmap.new(1,1)
self.bitmap.font = Floating_Texts_Font
return true
end
###########################################################
# Set Text to String #
#(Use this function to show a string in the floating text)#
###########################################################
def text_string(text = "")
text_size = self.bitmap.text_size(text)
self.bitmap.dispose
self.bitmap = Bitmap.new(text_size.width, text_size.height)
self.bitmap.draw_text(text_size,text.to_s)
self.src_rect = text_size
return true
end
#####################################################
# Set Text to Game Variable #
#(Use this function to show a game variable as text)#
#####################################################
def text_var(var_id = 0)
text = $game_variables[var_id].to_s
text_size = self.bitmap.text_size(text)
self.bitmap.dispose
self.bitmap = Bitmap.new(text_size.width, text_size.height)
self.bitmap.draw_text(text_size,text.to_s)
self.src_rect = text_size
return true
end
#################################################
# Remove #
#(Use this function to remove the floating text)#
#################################################
def dispose
self.bitmap.dispose
super
return true
end
end
Und wenn du einen Text über ein Event erstellen möchtest benutzt du folgende Zeilen in einem custom script:

@t = Floating_Text.new(420, 240)
@t.text_string("Hallo Welt")
@b = Floating_Text.new(220, 240)
@b.text_var(3)Dies würde 2 Texte erstellen, der Erste würde "Hallo Welt" an der Position 420 / 240 anzeigen, der Zweite würde den Inhalt der Game_Variable mit der Nummer 3 an der Position 220 / 240 anzeigen.

chrisbyRRC
13.09.2010, 20:09
Wow!!! Du bist echt der Hammer!!! Das ding is ja noch besser als das was ich früher hatte!!:D:D:D
Ich danke dir echt vielmals für diese harte Arbeit die du da reingesteckt hast.http://www.multimediaxis.de/images/smilies/old/sm_12.gifhttp://www.multimediaxis.de/images/smilies/old/sm_12.gifhttp://www.multimediaxis.de/images/smilies/old/sm_12.gifhttp://www.multimediaxis.de/images/smilies/old/sm_12.gif
Den Credits-Eintrag haste aber sowas von sicher!;)

Jetzt hätte ich da aber noch zwei Fragen:
- Gibt es auch eine Möglichkeit die Zeichen vor einem Bild anzuzeigen? Da ich ein Picture anzeigen lasse als HUD wär es cool wenn die Zahl auf diesen Pic stehen würde und nicht hinter dem Pic verschwindet. Haste da noch ne Idee?

-Und hast du irgendwas mit eingebaut das wenn ich ESC drücke der Text verschwindet? Wenn nicht muss es an nem andern Script liegen dass das passiert. Jedenfalls wärs besser wenn nach ESC der Text trotzdem noch steht.

EDIT: -Achja, wie lautet der Aufruf um die Schriftfarbe anzupassen? Oder soll ich die direkt im Script ändern? Wenn ich die Zeile aus dem Script: "Floating_Texts_Font.color = Color.new(255,255,255,255)" in "Floating_Texts_Font.color = Color.new(255,225,0,0)" ändere, verändert sich i-wie nix. Hmm... Hätte die Schrift gerne schön Rot, aber ich bin total happy das es so mit den Anzeigen erstmal funzt! :D

Aber bitte überarbeite dich nicht...:D Lass dir ruhig Zeit:) Und nochmals vielen Dank für dieses tolle Script!

Cornix
13.09.2010, 21:02
Wow!!! Du bist echt der Hammer!!! Das ding is ja noch besser als das was ich früher hatte!!:D:D:D
Ich danke dir echt vielmals für diese harte Arbeit die du da reingesteckt hast.http://www.multimediaxis.de/images/smilies/old/sm_12.gifhttp://www.multimediaxis.de/images/smilies/old/sm_12.gifhttp://www.multimediaxis.de/images/smilies/old/sm_12.gifhttp://www.multimediaxis.de/images/smilies/old/sm_12.gif
Den Credits-Eintrag haste aber sowas von sicher!;)
Das war keine harte Arbeit, mit Ruby ist soetwas absolut kein Problem. Deshalb verstehe ich auch nicht warum so viele Nutzer innerhalb dieser Community solch eine abgeneigte Einstellung gegenüber dem Scripten zu haben.


Jetzt hätte ich da aber noch zwei Fragen:
- Gibt es auch eine Möglichkeit die Zeichen vor einem Bild anzuzeigen? Da ich ein Picture anzeigen lasse als HUD wär es cool wenn die Zahl auf diesen Pic stehen würde und nicht hinter dem Pic verschwindet. Haste da noch ne Idee?
Standardmäßig sollte der Text welcher auf diese Weise angezeigt wird immer vor allen Bildern stehen welche von dem RPG-Maker erstellt werden da er keinen Viewport gesetzt hat. Allerdings, falls es dennoch nicht funktioniert müsste wohl einfach nur die Z-Koordinate höher gesetzt werden.


-Und hast du irgendwas mit eingebaut das wenn ich ESC drücke der Text verschwindet? Wenn nicht muss es an nem andern Script liegen dass das passiert. Jedenfalls wärs besser wenn nach ESC der Text trotzdem noch steht.
Du meinst, dass der Text verschwindet wenn du das Menü öffnest.
Das liegt daran da das Menü eine andere Szene ist und damit alle Events und dessen private Variablen gelöscht werden. Der Text wurde privat in einem Event gespeichert falls du die Methode verwendet hattest welche ich dir gegeben habe.
Du könntest natürlich den Text als globale Variable speichern allerdings würde er dann versteckt werden müssen wenn das Menü geöffnet wird oder ähnliches.
Natürlich könntest du den Text auch einfach neu erstellen lassen wann immer die Scene_Map initiiert wird.


EDIT: -Achja, wie lautet der Aufruf um die Schriftfarbe anzupassen? Oder soll ich die direkt im Script ändern? Wenn ich die Zeile aus dem Script: "Floating_Texts_Font.color = Color.new(255,255,255,255)" in "Floating_Texts_Font.color = Color.new(255,225,0,0)" ändere, verändert sich i-wie nix. Hmm... Hätte die Schrift gerne schön Rot, aber ich bin total happy das es so mit den Anzeigen erstmal funzt! :D
Ein kleiner Fehler meinerseits, entschuldige, ist behoben.


Aber bitte überarbeite dich nicht...:D Lass dir ruhig Zeit:) Und nochmals vielen Dank für dieses tolle Script!
Wie bereits gesagt, das war keine Arbeit und hat auch nicht sehr viel Zeit gekostet. Es ist, wie man sieht, ein recht kleines Script.

Hier der neue Code, den alten einfach durch diesen ersetzen:

class Floating_Text < Sprite
#by Cornix

####################
# Important Notes: #
####################
# The Maximum size of the RPG-Maker XP for texts is 96
# If you want shadows and borders to be drawn please keep in mind, that
# the computer needs double the time to draw shadows and fife times the
# time to draw borders of texts. Do not draw too many bordered Floating
# Texts too frequently.
# Floating Texts are standard RPG-Maker XP Sprites and use standard RPG
# -Maker XP Bitmaps and thus all functions of those count for Floating
# Texts as well.

#############################
#Predefined constant colors:#
#############################
# Name = Color.new(Red, Blue, Green, Opacity)
White = Color.new(255, 255, 255, 255)
Black = Color.new( 0, 0, 0, 255) # <- Dont Remove this, its the border color!
Red = Color.new(255, 0, 0, 255)
Green = Color.new( 0, 255, 0, 255)
Blue = Color.new( 0, 0, 255, 255)
Yellow = Color.new(255, 255, 0, 255)
Purple = Color.new(160, 32, 240, 255)
# Visit:
# http://users.rcn.com/giant.interport//COLOR/1ColorSpecifier.html
# for values of all kinds of colors.

################################################
# Setting for the Floating Texts font #
#(This font will be used by all floating texts)#
################################################
Floating_Texts_Font = Font.new
Floating_Texts_Font.name = "Arial"
Floating_Texts_Font.size = 22
Floating_Texts_Font.bold = false
Floating_Texts_Font.italic = false
Floating_Texts_Font.color = White

Draw_Shadow = false
Draw_Border = false

#######################################################
# Initialization #
#(Creates a new floating text at the desired position)#
#######################################################
def initialize(x = 0, y = 0, z = 9999)
super()
self.x = x
self.y = y
self.z = z
# This Bitmap is needed to get the size of the text
self.bitmap = Bitmap.new(1,1)

# Needed when called with custom script lines
return true
end
###########################################################
# Set Text to String #
#(Use this function to show a string in the floating text)#
###########################################################
def text_string(text = "")
# Get the size of the text
self.bitmap.font = Floating_Texts_Font
text_size = self.bitmap.text_size(text)
# Remove the old Bitmap
self.bitmap.dispose

# Create a new Bitmap with the proper size
self.bitmap = Bitmap.new(text_size.width, text_size.height)
self.bitmap.font = Floating_Texts_Font.dup

# Draw Borders or Shadow if necessary
if Draw_Border
self.draw_border(text, text_size)
elsif Draw_Shadow
self.draw_shadow(text, text_size)
end

# Draw the Text and show it
self.bitmap.draw_text(text_size,text)
self.src_rect = text_size

# Needed when called with custom script lines
return true
end
#####################################################
# Set Text to Game Variable #
#(Use this function to show a game variable as text)#
#####################################################
def text_var(var_id = 0)
# Convert Game Variable to String
text = $game_variables[var_id].to_s
# Draw Text
self.text_string(text)
end
###############################################
#Draws a black shadow beneath the text #
#(Private funktion, do not call this yourself)#
###############################################
def draw_shadow(text, text_size)
# Set Border-Color to black
self.bitmap.font.color = Black
# Draw text at bottom-right position
self.bitmap.draw_text(1,1,text_size.width,text_size.height,text)
# Reset font color, .dup is needed!
self.bitmap.font.color = Floating_Texts_Font.color
end
###############################################
#Draws a black border around the text #
#(Private funktion, do not call this yourself)#
###############################################
def draw_border(text, text_size)
# Set Border-Color to black
self.bitmap.font.color = Black
# Draw text at top-left position
self.bitmap.draw_text(-1,-1,text_size.width,text_size.height,text)
# Draw text at bottom-left position
self.bitmap.draw_text(1,-1,text_size.width,text_size.height,text)
# Draw text at top-right position
self.bitmap.draw_text(-1,1,text_size.width,text_size.height,text)
# Draw text at bottom-right position
self.bitmap.draw_text(1,1,text_size.width,text_size.height,text)
# Reset font color, .dup is needed!
self.bitmap.font.color = Floating_Texts_Font.color.dup
end
#################################################
# Remove #
#(Use this function to remove the floating text)#
#################################################
def dispose
self.bitmap.dispose
super
return true
end
end

Falls du noch irgendetwas brauchst zögere nicht es zu sagen. Falls ich nicht direkt antworten kann werden sicherlich noch viele andere Miglieder dazu in der Lage sein den Code zu bearbeiten da er sehr kurz und einfach ist.

Edit:
Eine bessere Version.
Der Text kann nun schattiert werden und mit einem Rand gezeichnet werden.
Schatten und einen Rand zeichnen zu lassen benötigen jedoch mehr Rechenleistung. Diese Funktionen verbrauchen zwar kaum Rechenleistung und es sollte nicht auffallen, allerdings würde ich von der Umrandung abraten wenn du einen Text hast welchen du permanent in jedem Frame updaten und neuzeichnen möchtest.

Edit 2:
Ich habe einige weitere Information als Kommentar hinzugefügt.
Sie sollten dir helfen dasjenige was dieses Script tut leichter zu verstehen und nachvollziehen zu können. Vielleicht hilft es dir dabei selbst zu lernen Ruby zu benutzen.

chrisbyRRC
13.09.2010, 21:50
Spitze! Echt klasse, das Ding is nun noch viel geiler geworden!;)
Die Idee mit dem Schatten gefällt mir sehr gut und durch die Übersichtlichkeit
ist das Script sogar für mich leicht zu benutzen!

So hab das gleich mal zu meiner Script-Sammlung hinzugefügt, jetzt muss ich nie wieder nach dem hier suchen.
Ach falls ich noch irgendwelche Fragen habe hoffe ich das du mir noch mal zur Seite stehst.:)

Ansonsten kann ich mich ja auch sicher per PM bei dir melden.
Danke für alles!;)

Cornix
13.09.2010, 21:56
War kein Problem. Ich hoffe nur du hast die aktuelle Version vorgefunden, ich habe sie erst vor kurzem um ein paar Kommentare erweitert welche vielleicht besonders für Anfänger sehr hilfreich sein könnten.

Ich kann nur jedem der den RPG-Maker XP benutzen will raten dringend Ruby zu verwenden. Ohne würde ich ihn dem RPG-Maker 2003 auf garkeinen Fall vorziehen.
Ich selbst habe genau wie die meisten anderen wohl ebenfalls keinerlei Ahnung von Programmierung gehabt als ich den RPG-Maker XP eines Abends ausprobierte. Ich erkannte jedoch sofort es gab nur eine Möglichkeit tatsächlich etwas anständiges damit auf die Reihe zu stellen und die ging nicht um Ruby herum. Ich entschloss mich es zu lernen und nun ist kaum ein Jahr vergangen und ich bereue die Entscheidung kein Stück.
Es geht manchmal wirklich schneller als erwartet und in diesem Forum gibt es sehr viele hilfreiche Leute die bereitwillig jeder Frage eine Antwort stellen.