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 5110
공지 RPG VX ACE 유용한 링크 모음 16 아방스 2012.01.03 28925
57 액터 Actor Creation System by Tsukihime 4 Alkaid 2012.09.16 3552
56 오디오 Audio Pump Up: FMOD Ex by mikb89 2 Alkaid 2012.09.08 2071
55 메뉴 Syvkal's Menu Bars VX Ace 3 Alkaid 2012.09.08 4279
54 메뉴 Syvkal's Ring Menu VX Ace 2 Alkaid 2012.09.08 3812
53 기타 던전 자동생성 4 Alkaid 2012.09.08 3160
52 키입력 RGSS3 Input Full + UTF-8 Input by Cidiomar 1 Alkaid 2012.09.08 2434
51 전투 Transition EX 1.2 by MogHunter Alkaid 2012.09.07 2481
50 장비 VXAce 장비장착 스킬발동 스크립트 2 아이미르 2012.09.02 2400
49 기타 ACE) 오블리비언 락픽 구현 V0.5.2 7 file 77이알 2012.09.02 4811
48 장비 Ace 장비 착용의 제한 스크립트 11 아이미르 2012.09.01 2786
47 전투 Etude87_Custom_Max_Tp_Weapon ver.1.0 5 습작 2012.08.28 2661
46 아이템 VXAce 아이템 합성 스크립트 Ver 0.8 17 아이미르 2012.08.23 4000
45 메뉴 ace용 mog메뉴와 mog전투 10 file 꿈꾸는사람 2012.08.04 6052
44 그래픽 [ACE][BR] Awesome Light Effects 1.0(빛관련 스크립트) 37 file 꿈꾸는사람 2012.08.02 7013
43 기타 Sapphire Action System IV v4.4br(엑알 스크립트) 6 file 꿈꾸는사람 2012.08.02 4516
42 맵/타일 Etude87_Map_Remember_Ace ver.1.2 11 습작 2012.07.17 3516
41 기타 없는 것 같아서 올립니다. VX ACE 한계 돌파 스크립트입니다. 24 빙룡군 2012.07.07 5597
40 이름입력 전체키 + 조합한글 + 이름입력처리 변경 47 file 허걱 2012.07.04 8198
39 상점 VXAce 상점 스크립트 V0.9 17 아이미르 2012.06.29 5380
38 스킬 [VX/VX Ace] Skill_Update_System 10 file 허걱 2012.06.11 3995
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 Next
/ 11