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

Project1

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

[已经解决] 异常状态以小图标显示,同时显示N种

[复制链接]

Lv5.捕梦者

梦石
0
星屑
35180
在线时间
4169 小时
注册时间
2007-12-15
帖子
10066
跳转到指定楼层
1
发表于 2017-3-25 00:30:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 89444640 于 2017-3-25 22:13 编辑

嗯……是这样。
xp中异常状态以文字和状态动画方式显示,定量高为目前显示的状态。


但是,角色和敌人都可能会同时中多种异常状态……,而动画显示方式不能同时多个动画叠加。
那么可否这样……
状态动画不用管,还是按照定量高的显示,避免修改地方过多。
以小图标显示在角色的窗口下方,最初想这样显示

用32*32的小图标显示异常状态,需要修改界面,空出下面两行留着显示异常状态。
但是界面修改可能麻烦,上面的方式先作罢。

考虑了一下,这样显示,

依照左下角黄色小方块中显示的数字排列状态图标的显示顺序。有点挡mp数字显示,最好把HP MP栏向上移动一点。最多同时8种状态,万一超过8种就往32*32格角色名字后面排
状态该上升下降的同时显示吧?理论上应该抵消但是xp似乎不能抵消,
推测了一下,大概能同时中的…… 中毒 眩晕 盲目 封魔 麻痹 防御上升 攻击上升 速度上升 速度下降 攻击下降 命中下降 ……还真能超过8种

最后又考虑了一下,有没有可能让这几个图标循环显示?我记得有的商业游戏就这样,只需要一个32*32的格子就行了。如gif左下角,

显示位置是默认显示正常的位置,然后每个状态停留时间……40帧,状态解除了这个状态的图标就不显示,因为不会脚本这个感觉上有点难。如何能实现不知道角色中什么状态的情况下,这几个图标循环……啊对了,可以就按照异常状态的id编号循环嘛,没中的就是fals不显示,有的就显示40帧然后切换其他的编号继续寻找,循环到最后一个状态,再从头到尾刷一遍……如果有了定量10的状态,显示定量10的状态,有两个定量10的,只显示战斗不能。希望不会卡得慌……
能改成这种最好。

特殊情况,诸如战斗不能这种定量10的,中了清除所有图标。只把战斗不能的图标放在第一格。
中毒等胜利后也不解除的状态,到下次战斗时候自动加上去,直到吃药解除为止一直都显示。

状态消失后,后面的自动顶上去……这个我不知道怎么形容,就是消失了以后,后面的状态自动往前排。

由于32*32太小无法显示很多汉字,可以事件做个异常状态的说明书,每个图标都需要做对应的做说明。只能让玩家自己记了。


而敌人,为了考虑玩家看着直观不用等每个状态全显示一遍再下达命令,在选择的时候,直接吧所有状态都都显示在敌人名称后面吧,如图所示

当选中敌人的时候。
考虑了一下美观度,在上下两个32格的中间显示,直接往后排吧,中多少种就依次往后排。

异常状态的文字描述的显示就不要显示了。还有平时那个什么状态都没有的正常也不用显示了。

求教这样的效果应该如何实现呢?
测试用工程图标如下,脚本在我目前的脚本上改就好,请告知改了哪里我好标注。
非常感谢。
测试异常状态图标显示.rar (276.53 KB, 下载次数: 114)

追加一个问题,偷盗脚本,偶尔会出现这个,不知道什么原因,不是总出现,队伍中人选择多种攻击方式,有的角色偷窃有的群攻有的单体攻击就会出现。

脚本就在发的工程里,
这行的内容是
517  when 3 #偷到金钱,并记录下回合将被围攻的角色
518            $game_temp.harvest[1]=$game_temp.steal[steal_index[0]][3][0]
519             $game_party.gain_gold($game_temp.harvest[1])
520             $game_temp.mass_brawl[steal_index[3]]||=[]
521           $game_temp.mass_brawl[steal_index[3]]<<steal_index[4]
让作者给改成无论怎么偷窃也是不被围攻,敌人还是按照随机顺序,先攻击队伍前卫为主。是不是这个原因造成的?

没事了 那个偷窃的数列似乎写错了 应该是 133行
@steal[109]=[[[372],1],[],[],[]] #付丧神 刀子 铁块 1
原来的不知道哪里少了一个中括号,这种数列看着好晕啊……错了完全看不出来。
给自己提醒一定不能复制,记得一定要改过来

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

