irpg Community
Weather Effect in Battle สภาพอากาศมีผลต่อการต่อสู้ V 2.0 - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Fabella RPG Maker Academia (https://irpg.in.th/forum-4.html)
+--- Forum: RGSS and JS Showcase (https://irpg.in.th/forum-26.html)
+--- Thread: Weather Effect in Battle สภาพอากาศมีผลต่อการต่อสู้ V 2.0 (/thread-1980.html)



Weather Effect in Battle สภาพอากาศมีผลต่อการต่อสู้ V 2.0 - jojo741963 - 06-28-2014

Weather Effect in Battle สภาพอากาศมีผลต่อการต่อสู้ V 2.0
สกรีนช๊อต :
[Image: f8s2Xb.PNG]

เจอพายุเข้าไปก็โดนลด HP หมดทั้งฮีโร่ทั้งมอน

[Image: h6zcxe.PNG]

ไม่ใช่แค่ลด HP ได้อย่างเดียว สามารถตั้งให้ เพิ่ม HP ด้วยก็ได้

ตอนนี้เพิ่มลดอาการได้แล้วจริงๆ นะครับ สกรีนช๊อตอันเก่า ไม่ได้แก้ Me gusta


สคริปต์เขียนโดย : 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]


RE: Weather Effect in Battle สภาพอากาศมีผลต่อการต่อสู้ V 2.0 - motley - 06-28-2014

ขอบคุณครับ ช่วยให้ฉากต่อสู้มีลูกเล่นขึ้นเยอะเลย


RE: Weather Effect in Battle สภาพอากาศมีผลต่อการต่อสู้ V 2.0 - dreamknight - 06-30-2014

;3

ระบบเจ๋งเลยครับ *o*

ขอบคุณฮับ น่าจะได้ใช้อยู่นะนี่ = v = b*