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

Project1

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

[已经过期] 请教下同名技能不显示的问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
128 小时
注册时间
2009-1-28
帖子
2790
跳转到指定楼层
1
发表于 2009-4-21 04:08:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 霜冻之狼 于 2009-7-5 22:32 编辑

我原来的打算是做出这种效果:
角色的技能列表里,如果有名字一样的技能.
那么只显示威力最大的技能,其他的则不可见...

特地来请教下怎么制作这种效果,如果回答详细的话我会考虑增加悬赏.
此贴于 2009-4-22 10:32:06 被版主darkten提醒,请楼主看到后对本贴做出回应。
版务信息:本贴由楼主自主结贴~

牧师火枪流.jpg (47.76 KB, 下载次数: 5)

牧师火枪流.jpg

炼金术的根本法则是等价交换。想要获得,必须失去同等价值的东西。每当烦躁的时候,煎熬在不想做却又正在做的烦心事中的时候,我就安慰自己,提醒自己做这些事情的目的所在,告诉自己不要忽略所获得或者即将获得的回报,物质的,精神的,肉体的,灵魂的回报!只做想做的事情,就会失去不想失去的东西。

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
2
发表于 2009-4-21 04:24:25 | 只看该作者
既然不能显示威力较小的特技名称,也就不能使用威力较小的特技,是这样吗?
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
3
发表于 2009-4-21 13:13:38 | 只看该作者
插入以下脚本:
class Window_Skill
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    # 要显示到窗口中的技能的集合
    @data = []
    for i in [email protected]
      skill = $data_skills[@actor.skills]
      if skill != nil
        # 从第一个元素开始检查
        j = 0
        # 在已经添加的技能集合中搜索同名技能
        while j < @data.length
          # 如果发现集合中同名的技能
          if skill.name == @data[j].name &&
            # 且当前准备添加的技能威力大于该同名技能
            skill.power.abs >= @data[j].power.abs
            # 将该同名技能替换为当前准备添加的威力更大的技能
            @data[j] = skill
            # 跳出检查同名的循环(每次只有可能有一个同名技能)
            break
          end
          # 索引加一,检查集合下一个元素
          j += 1
        end
        # 循环结束,如果循环检查到了同名技能
        # 循环会 j 一定在等于集合长度之前跳出;
        # 如果并没有发现同名技能,循环会一直检查到集合最后
        # j 会在最后一个元素索引的基础上再加一,于是变成了集合的长度
        # j < @data.length 不满足,循环结束
        # 所以这里用集合的长度判断是否没有找到同名的技能
        # 没有找到的话就把当前准备添加的技能直接添加到技能集合中

        @data.push(skill) if j == @data.length
      end
    end
    # 如果项目数不是 0 就生成位图、重新描绘全部项目
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
end


红色部分是在原脚本基础上新增的语句
在 skill.power 那个地方判断的是威力的绝对值,因为考虑到治疗技能的威力是负数,这个如果不需要的话可以将 .abs 的调用去掉~

另外很重要的一点就是:
这是线性搜索,效率不高,运算时间呈线性增长,角色的技能越多搜索同名技能的时间就越长
这主要是因为技能数组的长度未知,而且技能并非是以名称顺序排列的(默认是按数据库 ID 排列)
如果角色的技能很多,在打开技能窗口的时候就会很慢,这样的话应该考虑在将技能显示进窗口的时候就按照名称排序~
如果角色的技能很少,那么这个效率上的差别基本上可以忽略了

版主对此帖的认可:『强大{/qiang}』,积分『+251』。
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
128 小时
注册时间
2009-1-28
帖子
2790
4
 楼主| 发表于 2009-4-22 01:05:38 | 只看该作者
以下引用tommay于2009-4-20 20:24:25的发言:
既然不能显示威力较小的特技名称,也就不能使用威力较小的特技,是这样吗?

的确是这样的....抱歉没有说清楚,是我不对.

以下引用紫苏于2009-4-21 5:13:38的发言:
插入以下脚本

很感谢...紫苏不介意在脚本中插入一些注释吧?说实话我有点看不明白.


炼金术的根本法则是等价交换。想要获得,必须失去同等价值的东西。每当烦躁的时候,煎熬在不想做却又正在做的烦心事中的时候,我就安慰自己,提醒自己做这些事情的目的所在,告诉自己不要忽略所获得或者即将获得的回报,物质的,精神的,肉体的,灵魂的回报!只做想做的事情,就会失去不想失去的东西。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
5
发表于 2009-4-22 05:46:27 | 只看该作者
以下引用霜冻之狼于2009-4-21 17:05:38的发言:

很感谢...紫苏不介意在脚本中插入一些注释吧?说实话我有点看不明白.

更新了~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-16 05:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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