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

Project1

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

[已经解决] 請問一個舊腳本出現的問題"人物能力状态图的多边形网状態"

[复制链接]

Lv1.梦旅人

梦石
0
星屑
189
在线时间
366 小时
注册时间
2009-9-6
帖子
62
跳转到指定楼层
1
发表于 2012-6-30 07:08:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 arnie510 于 2012-7-1 00:51 编辑



腳本網址
腳本如圖所示,但在測試時發現一個錯誤,如果角色不穿任何裝備,會報錯.
希望各位高手能幫助解答 謝謝!!
以下是錯誤訊息:
腳本節: "用六边形来绘制角色能力值" ,行號 65 : 發生了RangeError.
float-1.#IND out of range of integer

Lv3.寻梦者

梦石
0
星屑
1743
在线时间
485 小时
注册时间
2006-1-7
帖子
1073
2
发表于 2012-6-30 23:46:47 | 只看该作者
之前没有试过没有装备的情况。
同求
初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。
回复

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
3
发表于 2012-7-1 08:55:24 | 只看该作者
本帖最后由 Wind2010 于 2012-7-1 09:04 编辑



新工程测试报错,估计是攻防为0的时候描绘公式有问题,无法描绘水平线和纵向线
解决脚本:
  1. #---------------------------------------------------
  2. # 本脚本来自66RPG.com,作者Deathless
  3. #---------------------------------------------------
  4. #-----------------------------------------------------
  5. # 功能设定
  6. # 当=1和=2,会改变图形的大小
  7. # =1的时候,图形为每个人自身的能力分配,最大数就是顶点
  8. # =2的时候,图形为所有人的能力分配,顶点为999
  9. #
  10. # 如果不需要999这么大,本脚本中搜索
  11. # "c[i] = get_position(a[0][0], a[0][1], a[i+1][0], a[i+1][1], b[i] / 999.0)"
  12. # 把这个999修改了即可。
  13. #-----------------------------------------------------
  14. ST_DRAW_SIX_LINES_TYPE = 2
  15. class Bitmap
  16.   #--------------------------------------------------------------------------
  17.   # ● 描绘直线     
  18.   #     x1,y1,x2,y2:  直线两端的坐标
  19.   #     width:    宽度   
  20.   #     color:    颜色
  21.   #--------------------------------------------------------------------------
  22.   def drawline(x1, y1, x2, y2, width, color)
  23.     x1 = x1.to_f
  24.     y1 = y1.to_f
  25.     x2 = x2.to_f
  26.     y2 = y2.to_f
  27.     width = width.to_f
  28.     k = (y2 - y1) / (x2 - x1)
  29.     if k.abs > 1
  30.       drawline_x(x1, y1, x2, y2, width, color)
  31.     else
  32.       drawline_y(x1, y1, x2, y2, width, color)
  33.     end
  34.   end
  35.   def drawline_x(x1, y1, x2, y2, width, color)
  36.     l = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5 * width / (y1 - y2)
  37.     l = 1 if l.nan? #####
  38.     length = l.abs * 2
  39.     k = (x2 - x1) / (y2 - y1) #x=ky+b
  40.     k = 1 if k.nan? #####
  41.     b = x1 - k * y1
  42.     if l > 0
  43.       for ty in y2.to_i..y1.to_i
  44.         tx = ty * k + b
  45.         fill_rect(tx - l, ty, length, 1, color)
  46.       end
  47.     else
  48.       for ty in y1.to_i..y2.to_i
  49.         tx = ty * k + b
  50.         fill_rect(tx + l, ty, length, 1, color)
  51.       end
  52.     end
  53.   end
  54.   def drawline_y(x1, y1, x2, y2, width, color)
  55.     l = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5 * width / (x1 - x2)
  56.     l = 1 if l.nan? #####
  57.     height = l.abs * 2
  58.     k = (y2 - y1) / (x2 - x1) #y=kx+b
  59.     k = 1 if k.nan? #####
  60.     b = y1 - k * x1
  61.     if l > 0
  62.       for tx in x2.to_i..x1.to_i
  63.         ty = tx * k + b
  64.         fill_rect(tx, ty - l, 1, height, color)
  65.       end
  66.     else
  67.       for tx in x1.to_i..x2.to_i
  68.         ty = tx * k + b
  69.         fill_rect(tx, ty + l, 1, height, color)
  70.       end
  71.     end
  72.   end
  73. end
  74. class Window_Status < Window_Base
  75.   def get_position(x_begin, y_begin, x_end, y_end, percent)
  76.     a = []
  77.     a[0] = x_begin + (x_end - x_begin) * percent
  78.     a[1] = y_begin + (y_end - y_begin) * percent
  79.     return a
  80.   end
  81.   def refresh
  82.     self.contents.clear
  83.     x0 = 60 #图表的坐标
  84.     y0 = 220
  85.     r = 100.0 #图表的大小,友情提示:浮点数后面的.0不要省略了
  86.     h = 3 ** 0.5 * r / 2
  87.     a = [] #六边形的顶点和圆心
  88.     a[0] = [r, h] #圆心
  89.     a[1] = [r / 2, 0.0]
  90.     a[2] = [r * 3 / 2, 0.0]
  91.     a[6] = [0.0, h]
  92.     a[3] = [r * 2, h]
  93.     a[5] = [r / 2, h * 2]
  94.     a[4] = [r * 3 / 2, h * 2]
  95.     for i in a
  96.       i[0] += x0
  97.       i[1] += y0
  98.     end
  99.     self.contents.font.color = system_color
  100.     self.contents.draw_text(a[1][0] - 16 , a[1][1] - 32, 80, 32, "攻")
  101.     self.contents.draw_text(a[2][0] - 4, a[2][1] - 32, 80, 32, "防")
  102.     self.contents.draw_text(a[6][0] - 28, a[6][1] - 16, 80, 32, "力")
  103.     self.contents.draw_text(a[5][0] - 16, a[5][1], 80, 32, "敏")
  104.     self.contents.draw_text(a[4][0] - 4, a[4][1], 80, 32, "速")
  105.     self.contents.draw_text(a[3][0] + 8, a[3][1] - 16, 80, 32, "魔")
  106.     #描绘边框
  107.     for i in 1...a.size
  108.       self.contents.drawline(a[0][0], a[0][1], a[i][0], a[i][1], 1, disabled_color)
  109.     end
  110.     self.contents.drawline(a[1][0], a[1][1], a[2][0], a[2][1], 1, text_color(6))
  111.     self.contents.drawline(a[2][0], a[2][1], a[3][0], a[3][1], 1, text_color(6))
  112.     self.contents.drawline(a[3][0], a[3][1], a[4][0], a[4][1], 1, text_color(6))
  113.     self.contents.drawline(a[4][0], a[4][1], a[5][0], a[5][1], 1, text_color(6))
  114.     self.contents.drawline(a[5][0], a[5][1], a[6][0], a[6][1], 1, text_color(6))
  115.     self.contents.drawline(a[6][0], a[6][1], a[1][0], a[1][1], 1, text_color(6))
  116.     #描绘能力曲线
  117.     b = [] #获取能力值
  118.     b.push(@actor.atk)
  119.     b.push(@actor.pdef)
  120.     b.push(@actor.int)
  121.     b.push(@actor.agi)
  122.     b.push(@actor.dex)
  123.     b.push(@actor.str)
  124.     case ST_DRAW_SIX_LINES_TYPE
  125.     when 2
  126.       #跟999作比较
  127.       c = []
  128.       for i in 0...b.size
  129.         c[i] = get_position(a[0][0], a[0][1], a[i+1][0], a[i+1][1], b[i] / 999.0)
  130.       end
  131.       for i in 0...c.size
  132.         self.contents.drawline(c[i][0], c[i][1], c[i-1][0], c[i-1][1], 1, text_color(3))
  133.       end     
  134.     when 1
  135.       #跟最高能力值比较
  136.       max_abi = 0
  137.       b.each{|i| max_abi = [max_abi, i].max}
  138.       max_abi = max_abi.to_f
  139.       c = [] #获得能力值的坐标
  140.       for i in 0...b.size
  141.         c[i] = get_position(a[0][0], a[0][1], a[i+1][0], a[i+1][1], b[i] / max_abi)
  142.       end
  143.       for i in 0...c.size
  144.         self.contents.drawline(c[i][0], c[i][1], c[i-1][0], c[i-1][1], 1, text_color(3))
  145.       end   
  146.     end
  147.     #描绘能力数值
  148.     self.contents.font.color = knockout_color
  149.     self.contents.font.size = 14
  150.     for i in 0...b.size
  151.       self.contents.draw_text(c[i][0], c[i][1], 32, 24, b[i].to_s)
  152.     end
  153.     self.contents.font.size = 22
  154.     #以下未修改     
  155.     draw_actor_graphic(@actor, 40, 112)
  156.     draw_actor_name(@actor, 4, 0)
  157.     draw_actor_class(@actor, 4 + 144, 0)
  158.     draw_actor_level(@actor, 96, 32)
  159.     draw_actor_state(@actor, 96, 64)
  160.     draw_actor_hp(@actor, 96, 112, 172)
  161.     draw_actor_sp(@actor, 96, 144, 172)
  162.     self.contents.font.color = system_color
  163.     self.contents.draw_text(320, 48, 80, 32, "EXP")
  164.     self.contents.draw_text(320, 80, 80, 32, "NEXT")
  165.     self.contents.font.color = normal_color
  166.     self.contents.draw_text(320 + 80, 48, 84, 32, @actor.exp_s, 2)
  167.     self.contents.draw_text(320 + 80, 80, 84, 32, @actor.next_rest_exp_s, 2)
  168.     self.contents.font.color = system_color
  169.     self.contents.draw_text(320, 160, 96, 32, "装备")
  170.     draw_item_name($data_weapons[@actor.weapon_id], 320 + 16, 208)
  171.     draw_item_name($data_armors[@actor.armor1_id], 320 + 16, 256)
  172.     draw_item_name($data_armors[@actor.armor2_id], 320 + 16, 304)
  173.     draw_item_name($data_armors[@actor.armor3_id], 320 + 16, 352)
  174.     draw_item_name($data_armors[@actor.armor4_id], 320 + 16, 400)
  175.   end
  176. end
复制代码

评分

参与人数 1梦石 +2 收起 理由
hcm + 2 认可答案

查看全部评分


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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
189
在线时间
366 小时
注册时间
2009-9-6
帖子
62
4
 楼主| 发表于 2012-7-1 10:10:09 | 只看该作者
本帖最后由 arnie510 于 2012-7-1 10:10 编辑
Wind2010 发表于 2012-7-1 08:55


新工程测试报错,估计是攻防为0的时候描绘公式有问题,无法描绘水平线和纵向线
解决脚本: ...


非常的感謝您願意幫助新手解決問題! {:2_249:}
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 03:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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