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

Project1

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

[已经解决] 【帮忙改脚本】如何做到16帧数的行走图。谢谢。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
291 小时
注册时间
2011-12-23
帖子
106
跳转到指定楼层
1
发表于 2012-11-8 05:01:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 hcm 于 2012-11-10 10:29 编辑
  1. # 移動パターン増加 Ver 1.00
  2. # 配布元・サポートURL
  3. # [url]http://members.jcom.home.ne.jp/cogwheel/[/url]

  4. #==============================================================================
  5. # ■ Game_Character (分割定義 2)
  6. #------------------------------------------------------------------------------
  7. #  キャラクターを扱うクラスです。このクラスは Game_Player クラスと Game_Event
  8. # クラスのスーパークラスとして使用されます。
  9. #==============================================================================

  10. class Game_Character
  11.   #--------------------------------------------------------------------------
  12.   # ● フレーム更新
  13.   #--------------------------------------------------------------------------
  14.   def update
  15.     # ジャンプ中、移動中、停止中で分岐
  16.     if jumping?
  17.       update_jump
  18.     elsif moving?
  19.       update_move
  20.     else
  21.       update_stop
  22.     end
  23.     # アニメカウントが最大値を超えた場合
  24.     # ※最大値は、基本値 18 から移動速度 * 1 を引いた値
  25.     # cd名に[n]が入っている場合、通常の(n-1)/4の速度でパターン更新
  26.     if @character_name[/\[(\d+)\]/]
  27.       @anime_count = 20 if @anime_count > 0 and @pattern == @original_pattern
  28.       if @anime_count * ($1.to_i - 1) / 4 > 18 - @move_speed * 2
  29.         # 停止時アニメが OFF かつ 停止中の場合
  30.         if not @step_anime and @stop_count > 0
  31.           # パターンをオリジナルに戻す
  32.           @pattern = @original_pattern
  33.         # 停止時アニメが ON または 移動中の場合
  34.         else
  35.           # パターンを更新
  36.           @pattern = @pattern % ($1.to_i - 1) + 1
  37.         end
  38.         # アニメカウントをクリア
  39.         @anime_count = 0
  40.       end
  41.     else
  42.     # 通常キャラのパターン更新処理(デフォルトの処理をコピペしただけ)
  43.       if @anime_count > 18 - @move_speed * 2
  44.         # 停止時アニメが OFF かつ 停止中の場合
  45.         if not @step_anime and @stop_count > 0
  46.           # パターンをオリジナルに戻す
  47.           @pattern = @original_pattern
  48.         # 停止時アニメが ON または 移動中の場合
  49.         else
  50.           # パターンを更新
  51.           @pattern = (@pattern + 1) % 4
  52.         end
  53.         # アニメカウントをクリア
  54.         @anime_count = 0
  55.       end
  56.     end
  57.     # ウェイト中の場合
  58.     if @wait_count > 0
  59.       # ウェイトカウントを減らす
  60.       @wait_count -= 1
  61.       return
  62.     end
  63.     # 移動ルート強制中の場合
  64.     if @move_route_forcing
  65.       # カスタム移動
  66.       move_type_custom
  67.       return
  68.     end
  69.     # イベント実行待機中またはロック状態の場合
  70.     if @starting or lock?
  71.       # 自律移動はしない
  72.       return
  73.     end
  74.     # 停止カウントが一定の値 (移動頻度から算出) を超えた場合
  75.     if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
  76.       # 移動タイプで分岐
  77.       case @move_type
  78.       when 1  # ランダム
  79.         move_type_random
  80.       when 2  # 近づく
  81.         move_type_toward_player
  82.       when 3  # カスタム
  83.         move_type_custom
  84.       end
  85.     end
  86.   end
  87. end

  88. #==============================================================================
  89. # ■ Sprite_Character
  90. #------------------------------------------------------------------------------
  91. #  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを
  92. # 監視し、スプライトの状態を自動的に変化させます。
  93. #==============================================================================

  94. class Sprite_Character < RPG::Sprite
  95.   #--------------------------------------------------------------------------
  96.   # ● フレーム更新
  97.   #--------------------------------------------------------------------------
  98.   def update
  99.     super
  100.     # タイル ID、cd名、色相のどれかが現在のものと異なる場合
  101.     if @tile_id != @character.tile_id or
  102.        @character_name != @character.character_name or
  103.        @character_hue != @character.character_hue
  104.       # タイル ID とcd名、色相を記憶
  105.       @tile_id = @character.tile_id
  106.       @character_name = @character.character_name
  107.       @character_hue = @character.character_hue
  108.       # タイル ID が有効な値の場合
  109.       if @tile_id >= 384
  110.         self.bitmap = RPG::Cache.tile($game_map.tileset_name,
  111.           @tile_id, @character.character_hue)
  112.         self.src_rect.set(0, 0, 32, 32)
  113.         self.ox = 16
  114.         self.oy = 32
  115.       # タイル ID が無効な値の場合
  116.       else
  117.         self.bitmap = RPG::Cache.character(@character.character_name,
  118.           @character.character_hue)
  119.         # cd名に[n]が入っている場合、パターン数を横:n, 縦:4とみなす
  120.         if @character.character_name[/\[(\d+)\]/]
  121.           @cw = bitmap.width / $1.to_i
  122.           @ch = bitmap.height / 4
  123.         # cd名に[D]が入っていない場合、通常通り横:4, 縦:4とする
  124.         else
  125.           @cw = bitmap.width / 4
  126.           @ch = bitmap.height / 4
  127.         end
  128.         self.ox = @cw / 2
  129.         self.oy = @ch
  130.       end
  131.     end
  132.     # 可視状態を設定
  133.     self.visible = (not @character.transparent)
  134.     # グラフィックがキャラクターの場合
  135.     if @tile_id == 0
  136.       # 転送元の矩形を設定
  137.       sx = @character.pattern * @cw
  138.       sy = (@character.direction - 2) / 2 * @ch
  139.       self.src_rect.set(sx, sy, @cw, @ch)
  140.     end
  141.     # スプライトの座標を設定
  142.     self.x = @character.screen_x
  143.     self.y = @character.screen_y
  144.     self.z = @character.screen_z(@ch)
  145.     # 不透明度、合成方法、茂み深さを設定
  146.     self.opacity = @character.opacity
  147.     self.blend_type = @character.blend_type
  148.     self.bush_depth = @character.bush_depth
  149.     # アニメーション
  150.     if @character.animation_id != 0
  151.       animation = $data_animations[@character.animation_id]
  152.       animation(animation, true)
  153.       @character.animation_id = 0
  154.     end
  155.   end
  156. end


  157. # ついでにメニュー画面でパターンが多いグラフィックを使用した場合の表記変更

  158. #==============================================================================
  159. # ■ Window_Base
  160. #------------------------------------------------------------------------------
  161. #  ゲーム中のすべてのウィンドウのスーパークラスです。
  162. #==============================================================================

  163. class Window_Base < Window
  164.   #--------------------------------------------------------------------------
  165.   # ● グラフィックの描画
  166.   #     actor : アクター
  167.   #     x     : 描画先 X 座標
  168.   #     y     : 描画先 Y 座標
  169.   #--------------------------------------------------------------------------
  170.   def draw_actor_graphic(actor, x, y)
  171.     bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  172.     if actor.character_name[/\[(\d+)\]/]
  173.       cw = bitmap.width / $1.to_i
  174.       ch = bitmap.height / 4
  175.     else
  176.       cw = bitmap.width / 4
  177.       ch = bitmap.height / 4
  178.     end
  179.     src_rect = Rect.new(0, 0, cw, ch)
  180.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  181.   end
  182. end

  183. #==============================================================================
  184. # ■ Window_SaveFile
  185. #------------------------------------------------------------------------------
  186. #  セーブ画面およびロード画面で表示する、セーブ梦境のウィンドウです。
  187. #==============================================================================

  188. class Window_SaveFile < Window_Base
  189.   #--------------------------------------------------------------------------
  190.   # ● リフレッシュ
  191.   #--------------------------------------------------------------------------
  192.   def refresh
  193.     self.contents.clear
  194.     # 梦境番号を描画
  195.     self.contents.font.color = normal_color
  196.     name = "梦境 #{@file_index + 1}"
  197.     self.contents.draw_text(4, 0, 600, 32, name)
  198.     @name_width = contents.text_size(name).width
  199.     # セーブ梦境が存在する場合
  200.     if @file_exist
  201.       # キャラクターを描画
  202.       for i in [email][email protected][/email]
  203.         bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1])
  204.         if @characters[i][0][/\[(\d+)\]/]
  205.           cw = bitmap.width / $1.to_i
  206.           ch = bitmap.height / 4
  207.         else
  208.           cw = bitmap.width / 4
  209.           ch = bitmap.height / 4
  210.         end
  211.         src_rect = Rect.new(0, 0, cw, ch)
  212.         x = 300 - @characters.size * 32 + i * 64 - cw / 2
  213.         self.contents.blt(x, 68 - ch, bitmap, src_rect)
  214.       end
  215.       # プレイ時間を描画
  216.       hour = @total_sec / 60 / 60
  217.       min = @total_sec / 60 % 60
  218.       sec = @total_sec % 60
  219.       time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
  220.       self.contents.font.color = normal_color
  221.       self.contents.draw_text(4, 8, 600, 32, time_string, 2)
  222.       # タイムスタンプを描画
  223.       self.contents.font.color = normal_color
  224.       time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
  225.       self.contents.draw_text(4, 40, 600, 32, time_string, 2)
  226.     end
  227.   end
  228. end

  229. #==============================================================================
  230. # ■ Game_Player
  231. #------------------------------------------------------------------------------
  232. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  233. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  234. #==============================================================================

  235. class Game_Player < Game_Character
  236.   #--------------------------------------------------------------------------
  237.   # ● アニメーションアップデート
  238.   #--------------------------------------------------------------------------
  239.   def anime_update
  240.     # アニメカウントが最大値を超えた場合
  241.     # ※最大値は、基本値 18 から移動速度 * 1 を引いた値
  242.     # 梦境名に[n]が入っている場合、通常の(n-1)/4の速度でパターン更新
  243.     if @character_name[/\[(\d+)\]/]
  244.       @anime_count = 20 if @anime_count > 0 and @pattern == @original_pattern
  245.       if @anime_count * ($1.to_i - 1) / 4 > 18 - @move_speed * 2
  246.         # 停止時アニメが OFF かつ 停止中の場合
  247.         if not @step_anime and @stop_count > 0
  248.           # パターンをオリジナルに戻す
  249.           @pattern = @original_pattern
  250.         # 停止時アニメが ON または 移動中の場合
  251.         else
  252.           # パターンを更新
  253.           @pattern = @pattern % ($1.to_i - 1) + 1
  254.         end
  255.         # アニメカウントをクリア
  256.         @anime_count = 0
  257.       end
  258.     else
  259.     # 通常キャラのパターン更新処理(デフォルトの処理をコピペしただけ)
  260.       if @anime_count > 18 - @move_speed * 2
  261.         # 停止時アニメが OFF かつ 停止中の場合
  262.         if not @step_anime and @stop_count > 0
  263.           # パターンをオリジナルに戻す
  264.           @pattern = @original_pattern
  265.         # 停止時アニメが ON または 移動中の場合
  266.         else
  267.           # パターンを更新
  268.           @pattern = (@pattern + 1) % 4
  269.         end
  270.         # アニメカウントをクリア
  271.         @anime_count = 0
  272.       end
  273.     end
  274.   end
  275. end
