Project1

标题: RMVA - 角色深造系统 1.00 (新手不建议使用……) [打印本页]

作者: 804173948    时间: 2013-4-14 19:17
标题: RMVA - 角色深造系统 1.00 (新手不建议使用……)
本帖最后由 804173948 于 2013-4-14 20:40 编辑

首先,要强调的是:新手不建议使用……

然后……在引用脚本的说明之前——
介绍:角色深造——指的是“用物品强化角色”
但不是普通的随便提高一下什么攻击啊防御啊……
是提高潜在属性(反正是这个脚本添加上去的),学习特性(就是数据库里的特性)
但是特性又不是普通的特性……此处省略100000字
……我也不知道我在说什么了……貌似你也看不懂……
我也不说废话了……
接着……在引用脚本的说明
  1. =begin
  2. ==============================================================================
  3. MASS 1.00 (全称:Make Actors Stornger System)(好吐槽的英文)
  4. -----------------------------------------------------------------------------
  5. 深造系统 1.00 by 804173948
  6. ==============================================================================
  7. 历史更新:

  8. 2013-4-14
  9. 发布

  10. 前言:

  11. 不建议新手使用……

  12. 使用说明:

  13. 一、角色设置

  14. 1、角色潜在属性预设:
  15. 数据库-角色-备注:<潜在属性名称 数量> 如 <火 10>

  16. 2、角色特性预设
  17. 数据库-角色-备注:<特性 特性ID 开启> 如 <特性 4 开启>

  18. 二、物品设置

  19. 1、用来深造后增加潜在属性:
  20. 数据库-物品-备注:<潜在属性名称 数量> 如 <金 50>

  21. 2、用来深造后增加特性:
  22. 数据库-物品-备注:<特性 特性ID 几率 > 如 <特性 4 20 >

  23. 3、可用标志(可以用来深造)
  24. 数据库-物品-备注:<can_use>

  25. 三、特性、潜在属性设置

  26. 查找“特性、潜在属性数据设置”

  27. 四、其他功能

  28. 1、在事件里直接设定某角色的某潜在属性属性值

  29. 事件-脚本:
  30. i = 数据库里的角色ID
  31. p = 潜在属性ID
  32. a = 新数量
  33. $data_actors[i].set_add_params(p,a)

  34. 2、在事件里直接让某角色 学会/遗忘 某特性

  35. 事件-脚本:
  36. i = 角色ID
  37. f = 特性ID

  38. 学会:
  39. $data_actors[i].learn_features(f)

  40. 遗忘:
  41. $data_actors[i].lose_features(f)

  42. 3、有待公布

  43. 好吧……可能你看不懂……连我自己也不知道在说什么……所以有待完善……

  44. 冲突:

  45. 暂无

  46. BUG:

  47. 暂无

  48. 注意事项:

  49. 此脚本必须和 "装备帮助增强" 脚本放在同一工程里才能正常运行

  50. =end
复制代码
还有……发效果图:
角色特性:
那个七边形会随着潜在属性的数量而变化形状 (如:只有5个潜在属性,七边形就变成五边形)
但是效果不太好,建议自己用其他软件画一个适合的上去
说到多边形,首先要感谢的一个人是 @沙漠点灰 他教会了我怎么按角度画线
还有,潜在属性最好要大于等于3个,否则显示不出来(但不会出错)(除非你能教我怎么画2边形)


选择物品
显示角色名称的位置不是很好看……有待优化……


深造中……

深造完成:


习得特性:


特性设置:


最后,范例(不含DLL)
角色深造系统.zip (327.27 KB, 下载次数: 218, 售价: 1 星屑)

额……准备中段考了……近期可能不更新……
新手不建议使用
作者: 黄濑凉太    时间: 2013-4-14 20:36
虽然是非常好,但是的确新手不易。
作者: chd114    时间: 2013-4-15 23:39
有点抄袭《冒险迷宫村》···不过菜单真心蛋疼
作者: 千古一帝    时间: 2013-4-16 08:44
求大神将角色潜力显示的7边形转换成人物状态窗口显示基础属性
作者: CortesDevil    时间: 2013-4-16 11:02
真够华丽的系统。。受教了
作者: 弗雷德    时间: 2013-4-16 12:41
字体的描绘看得很蛋疼……
其实俺一直有个疑问,就是描绘多边形的时候怎样才可以让线条不出现狗牙……
作者: 千葉玖濑    时间: 2013-4-16 18:34
这个大概是口袋里的努力值一样的东西吧0w0
作者: 千古一帝    时间: 2013-4-17 07:26
千古一帝 发表于 2013-4-16 08:44
求大神将角色潜力显示的7边形转换成人物状态窗口显示基础属性

