• Login

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Send private message

41

Monday, August 12th 2019, 2:02am

Sieht schonmal gut aus. =)

Entschuldige die kurze und möglicherweise etwas zusammenhanglose Antwort gerade, wird später überarbeitet:

1) Wenn du deine Einstellungen behalten möchtest und es bequemer ist sie nicht jedes Mal wieder aufrufen zu müssen wäre wohl deine Lösung sinnvoller. :)

Playms Vorschlag erlaubt dir aber grundsätzlich das Script auf verschiedenen Maps zu benutzen während du dich mit deiner Lösung mehr oder weniger auf eine Map festlegt. Wenn du Objekte auf mehreren Maps haben willst kannst du die Lösung dann auch etwas abwandeln und anstatt das Array zu löschen für jede Map ein eigenes "static_object" Array speichern.

2) Dein Script arbeitet derzeit so dass du über den Interpreter auf deine Map_Objects zugreifen kannst und sich deine Map_Sprites mit jedem Frame an die Daten in deinen Objekten anpassen (über ihre update-Methode).
Da deine Map_Sprites und alles was darin gespeichert ist regelmäßig gelöscht werden (z.B. wenn der Spieler ins Menü wechselt) solltest du in Map_Objects alles speichern was nicht nach einem Menüaufruf o.Ä. verloren gehen sollte.

Grundsätzlich funktioniert das Prinzip auch so für opacity und angle.

Das Problem in deinem Script ist bisher dass du die Aufrufe zur Aktualisierung von diesen beiden Eigenschaften in den Block einer if-Abfrage eingefügt hast (Zeile 141, 146, 147). Damit werden sie nur aktualisiert wenn du auch die Grafik des Objekts geändert hast (oder der Sprite nach einem Menüaufrufneu erstellt wird).

3) Kann grad nicht in die XP-Scripts schauen und es gibt evtl. bessere Möglichkeiten, aber wenn du Scripts in Betracht ziehst könntest du notfalls auch die Abfrage ob die Spielerkoordinaten gleich deiner Objektkoordinaten sind in deine Sprite-Update-Methode werfen.

Ruby Quellcode

1
2
3
 if $game_player.x == map_x && $game_player.y == map_y
   tilt_sprite
 end
oder so ähnlich.

4) Deine Object_Sprites funktionieren ja grundsätzlich so ähnlich wie die aus Playms Script. Wenn dir die Quick&Dirty - Methode erstmal reicht könntest du versuchen die Änderungen an Sprite_Character in deine Object_Sprite - Klasse integrieren, und im Interpreterteil das

Ruby Quellcode

1
2
char_sprites = spriteset.instance_variable_get(:@character_sprites)
sprite = char_sprites.find{|s| s.character == char }

durch

Ruby Quellcode

1
2
map_object_sprites = spriteset.instance_variable_get(:@map_object_sprites)
sprite = map_object_sprites[ ID ]

ersetzen.

Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

42

Monday, August 12th 2019, 12:46pm

Kein Problem, du beantwortest ja alles (oder ist das shcon überarbeitet?) ich frag einfach nach, wenn ich was nicht kapiere :3
Danke fürs beantworten!

1.)

Zitat

anstatt das Array zu löschen für jede Map ein eigenes "static_object" Array speichern.

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    if @static_object == nil
# hier if map_id 1
      @static_object = []
      for i in 0..49
        @static_object[i] = Map_Object.new()
      end
#elsif map_id 2
      @static_object = []
      for i in 50..99
        @static_object[i] = Map_Object.new()
      end
#end
    end
    # gib den Array zurück
    return @static_object 
  end

So in etwa? o.o

2.) ...also ist es möglich, angle und opacity über Interpreter zu ändern, aber es updatet aktuell nicht? ><
Ich probiers erstmal aus und refresh dann durchs Menü um zu gucken, obs überhaupt klappt und dann muss ich schauen, wie ich das update :/ Vlt wirklich einfach ein game_map.refresh dran hängen?

3.) Das würde nur den Anfangspunkt des Sprites abfragen, nicht die Fläche davon. :<

4.) Okay, ich versuchs und editier dann hier rein, was ich geschafft habe XD


Edit: Bin bereits in einer Sackgasse :<
Ich weiß nicht, wieso das nicht funktioniert, hab mir echt mühe gegeben XD

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
class Interpreter
  def initialize
    @static_object = map_object    
  end
 
  def change_opacity(id, wert)
    # id ist die [0]
    @static_object[id].opacity = wert # wert ist die opacity
 
    return true
  end
end

Wie falsch ist es?
Fehlermeldung:
---------------------------
Script 'Game_System' line 28: ArgumentError occurred.

wrong number of arguments(2 for 0)
---------------------------
Ich weiß nicht, was genau der von mir will- da sind zuviele Werte eingetragen, aber in der Zeile 28 stehen sogar 2? ><

Ruby Quellcode

1
    @map_interpreter = Interpreter.new(0, true)


Wenn ich das hier mache

Ruby Quellcode

1
2
3
4
5
6
7
8
9
class Interpreter  
 
  def change_opacity(id, wert)
    # id ist die [0]
    @static_object[id].opacity = wert # wert ist die opacity
 
    return true
  end
end

läuft das Spiel an, aber ich krieg ne Fehlermeldung
---------------------------
Script 'Static Object' line 242: NoMethodError occurred.

undefined method `[]' for nil:NilClass
---------------------------
wenn ich versuche das aufzurufen:

Ruby Quellcode

1
change_opacity(0, 100)

(Ich versuche Sprite[0] zu ändern)
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

This post has been edited 2 times, last edit by "Josey" (Aug 12th 2019, 12:46pm)


Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Send private message

43

Tuesday, August 13th 2019, 3:22pm

Der letzte Beitrag war auch etwas länger geworden als ursprünglich gedacht, es war aber bereits relativ spät und ich hatte ihn nicht mehr wirklich gegengelesen.

4)
Edit: Warnung vor lägerer, möglicherweise sinnfreier Ausschweifung. Für eine Lösung siehe TL;DR etwas tiefer. :)

Ich weiß nicht, was genau der von mir will- da sind zuviele Werte eingetragen, aber in der Zeile 28 stehen sogar 2? ><
Du überschreibst in deinem Code die "initialize" - Methode vom Interpreter. Die ursprüngliche Form befindet sich in "Interpreter 1" ab Zeile 14 und erlaubt es bis zu 2 Werte mitzugeben.
Die Methode mit der du sie ersetzt erlaubt keine Argumente, entsprechend die Fehlermeldung wenn sie mit 2 Werten aufgerufen wird.

Wenn du der "initialize" - Methode etwas hinzufügen möchtest solltest du grundsätzlich alias verwenden um zu verhindern dass der vorherige Code verloren geht.

Ruby Quellcode

1
2
3
4
class Interpreter
  def initialize
    @static_object = map_object    
    [...]
Grundsätzliche Anmerkung: Variablen mit @ am Anfang sind Objektvariablen (Instanzvariablen) und existieren für jedes Objekt separat. Nur weil du in deiner Interpreter-Klasse eine Variable @static_object nennst heißt das nicht automatisch dass sie etwas mit der gleichnamigen Variable in der Game_Map - Klasse zu tun hat (anders als globale Variablen).

Wie auch immer:
- Ein Problem mit dieser Methode ist derzeit dass "map_object" in diesem Kontext noch nicht existiert. Weder hast du eine (lokale) Variable mit diesem Namen vorher in der selben Methode benutzt, noch existiert eine Methode namens "map_object" im Interpreter. Wenn du an der Stelle das Array mit deinen Map_Objects haben möchtest kannst du es dir aber wie bisher über die "static_object" Methode in Game_Map holen:
@static_object = $game_map.static_object

- In diesem Fall solltest du anstatt "initialize" die "setup"-Methode erweitern, weil $game_map zum Zeitpunkt von "initialize" (aufgrund der Erstellreihenfole) vermutlich noch nicht existiert.
"setup" wird aufgerufen wenn der Interpreter den Auftrag bekommt eine Eventseite abzuarbeiten, also auf jeden Fall ebenfalls bevor du einen Scriptbefehl nutzen kannst.


Die Lösung würde dann auch meistens gut funktionieren:
Grundsätzlich ist die Lösung gut. Der einzige Schwachpunkt ist dass aus Sicht des Makers die @static_object Variable deines Interpreters und die @static_object Variable von $game_map einfach nur zwei Variablen sind die zufällig auf das selbe Array verweisen (das selbe Array bedeuten? Zwei Namen für das selbe Array sind? Mir gehen die Umschreibungen aus...^^).

Wenn du mit deinem Code arbeitest müsstest du im Kopf behalten dass, wenn du die @static_object Variable in Game_Map aus irgendwelchen Gründen durch ein anderes Array ersetzt, @static_object im Interpreter nicht automatisch nachzieht.

Eine andere Möglichkeit in der dir diese Abhängigkeit auf die Füße fallen könnte wären Spielstände. Wenn du ein nicht-paralleles Event mit folgendem Inhalt hast:
@>Call Save Screen
@>Script: @static_object[0].opacity = 100


würde der Scriptbefehl nach dem Laden des Spielstandes keine Wirkung mehr haben, weil der Maker den Inhalt der Variablen durch eine gleiche, aber unabhängige Kopie deiner Map_Objects ersetzt hätte. (Für parallele Events besteht das Problem in diesem Fall nicht.)


TL;DR: Das Ganze ist eigentlich nur eine sehr in die Länge gezogene Version von: "Es funktioniert nach ein paar Fixes gut, aber ich würde dir raten auf die zusätzliche Variable im Interpreter zu verzichten und in der change_opacity-Methode $game_map.static_object statt @static_object zu verwenden."

---

1) Fast.
Ich würde dir natürlich raten erst eine Baustelle zu schließen bevor du ein funkionierendes System aufgräbst, aber grundsätzlich hättest du hier wenigstens 2 Möglichkeiten:
Entweder du speicherst alle Map_Objects für alle deine Karten in einem einzigen Array (z.B. indem du 50 Einträge für jede Karte reservierst). In dem Fall müsstest du später zum Beispiel im Spriteset die Objekte heraussortieren die du für die aktuelle Karte brauchst.
Die andere Möglichkeit wäre für jede Karte ein eigenes Array anzulegen. In dem Fall müsstest du die Arrays in verschiedenen Variablen (oder in dem Fall vermutlich sinnvoller: einem weiteren Array) speichern um die Arrays der anderen Karten nicht zu überschreiben.

Eine Lösung mit mehreren Arrays könnte aber etwa so aussehen:
Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Game_Map
 
  def static_object
    # Erstelle ein Array für die Map_Object-Arrays aller Maps, sofern sie 
    # noch nicht existiert:
    if @static_objects == nil
      @static_objects = []
    end
    ... # <- Ab dieser Stelle würde sich der Code aus deiner
    # jetzigen Methode befinden, nur dass jedes Vorkommen von 
    #   @static_object
    # mit
    #   @static_objects[self.map_id]
    # ersetzt werden muss um den Eintrag der aktuellen Map 
    # zu verwenden.
  end
end
zum Lesen den Text mit der Maus markieren


In deiner jetzigen Version erstellst du nur Map_Objects für eine Karte (wenn die Methode das erste Mal benutzt wird und noch @static_object == nil zutrifft), nicht für alle.

Um die ID der aktuellen Karte herauszufinden kannst du
$game_map.map_id
verwenden. Hier wahlweise auch
self.map_id
da du dich bereits in der Game_Map Klasse befindest und $game_map das einzige Objekt von dieser Klasse sein sollte.


2) $game_map.refresh hat damit nicht viel zu tun, diese Methode dient nur dazu die aktive Seite aller Events auf der Map neu zu bestimmen (wird aufgerufen nachdem sich mindestens ein Switch, eine Variable, ein Partymitglied oder das Inventar geändert haben könnte).
Grundsätzlich ändert sich an den $game_ - Objekten nichts wenn du das Menü aufrufst, es wird lediglich ein neues Set an Sprites erzeugt.

Du hast im Moment einen Teil deiner Befehle so positioniert dass sie nur ausgeführt werden wenn
if @graphic_name != @object.graphic
zutrifft und sich der Name des Tilesets geändert hat. Die Frage die sich an der Stelle stellt ist für welche dieser Eigenschaften es tatsächlich sinnvoll ist dass sie nur zusammen mit dem Tileset geändert werden können und welche Befehle vielleicht lieber aus dem if-Block herausgeschoben werden sollten.


3) Üh, das stimmt.
Werd mir dazu aber erstmal nochmal den Thread duchlesen müssen, wenn niemand anders schneller ist. =)

---

"Der Zutritt zu dieser Seite ist Ihnen leider verwehrt. Sie besitzen nicht die notwendigen Zugriffsrechte, um diese Seite aufrufen zu können."
Die regelmäßige Erinnerung lange Beiträge immer zu kopieren bevor man sie absendet. =)

Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

44

Wednesday, August 14th 2019, 12:09am

4.) Okay, ich weiß nicht, ob ich alles richtig verstanden hab und nur nicht gut weiterdenke, aber bei dem hier

Ruby Quellcode

1
2
3
4
5
6
7
8
9
class Interpreter  
 
  def change_opacity(id, wert)
    @static_object = $game_map.static_object
    @static_object[id].opacity = wert # wert ist die opacity
 
    return true
  end
end

kommt der Fehler bei Scriptaufruf:
---------------------------
Script 'Static Object' line 242: NoMethodError occurred.

undefined method `opacity=' for #<Map_Object:0x295eb38>
---------------------------
opacity ist doch definiert? :<

