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

Project1

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

[已经解决] 求个可以同时显示1个角色身上的多个状态的脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
956
在线时间
30 小时
注册时间
2012-8-30
帖子
2
跳转到指定楼层
1
 楼主| 发表于 2013-2-18 12:16:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
新人初来乍到,不懂规矩神马的。。。求帮助

Lv2.观梦者 (暗夜天使)

万兽

梦石
0
星屑
597
在线时间
2271 小时
注册时间
2006-11-4
帖子
4868

贵宾

2
发表于 2013-2-18 12:24:13 | 只看该作者
本帖最后由 弗雷德 于 2013-2-18 12:58 编辑

多重状态:http://www.66rpg.com/articles/3076
图标显示状态:http://www.66rpg.com/articles/3**
LZ善用搜索。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
956
在线时间
30 小时
注册时间
2012-8-30
帖子
2
3
 楼主| 发表于 2013-2-18 12:45:06 | 只看该作者
弗雷德 发表于 2013-2-18 12:24
多重状态:http://www.66rpg.com/articles/3076
图标显示状态:http://www.66rpg.com/articles/3**
LZ善用 ...

第二个是不是传错网址了。。。?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
7
星屑
650
在线时间
130 小时
注册时间
2011-5-12
帖子
135
4
发表于 2013-2-18 12:45:11 | 只看该作者
弗雷德 发表于 2013-2-18 12:24
多重状态:http://www.66rpg.com/articles/3076
图标显示状态:http://www.66rpg.com/articles/3**
LZ善用 ...

大哥...“图标显示状态”似乎不可用啊老湿...是不是传错网址了老湿...
回复 支持 反对

使用道具 举报

Lv2.观梦者 (暗夜天使)

万兽

梦石
0
星屑
597
在线时间
2271 小时
注册时间
2006-11-4
帖子
4868

贵宾

