스크립트는 다음과 같고. 설명도 밑과 같습니다.
저거 에러는 없는 거 같은데
'어떻게' 적용시킵니까?;
어디에 몬스터 이름 넣고 어디에 아이템 써야 하는지 모르겠다는..
참 난 감하네요; 대답 부탁드립니다!
도입 후, 속성[ 훔친다 ](을)를 작성해, 스킬에 세트 해 주세요.
이것이 「훔친다」효과를 가지는 스킬이 됩니다.
(스킬 자체의) 명중율:[명중율]% 「훔친다」의 기본 성공율:[위력]%
(기본 성공율은, 아군의 손재주가 있음과 적의 민첩함에 의해 변동)
훔칠 수 있는 요소는
고블린 /I1 /W2
(와)과 같이, [적명] /{종류}{ID} 그렇다고 하는 서식에서 설정합니다.
(↑의 예에서는, 고블린으로부터 ID1의 아이템과 ID2의 무기를 훔칠 수 있다)
종류 에는, 이하의 5종류를 지정할 수 있습니다.(대문자·소문자는 묻지 않는다)
B :공난 I :아이템
W :무기 A :방어구
G :골드
입수 판정은 좌측에서 순서에 행해져 우측만큼 성공율이 낮아집니다.
( 「공난(B)」 「입수가 끝난 상태」 「실패」의 어느 쪽인가에 해당하면 우측으로 이행)
성공율은 1개 오른쪽으로 갈 때 마다 반이 됩니다.(1%미만은 되지 않는다)
즉, 기본 성공율이 80%라면 「2개목:40%」 「3개목:20%」…라고 하는 상태입니다.
이것은 /B 그리고 공난을 지정했을 경우도 동일한의로,
가고일 /B /B /I8
(와)과 같이 지정하면, 레어 아이템을 만드는 것이 가능합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆훔치는 - KGC_Steal◆
#_/----------------------------------------------------------------------------
#_/ 「훔친다」효과를 가지는 스킬을 작성합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#==============================================================================
# ★ 커스터마이즈 항목 ★
#==============================================================================
module KGC
# ◆성공시의 데미지 문자열
STE AL_SUCCESS_DMG = "Stole"
# ◆아무것도 가지고 있지 않을 때의 메세지
STEAL_EMPTY_MSG = "아무것도 가지고 있지 않다"
# ◆훔칠 수 없었을 때의 메세지
STEAL_FAIL_MSG = "훔칠 수 없었다"
# ◆돈을 훔쳤을 때의 메세지
# 【{gold}…금액 {unit}…금의 단위】
STEAL_GOLD_MSG = "「{gold}{unit}」훔쳤다!"
# ◆아이템을 훔쳤을 때의 메세지
# 【{item}…아이템명】
STEAL_ITEM_MSG = "「{item}」를 훔쳤다!"
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported["Steal"] = true
# 「훔친다」용속성
$game_special_elements["steal"] = $data_system.elements.index("훔친다")
#==============================================================================
# ■ RPG::Enemy
#================================ ==============================================
class RPG::Enemy
#--------------------------------------------------------------------------
# ● 이름의 취득
#--------------------------------------------------------------------------
alias name_KGC_Steal name
def name
return name_KGC_ Steal.split(/ /)[0]
end
#--------------------------------------------------------------------------
# ● 훔칠 수 있는 요소의 일람을 취득
#--------------------------------------------------------------------------
def steal_items
data = @name.split(/ /)
data.delete_at(0)
items = []
for i in 0...data.size
items[i] = data[i].split(/[/]([ABGIW])([0-9]+)?/i)
items[i].delete_at(0)
items[i][1] = items[i][1].to_i
end
return items
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==================================================================== ==========
# ■ Game_Battler (분할 정의 3)
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 스킬의 효과 적용
# user : 스킬의 사용자 (버틀러)
# skill : 스킬
#------- -------------------------------------------------------------------
alias skill_effect_KGC_Steal skill_effect
def skill_effect(user, skill)
# 「훔친다」속성을 가지고 있는 경우는 돌아온다
return if skill.element_set.include?($game_special_elements["steal"])
# 원래의 처리를 실행
return skill_effect_KGC_Steal(us er, skill)
end
#--------------------------------------------------------------------------
# ● 「훔친다」의 효과 적용
# user : 스킬의 사용자 (버틀러)
# skill : 스킬
#--------------------------------------------------------------------------
def steal_effect(user, skill)
# 위기 플래그를 클리어
self.critical = false
# 스킬의 효과 범위가 HP 1 이상의 아군으로, 자신의 HP 가 0,
# 또는 스킬의 효과 범위가 HP 0 의 아군으로, 자신의 HP 가 1 이상의 경우
if ((skill.scope == 3 || skill.scope == 4) && self.hp == 0) ||
((skill.scope == 5 || skill.scope == 6) && self.hp >= 1)
# 메소드 종료
return false
end
# 훔친 요소를 클리어
steal_item = nil
# 대상이 적, 한편 무적 상태의 경우
if self.states.include?($game_state_invincible) &&
(skill.scope == 1 || skill.scope == 2)
# 절대로 명중하지 않는다
hit_result = false
else
# 第一命中判定
hit_result = (rand(100) < skill.hit)
end
# 命中の場合
if hit_result
# 基本成功率を計算
steal_prob = skill.power * user.dex / self.agi / 100.0
# 属性修正
steal_prob *= elements_correct(skill.element_set)
steal_prob /= 100
items = $data_enemies[self.id].steal_items
# 盗める要素があるか判定
count = 0
for i in 0...items.size
if (items[i][0] == "B" || items[i][0] == "b") ||
self.stolen_items_flag[i]
next
end
count += 1
end
# 盗める要素がある場合
if count > 0
# 成功率設定(最初は基本値の2倍)
hit = steal_prob * 200
# 成功判定
for i in 0...items.size
# 成功率半減
hit = [hit / 2, 1].max
# 既に盗んでいる場合は次へ
next if self.stolen_items_flag[i]
item = items[i]
hit_result = (rand(100) < hit)
# 成功した場合
if hit_result
case item[0].upcase
when "B" # ブランク
self.stolen_items_flag[i] = true
next
when "I" # アイテム
steal_item = $data_items[item[1]].name
$game_party.gain_item(item[1], 1)
when "W" # 武器
steal_item = $data_weapons[item[1]].name
$game_party.gain_weapon(item[1], 1)
when "A" # 防具
steal_item = $data_armors[item[1]].name
$game_party.gain_armor(item[1], 1)
when "G" # ゴールド
steal_item = item[1]
$game_party.gain_gold(item[1])
end
# 成功フラグをオン
self.stolen_items_flag[i] = true
break
end
end
# 盗める要素が無い場合はそのまま
else
hit_result = true
end
end
# 成功の場合
if hit_result
# 何も持っていない場合
if steal_item == nil
self.damage = "Miss"
steal_item = "No Item"
# 成功した場合
else
self.damage = KGC::STEAL_SUCCESS_DMG
end
# ミスの場合
else
self.damage = "Miss"
steal_item = "Miss"
end
# メソッド終了(盗んだ要素を返す)
return steal_item
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :stolen_items_flag # 盗んだ要素フラグ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# troop_id : トループ ID
# member_index : トループメンバーのインデックス
#--------------------------------------------------------------------------
alias initialize_KGC_Steal initialize
def initialize(troop_id, member_index)
# 元の処理を実行
initialize_KGC_Steal(troop_id, member_index)
@stolen_items_flag = []
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Battle (分割定義 4)
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● スキルアクション 結果作成
#--------------------------------------------------------------------------
alias make_skill_action_result_KGC_Steal make_skill_action_result
def make_skill_action_result
# 元の処理を実行
make_skill_action_result_KGC_Steal
# 「盗む」属性を持っている場合
if @skill.element_set.include?($game_special_elements["steal"])
target = @target_battlers[0]
@steal_item = target.steal_effect(@active_battler, @skill)
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
#--------------------------------------------------------------------------
alias update_phase4_step5_KGC_Steal update_phase4_step5
def update_phase4_step5
# 元の処理を実行
update_phase4_step5_KGC_Steal
if @steal_item != nil
case @steal_item
when "No Item"
@help_window.set_text(KGC::STEAL_EMPTY_MSG, 1)
when "Miss"
@help_window.set_text(KGC::STEAL_FAIL_MSG, 1)
when Integer
text = KGC::STEAL_GOLD_MSG.dup
text.gsub!(/{gold}/i) {"#{@steal_item}"}
text.gsub!(/{unit}/i) {"#{$data_system.words.gold}"}
@help_window.set_text(text, 1)
else
text = KGC::STEAL_ITEM_MSG.dup
text.gsub!(/{item}/i) {"#{@steal_item}"}
@help_window.set_text(text, 1)
end
@steal_item = nil
@wait_count = 30
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
#--------------------------------------------------------------------------
alias update_phase4_step6_KGC_Steal update_phase4_step6
def update_phase4_step6
# ヘルプウィンドウを隠す
@help_window.visible = false
@help_window2.visible = false if $imported["HelpExtension"]
# 元の処理を実行
update_phase4_step6_KGC_Steal
end
end
저거 에러는 없는 거 같은데
'어떻게' 적용시킵니까?;
어디에 몬스터 이름 넣고 어디에 아이템 써야 하는지 모르겠다는..
참 난 감하네요; 대답 부탁드립니다!
도입 후, 속성[ 훔친다 ](을)를 작성해, 스킬에 세트 해 주세요.
이것이 「훔친다」효과를 가지는 스킬이 됩니다.
(스킬 자체의) 명중율:[명중율]% 「훔친다」의 기본 성공율:[위력]%
(기본 성공율은, 아군의 손재주가 있음과 적의 민첩함에 의해 변동)
훔칠 수 있는 요소는
고블린 /I1 /W2
(와)과 같이, [적명] /{종류}{ID} 그렇다고 하는 서식에서 설정합니다.
(↑의 예에서는, 고블린으로부터 ID1의 아이템과 ID2의 무기를 훔칠 수 있다)
종류 에는, 이하의 5종류를 지정할 수 있습니다.(대문자·소문자는 묻지 않는다)
B :공난 I :아이템
W :무기 A :방어구
G :골드
입수 판정은 좌측에서 순서에 행해져 우측만큼 성공율이 낮아집니다.
( 「공난(B)」 「입수가 끝난 상태」 「실패」의 어느 쪽인가에 해당하면 우측으로 이행)
성공율은 1개 오른쪽으로 갈 때 마다 반이 됩니다.(1%미만은 되지 않는다)
즉, 기본 성공율이 80%라면 「2개목:40%」 「3개목:20%」…라고 하는 상태입니다.
이것은 /B 그리고 공난을 지정했을 경우도 동일한의로,
가고일 /B /B /I8
(와)과 같이 지정하면, 레어 아이템을 만드는 것이 가능합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆훔치는 - KGC_Steal◆
#_/----------------------------------------------------------------------------
#_/ 「훔친다」효과를 가지는 스킬을 작성합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#==============================================================================
# ★ 커스터마이즈 항목 ★
#==============================================================================
module KGC
# ◆성공시의 데미지 문자열
STE AL_SUCCESS_DMG = "Stole"
# ◆아무것도 가지고 있지 않을 때의 메세지
STEAL_EMPTY_MSG = "아무것도 가지고 있지 않다"
# ◆훔칠 수 없었을 때의 메세지
STEAL_FAIL_MSG = "훔칠 수 없었다"
# ◆돈을 훔쳤을 때의 메세지
# 【{gold}…금액 {unit}…금의 단위】
STEAL_GOLD_MSG = "「{gold}{unit}」훔쳤다!"
# ◆아이템을 훔쳤을 때의 메세지
# 【{item}…아이템명】
STEAL_ITEM_MSG = "「{item}」를 훔쳤다!"
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported["Steal"] = true
# 「훔친다」용속성
$game_special_elements["steal"] = $data_system.elements.index("훔친다")
#==============================================================================
# ■ RPG::Enemy
#================================ ==============================================
class RPG::Enemy
#--------------------------------------------------------------------------
# ● 이름의 취득
#--------------------------------------------------------------------------
alias name_KGC_Steal name
def name
return name_KGC_ Steal.split(/ /)[0]
end
#--------------------------------------------------------------------------
# ● 훔칠 수 있는 요소의 일람을 취득
#--------------------------------------------------------------------------
def steal_items
data = @name.split(/ /)
data.delete_at(0)
items = []
for i in 0...data.size
items[i] = data[i].split(/[/]([ABGIW])([0-9]+)?/i)
items[i].delete_at(0)
items[i][1] = items[i][1].to_i
end
return items
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==================================================================== ==========
# ■ Game_Battler (분할 정의 3)
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 스킬의 효과 적용
# user : 스킬의 사용자 (버틀러)
# skill : 스킬
#------- -------------------------------------------------------------------
alias skill_effect_KGC_Steal skill_effect
def skill_effect(user, skill)
# 「훔친다」속성을 가지고 있는 경우는 돌아온다
return if skill.element_set.include?($game_special_elements["steal"])
# 원래의 처리를 실행
return skill_effect_KGC_Steal(us er, skill)
end
#--------------------------------------------------------------------------
# ● 「훔친다」의 효과 적용
# user : 스킬의 사용자 (버틀러)
# skill : 스킬
#--------------------------------------------------------------------------
def steal_effect(user, skill)
# 위기 플래그를 클리어
self.critical = false
# 스킬의 효과 범위가 HP 1 이상의 아군으로, 자신의 HP 가 0,
# 또는 스킬의 효과 범위가 HP 0 의 아군으로, 자신의 HP 가 1 이상의 경우
if ((skill.scope == 3 || skill.scope == 4) && self.hp == 0) ||
((skill.scope == 5 || skill.scope == 6) && self.hp >= 1)
# 메소드 종료
return false
end
# 훔친 요소를 클리어
steal_item = nil
# 대상이 적, 한편 무적 상태의 경우
if self.states.include?($game_state_invincible) &&
(skill.scope == 1 || skill.scope == 2)
# 절대로 명중하지 않는다
hit_result = false
else
# 第一命中判定
hit_result = (rand(100) < skill.hit)
end
# 命中の場合
if hit_result
# 基本成功率を計算
steal_prob = skill.power * user.dex / self.agi / 100.0
# 属性修正
steal_prob *= elements_correct(skill.element_set)
steal_prob /= 100
items = $data_enemies[self.id].steal_items
# 盗める要素があるか判定
count = 0
for i in 0...items.size
if (items[i][0] == "B" || items[i][0] == "b") ||
self.stolen_items_flag[i]
next
end
count += 1
end
# 盗める要素がある場合
if count > 0
# 成功率設定(最初は基本値の2倍)
hit = steal_prob * 200
# 成功判定
for i in 0...items.size
# 成功率半減
hit = [hit / 2, 1].max
# 既に盗んでいる場合は次へ
next if self.stolen_items_flag[i]
item = items[i]
hit_result = (rand(100) < hit)
# 成功した場合
if hit_result
case item[0].upcase
when "B" # ブランク
self.stolen_items_flag[i] = true
next
when "I" # アイテム
steal_item = $data_items[item[1]].name
$game_party.gain_item(item[1], 1)
when "W" # 武器
steal_item = $data_weapons[item[1]].name
$game_party.gain_weapon(item[1], 1)
when "A" # 防具
steal_item = $data_armors[item[1]].name
$game_party.gain_armor(item[1], 1)
when "G" # ゴールド
steal_item = item[1]
$game_party.gain_gold(item[1])
end
# 成功フラグをオン
self.stolen_items_flag[i] = true
break
end
end
# 盗める要素が無い場合はそのまま
else
hit_result = true
end
end
# 成功の場合
if hit_result
# 何も持っていない場合
if steal_item == nil
self.damage = "Miss"
steal_item = "No Item"
# 成功した場合
else
self.damage = KGC::STEAL_SUCCESS_DMG
end
# ミスの場合
else
self.damage = "Miss"
steal_item = "Miss"
end
# メソッド終了(盗んだ要素を返す)
return steal_item
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :stolen_items_flag # 盗んだ要素フラグ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# troop_id : トループ ID
# member_index : トループメンバーのインデックス
#--------------------------------------------------------------------------
alias initialize_KGC_Steal initialize
def initialize(troop_id, member_index)
# 元の処理を実行
initialize_KGC_Steal(troop_id, member_index)
@stolen_items_flag = []
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Battle (分割定義 4)
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● スキルアクション 結果作成
#--------------------------------------------------------------------------
alias make_skill_action_result_KGC_Steal make_skill_action_result
def make_skill_action_result
# 元の処理を実行
make_skill_action_result_KGC_Steal
# 「盗む」属性を持っている場合
if @skill.element_set.include?($game_special_elements["steal"])
target = @target_battlers[0]
@steal_item = target.steal_effect(@active_battler, @skill)
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
#--------------------------------------------------------------------------
alias update_phase4_step5_KGC_Steal update_phase4_step5
def update_phase4_step5
# 元の処理を実行
update_phase4_step5_KGC_Steal
if @steal_item != nil
case @steal_item
when "No Item"
@help_window.set_text(KGC::STEAL_EMPTY_MSG, 1)
when "Miss"
@help_window.set_text(KGC::STEAL_FAIL_MSG, 1)
when Integer
text = KGC::STEAL_GOLD_MSG.dup
text.gsub!(/{gold}/i) {"#{@steal_item}"}
text.gsub!(/{unit}/i) {"#{$data_system.words.gold}"}
@help_window.set_text(text, 1)
else
text = KGC::STEAL_ITEM_MSG.dup
text.gsub!(/{item}/i) {"#{@steal_item}"}
@help_window.set_text(text, 1)
end
@steal_item = nil
@wait_count = 30
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
#--------------------------------------------------------------------------
alias update_phase4_step6_KGC_Steal update_phase4_step6
def update_phase4_step6
# ヘルプウィンドウを隠す
@help_window.visible = false
@help_window2.visible = false if $imported["HelpExtension"]
# 元の処理を実行
update_phase4_step6_KGC_Steal
end
end