1.) Danke schonmal, das probier ich aus, wenn alles andere funktioniert! >_<

2.) Ah, verstehe, einfach in der update-Methode
self.opacity = @object.opacity
self.angle = @object.angle
aus dem if rausnehmen! :D

3.) Okay, danke :D


Heißt das, dein ganzer Post war weg? D:

Spoiler: Script

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
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
#==============================================================================
# ** Static Object
#------------------------------------------------------------------------------
#  Ein Sprite, der an einer Stelle einer bestimmten Map geladen wird (kann ein 
#  Tileset-Tile sein oder ein Picture) und dort verbleibt und manipuliert (angle,
#  hue, opacity) werden kann
#==============================================================================
 
 
#==============================================================================
# ** Map_Objekt
#==============================================================================
class Map_Object
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :map_x
  attr_reader :map_y
  attr_reader :anchor
  attr_reader :priority
  attr_reader :graphic
  attr_reader :opacity
  attr_reader :angle
  attr_reader :hue
  attr_reader :tilestx
  attr_reader :tilesety
  attr_reader :tilewidth
  attr_reader :tileheight
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @map_x = 0
    @map_y = 0
    @anchor = :top_left
    @priority = 0
    @opacity = 255
    @angle = 0
    @hue = 0
    @graphic = ""
    @tilestx = 0 
    @tilesety = 0 
    @tilewidth = 0
    @tileheight = 0
  end  
  #--------------------------------------------------------------------------
  # * Setup Picture
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #--------------------------------------------------------------------------
  def setup_pic( mapx, mapy, anchor, priority )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
  end
  #--------------------------------------------------------------------------
  # * Setup Tileset
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #   tilesetx = Startpunkt des Ausschnitts im Tileset x (Pixel)
  #   tilesety = Startpunkt des Ausschnitts im Tileset y (Pixel)
  #   tilewidth = Wieviele Pixel breit
  #   tileheight = Wieviele Pixel hoch
  #--------------------------------------------------------------------------
  def setup_til( mapx, mapy, anchor, priority, tilestx, tilesety, tilewidth, tileheight )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
    @tilestx = tilestx
    @tilesety = tilesety
    @tilewidth = tilewidth
    @tileheight = tileheight
  end
  #--------------------------------------------------------------------------
  # * Set Graphic
  #
  #     name           :Name der Grafik (Tileset oder Picture)
  #--------------------------------------------------------------------------
  def set_graphic( name )
    @graphic = name
  end
end
 
#==============================================================================
# ** Game_Map
#==============================================================================
class Game_Map
  #--------------------------------------------------------------------------
  # * Static_Object
  #--------------------------------------------------------------------------
  def static_object
    # wenn beim ersten Aufruf von $game_map.static_object der Array noch nicht
    # mit Werten gefüllt ist, fülle ihn erst mit Start-Werten auf
    if @static_object == nil
      @static_object = []
      for i in 0..49
        @static_object[i] = Map_Object.new()
      end
    end
    # gib den Array zurück
    return @static_object 
  end
 
# -> Sinnvoller zu löschen und jedes Mal neu zu erstellen oder sinnvoller
# im Spriteset_Map nur auf der bestimmten Map zu initializen?
 
#  alias_method(:aliased_setup_method, :setup )
#  def setup(map_id)
#    @static_object = nil
#    aliased_setup_method(map_id)
#  end  
 
end
 
 
#==============================================================================
# ** Object_Sprite
#==============================================================================
class Object_Sprite < Sprite
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(viewport, map_object)
    super(viewport)
    @object = map_object
    update
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if @graphic_name != @object.graphic
       @graphic_name = @object.graphic
       @tilestx = @object.tilestx
       @tilesety = @object.tilesety
       @tilewidth = @object.tilewidth
       @tileheight = @object.tileheight
 
    end
       self.opacity = @object.opacity
       self.angle = @object.angle
    # Je nachdem welches Setup gewählt wurde (muss ich noch überlegen, wie ich das abfrage)
      if @graphic_name != ""
#        if 
#          self.bitmap = RPG::Cache.picture(@graphic_name)
#        elsif
          self.bitmap = RPG::Cache.tileset( @graphic_name )
          self.src_rect.set( @tilestx, @tilesety, @tilewidth, @tileheight)
#        end
      else
        self.bitmap = nil
      end
 
    # Je nachdem welcher anchor gewählt wurde
    map_x = @object.map_x
    map_y = @object.map_y
    map_z = @object.priority
    middlewidth = @tilewidth / 2
 
    if @object.anchor == :top_left
      self.x = (map_x * 128 - $game_map.display_x + 3) / 4 
      self.y = (map_y * 128 - $game_map.display_y + 3) / 4     
    elsif @object.anchor == :bottom_left
      self.ox = self.src_rect.width / 2
      self.x = ((map_x * 128 - $game_map.display_x + 3) / 4) + middlewidth 
      self.oy = self.src_rect.height
      self.y = ((map_y * 128 - $game_map.display_y + 3) / 4) -@tileheight + 32 + self.src_rect.height
    end
 
    # Je nachdem welche Priority gewählt wurde
    if map_z == 0
      self.z = self.y + 16 
    elsif map_z == 1
      self.z = self.y + 16 +32
    elsif map_z == 2
      self.z = self.y + 16 +64
    elsif map_z == 3
      self.z = self.y + 16 +96
    elsif map_z == 4
      self.z = self.y + 16 +128
    elsif map_z == 5
      self.z = self.y + 16 +160
    end
 
  end #def
end
 
#==============================================================================
# ** Spriteset_Map
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias_method( :aliased_initialize_method, :initialize )
  alias_method( :aliased_update_method, :update )
  alias_method( :aliased_dispose_method, :dispose )
 
  def initialize
    @map_object_sprites = []
    aliased_initialize_method
   if $game_switches[1] == true  
    for i in 0...$game_map.static_object.length
      sprite = Object_Sprite.new(@viewport1, $game_map.static_object[i])
      @map_object_sprites.push(sprite)
    end
   end  
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #-------------------------------------------------------------------------- 
  def dispose
    for sprite in @map_object_sprites
      sprite.dispose
    end
    aliased_dispose_method
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    aliased_update_method
    for sprite in @map_object_sprites
      sprite.update
    end
  end
end
 
#==============================================================================
# ** Interpreter
#==============================================================================
class Interpreter  
  #--------------------------------------------------------------------------
  # * change_opacity
  #     id             :ID des objektes
  #     wert           :Opacity-Wert
  #--------------------------------------------------------------------------
  def change_opacity(id, wert)
    @static_object = $game_map.static_object
    @static_object[id].opacity = wert
 
    return true
  end
end
zum Lesen den Text mit der Maus markieren
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Send private message

45

Wednesday, August 14th 2019, 12:30am

kommt der Fehler bei Scriptaufruf:
---------------------------
Script 'Static Object' line 242: NoMethodError occurred.

