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 สกรีนช๊อต : เจอพายุเข้าไปก็โดนลด 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] 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* |