来自 17楼
发表于 2017-3-30 20:22:32 | 只看该作者
本帖最后由 guoxiaomi 于 2017-3-30 20:23 编辑
89444640 发表于 2017-3-30 15:06
最后还是选择用动画显示了,感觉很欢乐的样子XD

有时间帮我把敌人的状态显示也做一下吧~


看到你使用了 '战斗时敌HP、MP显示' 脚本,所以这样写的……

以及物品/技能以友方单体为目标的时候,如果想跟跟敌人一样显示状态的话,要把 ENABLE_TO_ACTOR 设置为 true。如果没有Help_Window,就设置为 false。

微调位置在第 99,104,110 行

RUBY 代码复制
  1. #==============================================================================
  2. # ■ 常量定义
  3. #==============================================================================
  4. module SHOW_STATE_ICON
  5.   # 下方角色窗口绘制
  6.   # 三个分组对应三个不同的位置
  7.   STATE_GROUP_1 = [2]
  8.   STATE_GROUP_2 = [3,4,5,6]
  9.   STATE_GROUP_3 = []  
  10.   STATE_REFRESH_TIME = 40 # 刷新时间(帧)
  11.  
  12.   # 上方敌人/角色窗口绘制
  13.   STATE_GROUP_4 = [1,2,3,4,5,6,7,8] # 允许显示的状态
  14.   MAX_STATES = 5 # 最多绘制的图标数
  15.   ENABLE_TO_ACTOR = true # true 对角色也生效,false 只对敌人生效
  16. end
  17. #==============================================================================
  18. # ■ Window_BattleStatus
  19. #==============================================================================
  20. class Window_BattleStatus < Window_Base
  21.   # 常量
  22.   include SHOW_STATE_ICON
  23.  
  24.   def draw_actor_state(actor, x, y)   
  25.     # 清除所有图标
  26.     self.contents.fill_rect(x, y, 120, 32, Color.new(0,0,0,0))
  27.  
  28.     # 第 1 组
  29.     state_group1 = STATE_GROUP_1 & actor.states
  30.     if !state_group1.empty?
  31.       show_id = Graphics.frame_count / STATE_REFRESH_TIME % state_group1.size
  32.       state = state_group1[show_id]
  33.       # 绘制图标      
  34.       bitmap = RPG::Cache.icon(sprintf("状态%02d", state))
  35.       self.contents.blt(x + 8, y , bitmap, Rect.new(0, 0, 32, 32), opacity)
  36.     end
  37.  
  38.     # 第 2 组
  39.     state_group2 = STATE_GROUP_2 & actor.states
  40.     if !state_group2.empty?
  41.       show_id = Graphics.frame_count / STATE_REFRESH_TIME % state_group2.size
  42.       state = state_group2[show_id]
  43.       # 绘制图标
  44.       bitmap = RPG::Cache.icon(sprintf("状态%02d", state))
  45.       self.contents.blt(x + 8 + 34, y , bitmap, Rect.new(0, 0, 32, 32), opacity)
  46.     end
  47.  
  48.     # 第 3 组
  49.     state_group3 = STATE_GROUP_3 & actor.states
  50.     if !state_group3.empty?
  51.       show_id = Graphics.frame_count / STATE_REFRESH_TIME % state_group3.size
  52.       state = state_group3[show_id]
  53.       # 绘制图标      
  54.       bitmap = RPG::Cache.icon(sprintf("状态%02d", state))
  55.       self.contents.blt(x + 8 + 68, y , bitmap, Rect.new(0, 0, 32, 32), opacity)
  56.     end
  57.  
  58.     # 不显示状态时显示一段文字
  59.     if state_group1.empty? && state_group2.empty? && state_group3.empty?
  60.       # 显示文字
  61.       self.contents.font.color = normal_color
  62.       self.contents.draw_text(x, y, 120, 32, "o(* ̄▽ ̄*)ブ")
  63.     end
  64.   end  
  65.  
  66.   alias _SHOW_STATE_ICON_update update
  67.   def update
  68.     # 继续之前的 update
  69.     _SHOW_STATE_ICON_update
  70.     # 每 40 帧绘制 1 次状态图标
  71.     if Graphics.frame_count % STATE_REFRESH_TIME == 1
  72.       for i in 0...$game_party.actors.size
  73.         actor = $game_party.actors[i]
  74.         actor_x = i * 160 + 4      
  75.         if !@level_up_flags[i]         
  76.           draw_actor_state(actor, actor_x, 96)
  77.         end
  78.       end
  79.     end
  80.   end  
  81. end
  82.  
  83. #==============================================================================
  84. # ■ Window_Help
  85. #------------------------------------------------------------------------------
  86. # 追加定义的内容,可以显示角色和敌人的状态图标
  87. # * 需要配合 '战斗时敌HP、MP显示' 脚本使用
  88. #==============================================================================
  89. class Window_Help < Window_Base  
  90.   # 常量
  91.   include SHOW_STATE_ICON
  92.  
  93.   def draw_actor_state(actor, x, y)   
  94.     # 使用之前的绘制
  95.     if !actor.is_a?(Game_Enemy) && !ENABLE_TO_ACTOR
  96.       super
  97.     else
  98.       # x 偏移量,可以修改下面的 40
  99.       x = x - 40
  100.       # 绘制状态图标,最多 MAX_STATES 个
  101.       state_group4 = (STATE_GROUP_4 & actor.states).sort[0, MAX_STATES]   
  102.       state_group4.each_index do |i|
  103.         bitmap = RPG::Cache.icon(sprintf("状态%02d.png", state_group4[i]))
  104.         self.contents.blt(x + i * 34, y, bitmap, Rect.new(0, 0, 32, 32), 255)
  105.       end
  106.       # 正常的情况下
  107.       if state_group4.empty?
  108.         # 显示文字
  109.         self.contents.font.color = normal_color
  110.         self.contents.draw_text(x, y, 240, 32, "o(* ̄▽ ̄*)ブ")
  111.       end
  112.     end   
  113.   end
  114. end
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33430
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

