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.

1

Montag, 12. Dezember 2005, 00:39

hab mich mal hingesetzt und eine Mini Skript geschrieben und wirklich zu allem einem Kommentar verfasst.
ich werd noch weitere davon hier reinstellen, es soll nur für totale Anfäger verständlich sein wie so etwas Funktioniert
und wie man es erweitern kann.

also wenn es was unklar ist dann frag hier drin einfach.
ich möchte hier kein Danke für etwas, denn ohne weiteres ausbauen des Skriptes kann man es für gar nichts verwenden.

aufgerufen wird es ganz einfach mit einem Normalen Event und Call Skript: $scene = Scene_Test1.new
Beenden kann man es noch nicht, es wie gesagt nur ein Test Skript Grundgerüst zur verständniss von Scenen und Windows später noch genaue Erklärung einzelner Begriffe.

hier noch ein Bild wie es in etwa bei euch dann aussehen sollte: test9br.jpg
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
#==============================================================================
class Scene_Test1
#==============================================================================
  def main # definiert den Hauptteil der Scene
 
    @Test1 = Window_Test1.new # Window_test1 wird in dieser Scene gestartet
    @Test1.x = 0 # X Postion von Window_test1
    @Test1.y = 0 # Y Postion von Window_test1
 
    Graphics.transition # Übergang ausführen
 
    loop do # eine Schleife wird gestartet
 
      Graphics.update # Bildschirmgrafiken Aktuallisieren
 
      Input.update # Update input information
 
      if $scene != self # die Schleife Beenden, wenn sich der Bildschirm verändert
        break # Schleife wird abgebrochen
      end # Ende der Bedingung
 
    end # Ende der Schleife
 
    Graphics.freeze # Vorbereitung auf einen Übergang
 
    @Window_Test1.dispose # Window_Test1 verschwinden lassen
  end
end
 
# hier demonstriere ich, das man nicht unbedingt alles in ein Neues Skript machen muss.
# man könnte also alle Skripts in ein Skript packen, es dient nur der Übersicht, das man es nicht macht.
 
#==============================================================================
class Window_Test1 < Window_Base #der Windows_Base Standard wird auf das Window angewendet
#==============================================================================
 
  def initialize # definiert den Start des Windows
 
    super(0, 0, 640, 480) # Postion und Maße des Fensters (X, Y, Breite, Höhe)
 
    self.contents = Bitmap.new(width - 32, height - 32) # kann ich nich erklären, is einfach so ^^
 
    self.contents.font.name = "Arial" # Standard Font wird benutzt
 
    self.contents.font.size = 24 # Standard Font Größe wird benutzt
    #---------------------------------------------------------------------------
    # als nächtes nur weitere möglichkeiten die man für Fenster hat
    #---------------------------------------------------------------------------
    #self.back_opacity = 0 # Fenster inerhalb des Fensterrahmens wird Transparent
 
    #self.contents_opacity = 160 # Fensterinhalte werden Tranzparent / hier auf 160 weil nur Halbtransparent
 
    #self.opacity = 0 # Komplettes Fenster wird Transparent
 
    refresh # Aktualliesieren
 
  end # Ende von def initalize
#---------------------------------------------------------------------------
  def refresh # definiert eine Aktuallisierung, was beim Aktuallisieren angezeigt / erneuert wird
 
    self.contents.clear # die eigenen(self) Inhalte(contents) werden geleert(clear)
 
    # jetz wird ein Bild angezeigt, dieses habt ihr nich, ersetzt es am besten mit einem Eigenen und macht dann das # weg
    #self.contents.blt(4, 4, RPG::Cache.picture('arrow'), Rect.new(0, 0, 96, 96)) # mehr dazu später
 
    #hier wird ein Text angezeigt
    self.contents.draw_text(10, 5, 118, 32, "Test") # mehr dazu später
 
  end # Ende von def refresh
end

zum Lesen den Text mit der Maus markieren

