Project1
标题:
升级时随即增加属性脚本
[打印本页]
作者:
feizhaodan
时间:
2011-8-26 15:34
标题:
升级时随即增加属性脚本
本帖最后由 feizhaodan 于 2011-8-28 17:59 编辑
先上脚本
#==============================================================================
# ■ FE_Param
#------------------------------------------------------------------------------
# 设置各职业用的各数据
# 制作者:feizhaodan
# 版本: 1.1.0
# 更新: 1.1.0 : 更改了随机式,从原来的非即下一项改为范围随机。
#==============================================================================
module FE_Param
CLASSPER = {} # 不要改
# 在这里设置各职业的提升几率
# 格式:
# CLASSPER[id] = {
# :para => n%,
#}
# id 输入职业ID
# para 代入属性标识(hp, mp, atk, def, spi, agi)
# n 代入属性提升几率
CLASSPER[1] ={
:hp => 60, # 血
:mp => 40, # 魔
:atk => 70, # 攻
:def => 60, # 防
:spi => 20, # 精神
:agi => 50, # 敏
}
CLASSUP = {} # 不要改
# 在这里设置各职业的提升量
# 格式:
# CLASSUP[id] = [mi, ma]
# id 输入职业ID
# mi 代入提升量最小值
# ma 代入提升量最大值
CLASSUP[1] = [5, 9]
end
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
# 处理角色的类。本类在 Game_Actors 类 ($game_actors) 的内部使用、
# Game_Party 类请参考 ($game_party) 。
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 初始化对像
# actor_id : 角色 ID
#--------------------------------------------------------------------------
alias fe_param_initialize initialize
def initialize(actor_id)
@class_id = $data_actors[actor_id].class_id
fe_param_initialize(actor_id)
end
#--------------------------------------------------------------------------
# ● 获取提升量
#--------------------------------------------------------------------------
def param_up
param_up = FE_Param::CLASSUP[@class_id]
up = param_up[0] + rand(param_up[1] - param_up[0] + 1)
return up
end
#--------------------------------------------------------------------------
# ● 获取提升率
# param : 属性
#--------------------------------------------------------------------------
def param_per
@param_per = FE_Param::CLASSPER[@class_id] if @param_per == nil
return @param_per
end
#--------------------------------------------------------------------------
# ● 获取已提升量
# param : 属性
#--------------------------------------------------------------------------
def param_gained(param)
return 0 if @param_gained == nil
return 0 if @param_gained[param] == nil
return @param_gained[param]
end
#--------------------------------------------------------------------------
# ● 获取基本体力最大值
#--------------------------------------------------------------------------
alias fe_base_maxhp base_maxhp
def base_maxhp
n = fe_base_maxhp + param_gained(:hp)
return n
end
#--------------------------------------------------------------------------
# ● 获取基本体力最大值
#--------------------------------------------------------------------------
alias fe_base_maxmp base_maxmp
def base_maxmp
n = fe_base_maxmp + param_gained(:mp)
return n
end
#--------------------------------------------------------------------------
# ● 获取基本攻击力
#--------------------------------------------------------------------------
alias fe_base_atk base_atk
def base_atk
n = fe_base_atk + param_gained(:atk)
return n
end
#--------------------------------------------------------------------------
# ● 获取基本防御力
#--------------------------------------------------------------------------
alias fe_base_def base_def
def base_def
n = fe_base_def + param_gained(:def)
return n
end
#--------------------------------------------------------------------------
# ● 获取基本精神力
#--------------------------------------------------------------------------
alias fe_base_spi base_spi
def base_spi
n = fe_base_spi + param_gained(:spi)
return n
end
#--------------------------------------------------------------------------
# ● 获取基本敏捷
#--------------------------------------------------------------------------
alias fe_base_agi base_agi
def base_agi
n = fe_base_agi + param_gained(:agi)
return n
end
#--------------------------------------------------------------------------
# ● 升级
#--------------------------------------------------------------------------
alias fe_level_up level_up
def level_up
fe_level_up
gain_param
end
#--------------------------------------------------------------------------
# ● 提升属性
#--------------------------------------------------------------------------
def gain_param
@param_gained = {} if @param_gained == nil
param_per if @param_per == nil
percentage = 0
@param_per.each_value{|v|
percentage += v
}
point = param_up
hpper = @param_per[:hp]
mpper = @param_per[:mp] + @param_per[:hp]
atkper = @param_per[:mp] + @param_per[:hp] + @param_per[:atk]
defper = @param_per[:mp] + @param_per[:hp] + @param_per[:atk] + @param_per[:def]
spiper = defper + @param_per[:spi]
agiper = spiper + @param_per[:agi]
loop do
if point == 0
break
end
per = rand(percentage) + 1
case per
when 1...hpper
@param_gained[:hp] = 0 if @param_gained[:hp] == nil
@param_gained[:hp] += 1
point -= 1
when (hpper + 1)...mpper
@param_gained[:mp] = 0 if @param_gained[:mp] == nil
@param_gained[:mp] += 1
point -= 1
when (mpper + 1)...atkper
@param_gained[:atk] = 0 if @param_gained[:atk] == nil
@param_gained[:atk] += 1
point -= 1
when (atkper + 1)...defper
@param_gained[:def] = 0 if @param_gained[:def] == nil
@param_gained[:def] += 1
point -= 1
when (defper + 1)...spiper
@param_gained[:spi] = 0 if @param_gained[:spi] == nil
@param_gained[:spi] += 1
point -= 1
when (spiper + 1)...agiper
@param_gained[:agi] = 0 if @param_gained[:agi] == nil
@param_gained[:agi] += 1
point -= 1
end
end
end
end
复制代码
在刚开始的CLASSPER里按照格式设置所有的职业提升属性的几率。
再在CLASSUP里按照格式设置职业提升的属性量的最大值和最小值。
就ok啦。
简单的设置,
同时表示着简陋的功能
完了。
作者:
无名小兵
时间:
2011-8-26 18:49
本帖最后由 无名小兵 于 2011-8-26 19:37 编辑
好东西。。。顶了。。。。
不过我的工程好像一直冲突 =。=
作者:
feizhaodan
时间:
2011-8-26 21:05
你找一下有没有定义Game_Actor里的level_up项
有得话,就是那个。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1