Ace 스크립트

Source Thread:  http://rmrk.net/index.php/topic,44618.0.html

  적이 드롭하는 아이템의 갯수를 확장하는 스크립트입니다.  일단 사용법은 스크립트의 헤더를 보기 바랍니다(같은 사람이 만든 VX용과 비슷함).


- 이 스크립트로 추가한 드롭 아이템은 몬스터 도감류 스크립트 사용시 도감에 등록되지 않을 수 있습니다.  또한 일부 스크립트와 호환성에 문제가 있을 수도 있습니다.

#==============================================================================
#    Drop Options [VXA]
#    Version: 1.0
#    Author: modern algebra (rmrk.net)
#    Date: December 19, 2011
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Description:
#
#    This script is very simple. All it does is allow you to make item drops a
#   little less static in some very simple ways: 
#
#     (a) you can make more than three drops for each enemy, so enemies can 
#       drop a greater variety of loot; 
#     (b) you can place a cap on the amount of these extra drops, so if you 
#       want a boss to have a 100% chance of dropping one of three items, but  
#       only one, then you can do that; 
#     (c) you can use percentile rather than denominator based drops; and
#     (d) you can randomize the amount of gold dropped by setting a range
#       within which it can fall.
#
#    If you are using any scripts that show loot drops of enemies (such as a 
#   bestiary), the effects of this script will not be correctly reflected in 
#   that without direct modifications. If you are using such a script, please 
#   feel free to post a link to it in this script's thread in RMRK and I will 
#   write a patch for it.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instructions:
#
#    Place this script above Main and below any other scripts in the Script 
#   Editor (F11).
#
#    All configuration happens in the note boxes of enemies. If you wish to add
#   a new drop, place this code in a note box for the enemy:
#
#      \drop[type id, probability]
#        type        : the type, either I (for Item), W (for Weapon), or A (for
#                     Armor).
#        id          : This is the ID of the item, weapon, or armor.
#        probability : This is the probability the item, weapon, or armor will
#                     drop. If you put a % sign after the number, then it will
#                     drop that percentage of the time. If not, then the number
#                     you put here will be the denominator, same as with 
#                     regular drops. The number has to be an integer.
#    EXAMPLES:
#      \drop[i1, 65%]
#          This will mean that the item with ID 1 (Potion by default) will drop
#         65% of the time when you kill this enemy.
#      \drop[a5, 8]
#          This will mean that the armor with ID 5 (Mithril Shield by default)
#         will drop 1/8 times you kill this enemy.
#
#    To set a maximum on the number of extra drops (note that this only applies
#   to extra drops set up in the note field - the two default drops are exempt 
#   from this cap), you can use the code:
#
#      \max_drop[x]
#         x : the maximum amount of extra drops that you want.
#   EXAMPLE:
#    If an enemy is set up like this:
#      \drop[w3, 100%]
#      \drop[w4, 100%]
#      \max_drop[1]
#    Then that means that the enemy will definitely drop either Weapon 3 
#   (Spear) or Weapon 4 (Short Sword), but will not drop both since 
#   the \max_drop code prevents it from dropping more than one of the notebox
#   drops.
#
#    To randomize the amount of gold an enemy drops, place the following code 
#   in its note box:
#
#      \gold[variance]
#        variance : this is an integer, and the amount of gold dropped is 
#          calculated by randomly selecting a number between 0 and this value,
#          and then adding it to the regular gold drop you set in the database.
#    EXAMPLE:
#      If an enemy has 5 gold set as its drop in the database, then the 
#     following note:
#        \gold[12]
#      will mean that the enemy will drop anywhere between 5 and 17 gold upon
#     its death.
#==============================================================================

$imported = {} unless $imported
$imported[:MADropOptions] = true

#==============================================================================
# ** RPG::Enemy
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - gold
#    new method - random_gold; extra_drops; max_drop
#==============================================================================

class RPG::Enemy
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Gold
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_drpopt_gold_2go9 gold
  def gold(*args, &block)
    (rand(ma_random_gold + 1)) + ma_drpopt_gold_2go9(*args, &block)
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Random Gold
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_random_gold
    (@ma_rand_gold = self.note[/\\GOLD\[(\d+)\]/i] != nil ? $1.to_i : 0) if !@ma_rand_gold
    @ma_rand_gold
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Extra Drops
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_extra_drops
    if @ma_extra_drops.nil?
      @ma_extra_drops = []
      self.note.scan(/\\DROP\[\s*([IWA])\s*(\d+),?\s*(\d+)(%?)\s*\]/i).each { |match|
        drop = RPG::Enemy::DropItem.new
        i = ['I', 'W', 'A'].index(match[0].upcase)
        drop.kind = i.nil? ? 0 : i + 1
        drop.data_id = match[1].to_i
        drop.denominator = match[3].empty? ? match[2].to_i : match[2].to_f
        @ma_extra_drops.push(drop)
      }
    end
    @ma_extra_drops
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Max Drops
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_max_drops
    if !@ma_max_drops
      @ma_max_drops = self.note[/\\MAX[ _]DROPS?\[(\d+)\]/i].nil? ? 999 : $1.to_i
    end
    @ma_max_drops
  end