//Edit: Font Fehler behoben, -.- naja bei dehnen die ein verändertes Main hätten, wärs ohne probleme gelaufen, konnte ich ja nich wissen das ich das vergessen hatte.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Kagurame« (5. Februar 2013, 01:48) aus folgendem Grund: Ruby-Tag eingefügt; Spoiler eingefügt (Lesbarkeit)


2

Montag, 12. Dezember 2005, 00:45

Ich bekomme einen Error bei Zeile 45 = self.contents.font.size = $defaultfontsize ... Wie der zu fixxen ist, ist mir schon klar, aber na ja... In einem Tutorial ein Error.. ist nicht wirklich so prickelnd. Aber schön das du dir die Mühe gemacht hast/machst =) Du solltest am besten noch die verschiedenen Variationen der Begriffe erklären, z.B. das self.back_opacity = 0 durch einen höheren Wert, auch eine andere Transparenz hat... Immerhin ist es ein Anfänger Skript wie du es nanntest... Nur ein kleiner Rat nich gleich wieder aufregen *unschuldig mit Augen roll*.

Edit: Ach ja, nicht das das hier wiedermals falsch verstanden wird, das ist keine Kritik, da ich ja genau weiß das Geo eigentlich generell sein Fach beherrscht =) Also meckat nich am Lelli rum *sniff*
[ALIGN="center"] Bild [/align]

3

Montag, 12. Dezember 2005, 01:57

Ähm Geo ma ne dumme Frage! *g*
Was macht man mit dem Script?
Ich habs in Scripteditor rein und ein Event mit Call Script aber wenn des dann aktiv is passiert nischt!

EDIT: Okay es funtzt doch *g* war vielleicht daran gelegen, dass ich es als paralleles Event gemacht hab, des aktiv ist wenn man A drückt!
Bild

4

Montag, 12. Dezember 2005, 16:05

so nächste erklärung, jetz nehmen wir erstmal das Skript auseinander und dann später wird es um ein paar dinge erweitert.

[php] def main
#---------------------------------------------------------------------------1
@Test1 = Window_Test1.new
@Test1.x = 0
@Test1.y = 0

Graphics.transition
#---------------------------------------------------------------------------2
loop do
Graphics.update
Input.update

if $scene != self
break
end

end
#---------------------------------------------------------------------------3
Graphics.freeze
#---------------------------------------------------------------------------4
@Window_Test1.dispose
end[/php]

so der 1. teil des Skripts ist aufgeteilt in 4 Bereiche (siehe Zahlen)

Bereich 1: Start,
das was eigentlich passiert, z.b. Windows aufrufen oder Befehle definieren.

das Graphics.transition Startet einen Übergang, ohne den es nicht möglich wäre das sich etwas verändert

Bereich 2: Bedingungen,
hier ist es eine Schleife die überprüft ob sich das Fenster verändert.

mit Graphics.update werden die Grafiken erneuert

Begriffe:
" if " - eine Bedingung, einfach übersetzt bedeuted es falls/wenn das und das passiert
" != " - das ist ein Vergleich, hierbei bedeuted es "verändert"
" self " - Übersetzt ganz einfach selbst, eigene.
zusammen kann man es wie einen Satz lesen, den man gedanklich zusammensetzt
hier der lesbar sich ergebende Satz: Falls sich die eigene $scene verändert

" loop " - Schleife , eine sich endlos wiederholende Schleife
" do " - tun, hierbei heißt es aber " bis "
" break " brechen - die Schleife wird ohne Nachfragen sofort abgebrochen

ganz einfach gesagt, " Loop do " heißt das es nur mit einem " break " abgebrochen
werden kann weil es zusammen so zu lesen ist, " Schleife bis abbruch",
es wiederholt sich also solange bis ein Break kommt, ohne das, ist es nicht
möglich eine Scene zu benutzen, das sie sich nicht verändern könnte