如图中的人物属性显示,不过那是XP的,求个VA的。

QQ截图20130417072425.png (79.92 KB, 下载次数: 16)

QQ截图20130417072425.png

作者: 804173948    时间: 2013-4-17 13:03
千古一帝 发表于 2013-4-17 07:26
如图中的人物属性显示,不过那是XP的,求个VA的。

RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_MASS
  3. #------------------------------------------------------------------------------
  4. #  角色深造窗口
  5. #==============================================================================
  6. class Window_MASS < Window_Status
  7.   #--------------------------------------------------------------------------
  8.   # ● 绘制能力值
  9.   #--------------------------------------------------------------------------
  10.   def draw_parameters(x, y)
  11.     x = x + 15 # 图形的X坐标
  12.     y = y      # 图形的Y坐标
  13.     long = 65  # 每边边长
  14.     draw_param_shape2(x, y,long)
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● 多边形描绘角色属性
  18.   #--------------------------------------------------------------------------
  19.   def draw_param_shape2(x,y,long = 50,n = 7,color = Color.new(255,255,255),actor = @actor)
  20.     if n >= 3
  21.       x1 = []
  22.       y1 = []
  23.       mx = []
  24.       my = []
  25.       px = []
  26.       py = []
  27.       an = jiaodu(n).to_f# * 2.0
  28.       an2 = 180 - an
  29.       x1[0], y1[0] = x,y
  30.       for i in 0...n
  31.         an -= an2 if i > 0
  32.         an = 180 if i == n - 1
  33.         x1[i+1] = Math.cos(an/180.0*Math::PI) * long.to_f + x1[i]
  34.         y1[i+1] = Math.sin(an/180.0*Math::PI) * long.to_f + y1[i]
  35.         # 计算一边中点
  36.         mx[i] = Math.cos(an/180.0*Math::PI) * long.to_f / 2 + x1[i]
  37.         my[i] = Math.sin(an/180.0*Math::PI) * long.to_f / 2 + y1[i]
  38.         contents.draw_line(x1[i].to_i, y1[i].to_i, x1[i+1].to_i, y1[i+1].to_i, color) if i < n - 1
  39.         contents.draw_line(x1[i].to_i+1, y1[i].to_i+1, x1[i+1].to_i+1, y1[i+1].to_i+1, color) if i < n - 1
  40.       end
  41.       contents.draw_line(x1[n-1].to_i, y1[n-1].to_i, x1[0].to_i, y1[0].to_i, color)
  42.       contents.draw_line(x1[n-1].to_i+1, y1[n-1].to_i+1, x1[0].to_i+1, y1[0].to_i+1, color)
  43.  
  44.       s0 = jiaodu(n) / 2.0
  45.       s1 = Math.tan(s0/180.0*Math::PI) * (long / 2.0) # a 长度
  46.       s2 = jiaodu(n) - 90
  47.       # s3,s4 重心坐标
  48.       s3 = Math.cos(s2/180.0*Math::PI) * s1 + mx[0]
  49.       s4 = Math.sin(s2/180.0*Math::PI) * s1 + my[0]
  50.       # 连接重心
  51.       for i in 0...x1.size
  52.         an2 = 0
  53.         s5 = x1[i].to_i
  54.         s6 = y1[i].to_i
  55.         s7 = Math.sqrt((long / 2.0)**2+s1**2)
  56.         if (s3 < s5)
  57.           an2 = Math.asin((s6-s4)/s7) * 180 / Math::PI
  58.         else
  59.           an2 = 180 - Math.asin((s6-s4)/s7) * 180 / Math::PI
  60.         end
  61.         link_mid_and_point_together(s5,s6,s3.to_i,s4.to_i) if i < x1.size-1
  62.         num = actor.param(i)
  63.         px[i],py[i] = draw_add_param2(s5,s6,s7,[s3.to_i,s4.to_i],an2,i,num ) if i < n
  64.       end
  65.       for i in 0...px.size
  66.         i < (n-1) ? contents.draw_line(px[i],py[i],px[i+1],py[i+1],Color.new(0,255,0)) :  contents.draw_line(px[i],py[i],px[0],py[0],Color.new(0,255,0))
  67.         i += 1
  68.       end
  69.       return x1,y1
  70.     end
  71.     return nil,nil
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 绘制值
  75.   #--------------------------------------------------------------------------
  76.   def draw_add_param2(x,y,len,mid,an,param_id,num,color = Color.new(255,255,0))
  77.     s1 = num.to_f / 999.0 # 最大值
  78.     s2 = len * s1
  79.     param_point_x = Math.cos(an/180.0*Math::PI) * s2 + mid[0]
  80.     param_point_y = Math.sin(an/180.0*Math::PI) * s2 + mid[1]
  81.     s3 = Vocab::param(param_id) + " " + num.to_s
  82.     contents.font.size = 13
  83.     contents.font.shadow = true
  84.     change_color(color)
  85.     contents.font.out_color = Color.new(255,5,255,120)
  86.     draw_text(x,y,70,line_height,s3)
  87.     contents.font.out_color = Color.new(0,0,0,128)
  88.     change_color(Color.new(255,255,255))
  89.     contents.font.size = 24
  90.     contents.font.shadow = false
  91.     return param_point_x.to_i,param_point_y.to_i
  92.   end
  93. end

