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

Project1

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

[已经解决] 怎么设置职业具有属性倍率呀

[复制链接]

Lv2.观梦者

梦石
0
星屑
570
在线时间
172 小时
注册时间
2013-6-27
帖子
117
跳转到指定楼层
1
发表于 2018-3-2 21:15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 十三点九进制 于 2018-3-5 12:51 编辑

让每个职业都会乘一个属性的系数,比如说战士职业力量x1.25,魔力x0.75,法师魔力x1.5之类的,转职的时候变更属性。。



感谢解答,问题已解决
这边家里断网了,手机也不知道出了什么问题,没法回复,也没法弄成已解决,劳烦路过的版主帮忙移一下,感谢

Lv3.寻梦者

梦石
0
星屑
4598
在线时间
484 小时
注册时间
2017-7-7
帖子
139

R考场第七期纪念奖

2
发表于 2018-3-2 21:19:12 | 只看该作者
Game_Actor里改
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39021
在线时间
5719 小时
注册时间
2006-11-10
帖子
6619
3
发表于 2018-3-3 18:24:08 | 只看该作者
有三种方法
1, 虐脚本工法:
到Game_actor里找到一个一个"baes_xx"的地方, 每个属性都用class_id一个一个when过去......  纯体力活~~

2,虐制作者法:
因为你转职肯定是要用到事件或者调用方法, 那就在这个事件里,转职完成后, 把角色属性一个一个带入变量,然后乘上你要的系数,最后更改角色属性.,, 纯耐力活~~~

3,虐数据库法
在数据库里预先设定好每个角色的转职和他在这个职业这个等级里所拥有的属性,比如 主角A战士,主角A法师,主角A盗贼, 主角B战士,主角B法师.......... ,然后转职 = 换人  

评分

