Project1

标题: 状态里的行走图 [打印本页]

作者: 迅雷進    时间: 2008-8-13 21:00
标题: 状态里的行走图
弱弱的问一个问题,
如何让状态里的行走图能够改成动态行走图呢? {/gg} {/gg}

http://rpg.blue/upload_program/files/xp_99061114.jpg

请前辈们指教~ [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 天下策    时间: 2008-8-13 21:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: 迅雷進    时间: 2008-8-13 22:03
以下引用天下策于2008-8-13 13:09:32的发言:

太勉强了把!

的确是勉强了一点,
如果3天以内没有前辈能够解答的话我会结帖的说。
作者: IamI    时间: 2008-8-13 22:07
默认的状态窗口咩?我试试。
作者: ONEWateR    时间: 2008-8-13 22:07
利用这个可以自行更改

http://rpg.blue/web/htm/news153.htm
作者: 迅雷進    时间: 2008-8-13 22:14
以下引用IamI于2008-8-13 14:07:12的发言:

默认的状态窗口咩?我试试。

是的,
前辈。
以下引用ONEWateR于2008-8-13 14:07:17的发言:

利用这个可以自行更改

http://rpg.blue/web/htm/news153.htm

我有拿这个来作参考,
不过改了大半天都不行,
不知自己错在哪里… {/lh} {/lh}
作者: dbshy    时间: 2008-8-13 22:22
以下引用迅雷進于2008-8-13 14:14:24的发言:

我有拿这个来作参考,
不过改了大半天都不行,
不知自己错在哪里…   


你把你的脚本帖出来,我帮你看看

作者: IamI    时间: 2008-8-13 22:24
以下引用迅雷進于2008-8-13 14:14:24的发言:

是的,
前辈。


我有拿这个来作参考,
不过改了大半天都不行,
不知自己错在哪里…   

我不是前辈= =你和小舞是同一时代的人吧……
然后错的原因是……Window_Status并不是实时刷新
下面给出一个有瑕疵的脚本(即插):
  1. class Scene_Status
  2.   alias oooo_update update
  3.   def update
  4.     oooo_update
  5.     @status_window.orz
  6.   end
  7. end
  8. class Window_Status  
  9.   alias oooo_init initialize
  10.   def initialize(actor)
  11.     @gr_at = 0
  12.     @time = -1
  13.     oooo_init(actor)
  14.   end
  15.   def draw_actor_graphic(actor, x, y)
  16.     @time = (@time + 1) % 5 #每10帧刷新1次
  17.     if @time != 0
  18.       return
  19.     end
  20.     @gr_at = (@gr_at + 1) % 4
  21.     bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  22.     cw = bitmap.width / 4
  23.     ch = bitmap.height / 4
  24.     src_rect = Rect.new(@gr_at * cw, 0, cw, ch)
  25.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  26.   end
  27.   def orz
  28.     draw_actor_graphic(@actor, 40, 112)
  29.   end
  30. end
复制代码

把阿尔西斯殿拖过来没有问题,但是其他的行走图就不好说了
作者: 迅雷進    时间: 2008-8-13 22:26
以下引用dbshy于2008-8-13 14:22:41的发言:
你把你的脚本帖出来,我帮你看看
  1. WALK_REFRESH_FRAME_SPEED = 10  # 刷新的速度,越大越慢,你可以改为3左右试试看

  2. #==============================================================================
  3. # Window_Status
  4. #==============================================================================
  5. class Window_Status < Window_Base
  6.   #--------------------------------------------------------------------------
  7.   # 初始化方法
  8.   #--------------------------------------------------------------------------
  9.   alias initialize_walk initialize
  10.   def initialize(x, y, width, height)
  11.     initialize_walk(x, y, width, height)
  12.     @start_walk = false
  13.     @turn_index = 0
  14.     @turn_phase = 0
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ★  角色行走图
  18.   #     actor : 角色
  19.   #     x     : 描绘的 X 坐标
  20.   #     y     : 描绘的 Y 坐标
  21.   #--------------------------------------------------------------------------
  22.   def draw_walk_actor_graphic(actor, x, y)
  23.     bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  24.     cw = bitmap.width / 4
  25.     ch = bitmap.height / 4
  26.     @start_turn = true
  27.     case @turn_phase
  28.     when 0
  29.       x_x = 0
  30.     when 1
  31.       x_x = cw
  32.     when 2
  33.       x_x = cw * 2
  34.     when 3
  35.       x_x = cw * 3
  36.     end
  37.     src_rect = Rect.new(x_x, 0, cw, ch)
  38.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ★  角色转向图
  42.   #     actor : 角色
  43.   #     x     : 描绘的 X 坐标
  44.   #     y     : 描绘的 Y 坐标
  45.   #--------------------------------------------------------------------------
  46.   def draw_turn_actor_graphic(actor, x, y)
  47.     bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  48.     cw = bitmap.width / 4
  49.     ch = bitmap.height / 4
  50.     @start_turn = true
  51.     case @turn_phase
  52.     when 0
  53.       x_x = 0
  54.     when 1
  55.       x_x = ch
  56.     when 2
  57.       x_x = ch * 3
  58.     when 3
  59.       x_x = ch * 2
  60.     end
  61.     src_rect = Rect.new(0, x_x, cw, ch)
  62.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   #  更新(可别使用刷新,玩命耗费内存= =)
  66.   #--------------------------------------------------------------------------
  67.   alias walk_update update
  68.   def update
  69.     walk_update
  70.     if @start_turn == true
  71.       @turn_index += 1
  72.       if @turn_index == WALK_REFRESH_FRAME_SPEED
  73.         refresh
  74.         @turn_index = 0
  75.         @turn_phase = (@turn_phase+1)%4
  76.       end
  77.     end
  78.   end  
  79. end

  80. #==============================================================================
  81. # Window_Status
  82. #==============================================================================
  83. class Window_Status < Window_Base
  84.   #--------------------------------------------------------------------------
  85.   # 把原有静态图改为动态走步图
  86.   #--------------------------------------------------------------------------
  87.   def draw_actor_graphic(actor, x, y)
  88.     draw_walk_actor_graphic(actor, x, y)
  89.   end
  90. end

  91. #==============================================================================
  92. # ■ Window_Status
  93. #------------------------------------------------------------------------------
  94. #  显示状态画面、完全规格的状态窗口。
  95. #==============================================================================

  96. class Window_Status < Window_Base
  97.   #--------------------------------------------------------------------------
  98.   # ● 初始化对像
  99.   #     actor : 角色
  100.   #--------------------------------------------------------------------------
  101.   def initialize(actor)
  102.     super(0, 0, 640, 480)
  103.     self.contents = Bitmap.new(width - 32, height - 32)
  104.     @actor = actor
  105.     refresh
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 刷新
  109.   #--------------------------------------------------------------------------
  110.   def refresh
  111.     self.contents.clear
  112.     draw_actor_graphic(@actor, 40, 112)
  113.     draw_actor_name(@actor, 4, 0)
  114.     draw_actor_class(@actor, 4 + 144, 0)
  115.     draw_actor_level(@actor, 96, 32)
  116.     draw_actor_state(@actor, 96, 64)
  117.     draw_actor_hp(@actor, 96, 112, 172)
  118.     draw_actor_sp(@actor, 96, 144, 172)
  119.     draw_actor_parameter(@actor, 96, 192, 0)
  120.     draw_actor_parameter(@actor, 96, 224, 1)
  121.     draw_actor_parameter(@actor, 96, 256, 2)
  122.     draw_actor_parameter(@actor, 96, 304, 3)
  123.     draw_actor_parameter(@actor, 96, 336, 4)
  124.     draw_actor_parameter(@actor, 96, 368, 5)
  125.     draw_actor_parameter(@actor, 96, 400, 6)
  126.     self.contents.font.color = system_color
  127.     self.contents.draw_text(320, 48, 80, 32, "EXP")
  128.     self.contents.draw_text(320, 80, 80, 32, "NEXT")
  129.     self.contents.font.color = normal_color
  130.     self.contents.draw_text(320 + 80, 48, 84, 32, @actor.exp_s, 2)
  131.     self.contents.draw_text(320 + 80, 80, 84, 32, @actor.next_rest_exp_s, 2)
  132.     self.contents.font.color = system_color
  133.     self.contents.draw_text(320, 160, 96, 32, "装备")
  134.     draw_item_name($data_weapons[@actor.weapon_id], 320 + 16, 208)
  135.     draw_item_name($data_armors[@actor.armor1_id], 320 + 16, 256)
  136.     draw_item_name($data_armors[@actor.armor2_id], 320 + 16, 304)
  137.     draw_item_name($data_armors[@actor.armor3_id], 320 + 16, 352)
  138.     draw_item_name($data_armors[@actor.armor4_id], 320 + 16, 400)
  139.   end
  140.   def dummy
  141.     self.contents.font.color = system_color
  142.     self.contents.draw_text(320, 112, 96, 32, $data_system.words.weapon)
  143.     self.contents.draw_text(320, 176, 96, 32, $data_system.words.armor1)
  144.     self.contents.draw_text(320, 240, 96, 32, $data_system.words.armor2)
  145.     self.contents.draw_text(320, 304, 96, 32, $data_system.words.armor3)
  146.     self.contents.draw_text(320, 368, 96, 32, $data_system.words.armor4)
  147.     draw_item_name($data_weapons[@actor.weapon_id], 320 + 24, 144)
  148.     draw_item_name($data_armors[@actor.armor1_id], 320 + 24, 208)
  149.     draw_item_name($data_armors[@actor.armor2_id], 320 + 24, 272)
  150.     draw_item_name($data_armors[@actor.armor3_id], 320 + 24, 336)
  151.     draw_item_name($data_armors[@actor.armor4_id], 320 + 24, 400)
  152.   end
  153. end
复制代码

有劳了,
前辈。
作者: 迅雷進    时间: 2008-8-13 22:32
以下引用IamI于2008-8-13 14:24:17的发言:
我不是前辈= =你和小舞是同一时代的人吧……

小舞?
是指小真前辈吗?
至于我是在去年的9月才开始活跃的,
提问区的前辈一定认得我,
因为我是很多问题问的一个麻烦后辈。
以下引用IamI于2008-8-13 14:24:17的发言:
然后错的原因是……Window_Status并不是实时刷新的
把阿尔西斯殿拖过来没有问题,但是其他的行走图就不好说了

确实…
作者: dbshy    时间: 2008-8-13 23:34
http://rpg.blue/upload_program/files/Project78_99070377.rar

前辈,改好了{/hx}
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 迅雷進    时间: 2008-8-14 01:00
以下引用dbshy于2008-8-13 15:34:23的发言:

http://rpg.blue/upload_program/files/Project78_99070377.rar

前辈,改好了

请问一下你除了增新了一个动态行走图的脚本之外,
还有没有修改哪里呢?
因为小弟把你的脚本复制到自己的游戏去时,
行走图仍然是静态的说… {/gg} {/gg}
作者: dbshy    时间: 2008-8-14 01:03
Scene_Status
@status_window.update

要想动态,必须刷新
作者: 迅雷進    时间: 2008-8-14 01:05
以下引用dbshy于2008-8-13 17:03:03的发言:

Scene_Status
@status_window.update

要想动态,必须刷新

太强大了!
谢谢前辈~ {/ll} {/ll}




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1