赞 | 9 |
VIP | 0 |
好人卡 | 11 |
积分 | 29 |
经验 | 29235 |
最后登录 | 2023-12-28 |
在线时间 | 713 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 2920
- 在线时间
- 713 小时
- 注册时间
- 2010-7-25
- 帖子
- 813
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本想做个升级加点然后按照加点穿装备的系统,但我使用下面论坛图书馆里后知后觉大大和救世小树大大的脚本之后发现两个脚本不兼容,除了LV之外其他属性都无法激活装备需求,请问要怎么改才能让它们都正常使用呢?
#encoding:utf-8 #============================================================================= #-----------RMVA加点系统正常向-v1.03---By:救世小树--------转载请注明出处------- #============================================================================= module Point_Tree POINT_KIND = 6 #设定加点种类 LEVEL_UP_POINT = 1 #每升一级自由属性点增加数 RESET_ITEM = 500 #洗点水编号 STR_POINT = ["体能","力量","智慧","技术","意志","灵活","???"] #分别对应增加 [MHP,MMP,物攻,物防,魔攻,魔防,敏捷,幸运] POINT_ADD_PARAM = [[10 , 0, 0, 2, 0, 0, 0, 0], #体力 [5 , 0, 2, 0, 0, 0, 0, 0], #精神 [0 , 1, 0, 0, 2, 0, 0, 0], #力量 [0 , 0, 1, 1, 0, 1, 0, 0], #魔力 [0 , 0, 0, 0, 1, 2, 0, 0], #韧性 [0 , 0, 0, 0, 0, 0, 1, 0], #灵活 [0,0,0,0,0,0,0,0]] #可以按上面的格式添加下去,不过要改POINT_KIND,STR_ALL,不然加了也白加 #分别对应增加 [物理命中,物理闪避,必杀,必杀闪避,魔法闪避,魔法反射,物理反击,HP再生,Mp再生,Tp再生] POINT_ADD_XPARAM = [[0 , 0, 0, 0, 0, 0, 0, 0, 0, 0], [0 , 0, 0, 0, 0, 0, 0, 0, 0, 0], [0 , 0, 0, 0, 0, 0, 0, 0, 0, 0], [0 , 0, 0, 0, 0, 0, 0, 0, 0, 0], [0 , 0, 0, 0, 0, 0, 0, 0, 0, 0], [0 , 0, 0, 0, 0, 0, 0, 0, 0, 0], [0,0,0,0,0,0,0,0,0,0]] #这里的单位是万分之一数值也就是0.01%,我随便填了下【别嫌小,够大了,有心情你可以算算看平衡性】 #各种名称 ADDPOINT = "加点" #菜单中选项 POINT_NAME = "属性点" #未分配点数 XARAM_NAME = ["物理命中","物理闪避","必杀","必杀闪避","魔法闪避","魔法反射","物理反击","HP再生","Mp再生","Tp再生"] def temp_all r = 0 for i in 0 .. POINT_KIND-1 r+=$temp_point[i] end return r end def reset(actor_id) for i in 1..6 $game_actors[actor_id].point[0] += $game_actors[actor_id].point[i] $game_actors[actor_id].point[i] =0 end end end $temp_point = [] for i in 0 .. Point_Tree::POINT_KIND-1 $temp_point.push(0) end class Game_Actor < Game_Battler include Point_Tree attr_accessor :point alias setup_tre setup def setup(actor_id) @point = [] for i in 0 .. POINT_KIND @point.push(0) end setup_tre(actor_id) end alias level_up_tre level_up def level_up level_up_tre @hp += mhp @mp += mmp @point[0] += LEVEL_UP_POINT end def point_plus(param_id) r=0 for i in 1 .. POINT_KIND r+=@point[i]*POINT_ADD_PARAM[i-1][param_id] end return r end alias point_base_param param def param(param_id) value = param_base(param_id) + param_plus(param_id) + point_plus(param_id) value *= param_rate(param_id) * param_buff_rate(param_id) [[value, param_max(param_id)].min, param_min(param_id)].max.to_i end def xparam(xparam_id,extra_add = 0) xp = super(xparam_id) for i in 0 .. POINT_KIND-1 xp+=(@point[i+1]*POINT_ADD_XPARAM[i][xparam_id]/10000.0) end return xp end def item_apply(user, item) super(user, item) if item.id == RESET_ITEM and item.is_a?(RPG::Item) reset(@actor_id) self.hp = [self.hp,self.mhp].min self.mp = [self.mp,self.mmp].min end end end class Window_Point_Command < Window_Command include Point_Tree #-------------------------------------------------------------------------- # ● 初始化指令选择位置(类方法) #-------------------------------------------------------------------------- def self.init_command_position @@last_command_symbol = nil end #-------------------------------------------------------------------------- # ● 初始化对象 #-------------------------------------------------------------------------- def initialize(actor) @status_window = nil @actor = actor super(0,0) select_last end def actor=(actor) return if @actor == actor @actor = actor refresh end def status_window=(status_window) return if @status_window == status_window @status_window = status_window end #-------------------------------------------------------------------------- # ● 获取窗口的宽度 #-------------------------------------------------------------------------- def window_width return 160 end #-------------------------------------------------------------------------- # ● 获取显示行数 #-------------------------------------------------------------------------- def visible_line_number item_max end def get_actor_point(index) s = @actor.point[index+1].to_s return "("+s+")+"+$temp_point[index].to_s end #-------------------------------------------------------------------------- # ● 生成指令列表 #-------------------------------------------------------------------------- def make_command_list for i in 0 .. POINT_KIND-1 add_command(STR_POINT[i] + get_actor_point(i) , :point_add ,add_enabled) end add_command("确认", :point_ok) add_command("取消", :point_cancle) end #-------------------------------------------------------------------------- # ● 按下确定键时的处理 #-------------------------------------------------------------------------- def process_ok @@last_command_symbol = current_symbol super end #-------------------------------------------------------------------------- # ● 返回最后一个选项的位置 #-------------------------------------------------------------------------- def select_last select_symbol(@@last_command_symbol) end def add_enabled temp_all < @actor.point[0] end def update_help @help_window.set_text(self.index+1) if @help_window @status_window.index = self.index if @status_window end end #帮助窗口 class Window_Point_Help < Window_Base include Point_Tree def initialize(x,y,w,h) super(x, y, w, h) end def set_text(id) contents.clear if id <= POINT_KIND text = "\\}提升一点该属性" elsif id == POINT_KIND+1 text = "\\}确认此次加点分配" elsif id == POINT_KIND+2 text = "\\}取消此次加点分配" end draw_text_ex(8, 8, text) end end #角色状态窗口 class Window_Point_Actor < Window_Base include Point_Tree def initialize(actor) super(160, 0, Graphics.width - 160, Graphics.height) @actor = actor @index = 0 refresh end def actor=(actor) return if @actor == actor @actor = actor refresh end def index=(index) return if @index == index @index = index refresh end def line_height return 24 end def refresh contents.clear contents.font.size = 24 draw_actor_name(@actor, 100, 0) draw_actor_class(@actor, 240, 0) draw_actor_face(@actor, 2, 0) contents.font.size = 20 draw_actor_level(@actor, 102, 24) draw_actor_point(100,48) contents.font.size = 16 draw_actor_param_point(8,16 * 6) draw_actor_xparam_point(8,16 * 14) end def draw_actor_point(x,y) draw_text(x,y,200,line_height," 未分配"+POINT_NAME + ":" + @actor.point[0].to_s) draw_text(x,y+line_height,200,line_height,"此次分配"+POINT_NAME + ":" + temp_all.to_s) end def draw_actor_param_point(x,y) 8.times {|i| draw_actor_param_to_s(x,y,i)} end def draw_actor_xparam_point(x,y) 10.times {|i| draw_actor_xparam_to_s(x,y,i)} end def draw_actor_param_to_s(x,y,param_id) a=0 for i in 0 .. POINT_KIND-1 a+=$temp_point[i]*POINT_ADD_PARAM[i][param_id] end s1 = Vocab::param(param_id) s2 = @actor.param(param_id).to_s s3 = (@actor.param(param_id)+a).to_s if @index < POINT_KIND if POINT_ADD_PARAM[@index][param_id]==0 s4 = "" else s4 = "+" + POINT_ADD_PARAM[@index][param_id].to_s end else s4 = "" end change_color(system_color) draw_text(x,y+16*param_id,100,line_height,s1) change_color(normal_color) s2+= " →" draw_text(x+82,y+16*param_id,120,line_height,s2,2) change_color(system_color) draw_text(x+150,y+16*param_id,100,line_height,s3,2) change_color(normal_color) contents.font.size = 14 draw_text(x+266,y+16*param_id,100,line_height,s4) contents.font.size = 16 end def draw_actor_xparam_to_s(x,y,xparam_id) a=0.00 for i in 0 .. POINT_KIND-1 a+=($temp_point[i]*POINT_ADD_XPARAM[i][xparam_id]/10000.0) end s1 = XARAM_NAME[xparam_id] s2 = sprintf("%02.2f%%",@actor.xparam(xparam_id)*100) s3 = sprintf("%02.2f%%",(@actor.xparam(xparam_id) + a)*100) if @index < POINT_KIND if POINT_ADD_XPARAM[@index][xparam_id]==0 s4="" else s4 = sprintf("+%02.2f%%",POINT_ADD_XPARAM[@index][xparam_id]/100.0) end else s4 = "" end change_color(system_color) draw_text(x,y+16*xparam_id,100,line_height,s1) change_color(normal_color) s2+= " →" draw_text(x+82,y+16*xparam_id,120,line_height,s2,2) change_color(system_color) draw_text(x+150,y+16*xparam_id,100,line_height,s3,2) change_color(normal_color) contents.font.size = 14 draw_text(x+266,y+16*xparam_id,100,line_height,s4) contents.font.size = 16 end end class Scene_Point < Scene_Base include Point_Tree def start super create_background @actor = $game_party.menu_actor create_command_window create_status_window create_help_window @command_window.activate end def terminate super dispose_background end def create_background @background_sprite = Sprite.new @background_sprite.bitmap = SceneManager.background_bitmap @background_sprite.color.set(16, 16, 16, 128) end def dispose_background @background_sprite.dispose end def create_command_window @command_window = Window_Point_Command.new(@actor) @command_window.set_handler(:cancel, method(:return_scene)) @command_window.set_handler(:pagedown, method(:next_actor)) @command_window.set_handler(:pageup, method(:prev_actor)) @command_window.set_handler(:point_add, method(:add_point)) @command_window.set_handler(:point_ok, method(:add_ok)) @command_window.set_handler(:point_cancle,method(:add_cancle)) end def return_scene add_cancle SceneManager.return end def create_status_window @status_window = Window_Point_Actor.new(@actor) @command_window.status_window = @status_window end def create_help_window @help_window = Window_Point_Help.new(0,@command_window.height,160,[email]Graphics.height-@command_window.height[/email]) #(0, 216, 160, 200) @help_window.viewport = @viewport @command_window.help_window = @help_window end def add_point if temp_all >= @actor.point[0] @command_window.activate return end $temp_point[@command_window.index] += 1 @status_window.refresh @command_window.refresh @command_window.activate end def add_ok for i in 0 .. POINT_KIND-1 @actor.point[i+1] += $temp_point[i] end @actor.point[0]-= temp_all add_cancle end def add_cancle for i in 0 .. POINT_KIND-1 $temp_point[i]=0 end @status_window.refresh @command_window.refresh @command_window.activate end def next_actor @actor = $game_party.menu_actor_next on_actor_change end #-------------------------------------------------------------------------- # ● 切换到上一个角色 #-------------------------------------------------------------------------- def prev_actor @actor = $game_party.menu_actor_prev on_actor_change end #-------------------------------------------------------------------------- # ● 切换角色 #-------------------------------------------------------------------------- def on_actor_change add_cancle @status_window.actor = @actor @command_window.actor = @actor @command_window.activate end end class Window_MenuCommand < Window_Command alias add_original_commands_old add_original_commands def add_original_commands add_original_commands_old add_command(Point_Tree::ADDPOINT, :addpoint) end end class Scene_Menu < Scene_MenuBase alias create_command_window_old create_command_window def create_command_window create_command_window_old @command_window.set_handler(:addpoint,method(:add_point)) end def add_point @status_window.select_last @status_window.activate @status_window.set_handler(:ok, method(:on_ok)) @status_window.set_handler(:cancel, method(:on_personal_cancel)) end def on_ok SceneManager.call(Scene_Point) Window_Point_Command::init_command_position end end class Scene_ItemBase < Scene_MenuBase def item_usable? if item.id == Point_Tree::RESET_ITEM and item.is_a?(RPG::Item) return true end user.usable?(item) && item_effects_valid? end end class Window_Status < Window_Selectable include Point_Tree alias draw_parameters_old draw_parameters def draw_parameters(x, y) draw_parameters_old(x,y) draw_point(x,y) end def draw_point(x,y) for i in 0..5 change_color(system_color) draw_text(x+100, y+ line_height * i, 80, line_height, STR_POINT[i]) change_color(normal_color) draw_text(x+180, y+ line_height * i, 36, line_height,@actor.point[i+1].to_s, 2) end end end class Window_Base < Window def draw_actor_param(actor, x, y, param_id) change_color(system_color) draw_text(x-30, y, 80, line_height, Vocab::param(param_id)) change_color(normal_color) draw_text(x+ 50, y, 36, line_height, actor.param(param_id), 2) end end
#encoding:utf-8
#=============================================================================
#-----------RMVA加点系统正常向-v1.03---By:救世小树--------转载请注明出处-------
#=============================================================================
module Point_Tree
POINT_KIND = 6 #设定加点种类
LEVEL_UP_POINT = 1 #每升一级自由属性点增加数
RESET_ITEM = 500 #洗点水编号
STR_POINT = ["体能","力量","智慧","技术","意志","灵活","???"]
#分别对应增加 [MHP,MMP,物攻,物防,魔攻,魔防,敏捷,幸运]
POINT_ADD_PARAM = [[10 , 0, 0, 2, 0, 0, 0, 0], #体力
[5 , 0, 2, 0, 0, 0, 0, 0], #精神
[0 , 1, 0, 0, 2, 0, 0, 0], #力量
[0 , 0, 1, 1, 0, 1, 0, 0], #魔力
[0 , 0, 0, 0, 1, 2, 0, 0], #韧性
[0 , 0, 0, 0, 0, 0, 1, 0], #灵活
[0,0,0,0,0,0,0,0]]
#可以按上面的格式添加下去,不过要改POINT_KIND,STR_ALL,不然加了也白加
#分别对应增加 [物理命中,物理闪避,必杀,必杀闪避,魔法闪避,魔法反射,物理反击,HP再生,Mp再生,Tp再生]
POINT_ADD_XPARAM = [[0 , 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0 , 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0 , 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0 , 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0 , 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0 , 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0,0,0,0,0,0,0,0,0,0]]
#这里的单位是万分之一数值也就是0.01%,我随便填了下【别嫌小,够大了,有心情你可以算算看平衡性】
#各种名称
ADDPOINT = "加点" #菜单中选项
POINT_NAME = "属性点" #未分配点数
XARAM_NAME = ["物理命中","物理闪避","必杀","必杀闪避","魔法闪避","魔法反射","物理反击","HP再生","Mp再生","Tp再生"]
def temp_all
r = 0
for i in 0 .. POINT_KIND-1
r+=$temp_point[i]
end
return r
end
def reset(actor_id)
for i in 1..6
$game_actors[actor_id].point[0] += $game_actors[actor_id].point[i]
$game_actors[actor_id].point[i] =0
end
end
end
$temp_point = []
for i in 0 .. Point_Tree::POINT_KIND-1
$temp_point.push(0)
end
class Game_Actor < Game_Battler
include Point_Tree
attr_accessor :point
alias setup_tre setup
def setup(actor_id)
@point = []
for i in 0 .. POINT_KIND
@point.push(0)
end
setup_tre(actor_id)
end
alias level_up_tre level_up
def level_up
level_up_tre
@hp += mhp
@mp += mmp
@point[0] += LEVEL_UP_POINT
end
def point_plus(param_id)
r=0
for i in 1 .. POINT_KIND
r+=@point[i]*POINT_ADD_PARAM[i-1][param_id]
end
return r
end
alias point_base_param param
def param(param_id)
value = param_base(param_id) + param_plus(param_id) + point_plus(param_id)
value *= param_rate(param_id) * param_buff_rate(param_id)
[[value, param_max(param_id)].min, param_min(param_id)].max.to_i
end
def xparam(xparam_id,extra_add = 0)
xp = super(xparam_id)
for i in 0 .. POINT_KIND-1
xp+=(@point[i+1]*POINT_ADD_XPARAM[i][xparam_id]/10000.0)
end
return xp
end
def item_apply(user, item)
super(user, item)
if item.id == RESET_ITEM and item.is_a?(RPG::Item)
reset(@actor_id)
self.hp = [self.hp,self.mhp].min
self.mp = [self.mp,self.mmp].min
end
end
end
class Window_Point_Command < Window_Command
include Point_Tree
#--------------------------------------------------------------------------
# ● 初始化指令选择位置(类方法)
#--------------------------------------------------------------------------
def self.init_command_position
@@last_command_symbol = nil
end
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize(actor)
@status_window = nil
@actor = actor
super(0,0)
select_last
end
def actor=(actor)
return if @actor == actor
@actor = actor
refresh
end
def status_window=(status_window)
return if @status_window == status_window
@status_window = status_window
end
#--------------------------------------------------------------------------
# ● 获取窗口的宽度
#--------------------------------------------------------------------------
def window_width
return 160
end
#--------------------------------------------------------------------------
# ● 获取显示行数
#--------------------------------------------------------------------------
def visible_line_number
item_max
end
def get_actor_point(index)
s = @actor.point[index+1].to_s
return "("+s+")+"+$temp_point[index].to_s
end
#--------------------------------------------------------------------------
# ● 生成指令列表
#--------------------------------------------------------------------------
def make_command_list
for i in 0 .. POINT_KIND-1
add_command(STR_POINT[i] + get_actor_point(i) , :point_add ,add_enabled)
end
add_command("确认", :point_ok)
add_command("取消", :point_cancle)
end
#--------------------------------------------------------------------------
# ● 按下确定键时的处理
#--------------------------------------------------------------------------
def process_ok
@@last_command_symbol = current_symbol
super
end
#--------------------------------------------------------------------------
# ● 返回最后一个选项的位置
#--------------------------------------------------------------------------
def select_last
select_symbol(@@last_command_symbol)
end
def add_enabled
temp_all < @actor.point[0]
end
def update_help
@help_window.set_text(self.index+1) if @help_window
@status_window.index = self.index if @status_window
end
end
#帮助窗口
class Window_Point_Help < Window_Base
include Point_Tree
def initialize(x,y,w,h)
super(x, y, w, h)
end
def set_text(id)
contents.clear
if id <= POINT_KIND
text = "\\}提升一点该属性"
elsif id == POINT_KIND+1
text = "\\}确认此次加点分配"
elsif id == POINT_KIND+2
text = "\\}取消此次加点分配"
end
draw_text_ex(8, 8, text)
end
end
#角色状态窗口
class Window_Point_Actor < Window_Base
include Point_Tree
def initialize(actor)
super(160, 0, Graphics.width - 160, Graphics.height)
@actor = actor
@index = 0
refresh
end
def actor=(actor)
return if @actor == actor
@actor = actor
refresh
end
def index=(index)
return if @index == index
@index = index
refresh
end
def line_height
return 24
end
def refresh
contents.clear
contents.font.size = 24
draw_actor_name(@actor, 100, 0)
draw_actor_class(@actor, 240, 0)
draw_actor_face(@actor, 2, 0)
contents.font.size = 20
draw_actor_level(@actor, 102, 24)
draw_actor_point(100,48)
contents.font.size = 16
draw_actor_param_point(8,16 * 6)
draw_actor_xparam_point(8,16 * 14)
end
def draw_actor_point(x,y)
draw_text(x,y,200,line_height," 未分配"+POINT_NAME + ":" + @actor.point[0].to_s)
draw_text(x,y+line_height,200,line_height,"此次分配"+POINT_NAME + ":" + temp_all.to_s)
end
def draw_actor_param_point(x,y)
8.times {|i| draw_actor_param_to_s(x,y,i)}
end
def draw_actor_xparam_point(x,y)
10.times {|i| draw_actor_xparam_to_s(x,y,i)}
end
def draw_actor_param_to_s(x,y,param_id)
a=0
for i in 0 .. POINT_KIND-1
a+=$temp_point[i]*POINT_ADD_PARAM[i][param_id]
end
s1 = Vocab::param(param_id)
s2 = @actor.param(param_id).to_s
s3 = (@actor.param(param_id)+a).to_s
if @index < POINT_KIND
if POINT_ADD_PARAM[@index][param_id]==0
s4 = ""
else
s4 = "+" + POINT_ADD_PARAM[@index][param_id].to_s
end
else
s4 = ""
end
change_color(system_color)
draw_text(x,y+16*param_id,100,line_height,s1)
change_color(normal_color)
s2+= " →"
draw_text(x+82,y+16*param_id,120,line_height,s2,2)
change_color(system_color)
draw_text(x+150,y+16*param_id,100,line_height,s3,2)
change_color(normal_color)
contents.font.size = 14
draw_text(x+266,y+16*param_id,100,line_height,s4)
contents.font.size = 16
end
def draw_actor_xparam_to_s(x,y,xparam_id)
a=0.00
for i in 0 .. POINT_KIND-1
a+=($temp_point[i]*POINT_ADD_XPARAM[i][xparam_id]/10000.0)
end
s1 = XARAM_NAME[xparam_id]
s2 = sprintf("%02.2f%%",@actor.xparam(xparam_id)*100)
s3 = sprintf("%02.2f%%",(@actor.xparam(xparam_id) + a)*100)
if @index < POINT_KIND
if POINT_ADD_XPARAM[@index][xparam_id]==0
s4=""
else
s4 = sprintf("+%02.2f%%",POINT_ADD_XPARAM[@index][xparam_id]/100.0)
end
else
s4 = ""
end
change_color(system_color)
draw_text(x,y+16*xparam_id,100,line_height,s1)
change_color(normal_color)
s2+= " →"
draw_text(x+82,y+16*xparam_id,120,line_height,s2,2)
change_color(system_color)
draw_text(x+150,y+16*xparam_id,100,line_height,s3,2)
change_color(normal_color)
contents.font.size = 14
draw_text(x+266,y+16*xparam_id,100,line_height,s4)
contents.font.size = 16
end
end
class Scene_Point < Scene_Base
include Point_Tree
def start
super
create_background
@actor = $game_party.menu_actor
create_command_window
create_status_window
create_help_window
@command_window.activate
end
def terminate
super
dispose_background
end
def create_background
@background_sprite = Sprite.new
@background_sprite.bitmap = SceneManager.background_bitmap
@background_sprite.color.set(16, 16, 16, 128)
end
def dispose_background
@background_sprite.dispose
end
def create_command_window
@command_window = Window_Point_Command.new(@actor)
@command_window.set_handler(:cancel, method(:return_scene))
@command_window.set_handler(:pagedown, method(:next_actor))
@command_window.set_handler(:pageup, method(:prev_actor))
@command_window.set_handler(:point_add, method(:add_point))
@command_window.set_handler(:point_ok, method(:add_ok))
@command_window.set_handler(:point_cancle,method(:add_cancle))
end
def return_scene
add_cancle
SceneManager.return
end
def create_status_window
@status_window = Window_Point_Actor.new(@actor)
@command_window.status_window = @status_window
end
def create_help_window
@help_window = Window_Point_Help.new(0,@command_window.height,160,[email]Graphics.height-@command_window.height[/email])
#(0, 216, 160, 200)
@help_window.viewport = @viewport
@command_window.help_window = @help_window
end
def add_point
if temp_all >= @actor.point[0]
@command_window.activate
return
end
$temp_point[@command_window.index] += 1
@status_window.refresh
@command_window.refresh
@command_window.activate
end
def add_ok
for i in 0 .. POINT_KIND-1
@actor.point[i+1] += $temp_point[i]
end
@actor.point[0]-= temp_all
add_cancle
end
def add_cancle
for i in 0 .. POINT_KIND-1
$temp_point[i]=0
end
@status_window.refresh
@command_window.refresh
@command_window.activate
end
def next_actor
@actor = $game_party.menu_actor_next
on_actor_change
end
#--------------------------------------------------------------------------
# ● 切换到上一个角色
#--------------------------------------------------------------------------
def prev_actor
@actor = $game_party.menu_actor_prev
on_actor_change
end
#--------------------------------------------------------------------------
# ● 切换角色
#--------------------------------------------------------------------------
def on_actor_change
add_cancle
@status_window.actor = @actor
@command_window.actor = @actor
@command_window.activate
end
end
class Window_MenuCommand < Window_Command
alias add_original_commands_old add_original_commands
def add_original_commands
add_original_commands_old
add_command(Point_Tree::ADDPOINT, :addpoint)
end
end
class Scene_Menu < Scene_MenuBase
alias create_command_window_old create_command_window
def create_command_window
create_command_window_old
@command_window.set_handler(:addpoint,method(:add_point))
end
def add_point
@status_window.select_last
@status_window.activate
@status_window.set_handler(:ok, method(:on_ok))
@status_window.set_handler(:cancel, method(:on_personal_cancel))
end
def on_ok
SceneManager.call(Scene_Point)
Window_Point_Command::init_command_position
end
end
class Scene_ItemBase < Scene_MenuBase
def item_usable?
if item.id == Point_Tree::RESET_ITEM and item.is_a?(RPG::Item)
return true
end
user.usable?(item) && item_effects_valid?
end
end
class Window_Status < Window_Selectable
include Point_Tree
alias draw_parameters_old draw_parameters
def draw_parameters(x, y)
draw_parameters_old(x,y)
draw_point(x,y)
end
def draw_point(x,y)
for i in 0..5
change_color(system_color)
draw_text(x+100, y+ line_height * i, 80, line_height, STR_POINT[i])
change_color(normal_color)
draw_text(x+180, y+ line_height * i, 36, line_height,@actor.point[i+1].to_s, 2)
end
end
end
class Window_Base < Window
def draw_actor_param(actor, x, y, param_id)
change_color(system_color)
draw_text(x-30, y, 80, line_height, Vocab::param(param_id))
change_color(normal_color)
draw_text(x+ 50, y, 36, line_height, actor.param(param_id), 2)
end
end
#============================================================================== # ■ 装备等级、属性限制 作者:后知后觉 2012-7-25 Ver:1.2 #-------------------------------------------------------------------------- # 本脚本来自 [url]www.66rpg.com[/url] 使用或转载请保留此信息。 #-------------------------------------------------------------------------- #~ 说明: #~ 限制的属性只会计算人物当前的基础属性.装备、状态增加的属性不会计算在内 #~ 默认给武器、护甲增加一行说明.说明内容是需要的各种限制信息 #~ 但默认帮助窗口一共只能显示2行内容. #~ 因此你在数据库设置武器、护甲说明的时候 #~ 如果设置了2行内容.那么这新增加的第3行将无法显示出来. #~ 设置: #~ 在武器、护甲的备注里写入下面格式的内容表示要做要求. #~ <lv 数值> 等级限制 #~ <mhp 数值> 最大HP限制 #~ <mmp 数值> 最大MP限制 #~ <atk 数值> 物理攻击限制 #~ <pdf 数值> 物理防御限制 #~ <mat 数值> 魔法攻击限制 #~ <mdf 数值> 魔法防御限制 #~ <agi 数值> 敏捷限制 #~ <luk 数值> 幸运限制 #============================================================================== #============================================================================== # ■ RPG::EquipItem #============================================================================== class RPG::EquipItem < RPG::BaseItem ParamName = ["mhp","mmp","atk","pdf","mat","mdf","agi","luk"] def description return @hzhj_desc if @hzhj_desc @hzhj_desc = @description.clone + "\n\\}" hzhj = " " if level_limit > 0 hzhj = "装备要求 " @hzhj_desc += sprintf("%s%s:%d ", hzhj, Vocab.level, level_limit) end for i in 0..7 if params_limit(i) > 0 hzhj = "" if hzhj == "装备要求 " hzhj = "装备要求 " if hzhj == " " @hzhj_desc += sprintf("%s%s:%d ", hzhj, Vocab.param(i), params_limit(i)) end end @hzhj_desc end def level_limit if /<lv (\d+?)>/i =~ @note return $1.to_i else return 0 end end def params_limit(param_id) if /<#{ParamName[param_id]} (\d+?)>/i =~ @note return $1.to_i else return 0 end end end #============================================================================== # ■ Game_BattlerBase #============================================================================== class Game_BattlerBase #-------------------------------------------------------------------------- # ● 判定物品是否可以装备 #-------------------------------------------------------------------------- alias original_equippable? equippable? def equippable?(item) original_equippable?(item) && equip_params_ok?(item) end #-------------------------------------------------------------------------- # ● 判定物品是否可以装备 #-------------------------------------------------------------------------- def equip_params_ok?(item) return true if enemy? return false if item.level_limit > level for param_id in 0..7 value = param_base(param_id) + @param_plus[param_id] value = [[value, param_max(param_id)].min, param_min(param_id)].max.to_i return false if item.params_limit(param_id) > value end return true end end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● 强制更换装备 #-------------------------------------------------------------------------- def hzhj_force_change_equip(slot_id, item) @equips[slot_id].object = item if original_equippable?(item) || !item end end #============================================================================== # ■ Window_EquipItem #============================================================================== class Window_EquipItem < Window_ItemList #-------------------------------------------------------------------------- # ● 查询使用列表中是否含有此物品 #-------------------------------------------------------------------------- def include?(item) return true if item == nil return false unless item.is_a?(RPG::EquipItem) return false if @slot_id < 0 return false if item.etype_id != @actor.equip_slots[@slot_id] return @actor.original_equippable?(item) end #-------------------------------------------------------------------------- # ● 查询此文件是否可以装备 #-------------------------------------------------------------------------- def enable?(item) return true unless item return @actor.equippable?(item) end #-------------------------------------------------------------------------- # ● 更新帮助内容 #-------------------------------------------------------------------------- def update_help super if @actor && @status_window temp_actor = Marshal.load(Marshal.dump(@actor)) temp_actor.hzhj_force_change_equip(@slot_id, item) @status_window.set_temp_actor(temp_actor) end end end #============================================================================== # ■ Window_ShopStatus #============================================================================== class Window_ShopStatus < Window_Base #-------------------------------------------------------------------------- # ● 绘制角色的装备信息 #-------------------------------------------------------------------------- def draw_actor_equip_info(x, y, actor) enabled = actor.equippable?(@item) change_color(normal_color, enabled) draw_text(x, y, 112, line_height, actor.name) item1 = current_equipped_item(actor, @item.etype_id) draw_actor_param_change(x, y, actor, item1) if actor.original_equippable?(@item) draw_item_name(item1, x, y + line_height, enabled) end end
#==============================================================================
# ■ 装备等级、属性限制 作者:后知后觉 2012-7-25 Ver:1.2
#--------------------------------------------------------------------------
# 本脚本来自 [url]www.66rpg.com[/url] 使用或转载请保留此信息。
#--------------------------------------------------------------------------
#~ 说明:
#~ 限制的属性只会计算人物当前的基础属性.装备、状态增加的属性不会计算在内
#~ 默认给武器、护甲增加一行说明.说明内容是需要的各种限制信息
#~ 但默认帮助窗口一共只能显示2行内容.
#~ 因此你在数据库设置武器、护甲说明的时候
#~ 如果设置了2行内容.那么这新增加的第3行将无法显示出来.
#~ 设置:
#~ 在武器、护甲的备注里写入下面格式的内容表示要做要求.
#~ <lv 数值> 等级限制
#~ <mhp 数值> 最大HP限制
#~ <mmp 数值> 最大MP限制
#~ <atk 数值> 物理攻击限制
#~ <pdf 数值> 物理防御限制
#~ <mat 数值> 魔法攻击限制
#~ <mdf 数值> 魔法防御限制
#~ <agi 数值> 敏捷限制
#~ <luk 数值> 幸运限制
#==============================================================================
#==============================================================================
# ■ RPG::EquipItem
#==============================================================================
class RPG::EquipItem < RPG::BaseItem
ParamName = ["mhp","mmp","atk","pdf","mat","mdf","agi","luk"]
def description
return @hzhj_desc if @hzhj_desc
@hzhj_desc = @description.clone + "\n\\}"
hzhj = " "
if level_limit > 0
hzhj = "装备要求 "
@hzhj_desc += sprintf("%s%s:%d ", hzhj, Vocab.level, level_limit)
end
for i in 0..7
if params_limit(i) > 0
hzhj = "" if hzhj == "装备要求 "
hzhj = "装备要求 " if hzhj == " "
@hzhj_desc += sprintf("%s%s:%d ", hzhj, Vocab.param(i), params_limit(i))
end
end
@hzhj_desc
end
def level_limit
if /<lv (\d+?)>/i =~ @note
return $1.to_i
else
return 0
end
end
def params_limit(param_id)
if /<#{ParamName[param_id]} (\d+?)>/i =~ @note
return $1.to_i
else
return 0
end
end
end
#==============================================================================
# ■ Game_BattlerBase
#==============================================================================
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● 判定物品是否可以装备
#--------------------------------------------------------------------------
alias original_equippable? equippable?
def equippable?(item)
original_equippable?(item) && equip_params_ok?(item)
end
#--------------------------------------------------------------------------
# ● 判定物品是否可以装备
#--------------------------------------------------------------------------
def equip_params_ok?(item)
return true if enemy?
return false if item.level_limit > level
for param_id in 0..7
value = param_base(param_id) + @param_plus[param_id]
value = [[value, param_max(param_id)].min, param_min(param_id)].max.to_i
return false if item.params_limit(param_id) > value
end
return true
end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 强制更换装备
#--------------------------------------------------------------------------
def hzhj_force_change_equip(slot_id, item)
@equips[slot_id].object = item if original_equippable?(item) || !item
end
end
#==============================================================================
# ■ Window_EquipItem
#==============================================================================
class Window_EquipItem < Window_ItemList
#--------------------------------------------------------------------------
# ● 查询使用列表中是否含有此物品
#--------------------------------------------------------------------------
def include?(item)
return true if item == nil
return false unless item.is_a?(RPG::EquipItem)
return false if @slot_id < 0
return false if item.etype_id != @actor.equip_slots[@slot_id]
return @actor.original_equippable?(item)
end
#--------------------------------------------------------------------------
# ● 查询此文件是否可以装备
#--------------------------------------------------------------------------
def enable?(item)
return true unless item
return @actor.equippable?(item)
end
#--------------------------------------------------------------------------
# ● 更新帮助内容
#--------------------------------------------------------------------------
def update_help
super
if @actor && @status_window
temp_actor = Marshal.load(Marshal.dump(@actor))
temp_actor.hzhj_force_change_equip(@slot_id, item)
@status_window.set_temp_actor(temp_actor)
end
end
end
#==============================================================================
# ■ Window_ShopStatus
#==============================================================================
class Window_ShopStatus < Window_Base
#--------------------------------------------------------------------------
# ● 绘制角色的装备信息
#--------------------------------------------------------------------------
def draw_actor_equip_info(x, y, actor)
enabled = actor.equippable?(@item)
change_color(normal_color, enabled)
draw_text(x, y, 112, line_height, actor.name)
item1 = current_equipped_item(actor, @item.etype_id)
draw_actor_param_change(x, y, actor, item1) if actor.original_equippable?(@item)
draw_item_name(item1, x, y + line_height, enabled)
end
end
|
|