Ce script vous permet d'afficher l'icone de l'objet que vous obtenez dans un coffre ou autre (genre les pnj qui donnent des objets aussi...). L'icone s'affiche de manière animé. (elle lévite un peu puis disparait.)
Screenshot:
Instruction: Plug and play ! (script à placer au-dessus de main.)
#============================================================================== # ■ Game_CharacterBase #============================================================================== class Game_CharacterBase #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :icpop_id # アイコンポップ ID attr_accessor :icpop_duration # アイコンポップ 表示時間 attr_accessor :icpop_delete_flag # アイコンポップ 削除フラグ #-------------------------------------------------------------------------- # ● 公開メンバ変数の初期化 #-------------------------------------------------------------------------- alias tmicpop_game_characterbase_init_public_members init_public_members def init_public_members tmicpop_game_characterbase_init_public_members @icpop_id = 0 @icpop_duration = 0 @icpop_delete_flag = false end end
#============================================================================== # ■ Sprite_Character #============================================================================== class Sprite_Character #-------------------------------------------------------------------------- # ● オブジェクト初期化 # character : Game_Character #-------------------------------------------------------------------------- alias tmicpop_sprite_character_initialize initialize def initialize(viewport, character = nil) @icpop_duration = 0 tmicpop_sprite_character_initialize(viewport, character) end #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- alias tmicpop_sprite_character_dispose dispose def dispose dispose_icpop tmicpop_sprite_character_dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias tmicpop_sprite_character_update update def update update_icpop tmicpop_sprite_character_update end #-------------------------------------------------------------------------- # ● 新しいエフェクトの設定 #-------------------------------------------------------------------------- alias tmicpop_sprite_character_setup_new_effect setup_new_effect def setup_new_effect tmicpop_sprite_character_setup_new_effect if !@icpop_sprite && @character.icpop_id > 0 @icpop_id = @character.icpop_id @character.icpop_id = 0 start_icpop end end #-------------------------------------------------------------------------- # ○ アイコンポップ表示の開始 #-------------------------------------------------------------------------- def start_icpop dispose_icpop @icpop_duration = @icpop_duration_max = @character.icpop_duration @icpop_sprite = ::Sprite.new(viewport) @icpop_sprite.bitmap = Cache.system("IconSet") @icpop_sprite.src_rect.set(@icpop_id % 16 * 24, @icpop_id / 16 * 24, 24, 24) @icpop_sprite.ox = 12 @icpop_sprite.oy = 24 @icpop_y_plus = 0 @icpop_y_speed = TMICPOP::SPEED update_icpop end #-------------------------------------------------------------------------- # ○ アイコンポップの解放 #-------------------------------------------------------------------------- def dispose_icpop @character.icpop_delete_flag = false if @icpop_sprite @icpop_sprite.dispose @icpop_sprite = nil end end #-------------------------------------------------------------------------- # ○ アイコンポップの更新 #-------------------------------------------------------------------------- def update_icpop if @icpop_duration > 0 @icpop_duration -= 1 if @character.icpop_delete_flag @icpop_duration = 0 dispose_icpop elsif @icpop_duration > 0 @icpop_sprite.x = x @icpop_y_plus += @icpop_y_speed @icpop_y_speed += TMICPOP::GRAVITY if @icpop_y_plus > 0 @icpop_y_plus = 0 - @icpop_y_plus @icpop_y_speed = 0 - @icpop_y_speed / 2 end @icpop_sprite.y = y - height + (@icpop_y_plus / 256) @icpop_sprite.z = z + 200 @icpop_sprite.opacity = (@icpop_duration < 16 ? @icpop_duration * 16 : (@icpop_duration_max - @icpop_duration) * 32) else dispose_icpop @character.icpop_id = 0 end end end end
#============================================================================== # ■ Game_Event #============================================================================== class Game_Event include TMICPOP::Commands #-------------------------------------------------------------------------- # ○ キャラクターの取得 # param : -1 ならプレイヤー、0 ならこのイベント、それ以外はイベント ID #-------------------------------------------------------------------------- def get_character(param) if param < 0 $game_player else $game_map.events[param > 0 ? param : @id] end end end
#============================================================================== # ■ Game_Interpreter #============================================================================== class Game_Interpreter include TMICPOP::Commands #-------------------------------------------------------------------------- # ● アイテムの増減 #-------------------------------------------------------------------------- alias tmicpop_game_interpreter_command_126 command_126 def command_126 tmicpop_game_interpreter_command_126 value = operate_value(@params[1], @params[2], @params[3]) if value > 0 if $game_variables[TMICPOP::VN_TARGET] >= -1 && !$game_party.in_battle item = $data_items[@params[0]] pop_icon($game_variables[TMICPOP::VN_TARGET], item.icon_index) end end end #-------------------------------------------------------------------------- # ● 武器の増減 #-------------------------------------------------------------------------- alias tmicpop_game_interpreter_command_127 command_127 def command_127 tmicpop_game_interpreter_command_127 value = operate_value(@params[1], @params[2], @params[3]) if value > 0 if $game_variables[TMICPOP::VN_TARGET] >= -1 && !$game_party.in_battle item = $data_weapons[@params[0]] pop_icon($game_variables[TMICPOP::VN_TARGET], item.icon_index) end end end #-------------------------------------------------------------------------- # ● 防具の増減 #-------------------------------------------------------------------------- alias tmicpop_game_interpreter_command_128 command_128 def command_128 tmicpop_game_interpreter_command_128 value = operate_value(@params[1], @params[2], @params[3]) if value > 0 if $game_variables[TMICPOP::VN_TARGET] >= -1 && !$game_party.in_battle item = $data_armors[@params[0]] pop_icon($game_variables[TMICPOP::VN_TARGET], item.icon_index) end end end end
Note: Vous pouvez réglez la vitesse et la gravité de l'animation à partir de la ligne 58:
Sujet: Re: [VXAce]Pop up Item Mar 12 Mar 2013 - 11:44
Sympa comme script. Mais une petite précision : si le coffre contient plusieurs objets, seul le premier défini dans l'event s'affichera.
Du coup il est possible d'afficher une autre icone en ajoutant puis en enlevant l'objet ayant l'icone désiré, puis en ajoutant l'objet voulu dans l'inventaire.
De plus, si on met de l'argent, l'icone ne s'affiche pas. Edit : astuce pour l'argent, créer un objet Argent avec l'icone désiré puis l'ajouter et le supprimer de l'inventaire.
Invité Invité
Sujet: Re: [VXAce]Pop up Item Mar 12 Mar 2013 - 14:07