参与人数 1+1 收起 理由
文雅夕露 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
4
发表于 2018-3-3 18:45:20 | 只看该作者
按照3楼的方法,给楼主写了一个很简单的范例。
  1. #==============================================================================
  2. # ■ Game_Actor
  3. #------------------------------------------------------------------------------
  4. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  5. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  6. #==============================================================================

  7. class Game_Actor < Game_Battler
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   #--------------------------------------------------------------------------
  12.   # ● 获取 MaxHP
  13.   #--------------------------------------------------------------------------
  14.   def maxhp
  15.     n = [[base_maxhp + @maxhp_plus, 1].max, 9999].min
  16.     for i in @states
  17.       n *= $data_states[i].maxhp_rate / 100.0
  18.     end
  19.     n = [[Integer(n), 1].max, 9999].min
  20.     return n
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 获取基本 MaxHP
  24.   #--------------------------------------------------------------------------
  25.   def base_maxhp
  26.     return $data_actors[@actor_id].parameters[0, @level]
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 获取基本 MaxSP
  30.   #--------------------------------------------------------------------------
  31.   def base_maxsp
  32.     return $data_actors[@actor_id].parameters[1, @level]
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 获取基本力量
  36.   #--------------------------------------------------------------------------
  37.   def base_str
  38.     n = $data_actors[@actor_id].parameters[2, @level]
  39.     weapon = $data_weapons[@weapon_id]
  40.     armor1 = $data_armors[@armor1_id]
  41.     armor2 = $data_armors[@armor2_id]
  42.     armor3 = $data_armors[@armor3_id]
  43.     armor4 = $data_armors[@armor4_id]
  44.     n += weapon != nil ? weapon.str_plus : 0
  45.     n += armor1 != nil ? armor1.str_plus : 0
  46.     n += armor2 != nil ? armor2.str_plus : 0
  47.     n += armor3 != nil ? armor3.str_plus : 0
  48.     n += armor4 != nil ? armor4.str_plus : 0
  49.     case class_id
  50.     when 1
  51.     n *= 2
  52.     when 2
  53.     n *= 1.5
  54.     when 7
  55.     n *= 0.75
  56.     when 8
  57.     n *= 0.5
  58.     end
  59.     return [[n, 1].max, 999].min
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 获取基本灵巧
  63.   #--------------------------------------------------------------------------
  64.   def base_dex
  65.     n = $data_actors[@actor_id].parameters[3, @level]
  66.     weapon = $data_weapons[@weapon_id]
  67.     armor1 = $data_armors[@armor1_id]
  68.     armor2 = $data_armors[@armor2_id]
  69.     armor3 = $data_armors[@armor3_id]
  70.     armor4 = $data_armors[@armor4_id]
  71.     n += weapon != nil ? weapon.dex_plus : 0
  72.     n += armor1 != nil ? armor1.dex_plus : 0
  73.     n += armor2 != nil ? armor2.dex_plus : 0
  74.     n += armor3 != nil ? armor3.dex_plus : 0
  75.     n += armor4 != nil ? armor4.dex_plus : 0
  76.     case class_id
  77.     when 1
  78.     n *= 1
  79.     when 2
  80.     n *= 1
  81.     when 7
  82.     n *= 1
  83.     when 8
  84.     n *= 1
  85.     end
  86.     return [[n, 1].max, 999].min
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 获取基本速度
  90.   #--------------------------------------------------------------------------
  91.   def base_agi
  92.     n = $data_actors[@actor_id].parameters[4, @level]
  93.     weapon = $data_weapons[@weapon_id]
  94.     armor1 = $data_armors[@armor1_id]
  95.     armor2 = $data_armors[@armor2_id]
  96.     armor3 = $data_armors[@armor3_id]
  97.     armor4 = $data_armors[@armor4_id]
  98.     n += weapon != nil ? weapon.agi_plus : 0
  99.     n += armor1 != nil ? armor1.agi_plus : 0
  100.     n += armor2 != nil ? armor2.agi_plus : 0
  101.     n += armor3 != nil ? armor3.agi_plus : 0
  102.     n += armor4 != nil ? armor4.agi_plus : 0
  103.     case class_id
  104.     when 1
  105.     n *= 1
  106.     when 2
  107.     n *= 1
  108.     when 7
  109.     n *= 1
  110.     when 8
  111.     n *= 1
  112.     end
  113.     return [[n, 1].max, 999].min
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 获取基本魔力
  117.   #--------------------------------------------------------------------------
  118.   def base_int
  119.     n = $data_actors[@actor_id].parameters[5, @level]
  120.     weapon = $data_weapons[@weapon_id]
  121.     armor1 = $data_armors[@armor1_id]
  122.     armor2 = $data_armors[@armor2_id]
  123.     armor3 = $data_armors[@armor3_id]
  124.     armor4 = $data_armors[@armor4_id]
  125.     n += weapon != nil ? weapon.int_plus : 0
  126.     n += armor1 != nil ? armor1.int_plus : 0
  127.     n += armor2 != nil ? armor2.int_plus : 0
  128.     n += armor3 != nil ? armor3.int_plus : 0
  129.     n += armor4 != nil ? armor4.int_plus : 0
  130.     case class_id
  131.     when 1
  132.     n *= 0.5
  133.     when 2
  134.     n *= 0.5
  135.     when 7
  136.     n *= 1.5
  137.     when 8
  138.     n *= 2
  139.     end
  140.     return [[n, 1].max, 999].min
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 获取基本攻击力
  144.   #--------------------------------------------------------------------------
  145.   def base_atk
  146.     weapon = $data_weapons[@weapon_id]
  147.     return weapon != nil ? weapon.atk : 0
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● 获取基本物理防御
  151.   #--------------------------------------------------------------------------
  152.   def base_pdef
  153.     weapon = $data_weapons[@weapon_id]
  154.     armor1 = $data_armors[@armor1_id]
  155.     armor2 = $data_armors[@armor2_id]
  156.     armor3 = $data_armors[@armor3_id]
  157.     armor4 = $data_armors[@armor4_id]
  158.     pdef1 = weapon != nil ? weapon.pdef : 0
  159.     pdef2 = armor1 != nil ? armor1.pdef : 0
  160.     pdef3 = armor2 != nil ? armor2.pdef : 0
  161.     pdef4 = armor3 != nil ? armor3.pdef : 0
  162.     pdef5 = armor4 != nil ? armor4.pdef : 0
  163.     return pdef1 + pdef2 + pdef3 + pdef4 + pdef5
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ● 获取基本魔法防御
  167.   #--------------------------------------------------------------------------
  168.   def base_mdef
  169.     weapon = $data_weapons[@weapon_id]
  170.     armor1 = $data_armors[@armor1_id]
  171.     armor2 = $data_armors[@armor2_id]
  172.     armor3 = $data_armors[@armor3_id]
  173.     armor4 = $data_armors[@armor4_id]
  174.     mdef1 = weapon != nil ? weapon.mdef : 0
  175.     mdef2 = armor1 != nil ? armor1.mdef : 0
  176.     mdef3 = armor2 != nil ? armor2.mdef : 0
  177.     mdef4 = armor3 != nil ? armor3.mdef : 0
  178.     mdef5 = armor4 != nil ? armor4.mdef : 0
  179.     return mdef1 + mdef2 + mdef3 + mdef4 + mdef5
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ● 获取基本回避修正
  183.   #--------------------------------------------------------------------------
  184.   def base_eva
  185.     armor1 = $data_armors[@armor1_id]
  186.     armor2 = $data_armors[@armor2_id]
  187.     armor3 = $data_armors[@armor3_id]
  188.     armor4 = $data_armors[@armor4_id]
  189.     eva1 = armor1 != nil ? armor1.eva : 0
  190.     eva2 = armor2 != nil ? armor2.eva : 0
  191.     eva3 = armor3 != nil ? armor3.eva : 0
  192.     eva4 = armor4 != nil ? armor4.eva : 0
  193.     return eva1 + eva2 + eva3 + eva4
  194.   end
  195.   end
