设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1246|回复: 0
打印 上一主题 下一主题

[已经过期] 誰可以幫我把一個腳本改成可以在xp執行

[复制链接]

Lv1.梦旅人

梦石
0
星屑
215
在线时间
78 小时
注册时间
2010-7-1
帖子
58
跳转到指定楼层
1
发表于 2010-8-25 21:46:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 abc1236762 于 2010-8-26 20:31 编辑

http://ytomy.sakura.ne.jp/tkool/ ... ch=cursor_animation
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ カーソルアニメーション - KGC_CursorAnimation ◆ VX ◆
  3. #_/    ◇ Last update : 2009/02/15 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  カーソルの位置にアニメーションを表示します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  7. #==============================================================================
  8. # ★ カスタマイズ項目 - Customize BEGIN ★
  9. #==============================================================================

  10. module KGC
  11. module CursorAnimation
  12.   # ◆ アニメ表示 ON/OFF を切り替えるスイッチ ID
  13.   #  この ID のスイッチがオンの間、カーソルアニメが表示されます。
  14.   SWITCH_ID = 20
  15.   # ◆ 最初からカーソルアニメを表示する
  16.   #  true  : タイトルなどでもアニメを表示します。
  17.   #  false : ゲーム中にスイッチを切り替えるまで表示しません。
  18.   DEFAULT_ANIMATION = true

  19.   # ◆ アニメファイル名
  20.   #  "Graphics/System" から読み込む。
  21.   ANIMATION_FILE = "CursorAnimation"
  22.   # ◆ アニメーションのフレーム数
  23.   FRAME_COUNT    = 12
  24.   # ◆ アニメーションウェイト
  25.   #  数値が大きいほどアニメが遅くなる。
  26.   ANIMATION_WAIT = 4

  27.   # ◆ 不透明度
  28.   OPACITY       = 224
  29.   # ◆ 合成方法
  30.   #  0..通常  1..加算  2..減算
  31.   BLEND_TYPE    = 1
  32.   # ◆ 基準位置
  33.   #  0..上  1..中央  2..下
  34.   BASE_POSITION = 1
  35.   # ◆ 表示位置補正 [x, y]
  36.   POSITION_REV  = [-4, 0]
  37. end
  38. end

  39. #==============================================================================
  40. # ☆ カスタマイズ項目終了 - Customize END ☆
  41. #==============================================================================

  42. $imported = {} if $imported == nil
  43. $imported["CursorAnimation"] = true

  44. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  45. #==============================================================================
  46. # ■ Module_Graphics
  47. #==============================================================================

  48. module Graphics
  49.   module_function
  50.   #--------------------------------------------------------------------------
  51.   # ● フレーム更新
  52.   #--------------------------------------------------------------------------
  53.   class << Graphics
  54.     unless method_defined?(:update_KGC_CursorAnimation)
  55.       alias update_KGC_CursorAnimation update
  56.     end
  57.   end
  58.   def update
  59.     update_KGC_CursorAnimation

  60.     Window_Base.update_cursor_animation
  61.   end
  62. end

  63. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  64. #==============================================================================
  65. # ■ Window_Base
  66. #==============================================================================

  67. class Window_Base < Window
  68.   #--------------------------------------------------------------------------
  69.   # ○ クラス変数
  70.   #--------------------------------------------------------------------------
  71.   @@__cursor_animation = nil  # カーソルアニメ
  72.   #--------------------------------------------------------------------------
  73.   # ● オブジェクト初期化
  74.   #     x       : ウィンドウの X 座標
  75.   #     y       : ウィンドウの Y 座標
  76.   #     width   : ウィンドウの幅
  77.   #     height  : ウィンドウの高さ
  78.   #--------------------------------------------------------------------------
  79.   alias initialize_KGC_CursorAnimation initialize
  80.   def initialize(x, y, width, height)
  81.     initialize_KGC_CursorAnimation(x, y, width, height)

  82.     @@__cursor_animation.add_window(self)
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 解放
  86.   #--------------------------------------------------------------------------
  87.   unless method_defined?(:dispose_KGC_CursorAnimation)
  88.     alias dispose_KGC_CursorAnimation dispose
  89.   end
  90.   def dispose
  91.     @@__cursor_animation.remove_window(self)

  92.     dispose_KGC_CursorAnimation
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ○ カーソルアニメを表示
  96.   #--------------------------------------------------------------------------
  97.   def self.show_cursor_animation
  98.     @@__cursor_animation.visible = true
  99.     @@__cursor_animation.update
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ○ カーソルアニメを隠す
  103.   #--------------------------------------------------------------------------
  104.   def self.hide_cursor_animation
  105.     @@__cursor_animation.visible = false
  106.     @@__cursor_animation.update
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ○ カーソルアニメを更新
  110.   #--------------------------------------------------------------------------
  111.   def self.update_cursor_animation
  112.     @@__cursor_animation.update
  113.   end
  114. end

  115. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  116. #==============================================================================
  117. # □ Sprite_CursorAnimation
  118. #------------------------------------------------------------------------------
  119. #  カーソルアニメーション用の処理を追加したスプライトのクラスです。
  120. #==============================================================================

  121. class Sprite_CursorAnimation < Sprite
  122.   #--------------------------------------------------------------------------
  123.   # ● オブジェクト初期化
  124.   #     viewport : ビューポート
  125.   #--------------------------------------------------------------------------
  126.   def initialize(viewport = nil)
  127.     super(viewport)
  128.     @duration = 0
  129.     @frame_count = 0
  130.     self.bitmap = Cache.system(KGC::CursorAnimation::ANIMATION_FILE)
  131.     self.src_rect.width  = bitmap.width / 8
  132.     self.src_rect.height = bitmap.height /
  133.       ([KGC::CursorAnimation::FRAME_COUNT - 1, 0].max / 8 + 1)
  134.     self.ox = src_rect.width / 2
  135.     self.oy = src_rect.height / 2
  136.     self.opacity    = KGC::CursorAnimation::OPACITY
  137.     self.blend_type = KGC::CursorAnimation::BLEND_TYPE
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● フレーム更新
  141.   #--------------------------------------------------------------------------
  142.   def update
  143.     super
  144.     return unless visible

  145.     @frame_count += 1
  146.     return if @frame_count % KGC::CursorAnimation::ANIMATION_WAIT != 0

  147.     @frame_count = 0
  148.     @duration -= 1
  149.     if @duration < 0
  150.       @duration = KGC::CursorAnimation::FRAME_COUNT - 1
  151.     end
  152.     update_animation
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ○ アニメーションを更新
  156.   #--------------------------------------------------------------------------
  157.   def update_animation
  158.     self.src_rect.x = src_rect.width  * (@duration % 8)
  159.     self.src_rect.y = src_rect.height * (@duration / 8)
  160.   end
  161. end

  162. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  163. #==============================================================================
  164. # □ Cursor_Animation
  165. #------------------------------------------------------------------------------
  166. #  カーソル周りのアニメーションを扱うクラスです。
  167. #==============================================================================

  168. class Cursor_Animation
  169.   #--------------------------------------------------------------------------
  170.   # ○ 公開インスタンス変数
  171.   #--------------------------------------------------------------------------
  172.   attr_accessor :visible
  173.   #--------------------------------------------------------------------------
  174.   # ○ オブジェクト初期化
  175.   #--------------------------------------------------------------------------
  176.   def initialize
  177.     @visible = false

  178.     @viewport = Viewport.new(0, 0, 640, 480)
  179.     @windows = []
  180.     @target_sprite = Sprite_CursorAnimation.new(@viewport)
  181.     @active_window = nil

  182.     @viewport.visible = false
  183.     @viewport.z = 30000
  184.   end
  185.   #--------------------------------------------------------------------------
  186.   # ○ 破棄
  187.   #--------------------------------------------------------------------------
  188.   def dispose
  189.     @target_sprite.dispose
  190.     @viewport.dispose
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ○ ウィンドウ追加
  194.   #--------------------------------------------------------------------------
  195.   def add_window(*window)
  196.     @windows |= window.find_all { |w|
  197.       w.is_a?(Window_Selectable) || w.is_a?(Window_SaveFile)
  198.     }
  199.     @windows.flatten!
  200.   end
  201.   #--------------------------------------------------------------------------
  202.   # ○ ウィンドウ削除
  203.   #--------------------------------------------------------------------------
  204.   def remove_window(*window)
  205.     @windows -= window
  206.   end
  207.   #--------------------------------------------------------------------------
  208.   # ○ フレーム更新
  209.   #--------------------------------------------------------------------------
  210.   def update
  211.     @viewport.update
  212.     @target_sprite.update

  213.     # 座標調整
  214.     dest_x, dest_y = get_cursor_pos
  215.     if @target_sprite.x != dest_x
  216.       if (dest_x - @target_sprite.x).abs < 4
  217.         @target_sprite.x = dest_x
  218.       else
  219.         dist = (dest_x - @target_sprite.x) / 4
  220.         dist = (dist > 0 ? [dist, 4].max : [dist, -4].min)
  221.         @target_sprite.x += dist
  222.       end
  223.     end
  224.     if @target_sprite.y != dest_y
  225.       if (dest_y - @target_sprite.y).abs < 4
  226.         @target_sprite.y = dest_y
  227.       else
  228.         dist = (dest_y - @target_sprite.y) / 4
  229.         dist = (dist > 0 ? [dist, 4].max : [dist, -4].min)
  230.         @target_sprite.y += dist
  231.       end
  232.     end
  233.   end
  234.   #--------------------------------------------------------------------------
  235.   # ○ カーソル位置取得
  236.   #    [x, y] の形で返す。
  237.   #--------------------------------------------------------------------------
  238.   def get_cursor_pos
  239.     dx = 0
  240.     dy = 0
  241.     # 可視状態のアクティブウィンドウを取得
  242.     unless window_active?(@active_window)
  243.       @active_window = search_active_window
  244.     end

  245.     # アクティブウィンドウがなければ非表示
  246.     if @active_window == nil || !$game_switches[KGC::CursorAnimation::SWITCH_ID]
  247.       @viewport.visible = false
  248.       dx = Graphics.width / 2
  249.       dy = Graphics.height / 2
  250.       return [dx, dy]
  251.     end
  252.     @viewport.visible = @visible

  253.     # カーソル位置を計算
  254.     rect = @active_window.cursor_rect
  255.     dx = rect.x + 16 + KGC::CursorAnimation::POSITION_REV[0]
  256.     dy = rect.y + 16 + KGC::CursorAnimation::POSITION_REV[1]
  257.     vp = @active_window.viewport
  258.     if vp != nil
  259.       dx += vp.rect.x - vp.ox
  260.       dy += vp.rect.y - vp.oy
  261.     end
  262.     dx += @active_window.x
  263.     dy += @active_window.y
  264.     case KGC::CursorAnimation::BASE_POSITION
  265.     when 0  # 上
  266.       dy += @target_sprite.oy
  267.     when 1  # 中央
  268.       dy += rect.height / 2
  269.     when 2  # 下
  270.       dy += rect.height - @target_sprite.oy
  271.     end
  272.     return [dx, dy]
  273.   end
  274.   #--------------------------------------------------------------------------
  275.   # ○ ウィンドウの可視・アクティブ状態判定
  276.   #--------------------------------------------------------------------------
  277.   def window_active?(window)
  278.     return false if window == nil
  279.     return false if window.disposed?
  280.     return false unless window.visible

  281.     if window.is_a?(Window_Selectable)
  282.       return true if window.active
  283.     elsif window.is_a?(Window_SaveFile)
  284.       return true if window.selected
  285.     end
  286.     return false
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ○ アクティブウィンドウを探す
  290.   #--------------------------------------------------------------------------
  291.   def search_active_window
  292.     return @windows.find { |w|
  293.       if !w.visible
  294.         false
  295.       elsif w.is_a?(Window_Selectable)
  296.         w.active && w.index >= 0
  297.       elsif w.is_a?(Window_SaveFile)
  298.         w.selected
  299.       else
  300.         false
  301.       end
  302.     }
  303.   end
  304. end

  305. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  306. #==============================================================================
  307. # ■ Scene_Base
  308. #==============================================================================

  309. class Scene_Base
  310.   #--------------------------------------------------------------------------
  311.   # ● 開始処理
  312.   #--------------------------------------------------------------------------
  313.   alias start_KGC_CursorAnimation start
  314.   def start
  315.     Window_Base.show_cursor_animation

  316.     start_KGC_CursorAnimation
  317.   end
  318.   #--------------------------------------------------------------------------
  319.   # ● 終了前処理
  320.   #--------------------------------------------------------------------------
  321.   alias pre_terminate_KGC_CursorAnimation pre_terminate
  322.   def pre_terminate
  323.     Window_Base.hide_cursor_animation

  324.     pre_terminate_KGC_CursorAnimation
  325.   end
  326. end

  327. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  328. #==============================================================================
  329. # ■ Scene_Title
  330. #==============================================================================

  331. if KGC::CursorAnimation::DEFAULT_ANIMATION

  332. class Scene_Title < Scene_Base
  333.   #--------------------------------------------------------------------------
  334.   # ● 各種ゲームオブジェクトの作成
  335.   #--------------------------------------------------------------------------
  336.   alias create_game_objects_KGC_CursorAnimation create_game_objects
  337.   def create_game_objects
  338.     create_game_objects_KGC_CursorAnimation

  339.     $game_switches[KGC::CursorAnimation::SWITCH_ID] = true
  340.   end
  341. end

  342. end  # <-- if KGC::CursorAnimation::DEFAULT_ANIMATION

  343. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  344. #==============================================================================
  345. # ■ Scene_Battle
  346. #==============================================================================

  347. class Scene_Battle < Scene_Base
  348.   #--------------------------------------------------------------------------
  349.   # ● 逃走の処理
  350.   #--------------------------------------------------------------------------
  351.   alias process_escape_KGC_CursorAnimation process_escape
  352.   def process_escape
  353.     @party_command_window.active = false

  354.     process_escape_KGC_CursorAnimation
  355.   end
  356. end

  357. class Window_Base < Window
  358.   @@__cursor_animation = Cursor_Animation.new
  359. end
复制代码
在rmvx顯示的效果

有誰可以
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-9 01:08

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表