赞 | 0 |
VIP | 177 |
好人卡 | 10 |
积分 | 1 |
经验 | 12547 |
最后登录 | 2017-8-1 |
在线时间 | 193 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 193 小时
- 注册时间
- 2013-3-24
- 帖子
- 448
|
本帖最后由 joe5491 于 2013-4-1 01:46 编辑
我也补上脚本好了,这个还有穿上附加能力值、状态等功能
设定武器之类的,请到24行左右(我放了几个范例)- module Sword
- #=======================================
- #★ 魔劍工舖 - 多功能裝備效果 1.03 (XP)
- # blog.yam.com/a870053jjkj/article/29783547
- #=======================================
- Sword62_Weapon, Sword62_Armor = [], []
- =begin
- ========================================
- ● 設置腳本
- 判斷是否不符合裝備條件:角色對象.conditions62?(裝備部位, 裝備編號)
- ========================================
- ● 裝備效果資料
- 設定變更:0=>{'能力值函數名稱'=>更改數值*},
- 自動狀態:2=>[狀態編號*],
- 增減技能:3=>[技能編號*],
- 裝備條件:【1】4=>{'能力值函數名稱'=>所需數值*},
- 【2】4=>{變數編號=>所需數值*},
- 經驗加乘:5=>[增加量, 整體百分比, 戰鬥以外是否有效&],
- ========================================
- =end
- #● 功能設定
- Sword62_2Battle = 2 # 自動狀態附加規則,0為裝備瞬間;1為戰鬥結束;2為不解除
- #--------------------------------------------------------------
- #○ 武器效果資料表 ( Sword62_Weapon[武器編號] = {效果資料*} )
- Sword62_Weapon[3] = {4=>{'level'=>3, 'str'=>300},} #这意思是,必须要3等以上且力量大于300才能穿上3号武器
- Sword62_Weapon[6] = {3=>{22},} #这意思是穿上6号武器能自动获得22号技能
- Sword62_Weapon[7] = {2=>{1},} #这意思是穿上7号武器马上获得1号状态(就是马上死亡?!)
- Sword62_Weapon[8] = {0=>{ 'str'=>9999},} #这意思是穿上8号武器马上力量变9999(可突破上限)
- #--------------------------------------------------------------
- #○ 防具效果資料表 ( Sword62_Armor[防具編號] = {效果資料*} )
- Sword62_Armor[33] = {5=>[0,50],} #这意思是穿上此33号防具经验1.5倍
- #=======================================
- $Sword ? $Sword[62] = true : $Sword = {62=>true} # 腳本使用標誌
- $Sword_F12_Error = {} unless $Sword_F12_Error # F12除錯標誌
- #-------------------------------------------------------------
- #● 獲取指定的裝備是否有設定指定的效果(裝備類型, 裝備編號, 效果編號)
- def self.equip62?(kind, id, id2)
- if $Sword[3] ; if id.is_a?(RPG::Weapon) # 「裝備欄位擴充」處理
- kind = 0 ; id = id.id # 武器
- else ; kind = 1 ; id = id.id # 防具
- end ; end
- return if id == 0
- return unless equip = kind == 0 ? $data_weapons[id] : $data_armors[id]
- if $Sword[79] then if equip.fluctuation? # 「浮動數值裝備」處理
- id = equip.original_id
- end end
- kind == 0 ? (Sword62_Weapon[id] ? (Sword62_Weapon[id][id2] ? true : false) : false) :
- (Sword62_Armor[id] ? (Sword62_Armor[id][id2] ? true : false) : false)
- end
- #-------------------------------------------------------------
- #● 獲取裝備類型的變量(裝備類型, 裝備編號)
- def self.equipment62(kind, id)
- if $Sword[3] ; if id.is_a?(RPG::Weapon) # 「裝備欄位擴充」處理
- kind = 0 ; id = id.id # 武器
- else ; kind = 1 ; id = id.id # 防具
- end ; end
- equip = kind == 0 ? $data_weapons[id] : $data_armors[id]
- if $Sword[79] then if equip.fluctuation? # 「浮動數值裝備」處理
- id = equip.original_id
- end end
- kind == 0 ? Sword62_Weapon[id] : Sword62_Armor[id]
- end
- end
- #=======================================
- #■ 處理角色的類
- class Game_Actor# < Game_Battler
- attr_accessor :ability62 # 裝備後的能力值加乘數值表
- attr_accessor :state62 # 裝備附加狀態資料表
- #-------------------------------------------------------------
- #● 設定角色(角色編號)
- alias sword62_setup setup
- def setup(actor_id)
- sword62_setup(actor_id) ; @ability62, @state62 = {}, []
- @weapon_id, @armor1_id, @armor2_id, @armor3_id, @armor4_id = 0, 0, 0, 0, 0
- actor = $data_actors[actor_id]
- equip_effect62(0, actor.weapon_id)
- equip_effect62(1, actor.armor1_id)
- equip_effect62(2, actor.armor2_id)
- equip_effect62(3, actor.armor3_id)
- equip_effect62(4, actor.armor4_id)
- if $Sword[3]
- else
- equip(0, actor.weapon_id) ; @weapon_id = actor.weapon_id
- equip(1, actor.armor1_id) ; @armor1_id = actor.armor1_id
- equip(2, actor.armor2_id) ; @armor2_id = actor.armor2_id
- equip(3, actor.armor3_id) ; @armor3_id = actor.armor3_id
- equip(4, actor.armor4_id) ; @armor4_id = actor.armor4_id
- end
- end
- #-------------------------------------------------------------
- #● 變更EXP=(新EXP)
- alias sword62_exp= exp=
- def exp=(exp)
- #○ 經驗加乘
- self.sword62_exp = exp if (exp2 = exp - self.exp) <= 0
- equip = sword62_sword3
- equip.each_index do |i| next unless equipment = Sword.equipment62(i, equip[i])
- next unless equipment[5]
- if equipment[5][2] or $scene.is_a?(Scene_Battle) # 符合加乘規定的場合
- exp += (exp2 / 100.0 * equipment[5][1]).round + equipment[5][0]
- end
- end
- self.sword62_exp = exp
- end
- #-------------------------------------------------------------
- #● 可用技能判斷(技能編號)
- alias sword62_skill_can_use? skill_can_use?
- def skill_can_use?(skill_id)
- skills1 = @skills ; @skills = sword62_skills_loop
- skills2 = sword62_skill_can_use?(skill_id) ; @skills = skills1 ; skills2
- end
- #-------------------------------------------------------------
- #● 獲取技能對象數組
- alias sword62_skills skills
- def skills
- skills1 = @skills ; @skills = sword62_skills_loop
- skills2 = sword62_skills ; @skills = skills1 ; skills2
- end
- #-------------------------------------------------------------
- #● 獲取裝備效果增減技能的技能列表
- def sword62_skills_loop
- skills1 = @skills
- a = $Sword[3] ? Sword::Sword3_Column.size : 4
- (0..a).each do |equip_type|
- if $Sword[3] ; quip_id = equip3[equip_type] # 「裝備欄位擴充」處理
- else
- case equip_type # 裝備類型分歧
- when 0 ; quip_id = weapon_id # 武器
- when 1 ; quip_id = armor1_id # 盾
- when 2 ; quip_id = armor2_id # 頭部
- when 3 ; quip_id = armor3_id # 身體
- when 4 ; quip_id = armor4_id # 裝飾品
- end
- end
- if Sword.equip62?(equip_type, quip_id, 3)
- Sword.equipment62(equip_type, quip_id)[3].each do |i|
- i > 0 ? skills1 += [i] : (
- skills1.delete_at(skills1.index(i.abs)) if skills1.index(i.abs))
- skills1.sort! ; skills1.uniq!
- end
- end
- end
- skills1
- end
- #-------------------------------------------------------------
- #● 判斷使否不可裝備(裝備部位, 裝備編號)
- def conditions62?(kind, id)
- script, disabled = '', false
- equipment4 = Sword.equipment62(kind, id)[4]
- equipment4.each{|key, value|
- vtext = sprintf(key.is_a?(Integer) ? '$game_variables[%s]' : 'self.%s', key)
- script += sprintf("disabled = true if %s < %i\n", vtext, value)}
- eval(script)
- disabled
- end
- #-------------------------------------------------------------
- #● 更新裝備效果(裝備位置, 裝備編號)
- def equip_effect62(equip, id)
- if $Sword[3] ; quip_id = equip3[equip] # 「裝備欄位擴充」處理
- else
- case equip # 裝備類型分歧
- when 0 ; quip_id = weapon_id # 武器
- when 1 ; quip_id = armor1_id # 盾
- when 2 ; quip_id = armor2_id # 頭部
- when 3 ; quip_id = armor3_id # 身體
- when 4 ; quip_id = armor4_id # 裝飾品
- end
- end
- #○ 裝備條件(裝備前判斷是否可以裝備)
- if Sword.equip62?(equip, id, 4) # 有裝備的情況
- return true if conditions62?(equip, id)
- end
- #○ 自動狀態(裝備之時附加狀態)
- if Sword.equip62?(equip, quip_id, 2) and quip_id != id # 解除狀態
- Sword.equipment62(equip, quip_id)[2].each{|i|
- state62.delete_at(state62.index(i))
- remove_state(i) unless state62.include?(i)}
- end
- if Sword.equip62?(equip, id, 2) and quip_id != id # 附加狀態
- Sword.equipment62(equip, id)[2].each{|i| add_state(i)}
- self.state62 += Sword.equipment62(equip, id)[2]
- end
- false
- end
- #-------------------------------------------------------------
- #● 檢查是否符合裝備條件處理
- def conditions62
- equip = sword62_sword3(1)
- actor = self.dup ; actor.equip3 = [] # 生成無裝備分身
- equip.each{|item| actor.conditions62?(0, item, 4)}
- end
- #-------------------------------------------------------------
- #● 獲取目前裝備的資料(獲取方式)
- def sword62_sword3(d = 0)
- case d
- when 0 ; $Sword[3] ? equip3 : [weapon_id, armor1_id, armor2_id, armor3_id, armor4_id]
- when 1 ; $Sword[3] ? equip3 : [$data_weapons[weapon_id], $data_armors[armor1_id],
- $data_armors[armor2_id], $data_armors[armor3_id], $data_armors[armor4_id]]
- end
- end
- end
- #=======================================
- #■ 裝備畫面、顯示瀏覽變更裝備的候補物品視窗
- class Window_EquipItem < Window_Selectable
- #-------------------------------------------------------------
- #● 獲取普通文字色彩
- alias sword62_normal_color normal_color unless defined?(sword62_normal_color) # unless $Sword_F12_Error[62]
- def normal_color ; @disabled ? disabled_color : sword62_normal_color ; end
- #-------------------------------------------------------------
- #● 項目的描繪(項目符號)
- alias sword62_draw_item draw_item
- def draw_item(index)
- #○ 裝備條件(將不符合條件的裝備顏色變為無效顏色)
- if Sword.equip62?(@equip_type, $Sword[3] ? @data[index] : @data[index].id, 4)
- @disabled = @actor.conditions62?(
- @equip_type, $Sword[3] ? @data[index] : @data[index].id)
- end
- sword62_draw_item(index) ; @disabled = false if @disabled
- end
- end
- #=======================================
- #■ 標題畫面
- class Scene_Title
- #-------------------------------------------------------------
- #● 新的遊戲
- alias sword62_command_new_game command_new_game
- def command_new_game
- #Sword.script = [] # 重設腳本字串資料 [裝備條件顏色判斷]
- sword62_command_new_game
- #○ 設定變更
- Sword::Sword62_Weapon.each_index do |i| if Sword::Sword62_Weapon[i]
- script, val = "", Sword::Sword62_Weapon[i]
- if val[0]
- val[0].each{|key, value|
- script += sprintf("$data_weapons[%i].%s = %s\n", i, key, value)}
- eval(script)
- end
- end ; end
- Sword::Sword62_Armor.each_index do |i| if Sword::Sword62_Armor[i]
- script, val = "", Sword::Sword62_Armor[i]
- if val[0]
- val[0].each{|key, value|
- script += sprintf("$data_armors[%i].%s = %s\n", i, key, value)}
- eval(script)
- end
- end ; end
- end
- end
- #=======================================
- #■ 處理裝備畫面的類
- class Scene_Equip
- #-------------------------------------------------------------
- #● 更新物品窗口
- alias sword62_update_item update_item
- def update_item
- #○ 裝備條件(中斷更換裝備的處理)
- item = $Sword[3] ? (@item_window.item ? @item_window.item : nil) :
- (@item_window.item ? @item_window.item.id : 0)
- disabled = @actor.equip_effect62(@right_window.index, item) if
- Input.trigger?(Input::C)
- disabled ? XPVX.se_buzzer : sword62_update_item
- end
- end
- #=======================================
- #■ 處理戰鬥畫面的類
- class Scene_Battle
- #-------------------------------------------------------------
- #● 主處理
- alias sword62_main main
- def main
- sword62_main
- #○ 自動狀態(戰鬥結束時恢復自動解除後的狀態)
- if Sword::Sword62_2Battle >= 1 ; $game_party.actors.each do |actor|
- equip = [actor.weapon_id, actor.armor1_id,
- actor.armor2_id, actor.armor3_id, actor.armor4_id]
- equip.each_index{|i| next unless equipment = Sword.equipment62(i, equip[i])
- next unless equipment[2]
- equipment[2].each{|ii| actor.add_state(ii)}}
- end ; end
- end
- end
- $Sword_F12_Error[62] = true # 腳本讀取完畢,打開F12除錯標誌功能
复制代码 详细使用方式:blog.yam.com/a870053jjkj/article/29783547 |
|