Lieber Besucher, herzlich willkommen bei: RPG Studio - Make your World real. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Montag, 21. September 2009, 22:59

Battle Animation Priorität ändern?

Servus ^^

Ich rätsel schon ne Weile an dem problem... Also:

Man kann ja bestimmte picture IDs auf einen anderen viewport setzen.. um sie zum Beispiel unter dem held anzuzeigen.. oder ganz unter der map als panorama..etc

Was ich brauche.. Das selbe prinzip.. nur für Battle Animations.
Ich brauch ein Script, welches von mir gegebene Battle Animation IDs ( müssen keine Fortlaufenden ID-Nummern sein ), auf der selben Priorität wie der Held angezeigt werden.


kurz und knackig: kann das wer machen (wenn´s denn möglich iss)???
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

2

Dienstag, 22. September 2009, 10:29

Dafür brauchst du erstmal das RPG::Sprite-Skript aus der Helpdatei:
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
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
module RPG
  class Sprite < ::Sprite
	@@_animations = []
	@@_reference_count = {}
 
	def initialize(viewport = nil)
  	super(viewport)
  	@_whiten_duration = 0
  	@_appear_duration = 0
  	@_escape_duration = 0
  	@_collapse_duration = 0
  	@_damage_duration = 0
  	@_animation_duration = 0
  	@_blink = false
	end
 
	def dispose
  	dispose_damage
  	dispose_animation
  	dispose_loop_animation
  	super
	end
 
	def whiten
  	self.blend_type = 0
  	self.color.set(255, 255, 255, 128)
  	self.opacity = 255
  	@_whiten_duration = 16
  	@_appear_duration = 0
  	@_escape_duration = 0
  	@_collapse_duration = 0
	end
 
	def appear
  	self.blend_type = 0
  	self.color.set(0, 0, 0, 0)
  	self.opacity = 0
  	@_appear_duration = 16
  	@_whiten_duration = 0
  	@_escape_duration = 0
  	@_collapse_duration = 0
	end
 
	def escape
  	self.blend_type = 0
  	self.color.set(0, 0, 0, 0)
  	self.opacity = 255
  	@_escape_duration = 32
  	@_whiten_duration = 0
  	@_appear_duration = 0
  	@_collapse_duration = 0
	end
 
	def collapse
  	self.blend_type = 1
  	self.color.set(255, 64, 64, 255)
  	self.opacity = 255
  	@_collapse_duration = 48
  	@_whiten_duration = 0
  	@_appear_duration = 0
  	@_escape_duration = 0
	end
 
	def damage(value, critical)
  	dispose_damage
  	if value.is_a?(Numeric)
    	damage_string = value.abs.to_s
  	else
    	damage_string = value.to_s
  	end
  	bitmap = Bitmap.new(160, 48)
  	bitmap.font.name = "Arial Black"
  	bitmap.font.size = 32
  	bitmap.font.color.set(0, 0, 0)
  	bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  	bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  	bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  	bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  	if value.is_a?(Numeric) and value < 0
    	bitmap.font.color.set(176, 255, 144)
  	else
    	bitmap.font.color.set(255, 255, 255)
  	end
  	bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  	if critical
    	bitmap.font.size = 20
    	bitmap.font.color.set(0, 0, 0)
    	bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
    	bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
    	bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
    	bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
    	bitmap.font.color.set(255, 255, 255)
    	bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  	end
  	@_damage_sprite = ::Sprite.new(self.viewport)
  	@_damage_sprite.bitmap = bitmap
  	@_damage_sprite.ox = 80
  	@_damage_sprite.oy = 20
  	@_damage_sprite.x = self.x
  	@_damage_sprite.y = self.y - self.oy / 2
  	@_damage_sprite.z = 3000
  	@_damage_duration = 40
	end
 
	def animation(animation, hit)
  	dispose_animation
  	@_animation = animation
  	return if @_animation == nil
  	@_animation_hit = hit
  	@_animation_duration = @_animation.frame_max
  	animation_name = @_animation.animation_name
  	animation_hue = @_animation.animation_hue
  	bitmap = RPG::Cache.animation(animation_name, animation_hue)
  	if @@_reference_count.include?(bitmap)
    	@@_reference_count[bitmap] += 1
  	else
    	@@_reference_count[bitmap] = 1
  	end
  	@_animation_sprites = []
  	if @_animation.position != 3 or not @@_animations.include?(animation)
    	for i in 0..15
      	sprite = ::Sprite.new(self.viewport)
      	sprite.bitmap = bitmap
      	sprite.visible = false
      	@_animation_sprites.push(sprite)
    	end
    	unless @@_animations.include?(animation)
      	@@_animations.push(animation)
    	end
  	end
  	update_animation
	end
 
	def loop_animation(animation)
  	return if animation == @_loop_animation
  	dispose_loop_animation
  	@_loop_animation = animation
  	return if @_loop_animation == nil
  	@_loop_animation_index = 0
  	animation_name = @_loop_animation.animation_name
  	animation_hue = @_loop_animation.animation_hue
  	bitmap = RPG::Cache.animation(animation_name, animation_hue)
  	if @@_reference_count.include?(bitmap)
    	@@_reference_count[bitmap] += 1
  	else
    	@@_reference_count[bitmap] = 1
  	end
  	@_loop_animation_sprites = []
  	for i in 0..15
    	sprite = ::Sprite.new(self.viewport)
    	sprite.bitmap = bitmap
    	sprite.visible = false
    	@_loop_animation_sprites.push(sprite)
  	end
  	update_loop_animation
	end
 
	def dispose_damage
  	if @_damage_sprite != nil
    	@_damage_sprite.bitmap.dispose
    	@_damage_sprite.dispose
    	@_damage_sprite = nil
    	@_damage_duration = 0
  	end
	end
 
	def dispose_animation
  	if @_animation_sprites != nil
    	sprite = @_animation_sprites[0]
    	if sprite != nil
      	@@_reference_count[sprite.bitmap] -= 1
      	if @@_reference_count[sprite.bitmap] == 0
        	sprite.bitmap.dispose
      	end
    	end
    	for sprite in @_animation_sprites
      	sprite.dispose
    	end
    	@_animation_sprites = nil
    	@_animation = nil
  	end
	end
 
	def dispose_loop_animation
  	if @_loop_animation_sprites != nil
    	sprite = @_loop_animation_sprites[0]
    	if sprite != nil
      	@@_reference_count[sprite.bitmap] -= 1
      	if @@_reference_count[sprite.bitmap] == 0
        	sprite.bitmap.dispose
      	end
    	end
    	for sprite in @_loop_animation_sprites
      	sprite.dispose
    	end
    	@_loop_animation_sprites = nil
    	@_loop_animation = nil
  	end
	end
 
	def blink_on
  	unless @_blink
    	@_blink = true
    	@_blink_count = 0
  	end
	end
 
	def blink_off
  	if @_blink
    	@_blink = false
    	self.color.set(0, 0, 0, 0)
  	end
	end
 
	def blink?
  	@_blink
	end
 
	def effect?
  	@_whiten_duration > 0 or
  	@_appear_duration > 0 or
  	@_escape_duration > 0 or
  	@_collapse_duration > 0 or
  	@_damage_duration > 0 or
  	@_animation_duration > 0
	end
 
	def update
  	super
  	if @_whiten_duration > 0
    	@_whiten_duration -= 1
    	self.color.alpha = 128 - (16 - @_whiten_duration) * 10
  	end
  	if @_appear_duration > 0
    	@_appear_duration -= 1
    	self.opacity = (16 - @_appear_duration) * 16
  	end
  	if @_escape_duration > 0
    	@_escape_duration -= 1
    	self.opacity = 256 - (32 - @_escape_duration) * 10
  	end
  	if @_collapse_duration > 0
    	@_collapse_duration -= 1
    	self.opacity = 256 - (48 - @_collapse_duration) * 6
  	end
  	if @_damage_duration > 0
    	@_damage_duration -= 1
    	case @_damage_duration
    	when 38..39
      	@_damage_sprite.y -= 4
    	when 36..37
      	@_damage_sprite.y -= 2
    	when 34..35
      	@_damage_sprite.y += 2
    	when 28..33
      	@_damage_sprite.y += 4
    	end
    	@_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
    	if @_damage_duration == 0
      	dispose_damage
    	end
  	end
  	if @_animation != nil and (Graphics.frame_count % 2 == 0)
    	@_animation_duration -= 1
    	update_animation
  	end
  	if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
    	update_loop_animation
    	@_loop_animation_index += 1
    	@_loop_animation_index %= @_loop_animation.frame_max
  	end
  	if @_blink
    	@_blink_count = (@_blink_count + 1) % 32
    	if @_blink_count < 16
      	alpha = (16 - @_blink_count) * 6
    	else
      	alpha = (@_blink_count - 16) * 6
    	end
    	self.color.set(255, 255, 255, alpha)
  	end
  	@@_animations.clear
	end
 
	def update_animation
  	if @_animation_duration > 0
    	frame_index = @_animation.frame_max - @_animation_duration
    	cell_data = @_animation.frames[frame_index].cell_data
    	position = @_animation.position
    	animation_set_sprites(@_animation_sprites, cell_data, position)
    	for timing in @_animation.timings
      	if timing.frame == frame_index
        	animation_process_timing(timing, @_animation_hit)
      	end
    	end
  	else
    	dispose_animation
  	end
	end
 
	def update_loop_animation
  	frame_index = @_loop_animation_index
  	cell_data = @_loop_animation.frames[frame_index].cell_data
  	position = @_loop_animation.position
  	animation_set_sprites(@_loop_animation_sprites, cell_data, position)
  	for timing in @_loop_animation.timings
    	if timing.frame == frame_index
      	animation_process_timing(timing, true)
    	end
  	end
	end
 
	def animation_set_sprites(sprites, cell_data, position)
  	for i in 0..15
    	sprite = sprites[i]
    	pattern = cell_data[i, 0]
    	if sprite == nil or pattern == nil or pattern == -1
      	sprite.visible = false if sprite != nil
      	next
    	end
    	sprite.visible = true
    	sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
    	if position == 3
      	if self.viewport != nil
        	sprite.x = self.viewport.rect.width / 2
        	sprite.y = self.viewport.rect.height - 160
      	else
        	sprite.x = 320
        	sprite.y = 240
      	end
    	else
      	sprite.x = self.x - self.ox + self.src_rect.width / 2
      	sprite.y = self.y - self.oy + self.src_rect.height / 2
      	sprite.y -= self.src_rect.height / 4 if position == 0
      	sprite.y += self.src_rect.height / 4 if position == 2
    	end
    	sprite.x += cell_data[i, 1]
    	sprite.y += cell_data[i, 2]
    	sprite.z = 2000
    	sprite.ox = 96
    	sprite.oy = 96
    	sprite.zoom_x = cell_data[i, 3] / 100.0
    	sprite.zoom_y = cell_data[i, 3] / 100.0
    	sprite.angle = cell_data[i, 4]
    	sprite.mirror = (cell_data[i, 5] == 1)
    	sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
    	sprite.blend_type = cell_data[i, 7]
  	end
	end
 
	def animation_process_timing(timing, hit)
  	if (timing.condition == 0) or
     	(timing.condition == 1 and hit == true) or
     	(timing.condition == 2 and hit == false)
    	if timing.se.name != ""
      	se = timing.se
      	Audio.se_play("Audio/SE/" + se.name, se.volume, se.pitch)
    	end
    	case timing.flash_scope
    	when 1
      	self.flash(timing.flash_color, timing.flash_duration * 2)
    	when 2
      	if self.viewport != nil
        	self.viewport.flash(timing.flash_color, timing.flash_duration * 2)
      	end
    	when 3
      	self.flash(nil, timing.flash_duration * 2)
    	end
  	end
	end
 
	def x=(x)
  	sx = x - self.x
  	if sx != 0
    	if @_animation_sprites != nil
      	for i in 0..15
        	@_animation_sprites[i].x += sx
      	end
    	end
    	if @_loop_animation_sprites != nil
      	for i in 0..15
        	@_loop_animation_sprites[i].x += sx
      	end
    	end
  	end
  	super
	end
 
	def y=(y)
  	sy = y - self.y
  	if sy != 0
    	if @_animation_sprites != nil
      	for i in 0..15
        	@_animation_sprites[i].y += sy
      	end
    	end
    	if @_loop_animation_sprites != nil
      	for i in 0..15
        	@_loop_animation_sprites[i].y += sy
      	end
    	end
  	end
  	super
	end
  end
