Weather Effect in Battle สภาพอากาศมีผลต่อการต่อสู้ V 2.0
สกรีนช๊อต :
เจอพายุเข้าไปก็โดนลด HP หมดทั้งฮีโร่ทั้งมอน
ไม่ใช่แค่ลด HP ได้อย่างเดียว สามารถตั้งให้ เพิ่ม HP ด้วยก็ได้
ตอนนี้เพิ่มลดอาการได้แล้วจริงๆ นะครับ สกรีนช๊อตอันเก่า ไม่ได้แก้
สคริปต์เขียนโดย :
jojo741963
รายละเอียด :
เมื่อมีสภาพอากาศที่กำหนด จะเพิ่ม / ลด HP ของ ฮีโร่ / ศัตรู ตามไอดีที่กำหนดได้
เมื่อมีสภาพอากาศที่กำหนด จะเพิ่ม / ลด อาการที่กำหนด ของ ฮีโร่ / ศัตรู ตามไอดีที่กำหนดได้
วิธีการใช้งาน : วางสคริปต์นี้เหนือสคริปต์ Main และใต้สคริปต์ Scene_Debug
แล้วก็ตั้งค่าได้ในหัวข้อนั้นๆ นะครับ
เช่น ถ้าต้องการตั้งค่า ให้ิ เพิ่ม/ลด HP ของฮีโร่ เมื่อฝนตก ให้ไปตั้งค่าที่
Code:
ID_Hero_DamageHP_Rain
และ เซ็ตของมอนเตอร์ ในสภาพอื่นๆ ตามต้องการ (ลองสำรวจในสคริปต์ดูนะครับ)
โดยให้ตั้งค่าในรูปแบบดังนี้นะครับ
ไอดี => ความเสียหายโดยคิดเป็น 1 ใน ตัวเลขที่กำหนดของ MaxHP,
ตัวอย่าง
(ของฮีโร่)
1 => 8,
หมายความว่า ฮีโร่ไอดี 1 จะได้รับความเสียหาย 1 ใน 8 ของ MaxHP ของฮีโร่นั้นๆ
ซึ่งหากต้องการให้เปลี่ยนเป็นเพิ่ม HP แทน ก็
ให้เปลี่ยนเลขด้านหลังเป็นจำนวนเต็มลบ เช่น
8 เป็น
-8 แทน
เนื่องจากเมื่อลบด้วยลบ ก็จะกลายเป็นการบวกแทน
การเซ็ตค่าอาการก็เช่นกัน
Code:
ID_Hero_Add_State_Rain
คือส่วนของ ไอดีของฮีโร่ ที่จะๆได้รับอาการนั้นๆ
เมื่อมีสภาพอากาศนั้นๆ (ดังในตัวอย่างคือ ฝนตก)
โดยให้ตั้งค่าในรูปแบบดังนี้นะครับ
ไอดี => ไอดีของอาการที่จะเพิ่ม,
ซึ่งหากต้องการให้เปลี่ยนเป็นลดอาการแทน
ก็ให้สร้างอาการเฉพาะ ของฮีโร่นั้นๆ แล้วกำหนดช่องอาการด้านขวา
ที่ต้องการเป็น
ลด แทน ก็จะลดอาการนั้นได้
ข้อตกลงการนำไปใช้งาน : จะเอาไปใช้หรือแจกที่ไหนก็ได้ แต่อย่าลืมให้เครดิตผู้สร้างนะงับ
เดโม่ของสคริปต์ :
สภาพอากาศมีผลต่อการต่อสู้ v2
โค๊ดสคริปต์
[shcode=rails]
#==============================================================================
# ** Weather Effect in Battle
#------------------------------------------------------------------------------
# * Created by: jojo741963
# * Version: 2.0
# 17-11-2013
#------------------------------------------------------------------------------
# รายละเอียดของสคริปต์นี้ :
# เมื่อมีสภาพอากาศที่กำหนด จะเพิ่ม / ลด HP ของ ฮีโร่ / ศัตรู ตามไอดีที่กำหนดได้
# เมื่อมีสภาพอากาศที่กำหนด จะเพิ่ม / ลด อาการ ของ ฮีโร่ / ศัตรู ตามไอดีที่กำหนดได้
#------------------------------------------------------------------------------
# จินตนาการในอนาคต :
# - เมื่อมีสภาพอากาศที่กำหนด เพิ่ม / ลด SP ให้กับ ฮีโร่/ศัตรู ตามไอดีที่กำหนดได้
# - เพิ่มสภาพอากาศใหม่ๆ ให้เลือกใช้มากขึ้น
# - ทำ สกิล / ไอเท็ม เสกสภาพอากาศได้ตามต้องการ และจะกลับเป็นเหมือนเดิมหลังสู้เสร็จ
# หรือนับตามจำนวนเทิร์น
# - ถ้าทำให้เสกสภาพอากาศได้ ทำไอเท็มให้ สามารถเพิ่มระยะเวลาของสภาพอากาศนั้นๆ
#------------------------------------------------------------------------------
# วิธีการใช้งานสคริปต์นี้ :
# วางสคริปต์นี้เหนือสคริปต์ Main และใต้สคริปต์ Scene_Debug
# แล้วเซ็ตค่าได้ด่านล่างเลยครับ
#==============================================================================
module WEATHER_EFFECT
# กำหนดข้อความที่จะแสดง ยังมีบัค คือข้อความจะไม่โชว์รอบที่สอง เลยเอาออก
#Rain_Text = "ฝนยังคงกำลังตกอยู่"
#Storm_Text = "พายุยังคงกำลังพัดอยู่"
#Snow_Text = "หิมะยังคงกำลังตกอยู่"
#===========================================
#============= เพิ่ม / ลด HP ===============
#===========================================
#=================== ฝนตก ===================
# ไอดีของฮีโร่ที่ต้องการ => สร้างความเสียหาย 1 ใน จำนวนที่ต้องการ ของ MaxHP
# ตัวอย่าง 1 => 8, แปลว่า ฮีโร่ไอดี 1 ได้รับความเสียหาย 1 ใน 8 ของ HP
# ถ้าต้องการให้เพิ่ม HP แทน ให้เปลี่ยน เป็นจำนวนเต็มลบ เช่น 8 เป็น -8
ID_Hero_DamageHP_Rain = {
2 => 8,
7 => 16,
}
ID_Enemy_DamageHP_Rain = {
1 => 8,
3 => -8,
}
#=================== ฝนตก ===================
#=================== พายุ ===================
ID_Hero_DamageHP_Storm = {
1 => 8,
2 => 8,
7 => 8,
8 => 8,
}
ID_Enemy_DamageHP_Storm = {
1 => 8,
3 => 8,
7 => 8,
}
#=================== พายุ ===================
#=================== หิมะ ===================
ID_Hero_DamageHP_Snow = {
1 => -8,
7 => -8,
8 => 16,
}
ID_Enemy_DamageHP_Snow = {
7 => -8,
}
#=================== หิมะ ===================
#===========================================
#============== เพิ่มอาการ ================
#===========================================
#=================== ฝนตก ===================
# ไอดีของฮีโร่ที่ต้องการ => ไอดีของอาการที่ต้องการให้เพิ่ม
# ตัวอย่าง 1 => 8, แปลว่า ฮีโร่ไอดี 1 ได้รับความเสียหาย 1 ใน 8 ของ HP
# ถ้าต้องการให้เพิ่ม HP แทน ให้เปลี่ยน เป็นจำนวนเต็มลบ เช่น 8 เป็น -8
ID_Hero_Add_State_Rain = {
1 => 13,
2 => 14,
}
ID_Enemy_Add_State_Rain = {
1 => 12,
3 => 16,
}
#=================== ฝนตก ===================
#=================== พายุ ===================
ID_Hero_Add_State_Storm = {
1 => 9,
2 => 9,
7 => 9,
8 => 9,
}
ID_Enemy_Add_State_Storm = {
1 => 9,
3 => 9,
7 => 9,
}
#=================== พายุ ===================
#=================== หิมะ ===================
ID_Hero_Add_State_Snow = {
1 => 15,
7 => 15,
8 => 15,
}
ID_Enemy_Add_State_Snow = {
7 => 16,
}
#=================== หิมะ ===================
# เช็คว่าไอดีของ ฮีโร่ / ศัตรู ตัวนั้นๆ จะมีการ เพิ่ม / ลด พลังเท่าใด
def self.damage(hero, weather, id)
if hero
case weather
when 1 #ฝนตก
if ID_Hero_DamageHP_Rain.include?(id)
return ID_Hero_DamageHP_Rain[id]
end
when 2 #พายุ
if ID_Hero_DamageHP_Storm.include?(id)
return ID_Hero_DamageHP_Storm[id]
end
when 3 #หิมะ
if ID_Hero_DamageHP_Snow.include?(id)
return ID_Hero_DamageHP_Snow[id]
end
end
else
case weather
when 1 #ฝนตก
if ID_Enemy_DamageHP_Rain.include?(id)
return ID_Enemy_DamageHP_Rain[id]
end
when 2 #พายุ
if ID_Enemy_DamageHP_Storm.include?(id)
return ID_Enemy_DamageHP_Storm[id]
end
when 3 #หิมะ
if ID_Enemy_DamageHP_Snow.include?(id)
return ID_Enemy_DamageHP_Snow[id]
end
end
end
end
# เช็คว่าไอดีของ ฮีโร่ / ศัตรู ตัวนั้นๆ จะมีการ เพิ่มอาการอะไร
def self.add_state(hero, weather, id)
if hero
case weather
when 1 #ฝนตก
if ID_Hero_Add_State_Rain.include?(id)
return ID_Hero_Add_State_Rain[id]
end
when 2 #พายุ
if ID_Hero_Add_State_Storm.include?(id)
return ID_Hero_Add_State_Storm[id]
end
when 3 #หิมะ
if ID_Hero_Add_State_Snow.include?(id)
return ID_Hero_Add_State_Snow[id]
end
end
else
case weather
when 1 #ฝนตก
if ID_Enemy_Add_State_Rain.include?(id)
return ID_Enemy_Add_State_Rain[id]
end
when 2 #พายุ
if ID_Enemy_Add_State_Storm.include?(id)
return ID_Enemy_Add_State_Storm[id]
end
when 3 #หิมะ
if ID_Enemy_Add_State_Snow.include?(id)
return ID_Enemy_Add_State_Snow[id]
end
end
end
end
end
#ทำให้ทุกครั้งที่เข้าเฟต 4 จะมีการเพิ่มผลของสภาพอากาศ
class Scene_Battle
alias weather_effect_start_phase4 start_phase4
def start_phase4
weather_effect_start_phase4
make_weather_effect
end
#--------------------------------------------------------------------------
# - ผลของสภาพอากาศ
#--------------------------------------------------------------------------
def make_weather_effect
case $game_screen.weather_type #คำสั่งแสดงข้อความที่เป็นบัค เลยเอาออก
when 1
#$game_temp.message_text = WEATHER_EFFECT::Rain_Text
when 2
#$game_temp.message_text = WEATHER_EFFECT::Storm_Text
when 3
#$game_temp.message_text = WEATHER_EFFECT::Snow_Text
end
weather_effect($game_screen.weather_type) if $game_screen.weather_type != 0
end
#--------------------------------------------------------------------------
# - เพิ่ม / ลด พลังของ ฮีโร่ / ศัตรู ตามสภาพอากาศที่กำหนด
#--------------------------------------------------------------------------
def weather_effect(weather_type)
#สำหรับฮีโร่
for actor in $game_party.actors
if actor.exist?
case weather_type # 0 = None, 1 = Rain, 2 = Storm, 3 = Snow
when 1
if WEATHER_EFFECT::ID_Hero_DamageHP_Rain.include?(actor.id)
damage = actor.maxhp / WEATHER_EFFECT.damage(true, weather_type, actor.id)
actor.hp -= damage
actor.damage_pop = true
actor.damage = damage
end
if WEATHER_EFFECT::ID_Hero_Add_State_Rain.include?(actor.id)
actor.add_state(WEATHER_EFFECT.add_state(true, weather_type, actor.id), false)
end
when 2
if WEATHER_EFFECT::ID_Hero_DamageHP_Storm.include?(actor.id)
damage = actor.maxhp / WEATHER_EFFECT.damage(true, weather_type, actor.id)
actor.hp -= damage
actor.damage_pop = true
actor.damage = damage
end
if WEATHER_EFFECT::ID_Hero_Add_State_Storm.include?(actor.id)
actor.add_state(WEATHER_EFFECT.add_state(true, weather_type, actor.id), false)
end
when 3
if WEATHER_EFFECT::ID_Hero_DamageHP_Snow.include?(actor.id)
damage = actor.maxhp / WEATHER_EFFECT.damage(true, weather_type, actor.id)
actor.hp -= damage
actor.damage_pop = true
actor.damage = damage
end
if WEATHER_EFFECT::ID_Hero_Add_State_Snow.include?(actor.id)
actor.add_state(WEATHER_EFFECT.add_state(true, weather_type, actor.id), false)
end
end
end
end
#สำหรับศัตรู
for enemy in $game_troop.enemies
if enemy.exist?
case weather_type # 0 = None, 1 = Rain, 2 = Storm, 3 = Snow
when 1
if WEATHER_EFFECT::ID_Enemy_DamageHP_Rain.include?(enemy.id)
damage = enemy.maxhp / WEATHER_EFFECT.damage(false, weather_type, enemy.id)
enemy.hp -= damage
enemy.damage_pop = true
enemy.damage = damage
end
if WEATHER_EFFECT::ID_Enemy_Add_State_Rain.include?(enemy.id)
enemy.add_state(WEATHER_EFFECT.add_state(false, weather_type, enemy.id), false)
end
when 2
if WEATHER_EFFECT::ID_Enemy_DamageHP_Storm.include?(enemy.id)
damage = enemy.maxhp / WEATHER_EFFECT.damage(false, weather_type, enemy.id)
enemy.hp -= damage
enemy.damage_pop = true
enemy.damage = damage
end
if WEATHER_EFFECT::ID_Enemy_Add_State_Storm.include?(enemy.id)
enemy.add_state(WEATHER_EFFECT.add_state(false, weather_type, enemy.id), false)
end
when 3
if WEATHER_EFFECT::ID_Enemy_DamageHP_Snow.include?(enemy.id)
damage = enemy.maxhp / WEATHER_EFFECT.damage(false, weather_type, enemy.id)
enemy.hp -= damage
enemy.damage_pop = true
enemy.damage = damage
end
if WEATHER_EFFECT::ID_Enemy_Add_State_Snow.include?(enemy.id)
enemy.add_state(WEATHER_EFFECT.add_state(false, weather_type, enemy.id), false)
end
end
end
end
#จบ-
end
end
[/shcode]