2
发表于 2017-3-25 08:47:09 | 只看该作者
本帖最后由 芯☆淡茹水 于 2017-3-25 08:48 编辑

用默认窗口这样显示,真的很别扭。
默认窗口减去32的边,再增加32XN的图标显示,看起来遮挡了快一半的战斗画面。
总之用默认窗口显示多状态,并且是32*32的图标,那个画面真的太美,除了循环显示图片还行。
平时没有状态时,你空出的至少两行64 加窗口边16,至少面积 128*80 的空白,那个会让人感觉莫名其妙。
最好自己画窗口显示,那样可以自由排版,比如下面这样:


  角色状态只显示当前行动的角色,那样就空出很多位置。而状态显示没有底框,没状态时就是空白。
上面只是例子,排版也可以自己设计。
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

3
发表于 2017-3-25 11:50:58 手机端发表。 | 只看该作者
即使是dota2这种buff满天飞的游戏,在界面改版前,还是只能显示16个状态图标,多余的直接不显示。但是通常8-9个也是够用了。
用24*24的小icon,一行放6个,在我方状态窗口上方,或者战斗图下方显示48*144的两行,似乎也不算挤。
对于图标,可以考虑仿dota2的设计,状态图标和技能图标一致,但是用绿色和红色勾边分别表示有益/有害buff。这样玩家也不需要强记buff的意思了,因为跟技能图标一样,一看就知道是对应技能带来的效果。

点评

颜色勾边区分是个很好的想法,看看我回复的那个界面可以吗?我还是习惯32*32,因为图标都是这个大小的,状态中毒之类的画一看即懂那种  发表于 2017-3-25 21:27
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35180
在线时间
4169 小时
注册时间
2007-12-15
帖子
10066
4
 楼主| 发表于 2017-3-25 21:24:05 | 只看该作者
本帖最后由 89444640 于 2017-3-25 22:13 编辑
芯☆淡茹水 发表于 2017-3-25 08:47
用默认窗口这样显示,真的很别扭。
默认窗口减去32的边,再增加32XN的图标显示,看起来遮挡了快一半的战斗 ...


但是这样的话,会出现一个问题,无法群体观测角色状态,必须直观的观测到所有角色的状态才好下达指令。
需要做成这样的话,最好是当某个角色行动时候,其他角色的状态栏隐藏,该行动角色所有状态显示,
但是不能超过底下的32*5,因为有全屏动画在,底下的32*5菜单栏是不能动的了
敌人状态那里……如果以图示这么排列的话,应该会不错。但是头像就别显示了- -敌人太多画不起……只显示名字 hp mp 状态 两排