复制代码

Lv1.梦旅人

梦石
0
星屑
50
在线时间
291 小时
注册时间
2011-12-23
帖子
106
2
 楼主| 发表于 2012-11-8 05:04:04 | 只看该作者
具体修改哪个数值。
讨教讨教

其他的脚本也可以。
谢谢了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
291 小时
注册时间
2011-12-23
帖子
106
3
 楼主| 发表于 2012-11-8 06:41:31 | 只看该作者
本帖最后由 hcm 于 2012-11-10 10:29 编辑
  1. #========================================
  2. # 本脚本来自[url]www.66rpg.com[/url]
  3. #========================================
  4. class Game_Character
  5.   #--------------------------------------------------------------------------
  6.   # ● 刷新画面
  7.   #--------------------------------------------------------------------------
  8.   def update
  9.     # 跳跃中、移动中、停止中的分支
  10.     if jumping?
  11.       update_jump
  12.     elsif moving?
  13.       update_move
  14.     else
  15.       update_stop
  16.     end
  17.     # 动画计数超过最大值的情况下
  18.     # ※最大值等于基本值减去移动速度 * 1 的值
  19.     if @anime_count > 18 - @move_speed * 2
  20.       # 停止动画为 OFF 并且在停止中的情况下
  21.       if not @step_anime and @stop_count > 0
  22.         # 还原为原来的图形
  23.         @pattern = @original_pattern
  24.       # 停止动画为 ON 并且在移动中的情况下
  25.       else
  26.         # 更新图形
  27.         fps = @character_name.split(/_/)[1] != nil ? @character_name.split(/_/)[1].to_i : 4
  28.         @pattern = (@pattern + 1) % fps
  29.       end
  30.       # 清除动画计数
  31.       @anime_count = 0
  32.     end
  33.     # 等待中的情况下
  34.     if @wait_count > 0
  35.       # 减少等待计数
  36.       @wait_count -= 1
  37.       return
  38.     end
  39.     # 强制移动路线的场合
  40.     if @move_route_forcing
  41.       # 自定义移动
  42.       move_type_custom
  43.       return
  44.     end
  45.     # 事件执行待机中并且为锁定状态的情况下
  46.     if @starting or lock?
  47.       # 不做规则移动
  48.       return
  49.     end
  50.     # 如果停止计数超过了一定的值(由移动频度算出)
  51.     if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
  52.       # 移动类型分支
  53.       case @move_type
  54.       when 1  # 随机
  55.         move_type_random
  56.       when 2  # 接近
  57.         move_type_toward_player
  58.       when 3  # 自定义
  59.         move_type_custom
  60.       end
  61.     end
  62.   end
  63. end
  64. #===============================================
  65. # ■ Sprite_Character
  66. #-------------------------------------------------
  67. #  角色显示用脚本。监视 Game_Character 类的实例、
  68. # 自动变化脚本状态。
  69. #===============================================
  70. class Sprite_Character < RPG::Sprite
  71. #---------------------------------------
  72. # ● 更新画面
  73. #-----------------------------------------
  74. def update
  75.    super
  76.    # 元件 ID、文件名、色相与现在的情况存在差异的情况下
  77.    if @tile_id != @character.tile_id or
  78.       @character_name != @character.character_name or
  79.       @character_hue != @character.character_hue
  80.      # 记忆元件 ID 与文件名、色相
  81.      @tile_id = @character.tile_id
  82.      @character_name = @character.character_name
  83.      @character_hue = @character.character_hue
  84.      # 元件 ID 为有效值的情况下
  85.      if @tile_id >= 384
  86.        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
  87.          @tile_id, @character.character_hue)
  88.        self.src_rect.set(0, 0, 32, 32)
  89.        self.ox = 16
  90.        self.oy = 32
  91.      # 元件 ID 为无效值的情况下
  92.      else
  93.        self.bitmap = RPG::Cache.character(@character.character_name,
  94.          @character.character_hue)
  95.        fps = @character.character_name.split(/_/)[1] != nil ? @character.character_name.split(/_/)[1].to_i : 4
  96.        @cw = bitmap.width / fps
  97.        @ch = bitmap.height / 4
  98.        self.ox = @cw / 2
  99.        self.oy = @ch
  100.      end
  101.    end
  102.    # 设置可视状态
  103.    self.visible = (not @character.transparent)
  104.    # 图形是角色的情况下
  105.    if @tile_id == 0
  106.      # 设置传送目标的矩形
  107.      sx = @character.pattern * @cw
  108.      sy = (@character.direction - 2) / 2 * @ch
  109.      self.src_rect.set(sx, sy, @cw, @ch)
  110.    end
  111.    # 设置脚本的坐标
  112.    self.x = @character.screen_x
  113.    self.y = @character.screen_y
  114.    self.z = @character.screen_z(@ch)
  115.    # 设置不透明度、合成方式、茂密
  116.    self.opacity = @character.opacity
  117.    self.blend_type = @character.blend_type
  118.    self.bush_depth = @character.bush_depth
  119.    # 动画
  120.    if @character.animation_id != 0
  121.      animation = $data_animations[@character.animation_id]
  122.      animation(animation, true)
  123.      @character.animation_id = 0
  124.    end
  125. end
  126. end
复制代码
找到了主站的脚本,补充下:

很简单修改‘Fighter03’为16帧
只是没有待机站立图
待机16帧如何建立,

还是用原来默认的4帧。1楼2楼脚本可以混用吗。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
291 小时
注册时间
2011-12-23
帖子
106
4
 楼主| 发表于 2012-11-8 07:49:39 | 只看该作者
大宇宙时代 发表于 2012-11-8 06:41
#========================================
# 本脚本来自www.66rpg.com
#============================= ...

3楼自己找了答案:

插一个抓耳挠腮的站立脚本,就解决了问题。


剩下1楼怎么改呢?

评分

参与人数 1星屑 -40 收起 理由
hcm -40 拜托,不要自言自语得那么爽啊.

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
66
在线时间
91 小时
注册时间
2012-8-15
帖子
57
5
发表于 2012-11-8 10:37:52 | 只看该作者
http://pan.baidu.com/share/link?shareid=113944&uk=3489914983
我自己写的清纯版,内有待机动画,桢数相关设置,可以参考,也可以直接使用。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 10:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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