加上这一段(脚本末尾)
X、Y坐标等参数 可自己改,在11行修改
作者: 千古一帝    时间: 2013-4-17 14:52
804173948 发表于 2013-4-17 13:03
#==============================================================================
# ■ Window_MASS
# ...

大神,能弄个简单点的吗?你这个必须和深造系统同时使用,而且只有打开深造窗口才有显示。而我只要在window-status中修改的,在人物状态窗口直接显示。就像我发的图片一样,在人物状态窗口中将人物属性用多边形显示。能帮我弄个吗?
作者: 804173948    时间: 2013-4-17 20:01
本帖最后由 804173948 于 2013-4-17 20:06 编辑
千古一帝 发表于 2013-4-17 14:52
大神,能弄个简单点的吗?你这个必须和深造系统同时使用,而且只有打开深造窗口才有显示。而我只要在wind ...


...把开头的 “class Window_MASS < Window_Status “ 改为" class Window_Status" 应该可以
然后在第16行加上
  1.    #--------------------------------------------------------------------------
  2.   # ● 角度
  3.   #--------------------------------------------------------------------------
  4.   def jiaodu(n = 3)
  5.     sum = 180 * (n - 2)
  6.     return sum / n
  7.   end
  8.   #--------------------------------------------------------------------------
  9.   # ● 重心与端点连接
  10.   #--------------------------------------------------------------------------
  11.   def link_mid_and_point_together(x,y,midx,midy,color = Color.new(255,255,255,125))
  12.     contents.draw_line(midx, midy, x, y, color)
  13.     contents.draw_line(midx+1, midy+1, x+1, y+1, color)
  14.   end
复制代码

作者: 千古一帝    时间: 2013-4-17 21:40
804173948 发表于 2013-4-17 20:01
...把开头的 “class Window_MASS < Window_Status “ 改为" class Window_Status" 应该可以
然后在第16 ...

汗...我菜鸟一个,还是不太清楚怎么改,将脚本复制到你发的工程里有用,但我把它提出来单独放到新工程就一直显示出错。不知大神能否弄个小工程给我。。。

QQ截图20130417213606.png (46.13 KB, 下载次数: 20)

QQ截图20130417213606.png

QQ截图20130417213636.png (21.45 KB, 下载次数: 25)

QQ截图20130417213636.png

作者: 804173948    时间: 2013-4-17 21:59
本帖最后由 804173948 于 2013-4-17 22:01 编辑
千古一帝 发表于 2013-4-17 21:40
汗...我菜鸟一个,还是不太清楚怎么改,将脚本复制到你发的工程里有用,但我把它提出来单独放到新工程就 ...