状态单独列出一排菜单,如果没中状态不显示,中了以后显示,32*8长,状态多余8个不显示。
正常两个字取消以后,以循环方式显示,用三个正好
红色很好理解 属性提升
绿色属性下降 各种异常
黄色是特殊状态,比如什么时空静止啦 魔法反射啦之类的。战斗不能也放在黄色位置,因为正好在中间。

敌人也可以 跟角色一样用红绿灯,做状态循环显示、但是不如显示8个的直观。

点评

在角色上方显示状态不好么..  发表于 2017-3-29 11:16
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

5
发表于 2017-3-26 01:13:36 | 只看该作者
89444640 发表于 2017-3-25 21:24
但是这样的话,会出现一个问题,无法群体观测角色状态,必须直观的观测到所有角色的状态才好下达指令。
...

首先……我是不太赞成用滚动的方法来显示状态……可能是个人习惯?

32x32的图标下面的状态栏最多能显示4个,如果多了的话,是不是可以像扑克牌那样叠起来,这样就算是8个状态,每个也能显示一半左右,玩家是能分辨出来到底上了什么状态。如果是5-6个状态,遮挡个20%左右是完全不影响的。此外,真正8个状态全上的时候,玩家一般也不care具体都是哪些状态吧。等到选中此角色时,再把状态图标全部展开。比如显示在状态窗口(下面的蓝色窗口)的上方。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35180
在线时间
4169 小时
注册时间
2007-12-15
帖子
10066
6
 楼主| 发表于 2017-3-26 08:38:20 | 只看该作者
本帖最后由 89444640 于 2017-3-26 09:02 编辑
guoxiaomi 发表于 2017-3-26 01:13
首先……我是不太赞成用滚动的方法来显示状态……可能是个人习惯?

32x32的图标下面的状态栏最多能显示4 ...


没错--b确实是个人习惯……
不过还是分析一下,
两种显示方式的利弊

红绿灯滚动显示,穿透性强辨识度高。
感觉上滚动显示节约空间又规矩,显示三个是比较合适的选择,

强化、正面状态左侧红色边框,
弱化、异常右侧绿色边框,
特殊状态中间的黄色边框,反正边框也是图标画的,死亡用黑色或者白色就好

这个跟游戏战斗设置思路可能也有关,
平时困难些的杂鱼战,己方4人出战并且有相关技能的的情况下 第一回合 辅助系上来加攻击或者魔攻或者其他,有偷盗系技能的角色偷窃,魔法师防御或者输出,战弓特殊类角色随意。
敌方第一回合出手,敌方尽量不要设置有N个异常状态的,详情请见轨迹系列,空轨1 最明显,敌人分区域会有几种异常状态攻击,装备对应饰品可以避免。战斗不太难的情况下,敌方尽量不能超过3个,否则群殴法师实在够呛,具体案例请见空轨1 的跳跳猫宝箱,6只怪对己方两人,有几率眩晕攻击,初期教很多玩家学做人。
因此己方未准备的情况下,中异常状态的最大可能性是1~2种,强化状态1种
2个异常滚动显示就可以接受,
而且杂鱼战,正常游戏情况下,很少有人把所有状态加全了。
如果是异常攻击为主的boss,这个难打是自然的,需要记忆他可能会有的几种异常攻击手段也是肯定的,而且有的双boss我还设置了歼灭顺序,先歼灭A再歼灭B,先灭B,A爆种给你来个boss濒死全屏大魔法团灭。再说boss让你一次就打过去就不对了嘛~必须得教你学做人几次才行。

继续分析叠加的情况,这是目前菜单,就是xp默认的方式
实在是菜单之类的我一直改不了,就一直用默认的,看了这么多年也习惯了。

n种异常状态显示在哪里合适呢?
还有啊,我觉得最好能直观的观看所有角色的状态变化,才容易下达指令,因为xp默认模式而且是回合制,不能切换执行指令的角色,只能按照角色1~4执行命令,这样比如只有角色4中了异常状态,我还需要角色1~3选择攻击,才能查看角色4的状态,
然后取消回到己方有解除该状态的角色下达指令,
如果是角色34中了还得瞬时记忆,如果用此种方式,还需要制作能在战斗中随时切换角色下达命令的脚本,就是执行命令时候,可以任意选择号角色,当所有角色指令下达完毕后,再执行命令。

