赞 | 14 |
VIP | 0 |
好人卡 | 0 |
积分 | 6 |
经验 | 44782 |
最后登录 | 2022-9-28 |
在线时间 | 797 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 596
- 在线时间
- 797 小时
- 注册时间
- 2014-7-1
- 帖子
- 578
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
如果是重新开档的话就不会出现这个报错 但是这个只是重新开档 如果游戏玩到后期会不会出现这个问题
这个错误的意思表示的是什么意思呢? 物品数量出问题? 还是只是必须重新开档玩就不会出现这个问题
下面是技能装备的脚本- #==============================================================================
- # ■ 技能装备系统 for RGSS1 by:VIPArcher
- # -- 本脚本来自 [url]https://rpg.blue[/url] 使用或转载请保留以上信息。
- #==============================================================================
- # 让技能可以像装备一样装备到角色身上,战斗中仅可使用已经装备的技能,其他场景可
- # 以随意使用,技能装备场景技能槽栏激活状态下(如有队友)按左右键切换当前角色。
- # $scene = Scene_SetEquipSkill.new(actor_index, skill_index) 呼出场景。
- # actor_index : 该角色在队伍中的位置 ; skill_index : 技能槽光标的起始位置
- #==============================================================================
- $VIPArcherScript ||= {};$VIPArcherScript[:battle_skill] = 20150717
- #-------------------------------------------------------------------------------
- module VIPArcher end
- #==============================================================================
- # ★ 设定部分 ★
- #==============================================================================
- module VIPArcher::Battle_Skill
- #技能槽名字
- Skills_Slot_Name = ['技能槽一','技能槽二','技能槽三','技能槽四','技能槽五']
- #可使用的场合名称
- SKILL_OCCASION = ['平时', '战斗中', '菜单中', '不能使用']
- #效果范围名称
- SKILL_SCOPE = ['无', '敌单体', '敌全体', '己方单体', '己方全体',
- '己方单体(战斗不能)', '己方全体(战斗不能)', '使用者']
- #未装备技能时技能槽显示内容
- BLANK_TEXT = '- 空技能槽 -'
- #空技能槽帮助窗口文本
- BLANK_HELP = '空的技能槽,可以装备战斗技能。'
- #"[卸下技能]"的图标文件名(不需要则设置为 nil 或 false)
- RELEASE_ICON = '047-Skill04'
- #"[卸下技能]"帮助窗口文本
- RELEASE_HELP = '卸下已装备的技能。'
- #"[卸下技能]"按钮名称
- RELEASE_TEXT = '[卸下技能]'
- end
- #==============================================================================
- # ☆ 设定结束 ☆
- #==============================================================================
- class Symbol
- def to_proc
- Proc.new { |*args| args.shift.__send__(self, *args) }
- end
- end
- class Game_Actor < Game_Battler
- include VIPArcher::Battle_Skill
- attr_reader :battle_skill #已装备技能
- alias battle_skill_initialize initialize
- def initialize(actor_id)
- @battle_skill = Array.new(Skills_Slot_Name.size){ nil }
- battle_skill_initialize(actor_id)
- end
- def add_battle_skill(skill,id)
- @battle_skill[id] = nil if skill.zero?
- return if @battle_skill.include?(skill)
- @battle_skill[id] = skill if skills.include?(skill)
- end
- alias battle_skill_learn_skill learn_skill
- def learn_skill(skill_id)
- battle_skill_learn_skill(skill_id)
- auto_add_battle_skill(skill_id) unless @battle_skill.include?(skill_id)
- end
- def auto_add_battle_skill(skill_id)
- @battle_skill.each_index do |index|
- return @battle_skill[index] = skill_id if @battle_skill[index].nil?
- end
- end
- alias battle_skill_forget_skill forget_skill
- def forget_skill(skill_id)
- battle_skill_forget_skill(skill_id)
- if @battle_skill.include?(skill_id)
- @battle_skill[@battle_skill.index(skill_id)] = nil
- end
- end
- end
- class Window_Selectable < Window_Base
- def create_contents
- self.contents.dispose if self.contents
- self.contents = Bitmap.new(width - 32, row_max * 32)
- end
- end
- class Window_EquipSkillLeft < Window_Base
- include VIPArcher::Battle_Skill
- def initialize(actor, skill = nil)
- super(0, 64, 272, 192)
- self.contents = Bitmap.new(width - 32, height - 32)
- @actor, @skill = actor, skill
- refresh
- end
- def refresh
- self.contents.clear
- draw_actor_name(@actor, 4, 0)
- draw_actor_level(@actor, 132, 0)
- draw_skill_info unless @skill.nil?
- end
- def set_skill(skill)
- @skill = skill
- refresh
- end
- def draw_skill_info
- self.contents.font.color = system_color
- self.contents.draw_text(0, 32, 128, 32, '使用场合')
- self.contents.font.color = normal_color
- self.contents.draw_text(32, 64, 128, 32, SKILL_OCCASION[@skill.occasion])
- self.contents.font.color = system_color
- self.contents.draw_text(0, 96, 128, 32, '效果范围')
- self.contents.font.color = normal_color
- self.contents.draw_text(32, 128, 320, 32, SKILL_SCOPE[@skill.scope])
- end
- end
- class Window_EquipSkillSlot < Window_Selectable
- include VIPArcher::Battle_Skill
- attr_writer :skill_info_window
- def initialize(actor, skill_index = 0)
- super(272, 64, 368, 192)
- @actor, self.index = actor, skill_index
- refresh
- end
- def data
- @actor.battle_skill
- end
- def item
- data[self.index] ? $data_skills[data[self.index]] : nil
- end
- def refresh
- @item_max = data.size
- create_contents
- self.contents.font.color = system_color
- Skills_Slot_Name.each_with_index do |name,id|
- self.contents.draw_text(4, 32 * id, 92, 32, name)
- end
- data.each_with_index do |skill_id,id|
- if skill_id.nil?
- self.contents.font.color = normal_color
- self.contents.draw_text(128 , 32 * id,192, 32, BLANK_TEXT)
- else
- draw_item_name($data_skills[skill_id], 128, 32 * id)
- end
- end
- end
- def update_help
- @help_window.set_text(item.nil? ? BLANK_HELP : item.description)
- @skill_info_window.set_skill(item) if @skill_info_window
- end
- end
- class Window_SkillItem < Window_Selectable
- include VIPArcher::Battle_Skill
- attr_writer :skill_info_window
- def initialize(actor)
- super(0, 256, 640, 224)
- @actor, @column_max, self.active, self.index = actor, 2, false, -1
- refresh
- end
- def item
- @data[self.index] ? $data_skills[@data[self.index]] : nil
- end
- def refresh
- @data = []
- skills = @actor.skills.select{|skill| [email protected]_skill.include?(skill)}
- skills.each{|skill| @data.push(skill) }
- @data.push(nil) # 添加[卸下装备]
- @item_max = @data.size
- create_contents
- @data.each_index{|index| draw_item(index)}
- end
- def draw_item(index)
- x = 4 + index % 2 * (288 + 32)
- y = index/ 2 * 32 #这残念的Sublime Text高亮=。=
- self.contents.font.color = normal_color
- if @data[index]
- skill = $data_skills[@data[index]]
- bitmap = RPG::Cache.icon(skill.icon_name)
- self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
- self.contents.draw_text(x + 28, y, 212, 32, skill.name)
- else
- bitmap = RPG::Cache.icon(RELEASE_ICON) if RELEASE_ICON
- self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24)) if bitmap
- self.contents.draw_text(x + 28, y, 212, 32, RELEASE_TEXT)
- end
- end
- def update_help
- @help_window.set_text(item.nil? ? RELEASE_HELP : item.description)
- @skill_info_window.set_skill(item) if @skill_info_window
- end
- end
- class Window_Skill < Window_Selectable
- def refresh
- @data = []
- if $scene.instance_of?(Scene_Battle)
- @actor.battle_skill
- else
- @actor.skills
- end.each do |skill|
- @data.push($data_skills[skill]) unless skill.nil?
- end
- @item_max = @data.size
- create_contents unless @item_max.zero?
- @data.each_index{|index| draw_item(index) }
- end
- end
- class Scene_SetEquipSkill
- def initialize(actor_index = 0, skill_index = 0)
- @actor_index, @skill_index = actor_index, skill_index
- end
- def main
- @actor = $game_party.actors[@actor_index]
- create_all_window
- Graphics.transition
- [Graphics,Input,self].map(&:update) while $scene.equal?(self)
- Graphics.freeze
- dispose_all_window
- end
- def create_all_window
- @help_window = Window_Help.new
- @right_window = Window_EquipSkillSlot.new(@actor,@skill_index)
- @left_window = Window_EquipSkillLeft.new(@actor,@right_window.item)
- @skillitem_window = Window_SkillItem.new(@actor)
- @right_window.help_window = @help_window
- @skillitem_window.help_window = @help_window
- @right_window.skill_info_window = @left_window
- @skillitem_window.skill_info_window = @left_window
- end
- def update
- update_all_windows
- return update_right if @right_window.active
- return update_item if @skillitem_window.active
- end
- def update_right
- return scene_return if Input.trigger?(Input::B)
- return on_slot_ok if Input.trigger?(Input::C)
- return process_pagedown if Input.trigger?(Input::RIGHT)
- return process_pageup if Input.trigger?(Input::LEFT)
- end
- def update_item
- return on_item_cancel if Input.trigger?(Input::B)
- return on_item_ok if Input.trigger?(Input::C)
- end
- def on_item_ok
- $game_system.se_play($data_system.equip_se)
- skill = @skillitem_window.item
- @actor.add_battle_skill(skill.nil? ? 0 : skill.id,@right_window.index)
- @right_window.active = true
- @skillitem_window.active = false
- @skillitem_window.index = -1
- @right_window.refresh
- @skillitem_window.refresh
- end
- def on_item_cancel
- $game_system.se_play($data_system.cancel_se)
- @right_window.active = true
- @skillitem_window.active = false
- @skillitem_window.index = -1
- end
- def scene_return
- $game_system.se_play($data_system.cancel_se)
- $scene = Scene_Map.new
- end
- def on_slot_ok
- $game_system.se_play($data_system.decision_se)
- @equipskill_id = @right_window.index
- @right_window.active = false
- @skillitem_window.active = true
- @skillitem_window.index = 0
- end
- def process_pageup
- $game_system.se_play($data_system.cursor_se)
- @actor_index += $game_party.actors.size - 1
- @actor_index %= $game_party.actors.size
- $scene = Scene_SetEquipSkill.new(@actor_index, @right_window.index)
- end
- def process_pagedown
- $game_system.se_play($data_system.cursor_se)
- @actor_index += 1
- @actor_index %= $game_party.actors.size
- $scene = Scene_SetEquipSkill.new(@actor_index, @right_window.index)
- end
- def update_all_windows
- instance_variables.each do |varname|
- ivar = instance_variable_get(varname)
- ivar.update if ivar.is_a?(Window)
- end
- end
- def dispose_all_window
- instance_variables.each do |varname|
- ivar = instance_variable_get(varname)
- ivar.dispose if ivar.is_a?(Window)
- end
- end
- end
- class Interpreter
- #--------------------------------------------------------------------------
- # ● 条件分支
- #--------------------------------------------------------------------------
- alias battle_skill_command_111 command_111
- def command_111
- result = false
- # 条件判定
- if [@parameters[0],@parameters[2]] == [4,2]
- actor = $game_actors[@parameters[1]]
- if actor != nil
- if $scene.instance_of?(Scene_Battle)
- result = (actor.battle_skill.include?(@parameters[3]))
- else
- result = (actor.skill_learn?(@parameters[3]))
- end
- end
- # 判断结果保存在 hash 中
- @branch[@list[@index].indent] = result
- # 判断结果为真的情况下
- if @branch[@list[@index].indent] == true
- # 删除分支数据
- @branch.delete(@list[@index].indent)
- # 继续
- return true
- end
- # 不符合条件的情况下 : 指令跳转
- return command_skip
- else
- battle_skill_command_111
- end
- end
- end
复制代码 |
评分
-
查看全部评分
|