5
发表于 2013-2-18 12:57:13 | 只看该作者
3 1 8 8这都能被和谐,是啥原因了?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
865 小时
注册时间
2010-6-27
帖子
131
6
发表于 2013-2-18 15:37:14 | 只看该作者
有让状态动画同时显示的脚本吗?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
244 小时
注册时间
2010-6-19
帖子
95
7
发表于 2013-2-18 15:57:23 | 只看该作者
  1. #======================================================================
  2. # 脚本来自www.66rpg.com,使用或转载请保留此信息
  3. # 功能:多状态动画同时显示
  4. # 版本:2.01
  5. # 作者:后知后觉 2011-3-2
  6. # 使用方法:插入Main前即可
  7. # 冲突可能:只要在你的脚本编辑器内没有对 RPG::Sprite 或 Sprite_Battler 类
  8. #           以下三个方法做出过别的定义 则就有较大的兼容性
  9. #           loop_animation
  10. #           dispose_loop_animation
  11. #           update_loop_animation
  12. #======================================================================

  13. module RPG
  14.   class Sprite < ::Sprite
  15.     if @hzhj_alias_method_for_state_animation.nil?
  16.       alias hzhj_old_ini_for_state_animation initialize
  17.       alias hzhj_old_update_for_state_animation update
  18.       alias hzhj_old_x_for_state_animation x=
  19.       alias hzhj_old_y_for_state_animation y=
  20.       @hzhj_alias_method_for_state_animation = true
  21.     end
  22.     def initialize(*args)
  23.       @hzhj_loop_animations = []
  24.       @hzhj_loop_sprites = {}
  25.       @hzhj_loop_index = {}
  26.       hzhj_old_ini_for_state_animation(*args)
  27.     end
  28.     def loop_animation(animation)
  29.       return if @hzhj_loop_animations.include?(animation)
  30.       if animation.nil?
  31.         dispose_loop_animation
  32.         return
  33.       end
  34.       @hzhj_loop_animations.push(animation)
  35.       @hzhj_loop_index[animation] = 0
  36.       animation_name = animation.animation_name
  37.       animation_hue = animation.animation_hue
  38.       bitmap = RPG::Cache.animation(animation_name, animation_hue)
  39.       if @@_reference_count.include?(bitmap)
  40.         @@_reference_count[bitmap] += 1
  41.       else
  42.         @@_reference_count[bitmap] = 1
  43.       end
  44.       loop_animation_sprites = []
  45.       for i in 0..15
  46.         sprite = ::Sprite.new(self.viewport)
  47.         sprite.bitmap = bitmap
  48.         sprite.visible = false
  49.         loop_animation_sprites.push(sprite)
  50.       end
  51.       @hzhj_loop_sprites[animation] = loop_animation_sprites
  52.       update_loop_animation
  53.     end
  54.     def dispose_loop_animation
  55.       if not @hzhj_loop_animations.empty?
  56.         for sprites in @hzhj_loop_sprites.values
  57.           next if sprites.nil?
  58.           sprite = sprites[0]
  59.           if sprite != nil
  60.             @@_reference_count[sprite.bitmap] -= 1
  61.             if @@_reference_count[sprite.bitmap] == 0
  62.               sprite.bitmap.dispose
  63.             end
  64.           end
  65.           for sprite in sprites
  66.             sprite.dispose
  67.           end
  68.         end
  69.         @hzhj_loop_index.clear
  70.         @hzhj_loop_sprites.clear
  71.         @hzhj_loop_animations.clear
  72.       end
  73.     end
  74.     def update
  75.       hzhj_old_update_for_state_animation
  76.       if not @hzhj_loop_animations.empty? and (Graphics.frame_count % 2 == 0)
  77.         update_loop_animation
  78.         for animation in @hzhj_loop_animations
  79.           @hzhj_loop_index[animation] += 1
  80.           @hzhj_loop_index[animation] %= animation.frame_max
  81.         end
  82.       end
  83.     end
  84.     def update_loop_animation
  85.       for animation in @hzhj_loop_animations
  86.         frame_index = @hzhj_loop_index[animation]
  87.         cell_data = animation.frames[frame_index].cell_data
  88.         position = animation.position
  89.         sprites = @hzhj_loop_sprites[animation]
  90.         animation_set_sprites(sprites, cell_data, position)
  91.         for timing in animation.timings
  92.           if timing.frame == frame_index
  93.             animation_process_timing(timing, true)
  94.           end
  95.         end
  96.       end
  97.     end
  98.     def x=(new_x)
  99.       sx = new_x - self.x
  100.       if sx != 0
  101.         if not @hzhj_loop_animations.empty?
  102.           for animation in @hzhj_loop_animations
  103.             for i in 0..15
  104.               @hzhj_loop_sprites[animation][i].x += sx
  105.             end
  106.           end
  107.         end
  108.       end
  109.       hzhj_old_x_for_state_animation(new_x)
  110.     end
  111.     def y=(new_y)
  112.       sy = new_y - self.y
  113.       if sy != 0
  114.         if not @hzhj_loop_animations.empty?
  115.           for animation in @hzhj_loop_animations
  116.             for i in 0..15
  117.               @hzhj_loop_sprites[animation][i].y += sy
  118.             end
  119.           end
  120.         end
  121.       end
  122.       hzhj_old_y_for_state_animation(new_y)
  123.     end
  124.     def stop_loop_animation(animation)
  125.       return if not @hzhj_loop_animations.include?(animation)
  126.       if not @battler.nil?
  127.         for i in @battler.states
  128.           next if $data_states[i].nil?
  129.           if $data_states[i].animation_id == animation.id
  130.             return
  131.           end
  132.         end
  133.       end
  134.       sprites = @hzhj_loop_sprites[animation]
  135.       sprite = sprites[0]
  136.       if sprite != nil
  137.         @@_reference_count[sprite.bitmap] -= 1
  138.         if @@_reference_count[sprite.bitmap] == 0
  139.           sprite.bitmap.dispose
  140.         end
  141.       end
  142.       for sprite in sprites
  143.         sprite.dispose
  144.       end
  145.       @hzhj_loop_index[animation] = 0
  146.       @hzhj_loop_sprites[animation] = nil
  147.       @hzhj_loop_animations.delete(animation)
  148.     end
  149.   end
  150. end
  151. #==============================================================================
  152. # ■ Game_Battler
  153. #==============================================================================

  154. class Game_Battler
  155.   if @hzhj_alias_method_for_state_animation.nil?
  156.     alias hzhj_old_ini_gb_state_animation initialize
  157.     alias hzhj_old_add_state add_state
  158.     alias hzhj_old_remove_state remove_state
  159.     @hzhj_alias_method_for_state_animation = true
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 定义实例变量
  163.   #--------------------------------------------------------------------------
  164.   attr_reader   :hzhj_add_state_id
  165.   attr_reader   :hzhj_remove_state_id
  166.   #--------------------------------------------------------------------------
  167.   # ● 初始化对像
  168.   #--------------------------------------------------------------------------
  169.   def initialize
  170.     @hzhj_add_state_id = []
  171.     @hzhj_remove_state_id = []
  172.     hzhj_old_ini_gb_state_animation
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● 附加状态
  176.   #--------------------------------------------------------------------------
  177.   def add_state(state_id, force = false)
  178.     old_states = @states.clone
  179.     hzhj_old_add_state(state_id, force)
  180.     return if old_states == @states
  181.     zjdzt = (@states | old_states) & @states
  182.     jsdzt = (@states | old_states) & old_states
  183.     for i in zjdzt
  184.       if $data_states[i].animation_id > 0
  185.         if not @hzhj_add_state_id.include?(i)
  186.           @hzhj_add_state_id.push(i)
  187.         end
  188.       end
  189.     end
  190.     for i in jsdzt
  191.       if $data_states[i].animation_id > 0
  192.         if not @hzhj_remove_state_id.include?(i)
  193.           @hzhj_remove_state_id.push(i)
  194.         end
  195.       end
  196.     end
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # ● 解除状态
  200.   #--------------------------------------------------------------------------
  201.   def remove_state(state_id, force = false)
  202.     old_states = @states.clone
  203.     hzhj_old_remove_state(state_id, force)
  204.     return if old_states == @states
  205.     zjdzt = (@states | old_states) & @states
  206.     jsdzt = (@states | old_states) & old_states
  207.     for i in zjdzt
  208.       if $data_states[i].animation_id > 0
  209.         if not @hzhj_add_state_id.include?(i)
  210.           @hzhj_add_state_id.push(i)
  211.         end
  212.       end
  213.     end
  214.     for i in jsdzt
  215.       if $data_states[i].animation_id > 0
  216.         if not @hzhj_remove_state_id.include?(i)
  217.           @hzhj_remove_state_id.push(i)
  218.         end
  219.       end
  220.     end
  221.   end
  222. end
  223. #==============================================================================
  224. # ■ Sprite_Battler
  225. #==============================================================================

  226. class Sprite_Battler < RPG::Sprite
  227.   if @hzhj_alias_sb_for_state_animation.nil?
  228.     alias hzhj_old_init_sb_for_state_animation initialize
  229.     alias hzhj_old_update_sb_for_state_animation update
  230.     @hzhj_alias_sb_for_state_animation = true
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 初始化
  234.   #--------------------------------------------------------------------------
  235.   def initialize(*args)
  236.     hzhj_old_init_sb_for_state_animation(*args)
  237.     if not @battler.nil?
  238.       @battler.hzhj_add_state_id.clear
  239.       @battler.hzhj_remove_state_id.clear
  240.       for i in @battler.states
  241.         next if $data_states[i].nil?
  242.         next if $data_states[i].animation_id == 0
  243.         next if $data_animations[$data_states[i].animation_id].nil?
  244.         @battler.hzhj_add_state_id.push(i)
  245.       end
  246.     end
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   # ● 刷新
  250.   #--------------------------------------------------------------------------
  251.   def update
  252.     hzhj_old_update_sb_for_state_animation
  253.     if not @battler.nil?
  254.       if @battler.damage.nil?
  255.         if not @battler.hzhj_add_state_id.empty?
  256.           for i in @battler.hzhj_add_state_id
  257.             if @battler.state?(i)
  258.               animation_id = $data_states[i].animation_id
  259.               animation = $data_animations[animation_id]
  260.               loop_animation(animation) if not animation.nil?
  261.             end
  262.           end
  263.           @battler.hzhj_add_state_id.clear
  264.         end
  265.         if not @battler.hzhj_remove_state_id.empty?
  266.           for i in @battler.hzhj_remove_state_id
  267.             if not @battler.state?(i)
  268.               animation_id = $data_states[i].animation_id
  269.               animation = $data_animations[animation_id]
  270.               stop_loop_animation(animation) if not animation.nil?
  271.             end
  272.           end
  273.           @battler.hzhj_remove_state_id.clear
  274.         end
  275.       end
  276.     end
  277.   end
  278. end

  279. #======================================================================
  280. # 脚本来自 www.66rpg.com 使用或转载请保留此信息
  281. # 功能:多状态动画同时显示
  282. # 版本:2.01
  283. # 作者:后知后觉 2011-3-2
  284. # 使用方法:插入Main前即可
  285. #======================================================================
复制代码

评分

参与人数 1星屑 +66 收起 理由
hys111111 + 66 感谢回答

查看全部评分

没事做个游戏
暗黑-外传
剧情:■■■■■□□□□□
脚本:■■■■■■■■■□
素材:■■■■■■■■■■
地图:■■■■■■■■■□
系统:■■■■■■■■□□
整体完成度:■■■■■■■□□□
发布日期:未知
回复 支持 反对

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
8
发表于 2013-2-18 20:21:17 | 只看该作者
其实XP默认显示一个状态是因为默认的字符串长度太短了233
Window_Base的191行

  1.   def draw_actor_state(actor, x, y, width = 120)
复制代码
120改大点

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-29 03:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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