undefined method `opacity=' for #<Map_Object:0x295eb38>
Achso, ja, das liegt daran dass du im Moment nur eine Methode zum lesen von opacity hast, aber keine zum schreiben.
Du könntest
attr_reader :opacity
durch
attr_accessor :opacity
ersetzen oder eine entsprechende Schreibmethode definieren (Playm hat das hier im Thread auch nochmal demonstriert).

Wenn du @static_object im Interpreter nur innerhalb eines einzigen Methodenaufruf brauchst könntest du hier auch das @ weglassen und es zu einer lokalen Variable machen, funktionieren tut es aber auch so. :)

Heißt das, dein ganzer Post war weg? D:
Dieses Mal tatsächlich Glück gehabt, sah schonmal schlimmer aus. =) *Zwischenspeichert den Beitrag*

Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

46

Wednesday, August 14th 2019, 1:47pm

YES, es funktioniert XD
Ich mach immer noch anfängerfehler, aber langsam wirds ><
Also nochmal für mich zum merken: Willst du an was was ändern, muss es attr_accessor heißen, nicht reader.
@ nur verwenden, wenn ich einen Wert öfter brauche (?)


Dann versuch ich das jetzt hübsch zu machen. Fadend. ...vlt mit so ner Schleife? Die dann fragt, ob "wert" erreicht ist und solange +1 berechnet oder so? ><
Gibts dafür tipps? :<

Ruby Quellcode

1
2
3
    if static_object[id].opacity > wert
    static_object[id].opacity -= 1
    end

Weil das hier zwar funktioniert, aber nicht looped. Und mit Schleifen bin ich unsicher. Ist das im Interpreter überhauptmöglich? Brauch ich da ne Update-Methode oder so?
Bei

Ruby Quellcode

1
2
3
    while static_object[id].opacity > wert
    static_object[id].opacity -= 1
    end

springt die opacity sofort wieder auf 100, statt zu faden.
Edit: Ich hab jetzt sogar alle Schleifen aus dem Wiki ausprobiert und es ist überall dasselbe. Selbst wnen ich mir ausprinten lasse, die Zahlen gehen wirklich langsam runter, aber der Sprite wird nicht bei jeder Zahl geupdatet? Ein Refresh hilft da nicht (ich habs probiert XD), wie krieg ich das hin, das er den Sprite nach jedem Schleifendurchgang einmal updatet? :<

Die opacity soll übrigens dann geändert werden, wenn der Spieler "den Sprite betritt". Ich überleg, wie ich das hinkrieg XD
Ich könnte einfach sagen, wenn der Spieler sich so und soviele Tiles dem Mittelpunkt nähert, werd durchsichtig? >< Müsste ja zu speichern sein... andererseits sind alle Sprites unterschiedlich groß. Natürlich könnte ich diese Zahl einfach in den setup mit einbauen, so dass ich selber bei jedem Sprite die range bestimme, ab wann der Sprite durchsichtig werden soll. Wär jetzt auch nicht das Thema, ist ja nur für mich, das Script.

Dann muss ich das tilt einbauen, mal gucken, ich editier, wenn ich was hab, geh jetzt schlafen :9
Danke! :D

Zitat

Dieses Mal tatsächlich Glück gehabt, sah schonmal schlimmer aus. =) *Zwischenspeichert den Beitrag*

Manchmal funktioniert auch F5 oder "Eine Seite zurück" und "Eine Seite vor" XD


Hier mal meine aktuelle Version, tilt funktioniert! XD
Aber Opacity noch nicht. Dafür kann ich jetzt verschiedene Quellen angeben, Pictures und Tilesets.

Was bedeutet dieses "update(*args)"? Ist das eine normale Update-Methode, oder nur fürs tilten?
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
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
#==============================================================================
# ** Static Object
#------------------------------------------------------------------------------
#  Ein Sprite, der an einer Stelle einer bestimmten Map geladen wird (kann ein 
#  Tileset-Tile sein oder ein Picture) und dort verbleibt und manipuliert (angle,
#  hue, opacity) werden kann
#==============================================================================
 
#==============================================================================
# ** Map_Objekt
#==============================================================================
class Map_Object
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :map_x
  attr_reader :map_y
  attr_reader :anchor
  attr_reader :priority
  attr_reader :graphic
  attr_accessor :opacity
  attr_reader :angle
  attr_reader :hue
  attr_reader :tilestx
  attr_reader :tilesety
  attr_reader :tilewidth
  attr_reader :tileheight
  attr_reader :pic
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @map_x = 0
    @map_y = 0
    @anchor = :top_left
    @priority = 0
    @opacity = 255
    @angle = 0
    @hue = 0
    @graphic = ""
    @tilestx = 0 
    @tilesety = 0 
    @tilewidth = 0
    @tileheight = 0
    @pic = true
  end  
  #--------------------------------------------------------------------------
  # * Setup Picture
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #--------------------------------------------------------------------------
  def setup_pic( mapx, mapy, anchor, priority, pic=true )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
    @pic = pic
  end
  #--------------------------------------------------------------------------
  # * Setup Tileset
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #   tilesetx = Startpunkt des Ausschnitts im Tileset x (Pixel)
  #   tilesety = Startpunkt des Ausschnitts im Tileset y (Pixel)
  #   tilewidth = Wieviele Pixel breit
  #   tileheight = Wieviele Pixel hoch
  #--------------------------------------------------------------------------
  def setup_til( mapx, mapy, anchor, priority, tilestx, tilesety, tilewidth, tileheight, pic=false )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
    @tilestx = tilestx
    @tilesety = tilesety
    @tilewidth = tilewidth
    @tileheight = tileheight
    @pic = pic
  end
  #--------------------------------------------------------------------------
  # * Set Graphic
  #
  #     name           :Name der Grafik (Tileset oder Picture)
  #--------------------------------------------------------------------------
  def set_graphic( name )
    @graphic = name
  end
end
 
#==============================================================================
# ** Game_Map
#==============================================================================
class Game_Map
  #--------------------------------------------------------------------------
  # * Static_Object
  #--------------------------------------------------------------------------
  def static_object
    # wenn beim ersten Aufruf von $game_map.static_object der Array noch nicht
    # mit Werten gefüllt ist, fülle ihn erst mit Start-Werten auf
    if @static_object == nil
      @static_object = []
      for i in 0..49
        @static_object[i] = Map_Object.new()
      end
    end
    # gib den Array zurück
    return @static_object 
  end
 
# -> Sinnvoller zu löschen und jedes Mal neu zu erstellen oder sinnvoller
# im Spriteset_Map nur auf der bestimmten Map zu initializen?
 
#  alias_method(:aliased_setup_method, :setup )
#  def setup(map_id)
#    @static_object = nil
#    aliased_setup_method(map_id)
#  end  
 
end
 
 
#==============================================================================
# ** Object_Sprite
#==============================================================================
class Object_Sprite < Sprite
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(viewport, map_object)
    super(viewport)
    @object = map_object
    update
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if @graphic_name != @object.graphic
       @graphic_name = @object.graphic
       @tilestx = @object.tilestx
       @tilesety = @object.tilesety
       @tilewidth = @object.tilewidth
       @tileheight = @object.tileheight
    end
       self.opacity = @object.opacity
       self.angle = @object.angle
 
  # Je nachdem welches Setup gewählt wurde
      if @graphic_name != ""
        if @object.pic == true
          self.bitmap = RPG::Cache.picture(@graphic_name)
        elsif @object.pic == false
          self.bitmap = RPG::Cache.tileset( @graphic_name )
          self.src_rect.set( @tilestx, @tilesety, @tilewidth, @tileheight)
        end
      else
        self.bitmap = nil
      end
 
  # Je nachdem welcher anchor gewählt wurde
    map_x = @object.map_x
    map_y = @object.map_y
    map_z = @object.priority
    middlewidth = @tilewidth / 2
 
    if @object.anchor == :top_left
      self.x = (map_x * 128 - $game_map.display_x + 3) / 4 
      self.y = (map_y * 128 - $game_map.display_y + 3) / 4     
    elsif @object.anchor == :bottom_left
      self.ox = self.src_rect.width / 2
      self.x = ((map_x * 128 - $game_map.display_x + 3) / 4) + middlewidth 
      self.oy = self.src_rect.height
      self.y = ((map_y * 128 - $game_map.display_y + 3) / 4) -@tileheight + 32 + self.src_rect.height
    end
 
  # Je nachdem welche Priority gewählt wurde
    if map_z == 0
      self.z = self.y + 16 
    elsif map_z == 1
      self.z = self.y + 16 +32
    elsif map_z == 2
      self.z = self.y + 16 +64
    elsif map_z == 3
      self.z = self.y + 16 +96
    elsif map_z == 4
      self.z = self.y + 16 +128
    elsif map_z == 5
      self.z = self.y + 16 +160
    end
 
  end #def
 
  #--------------------------------------------------------------------------
  # * Tilt
  #--------------------------------------------------------------------------
  def tilt_left
    @tilt_frames = [5,10,20,15,10,5,0]
  end
  def tilt_right
    @tilt_frames = [-5,-10,-20,-15,-10,-5,0]
  end
  alias_method(:org_update_wo_tilting, :update)
  #--------------------------------------------------------------------------
  # * Update(*args)
  #--------------------------------------------------------------------------
  def update(*args)
    r = org_update_wo_tilting(*args)
    if @tilt_frames and not @tilt_frames.empty?
      self.angle = @tilt_frames.shift
      self.angle += 360 while self.angle < 0
      self.angle %= 360
    end
    return r
 end
end
 
#==============================================================================
# ** Spriteset_Map
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias_method( :aliased_initialize_method, :initialize )
  alias_method( :aliased_update_method, :update )
  alias_method( :aliased_dispose_method, :dispose )
 
  def initialize
    @map_object_sprites = []
    aliased_initialize_method
   if $game_switches[1] == true  
    for i in 0...$game_map.static_object.length
      sprite = Object_Sprite.new(@viewport1, $game_map.static_object[i])
      @map_object_sprites.push(sprite)
    end
   end  
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #-------------------------------------------------------------------------- 
  def dispose
    for sprite in @map_object_sprites
      sprite.dispose
    end
    aliased_dispose_method
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    aliased_update_method
    for sprite in @map_object_sprites
      sprite.update
    end
  end
end
 
#==============================================================================
# ** Interpreter
#==============================================================================
class Interpreter  
  #--------------------------------------------------------------------------
  # * change_opacity
  #     id             :ID des objektes
  #     wert           :Opacity-Wert
  #--------------------------------------------------------------------------
  def change_opacity(id, wert)
    static_object = $game_map.static_object
    until static_object[id].opacity < wert
    static_object[id].opacity -= 1
    end
    return true
  end
  #--------------------------------------------------------------------------
  # * tilt_character
  #     id             :ID des objektes
  #     dir            :Richtung des tiltens
  #--------------------------------------------------------------------------
  def tilt_character(id, dir='left')
#print("tilt_character ", id, ", ", dir)    
    char = get_character(id)
    if char
      spriteset = $scene.instance_variable_get(:@spriteset)
      map_object_sprites = spriteset.instance_variable_get(:@map_object_sprites)
      sprite = map_object_sprites[ id ]
 
      	case $game_player.direction
        	when 2 then sprite.tilt_left
        	when 4 then sprite.tilt_left
        	when 6 then sprite.tilt_right
        	when 8 then sprite.tilt_right
      	end
    end
    return true
  end
end
zum Lesen den Text mit der Maus markieren
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

This post has been edited 4 times, last edit by "Josey" (Aug 15th 2019, 12:56am)


Playm

RPG Studio Webmaster

  • Send private message

47

Wednesday, August 14th 2019, 11:30pm

Ich habe jetzt nicht alle Beiträge gelesen. Ich habe nur gelesen Irrlicht setzt scheinbar beim Login nicht den Haken für "Angemeldet bleiben" und das hier:

Zitat

Und mit Schleifen bin ich unsicher. Ist das im Interpreter überhauptmöglich? Brauch ich da ne Update-Methode oder so?

Nein, da stimmen deine Bedenken: Die Schleife sollte nicht im Interpreter ablaufen. Ja genau, Du machst das über eine Update-Methode. Genauer gesagt die Update Methode deines Sprites.

Was Du ja willst ist das jedes Mal, wenn der Bildschirm sich aktuallisiert, dass dann die Opacity ein kleines bisschen mehr faded.
Also ersetzt Du

Ruby Quellcode

151
       self.opacity = @object.opacity

durch

Ruby Quellcode

151
152
153
154
155
156
    if self.opacity > @object.opacity
      self.opacity -= 1
    end
    if self.opacity < @object.opacity
      self.opacity += 1
    end


Du hattest da schon die richtige Idee in deinem Beitrag. :-)

Warum es so wirkt, als würde die Schleife im Interpreter den Wert direkt setzen: Die Schleife läuft einmal komplett durch, bevor die Interpreter-Methode verlassen und das Spielgeschehen und der Bildschirm einmal geupdatet wird. Die ganze Schleife passiert also in einem Frame, in einem einzigen Moment.
Die Variante das Geschehen über mehrere Frames zu strecken und zuzulassen, dass zwischendurch sich die Spielfiguren bewegen und so ist die obige, dass man in der Update-Methode des Objekts immer einen kleinen Schritt in Richtung Ziel macht.

Sorry, dass ich den Rest des Threads jetzt ignoriere und nur auf diese Kleinigkeit eingehe.

Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

48

Thursday, August 15th 2019, 12:55am

Danke! :D

Im Interpreter hab ichs dann jetzt vereinfacht, oder ist das noch falsch?

Ruby Quellcode

1
2
3
4
5
6
7
8
class Interpreter  
  def change_opacity(id, wert)
    static_object = $game_map.static_object
    if static_object[id].opacity != wert
    static_object[id].opacity = wert  
    end
    return true
  end

Funktionieren tut es aktuell jedenfalls XD

Das hier wäre dann der aktuelle Code:
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
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
#==============================================================================
# ** Static Object
#------------------------------------------------------------------------------
#  Ein Sprite, der an einer Stelle einer bestimmten Map geladen wird (kann ein 
#  Tileset-Tile sein oder ein Picture) und dort verbleibt und manipuliert (angle,
#  hue, opacity) werden kann
#==============================================================================
 
#==============================================================================
# ** Map_Objekt
#==============================================================================
class Map_Object
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :map_x
  attr_reader :map_y
  attr_reader :anchor
  attr_reader :priority
  attr_reader :graphic
  attr_accessor :opacity
  attr_reader :angle
  attr_reader :hue
  attr_reader :tilestx
  attr_reader :tilesety
  attr_reader :tilewidth
  attr_reader :tileheight
  attr_reader :pic
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @map_x = 0
    @map_y = 0
    @anchor = :top_left
    @priority = 0
    @opacity = 255
    @angle = 0
    @hue = 0
    @graphic = ""
    @tilestx = 0 
    @tilesety = 0 
    @tilewidth = 0
    @tileheight = 0
    @pic = true
  end  
  #--------------------------------------------------------------------------
  # * Setup Picture
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #--------------------------------------------------------------------------
  def setup_pic( mapx, mapy, anchor, priority, pic=true )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
    @pic = pic
  end
  #--------------------------------------------------------------------------
  # * Setup Tileset
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #   tilesetx = Startpunkt des Ausschnitts im Tileset x (Pixel)
  #   tilesety = Startpunkt des Ausschnitts im Tileset y (Pixel)
  #   tilewidth = Wieviele Pixel breit
  #   tileheight = Wieviele Pixel hoch
  #--------------------------------------------------------------------------
  def setup_til( mapx, mapy, anchor, priority, tilestx, tilesety, tilewidth, tileheight, pic=false )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
    @tilestx = tilestx
    @tilesety = tilesety
    @tilewidth = tilewidth
    @tileheight = tileheight
    @pic = pic
  end
  #--------------------------------------------------------------------------
  # * Set Graphic
  #
  #     name           :Name der Grafik (Tileset oder Picture)
  #--------------------------------------------------------------------------
  def set_graphic( name )
    @graphic = name
  end
end
 
#==============================================================================
# ** Game_Map
#==============================================================================
class Game_Map
  #--------------------------------------------------------------------------
  # * Static_Object
  #--------------------------------------------------------------------------
  def static_object
    # wenn beim ersten Aufruf von $game_map.static_object der Array noch nicht
    # mit Werten gefüllt ist, fülle ihn erst mit Start-Werten auf
    if @static_object == nil
      @static_object = []
      for i in 0..49
        @static_object[i] = Map_Object.new()
      end
    end
    # gib den Array zurück
    return @static_object 
  end
 
# -> Sinnvoller zu löschen und jedes Mal neu zu erstellen oder sinnvoller
# im Spriteset_Map nur auf der bestimmten Map zu initializen?
 
#  alias_method(:aliased_setup_method, :setup )
#  def setup(map_id)
#    @static_object = nil
#    aliased_setup_method(map_id)
#  end  
 
end
 
 
#==============================================================================
# ** Object_Sprite
#==============================================================================
class Object_Sprite < Sprite
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(viewport, map_object)
    super(viewport)
    @object = map_object
    update
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if @graphic_name != @object.graphic
       @graphic_name = @object.graphic
       @tilestx = @object.tilestx
       @tilesety = @object.tilesety
       @tilewidth = @object.tilewidth
       @tileheight = @object.tileheight
    end
    if self.opacity > @object.opacity
      self.opacity -= 10
    end
    if self.opacity < @object.opacity
      self.opacity += 10
    end
 
       self.angle = @object.angle
 
  # Je nachdem welches Setup gewählt wurde
      if @graphic_name != ""
        if @object.pic == true
          self.bitmap = RPG::Cache.picture(@graphic_name)
        elsif @object.pic == false
          self.bitmap = RPG::Cache.tileset( @graphic_name )
          self.src_rect.set( @tilestx, @tilesety, @tilewidth, @tileheight)
        end
      else
        self.bitmap = nil
      end
 
  # Je nachdem welcher anchor gewählt wurde
    map_x = @object.map_x
    map_y = @object.map_y
    map_z = @object.priority
    middlewidth = @tilewidth / 2
 
    if @object.anchor == :top_left
      self.x = (map_x * 128 - $game_map.display_x + 3) / 4 
      self.y = (map_y * 128 - $game_map.display_y + 3) / 4     
    elsif @object.anchor == :bottom_left
      self.ox = self.src_rect.width / 2
      self.x = ((map_x * 128 - $game_map.display_x + 3) / 4) + middlewidth 
      self.oy = self.src_rect.height
      self.y = ((map_y * 128 - $game_map.display_y + 3) / 4) -@tileheight + 32 + self.src_rect.height
    end
 
  # Je nachdem welche Priority gewählt wurde
    if map_z == 0
      self.z = self.y + 16 
    elsif map_z == 1
      self.z = self.y + 16 +32
    elsif map_z == 2
      self.z = self.y + 16 +64
    elsif map_z == 3
      self.z = self.y + 16 +96
    elsif map_z == 4
      self.z = self.y + 16 +128
    elsif map_z == 5
      self.z = self.y + 16 +160
    end
 
  end #def
 
  #--------------------------------------------------------------------------
  # * Tilt
  #--------------------------------------------------------------------------
  def tilt_left
    @tilt_frames = [5,10,20,15,10,5,0]
  end
  def tilt_right
    @tilt_frames = [-5,-10,-20,-15,-10,-5,0]
  end
  #--------------------------------------------------------------------------
  # * Update(*args)
  #--------------------------------------------------------------------------
  alias_method(:org_update_wo_tilting, :update)
  def update(*args)
    r = org_update_wo_tilting(*args)
    if @tilt_frames and not @tilt_frames.empty?
      self.angle = @tilt_frames.shift
      self.angle += 360 while self.angle < 0
      self.angle %= 360
    end
    return r
  end
 
end
 
#==============================================================================
# ** Spriteset_Map
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias_method( :aliased_initialize_method, :initialize )
  alias_method( :aliased_update_method, :update )
  alias_method( :aliased_dispose_method, :dispose )
 
  def initialize
    @map_object_sprites = []
    aliased_initialize_method
   if $game_switches[1] == true  
    for i in 0...$game_map.static_object.length
      sprite = Object_Sprite.new(@viewport1, $game_map.static_object[i])
      @map_object_sprites.push(sprite)
    end
   end  
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #-------------------------------------------------------------------------- 
  def dispose
    for sprite in @map_object_sprites
      sprite.dispose
    end
    aliased_dispose_method
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    aliased_update_method
    for sprite in @map_object_sprites
      sprite.update
    end
  end
end
 
#==============================================================================
# ** Interpreter
#==============================================================================
class Interpreter  
  #--------------------------------------------------------------------------
  # * change_opacity
  #     id             :ID des objektes
  #     wert           :Opacity-Wert
  #--------------------------------------------------------------------------
  def change_opacity(id, wert)
    static_object = $game_map.static_object
    if static_object[id].opacity != wert
    static_object[id].opacity = wert  
    end
    return true
  end
  #--------------------------------------------------------------------------
  # * tilt_character
  #     id             :ID des objektes
  #     dir            :Richtung des tiltens
  #--------------------------------------------------------------------------
  def tilt_character(id, dir='left')
#print("tilt_character ", id, ", ", dir)    
    char = get_character(id)
    if char
      spriteset = $scene.instance_variable_get(:@spriteset)
      map_object_sprites = spriteset.instance_variable_get(:@map_object_sprites)
      sprite = map_object_sprites[ id ]
 
      	case $game_player.direction
        	when 2 then sprite.tilt_left
        	when 4 then sprite.tilt_left
        	when 6 then sprite.tilt_right
        	when 8 then sprite.tilt_right
      	end
    end
    return true
  end
 
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias_method( :aliased_update_method, :update )
  def update
    aliased_update_method
 
  end  
end
zum Lesen den Text mit der Maus markieren


@Irrlicht:
Willst du an was was ändern, muss es attr_accessor heißen, nicht reader.
@ nur verwenden, wenn ich einen Wert öfter brauche (?)
Stimmt das so?
Was bedeutet dieses "update(*args)"? Ist das eine normale Update-Methode, oder nur fürs tilten?
Nochmal meine Fragen aus dem letzten Post XD

Dazu jetzt noch: Gibt es eine sinnvolle alternative, außer alle X/Y-Koordinaten zu speichern, die mein Sprite überdeckt?
Kann ich irgendwie eine Art "Range" anlegen, die ich meinetwegen selbst im Setup eingebe, das macht mir nix XD
Ich stell mir das so vor:
Ich gebe eh X und Y an (bottom_left), das sind die Startkoordinaten der Range und ich geb dann noch eine länge und eine breite an, in dem Raum soll der Sprite durchsichtig werden und außerhalb undurchsichtig. Sowas müsste doch möglich sein? Auch wenn mehrere Sprites übereinander liegen.
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Send private message

49

Thursday, August 15th 2019, 8:20pm

Irrlicht setzt scheinbar beim Login nicht den Haken für "Angemeldet bleiben"
...
...
...
...nun, daran könnte es liegen. :)
*sucht sich eine dunkle Ecke*

Willst du an was was ändern, muss es attr_accessor heißen, nicht reader.
@ nur verwenden, wenn ich einen Wert öfter brauche (?)
Denke ja, ja. :)

attr_reader erstellt dir eine Methode um einen Wert zu lesen, attr_writer zum schreiben und attr_accessor zum lesen und schreiben.

Lokale Variablen verschwinden am Ende deiner Methode (bzw. Blocks in dem sie definiert wurden), Variablen mit @ am Anfang werden dauerhaft mit dem Objekt gespeichert, könntest du also verwenden wenn du noch irgendeine Methode in der Klasse hast die den Wert später nochmal verwendet.

Zum Beispiel ist in deinem Fall change_opacity die einzige Methode die die Variable benutzt, und für sie spielt es keine Rolle ob oder was in der Variable vorher gespeichert gewesen wäre da du den Wert im ersten Schritt neu festlegst.

Also, ja. :)

Was bedeutet dieses "update(*args)"? Ist das eine normale Update-Methode, oder nur fürs tilten?
Es ist eine normale update-Methode. An der Stelle benutzt du alias um deine update-Methode weiter oben zu erweitern und sie um die if-Abfrage fürs tilten zu ergänzen. Du könntest die Methoden also auch zusammenfassen wenn du magst, funktionieren tut aber beides.

Das *args ist ein spezieller Parameter der alle Werte mit der du die Methode aufrufst in einem Array zusammenfasst. (In der nächsten Zeile löst du das Array wieder auf und übergibst die Werte einzeln an die vorherige Version der Methode.) Du kannst diese Schreibweise verwenden wenn du dir nicht sicher bist wie viele Werte deine Methode braucht oder du die Parameter aus anderen Gründen nicht auflisten willst.

Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def printout(first, second = 12, *rest)
  p first, # <- Notwendiger Parameter, ein Wert muss übergeben werden
  second,  # <- Optionaler Parameter, wird ggf. hier mit 12 ergänzt
  rest  # <- Alle Werte die darüber hinaus übergeben wurden
end
 
printout(0)
# 0
# 12
# []
 
printout(1, 2, 3, 4, 5, 6, 7)
# 1
# 2
# [3, 4, 5, 6, 7]
zum Lesen den Text mit der Maus markieren


Ich gebe eh X und Y an (bottom_left), das sind die Startkoordinaten der Range und ich geb dann noch eine länge und eine breite an, in dem Raum soll der Sprite durchsichtig werden und außerhalb undurchsichtig. Sowas müsste doch möglich sein? Auch wenn mehrere Sprites übereinander liegen.
Ühm... du meinst so?
Attachment 24169

Wenn ja wäre eine Möglichkeit statt einen Object_Sprite drei Sprites zu verwenden und einen davon transparent zu machen:
Attachment 24170

(Muss leider gerade später ergänzt werden)

Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

50

Thursday, August 15th 2019, 9:54pm

Zu oben: Danke für die Erklärungen! :D
Also bräuchte ich nur eine updatemethode. Dann probier ich das mal! :D


Zu unten: Nein, so meinte ich das gar nicht, sorry, blöd ausgedrückt!
Der Sprite wird ja auf X und Y gelegt (unten links). Und der Sprite ist 4 Tiles breit und 5 lang. Sobald der Spieler sich in diesem Bereich aufhält, soll der Sprite durchsichtig werden, nicht nur, wenn er X/Y betritt, sondern X, X+1, X+2 und X+3 und Y, Y-1, Y-2, Y-3, Y-4 (eben je nach Größe des Bildes). Man könnte hier tilewidth und tileheight verwenden, die würde ich dann einfach auch noch in setup_pic einbauen und dann manuell angeben (ich weiß ja, wie groß das picture ist).
Sowas meinte ich :3
Mein Gedanke ist, dem Script über die Setup-Zahlen angeben zu können, dass der Spieler unter dem Sprite ist. Man müsste sie nur irgendwo abspeichern und ständig prüfen ... :/

Edit:
Das ständige Prüfen kann ich auch so machen wie bisher: Common-Event, das die X/Y-Koordinaten des Players ständig aktualisiert und ein Interpreterscript aufruft-> Dieses Script prüft bisher nur bestimmte Terraintags, da kann das auch noch prüfen, ob da ein Sprite drüber sitzt. Wie wüsste ich: Ich könnte eine game-switches-Variable anlegen und beim setzen des Sprites bestimmte Switche ON stellen (x=0 und y=0 wäre Switch [1], x=1 und y=0 wäre Switch 2, usw), so dass ich dann weiß, DASS da ein Sprite sitzt... aber das hilft mir dann noch nicht, zu erkennen, welcher Sprite (welche ID), das ist. ._.
Das ist der Schritt, der mir noch fehlt. Alles andere krieg ich auf die Josey-Art hin. Aber wie gesagt, ich kann dann zwar sagen "Auf Feld ID 150 [X=15 Y=12) liegt ein Sprite drüber, denn der zugehörige Switch ist On." aber nicht welcher Sprite es ist. Oder welche (können ja auch zwei sein, die sich überlappen)

Anderer Ansatz:
Ich könnte einfach sagen, wenn der Spieler sich so und soviele Tiles dem Mittelpunkt nähert, werd durchsichtig? >< Müsste ja zu speichern sein... andererseits sind alle Sprites unterschiedlich groß. Natürlich könnte ich diese Zahl einfach in den setup mit einbauen, so dass ich selber bei jedem Sprite die range bestimme, ab wann der Sprite durchsichtig werden soll. Wär jetzt auch nicht das Thema, ist ja nur für mich, das Script.
...vlt mit dem Hide&Xeek-Script?
Ich könnte Variablen hinterlegen, die die Mittelpunkt-Koordinaten des Sprites darstellen und dem H&S-Script sagen "Sprite A wird durchsichtig, wenn Spieler sich variable 1 und Variable 2 nähert".
Hm. Auch sehr kompliziert, muss doch einfacher gehen XD

Aktuelles Script (gerne mal gucken, ob ich irgendwo Murks gemacht hab oder was unnötig ist @_@)
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
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
#==============================================================================
# ** Static Object
#------------------------------------------------------------------------------
#  Ein Sprite, der an einer Stelle einer bestimmten Map geladen wird (kann ein 
#  Tileset-Tile sein oder ein Picture) und dort verbleibt und manipuliert (angle,
#  hue, opacity) werden kann
#==============================================================================
 
#==============================================================================
# ** Map_Objekt
#==============================================================================
class Map_Object
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :map_x
  attr_reader :map_y
  attr_reader :anchor
  attr_reader :priority
  attr_reader :graphic
  attr_accessor :opacity
  attr_reader :angle
  attr_reader :hue
  attr_reader :tilestx
  attr_reader :tilesety
  attr_reader :tilewidth
  attr_reader :tileheight
  attr_reader :pic
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @map_x = 0
    @map_y = 0
    @anchor = :top_left
    @priority = 0
    @opacity = 255
    @angle = 0
    @hue = 0
    @graphic = ""
    @tilestx = 0 
    @tilesety = 0 
    @tilewidth = 0
    @tileheight = 0
    @pic = true
  end  
  #--------------------------------------------------------------------------
  # * Setup Picture
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #--------------------------------------------------------------------------
  def setup_pic( mapx, mapy, anchor, priority, pic=true )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
    @pic = pic
  end
  #--------------------------------------------------------------------------
  # * Setup Tileset
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #   tilesetx = Startpunkt des Ausschnitts im Tileset x (Pixel)
  #   tilesety = Startpunkt des Ausschnitts im Tileset y (Pixel)
  #   tilewidth = Wieviele Pixel breit
  #   tileheight = Wieviele Pixel hoch
  #--------------------------------------------------------------------------
  def setup_til( mapx, mapy, anchor, priority, tilestx, tilesety, tilewidth, tileheight, pic=false )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
    @tilestx = tilestx
    @tilesety = tilesety
    @tilewidth = tilewidth
    @tileheight = tileheight
    @pic = pic
  end
  #--------------------------------------------------------------------------
  # * Set Graphic
  #
  #     name           :Name der Grafik (Tileset oder Picture)
  #--------------------------------------------------------------------------
  def set_graphic( name )
    @graphic = name
  end
end
 
#==============================================================================
# ** Game_Map
#==============================================================================
class Game_Map
  #--------------------------------------------------------------------------
  # * Static_Object
  #--------------------------------------------------------------------------
  def static_object
    # wenn beim ersten Aufruf von $game_map.static_object der Array noch nicht
    # mit Werten gefüllt ist, fülle ihn erst mit Start-Werten auf
    if @static_object == nil
      @static_object = []
      for i in 0..49
        @static_object[i] = Map_Object.new()
      end
    end
    # gib den Array zurück
    return @static_object 
  end
 
# -> Sinnvoller zu löschen und jedes Mal neu zu erstellen oder sinnvoller
# im Spriteset_Map nur auf der bestimmten Map zu initializen?
 
#  alias_method(:aliased_setup_method, :setup )
#  def setup(map_id)
#    @static_object = nil
#    aliased_setup_method(map_id)
#  end  
 
end
 
 
#==============================================================================
# ** Object_Sprite
#==============================================================================
class Object_Sprite < Sprite
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(viewport, map_object)
    super(viewport)
    @object = map_object
    update
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if @graphic_name != @object.graphic
       @graphic_name = @object.graphic
       @tilestx = @object.tilestx
       @tilesety = @object.tilesety
       @tilewidth = @object.tilewidth
       @tileheight = @object.tileheight
     end
       self.angle = @object.angle
 
  # Wenn die Opacity sich ändert  
    if self.opacity > @object.opacity
      self.opacity -= 10
    end
    if self.opacity < @object.opacity
      self.opacity += 10
    end
 
  # Je nachdem welches Setup gewählt wurde
      if @graphic_name != ""
        if @object.pic == true
          self.bitmap = RPG::Cache.picture(@graphic_name)
        elsif @object.pic == false
          self.bitmap = RPG::Cache.tileset( @graphic_name )
          self.src_rect.set( @tilestx, @tilesety, @tilewidth, @tileheight)
        end
      else
        self.bitmap = nil
      end
 
  # Je nachdem welcher anchor gewählt wurde
    map_x = @object.map_x
    map_y = @object.map_y
    map_z = @object.priority
    middlewidth = @tilewidth / 2
 
    if @object.anchor == :top_left
      self.x = (map_x * 128 - $game_map.display_x + 3) / 4 
      self.y = (map_y * 128 - $game_map.display_y + 3) / 4     
    elsif @object.anchor == :bottom_left
      self.ox = self.src_rect.width / 2
      self.x = ((map_x * 128 - $game_map.display_x + 3) / 4) + middlewidth 
      self.oy = self.src_rect.height
      self.y = ((map_y * 128 - $game_map.display_y + 3) / 4) -@tileheight + 32 + self.src_rect.height
    end
 
  # Je nachdem welche Priority gewählt wurde
    if map_z == 0
      self.z = self.y + 16 
    elsif map_z == 1
      self.z = self.y + 16 +32
    elsif map_z == 2
      self.z = self.y + 16 +64
    elsif map_z == 3
      self.z = self.y + 16 +96
    elsif map_z == 4
      self.z = self.y + 16 +128
    elsif map_z == 5
      self.z = self.y + 16 +160
    end
 
 # Wenn getiltet wird   
    if @tilt_frames and not @tilt_frames.empty?
      self.angle = @tilt_frames.shift
      self.angle += 360 while self.angle < 0
      self.angle %= 360
    end
 
  end #def
 
  #--------------------------------------------------------------------------
  # * Tilt
  #--------------------------------------------------------------------------
  def tilt_left
    @tilt_frames = [5,10,20,15,10,5,0]
  end
  def tilt_right
    @tilt_frames = [-5,-10,-20,-15,-10,-5,0]
  end    
end
 
#==============================================================================
# ** Spriteset_Map
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias_method( :aliased_initialize_method, :initialize )
  alias_method( :aliased_update_method, :update )
  alias_method( :aliased_dispose_method, :dispose )
 
  def initialize
    @map_object_sprites = []
    aliased_initialize_method
   if $game_switches[1] == true  
    for i in 0...$game_map.static_object.length
      sprite = Object_Sprite.new(@viewport1, $game_map.static_object[i])
      @map_object_sprites.push(sprite)
    end
   end  
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #-------------------------------------------------------------------------- 
  def dispose
    for sprite in @map_object_sprites
      sprite.dispose
    end
    aliased_dispose_method
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    aliased_update_method
    for sprite in @map_object_sprites
      sprite.update
    end
  end
end
 
#==============================================================================
# ** Interpreter
#==============================================================================
class Interpreter  
  #--------------------------------------------------------------------------
  # * change_opacity
  #     id             :ID des objektes
  #     wert           :Opacity-Wert
  #--------------------------------------------------------------------------
  def change_opacity(id, wert)
    static_object = $game_map.static_object
    if static_object[id].opacity != wert
    static_object[id].opacity = wert  
    end
    return true
  end
  #--------------------------------------------------------------------------
  # * tilt_character
  #     id             :ID des objektes
  #     dir            :Richtung des tiltens
  #--------------------------------------------------------------------------
  def tilt_character(id, dir='left')
#print("tilt_character ", id, ", ", dir)    
    char = get_character(id)
    if char
      spriteset = $scene.instance_variable_get(:@spriteset)
      map_object_sprites = spriteset.instance_variable_get(:@map_object_sprites)
      sprite = map_object_sprites[ id ]
 
      	case $game_player.direction
        	when 2 then sprite.tilt_left
        	when 4 then sprite.tilt_left
        	when 6 then sprite.tilt_right
        	when 8 then sprite.tilt_right
      	end
    end
    return true
  end
 
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias_method( :aliased_update_method, :update )
  def update
    aliased_update_method
 
  end  
end
zum Lesen den Text mit der Maus markieren
Josey has attached the following images:
  • Spieler nicht unterm Sprite.png
  • Spieler unterm Sprite.png
  • Spieler unterm Sprite 2.png
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

This post has been edited 5 times, last edit by "Josey" (Aug 17th 2019, 4:25pm)


Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Send private message

51

Sunday, August 18th 2019, 1:02am

Gerade nur eine relativ kurze Antwort:

Die einfachste Möglichkeit wäre vermutlich in der update-Methode deines Sprites ebenfalls zu überprüfen ob der Spieler im Bereich ist und die Transparenz entsprechend anzupassen.

Um zu überprüfen ob sich die Spielerkoordinate zwischen zwei Werten befindet reicht es ansich aus zu überprüfen ob sie größer/gleich der kleinsten- und gleichzeitig kleiner/gleich der größten möglichen Zahl ist.

Für den Ankerpunkt oben-links könnte das zum Beispiel so aussehen:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
opacity = @object.opacity
# Für @object.anchor == :top_left:
# Wenn Spielerkoordinaten innerhalb des Sprites liegen halbiere die Transparenz die
# dieser Sprite annehmen soll:
if $game_player.x >= map_x && $game_player.x <= map_x + (@tilewidth / 32) - 1 &&
    $game_player.y >= map_y && $game_player.y <= map_y + (@tileheight / 32) - 1
  opacity /= 2
end
# Passe die Transparenz des Sprites an den nun bestimmten Wert an (nach Playms Vorschlag):
if self.opacity < opacity
  self.opacity += 1
end
if self.opacity > opacity
  self.opacity -= 1
end


Die Grenzen für Unten-Mitte als Ankerpunkt müsstest du ggf. noch bestimmen wie es gehandhabt werden soll wenn der Sprite zwischen 2 Tiles startet und endet (wenn die Breite eine ungerade Anzahl Tiles ist).

Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

52

Sunday, August 18th 2019, 3:06am

Woah, das funktioniert! :D
Ein bisschen was musste ich noch anpassen >_<
Aber jetzt klappt es! :D
Ich probier das jetzt mit dem Anchor noch hinzukriegen! :D
Danke!

Edit: Hat geklappt! XD

So, eine Sache versuch ich grad noch zu automatisieren, weil ich grad so voll drin bin! XD
Ich versuche, dass das tilten automatisch geschieht, sobald der Chara EIN bestimmtes Feld betritt.

Ruby Quellcode

1
2
3
4
5
    tile_ox = map_x+(middlewidth/32)
     if $game_player.x == tile_ox && $game_player.y == map_y
       id_sprite = 
     $game_system.map_interpreter.tilt_character( id_sprite )
     end

Problem 1: Wie krieg ich die id des Sprites?
Und wieso kann ich kein Interpreter aufrufen? (Interpreter.tilt_character ging nicht) <- Danke Vergangenheits-Playm aus der PN, habs gefunden XD
Problem 2: Die Bewegung wird nicht richtig ausgeführt, bis der Charakter weitergeht (also wenn ich auf dem auslösenden Tile stehenbleibe, kippt der Sprite und bleibt so).
Wieso? :<

Zur sicherheit nochmal das aktuelle Script (ist das schlimm/kann ich verhindern, dass die opacity ständig auf 255 geupdatet wird?):
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
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
#==============================================================================
# ** Static Object
#------------------------------------------------------------------------------
#  Ein Sprite, der an einer Stelle einer bestimmten Map geladen wird (kann ein 
#  Tileset-Tile sein oder ein Picture) und dort verbleibt und manipuliert (angle,
#  hue, opacity) werden kann
#==============================================================================
 
#==============================================================================
# ** Map_Objekt
#==============================================================================
class Map_Object
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :map_x
  attr_reader :map_y
  attr_reader :anchor
  attr_reader :priority
  attr_reader :graphic
  attr_accessor :opacity
  attr_reader :angle
  attr_reader :hue
  attr_reader :tilestx
  attr_reader :tilesety
  attr_reader :tilewidth
  attr_reader :tileheight
  attr_reader :pic
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @map_x = 0
    @map_y = 0
    @anchor = :top_left
    @priority = 0
    @opacity = 255
    @angle = 0
    @hue = 0
    @graphic = ""
    @tilestx = 0 
    @tilesety = 0 
    @tilewidth = 0
    @tileheight = 0
    @pic = true
  end  
  #--------------------------------------------------------------------------
  # * Setup Picture
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #--------------------------------------------------------------------------
  def setup_pic( mapx, mapy, anchor, priority, pic=true )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
    @pic = pic
  end
  #--------------------------------------------------------------------------
  # * Setup Tileset
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #   tilesetx = Startpunkt des Ausschnitts im Tileset x (Pixel)
  #   tilesety = Startpunkt des Ausschnitts im Tileset y (Pixel)
  #   tilewidth = Wieviele Pixel breit
  #   tileheight = Wieviele Pixel hoch
  #--------------------------------------------------------------------------
  def setup_til( mapx, mapy, anchor, priority, tilestx, tilesety, tilewidth, tileheight, pic=false )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
    @tilestx = tilestx
    @tilesety = tilesety
    @tilewidth = tilewidth
    @tileheight = tileheight
    @pic = pic
  end
  #--------------------------------------------------------------------------
  # * Set Graphic
  #
  #     name           :Name der Grafik (Tileset oder Picture)
  #--------------------------------------------------------------------------
  def set_graphic( name )
    @graphic = name
  end
end
 
#==============================================================================
# ** Game_Map
#==============================================================================
class Game_Map
  #--------------------------------------------------------------------------
  # * Static_Object
  #--------------------------------------------------------------------------
  def static_object
    # wenn beim ersten Aufruf von $game_map.static_object der Array noch nicht
    # mit Werten gefüllt ist, fülle ihn erst mit Start-Werten auf
    if @static_object == nil
      @static_object = []
      for i in 0..49
        @static_object[i] = Map_Object.new()
      end
    end
    # gib den Array zurück
    return @static_object 
  end
end
 
#==============================================================================
# ** Object_Sprite
#==============================================================================
class Object_Sprite < Sprite
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(viewport, map_object)
    super(viewport)
    @object = map_object
    update
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if @graphic_name != @object.graphic
       @graphic_name = @object.graphic
       @tilestx = @object.tilestx
       @tilesety = @object.tilesety
       @tilewidth = @object.tilewidth
       @tileheight = @object.tileheight
     end
       self.angle = @object.angle
 
   opacity = @object.opacity
    map_x = @object.map_x
    map_y = @object.map_y
    map_z = @object.priority
    middlewidth = @tilewidth / 2
 
  # Wenn der Spieler unter dem Sprite ist  
    if @object.anchor == :top_left
      if $game_player.x >= map_x && $game_player.x <= map_x + (@tilewidth / 32) - 1 &&
       $game_player.y >= map_y && $game_player.y <= map_y + (@tileheight / 32) - 1
       opacity = 100
       @object.opacity = opacity
     else
       opacity = 255
       @object.opacity = opacity
      end    
    elsif @object.anchor == :bottom_left
      if $game_player.x >= map_x && $game_player.x <= map_x + (@tilewidth / 32) - 1 &&
       $game_player.y <= map_y && $game_player.y >= map_y - (@tileheight/32) + 1
       opacity = 105
       @object.opacity = opacity
     else
       opacity = 255
       @object.opacity = opacity
      end
    end  
 
  # Wenn die Opacity sich ändert  
    if self.opacity > @object.opacity
      self.opacity -= 10
    end
    if self.opacity < @object.opacity
      self.opacity += 10
    end
 
  # Je nachdem welches Setup gewählt wurde
      if @graphic_name != ""
        if @object.pic == true
          self.bitmap = RPG::Cache.picture(@graphic_name)
        elsif @object.pic == false
          self.bitmap = RPG::Cache.tileset( @graphic_name )
          self.src_rect.set( @tilestx, @tilesety, @tilewidth, @tileheight)
        end
      else
        self.bitmap = nil
      end
 
  # Je nachdem welcher anchor gewählt wurde
    if @object.anchor == :top_left
      self.x = (map_x * 128 - $game_map.display_x + 3) / 4 
      self.y = (map_y * 128 - $game_map.display_y + 3) / 4     
    elsif @object.anchor == :bottom_left
      self.ox = self.src_rect.width / 2
      self.x = ((map_x * 128 - $game_map.display_x + 3) / 4) + middlewidth 
      self.oy = self.src_rect.height
      self.y = ((map_y * 128 - $game_map.display_y + 3) / 4) -@tileheight + 32 + self.src_rect.height
    end
 
  # Je nachdem welche Priority gewählt wurde
    if map_z == 0
      self.z = self.y + 16 
    elsif map_z == 1
      self.z = self.y + 16 +32
    elsif map_z == 2
      self.z = self.y + 16 +64
    elsif map_z == 3
      self.z = self.y + 16 +96
    elsif map_z == 4
      self.z = self.y + 16 +128
    elsif map_z == 5
      self.z = self.y + 16 +160
    end
 
 # Wenn getiltet wird   
    if @tilt_frames and not @tilt_frames.empty?
      self.angle = @tilt_frames.shift
      self.angle += 360 while self.angle < 0
      self.angle %= 360
    end
 
    tile_ox = map_x+(middlewidth/32)
     if $game_player.x == tile_ox && $game_player.y == map_y
     id_sprite = 0
     $game_system.map_interpreter.tilt_character( id_sprite )
     end  
  end #def
 
  #--------------------------------------------------------------------------
  # * Tilt
  #--------------------------------------------------------------------------
  def tilt_left
    @tilt_frames = [5,10,20,15,10,5,0]
  end
  def tilt_right
    @tilt_frames = [-5,-10,-20,-15,-10,-5,0]
  end    
end
 
#==============================================================================
# ** Spriteset_Map
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias_method( :aliased_initialize_method, :initialize )
  alias_method( :aliased_update_method, :update )
  alias_method( :aliased_dispose_method, :dispose )
 
  def initialize
    @map_object_sprites = []
    aliased_initialize_method
   if $game_switches[1] == true  
    for i in 0...$game_map.static_object.length
      sprite = Object_Sprite.new(@viewport1, $game_map.static_object[i])
      @map_object_sprites.push(sprite)
    end
   end  
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #-------------------------------------------------------------------------- 
  def dispose
    for sprite in @map_object_sprites
      sprite.dispose
    end
    aliased_dispose_method
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    aliased_update_method
    for sprite in @map_object_sprites
      sprite.update
    end
  end
end
 
#==============================================================================
# ** Interpreter
#==============================================================================
class Interpreter  
  #--------------------------------------------------------------------------
  # * change_opacity
  #     id             :ID des objektes
  #     wert           :Opacity-Wert
  #--------------------------------------------------------------------------
  def change_opacity(id, wert)
    static_object = $game_map.static_object
    if static_object[id].opacity != wert
    static_object[id].opacity = wert  
    end
    return true
  end
  #--------------------------------------------------------------------------
  # * tilt_character
  #     id             :ID des objektes
  #     dir            :Richtung des tiltens
  #--------------------------------------------------------------------------
  def tilt_character(id, dir='left')
#print("tilt_character ", id, ", ", dir)    
    char = get_character(id)
    if char
      spriteset = $scene.instance_variable_get(:@spriteset)
      map_object_sprites = spriteset.instance_variable_get(:@map_object_sprites)
      sprite = map_object_sprites[ id ]
 
      	case $game_player.direction
        	when 2 then sprite.tilt_left
        	when 4 then sprite.tilt_left
        	when 6 then sprite.tilt_right
        	when 8 then sprite.tilt_right
      	end
    end
    return true
  end
 
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias_method( :aliased_update_method, :update )
  def update
    aliased_update_method
 
  end  
end
zum Lesen den Text mit der Maus markieren
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

This post has been edited 2 times, last edit by "Josey" (Aug 18th 2019, 2:44am)


Playm

RPG Studio Webmaster

  • Send private message

53

Sunday, August 18th 2019, 9:16am

Wieder nur ein kurzer Einwurf zum Tilten:
1. Du bist schon im Kontext des Sprites. Du musst also nicht den Interpreter aufrufen, der dir den Sprite besorgt. Du kannst einfach deine Methode tilt_left, tilt_right aufrufen. Witzigerweise steht sogar nur ein paar Zeilen darunter, dass die Methoden in dieser Klasse definiert werden.
2. Du möchtest ja nur tilten, wenn nicht schon getiltet wird (dein Beschriebener Effekt) und Du hast zufällig gerade einen if-Block der fragt, ob gerade zu tilten ist. Probier einfach da einen else-Block anzuhängen, der wenn nicht getiltet wird prüft, ob gerade getiltet werden sollte und es ausführt.

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 # Wenn getiltet wird   
    if @tilt_frames and not @tilt_frames.empty?
      self.angle = @tilt_frames.shift
      self.angle += 360 while self.angle < 0
      self.angle %= 360
    else
      tile_ox = map_x+(middlewidth/32)
      if $game_player.x == tile_ox && $game_player.y == map_y
        case $game_player.direction
          when 2 then self.tilt_left # Die Methode tilt_left ist in genau dieser Klasse definiert
          when 4 then self.tilt_left # kein Grund den Umweg über den Interpreter zu gehen
          when 6 then self.tilt_right
          when 8 then self.tilt_right
      	end
      end
    end


Grüße an Irrlicht, der die "ich Antworte nur auf 50% deines Beitrages"-Technik von mir übernommen hat. :victory:

Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

54

Sunday, August 18th 2019, 8:51pm

Erstmal danke! XD
Manchmal bin ich blöd XD°

Jetzt ist das Sprite aber auf Ecstasy wenn ich auf den Koordinaten stehen bleibe XD
(heißt: Er tiltet fröhlich immer weiter vor sich hin, er soll es abe rnur einmal pro "Playertouch" machen)
Hilfe? :<


Und die 50% haben ja bisher ausgereicht, ich frage ja hartnäckig weiter und probiere rum :P

Hier nochmal die Frage die mich nebenbei bewegt: Ist es schlimm/kann ich es verhindern, dass die opacity ständig auf 255 geupdatet wird?
Ich hatte zwischendurch probiert, so ein internes Dings zu bauen und auf "false" und "true" zu stellen, so dass die opacity nur auf 255 geupdet wird, wenn sie vorher einmal auf 105 war... aber es hat nicht geklappt XD°
Brauch ich was ähnliches hier? o.o

Edit: Testweise hab ich mal einen Switch zwsichengeschaltet (der ON gemacht wird, wenn tilt ausgeführt wird und OFF, sobald ich eine Pfeiltaste drücke), aber das Tilten kommt trotzdem noch zweimal, statt einmal :/
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

This post has been edited 1 times, last edit by "Josey" (Aug 18th 2019, 8:51pm)


Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Send private message

55

Wednesday, August 21st 2019, 4:29pm

Hier nochmal die Frage die mich nebenbei bewegt: Ist es schlimm/kann ich es verhindern, dass die opacity ständig auf 255 geupdatet wird?

Bin mir nicht 100% sicher ob ich verstanden habe was du meinst, aber ein Nachteil diese Abfragen in die update-Methode deiner Sprites zu stecken ist dass die Sprites zwischenzeitlich gelöscht werden können. Werden sie dann neu erstellt hast du ohne weiteres keine Information mehr darüber welche Opacity sie zum Zeitpunkt des Löschens hatten.

Standardmäßig starten Sprites die du erstellst mit einem Opacity-Wert von 255. In deinem Fall würde sich der Sprite dann jedes Mal wenn der Spieler den Map-Bildschirm betritt aufs Neue über die update-Methode langsam wieder korrigieren.

Du könntest das beheben indem du den Opacity-Wert in der initialize-Methode deines Sprites neu festlegst. Je nach dem wie wichtig dir die Fade-Animation ist könnst du die Opacity entweder direkt auf den Zielwert setzen oder du müsstest z.B. regelmäßig den Opacity-Zustand deines Sprites im zugehörigen Map_Object speichern um den genauen Wert wieder bestimmen zu können.

Jetzt ist das Sprite aber auf Ecstasy wenn ich auf den Koordinaten stehen bleibe XD
[...]
Edit: Testweise hab ich mal einen Switch zwsichengeschaltet

Ein Switch ist an der Stelle eigentlich keine schlechte Idee.
Dein Ziel ist es unterscheiden zu können ob der Spieler das Feld gerade erst betreten hat (bzw. seitdem er es betreten hat noch nicht getiltet wurde). Dafür reichen 2 Zustände:

Wenn sich der Spieler auf der Position befindet und noch nicht getiltet wurde, setze die Variable auf true;

Wenn sich der Spieler nicht (mehr) auf der Position befindet aber die Variable noch auf true gesetzt ist, setze sie wieder zurück.

(Könnte letztlich so aussehen):
Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
if !@already_tilted && $game_player.x == tile_ox && $game_player.y == map_y
  @already_tilted = true  # <- Für das nächste Update speichern dass der Sprite schon getiltet wurde
    ...  # <- Code fürs tilten hier
end
if @already_tilted && ($game_player.x != tile_ox || $game_player.y != map_y)
  @already_tilted = false  # <- Wenn der Spieler das Feld (wieder) verlassen hat setze die Variable zurück.
end
zum Lesen den Text mit der Maus markieren

Da der Sprite gelöscht werden könnte wäre es bei dieser Lösung ggf. nötig die Switch-Variable z.B. als Variable im Map_Object zu speichern anstatt direkt im Sprite.



Grüße an Irrlicht, der die "ich Antworte nur auf 50% deines Beitrages"-Technik von mir übernommen hat. :victory:
Man lernt nie aus. =)
*grüßt zurück*

This post has been edited 4 times, last edit by "Irrlicht" (Aug 21st 2019, 6:16pm)


Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

56

Today, 1:54am

Ich brauche die Info nicht, welche opacity ein Sprite beim Löschen hatte. Die Sprite sind bei mir im Spiel 1.) Dächer von Gebäuden auf der Farm, die werden nur in einem speziellen Menü verrückt. 2.) Bäume auf dem Feld, die können zwar gefällt werden, während sie durchsichtig sind (wenn der Spieler dahintersteht), aber dann sind sie ja komplett weg und spawnen nicht neu, bis sie neu gepflanzt werden.
Mir gehts um diese Stelle:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  # Opacity; wenn der Spieler unter dem Sprite ist
    if @object.anchor == :top_left
      if $game_player.x >= map_x && $game_player.x <= map_x + (@tilewidth / 32) - 1 &&
       $game_player.y >= map_y && $game_player.y <= map_y + (@tileheight / 32) - 1
       opacity = 100
       @object.opacity = opacity
     else
       opacity = 255
       @object.opacity = opacity
      end    
    elsif @object.anchor == :bottom_left
      if $game_player.x >= map_x && $game_player.x <= map_x + (@tilewidth / 32) - 1 &&
       $game_player.y <= map_y && $game_player.y >= map_y - (@tileheight/32) + 1
       opacity = 105
       @object.opacity = opacity
     else
       opacity = 255
       @object.opacity = opacity
      end
    end  

else opacity = 255
Heißt, wenn der Spieler NICHT unter dem Sprite ist, wird die opacity permanent auf 255 geupdatet. Ist das schlimm für die Performance, dass die opacitys von allen Sprites ständig geupdatet wird?
Es funktioniert aber alles XD

Zum tilten:
Supi, jetzt macht ers nur einmal XD
Ich musste etwas hin und herschieben, abr jetzt klappts, hatte zwischendurch echt merkwürdige Reaktionen beim tilten XD
*dance* \o/
Danke! XD
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
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
#==============================================================================
# ** Static Object
#------------------------------------------------------------------------------
#  Ein Sprite, der an einer Stelle einer bestimmten Map geladen wird (kann ein 
#  Tileset-Tile sein oder ein Picture) und dort verbleibt und manipuliert (angle,
#  hue, opacity) werden kann
#==============================================================================
 
#==============================================================================
# ** Map_Objekt
#==============================================================================
class Map_Object
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :map_x
  attr_reader :map_y
  attr_reader :anchor
  attr_reader :priority
  attr_reader :graphic
  attr_accessor :opacity
  attr_reader :angle
  attr_reader :hue
  attr_reader :tilestx
  attr_reader :tilesety
  attr_reader :tilewidth
  attr_reader :tileheight
  attr_reader :pic
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @map_x = 0
    @map_y = 0
    @anchor = :top_left
    @priority = 0
    @opacity = 255
    @angle = 0
    @hue = 0
    @graphic = ""
    @tilestx = 0 
    @tilesety = 0 
    @tilewidth = 0
    @tileheight = 0
    @pic = true
  end  
  #--------------------------------------------------------------------------
  # * Setup Picture
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #--------------------------------------------------------------------------
  def setup_pic( mapx, mapy, anchor, priority, pic=true )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
    @pic = pic
  end
  #--------------------------------------------------------------------------
  # * Setup Tileset
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #   tilesetx = Startpunkt des Ausschnitts im Tileset x (Pixel)
  #   tilesety = Startpunkt des Ausschnitts im Tileset y (Pixel)
  #   tilewidth = Wieviele Pixel breit
  #   tileheight = Wieviele Pixel hoch
  #--------------------------------------------------------------------------
  def setup_til( mapx, mapy, anchor, priority, tilestx, tilesety, tilewidth, tileheight, pic=false )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
    @tilestx = tilestx
    @tilesety = tilesety
    @tilewidth = tilewidth
    @tileheight = tileheight
    @pic = pic
  end
  #--------------------------------------------------------------------------
  # * Set Graphic
  #
  #     name           :Name der Grafik (Tileset oder Picture)
  #--------------------------------------------------------------------------
  def set_graphic( name )
    @graphic = name
  end
end
 
#==============================================================================
# ** Game_Map
#==============================================================================
class Game_Map
  #--------------------------------------------------------------------------
  # * Static_Object
  #--------------------------------------------------------------------------
  def static_object
    # wenn beim ersten Aufruf von $game_map.static_object der Array noch nicht
    # mit Werten gefüllt ist, fülle ihn erst mit Start-Werten auf
    if @static_object == nil
      @static_object = []
      for i in 0..49
        @static_object[i] = Map_Object.new()
      end
    end
    # gib den Array zurück
    return @static_object 
  end  
end
 
#==============================================================================
# ** Object_Sprite
#==============================================================================
class Object_Sprite < Sprite
  attr_reader :already_tilted
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(viewport, map_object)
    super(viewport)
    @object = map_object
    @already_tilted = false
    update
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
  # Werte festlegen und errechnen
    if @graphic_name != @object.graphic
       @graphic_name = @object.graphic
       @tilestx = @object.tilestx
       @tilesety = @object.tilesety
       @tilewidth = @object.tilewidth
       @tileheight = @object.tileheight
    end
       self.angle = @object.angle
    opacity = @object.opacity
    map_x = @object.map_x
    map_y = @object.map_y
    map_z = @object.priority
    middlewidth = @tilewidth / 2
    tile_ox = map_x+(middlewidth/32)
 
  # Opacity; wenn der Spieler unter dem Sprite ist
    if @object.anchor == :top_left
      if $game_player.x >= map_x && $game_player.x <= map_x + (@tilewidth / 32) - 1 &&
       $game_player.y >= map_y && $game_player.y <= map_y + (@tileheight / 32) - 1
       opacity = 100
       @object.opacity = opacity
     else
       opacity = 255
       @object.opacity = opacity
      end    
    elsif @object.anchor == :bottom_left
      if $game_player.x >= map_x && $game_player.x <= map_x + (@tilewidth / 32) - 1 &&
       $game_player.y <= map_y && $game_player.y >= map_y - (@tileheight/32) + 1
       opacity = 105
       @object.opacity = opacity
     else
       opacity = 255
       @object.opacity = opacity
      end
    end  
 
  # Opacity; wenn die Opacity sich ändert  
    if self.opacity > @object.opacity
      self.opacity -= 10
    end
    if self.opacity < @object.opacity
      self.opacity += 10
    end
 
  # Setup; je nachdem welches Setup gewählt wurde
      if @graphic_name != ""
        if @object.pic == true
          self.bitmap = RPG::Cache.picture(@graphic_name)
        elsif @object.pic == false
          self.bitmap = RPG::Cache.tileset( @graphic_name )
          self.src_rect.set( @tilestx, @tilesety, @tilewidth, @tileheight)
        end
      else
        self.bitmap = nil
      end
 
  # Anchor; je nachdem welcher anchor gewählt wurde
    if @object.anchor == :top_left
      self.x = (map_x * 128 - $game_map.display_x + 3) / 4 
      self.y = (map_y * 128 - $game_map.display_y + 3) / 4     
    elsif @object.anchor == :bottom_left
      self.ox = self.src_rect.width / 2
      self.x = ((map_x * 128 - $game_map.display_x + 3) / 4) + middlewidth 
      self.oy = self.src_rect.height
      self.y = ((map_y * 128 - $game_map.display_y + 3) / 4) -@tileheight + 32 + self.src_rect.height
    end
 
  # Priority, je nachdem welche Priority gewählt wurde
    if map_z == 0
      self.z = self.y + 16 
    elsif map_z == 1
      self.z = self.y + 16 +32
    elsif map_z == 2
      self.z = self.y + 16 +64
    elsif map_z == 3
      self.z = self.y + 16 +96
    elsif map_z == 4
      self.z = self.y + 16 +128
    elsif map_z == 5
      self.z = self.y + 16 +160
    end
 
 # Tilt; wenn getiltet wird   
    if @tilt_frames and not @tilt_frames.empty?
      self.angle = @tilt_frames.shift
      self.angle += 360 while self.angle < 0
      self.angle %= 360
    else
      if !@already_tilted && $game_player.x == tile_ox && $game_player.y == map_y#$game_player.x == tile_ox && $game_player.y == map_y
        @already_tilted = true  # <- Für das nächste Update speichern dass der Sprite schon getiltet wurde
        case $game_player.direction
          when 2 then self.tilt_left 
          when 4 then self.tilt_left 
          when 6 then self.tilt_right
          when 8 then self.tilt_right
      	end
      end
    end
   if @already_tilted && ($game_player.x != tile_ox || $game_player.y != map_y)
     @already_tilted = false  # <- Wenn der Spieler das Feld (wieder) verlassen hat setze die Variable zurück.
   end
 
if Input.trigger?(Input::A)
#p tile_ox, map_y, middlewidth, @object
p @already_tilted
end     
  end #def
 
  #--------------------------------------------------------------------------
  # * Tilt
  #--------------------------------------------------------------------------
  def tilt_left
    @tilt_frames = [5,10,20,15,10,5,0]
  end
  def tilt_right
    @tilt_frames = [-5,-10,-20,-15,-10,-5,0]
  end    
end
 
#==============================================================================
# ** Spriteset_Map
#==============================================================================
class Spriteset_Map
  alias_method( :aliased_initialize_method, :initialize )
  alias_method( :aliased_update_method, :update )
  alias_method( :aliased_dispose_method, :dispose )
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------  
  def initialize
    @map_object_sprites = []
    aliased_initialize_method
   if $game_switches[1] == true  
    for i in 0...$game_map.static_object.length
      sprite = Object_Sprite.new(@viewport1, $game_map.static_object[i])
      @map_object_sprites.push(sprite)
    end
   end  
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #-------------------------------------------------------------------------- 
  def dispose
    for sprite in @map_object_sprites
      sprite.dispose
    end
    aliased_dispose_method
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    aliased_update_method
    for sprite in @map_object_sprites
      sprite.update
    end
  end
end
 
#==============================================================================
# ** Interpreter
#==============================================================================
class Interpreter  
  #--------------------------------------------------------------------------
  # * change_opacity
  #     id             :ID des objektes
  #     wert           :Opacity-Wert
  #--------------------------------------------------------------------------
  def change_opacity(id, wert)
    static_object = $game_map.static_object
    if static_object[id].opacity != wert
    static_object[id].opacity = wert  
    end
    return true
  end
  #--------------------------------------------------------------------------
  # * tilt_character
  #     id             :ID des objektes
  #     dir            :Richtung des tiltens
  #--------------------------------------------------------------------------
  def tilt_character(id, dir='left')
#print("tilt_character ", id, ", ", dir)    
    char = get_character(id)
    if char
      spriteset = $scene.instance_variable_get(:@spriteset)
      map_object_sprites = spriteset.instance_variable_get(:@map_object_sprites)
      sprite = map_object_sprites[ id ]
 
      	case $game_player.direction
        	when 2 then sprite.tilt_left
        	when 4 then sprite.tilt_left
        	when 6 then sprite.tilt_right
        	when 8 then sprite.tilt_right
      	end
    end
    return true
  end
 
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias_method( :aliased_update_method, :update )
  def update
    aliased_update_method
 
  end  
end
zum Lesen den Text mit der Maus markieren


Noch was anderes XD
Ich hab mir ein Interpreterscript gebastelt, um zu probieren, ob ich das Script ohne Probleme aufrufen kann.

Ruby Quellcode

1
2
3
4
5
6
class Interpreter
  def boom
$game_map.static_object[5].set_graphic( "001-Grassland01")
$game_map.static_object[5].setup_til(4,15,:bottom_left,5,0,160,4*32,160)
end
end  

Wenn ich nun aber über ein Callscript "boom" aufrufe, taucht der Baum zwar auf, aber das Spiel hängt sich auf. Wieso? XD
Ich muss diesen Aufruf in meine Scripts integrieren, sonst klappt das alles nicht >_<
Wenn ich "setup_til" wegnehme, sagt er mir, im Picture-Ordner gäbe es kein Grassland und diesen Code hier führt er im Interpreter aus:

Ruby Quellcode

1
2
$game_map.static_object[1].set_graphic( "Mpname.png" )
$game_map.static_object[1].setup_pic(3,10,:top_left,1)

Beim Tileset stockt er aber.
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

This post has been edited 5 times, last edit by "Josey" (Today, 1:54am)


Social bookmarks