汗……粗心了
在任意位置加上(最好新建一个脚本)

  1. class Bitmap
  2. def draw_line(x1, y1, x2, y2, color)
  3.    if x1 == x2
  4.      x = x1
  5.      for y in (y1 < y2 ? y1..y2 : y2..y1)
  6.        set_pixel(x, y, color)
  7.      end
  8.    else
  9.      a = (y2-y1)/(x2-x1).to_f
  10.      if -1 < a and a < 1
  11.        for x in (x1 < x2 ? x1..x2 : x2..x1)
  12.          y = a * (x - x1) + y1
  13.          set_pixel(x, y, color)
  14.        end
  15.      else
  16.        for y in (y1 < y2 ? y1..y2 : y2..y1)
  17.          x = (y - y1) / a + x1
  18.          set_pixel(x, y, color)
  19.        end
  20.      end
  21.    end
  22. end
  23. end
  24. module Math
  25.   #----------------------------------------------------------------------------
  26.   # 四舍五入(n => 保留位数)
  27.   #----------------------------------------------------------------------------
  28.   def self.rounding(num,n = 0)
  29.     new_num = (num * 10**n).to_i
  30.     new_num /= (10**n).to_f
  31.     return new_num
  32.   end
  33. end
复制代码

作者: 千古一帝    时间: 2013-4-18 12:27
804173948 发表于 2013-4-17 21:59
汗……粗心了
在任意位置加上(最好新建一个脚本)

谢谢,这下应该没问题了。
作者: 千古一帝    时间: 2013-4-18 12:54
804173948 发表于 2013-4-17 21:59
汗……粗心了
在任意位置加上(最好新建一个脚本)

额,不好意思,还有个小小的问题,就是一般游戏中角色的HP、MP都比较大。而其他属性相对较小。而7变形中顶点值为999,HP很容易超出范围,而其他属性相对999又太小,十分不美观。所以能否将7变形变成6变形,只显示 物攻 魔攻 物防 魔防 敏捷 幸运 6个属性值。而状态窗口本来就有HP MP槽值。所以多边形中可以不重复内容,使得画面美观。
作者: 804173948    时间: 2013-4-18 13:22
千古一帝 发表于 2013-4-18 12:54
额,不好意思,还有个小小的问题,就是一般游戏中角色的HP、MP都比较大。而其他属性相对较小。而7变形中 ...


。。。

搜索"def draw_param_shape2(x,y,long = 50,n =7,color = Color.new(255,255,255),actor = @actor)”
改为
  “def draw_param_shape2(x,y,long = 50,n = 6,color = Color.new(255,255,255),actor = @actor)”
      
        搜索"px,py = draw_add_param2(s5,s6,s7,[s3.to_i,s4.to_i],an2,i,num ) if i < n"
改为
        "px,py = draw_add_param2(s5,s6,s7,[s3.to_i,s4.to_i],an2,i+2,num ) if i < n“

应该可以 但是形状大小、位置可能会偏 自己改


作者: 千古一帝    时间: 2013-4-18 13:36
804173948 发表于 2013-4-18 13:22
。。。

搜索"def draw_param_shape2(x,y,long = 50,n =7,color = Color.new(255,255,255),actor = @acto ...

如图,还有点小问题。

QQ截图20130418133352.png (245.68 KB, 下载次数: 24)

QQ截图20130418133352.png

作者: 千古一帝    时间: 2013-4-18 18:27
千古一帝 发表于 2013-4-18 13:36
如图,还有点小问题。

不行哦,显示+出现错误。
作者: 千古一帝    时间: 2013-4-18 21:01
千古一帝 发表于 2013-4-18 18:27
不行哦,显示+出现错误。

如图所示

QQ截图20130418210046.png (44.4 KB, 下载次数: 21)

QQ截图20130418210046.png

QQ截图20130418210100.png (9.01 KB, 下载次数: 26)

QQ截图20130418210100.png

作者: deng5254    时间: 2013-5-5 15:54
i系统脚本非常不错  看来我要背着LZ偷偷的改下显示界面
作者: 7456zll    时间: 2013-7-31 13:31
虽然吾辈也是新手,但是看到这么好的脚本.....
作者: euui96369    时间: 2013-7-31 14:27
拜拜大神~~~~~~~~~
作者: xggzga117    时间: 2013-8-5 17:57
好东西,必须顶。
作者: 鑫晴    时间: 2015-1-17 10:46
可以放入《全职猎人》的念能力系统中!

楼主约吗
作者: 资深萝莉控    时间: 2016-4-19 21:58
楼主我用的脚本中状态窗口和你的冲突了,可以把深造窗口中第一个角色基础信息那个去掉吗?




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