돈으로 주고 스킬북 사는 시스템을 구현하던 중
직업제한이 필요한 것 같아서 구글링으로 찾은 스크립트인데요
사용은 문제가 없는데
다른 것 사용해서 튕기는지는 실험하지 못했습니다만
전투 중에 힐을 하면 튕기네요
Script 'item class' line 113: NoMethodError occurred.
undefined method 'include?' for nil:NilClass
요렇게 뜨면서 꺼집니다.
뭔 말인진 알겠는데 스크립트 건드릴 줄도 모르고
어떻게 고치는 줄도 모르겠어서 질문드립니다.
아무리 구글에 검색해도 오류나 따로 나오는 건 없네요
밑은 스크립트 전문입니다.
#==============================================================================
# Szyu's Item's Class Restriction
# Version 1.2
# By Szyu
#
# About:
# Easily specify items, weapons and armors, which can only be used/equipped
# by certain classes
#
# Instructions:
# - Place below "▼ Materials" but above "▼ Main Process".
#
# How to Use:
# - An item's note have to contain one of these:
# <classes: x> # This will allow specified classes to use this item
# <!classes: x> # This will forbit specified classes to use this item
#
# Seperate multiple classes with ','!
# Allowed Database Items, which can be restricted by this script:
# - Items
# - Weapons
# - Armors
#
# If There is none of those tags in the items note, every class is permitted to
# use or equip this item
#
#
# Requires:
# - RPG Maker VX Ace
#
# Terms of Use:
# - Free for commercal and non-commercial use. Please list me
# in the credits to support my work.
#
#
# Changelog:
# - Same syntax can now be used to restrict for actors:
# <actors: x>
# <!actors: x>
# - Added Use Restriction for battles too. Restricted classes and actors can no
# longer use restricted items in battle
#
#
#
# Pastebin:
# http://adf.ly/rYIZm
#
#
#==============================================================
# * Game_BattlerBase
#==============================================================
class Game_BattlerBase
alias sz_iucr_equippable? equippable?
def equippable?(item)
return false unless item.is_a?(RPG::EquipItem)
return false if self.is_a?(Game_Actor) &&
(item.forbid_classes.include?(self.class_id) || item.forbid_actors.include?(self.id))
return sz_iucr_equippable?(item)
end
end
#==============================================================
# * Game_Battler
#==============================================================
class Game_Battler < Game_BattlerBase
alias sz_iucr_item_test item_test
def item_test(user, item)
return false if item.is_a?(RPG::Item) &&
(item.forbid_classes.include?(self.class_id) || item.forbid_actors.include?(self.id))
return sz_iucr_item_test(user, item)
end
end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#==============================================================
# * Initialize BaseItems
#==============================================================
module DataManager
class << self
alias load_db_iucr_sz load_database
end
def self.load_database
load_db_iucr_sz
load_iucr_items
end
def self.load_iucr_items
groups = [$data_items, $data_weapons, $data_armors]
for group in groups
for obj in group
next if obj.nil?
obj.load_iucr_notetags_sz
end
end
end
end
#==============================================================================
# ** Window_BattleActor
#------------------------------------------------------------------------------
# This window is for selecting an actor's action target on the battle screen.
#==============================================================================
class Window_BattleActor < Window_BattleStatus
#--------------------------------------------------------------------------
# * Get Activation State of Selection Item
#--------------------------------------------------------------------------
def current_item_enabled?
return false if !BattleManager.actor.input.item.is_a?(RPG::UsableItem) ||
BattleManager.actor.input.item.forbid_classes.include?(BattleManager.actor.input.subject.class_id) ||
BattleManager.actor.input.item.forbid_actors.include?(BattleManager.actor.input.subject.id)
return true
end
end
#==============================================================
# * Content of Recycling Items
#==============================================================
class RPG::BaseItem
attr_accessor :forbid_classes
attr_accessor :forbid_actors
def load_iucr_notetags_sz
@forbid_classes = []
@forbid_actors = []
self.note.split(/[\r\n]+/).each do |line|
# Forbid Classes
if line =~ /<classes:([\d+,?\s*]+)>/i
$data_classes.each do |cl|
@forbid_classes.push(cl.id) if cl
end
$1.scan(/\s*,?\d+,?\s*/i).each do |cl|
@forbid_classes.delete(cl.to_i)
end
elsif line =~ /<!classes:([\d+,?\s*]+)>/i
$1.scan(/\s*,?\d+,?\s*/i).each do |cl|
@forbid_classes.push(cl.to_i)
end
# Forbid Actors
elsif line =~ /<actors:([\d+,?\s*]+)>/i
$data_actors.each do |ac|
@forbid_actors.push(ac.id) if ac
end
$1.scan(/\s*,?\d+,?\s*/i).each do |ac|
@forbid_actors.delete(ac.to_i)
end
elsif line =~ /<!actors:([\d+,?\s*]+)>/i
$1.scan(/\s*,?\d+,?\s*/i).each do |ac|
@forbid_actors.push(ac.to_i)
end
end
end
end
end
- 질문할 내용이 이 게시판이나 강좌에 이미 있는지 확인합니다.
- 하나의 게시물에는 하나의 질문만 합니다.
- 제목은 질문의 핵심 내용으로 작성합니다.
- 질문 내용은 답변자가 쉽게 이해할 수 있도록 최대한 상세하게 작성합니다.
- 스크립트의 전문이 필요할 경우 txt 파일 등으로 첨부해 주시기 바랍니다.
- 답변받은 게시물은 삭제하지 않습니다.
- 답변이 완료된 경우 해당 답변해주신 분들께 감사의 댓글을 달아줍니다.
- 처음 오신 분들은 공지 게시물을 반드시 읽어주세요!
※ 미준수시 사전경고 없이 게시물을 삭제합니다.