赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 0 |
经验 | 6326 |
最后登录 | 2017-9-16 |
在线时间 | 579 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 48
- 在线时间
- 579 小时
- 注册时间
- 2011-5-30
- 帖子
- 497
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 拉羅卡特 于 2011-6-11 20:31 编辑
- module Sword
- #=======================================
- #★ 魔剑工铺 - 多功能技能效果 1.00 (VX)
- # [url]http://blog.yam.com/a870053jjkj/[/url]
- #=======================================
- Sword41_Skill = Hash.new{|a, b| a[b] = {}}
- #=======================================
- =begin
- ● 所需脚本
- 内部函数扩充:[url]http://blog.yam.com/a870053jjkj/article/25033724[/url](部分必要)
- 伤害显示强化:[url]http://blog.yam.com/a870053jjkj/article/28552796[/url](非必要)
- ========================================
- ● 效果设置表
- 设置变更:0=>[消耗,成功率,速度补正,基本伤害,攻击关系,精神关系,分散],
- 如果有不想更改的项目,只要输入『nil』即可
- 耗血发动:1=>[耗血百分比, 耗血量],
- 耗气发动:2=>[耗气百分比],
- 增加数值:4=>[血上限, 气上限, 攻击力, 防御力, 精神力, 敏捷性],
- 增百分比:5=>[血上限, 气上限, 攻击力, 防御力, 精神力, 敏捷性],
- 自动状态:6=>[状态编号列表*],
- 状态编号列表:设定为『状态编号,』,可添加多个
- MP伤害:8=>[nil],
- 所需道具:9=>[道具所需表*],
- 道具所需表:设定为『[种类, 编号, 所需数量],』,可添加多个
- 消耗道具:10=>[道具消耗表*],
- 道具消耗表:设定为『[种类, 编号, 消耗数量],』,可添加多个
- 所需装备:11=>[身上装备表*],
- 身上装备表:设定为『[部位, 编号],』,可添加多个
- =end
- #=======================================
- #● 功能设定
- Sword41_Priority4 = true #[增加数值]是否比[增百分比]还早增加
- #--------------------------------------------------------------
- #○ 技能效果设置表(Sword41_Skill[技能编号] = {技能效果列表})
- Sword41_Skill[67] = {1=>[0, 100],}
- #=======================================
- $Sword ? $Sword[41] = true : $Sword = {41=>true} # 脚本使用标志
- end
- #=======================================
- #■ 处理临时资料的类别
- class Game_Temp
- attr_accessor :sword41_skill_id # 战斗中使用的技能编号
- end
- #=======================================
- #■ 处理战斗者的类别
- class Game_Battler
- include Sword # 连接自定设置
- attr_accessor :sword41_proscription # 禁止解除的状态列表
- attr_accessor :sword41_save_cost # 暂时储存消耗的量
- #-------------------------------------------------------------
- #● 初始化物件
- alias sword41_initialize initialize
- def initialize
- sword41_initialize ; @sword41_proscription = [] ; @sword41_save_cost = []
- @sword41_plus_per = [{}, {}]
- end
- #-------------------------------------------------------------
- #● 获取MaxHP
- alias sword41_maxhp maxhp
- def maxhp ; sword41_maxhp + sword41_joint100(sword41_maxhp, 0) ; end
- #-------------------------------------------------------------
- #● 获取MaxMP
- alias sword41_maxmp maxmp
- def maxsp ; sword41_maxmp + sword41_joint100(sword41_maxmp, 1) ; end
- #-------------------------------------------------------------
- #● 获取攻击力
- alias sword41_atk atk
- def str ; sword41_atk + sword41_joint100(sword41_atk, 2) ; end
- #-------------------------------------------------------------
- #● 获取防御力
- alias sword41_def def
- def dex ; sword41_def + sword41_joint100(sword41_def, 3) ; end
- #-------------------------------------------------------------
- #● 获取精神力
- alias sword41_spi spi
- def agi ; sword41_spi + sword41_joint100(sword41_spi, 4) ; end
- #-------------------------------------------------------------
- #● 获取敏捷性
- alias sword41_agi agi
- def int ; sword41_agi + sword41_joint100(sword41_agi, 5) ; end
- #-------------------------------------------------------------
- #● 能力值增加共通计算法(能力值量, 能力值顺序)
- def sword41_joint100(ability, index)
- a = 0 ; if Sword41_Priority4 # 优先执行[增加数值]
- @sword41_plus_per[1].each_value{|value| a += value[index]}
- @sword41_plus_per[0].each_value{|value| a += ability * value[index] / 100}
- else # 优先执行[增加分比]
- @sword41_plus_per[0].each_value{|value| a += ability * value[index] / 100}
- @sword41_plus_per[1].each_value{|value| a += value[index]}
- end ; a
- end
- #-------------------------------------------------------------
- #● 变更HP=(新HP)
- alias sword41_hp= hp=
- def hp=(hp)
- damage = @hp - hp # 获取伤害
- if per = Sword41_Skill[$game_temp.sword41_skill_id][8] #○ MP伤害(扣HP转扣MP)
- damage1 = per.empty? ? damage : damage + (damage * (per[1].is_a?(Numeric) ?
- per[1] : rand(per[1])) / 100 + (per[0].is_a?(Numeric) ? per[0] : rand(per[0]))) rescue
- raise("#{$game_temp.sword41_skill_id}号技能,未装「内部含数扩充」就用范围指定")
- self.sword41_mp = @mp - damage1 # 将扣HP转为扣MP
- @mp_damage = @hp_damage ; @hp_damage, damage = nil, 0 if per.empty?
- end
- self.sword41_hp = @hp - damage ; @sword41_save_cost[0] = @hp - damage if
- Sword41_Skill[$game_temp.sword41_skill_id][7] #○ 消耗伤害(记录消耗量)
- end
- #-------------------------------------------------------------
- #● 变更MP=(新MP)
- alias sword41_mp= mp=
- def mp=(mp)
- (self.sword41_mp = mp ; return) unless $game_temp.sword41_skill_id
- mp_cost = $data_skills[$game_temp.sword41_skill_id].mp_cost # 获取消耗量
- if per = Sword41_Skill[$game_temp.sword41_skill_id][1] #○ 耗血发动(实际消耗)
- self.hp = @hp - (per[1] + self.maxhp * per[0] / 100) # 消耗HP
- end
- if per = Sword41_Skill[$game_temp.sword41_skill_id][2] #○ 耗气发动
- mp_cost = mp_cost + self.maxmp * per[0] / 100
- end
- self.sword41_mp = @mp - mp_cost ; @sword41_save_cost[1] = @mp - mp_cost if
- Sword41_Skill[$game_temp.sword41_skill_id][7] #○ 消耗伤害(记录消耗量)
- end
- #-------------------------------------------------------------
- #● 解除状态(状态编号)
- alias sword41_remove_state remove_state
- def remove_state(state_id)
- return if @sword41_proscription.include?(state_id) #○ 附加状态(防止被解除用)
- sword41_remove_state(state_id)
- end
- #-------------------------------------------------------------
- #● 可以使用技能的判定(技能)
- alias sword41_skill_can_use? skill_can_use?
- def skill_can_use?(skill)
- if per = Sword41_Skill[skill.id][1] #○耗血发动(判断目前HP是否可用该技能)
- return false if per[1] + self.maxhp * per[0] / 100 >= self.hp
- end
- if per = Sword41_Skill[skill.id][2] #○耗气发动(判断目前MP是否可用该技能)
- return false if $data_skills[skill.id].mp_cost + self.maxmp * per[0] / 100 > self.mp
- end
- if per = Sword41_Skill[skill.id][9] and self.is_a?(Game_Actor) #○ 所需道具
- per.each do |val| case val[0]
- when 0 ; data = $data_items[val[1]] # 物品
- when 1 ; data = $data_weapons[val[1]] # 武器
- when 2 ; data = $data_armors[val[1]] # 防具
- end ; return false if $game_party.item_number(data) < val[2] ; end
- end
- if per = Sword41_Skill[skill.id][11] and self.is_a?(Game_Actor) #○ 所需装备
- per.each do |val| case val[0]
- when 0 ; return false if self.weapon_id != val[1] # 武器
- when 1 ; return false if self.armor1_id != val[1] # 盾类
- when 2 ; return false if self.armor2_id != val[1] # 头部
- when 3 ; return false if self.armor3_id != val[1] # 身体
- when 4 ; return false if self.armor4_id != val[1] # 饰品
- end ; end
- end
- sword41_skill_can_use?(skill)
- end
- end
- #=======================================
- #■ 处理角色的类别
- class Game_Actor < Game_Battler
- include Sword # 连接自定设置
- #-------------------------------------------------------------
- #● 觉悟技能
- alias sword41_learn_skill learn_skill
- def learn_skill(skill_id)
- sword41_learn_skill(skill_id)
- if per = Sword41_Skill[skill_id][4] #○ 增加数值(习得时增加能力值)
- @sword41_plus_per[1][skill_id] = per
- end
- if per = Sword41_Skill[skill_id][5] #○ 增百分比(习得时增加能力值)
- @sword41_plus_per[0][skill_id] = per
- end
- if per = Sword41_Skill[skill_id][6] #○ 自动状态(习得时附加状态)
- per.each{|i| add_state(i) ; @sword41_proscription += [i]}
- end
- end
- #-------------------------------------------------------------
- # ● 遗忘技能
- alias sword41_forget_skill forget_skill
- def forget_skill(skill_id)
- sword41_forget_skill(skill_id)
- if per = Sword41_Skill[skill_id][4] #○ 增加数值(遗忘时能力值恢复)
- @sword41_plus_per[1].delete(skill_id)
- end
- if per = Sword41_Skill[skill_id][5] #○ 增百分比(遗忘时能力值恢复)
- @sword41_plus_per[0].delete(skill_id)
- end
- if per = Sword41_Skill[skill_id][6] #○ 自动状态(遗忘时解除状态)
- per.each{|i| @sword41_proscription.delete_at(@sword41_proscription.index(i))
- remove_state(i)}
- end
- end
- end
- #=======================================
- #■ 处理同伴的类别
- class Game_Party
- include Sword # 连接自定设置
- #-------------------------------------------------------------
- #● 初始化物件
- alias sword41_initialize initialize
- def initialize
- sword41_initialize
- Sword41_Skill.each do |key, value| ; if value[0] #○ 设置变更
- $data_skills[key].mp_cost = value[0][0] if value[0][0] # MP 消耗量
- $data_skills[key].hit = value[0][1] if value[0][1] # 成功率
- $data_skills[key].speed = value[0][2] if value[0][2] # 速度补正值
- $data_skills[key].base_damage = value[0][3] if value[0][3] # 基本伤害值
- $data_skills[key].atk_f = value[0][4] if value[0][4] # 攻击关系度
- $data_skills[key].spi_f = value[0][5] if value[0][5] # 精神关系度
- $data_skills[key].variance = value[0][6] if value[0][6] # 分散度
- end ; end
- end
- end
- #=======================================
- #■ 处理战斗画面的类别
- class Scene_Battle
- include Sword # 连接自定设置
- #-------------------------------------------------------------
- #● 产生技能行动结果
- alias sword41_execute_action_skill execute_action_skill
- def execute_action_skill
- $game_temp.sword41_skill_id = @active_battler.action.skill_id
- if per = Sword41_Skill[$game_temp.sword41_skill_id][10] and
- @active_battler.is_a?(Game_Actor) #○ 消耗道具
- per.each do |val| case val[0] # 项目循环;道具分歧
- when 0 ; data = $data_items[val[1]] # 物品
- when 1 ; data = $data_weapons[val[1]] # 武器
- when 2 ; data = $data_armors[val[1]] # 防具
- end ; $game_party.lose_item(data, val[2]) ; end
- end
- sword41_execute_action_skill
- $game_temp.sword41_skill_id = nil # 清除技能
- end
- #--------------------------------------------------------------
- #● 显示体力伤害(目标, 技能或物品)
- alias sword41_display_hp_damage display_hp_damage
- def display_hp_damage(target, obj = nil)
- sword41_display_hp_damage(target, obj) if target.hp_damage # MP伤害(除错)
- end
- end
复制代码 以下的脚本不能使用存档的功能...就做新进游戏後存档也是一样不能用 会造成错误...有办法解决吗
因为这个是能让技能破百万 或是亿的攻击力的脚本 个人还想要用 但是原作者不知道是再忙还是怎样联络不上
|
|