http://www.gamebaker.com/rmxp/scripts/battle-items.htm
시전시 아이템을 소모하는 스킬을 만드는 스크립트입니다. 아이템을 사용하는 스킬을 만들 때는 DB에서 아이템 이름 뒤에 /S[스킬id]라고 써 주면 됩니다. (S는 항상 대문자) 물론 해당 아이템은 전투에서 사용가능해야 합니다.
#=============================================================================
# ** SG Skill Invoking Battle Items
#=============================================================================
# sandgolem
# Version 1
# 3.06.06
#=============================================================================
# Place S[#] in any of your item (not armor, weapon) names
# The item will use that skill when used in battle.
#=============================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# To use this script, copy it and insert it in a new section above "Main",
# under the default scripts, the SDK if you're using it, and anything else
# that rewrites this part of battle.
#
# SG Settings Control is required for this script! Must be above this.
#
# Have problems? You can leave me a message at:
# http://www.gamebaker.com/users/sandgolem
#
#=============================================================================
#--------------------------------------------------------------------------
# * SDK Log Script
#--------------------------------------------------------------------------
begin
SDK.log("SG Skill Invoking Battle Items", "sandgolem", 1, "3.06.06")
if SDK.state("SG Skill Invoking Battle Items") != true
@sg_skillinvoking_disabled = true
end
rescue
end
#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if !@sg_skillinvoking_disabled
class SG_Start
alias sandgolem_sinvoke_start start_game
def start_game
sandgolem_sinvoke_start
sg_skillinvoking_set
end
def sg_skillinvoking_set
if $sg_loaded != true
$data_sg['invoke items'] = {}
for i in 1...$data_items.size
if $data_items[i].name.include?('S')
$data_sg['invoke items'][i] = $data_items[i].name.slice(/\[S][([0-9]+)]/).to_s
$data_sg['invoke items'][i].gsub!(/\S[/,'')
$data_sg['invoke items'][i] = $data_sg['invoke items'][i].chop
$data_items[i].name.gsub!(/\[S][([0-9]+)]/,'')
end
end
end
end
end
if $sg_loaded != nil && $sg_loaded != true
sg_temp = SG_Start.new
sg_temp.sg_skillinvoking_set
sg_temp = nil
$sg_loaded.refresh
end
class Game_Battler
attr_accessor :sg_sinvoke
end
class Game_Actor < Game_Battler
alias sandgolem_sinvoke_actor_canuse skill_can_use?
def skill_can_use?(skill_id)
if @sg_sinvoke
return super
end
sandgolem_sinvoke_actor_canuse(skill_id)
end
end
class Scene_Battle
alias sandgolem_sinvoke_battle_skillact make_skill_action_result
def make_skill_action_result
sandgolem_sinvoke_battle_skillact
if @active_battler.sg_sinvoke
@active_battler.maxsp -= @active_battler.sg_sinvoke
@active_battler.sg_sinvoke = nil
end
end
alias sandgolem_sinvoke_battle_itemr make_item_action_result
def make_item_action_result
if $data_sg['invoke items'].has_key?(@active_battler.current_action.item_id)
@item = $data_items[@active_battler.current_action.item_id]
unless $game_party.item_can_use?(@item.id)
@phase4_step = 1
return
end
if @item.consumable
$game_party.lose_item(@item.id, 1)
end
@active_battler.current_action.item_id = nil
@active_battler.current_action.skill_id = $data_sg['invoke items'][@item.id].to_i
@active_battler.sg_sinvoke = $data_skills[@active_battler.current_action.skill_id].sp_cost
@active_battler.maxsp += @active_battler.sg_sinvoke
@active_battler.sp += @active_battler.sg_sinvoke
make_skill_action_result
return
end
sandgolem_sinvoke_battle_itemr
end
end
#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end
시전시 아이템을 소모하는 스킬을 만드는 스크립트입니다. 아이템을 사용하는 스킬을 만들 때는 DB에서 아이템 이름 뒤에 /S[스킬id]라고 써 주면 됩니다. (S는 항상 대문자) 물론 해당 아이템은 전투에서 사용가능해야 합니다.
#=============================================================================
# ** SG Skill Invoking Battle Items
#=============================================================================
# sandgolem
# Version 1
# 3.06.06
#=============================================================================
# Place S[#] in any of your item (not armor, weapon) names
# The item will use that skill when used in battle.
#=============================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# To use this script, copy it and insert it in a new section above "Main",
# under the default scripts, the SDK if you're using it, and anything else
# that rewrites this part of battle.
#
# SG Settings Control is required for this script! Must be above this.
#
# Have problems? You can leave me a message at:
# http://www.gamebaker.com/users/sandgolem
#
#=============================================================================
#--------------------------------------------------------------------------
# * SDK Log Script
#--------------------------------------------------------------------------
begin
SDK.log("SG Skill Invoking Battle Items", "sandgolem", 1, "3.06.06")
if SDK.state("SG Skill Invoking Battle Items") != true
@sg_skillinvoking_disabled = true
end
rescue
end
#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if !@sg_skillinvoking_disabled
class SG_Start
alias sandgolem_sinvoke_start start_game
def start_game
sandgolem_sinvoke_start
sg_skillinvoking_set
end
def sg_skillinvoking_set
if $sg_loaded != true
$data_sg['invoke items'] = {}
for i in 1...$data_items.size
if $data_items[i].name.include?('S')
$data_sg['invoke items'][i] = $data_items[i].name.slice(/\[S][([0-9]+)]/).to_s
$data_sg['invoke items'][i].gsub!(/\S[/,'')
$data_sg['invoke items'][i] = $data_sg['invoke items'][i].chop
$data_items[i].name.gsub!(/\[S][([0-9]+)]/,'')
end
end
end
end
end
if $sg_loaded != nil && $sg_loaded != true
sg_temp = SG_Start.new
sg_temp.sg_skillinvoking_set
sg_temp = nil
$sg_loaded.refresh
end
class Game_Battler
attr_accessor :sg_sinvoke
end
class Game_Actor < Game_Battler
alias sandgolem_sinvoke_actor_canuse skill_can_use?
def skill_can_use?(skill_id)
if @sg_sinvoke
return super
end
sandgolem_sinvoke_actor_canuse(skill_id)
end
end
class Scene_Battle
alias sandgolem_sinvoke_battle_skillact make_skill_action_result
def make_skill_action_result
sandgolem_sinvoke_battle_skillact
if @active_battler.sg_sinvoke
@active_battler.maxsp -= @active_battler.sg_sinvoke
@active_battler.sg_sinvoke = nil
end
end
alias sandgolem_sinvoke_battle_itemr make_item_action_result
def make_item_action_result
if $data_sg['invoke items'].has_key?(@active_battler.current_action.item_id)
@item = $data_items[@active_battler.current_action.item_id]
unless $game_party.item_can_use?(@item.id)
@phase4_step = 1
return
end
if @item.consumable
$game_party.lose_item(@item.id, 1)
end
@active_battler.current_action.item_id = nil
@active_battler.current_action.skill_id = $data_sg['invoke items'][@item.id].to_i
@active_battler.sg_sinvoke = $data_skills[@active_battler.current_action.skill_id].sp_cost
@active_battler.maxsp += @active_battler.sg_sinvoke
@active_battler.sp += @active_battler.sg_sinvoke
make_skill_action_result
return
end
sandgolem_sinvoke_battle_itemr
end
end
#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end