기타

[스크립트 사용자용] Tag System

by 허걱 posted Nov 12, 2012
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

# 개인적으로 사용중인 스크립트입니다.

# 스크립트 사용자를 대상으로 공개 배포합니다. [중급이상 권장]

# 응용은 각자 알아서 하시고 추가 질문은 안받겠습니다.

# 스크립트 내용의 수정/추가 등은 능력껏 하시고 그에따른 책임은 각자 알아서...@_@

 

 

# Tag System
# BaseItem을 포함하는 클래스에 적용
# [액터, 직업, 스킬, 아이템, 무기, 방어구, 적 케릭터, 상태]
#
# 적용되는 클래스의 메모 부분에 <TAG:A,B,C> 의 형식으로 태그를 지정해줌
# get_list_tag(list, key) 를 사용해서 list 중 key를 태그로 포함하는 목록 취득가능

 

#==============================================================================
# ■ HG_TAG_SYSTEM
#------------------------------------------------------------------------------
#  TAG System 모듈(HG_TAG_SYSTEM)과 그 내부 클래스(Tag) 정의
#==============================================================================
module HG_TAG_SYSTEM
  class Tag
    #--------------------------------------------------------------------------
    # ● 초기화
    #--------------------------------------------------------------------------
    def initialize
      @data = []
    end
    #--------------------------------------------------------------------------
    # ● key 를 태그로 갖고 있는지 확인
    #--------------------------------------------------------------------------
    def check(key)
      @data.include?(key)
    end
    #--------------------------------------------------------------------------
    # ● key 를 태그로 추가 (중복방지)
    #--------------------------------------------------------------------------
    def add(key)
      @data.push(key) unless check(key)
    end
    #--------------------------------------------------------------------------
    # ● key 를 태그에서 제거
    #--------------------------------------------------------------------------
    def del(key)
      @data.delete(key)
    end
  end
end

#==============================================================================
# ■ RPG::BaseItem
#------------------------------------------------------------------------------
#  RPG::BaseItem 의 내용 수정
#==============================================================================
class RPG::BaseItem
  alias tag_system_initialize initialize
  #--------------------------------------------------------------------------
  # ● 초기화 정의 수정/추가
  #--------------------------------------------------------------------------
  def initialize
    tag_system_initialize
    initialize_tag
  end
  #--------------------------------------------------------------------------
  # ● 태그 내용 초기화
  #--------------------------------------------------------------------------
  def initialize_tag
    @tag = HG_TAG_SYSTEM::Tag.new
    @note.each_line {|line|
    if line =~ /<TAG:(.*)>/
      $1.split(/,/).each {|i| @tag.add(i) }
    end
    }
  end
  #--------------------------------------------------------------------------
  # ● 태그 리스트 취득
  #--------------------------------------------------------------------------
  def tag
    initialize_tag unless @tag
    @tag
  end
end

 

#==============================================================================
# ■ get_list_tag(list, key)
#   스크립트 부분에 사용
#------------------------------------------------------------------------------
#  list 중에서 key 를 태그로 갖는 아이템의 목록을 얻는다.
#==============================================================================
def get_list_tag(list, key)
  list.select {|item| item.tag.check(key) rescue next }
end

 

 

 

# presented by 허걱

Who's 허걱

?

공개된 사이트에서 퍼온 자료를 제외한(이 경우는 글에 출처를 남깁니다.)

제가 올린 모든 글과 자작 자료에대해 무단으로 퍼가는것을 금지합니다.