end
zum Lesen den Text mit der Maus markieren


Und dann das:

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
class RPG::Sprite < Sprite
 
  Below_Player_Ani = [1, 2]
 
  def animation_set_sprites(sprites, cell_data, position)
	for i in 0..15
  	sprite = sprites[i]
  	pattern = cell_data[i, 0]
  	if sprite == nil or pattern == nil or pattern == -1
    	sprite.visible = false if sprite != nil
    	next
  	end
  	sprite.visible = true
  	sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
  	if position == 3
    	if self.viewport != nil
      	sprite.x = self.viewport.rect.width / 2
      	sprite.y = self.viewport.rect.height - 160
    	else
      	sprite.x = 320
      	sprite.y = 240
    	end
  	else
    	sprite.x = self.x - self.ox + self.src_rect.width / 2
    	sprite.y = self.y - self.oy + self.src_rect.height / 2
    	sprite.y -= self.src_rect.height / 4 if position == 0
    	sprite.y += self.src_rect.height / 4 if position == 2
  	end
  	sprite.x += cell_data[i, 1]
  	sprite.y += cell_data[i, 2]
  	#
  	if self.is_a?(Sprite_Character) and Below_Player_Ani.include?(@_animation.id)
    	z = 0
  	else
    	z = 2000
  	end
  	sprite.z = z
  	#
  	sprite.ox = 96
  	sprite.oy = 96
  	sprite.zoom_x = cell_data[i, 3] / 100.0
  	sprite.zoom_y = cell_data[i, 3] / 100.0
  	sprite.angle = cell_data[i, 4]
  	sprite.mirror = (cell_data[i, 5] == 1)
  	sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  	sprite.blend_type = cell_data[i, 7]
	end
  end