而遮挡一半照着我这图标的诡异设置方式,应该是看不出来是中了哪个- -b

好处嘛~视觉效果如果做出来,比如把异常状态做成扑克的样子,作出一个旋转,这个我能做出来,在选定角色时候卡牌旋转并且呈现扇形摊开状态显示出来,但是有弧度的话……城市需估计麻烦,而且像素类的卡牌,旋转会失真,最好是旋转直着摊开,但是可能会有如下难题
中的状态是不确定的,因此要设置至少N中卡牌摊开的方式,中一种 两种 三种 N种类的摊开方式头不一样,而且如果这样,应该也把正面 负面 特殊三种情况分出来,正面一般就不管了,负面玩家肯定会看看影响程度决定师傅解除,特殊的作为特别强化手段,让玩家更直观的理解。
比如双攻、反击之类的。



印象中,传说系列是需要看游戏里面的战斗系统说明说明书记状态的,缺点是每作要上手需要很久。另外这个是自己感觉,玩个游戏连系统设置都不想记的玩家不要也罢。我又没做给别人玩XD,还是按照自己觉得合适的做吧~好吗~

而且制作个状态说明的说明书放到剧情分类系统的道具里面,也感觉很不错啊~我用不了脚本能,之鞥用道具、公用事件、显示图片的方式来显示。但是感觉上应该还可以。

另外,还有个升级和平时正常的状态显示,默认是用文字显示的,如果修改了状态显示方式,这两个也最好以对应的图标显示,否则会显得最下面那排缺点什么东西,
正常做个 —_— 或者( ^_^ )类的图标吧~
level up 换成中文显示的“升级”两个字的图标,每次看level up我都觉得蛋疼,显示中文吧。

点评

好的 非常感谢~  发表于 2017-3-26 23:13
状态窗口这个我倒是觉得难度不大,但是暂时没有时间去做>_<……等什么时候有大量时间了我改改那个图标显示的脚本  发表于 2017-3-26 22:57
多状态动画显示起来会很乱,不能用,图标那个都没个预览,而且2009,越早的脚本毛病越多,真心不敢随便用啊~求做红绿灯循环可有偿。  发表于 2017-3-26 19:23
多状态、动画可以看看我这里找到的2个脚本,不知道有没有效 http://rm.66rpg.com/forum.php?mod=viewthread&tid=399247  发表于 2017-3-26 12:03
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

7
发表于 2017-3-27 23:04:19 | 只看该作者
本帖最后由 guoxiaomi 于 2017-3-29 00:25 编辑
89444640 发表于 2017-3-26 08:38
没错--b确实是个人习惯……
不过还是分析一下,
两种显示方式的利弊


