.
ยังไม่ค่อยเข้าใจคำถามเท่าไหร่ครับ แต่ถ้าให้ตีความ ต้องการตรวจสอบเงื่อนไขว่ามีการใส่อาวุธอะไรบางอย่างในช่องที่ 1 หรือช่องที่ 2 อยู่หรือเปล่า ใช่ไหมครับ
เนื่องจากบอกวิธีการหาแบบดิบๆ อาจจะยืดยาวแก้เยอะวุ่นวาย ขอเขียนโค้ดสำเร็จรูปให้นำไปใช้เลยแล้วกันครับ
Copy โค้ดด้านล่างนี้ไปวางไว้ในส่วน Materials ในหน้าจอ Script Editor
[shcode=rails]
class Game_Actor < Game_Battler
alias_method :tmp_method_missing, :method_missing
def method_missing(method_name, *args)
matches = method_name.to_s.match(/^equip_weapon(_(\d+))?(_slot_(1|2))?\?$/)
if matches
weapon_id = matches[2] ? matches[2].to_i : nil
slot = matches[4] ? matches[4].to_i : nil
if slot
if slot == 1
return !self.equips[0].nil? && (weapon_id.nil? || self.equips[0].id == weapon_id)
else
return !self.equips[1].nil? &&
(weapon_id.nil? || self.equips[1].id == weapon_id) && self.dual_wield?
end
else
if weapon_id.nil?
return self.weapons.length > 0
end
return (!self.equips[0].nil? && self.equips[0].id == weapon_id) ||
(!self.equips[1].nil? && self.equips[1].id == weapon_id && self.dual_wield?)
end
end
tmp_method_missing(method_name, args)
end
end
[/shcode]
วิธีใช้
สร้างเหตุการณ์ขึ้นมา เลือก Condition Branch ไปที่ Tab ที่ 4 เลือก Script พิมพ์คำสั่งต่อไปนี้
กำหนดให้
X = ลำดับตัวละครในฐานข้อมูลหน้า Actors
Y = ลำดับอาวุธในฐานข้อมูลหน้า Weapons
Z = ช่องของอาวุธ แบ่งเป็น ช่องที่ 1 และช่องที่ 2
กรณีที่ต้องการตรวจสอบว่าสวมใส่อาวุธใดๆ ก็ตามอยู่หรือไม่
$game_actors[X].equip_weapon?
กรณีที่ต้องการตรวจสอบว่าสวมใส่อาวุธตามลำดับที่ระบุหรือไม่
$game_actors[X].equip_weapon_Y?
กรณีที่ต้องการตรวจสอบว่าสวมใส่อาวุธใดๆ ก็ตามในช่องทีระบุหรือไม่
$game_actors[X].equip_weapon_slot_Z?
กรณีที่ต้องการตรวจสอบว่าสวมใส่อาวุธตามลำดับที่ระบุและอยู่ในช่องทีระบุหรือไม่
$game_actors[X].equip_weapon_Y_slot_Z?
ตัวอย่าง
$game_actors[5].equip_weapon_slot_2?
ตัวละครลำดับที่ 5 ใส่อาวุธในช่องที่ 2 อยู่หรือไม่ (ใส่อะไรก็ได้ขอให้เป็นอาวุธ)
$game_actors[7].equip_weapon_37_slot_2?
ตัวละครลำดับที่ 7 ใส่อาวุธลำดับที่ 37 ช่องที่ 2 อยู่หรือไม่
หมายเหตุ- ในการตรวจสอบเครื่องสวมใส่ช่องที่ 2 หากไม่ได้เป็นอาวุธ (ตัวละครที่ใส่อาวุธได้มือเดียว) จะถือว่าไม่ได้สวมใส่อาวุธ และคือค่าเท็จออกมา
- เขียนแบบไม่ได้ตรวจสอบเป็นเรื่องราว หากมีบั๊กโปรดแจ้งด้วยครับผม
- หากมีวิธีการใช้ event หรือวิธีแก้ที่ง่ายกว่านี้โดยไม่ต้องพึ่งคำตอบในโพสต์นี้ ขออภัยครับ -/\- อาจจะหนีไปหลบหน้าที่ไหนซักแห่งด้วยความอาย 555555+