end

#==============================================================================
# ** Game_Enemy
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - make_drop_items
#    new method - ma_make_extra_drops
#==============================================================================

class Game_Enemy
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Make Drop Items
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mlg_dropopt_makedrops_5rx9 make_drop_items
  def make_drop_items(*args, &block)
    # Run Original Method and add the new drops
    mlg_dropopt_makedrops_5rx9(*args, &block) + ma_make_extra_drops
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Make Extra Drops
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_make_extra_drops
    result = []
    enemy.ma_extra_drops.each { |di|
      if di.kind > 0 
        bool = di.denominator.is_a?(Integer) ? (rand * di.denominator < drop_item_rate) : (rand(100) < (di.denominator * drop_item_rate))
        result.push(item_object(di.kind, di.data_id)) if bool
      end
    }
    while result.size > enemy.ma_max_drops
      result.delete_at(rand(result.size))
    end
    result
  end
end





  • ?
    Bluesky(新) 2012.09.17 14:39
    사용 방법이 아래와 같나요?
    /drop i1, 100% ( 아이템 1번이 100%로 드롭된다 )
    /drop w1, 100% ( 무기 1번이 100%로 드롭된다 )
    /drop a1, 100% ( 방어구 1번이 100%로 드롭된다 )
    /max_drop[1] ( 위에 있는 3가지 중 1가지만 드롭된다 )
    /gold[100] ( 금 100이 드롭된다 )

    이것은 모두 적군 캐릭터 - 메모에 적는 것. 맞나요?
  • ?
    Alkaid 2012.09.18 07:59
    /max_drop[]은 한번에 드롭할 수 있는 최대 가짓수입니다. /gold[100]이라고 쓰면 랜덤으로 0~100사이의 금액이 추가로 들어오는 것을 의미하죠.
  • ?
    Rico 2016.01.09 17:02
    아래 블루스카이님의 댓글내용 명령어를 몬스터마다의 메모란에 /drop i1, 100% 이런식으로 쓰는건가..
    예컨대 슬라임 몬스터의 메모장에 /drop i1, 21% 를 쓰면 슬라임에게서 1번 아이템이 21%로 드랍인가요?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 5605
공지 RPG VX ACE 유용한 링크 모음 16 아방스 2012.01.03 29441
77 키입력 키 입력 확장 - 전체키 + 마우스입력 40 file 허걱 2012.12.15 5842
76 전투 VXAce 사이드뷰 스크립트 (번역) 23 아이미르 2012.12.10 6392
75 영상 EST - SOV Video Player ++ Script Conversion 1.2 by estriole 9 file Alkaid 2012.12.02 2777
74 기타 Icon_Character 8 file 허걱 2012.11.23 2622
73 아이템 VXAce 아이템 채집 스크립트 23 file 아이미르 2012.11.23 4086
72 기타 MOG-MEMORY CLEAR (v1.0) 1 file winspec 2012.11.18 1661
71 기타 MOG-XAS ANTI LAG (V1.0) 1 file winspec 2012.11.18 1698
70 기타 MOG-ANTI ANIMATION LAG (v1.0) 1 file winspec 2012.11.18 1569
69 기타 [스크립트 사용자용] Tag System 1 허걱 2012.11.12 2119
68 맵/타일 맵 이동시 이벤트(NPC) 위치 유지하기 (수정) 4 이브 2012.11.07 2163
67 스킬 VXAce 스킬레벨, 스킬장착 스크립트 11 file 아이미르 2012.11.01 3835
66 상점 VXAce SkillShop 스크립트 3 file 아이미르 2012.10.30 2909
65 기타 VXAce Common Exp 스크립트 6 file 아이미르 2012.10.29 2402
64 아이템 랜덤 아이템샵. 1 탐험가 2012.10.28 2323
63 스킬 VXAce 경험치 스킬습득 스크립트 3 file 아이미르 2012.10.27 2763
62 메시지 한국어 조사처리 스크립트 7 Ilike게임 2012.10.09 3646
61 전투 WhiteFlute: 자동전투 스크립트 3 file Alkaid 2012.09.20 3799
60 기타 ACE) 캐릭터 사전 by 77ER 19 77이알 2012.09.17 3971
» 전투 Drop Options by modern algebra 3 Alkaid 2012.09.17 2878
58 아이템 Tactics Ogre PSP Crafting System by Mr.Bubble 6 Alkaid 2012.09.17 3079
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 Next
/ 11