아이템사용을 클래스 마다 한정시키는 기능을 추가합니다
예를들어 전사는 포션을 사용할 수 없다 이런식으로 설정할 수가 있습니다
또 설정하지 않은 아이템은 모두사용 가능하게 설정되있습니다.
#---------------여기서부터
# (XRXS39)아이템 사용자 클래스 한정 built20060210
# by Tetra-Z
#
# 아이템을 사용할 수 있는 클래스를 한정합니다.
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# ○ 클래스에 의한 아이템 사용자의 한정 데이타베이스
#--------------------------------------------------------------------------
def item_user_class_limitation(item_id)
# 아이템ID에 의한 클래스 한정
case item_id
#========================================================================
# □ 커스터마이즈 포인트
#========================================================================
when 1
return [2, 8]
#
# 기술 형식:
#
# when 수치(Numeric) - 아이템ID
# return 배열(Array) - 클래스ID배열
#
# 기술예:「아이템ID 12(디 스펠 허브) (을)를
# 클래스ID 7(와)과8(쿠레릭크와 메이지)만 취급해 가능하게 한다」
# when 12
# return [7, 8]
#
#
#
# when 1
# return [1]
# when 4
# return [5]
# (와)과 같이, 몇행이나 기술 가능.
#
# 또↓, [] (은)는 「모든 클래스가 사용 가능」을 의미한다.
#
#======================================= 커스터마이즈 포인트 여기까지 =┘
end
# 그 외
return []
end
#--------------------------------------------------------------------------
# ● 아이템의 사용 가능 판정
# item_id : 아이템 ID
#--------------------------------------------------------------------------
alias tetraz_7_item_can_use? item_can_use?
def item_can_use?(item_id)
# 초기화
judge = false
a = $game_temp.now_item_user
act = ($game_temp.in_battle and $game_temp.now_item_selecting) ? [a] : $game_party.actors
for actor in act # 본인이or멤버내에
# 사용 가능한 행동 가능자가 있다
if (actor.follow_item_use_condition?(item_id) and !(actor.dead?))
judge |= true
break
end
end
# 귀환시킨다
return (judge and tetraz_7_item_can_use?(item_id))
end
end
#==============================================================================
# ■ Game_Temp
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
# ● 공개 인스턴스 변수
#--------------------------------------------------------------------------
attr_accessor :now_item_user # 아이템 사용자
attr_accessor :now_item_selecting # 아이템 셀렉트중인가
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 아이템의 사용 조건에 따를까?(액터 판정)
# item_id : 아이템 ID
#--------------------------------------------------------------------------
def follow_item_use_condition?(item_id)
a = $game_party.item_user_class_limitation(item_id)
return (a == [] or a.include?(self.class_id))
end
end
#==============================================================================
# ■ Scene_Item
#==============================================================================
class Scene_Item
alias tetraz7_update_target update_target
def update_target
tetraz7_update_target
# C 버튼이 밀렸을 경우
if Input.trigger?(Input::C)
# 전투 불능 해제 아이템 사용에 의해 사용 가능 상황이 변화할 가능성이 있으므로
@item_window.refresh
end
end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● 메인 처리
#--------------------------------------------------------------------------
alias tetraz7_main main
def main
# 만일을 위해 전투 개시시와 종료시에 스윗치 리셋트
$game_temp.now_item_selecting = false
tetraz7_main
$game_temp.now_item_selecting = false
end
#--------------------------------------------------------------------------
# ● 아이템 선택 개시
#--------------------------------------------------------------------------
alias tetraz7_start_item_select start_item_select
def start_item_select
$game_temp.now_item_user = $game_party.actors[@actor_index] if $game_temp.in_battle
$game_temp.now_item_selecting = true
tetraz7_start_item_select
end
#--------------------------------------------------------------------------
# ● 아이템 선택 종료
#--------------------------------------------------------------------------
alias tetraz7_end_item_select end_item_select
def end_item_select
$game_temp.now_item_user = 0
$game_temp.now_item_selecting = false
tetraz7_end_item_select
end
end
#--------------끝
사용법
주석에 보면 다 나와있지만.. 모르실 수도 있으니
우선 스크립트 20번째줄에 가시면
#========================================================================
# □ 커스터마이즈 포인트
#========================================================================
when 1
return [2, 8]
이렇게 있습니다..
이뜻은 1번아이템을 2번과,8번 클래스만 사용가능 하게 설정되있는것입니다.
이것을 계속 만드실 수도 있고 사용 가능한 클래스를 더 추가시킬 수도 있습니다.
예를들어
#========================================================================
# □ 커스터마이즈 포인트
#========================================================================
when 1
return [2, 8]
when 2
return [2, 8, 5]
when 7
return [1, 5, 3, 7]
이런식으로요^^
출처는 수수께끼의 정사면체입니다
예를들어 전사는 포션을 사용할 수 없다 이런식으로 설정할 수가 있습니다
또 설정하지 않은 아이템은 모두사용 가능하게 설정되있습니다.
#---------------여기서부터
# (XRXS39)아이템 사용자 클래스 한정 built20060210
# by Tetra-Z
#
# 아이템을 사용할 수 있는 클래스를 한정합니다.
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# ○ 클래스에 의한 아이템 사용자의 한정 데이타베이스
#--------------------------------------------------------------------------
def item_user_class_limitation(item_id)
# 아이템ID에 의한 클래스 한정
case item_id
#========================================================================
# □ 커스터마이즈 포인트
#========================================================================
when 1
return [2, 8]
#
# 기술 형식:
#
# when 수치(Numeric) - 아이템ID
# return 배열(Array) - 클래스ID배열
#
# 기술예:「아이템ID 12(디 스펠 허브) (을)를
# 클래스ID 7(와)과8(쿠레릭크와 메이지)만 취급해 가능하게 한다」
# when 12
# return [7, 8]
#
#
#
# when 1
# return [1]
# when 4
# return [5]
# (와)과 같이, 몇행이나 기술 가능.
#
# 또↓, [] (은)는 「모든 클래스가 사용 가능」을 의미한다.
#
#======================================= 커스터마이즈 포인트 여기까지 =┘
end
# 그 외
return []
end
#--------------------------------------------------------------------------
# ● 아이템의 사용 가능 판정
# item_id : 아이템 ID
#--------------------------------------------------------------------------
alias tetraz_7_item_can_use? item_can_use?
def item_can_use?(item_id)
# 초기화
judge = false
a = $game_temp.now_item_user
act = ($game_temp.in_battle and $game_temp.now_item_selecting) ? [a] : $game_party.actors
for actor in act # 본인이or멤버내에
# 사용 가능한 행동 가능자가 있다
if (actor.follow_item_use_condition?(item_id) and !(actor.dead?))
judge |= true
break
end
end
# 귀환시킨다
return (judge and tetraz_7_item_can_use?(item_id))
end
end
#==============================================================================
# ■ Game_Temp
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
# ● 공개 인스턴스 변수
#--------------------------------------------------------------------------
attr_accessor :now_item_user # 아이템 사용자
attr_accessor :now_item_selecting # 아이템 셀렉트중인가
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 아이템의 사용 조건에 따를까?(액터 판정)
# item_id : 아이템 ID
#--------------------------------------------------------------------------
def follow_item_use_condition?(item_id)
a = $game_party.item_user_class_limitation(item_id)
return (a == [] or a.include?(self.class_id))
end
end
#==============================================================================
# ■ Scene_Item
#==============================================================================
class Scene_Item
alias tetraz7_update_target update_target
def update_target
tetraz7_update_target
# C 버튼이 밀렸을 경우
if Input.trigger?(Input::C)
# 전투 불능 해제 아이템 사용에 의해 사용 가능 상황이 변화할 가능성이 있으므로
@item_window.refresh
end
end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● 메인 처리
#--------------------------------------------------------------------------
alias tetraz7_main main
def main
# 만일을 위해 전투 개시시와 종료시에 스윗치 리셋트
$game_temp.now_item_selecting = false
tetraz7_main
$game_temp.now_item_selecting = false
end
#--------------------------------------------------------------------------
# ● 아이템 선택 개시
#--------------------------------------------------------------------------
alias tetraz7_start_item_select start_item_select
def start_item_select
$game_temp.now_item_user = $game_party.actors[@actor_index] if $game_temp.in_battle
$game_temp.now_item_selecting = true
tetraz7_start_item_select
end
#--------------------------------------------------------------------------
# ● 아이템 선택 종료
#--------------------------------------------------------------------------
alias tetraz7_end_item_select end_item_select
def end_item_select
$game_temp.now_item_user = 0
$game_temp.now_item_selecting = false
tetraz7_end_item_select
end
end
#--------------끝
사용법
주석에 보면 다 나와있지만.. 모르실 수도 있으니
우선 스크립트 20번째줄에 가시면
#========================================================================
# □ 커스터마이즈 포인트
#========================================================================
when 1
return [2, 8]
이렇게 있습니다..
이뜻은 1번아이템을 2번과,8번 클래스만 사용가능 하게 설정되있는것입니다.
이것을 계속 만드실 수도 있고 사용 가능한 클래스를 더 추가시킬 수도 있습니다.
예를들어
#========================================================================
# □ 커스터마이즈 포인트
#========================================================================
when 1
return [2, 8]
when 2
return [2, 8, 5]
when 7
return [1, 5, 3, 7]
이런식으로요^^
출처는 수수께끼의 정사면체입니다