Bereich 3: End vorbereitung
das Ende wird vorbereitet da sich jetzt die Grafiken nicht mehr verändern, kann man sie einfrieren damit sie nicht mehr genutzt werden, so erreicht man einen Übergang und da die Grafiken nicht mehr genutzt werden (wie z.b. Windows, aber keine Bilder), werden sie einfach so eingefroren wenn eine Neue Szene startet.

Bereich 4: Ende
hier kommt dann alles rein was beim beenden der Szene passieren soll,
hierbei wird das Window beendet.


jetz kommt das Window_Test1:

[php] def initialize
#---------------------------------------------------------------------------1
super(0, 0, 640, 480)
#---------------------------------------------------------------------------2
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Arial"
self.contents.font.size = 24

#self.back_opacity = 0
#self.contents_opacity = 160
#self.opacity = 0
#---------------------------------------------------------------------------3
refresh
#---------------------------------------------------------------------------4
end [/php]



Bereich 1: Position
"super(X, Y, Breite, Höhe)"

super zeigt etwas, z.b. Windows, der rest sind die Parameter
für X-Achse, Y-achse, Breite und Höhe des Fensters

Bereich 2: Contents Eigenschaften
hier werden die Eigenschaften der Contents (Objekte) definiert

Begriffe:
" self " - Übersetzt ganz einfach: selbst, eigene.
" contents " - Objekte die sich auf dem window befinden
" font " - Font Eigenschaft
" name " - Untereigenschaft von Font, hier der Name des Fonts
" size " - Untereigenschaft von Font, hier die Größe der Schrift
" opacity " - einfach übersetzt: Opazität = Tranzparenz

" Bitmap.new(width - 32, height - 32) " - genau kann ich das hier nicht erklären,
nur so viel dazu:
- " Bitmap.new " gibt an das ein Bild neu erstellt wird
- das in Klammern sind die Parameter, hier ganz einfach
die "width" Breite und "height" Höhe des Fensters werden minus 32 gerechnet

meiner Meinung nach definiert es ganz einfach den Rand des Windows, aber Apt kann das sicher genauer erklären, hoffe ich

Bereich 3: Refresh ausführen
das was in " def refresh " steht wird ausgeführt

Bereich 4: Ende
hier endet def initialize

5

Dienstag, 13. Dezember 2005, 11:38

Ut sementem feceris, ita metes!

Zitat

" Bitmap.new(width - 32, height - 32) " - genau kann ich das hier nicht erklären,
nur so viel dazu]

Wie der Herr befiehlt, ... :xmaswink: (Aber ich heiße nicht Apt sondern Abt)

self.contents wird die Klasse Bitmap.new zugewiesen, dies wird durch .new ausgedrückt, danach werden der neuen Klasse noch 2 Parameter übergeben, die Länge und die Breite. Damit das Script weiß wie groß das Bitmal sein soll wird dort die vorhandere Länge(width) und Breite(height) eingesetzt. Zur Besonderheit gehört das immer ein 16 pixel rand eingeplant wird, deswegen -32. Den Startpunkt (die 16/16) kann man, meiner Meinung nach, nicht anpassen. Die sind die der Klasse Window fest.

Es könnte auch so heißen:
self.contents = Bitmap.new(self.width - 32, self.height - 32)

oder
contents = Bitmap.new(width - 32, height - 32)

denn self. ist optional (verweißt nur auf sich selbst), aber manchmal notwendig, damit gewisse Funktionen (contents) laufen.

Hoffe dies ist halbwegs verständlich erklärt.

Siehe auch: (Schleichwerbung)
http://scientia.rpgfantasy.de/wiki/index.php/Modul:Graphics
http://scientia.rpgfantasy.de/wiki/index.php/Window
http://scientia.rpgfantasy.de/wiki/index.php/Scene (naja ausbaufähig)
http://scientia.rpgfantasy.de/wiki/index.php/self

:snowsmiley: Abt Ploutôn

Zitat

:information: YAams
:rainbow: Random Signatur
Bild





Weitere Informationen | Download
Mit Support für RGSS Project 1!
Bild

Social Bookmarks