แนะนำสคริปต์ตัวหนึ่งก่อนครับ
http://littledrago.blogspot.com/2012/01/...ables.html
เป็นสคริปต์ที่กำหนดตัวแปรได้อิสระ เหมาะจะไว้กำหนดเลือดครับ
ถ้าใช้คำสั่งเหตุการณ์อาจจะยากครับ แนะนำว่าอาจจะต้องสร้าง alias update ใน Game_Map
เลยน่าจะสะดวกกว่าครับ
Code:
class Game_Map
alias war_update update
def update
war_update
-- คำสั่ง --
end
end
ลองแกะโค้ดมาจาก Enemy Detection System ดูครับ พอจะบอกได้คร่าวๆ
Code:
for soldier in @events.values #สมมติให้ soldierคืออีเว้นจากอีเว้นทั้งหมด
if !soldier.name.include?("soldier") #อีเว้นไหนไม่มีชื่อว่า soldier
next #ให้ข้ามไป อย่าไปสนใจมัน
else #จากนั้นก็มาพิจรณาอีเว้นต่อ
if soldier.character_name != "" #ถ้าอีเว้นนั้น รูปตัวละครจะต้องไม่ว่างเปล่า
#พักมาเช็คฝ่ายศัตรูกันบ้าง
for enemy in @events.values #สมมุติให้ enemy คืออีเว้นจากอีเว้นทั้งหมด
if enemy.name.include?("enemy") && enemy.character_name != ""#อีเว้นไหนบ้างที่ชื่อว่า enemy และรูปตัวละครจะต้องไม่ว่างเปล่า
#หลังจากได้ ทหารฝ่ายเราและศัตรูมาแล้วก็มาคำนวณกัน
range = (soldier.x - enemy.x).abs + (soldier.y - enemy.y).abs #บรรทัดนี้ผมยังไม่เข้าใจครับ รู้แค่ว่าหาระยะ
if range <= 1 #ถ้าระยะน้อยกว่าหรือเท่ากับหนึ่ง แปลว่าอีเว้นทั้งสองอยู่ในระยะประชิดแล้วครับ
#เพื่อความสมจริง อาจจะต้องเช็คการหันหน้าเพิ่ม ว่าหันหน้าเข้าไปหาศัตรูรึเปล่า
#เช็คฝ่ายทหารโจมตี
if (soldier.direction == 2 && enemy.y == soldier.y + 1 ) or
(soldier.direction == 4 && enemy.x == soldier.x - 1 ) or
(soldier.direction == 6 && enemy.x == soldier.x + 1 ) or
(soldier.direction == 8 && enemy.y == soldier.y - 1 )
#บรรทัดนี้เป็นการ สร้างความเสียหายให้ศัตรูครับ จากสคริปต์ข้างต้น
$game_variables[[@map_id,enemy.id,"A"]] += 1
enemy.animation_id = 7 #สร้างภาพเคลื่อนไหวใส่เหตุการณ์
end
#เช็คฝ่ายศัตรูโจมตี
if (enemy.direction == 2 && soldier.y == enemy.y + 1 ) or
(enemy.direction == 4 && soldier.x == enemy.x - 1 ) or
(enemy.direction == 6 && soldier.x == enemy.x + 1 ) or
(enemy.direction == 8 && soldier.y == enemy.y - 1 )
#บรรทัดนี้เป็นการ สร้างความเสียหายให้ทหารเราครับ จากสคริปต์ข้างต้น
$game_variables[[@map_id,soldier.id,"A"]] += 1
soldier.animation_id = 7 #สร้างภาพเคลื่อนไหวใส่เหตุการณ์
end
end
else
next #อีเว้นไหนที่ไม่ใช่ศัตรูก็ข้ามไป
end
end
end
end
end
มี end เกินรึเปล่าไม่ค่อยแน่ใจแล้วแฮะ ตาลาย
ยังไม่แน่ใจด้วยว่ามีบัครึเปล่า แต่ระบบเกมปืนฉีดน้ำของผมก็ระบบประมาณนี้ครับ
เมื่อเราจะเช็คเลือดของศัตรู เมื่อกี้คำสั่งเพิ่มความเสียหายให้ศัตรูถูกกำหนดด้วย
$game_variables[[ไอดีแมพ,อีเว้นไอดี,"A"]]
เช็คโดยสร้างเหตุการณ์ทหารหรือศัตรูตั้งเป็นพร้อมเนืิ้อเรื่อง ตรวจเช็คเงื่อนไขด้วยสคริปตว่า
$game_variables[[@map_id,@event_id,"A"]] >= จำนวนเลือดของอีเว้นนั้น
เพราะเราได้บวกตัวแปรเหล่านี้ไปแล้ว เมื่อเข้าประชิดกัน ถ้าความเสียหายถึงที่กำหนด อีเว้นนั้นก็ตายครับ อาจจะลบเหตุการณ์ทิ้ง หรือเปลี่ยนภาพตัวละครเป็นภาพตอนตาย แต่ต้องแก้สคริปต์ที่เช็คด้วยนะครับ เพราะใส่เป็น character_name != "" อยู่ เปลี่ยนให้เหมือนกันด้วย หรือให่สวิตช์เฉพาะเปิดแล้วสร้างเหตุการณ์ของตอนที่ตายก็ได้ครับ
ปล.เหนื่อย+สคริปต์ดูแปลกๆ บ้างเพราะก็อบEnemy Detection System มา แล้วเปลี่ยนชื่อ
ผู้รู้ท่านอื่นถ้ามาช่วยแปลง ตรวจบัค+ลงวิธีแก้ จะดีมากครับ /chan