RUBY 代码复制
  1. # 三个分组对应三个不同的位置
  2. STATE_GROUP_1 = [2]
  3. STATE_GROUP_2 = [3,4,5,6]
  4. STATE_GROUP_3 = []
  5. # 刷新时间
  6. STATE_REFRESH_TIME = 40
  7.  
  8. class Window_BattleStatus < Window_Base
  9.   def draw_actor_state(actor, x, y)   
  10.     # 清除所有图标
  11.     self.contents.fill_rect(x, y, 120, 32, Color.new(0,0,0,0))
  12.  
  13.     # 第 1 组
  14.     state_group1 = STATE_GROUP_1 & actor.states
  15.     if !state_group1.empty?
  16.       show_id = Graphics.frame_count / STATE_REFRESH_TIME % state_group1.size
  17.       state = state_group1[show_id]
  18.       # 绘制图标      
  19.       bitmap = RPG::Cache.icon(sprintf("状态%02d", state))
  20.       self.contents.blt(x + 8, y , bitmap, Rect.new(0, 0, 32, 32), opacity)
  21.     end
  22.  
  23.     # 第 2 组
  24.     state_group2 = STATE_GROUP_2 & actor.states
  25.     if !state_group2.empty?
  26.       show_id = Graphics.frame_count / STATE_REFRESH_TIME % state_group2.size
  27.       state = state_group2[show_id]
  28.       # 绘制图标
  29.       bitmap = RPG::Cache.icon(sprintf("状态%02d", state))
  30.       self.contents.blt(x + 8 + 34, y , bitmap, Rect.new(0, 0, 32, 32), opacity)
  31.     end
  32.  
  33.     # 第 3 组
  34.     state_group3 = STATE_GROUP_3 & actor.states
  35.     if !state_group3.empty?
  36.       show_id = Graphics.frame_count / STATE_REFRESH_TIME % state_group3.size
  37.       state = state_group3[show_id]
  38.       # 绘制图标      
  39.       bitmap = RPG::Cache.icon(sprintf("状态%02d", state))
  40.       self.contents.blt(x + 8 + 68, y , bitmap, Rect.new(0, 0, 32, 32), opacity)
  41.     end
  42.  
  43.     # 不显示状态时显示一段文字
  44.     if state_group1.empty? && state_group2.empty? && state_group3.empty?
  45.       # 显示文字
  46.       self.contents.font.color = normal_color
  47.       self.contents.draw_text(x, y, 120, 32, "o(* ̄▽ ̄*)ブ")
  48.     end
  49.   end  
  50.  
  51.   alias _SHOW_STATE_ICON_update update
  52.   def update
  53.     # 继续之前的 update
  54.     _SHOW_STATE_ICON_update
  55.  
  56.     # 每 40 帧绘制 1 次状态图标
  57.     if Graphics.frame_count % STATE_REFRESH_TIME == 1
  58.       for i in 0...$game_party.actors.size
  59.         actor = $game_party.actors[i]
  60.         actor_x = i * 160 + 4      
  61.         if !@level_up_flags[i]         
  62.           draw_actor_state(actor, actor_x, 96)
  63.         end
  64.       end
  65.     end
  66.  
  67.   end  
  68. end


这是角色的状态,代码插到Main前就行,在你给的测试工程里通过了,每帧都会绘制,反正我的电脑上不卡。
1. 修改 17 27 37 行的参数可以微调位置。
2. 在STATE_GROUP_1~3里填上在这个位置显示的状态ID
3. 状态图标在Icon文件夹,15号状态文件名就是“状态15.png”

这三组代码几乎是一模一样的,嗯。因为真的是很简单的几句话。

敌人的状态,暂时不知道你准备怎么安排。

也可以做更多的展示,比如用透明度或者“半透明部分高度”来显示还剩多少回合……代码里暂时没写这个功能。

总之,绘制文字和Icon图块的方法已经写在代码里了,复制粘贴即可。



升级提示,全局搜索'LEVEL UP!'就知道了,在Window_BattleStatus的第 44 行,把'LEVEL UP!'改成别的字符串就行。

点评

降低刷新频率可以,但是我现在发现这个脚本会实时更新状态窗口,可能会导致血量在动画前提前扣除。我先看看有没有类似BUG  发表于 2017-3-28 18:19
单位这破机子卡的厉害,有什么方法放卡吗?  发表于 2017-3-28 10:45
我先试一下己方的。敌人那里,按照双丁字镐民工的图样横向排列如何?不过这个样子需要改下敌人图标显示,默认的是上方一个横条  发表于 2017-3-28 10:18
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35180
在线时间
4169 小时
注册时间
2007-12-15
帖子
10066
8
 楼主| 发表于 2017-3-28 11:52:40 | 只看该作者
guoxiaomi 发表于 2017-3-27 23:04
# 三个分组对应三个不同的位置
STATE_GROUP_1 = [2,3]
STATE_GROUP_2 = [4]



用这几个图标试一下吧,我试了,状态03中毒,放在第三组结果说找不到结果说找不到文件

