• Anmelden

1

Mittwoch, 6. Oktober 2010, 16:08

charakterbezogene Fanfare & hochskalieren der Animationsgrafiken

Moin moin!

Mal wieder brauche ich Hilfe, um 2 für mich nicht lösbare Aufgaben hinzubekommen.

Zum einen geht es darum, dass ich gern hätte, dass je nach Charakter, der den letzten Angriff im Kampf hatte, eine andere Siegesmusik läuft. Nun soll das nicht für jeden separat sein. Es reicht schon, wenn für die Charaktere 2 und 3 in der Datenbank eine andere läuft und bei den restligen die, die in System eingestellt ist.

Womöglich lässt sich das ja per Scripteingriff lösen. Mein Problem ist jetzt, zu bestimmen, wer den letzten Schlag hatte. Beachten müsste man noch, dass der Kampf ja auch durch Gift oder ähnliches enden kann. Da würde dann auch die normale vm System reichen.

Die 2. und wahrscheinlich so nicht machbare Sache, ist das Hochskalieren der Animationsgrafiken. Wie ja bekannt ist, sehen die einzelnen Bilder nicht mehr so super aus, wenn man die beim Erstellen auf 300% oder mehr vergrößert. Ist es eventuell möglich, festzulegen, dass bei bestimmten Animationen die Bilder wie in einem Bearbeitungsprogramm vergrößert dargestellt werden? Immerhin sehen die in so einem Programm bei 3facher Größe nicht so schlecht aus wie im Maker. Ginge es um einzelne Bilder, könnte man diese natürlich bei der Animationsdatei auf mehrere Felder verteilen, aber da das bei hunderten der Fall ist, würde mich das nicht nur in den Wahnsinn treiben, denn das Zusammenfügen dauert so schon ne Weile, sondern auch jede vernünftige Speichergröße übersteigen.

Also ich denke mal, dass sich ersteres noch eher realisieren lässt. Bei den Grafiken vermute ich mal eher nicht, was aber auch nicht so fatal wäre.

*push*

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Mr. Marzipan« (6. Oktober 2010, 16:08)


2

Mittwoch, 6. Oktober 2010, 19:28

zu 2: Wie du dir schon dachtest: Nativ ist das nichts zu machen. Wenn du die entsprechenden DLLs hast, die den Algorithmus haben für die Skallierung, kein Problem, aber so ist das etwas schwierig.
Also mit RGSS nicht performant zu machen.

zu 1:
keine perfekte Lösung aber eine brauchbare.
Fragen, Fehler etc. bitte Melden =)
Spoiler: Code

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
#==============================================================================
# Battle SME Erweiterung von Playm
#==============================================================================
# Benutzung:
# Füge dieses Script als neues Script über Main ein.
# Zusätzlich musst du an einem standard Script etwas ändern:
# Im Script "Scene_Battle 2" in Zeile 137 ersetze das
# +$game_system.me_play($game_system.battle_end_me)+
# mit 
# +play_end_me()+
# Die MEs für die Helden können etwas weiter unten, ab Zeile 24,
# eingestellt werden. Wird einem Helden keine eigene Musik zugeordnet,
# wird die in der Database eingestellte abgespielt.
#==============================================================================
# ** Scene_Battle Erweiterung
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # * Konstanten
  #--------------------------------------------------------------------------
  BattleEndMEs = Hash.new()
  # Trage ein, zu welcher HeroID welches Musikstück gehört:
  # BattleEndMEs[HERO_ID] = "Name der ME"
  BattleEndMEs[1] = "002-Victory02"
  # Weitere Daten
  BattleEndME_Pitch = 0
  BattleEndME_Volume= 80
  #--------------------------------------------------------------------------
  # * play BattleEndME
  #--------------------------------------------------------------------------
  def play_end_me()
	unless $game_temp.last_attacking_hero.nil?
  	name = BattleEndMEs[$game_temp.last_attacking_hero]
  	$game_temp.last_attacking_hero = 0
  	unless name.nil?
    	me = RPG::AudioFile.new(name, BattleEndME_Volume, BattleEndME_Pitch)
    	$game_system.me_play(me)
    	return;
  	end
	end
	# standard ME spielen
	$game_system.me_play($game_system.battle_end_me)
  end
  #--------------------------------------------------------------------------
end
#==============================================================================
# ** Game_Temp Erweiterung 
#==============================================================================
class Game_Temp; attr_accessor(:last_attacking_hero); end
#==============================================================================
# ** Game_Battler SME Erweiterung
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # * State Removed by Shock (called up each time physical damage occurs)
  #--------------------------------------------------------------------------
  unless method_defined?(:wo_sme_remove_states_shock)
	alias_method(:wo_sme_remove_states_shock, :remove_states_shock)
	def remove_states_shock(*a)
  	# schnapp dir den Angreifer
  	hero = $scene.instance_variable_get(:@active_battler)
  	# ist der Angreifer in der Party?
  	if $game_party.actors.include?(hero)
    	$game_temp.last_attacking_hero = hero.id
  	end
  	wo_sme_remove_states_shock(*a)
	end
  end
end
zum Lesen den Text mit der Maus markieren

3

Mittwoch, 6. Oktober 2010, 20:06

Tja, was soll ich sagen? Funktioniert. :epic:
Ich danke vielmals. Die Sache mit den Grafiken kann man dann auch so belassen. So wichtig ist das nicht.

Ähnliche Themen

Social Bookmarks