Archiv verlassen und diese Seite im Standarddesign anzeigen : Attacker / Target Animation gleichzeitig anzeigen?
Jerome Denis Andre
14.11.2011, 10:55
Ich wollte fragen ob irgendwer ein Skript oder eine sonstige Möglichkeit wüsste, die Attacker und Target Animation
GLEICHZEITIG anstatt wie bislang nacheinander anzeigen zu lassen, oder mir da was kleines 'für schreiben könnte.
Grund: Ich will, dass mein Battler, der bei mir durch sein Charset dargestellt wird, während des Angriffes "unsichtbar" ist, damit er nicht plötzlich
zweimal auftaucht.
Das geht halbwegs einfach, kann man sicherlich ein Skript zu bauen - Problem ist allerdings, dass jeder Sprite nur eine Animation gleichzeitig laufen haben kann. Wenn du also eine Animation mit Ziel u.a. dem Attacker machst, würde auf diesem nur die letzte Animation angezeigt werden. Ich weiss nicht genau ob das Funktionieren würde, RPG::Sprite so umzubauen dass dieses 2 Animationen gleichzeitig abspielt (gehen würde das, aber ob das auch funktioniert im Endeffekt, müsste jemand mit mehr Einblick in die Feinheiten vom RGSS sagen), ist aber ein wenig aufweniger.
Andere Sache: Wieso willst du die Animation gleichzeitig anzeigen, wenn dein Attacker dabei unsichtbar sein soll? Dieser bräuchte dann doch eigentlich gar keine Animation, sondern nur ne Sichtbarkeits-Änderung.
Jerome Denis Andre
14.11.2011, 12:00
[...]
Andere Sache: Wieso willst du die Animation gleichzeitig anzeigen, wenn dein Attacker dabei unsichtbar sein soll? Dieser bräuchte dann doch eigentlich gar keine Animation, sondern nur ne Sichtbarkeits-Änderung.
Also im Moment hatte ich das so geplant:
Ich nutze ein Skript, welches statt den Battlern die Charsets anzeigt, welche aber noch wie Battler ansteuerbar sind.
Wenn mein Held nun eines der Monster angreift, zieht er (in der Animation) seine Pistole und feuert drauf los.
Problem: Der Held wäre dann zwei mal zu sehen, während des Angriffes (Ein mal in der Ani, einmal als Battler)
Bislang angedachte Lösung: Ich weise der benutzen Waffe Pistole#1 unter "Target Animation" die Animation zu, in der der Held die Waffe zieht, feuert, und der Schuss einschlägt;
unter "Attacker" Animation eine Ani die den Battler für die selbe Anzahl Frames unsichtbar macht.
Problem hierbei: Der Maker spielt die "Target Animation" erst ab, wenn die "Attacker Animation" vollendet ist, d.h. der Held verschwindet kurz, taucht wieder auf, ist
beim eigentlichen Angriff dann aber doch zwei mal da. :-/
Also, ich sehe beide Optionen als brauchbar, finde aber persönlich letztere Option nicht nur einfacher Umzusetzen, sondern auch hübscher. Ich kann dir gleich in der Bahn das mal eben Scripten, ich geh mal davon aus dass das mit deinem anderen Script kompatibel ist, und gegen ~16 Uhr posten, kannst mir ja sagen, ob das dann deinen Vorstellungen entspricht. Ansonsten hat vllt auch jemand anders ne bessere oder schnellere Lösung - oder ich versteh dein Problem einfach falsch. Ich glaube allerdings, so wie du es beschreibst, weiss ich nicht ob gleichzeitig Anzeigen lassen das ist was das Problem löst ~.~
Jerome Denis Andre
14.11.2011, 12:19
Das wäre lieb, danke sehr.
Ich hab jetzt nämlich eine Lösung gefunden, die aber auch nur bei diesem einen Char funktioniert, weil dieser Fernkämpfer ist,
bei Nahkämpfern (die zwangsläufig in die Target Animation müssen, damit sie nah genug an das Ziel herankommen) aber versagt,
oder unschön wirkt.
Provisorium:
[Ich pack das ziehen der Pistole einfach in die "Attacker Animation", und nur Schuss-Flugbahn, und Einschlag in die
"Target Animation". Hat zwar den Nachteil, dass mein Char nicht mehr "direkt" vor das Monster springt, und daher
- wenn es weit weg vom Char steht- , die Flugbahn der Kugel seltsam wirkt, und dass der Char zwangsläufig, (Weil die
Attacker Ani beendet ist) die Waffe bereits "wegsteckt", bevor der Schuss einschlägt, aber im Moment ist es besser als den
Char zweimal zu haben. ]
Ah, stimmt, ich vergaß Nahkämpfer. Ich hab nicht mehr groß Zeit zu posten, ich bin die letzten 2 Stunden auch immer nur kurz am Rechner gewesen, sonst hätt ich gleich mitm Skripten angefangen, ich überleg mir ne Lösung. Vllt schaffts du es ja in den 10 Minuten zu posten ehe ich los bin: kommt in dem Fall vor, dass z.b. bei Items oder Heilung, ein "Attacker" auf sich selbst ne Animation wirkt?
Jerome Denis Andre
14.11.2011, 14:25
Ja, das kommt in meinem Spiel ab und an vor.
Ist kein Problem, dafür hab ich gesorgt. Ich hab hier jetzt was, was doppelte Animationen untersützt und gleichzeitige Animationen + ausblendung supported.
Muss da wohl noch nen Bug raus fixen, sieht aber schon ganz funktionierend aus.
Problem: vor morgen kann ich dir das nicht hier rein schreiben - hier an der Uni gibts ein kleines Problem mit dem Internet, einige Rechner kommen nicht online, darunter meiner. Daher kann ich nur das hier grad posten, du wirst dich bis morgen gedulden müssen, da ich über Nacht bei Freunden bin die grade den Anbieter wechseln und daher auch kein Internet haben. Dafür sollte ich den Bug bis morgen gefixt haben, irgendwie hab ich irgendwo wohl ne Endlosschleife reingehauen, StackLevelTooDeep klingt stark danach.
Sorry für die Verzögerung :/
So, nachdem das nun doch mehr Arbeit war als geplant - aber durch meine Internetabstinenz und vielen Bahnfahrten hatte ich viel Zeit das zu erledigen - hab ich dein Script nun fertig. Waren doch 2 von mir dumm verursachte Endlosschleifen -.-
Es macht: Charaktere während einer Animation (ausser white flash) unsichtbar, spielt animation auf dem Battler und dem Target gleichzeitig ab.
Du solltest diesen Teil
#----------------------------------------------------#
#-------------------RPG::Sprite----------------------#
#----------------------------------------------------#
#RPG-Sprite# #Updated to support two animations at once,
#callable via using RPG::SPrite.animation while an
#Animation is still running.
#Using it again while 2 Animations are running will stop animation1
#an replace it.
class RPG::Sprite
@@_animations2 =[]
@@_reference_count2={}
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 @_animation2 != nil and (Graphics.frame_count % 2 == 0)
@_animation2_duration -= 1
update_animation2
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
@@_animations2.clear
end
#alias double_animation_update update
#def update
# if @_animation2 != nil and (Graphics.frame_count % 2 == 0)
# @_animation2_duration -= 1
# update_animation2
# end
# double_animation_update
# @@_animations2.clear
#end
alias double_animation_init initialize
def initialize (vp=nil)
double_animation_init(vp)
@_animation2_duration = 0
end
alias double_animation_dispose dispose
def dispose
double_animation_dispose
dispose_animation2
end
def animation(animation,hit)
if @_animation_duration > 0
if @_animation2_duration > 0
dispose_animation
else
animation2(animation,hit)
return
end
end
@_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 animation2 (animation, hit)
dispose_animation2
@_animation2 = animation
return if @_animation == nil
@_animation2_hit = hit
@_animation2_duration = @_animation2.frame_max
animation_name = @_animation2.animation_name
animation_hue = @_animation2.animation_hue
bitmap = RPG::Cache.animation(animation_name, animation_hue)
if @@_reference_count2.include?(bitmap)
@@_reference_count2[bitmap] += 1
else
@@_reference_count2[bitmap] = 1
end
@_animation2_sprites = []
if @_animation2.position != 3 or not @@_animations2.include?(animation)
for i in 0..15
sprite = ::Sprite.new(self.viewport)
sprite.bitmap = bitmap
sprite.visible = false
@_animation2_sprites.push(sprite)
end
unless @@_animations2.include?(animation)
@@_animations2.push(animation)
end
end
update_animation2
end
def dispose_animation2
if @_animation2_sprites != nil
sprite = @_animation2_sprites[0]
if sprite != nil
@@_reference_count2[sprite.bitmap] -= 1
if @@_reference_count2[sprite.bitmap] == 0
sprite.bitmap.dispose
end
end
for sprite in @_animation2_sprites
sprite.dispose
end
@_animation2_sprites = nil
@_animation2 = nil
end
end
alias double_animation_effect effect?
def effect?
double_animation_effect or
@_animation2_duration > 0
end
def update_animation2
if @_animation2_duration > 0
frame_index = @_animation2.frame_max - @_animation2_duration
cell_data = @_animation2.frames[frame_index].cell_data
position = @_animation2.position
animation_set_sprites(@_animation2_sprites, cell_data, position)
for timing in @_animation2.timings
if timing.frame == frame_index
animation2_process_timing(timing, @_animation2_hit)
end
end
else
dispose_animation2
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)
if self.opacity == 0
sprite.opacity = cell_data[i, 6] * 255.0
else
sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
end
sprite.blend_type = cell_data[i, 7]
end
end
def animation2_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
alias double_animation_x x=
def x=(x)
sx = x - self.x
if @_animation2_sprites != nil
for i in 0..15
@_animation2_sprites[i].x += sx
end
end
double_animation_x(x)
end
alias double_animation_y y=
def y=(y)
sy = y - self.y
if @_animation2_sprites != nil
for i in 0..15
@_animation2_sprites[i].y += sy
end
end
double_animation_y(y)
end
end
vor allem anderen einfügen, folgenden
#----------------------------------------------------#
#-----------------Game_Battler-----------------------#
#----------------------------------------------------#
class Game_Battler
attr_accessor :opacity0
attr_accessor :opacity255
attr_accessor :animation_hit2
attr_accessor :animation_id2
alias double_animation_init_gb initialize
def initialize
double_animation_init_gb
@opacity0=false
@opacity255=false
@animation_hit2 = false
@animation_id2=0
@last_done=1
end
def animation_id=(id)
if @animation_id ==0
@animation_id=id
@last_done=1
return
elsif @animation_id2 == 0
@animation_id2=id
@last_done=2
return
end
@animation_id = id
@last_done=1
end
def animation_hit=(hit)
if @last_done==1
@animation_hit=hit
return
else
@animation_hit2=hit
return
end
end
def FIXanimation_id=(id)
@animation_id=id
end
end
#----------------------------------------------------#
#-----------------Sprite_Battler---------------------#
#----------------------------------------------------#
class Sprite_Battler
alias double_animation_upd update
def update
#Animation
if @battler.animation_id != 0
animation = $data_animations[@battler.animation_id]
animation(animation, @battler.animation_hit)
@battler.FIXanimation_id = 0
end
double_animation_upd
# Animation2
if @battler.animation_id2 != 0
animation = $data_animations[@battler.animation_id2]
animation(animation, @battler.animation_hit2)
@battler.animation_id2 = 0
end
if @battler.opacity0
self.opacity = 0
#@battler.opacity0=false
end
if @battler.opacity255
self.opacity = 255
@battler.opacity0=false
@battler.opacity255=false
end
end
end
#----------------------------------------------------#
#-----------------Scene_Battle-----------------------#
#----------------------------------------------------#
class Scene_Battle
alias double_animation_up4s2 update_phase4_step2
def update_phase4_step2
double_animation_up4s2
if @phase4_step == 3
@phase4_step = 4
end
end
alias double_animation_up4s3 update_phase4_step3
alias double_animation_up4s4 update_phase4_step4
def update_phase4_step4
unless @animation1_id == 0
@active_battler.opacity0=true
end
double_animation_up4s3
double_animation_up4s4
end
alias double_animation_up4s5 update_phase4_step5
def update_phase4_step5
@active_battler.opacity255=true
double_animation_up4s5
end
end
am besten unter deinen anderen System - wobei es vermutlich egal ist.
Das Script funktioniert in meinem Testprojekt einwandfrei, allerdings ist es nicht ideal geschrieben, also es könnte durchaus Kompatibilitätsprobleme mit anderen Scripten geben, da kann ich für nichts garantieren.
Wenn du Probleme mit dem Script hast, u.a. eben wegen Kompatibilität, post einfach nochmal hier oder schreib ne PN
@KD:
Ich bin übrigens gerne für Verbesserungsvorschläge offen, wenn du sie geben möchtest. Grade bei RPG::Sprite weiss ich nicht, ob ich mir einige der Variablen (u.a. reference_count) hätte sparen können zu verdoppeln.
Jerome Denis Andre
16.11.2011, 02:37
Im Moment bin ich mir trotz Erklärung relativ unsicher, wo ich die einzelnen Skript-Bestandteile jeweils einfügen soll.
Egal wo ich sie einfüge bekomme ich bislang immer ne Fehlermeldung, weswegen ich mal vermute, dass ich sie
nicht an rechter Stelle einfüge ... :-(
Z.B. http://img225.imageshack.us/img225/9444/76915417.png
Je nach dem wo ich es einfüge Variiert der Inhalt der Fehlermeldung freilich ...
sorata08
16.11.2011, 11:11
Warum nicht bei der "Attacker-Animation" den Battler lossprinten lassen und halt die ganze Laufzeit der Attacker- und Targetanimation den Befehl "Hide Target" bei einer Battle Animation nutzen? Kannst du da, wo du festlegen kannst, bei welchem Frame welche SE's starten, das Ziel aufblinkt etc., als Befehl für Frame 1 der Attacker-Animation bestimmen. Wenn der Battler halt nicht lossprintet, reicht der Befehl auch am Ende der Battle Animation (da musst du dann aber die Frameanzahl der Attacker-Animation wieder abziehen).
Da braucht man also kein extra Script dafür...
MfG Sorata
Jerome Denis Andre
16.11.2011, 12:18
Warum nicht bei der "Attacker-Animation" den Battler lossprinten lassen und halt die ganze Laufzeit der Attacker- und Targetanimation den Befehl "Hide Target" bei einer Battle Animation nutzen? Kannst du da, wo du festlegen kannst, bei welchem Frame welche SE's starten, das Ziel aufblinkt etc., als Befehl für Frame 1 der Attacker-Animation bestimmen. Wenn der Battler halt nicht lossprintet, reicht der Befehl auch am Ende der Battle Animation (da musst du dann aber die Frameanzahl der Attacker-Animation wieder abziehen).
Da braucht man also kein extra Script dafür...
MfG Sorata
Also, indem ich unter der "Attacker Animation" meiner Waffe eine BA einstelle, die dazu führt, dass
der Battler z.B. 26 Frames lang versteckt ist, und derweil in der BA der "Target Animation" zu sehen
ist, in etwa so:
http://img819.imageshack.us/img819/711/us10.png
http://img208.imageshack.us/img208/9803/richtpistoleani.png
http://img263.imageshack.us/img263/3816/weaponagentenpistole.png
Meintest du das so ?
Falls ja:
Wie oben beschrieben führt der Maker die "Attacker Animation" scheinbar (zumindest bei mir) KOMPLETT aus, bevor die "Target Animation" überhaupt begonnen wird.
D.H. in beschriebenen Fall würde der Battler dank der Attacker BA erst für 26 Frames verschwinden, dann wieder auftauchen (bevor de Target BA beginnt) und erst nachdem
er wieder als Battler erschien, in der Target BA zu sehen sein, sodass er nun "zwei mal" da ist.
Hngaaa, guten morgen, ich werd mir das gleich mal ansehn. Aber evtl hab ich einen entscheidenden Fehler gemacht: Welchen Maker nutzt du eigentlich?
Jerome Denis Andre
16.11.2011, 12:29
XP
(Auch wenn es nun nicht funktioniert übrigens vielen Dank für den Aufwand den du dir machst ^^)
EDIT: Für den Fall, dass es auch daran liegen könnte hier das Sideview Skript, welches ich direkt über Main nutze:
#==============================================================================
#++?????????(?????????)ver. 1.14++
#Script by ???
#http://rpg.para.s3p.net/
#------------------------------------------------------------------------------
# ????????????????????????
#==============================================================================
module SDVA
X_LINE = 500 # ????????????
Y_LINE = 200 # ????????????
X_SPACE = 15 # ?????????????
Y_SPACE = 40 # ?????????????
X_POSITION = 25 # ??[????????]????
Y_POSITION = 0 # ??[????????]????
ATTACK_MOVE = true # ???????????( true / false )
SKILL_MOVE = true # ??????????????( true / false )
ITEM_MOVE = false # ???????????????( true / false )
MOVE_STEP = 1 # ????
MOVE_PIXEL = 10 # ???????????
PARTY_POS = 1 # ?????????( 0:? / 1:? / 2:? / 3:? )
WINDOWPOS_CHANGE = true # ??????????????????????( true / false )
end
#==============================================================================
# ? Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ????? X ?????
#--------------------------------------------------------------------------
def screen_x
if self.index != nil
# ?????
pos = $data_classes[self.class_id].position
x_pos = pos * SDVA::X_POSITION
scr_x = self.index * SDVA::X_SPACE + SDVA::X_LINE + x_pos
# ??????????
if self.current_action.move_action == true
# ????
scr_x += @shift_x
end
return scr_x
else
return 0
end
end
#--------------------------------------------------------------------------
# ? ????? Y ?????
#--------------------------------------------------------------------------
def screen_y
if self.index != nil
# ?????
pos = $data_classes[self.class_id].position
y_pos = pos * SDVA::Y_POSITION
scr_y = self.index * SDVA::Y_SPACE + SDVA::Y_LINE + y_pos
# ??????????
if self.current_action.move_action == true
# ????
scr_y += @shift_y
end
return scr_y
else
return 0
end
end
#--------------------------------------------------------------------------
# ? ????? Z ?????
#--------------------------------------------------------------------------
def screen_z
if self.index != nil
return self.index
else
return 0
end
end
end
#==============================================================================
# ? Game_Battler (???? 1)
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_reader :pattern # ??????
attr_reader :trans_x # X???????
attr_reader :moving # ??????
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias initialize_sdva initialize
def initialize
initialize_sdva
move_reset
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def move
@moving = 1
if @step < SDVA::MOVE_STEP
# ??????????
@pattern = (@pattern + 1) % 4
@step += 1
move_step
else
# ????
@pattern = 1
@moving = 2
end
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def move_step
# ???????????????????
case SDVA::PARTY_POS
when 0
@shift_y = @step * SDVA::MOVE_PIXEL
when 1
@shift_x = -(@step * SDVA::MOVE_PIXEL)
when 2
@shift_x = @step * SDVA::MOVE_PIXEL
when 3
@shift_y = -(@step * SDVA::MOVE_PIXEL)
end
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def move_reset
@moving = 0
@pattern = 0
@step = 0
@shift_x = 0
@shift_y = 0
end
end
#==============================================================================
# ? Game_BattleAction
#==============================================================================
class Game_BattleAction
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_accessor :move_action # ??????????
#--------------------------------------------------------------------------
# ? ???
#--------------------------------------------------------------------------
alias clear_sdva clear
def clear
clear_sdva
@move_action = false
end
end
#==============================================================================
# ? Sprite_Battler
#==============================================================================
class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias update_sdva update
def update
# ????????????????
if @battler.is_a?(Game_Actor)
# ????????????????????
# ??????
if @battler.battler_name != @battler_name or
@battler.battler_hue != @battler_hue or
@battler.current_action.basic == 0 or
@battler.current_action.kind != 3
# ????????????
@character_name = @battler.character_name
@character_hue = @battler.character_hue
# ???????????
self.bitmap = RPG::Cache.character(@character_name, @character_hue)
cw = self.bitmap.width / 4
ch = self.bitmap.height / 4
@width = cw
@height = ch
if @battler.current_action.move_action == true
# ????
@battler.move
else
@battler.move_reset
end
# ?????????
sx = @battler.pattern * cw
sy = SDVA::PARTY_POS * ch
self.src_rect.set(sx, sy, cw, ch)
self.ox = @width / 2
self.oy = @height
# ??????????? 0 ???
if @battler.hidden
self.opacity = 0
end
end
end
update_sdva
end
end
#==============================================================================
# ? Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ? ????????????????????
#--------------------------------------------------------------------------
alias phase3_setup_command_window_sdva phase3_setup_command_window
def phase3_setup_command_window
phase3_setup_command_window_sdva
if SDVA::WINDOWPOS_CHANGE
# ???????????????????
case SDVA::PARTY_POS
when 0
x_pos = @active_battler.screen_x - (@actor_command_window.width/2)
y_pos = @active_battler.screen_y
when 1
x_pos = @active_battler.screen_x - @actor_command_window.width - 16
y_pos = @active_battler.screen_y - @actor_command_window.height
when 2
x_pos = @active_battler.screen_x + 16
y_pos = @active_battler.screen_y - @actor_command_window.height
when 3
x_pos = @active_battler.screen_x - (@actor_command_window.width/2)
y_pos = @active_battler.screen_y - @actor_command_window.height - 48
end
@actor_command_window.x = x_pos >= 0 ? x_pos : 0
@actor_command_window.x = x_pos+@actor_command_window.width <= 640 ? x_pos : 640-@actor_command_window.width
@actor_command_window.y = y_pos >= 0 ? y_pos : 0
@actor_command_window.y = y_pos+@actor_command_window.height <= 480 ? y_pos : 480-@actor_command_window.height
# ??????????????????
@actor_command_window.z = 9999
end
end
#--------------------------------------------------------------------------
# ? ?????? (??????? ???? 3 : ??????????)
#--------------------------------------------------------------------------
alias update_phase4_step3_sdva update_phase4_step3
def update_phase4_step3
if SDVA::ATTACK_MOVE
if @active_battler.current_action.basic == 0
@active_battler.current_action.move_action = true
end
end
if SDVA::SKILL_MOVE
if @active_battler.current_action.kind == 1
@active_battler.current_action.move_action = true
end
end
if SDVA::ITEM_MOVE
if @active_battler.current_action.kind == 2
@active_battler.current_action.move_action = true
end
end
# ??????????????????????
if @active_battler.is_a?(Game_Actor) and
@active_battler.current_action.move_action
# ?????
if @active_battler.moving == 2
update_phase4_step3_sdva
end
elsif @active_battler.moving == 0
update_phase4_step3_sdva
end
end
#--------------------------------------------------------------------------
# ? ?????? (??????? ???? 6 : ??????)
#--------------------------------------------------------------------------
alias update_phase4_step6_sdva update_phase4_step6
def update_phase4_step6
@active_battler.current_action.move_action = false
@active_battler.move_reset
update_phase4_step6_sdva
end
end
#==============================================================================
# ? Spriteset_Battle
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias initialize_sdva initialize
def initialize
initialize_sdva
@viewport2.z = 1
end
end
#==============================================================================
# ? Arrow_Actor
#==============================================================================
class Arrow_Actor < Arrow_Base
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias update_sdva update
def update
update_sdva
# ?????
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@index += 1
@index %= $game_party.actors.size
end
# ?????
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@index += $game_party.actors.size - 1
@index %= $game_party.actors.size
end
end
end
#==============================================================================
# ? Arrow_Enemy
#==============================================================================
class Arrow_Enemy < Arrow_Base
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias update_sdva update
def update
update_sdva
# ?????
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
# ?????
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += $game_troop.enemies.size - 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
end
end
@sorata08: Zur genaueren Darstellung des Problemes wie oben beschrieben findest du hier (http://www.file-upload.net/download-3884858/Capture_20111116.wmv.html) ein Video,
in welchem ich die oben ge-posteten Konfigurationen mit 200 Frames durchlaufen lasse.
Ich denke da wird das Problem schnell klar.
Okay, was nutzt du noch für Scripte oder hast du am Standard-Scriptsatz verändert? Ich sehe nicht wirklich Probleme mit dem Sideview Script im Script selbst - ebenso wenig, wenn ich das einfach über Main einfüge wie es bei dir ist und laufen lasse - läuft alles wunderbar. Also kollidiert das Sideview Script nicht mit meinem. Btw, denk dran, nichts UNTER der Main einzufügen. Die Main ist immer die unterste.
Okay Okay, ich sehe grad, hide target in der Animation tuts jetzt nicht mehr, aber das fix ich schon noch O.o
Edit: Nvm, das liegt an keinem der Scripte, das sieht bei mit immer so aus, selbst wenn ich alle Scripte rausnehme^^.
sorata08
16.11.2011, 14:49
Meintest du das so ?
Fast. Du musst den Helden natürlich auch noch solange verstecken, wie die Target-Animation dauert.
In deinem Fall ist die ja 10 Frames lang, also musst du den Helden nicht 26, sondern 36 Frames verstecken.
MfG Sorata
Jerome Denis Andre
16.11.2011, 14:56
@Sorata08: Nein, dann funktioniert es immer noch nicht, denn wie ich bereits sagt, scheint der Maker die Target Ani
erst dann anzufangen, wenn die Attacker Ani ABGESCHLOSSEN ist. Siehe auch das Video, wo ich die Attacker Ani
auf 200 frames hochstellte, was nur bewirkte, dass der Held zwar 200 frames lang weg war, aber erst als er dann nach
200 Frames wieder da war, die Target Ani eingeleitet wurde.
sorata08
16.11.2011, 15:08
Dann ist dein Kampfsystem in der Hinsicht doof gestaltet.
Bei mir hat es stets funktioniert. oÔ
Du könntest aber noch die Variante probieren, den Befehl erst beim letzten Frame aufzurufen und dann halt die Länge für die Target Animation anzugeben.
Also "Frame 26: Hide Target @10"
MfG Sorata
*poke* JDA!
Antworte noch auf mir :D
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.