Invité Invité
| Sujet: Problème avec la fenêtre en combat Jeu 24 Mai 2012 - 19:28 | |
| Bonjour. Le script marche très bien, mais si je fais un event avec par exemple Personnage n°1 Forcer action: Attaque double sur cible aléatoire Le jeu plante, j'ai eu le droit à ce message d'erreur: - Spoiler:
La ligne qui pose problème: - Code:
-
@help_window.set_text(obj.name, 1) Dans cette partie: - Code:
-
#-------------------------------------------------------------------------- def pop_help(obj) return if obj.extension.include?("ヘルプ非表示") # @help_window.set_text(obj.name, 1) @help_window.visible = true update_back_sprite_help # end #-------------------------------------------------------------------------- Le script est un patch pour le SBS mais il marche très bien sur le système de base, le script: - Code:
-
#============================================================================== # ■ Scene_Battle Ver2.6 #------------------------------------------------------------------------------ # バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle < Scene_Base
#-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- alias back_start start def start create_back_sprite_help create_back_sprite_item back_start end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- def terminate super dispose_info_viewport @message_window.dispose @spriteset.dispose dispose_back_sprite_help dispose_back_sprite_item unless $scene.is_a?(Scene_Gameover) $scene = nil if $BTEST end end #-------------------------------------------------------------------------- # * Update #-------------------------------------------------------------------------- alias back_update update def update update_back_sprite_item update_back_sprite_help back_update end #-------------------------------------------------------------------------- # ● 戦闘行動の実行 : スキル ※再定義 #-------------------------------------------------------------------------- def execute_action_skill skill = @active_battler.action.skill # ATTACK_FAIL付与のスキルで不死身設定を分岐 if skill.plus_state_set.include?(1) for member in $game_party.members + $game_troop.members next if member.immortal next if member.dead? member.dying = true end else # 行動中に死なないようメンバー全員を不死身化 immortaling end # スキルコスト消費 return if @active_battler.consum_skill_cost(skill) == false # ターゲット決定 target_decision(skill) # アクション開始 @spriteset.set_action(@active_battler.actor?, @active_battler.index, skill.base_action) # ヘルプウインドウにスキル名表示 pop_help(skill) # アクション中 playing_action(skill) # コモンイベント取得 $game_temp.common_event_id = skill.common_event_id end #-------------------------------------------------------------------------- # ● アクション実行中 #-------------------------------------------------------------------------- def playing_action(skill = 0) loop do update_basic # アクティブバトラーに格納されているアクション情報を見る action = @active_battler.play next if action == 0 @active_battler.play = 0 if action[0] == "個別処理" individual elsif action == "Can Collapse" unimmortaling elsif action == "Cancel Action" break action_end elsif action == "End" break action_end elsif action[0] == "OBJ_ANIM" damage_action(action[1]) end end end #-------------------------------------------------------------------------- # ● ターゲット選択の開始 #-------------------------------------------------------------------------- def start_target_selection(actor = false) members = $game_party.members if actor members = $game_troop.members unless actor # カーソルスプライトの作成 @cursor = Sprite.new @cursor.bitmap = Cache.character("cursor") @cursor.src_rect.set(0, 0, 32, 32) @cursor_flame = 0 @cursor.x = -200 @cursor.y = -200 @cursor.ox = @cursor.width @cursor.oy = @cursor.height # ターゲット名を表示するヘルプウインドウを作成 @help_window.visible = false if @help_window != nil @help_window2 = Window_Help.new if @help_window2 == nil # 不要なウインドウを消す @actor_command_window.active = false @skill_window.visible = false if @skill_window != nil @item_window.visible = false if @item_window != nil # @skill_window.update if @skill_window != nil @item_window.update if @item_window != nil update_back_sprite_help update_back_sprite_item # # 存在しているターゲットで最も番号の低い対象を最初に指すように @index = 0 @max_index = members.size - 1 # アクターはATTACK_FAIL者でもターゲットできるようにエネミーと区別 unless actor members.size.times do break if members[@index].exist? @index += 1 end end @help_window2.set_text(members[@index].name, 1) select_member(actor) end #-------------------------------------------------------------------------- # ● 戦闘行動の実行 : GUARD_ATTACK ※再定義 #-------------------------------------------------------------------------- def execute_action_guard @help_window.set_text("Endurance", 1) @help_window.visible = true update_back_sprite_help # バトラーのアクティブ化を解除 @active_battler.active = false wait(45) @help_window.visible = false end #-------------------------------------------------------------------------- # ● ターゲット選択のEnd #-------------------------------------------------------------------------- def end_target_selection @actor_command_window.active = true if @actor_command_window.index == 0 and @limit_window == nil @skill_window.visible = true if @skill_window != nil @item_window.visible = true if @item_window != nil update_back_sprite_item update_back_sprite_help @cursor.dispose @cursor = nil if @help_window2 != nil @help_window2.dispose @help_window2 = nil end @help_window.visible = true if @help_window != nil end #-------------------------------------------------------------------------- # ● ヘルプウインドウの表示 #-------------------------------------------------------------------------- def pop_help(obj) return if obj.extension.include?("ヘルプ非表示") # @help_window.set_text(obj.name, 1) @help_window.visible = true update_back_sprite_help # end #-------------------------------------------------------------------------- # * Start Item Selection #-------------------------------------------------------------------------- def start_item_selection @help_window = Window_Help.new @item_window = Window_Item.new(136, 56, 272, 232) @item_window.help_window = @help_window @item_window.opacity = 255 @actor_command_window.active = false update_back_sprite_item end #-------------------------------------------------------------------------- # * Update Item Selection #-------------------------------------------------------------------------- def update_item_selection @item_window.active = true @item_window.update @help_window.update if Input.trigger?(Input::B) Sound.play_cancel end_item_selection elsif Input.trigger?(Input::C) @item = @item_window.item if @item != nil $game_party.last_item_id = @item.id end if $game_party.item_can_use?(@item) determine_item else Sound.play_buzzer end end end #-------------------------------------------------------------------------- # * Confirm Item #-------------------------------------------------------------------------- def determine_item @active_battler.action.set_item(@item.id) @item_window.active = false if @item.need_selection? Sound.play_cursor if @item.for_opponent? start_target_enemy_selection else start_target_actor_selection end else Sound.play_decision end_item_selection next_actor end end #-------------------------------------------------------------------------- # * Start Skill Selection #-------------------------------------------------------------------------- def start_skill_selection @help_window = Window_Help.new @skill_window = Window_Skill.new(136, 56, 272, 232, @active_battler)# @skill_window = Window_Skill.new(136, 56, 272, 232, @active_battler) @skill_window.help_window = @help_window @skill_window.opacity = 255 #### @actor_command_window.active = false #update_back_sprite_item end #-------------------------------------------------------------------------- # * Update Skill Selection #-------------------------------------------------------------------------- def update_skill_selection @skill_window.active = true @skill_window.update @help_window.update if Input.trigger?(Input::B) Sound.play_cancel end_skill_selection elsif Input.trigger?(Input::C) @skill = @skill_window.skill if @skill != nil @active_battler.last_skill_id = @skill.id end if @active_battler.skill_can_use?(@skill) determine_skill else Sound.play_buzzer end end end #-------------------------------------------------------------------------- # * Create Background Sprite Help #-------------------------------------------------------------------------- def create_back_sprite_help @back_sprite2 = Sprite.new @back_sprite2.bitmap = Cache.system("MessageBack") @back_sprite2.zoom_y = 0.3 @back_sprite2.y = 5 @back_sprite2.z = 40 @back_sprite2.opacity = 180 @back_sprite2.visible = false end #-------------------------------------------------------------------------- # * Dispose of Background Sprite Help #-------------------------------------------------------------------------- def dispose_back_sprite_help @back_sprite2.dispose end #-------------------------------------------------------------------------- # * Update Background Sprite Help #-------------------------------------------------------------------------- def update_back_sprite_help back_ok_1 = back_ok_2 = false if @help_window != nil if @help_window.visible back_ok_1 = true end end if @help_window2 != nil if @help_window2.visible back_ok_2 = true end end if back_ok_1 @help_window.opacity = 0 @back_sprite2.visible = true elsif back_ok_2 @help_window2.opacity = 0 @back_sprite2.visible = true else @back_sprite2.visible = false end @back_sprite2.update end #-------------------------------------------------------------------------- # * Create Background Sprite Item #-------------------------------------------------------------------------- def create_back_sprite_item @back_sprite_item = Sprite.new @back_sprite_item.bitmap = Cache.system("") @back_sprite_item.zoom_x = 0.5 @back_sprite_item.zoom_y = 1.5 @back_sprite_item.x = 134 @back_sprite_item.y = 55 @back_sprite_item.z = 40 @back_sprite_item.opacity = 180 @back_sprite_item.visible = false end #-------------------------------------------------------------------------- # * Dispose of Background Sprite Item #-------------------------------------------------------------------------- def dispose_back_sprite_item @back_sprite_item.dispose end #-------------------------------------------------------------------------- # * Update Background Sprite Item #-------------------------------------------------------------------------- def update_back_sprite_item back_ok_1 = back_ok_2 = false if @item_window != nil if @item_window.visible and @item_window.active back_ok_1 = true end end if @skill_window != nil if @skill_window.visible and @skill_window.active back_ok_2 = true end end if back_ok_1 or back_ok_2 @back_sprite_item.visible = true else @back_sprite_item.visible = false end @back_sprite_item.update end end Merci d'avance. ^^ |
|
Invité Invité
| Sujet: Re: Problème avec la fenêtre en combat Jeu 24 Mai 2012 - 19:52 | |
| Je ne connais pas le script, donc je propose ça: - Code:
-
#============================================================================== # ■ Scene_Battle Ver2.6 #------------------------------------------------------------------------------ # バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle < Scene_Base def pop_help(obj) return if obj.extension.include?("ヘルプ非表示") if @help_window @help_window.set_text(obj.name, 1) @help_window.visible = true update_back_sprite_help end end end a rajouter en dessous de ce script et au dessus du main |
|
Invité Invité
| Sujet: Re: Problème avec la fenêtre en combat Jeu 24 Mai 2012 - 20:35 | |
| Ca marche nickel merci. =) Une petite question tout de même, le nom de l'attaque n'apparait pas du coup, enfin c'est pas non plus trop grave étant donné que le joueur saura l'attaque qui sera lancé, mais est-il possible de la faire apparaitre tout de même ? Je te rajoute 2 points et j'attends ta réponse avant de mettre en résolu. =) |
|
Invité Invité
| Sujet: Re: Problème avec la fenêtre en combat Jeu 24 Mai 2012 - 21:05 | |
| Le but du script c'est de faire quoi? Il est prévu de dire l'attaque lancée à la base? |
|
Invité Invité
| Sujet: Re: Problème avec la fenêtre en combat Jeu 24 Mai 2012 - 22:01 | |
| Il modifie juste l'affichage de la fenêtre d'aide en combat, elle est en sombre et il modifie aussi la fenêtre des compétences et des objets mais ça à la limite osef. |
|
Invité Invité
| Sujet: Re: Problème avec la fenêtre en combat Jeu 24 Mai 2012 - 22:24 | |
| Désolé mais je comprend mal le script, il serait possible d'avoir une démo nonCryptée pour tester "inLive"? j'ai vraiment du mal avec ce genre de script codés n'importe comment |
|
Invité Invité
| Sujet: Re: Problème avec la fenêtre en combat Ven 25 Mai 2012 - 17:39 | |
| Je t'avais déjà donné les scripts de mon projet ^^ Sinon c'est pas grave tu as résolu le problème principal et la barre d'info je peux m'en passer, encore merci pour ton aide. =) |
|
Invité Invité
| Sujet: Re: Problème avec la fenêtre en combat Ven 25 Mai 2012 - 17:50 | |
| J'ai du changer de PC et je n'ai plus les démos que je stockais :S |
|
Contenu sponsorisé
| Sujet: Re: Problème avec la fenêtre en combat | |
| |
|