Warapong555   08-08-2015, 11:09 PM
#1
ประเด็นก็คือการตรวจสอบการใส่อาวุธ ที่ผมลองทำดูมันได้แต่ใส่อาวุธนั้นโดยไม่สนว่าเป็น อาวุธ 1 หรือ 2 ครับ
แต่ที่ผมอยากทราบคือ การตรวจเงื่อนไขอาวุธ 1
การตรวจเงื่อนไขอาวุธ 2
ครับ ขอขอบคุณล่วงหน้านะครับ แมวน้ำโกรธ
splendith   08-11-2015, 03:51 AM
#2
.

ยังไม่ค่อยเข้าใจคำถามเท่าไหร่ครับ แต่ถ้าให้ตีความ ต้องการตรวจสอบเงื่อนไขว่ามีการใส่อาวุธอะไรบางอย่างในช่องที่ 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+
This post was last modified: 08-11-2015, 03:58 AM by splendith.
  
Users browsing this thread: 2 Guest(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.