复制代码

具体要什么效果的话,请自行修改哦。

点评

补充下, class_id 要加@, 初始化赋值的是 @class_id = actor.class_id  发表于 2018-3-3 23:23

评分

参与人数 1星屑 +100 +1 收起 理由
RyanBern + 100 + 1 认可答案,并且看下5楼guoxiaomi的提示.

查看全部评分

一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复 支持 1 反对 0

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39021
在线时间
5719 小时
注册时间
2006-11-10
帖子
6619
5
发表于 2018-3-3 23:43:17 | 只看该作者
咱也补充下 虐制作者法的 栗子

其实这个方法是三种里最省事的, 只要你的计算条理清楚, 用个公共事件就能搞定.

步骤一, 准备工作,把一堆变量带入角色的各种属性,    (步骤一,改: 可以细分下,只代入每个职业要增幅和缩水的属性即可)

步骤二, 列好当前职业和转职后的职业的属性系数, 注意要用小数点的话, 实数后面要加.to_f
         
步骤三, 把角色当前的属性乘上这个系数, 重新塞给角色. 搞定收工.

栗子:  角色A,要战士转法师, 假如他原本有150力量,  变量X 代入 角色A力量

(角色A真实的力量 Y) = X.to_f / 1.5 ,= 100

Y X 0.8= Integer(Z) = 80

然后法师A的力量就是Z ,也就是80咯.   

以上 X.to_f 是把整数变化为浮点数进行计算,这样才会计算小数点后的位数,  Integer(Z) 是把结果返回Z的整数部分, 这样最后才不会带小数点.

点评

附加一个不显示的状态就行  发表于 2018-3-4 01:02
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39021
在线时间
5719 小时
注册时间
2006-11-10
帖子
6619
6
发表于 2018-3-4 09:22:49 | 只看该作者
  guoxiaomi君 的方法最简单。

转职就直接按你要的系数设定好状态,然后强制附加优先度最大永久存在就OK了,换职业就是换这个状态。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
570
在线时间
172 小时
注册时间
2013-6-27
帖子
117
7
 楼主| 发表于 2018-3-5 14:12:01 | 只看该作者
文雅夕露 发表于 2018-3-3 18:45
按照3楼的方法,给楼主写了一个很简单的范例。

具体要什么效果的话,请自行修改哦。 ...

那个。。有个小问题,MaxSP似乎不能这么改?不如说根本就找不到MaxSP在哪。。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4598
在线时间
484 小时
注册时间
2017-7-7
帖子
139

R考场第七期纪念奖

8
发表于 2018-3-7 08:34:43 | 只看该作者
十三点九进制 发表于 2018-3-5 14:12
那个。。有个小问题,MaxSP似乎不能这么改?不如说根本就找不到MaxSP在哪。。 ...


最简单粗暴的办法:复制一份hp的,改成sp
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 14:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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