end
zum Lesen den Text mit der Maus markieren
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

3

Dienstag, 22. September 2009, 12:17

k.. danke schonma

nur 1 problem: Wenn ich als BA ein Schwert mache, dass der Held ( Blick nach unten ) schwingt. Dann ist dieses unter ihm ^^

Bräuchte also noch: Die BA soll über dem Held sein. Aber unter allem wo der Held au drunter durchlaufen kann.
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

4

Dienstag, 22. September 2009, 16:07

Achso, habs falsch verstanden.
Dann probier einfach mit dem z-Wert in Zeile 33 rum, bis es passt :D
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

5

Dienstag, 22. September 2009, 16:19

XD.. Dann wird die Ani, die beim nach oben gucken UNTER dem held sein soll.. aber wieder drüber angezeigt.. XD

Boah.. ich glaub ich add nen 2. array und nen 2. if-clause.. vielleicht geht des ja ^^



Edit:
Jobb.. hat geholfen.. danke Neo ^^

Hier nochma für alle:

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
class RPG::Sprite < Sprite
 
  Below_Player_Ani = [1]
  Below_Hightiles  = [2,3,4]
 
  def animation_set_sprites(sprites, cell_data, position)
	for i in 0..15
  	sprite = sprites[i]
  	pattern = cell_data[i, 0]
  	if sprite == nil or pattern == nil or pattern == -1
    	sprite.visible = false if sprite != nil
    	next
  	end
  	sprite.visible = true
  	sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
  	if position == 3
    	if self.viewport != nil
      	sprite.x = self.viewport.rect.width / 2
      	sprite.y = self.viewport.rect.height - 160
    	else
      	sprite.x = 320
      	sprite.y = 240
    	end
  	else
    	sprite.x = self.x - self.ox + self.src_rect.width / 2
    	sprite.y = self.y - self.oy + self.src_rect.height / 2
    	sprite.y -= self.src_rect.height / 4 if position == 0
    	sprite.y += self.src_rect.height / 4 if position == 2
  	end
  	sprite.x += cell_data[i, 1]
  	sprite.y += cell_data[i, 2]
  	#
  	if self.is_a?(Sprite_Character) and Below_Player_Ani.include?(@_animation.id)
    	z = 0
  	elsif self.is_a?(Sprite_Character) and Below_Hightiles.include?(@_animation.id)
    	z = 300
  	else
    	z = 2000
  	end
 
  	sprite.z = z
  	#
  	sprite.ox = 96
  	sprite.oy = 96
  	sprite.zoom_x = cell_data[i, 3] / 100.0
  	sprite.zoom_y = cell_data[i, 3] / 100.0
  	sprite.angle = cell_data[i, 4]
  	sprite.mirror = (cell_data[i, 5] == 1)
  	sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  	sprite.blend_type = cell_data[i, 7]
	end
  end
end
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Chaosgod Espér« (22. September 2009, 16:26)


Ähnliche Themen

Social Bookmarks