Project1

标题: 怎么设置职业具有属性倍率呀 [打印本页]

作者: 十三点九进制    时间: 2018-3-2 21:15
标题: 怎么设置职业具有属性倍率呀
本帖最后由 十三点九进制 于 2018-3-5 12:51 编辑

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



感谢解答,问题已解决
这边家里断网了,手机也不知道出了什么问题,没法回复,也没法弄成已解决,劳烦路过的版主帮忙移一下,感谢
作者: Six_Fish    时间: 2018-3-2 21:19
Game_Actor里改
作者: 灯笼菜刀王    时间: 2018-3-3 18:24
有三种方法
1, 虐脚本工法:
到Game_actor里找到一个一个"baes_xx"的地方, 每个属性都用class_id一个一个when过去......  纯体力活~~

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

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


作者: 文雅夕露    时间: 2018-3-3 18:45
按照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
复制代码

具体要什么效果的话,请自行修改哦。
作者: 灯笼菜刀王    时间: 2018-3-3 23:43
咱也补充下 虐制作者法的 栗子

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

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

步骤二, 列好当前职业和转职后的职业的属性系数, 注意要用小数点的话, 实数后面要加.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 09:22
  guoxiaomi君 的方法最简单。

转职就直接按你要的系数设定好状态,然后强制附加优先度最大永久存在就OK了,换职业就是换这个状态。
作者: 十三点九进制    时间: 2018-3-5 14:12
文雅夕露 发表于 2018-3-3 18:45
按照3楼的方法,给楼主写了一个很简单的范例。

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

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


最简单粗暴的办法:复制一份hp的,改成sp




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