View difference between Paste ID: cGMpFPJg and 08eQ7jwf
SHOW: | | - or go back to the newest paste.
1
=begin
2-
                            Flips Actor Equip Restrictions
2+
                            Flips Equip Restrictions
3-
                                       v1.0
3+
                                     v1.1
4
5
Hey guys and girls ;D
6
7
this is one of my first usefull (I hope so) scripts on VX-Ace.
8
This script helps you to restrict certain armors and weapons for actors.
9
I know it could be done over the Equip Types but why to set up for a
10
single Axe a new Equiptype because only 1 actor is using it? 
11
Not needed anymore with this script!
12
13
Set a notetag in the equipment which should be restricted for certain actors
14
and it will work (:
15
16
How to use it?
17
Write in the notetag of a weapon or armor:
18
19
<restrict_actor: x>
20
21
or
22
23
<restrict_actor: x,x>
24
25
As an example:
26
27
if you want that the weapon with the ID 1 won't be available for the actor with
28
the ID 5 then do this: <restrict_actor: 5>
29
if actor 5, 7, 10 and 12 shouldn't be able to use the weapon then set it up like
30
this: <restrict_actor: 5,7,10,12>
31
32
I hope you understand what I mean (:
33
34
Version History:
35
36
v1.1
37
- fixed a huge bug, which would cause an error if the actor has some equipments
38
  equiped from beginning.
39
40
v1.0
41
- Got this Script to work :D
42
- Allows to restrict certain actors certain weapons from their equipment type
43
44
Credits goes to:
45
46
FlipelyFlip for creating the Equip Restrictions
47
MephistoX for the NoteTag Reading Scriptpart I used
48
49
=end
50
51
#=============================================================================
52
# ONLY EDIT IF YOU KNOW WHAT YOU DO!!
53
#=============================================================================
54
module RPG
55
  class Weapon
56
    def actor_restrict
57-
class Game_BattlerBase
57+
58
    end
59-
  # ● 装備可能判定
59+
60
  class Armor
61-
  def equippable?(item)
61+
62
      NoteReader.get_data(note, 'restrict_actor')
63-
    return false if equip_type_sealed?(item.etype_id)
63+
64
  end
65
end
66-
    return equip_wtype_ok?(item.wtype_id) if item.is_a?(RPG::Weapon)
66+
67-
    return equip_atype_ok?(item.atype_id) if item.is_a?(RPG::Armor)
67+
68-
    return false
68+
# ■ Window_EquipItem
69
#------------------------------------------------------------------------------
70
#  装備画面で、装備変更の候補となるアイテムの一覧を表示するウィンドウです。
71
#==============================================================================
72
73
class Window_EquipItem < Window_ItemList
74
  #--------------------------------------------------------------------------
75
  # ● アイテムをリストに含めるかどうか
76
  #--------------------------------------------------------------------------
77
  def include?(item)
78
    return true if item == nil
79
    return false unless item.is_a?(RPG::EquipItem)
80
    return false if @slot_id < 0
81
    return false if item.etype_id != @actor.equip_slots[@slot_id]
82
    return @actor.equippable?(item)
83
    return false if item.is_a?(RPG::Weapon) and w_act_check(item.id).include?(actor.id)
84
    return false if item.is_a?(RPG::Armor) and a_act_check(item.id).include?(actor.id)
85
  end
86
  #--------------------------------------------------------------------------
87
  # ● checks if actor can equip the weapon
88
  #--------------------------------------------------------------------------
89
  def w_act_check(item)
90
    a = 0
91
    acties = []
92
    for weaponry in $data_weapons[item].actor_restrict
93
      a += 1
94
      acties[a] = weaponry
95
    end
96
  end
97
  #--------------------------------------------------------------------------
98
  # ● checks if actor can equip the armor
99
  #--------------------------------------------------------------------------
100
  def a_act_check(item)
101
    a = 0
102
    acties = []
103
    for armory in $data_armors[item].actor_restrict
104
      a += 1
105
      acties[a] = armory
106
    end
107
  end
108
end
109
110
#==============================================================================
111
# ■ Module NoteReader                                                                      # Author: MephistoX
112
#------------------------------------------------------------------------------
113
# Description:
114
# ------------
115
# Read and Retrieve Information from notes based on a identifier
116
# It will return 'string' type data, but also incldues some defined returners
117
# to return data in type like symbols, strings, arrays, etc to make easy to
118
# read the data after.
119
#==============================================================================
120
121
module NoteReader
122
  #-------------------------------------------------------------------------
123
  #   Name        : Get Parameter
124
  #   Info        : Returns a String with a parameter
125
  #   Author    : MephistoX
126
  #   Call Info : note to read, parameter
127
  #-------------------------------------------------------------------------
128
  def self.get_parameter(note, parameter)
129
        # Get data to process
130
        dc_data = note.downcase.split("\r\n")
131
        data    = note.split("\r\n")
132
        # Set Result
133
        result = nil
134
        # Pass Through each data line
135
        # If Line Text include parameter
136
        dc_data.each_index do |i|
137
          next if dc_data[i].start_with?('#')
138
          # If Line Text include parameter
139
          if dc_data[i].include?(parameter.downcase)
140
                # Set Result as second element of line separated by ':'
141
                result = data[i].split(':')[1]
142
                # Break Loop
143
                break
144
          end
145
        end
146
        # Return Result to Sym if Transform
147
        return result
148
  end
149
  #-------------------------------------------------------------------------
150
  #   Name        : Get Data
151
  #   Info        : Get Checked and Proccessed data
152
  #   Author    : MephistoX
153
  #   Call Info : text, parameter to search and type
154
  #-------------------------------------------------------------------------
155
  def self.get_data(text, parameter)
156
        # Set String
157
        string = get_parameter(text, parameter)
158
        # Set Result and Proccess it
159
        result = process_result(string)
160
        # Return Result
161
        result
162
  end
163
  #-------------------------------------------------------------------------
164
  #   Name        : Proccess Result
165
  #   Info        : Proccess the result string and transform into the data
166
  #   Author    : MephistoX
167
  #   Call Info : string & type
168
  #-------------------------------------------------------------------------
169
  def self.process_result(string)
170
        # Return nil if no string
171
        return nil if string.nil?
172
        # Delete string whitespaces
173
        r_string = string.strip
174
        # Return Array of Symbols if type is sarray
175
        return to_array(r_string)
176
  end
177
  #-------------------------------------------------------------------------
178
  #   Name        : To Array
179
  #   Info        : Transform string into an array with symbols
180
  #   Author    : MephistoX
181
  #   Call Info : String, transform type (:sym or :int)
182
  #-------------------------------------------------------------------------
183
  def self.to_array(string)
184
        # Set Empty Array
185
        array = []
186
        # Get Items
187
        sitems = string.strip.split(',')
188
        # Pass Through each item
189
        sitems.each do |item|
190
          # Push String into integer if transform type is to integer
191
          array << item.to_i
192
        end
193
        # Return Array
194
        array
195
  end
196
end