irpg Community
Monster status OVERLIMIT - 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: Monster status OVERLIMIT (/thread-185.html)



Monster status OVERLIMIT - LuZi - 07-04-2012

Monster status OVERLIMIT

สคริปต์เขียนโดย : Angelix
ลิงค์ต้นฉบับ : http://community.thaiware.com/thai/index.php/topic/330775-script-monster-status-overlimit/


รายละเอียด :
สคริปต์นี่ทำให้สามารถกำหนดสเตตัสของมอนสเตอร์สูงกว่าเพดานที่ฐานข้อมูลในโปรแกรมกำหนดไว้

วิธีการใช้งาน :
วางสคริปต์ไว้เหนือ Main เวลาอยากให้มอนส์ตัวไหนมีค่าสเตตัสเกินเพดาน ก็ให้ใส่ [keyword] ต่อท้ายชื่อ โดยที่ keyword นั้น
เราสามารถแก้ได้ว่าจะใช้อะไร โดยข้างล่างจะเป็นที่อยู่ keyword ในตัวสคริปต์ครับ (ปกติเป็น exs)
Code:
module EXTRA_STAT
  EXTRA_KW = "[exs]"
end

จากนั้นตามด้วย Status Tag กี่ Tag ก็ได้
[h*] = Max HP
[s*] = Max SP
[str*] = STR
[dex*] = DEX
[agi*] = AGI
[int*] = INT
[a*] = ATK
[p*] = PDEF
[m*] = MDEF
โดยตรง * ให้ใส่ค่าที่ต้องการ และสุดท้ายก็คือ ชื่อมอนส์ถ้ามีเว้นวรรค ให้ใส่ _ แทนนะครับ

ตัวอย่าง
ถ้าเราต้องการมอนส์ที่ชื่อ Abyss Soldier มี MaxHP กับ Attack อลังการ ก็ไปที่ Database > Enemy ไปที่มอนสเตอร์ตัวนั้นแล้วแก้ชื่อเป็น
Code:
Abyss_Soldier[exs][h999999999][a999999999]



โค๊ดสคริปต์
Code:
#========================================
# Monster status OVERLIMIT
# by angelix
#
#========================================
module EXTRA_STAT
  EXTRA_KW = "[exs]"
end

class Game_Enemy < Game_Battler
  def extra_status?
    name = $data_enemies[@enemy_id].name.clone
    if name.include?(EXTRA_STAT::EXTRA_KW)
      return true
    else
      return false
    end
  end
  
  def have_status?(status)
    name = $data_enemies[@enemy_id].name.clone
    if name =~ /\[#{status}([0-9]+)\]/
      return true
    else
      return false
    end
  end
  
  def base_maxhp
    if extra_status? and have_status?("h")
      name = $data_enemies[@enemy_id].name.clone
      text = name.scan(/\[h([0-9]+)\]/)
      @get_status = $1
      return @get_status.to_i
    else
      return $data_enemies[@enemy_id].maxhp
    end
  end
  
  def base_maxsp
    if extra_status? and have_status?("s")
      name = $data_enemies[@enemy_id].name.clone
      text = name.scan(/\[s([0-9]+)\]/)
      @get_status = $1
      return @get_status.to_i
    else
      return $data_enemies[@enemy_id].maxsp
    end
  end
  
  def base_str
    if extra_status? and have_status?("str")
      name = $data_enemies[@enemy_id].name.clone
      text = name.scan(/\[str([0-9]+)\]/)
      @get_status = $1
      return @get_status.to_i
    else
      return $data_enemies[@enemy_id].str
    end
  end
  
  def base_dex
    if extra_status? and have_status?("dex")
      name = $data_enemies[@enemy_id].name.clone
      text = name.scan(/\[dex([0-9]+)\]/)
      @get_status = $1
      return @get_status.to_i
    else
      return $data_enemies[@enemy_id].dex
    end
  end
  
  def base_agi
    if extra_status? and have_status?("agi")
      name = $data_enemies[@enemy_id].name.clone
      text = name.scan(/\[agi([0-9]+)\]/)
      @get_status = $1
      return @get_status.to_i
    else
      return $data_enemies[@enemy_id].agi
    end
  end
  
  def base_int
    if extra_status? and have_status?("int")
      name = $data_enemies[@enemy_id].name.clone
      text = name.scan(/\[int([0-9]+)\]/)
      @get_status = $1
      return @get_status.to_i
    else
      return $data_enemies[@enemy_id].int
    end
  end
  
  def base_atk
    if extra_status? and have_status?("a")
      name = $data_enemies[@enemy_id].name.clone
      text = name.scan(/\[a([0-9]+)\]/)
      @get_status = $1
      return @get_status.to_i
    else
      return $data_enemies[@enemy_id].atk
    end
  end
  
  def base_pdef
    if extra_status? and have_status?("p")
      name = $data_enemies[@enemy_id].name.clone
      text = name.scan(/\[p([0-9]+)\]/)
      @get_status = $1
      return @get_status.to_i
    else
      return $data_enemies[@enemy_id].pdef
    end
  end
  
  def base_mdef
    if extra_status? and have_status?("m")
      name = $data_enemies[@enemy_id].name.clone
      text = name.scan(/\[m([0-9]+)\]/)
      @get_status = $1
      return @get_status.to_i
    else
      return $data_enemies[@enemy_id].mdef
    end
  end
  
end


class Window_Help < Window_Base
  def set_enemy(enemy)
    text = enemy.name.clone
    if text.include?(EXTRA_STAT::EXTRA_KW)
      text = text.scan(/(\S+)(\[exs\])(\S+)/)
      monst = $1
      while monst.clone =~ /_/
        monst[/_/] = " "
      end
      text = monst
    end
    state_text = make_battler_state_text(enemy, 112, false)
    if state_text != ""
      text += "  " + state_text
    end
    set_text(text, 1)
  end
end