RUBY 代码复制
  1. #修改 20 30 40 行的参数可以微调位置。
  2. #在STATE_GROUP_1~3里填上在这个位置显示的状态ID
  3. #状态图标在Icon文件夹,15号状态文件名就是“状态15.png
  4. # 三个分组对应三个不同的位置 作者66rpg guoxiaomi
  5. STATE_GROUP_1 = [2,]
  6. STATE_GROUP_2 = [1,]
  7. STATE_GROUP_3 = [3,]
  8. # 刷新时间
  9. STATE_REFRESH_TIME = 40
  10.  
  11. class Window_BattleStatus < Window_Base
  12.   def draw_actor_state(actor, x, y)
  13.     # 第 1 组
  14.     state_group1 = STATE_GROUP_1 & actor.states
  15.     if !state_group1.empty?
  16.       show_id = Graphics.frame_count / STATE_REFRESH_TIME % state_group1.size
  17.       state = state_group1[show_id]
  18.       # 绘制图标
  19.       bitmap = RPG::Cache.icon(sprintf("状态%02d.png", state))
  20.       self.contents.blt(x + 8, y , bitmap, Rect.new(0, 0, 32, 32), 255)
  21.     end
  22.  
  23.     # 第 2 组
  24.     state_group2 = STATE_GROUP_2 & actor.states
  25.     if !state_group2.empty?
  26.       show_id = Graphics.frame_count / STATE_REFRESH_TIME % state_group2.size
  27.       state = state_group2[show_id]
  28.       # 绘制图标
  29.       bitmap = RPG::Cache.icon(sprintf("状态%02d.png", state))
  30.       self.contents.blt(x + 8 + 34, y , bitmap, Rect.new(0, 0, 32, 32), 255)
  31.     end
  32.  
  33.     # 第 3 组
  34.     state_group3 = STATE_GROUP_3 & actor.states
  35.     if !state_group3.empty?
  36.       show_id = Graphics.frame_count / STATE_REFRESH_TIME % state_group3.size
  37.       state = state_group3[show_id]
  38.       # 绘制图标
  39.       bitmap = RPG::Cache.icon(sprintf("状态%02d.png", state))
  40.       self.contents.blt(x + 8 + 68, y , bitmap, Rect.new(0, 0, 32, 32), 255)
  41.     end
  42.  
  43.     # 不显示状态时显示一段文字
  44.     if state_group1.empty? && state_group2.empty? && state_group3.empty?
  45.       # 显示文字
  46.       self.contents.font.color = normal_color
  47.       self.contents.draw_text(x, y, 120, 32, "     (^-^)")      
  48.     end
  49.   end
  50.  
  51.   alias _SHOW_STATE_ICON_update update
  52.   def update
  53.     _SHOW_STATE_ICON_update
  54.     refresh
  55.   end  
  56. end

点评

ORZ手滑了  发表于 2017-3-28 13:35
不对啊……你这有几个文件名是字母O不是0啊  发表于 2017-3-28 12:46
去掉19,29,39行的 .png 试试?好像cache是不需要后缀的。你可能用了jpg文件?  发表于 2017-3-28 12:19
跟图标没有关系,你的icons文件夹下有 状态03.png 文件吗?  发表于 2017-3-28 12:02
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1358
在线时间
1295 小时
注册时间
2012-8-4
帖子
749
9
发表于 2017-3-28 12:05:28 | 只看该作者
本帖最后由 夜狠简单 于 2017-3-28 12:06 编辑
89444640 发表于 2017-3-28 11:52
用这几个图标试一下吧,我试了,状态03中毒,放在第三组结果说找不到结果说找不到文件

#修改 20 30 40  ...


RUBY 代码复制
  1. Dir["Graphics/Icons/*.png"].each{|i|
  2. @name_bitmap=$& if File.basename(i)[/状态[0]*#{$data_states[state].id}/]}
  3.   bitmap = RPG::Cache.icon(@name_bitmap)


可以匹配  状态003.png  状态03.png  状态3.png   状态0100.png

点评

如果是用id来命名的话 直接把#{$data_states[state].id}换为#{state} 就行  发表于 2017-3-28 17:10
谢谢~  发表于 2017-3-28 13:47
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35180
在线时间
4169 小时
注册时间
2007-12-15
帖子
10066
10
 楼主| 发表于 2017-3-28 19:54:22 | 只看该作者
我接着画图标清状态,好多杂七杂八的状态,太乱了。
另外对状态上升下降同时中的情况有疑问,比个有攻击上升50%的 有攻击下降50%的 两个状态同时中了似乎是两个图标都显示,但是实际效果是不是就只有100%
如果是上升25%下降50%呢? 真的实际是-25%攻击效果吗?

点评

状态应该是乘法吧。试一下附加几个修改最大hp的状态看看?  发表于 2017-3-28 20:57
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-13 14:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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