Woratana HUD Neo Gauge - LuZi -  07-04-2012
 
 
HUD Neo Gauge 
 
สคริปต์เขียนโดย : Woratana 
ลิงค์ต้นฉบับ : http://community.thaiware.com/thai/index.php/topic/335694-xp-script-neo-gauge-oai-hpmp-aaeae-wb/page__gopid__2065032#entry2065032 
 
 
รายละเอียด : 
สคริปต์สำหรับวาดเกจแบบใหม่ฮะ เป็นเกจไล่สี 3 สี พร้อมขอบสองชั้นและ (กึ่ง) ขอบเรืองแสง (สามารถเลือกเปิดปิดขอบชั้นที่ไม่ใช้ได้) 
สคริปต์นี้แบ่งเป็นสองส่วน คือส่วน Neo-Gauge ซึ่งสำหรับวาดเกจ และส่วน HP/MP Gauge ที่จะเอา Neo-Gauge มาใช้วาดบาร์ HP/MP นั่นเอง 
 
สามารถเลือกปรับเปลี่ยนสีได้ตามใจชอบครับ โค้ดสีไปหาได้ที่ RGB to Color Name Mapping 
อย่าลืมว่าใช้ 3 สีนะครับ (ถ้าอยากใช้สีน้อยกว่า 3 ก็เลือกใช้สีเดียวกันได้ครับ) สามารถตั้งจุดกึ่งกลางในการไล่สีได้ครับ >_>~- วาดเกจด้วยการไล่สีสามสี และตั้งจุดกึ่งกลางในการไล่สีได้
 
 
- มีส่วน Setting สำหรับคนที่อยากปรับแต่งครับ
 
 
- 2 เมธอทใหม่ใน Bitmap, และอีก 2 เมธอทที่มีใน VX
 
 
 
 
สกรีนช๊อต : 
![[Image: 24yr4v8.jpg]](http://i28.tinypic.com/24yr4v8.jpg)  
(ในฉากเมนูในเกม) 
 
![[Image: e67dw6.jpg]](http://i32.tinypic.com/e67dw6.jpg)  
(ในฉากต่อสู้ในเกม) 
 
วิธีการใช้งาน :  
		Show ContentSpoiler: 
		แปะสคริปต์ไว้เหนือ Main ครับ ถ้าใช้ Neo HP/MP Gauge ด้วยก็ควรแปะสคริปต์ส่วน Neo-Gauge ไว้สูงกว่า Neo HP/MP Gauge 
บรรทัดด้านล่าง...
 Code: # NEO GAUGE SETTING #
 
ส่วนถ้าอยากปรับแต่ง HP/MP Gauge ก็ไปปรับแต่งในสคริปต์ส่วน Neo HP/MP Gauge ครับ 
บรรทัดด้านล่าง...
 Code: # NEO HP/MP GAUGE SETTING #
 
สามารถเปลี่ยนสีเกจด้านหลังบาร์ HP/MP ได้ที่ตรงนี้ ในสคริปต์ส่วน Neo HP/MP Gauge
 Code: #------------------------------------------------------------ 
# * Neo Gauge Back Color: Return back colors 
# Set Gauge back color here~ # 
#------------------------------------------------------------
 
หาสามบรรทัดนี้
 Code: c1 = Color.new(0, 0, 0) # Black [Color1] < c1 คือสีที่อยู่ด้านซ้ายสุด 
c2 = Color.new(100, 100, 100) # Dark Gray [Color2] < c2 คือสีที่อยู่ตรงกลาง 
c3 = Color.new(200, 200, 200) # Light Gray [Color3] < c3 คือสีที่อยู่ขวาสุด
 
ส่วนสีของเกจ HP / MP, สามารถแก้ได้โดยหาด้านล่างบรรทัดเหล่านี้ แล้วหาสามบรรทัด c1, c2, c3 เหมือนตอนแก้สีเกจด้านหลัง
 Code: # [Rewrite] * Draw HP gauge สำหรับสีเกจ HP
 
และ
 Code: # [Rewrite] * Draw MP Gauge สำหรับสีเกจ MP
 
ถ้าเกจตกขอบหรืออะไรประมาณนั้น สามารถไปขยับเกจได้โดยหาบรรทัดต่อไปนี้
 Code: HPMP_GAUGE_X_PLUS = 0 # Move gauge horizontally (+,-) 
HPMP_GAUGE_Y_PLUS = 0 # Move gauge vertically (+,-)
 
หรือปรับความสูงของเกจได้ที่บรรทัดนี้
 Code: HPMP_GAUGE_HEIGHT = 8 # gauge height (+) (minumum: 6)
  
	 
 
 
 
โค๊ดสคริปต์ 
Neo-Gauge พาร์ทนี้คือสคริปต์หลักสำหรับวาดเกจครับ 
Code: #============================================================================== 
# [XP] <+ [Neo Gauge] ENGINE -> by Woratana 
#------------------------------------------------------------------------------ 
# ? by Woratana [[email protected]] 
# ? 3 New Methods: 1 Window_Base, 2 Bitmap 
# ? Released on: 13/04/2008 (D-M-Y) 
# ? Version: 1.0 
# ? Special Thanks: Dubalex & Tsunokiette for 
# gradient_fill_rect algorithm 
#--------------------------------------------------------------------------- 
#### [FEATURES] #### 
# - Draw 3 colors gradient & user can choose spot to draw second color 
# - Easy to setting gauge style 
# - 2 New methods to help edit bitmap, and 2 methods from VX 
#------------------------------------------------------------------------------ 
# [Window_Base: 1 New Method] 
# => Draw Neo Gauge: Draw Gauge with 3 Colors & Outline 
# Setting Neo Gauge in # NEO GAUGE SETTING # below 
#============================================================================== 
class Window_Base < Window 
  #========================================================================== 
  # NEO GAUGE SETTING # 
  #========================================================================== 
  GAUGE_GLOW_EFFECT = true # Use glow effect? 
  GAUGE_GLOW_COLOR = Color.new(255, 255, 255, 160) # Transparent White 
   
  GAUGE_OUTSIDE_BORDER = true # Use outside border? 
  GAUGE_OUTSIDE_BORDER_COLOR = Color.new(0, 0, 0) 
  GAUGE_OUTSIDE_BORDER_COLOR2 = Color.new(0, 0, 0) 
  GAUGE_CLEAR_CORNER_OUTSIDE_BORDER = true 
   
  GAUGE_INSIDE_BORDER = false # Use inside border? 
  GAUGE_INSIDE_BORDER_COLOR = Color.new(255, 255, 255) 
  GAUGE_INSIDE_BORDER_COLOR2 = Color.new(0, 0, 0) 
  #========================================================================== 
 
  #-------------------------------------------------------------------------- 
  # * Draw Neo Gauge: Draw Gauge with 3 Colors & Outline 
  # x : draw spot x-coordinate 
  # y : draw spot y-coordinate 
  # width : gauge width 
  # height : gauge height 
  # color1 : first color (left side) 
  # color2 : second color (center) 
  # color3 : last color (right side) 
  # vertical : vertical gauge? (true: vertical | false: horizontal) 
  # outline : draw glow & outline? (true: draw | false: draw only gradient) 
  # max_width : max_width that gradient will draw before cut to width 
  # (max_width will becomes max_height in vertical gauge) 
  # color2_spot = spot to draw color 2 [1:Left <- (default)50:Center -> 100:Right] 
  #------------------------------------------------------------------------- 
  def draw_neo_gauge(x, y, width, height, color1, color2, color3, vertical = false, 
outline = true, max_width = nil, color2_spot = 50) 
    if max_width == nil 
      max_width = vertical ? height : width 
    end 
    glow = GAUGE_GLOW_EFFECT # Set glow effect 
    dx = x; dy = y # Store draw spot X/Y 
    x = y = 0 # Change x, y for temp. bitmap 
    bitmap = Bitmap.new(max_width, height) # Create temp. bitmap to draw gauge 
    if glow # If GLOW 
      if outline # If drawing outline 
        # Create Glow rect 
        if vertical; rect = Rect.new(x, y, width, max_width) 
        else; rect = Rect.new(x, y, max_width, height) 
        end 
        bitmap.fill_rect(rect, GAUGE_GLOW_COLOR) # Draw Glow 
        bitmap.neo_clear_corner(rect.x, rect.y, rect.width, rect.height) # Clear Corner 
      else # Not drawing outline 
        height -= 2; width -= 2; x += 1; y += 1 
        if GAUGE_INSIDE_BORDER 
          height -= 2; width -= 2; x += 1; y += 1 
        end; end; end # End Draw Glow0 
    # Set Position/Size for Gradient 
    if vertical # If drawing vertical bar 
      if glow; gx = gx2 = x + 1; gy = y + 1 # If GLOW 
      else; gx = gx2 = x; gy = y # If NOT GLOW 
      end 
      gy2 = gy - 1 + ((color2_spot*max_width)/100) 
      gw = gw2 = width - 2; gh = ((color2_spot*max_width)/100) 
      gh2 = max_width - gh - 2 
      # Draw Vertical Gradient Bar 
      bitmap.gradient_fill_rect(gx, gy, gw, gh, color1, color2, true) 
      bitmap.gradient_fill_rect(gx2, gy2, gw2, gh2, color2, color3, true) 
      gh = (gh + gh2) # Change gauge height for draw border 
    else # Drawing horizontal bar 
      if glow; gx = x; gy = gy2 = y # If GLOW 
        gx = x + 1; gy = gy2 = y + 1;  
      else; gx = x; gy = gy2 = y # If NOT GLOW 
      end 
      gx2 = gx - 1 + ((color2_spot*max_width)/100) 
      gw = ((color2_spot*max_width)/100); gh = gh2 = (height - 2) 
      gw2 = max_width - gw - 2 
      # Draw Horizontal Gradient Bar 
      bitmap.gradient_fill_rect(gx, gy, gw, gh, color1, color2) 
      bitmap.gradient_fill_rect(gx2, gy2, gw2, gh2, color2, color3) 
      gw = (gw + gw2) # Change gauge width for draw border 
    end 
    if outline # If user want outline, draw borders 
      if GAUGE_OUTSIDE_BORDER # Draw outside border 
        bitmap.draw_neo_border(gx, gy, gw, gh, GAUGE_OUTSIDE_BORDER_COLOR, GAUGE_OUTSIDE_BORDER_COLOR2) 
        bitmap.neo_clear_corner(gx, gy, gw, gh) if GAUGE_CLEAR_CORNER_OUTSIDE_BORDER 
      end 
      if GAUGE_INSIDE_BORDER # Draw inside border 
        gx += 1; gy += 1; gw -= 2; gh -= 2 
        bitmap.draw_neo_border(gx, gy, gw, gh, GAUGE_INSIDE_BORDER_COLOR, GAUGE_INSIDE_BORDER_COLOR2) 
      end 
    end 
    # Cut gauge's width from 'max_width' to 'width' 
    rect = Rect.new(0, 0, width, bitmap.height) 
    self.contents.blt(dx, dy, bitmap, rect) 
    bitmap.dispose # Delete bitmap 
  end 
end 
 
#============================================================================== 
# [Bitmap: 4 New Methods] by Woratana 
# => Draw Neo Border: Draw border around specific area 
# => Neo Clear Corner: Clear 4 corners of specific area 
#------------------------------------------------------------------------------ 
class Bitmap 
  #-------------------------------------------------------------------------- 
  # * Draw Neo Border: Draw gradient border around specific area 
  # x : area x-coordinate 
  # y : area y-coordinate 
  # width : area width 
  # height : area height 
  # color : border color (left side) 
  # color2 : border color (right side) 
  # size : border size (default is 1) 
  #-------------------------------------------------------------------------- 
  def draw_neo_border(x, y, width, height, color, color2 = color, size = 1) 
    gradient_fill_rect(x, y, width, size, color, color2) # Top 
    fill_rect(x, y, size, height, color) # Left 
    fill_rect(x + width - size, y, size, height, color2) # Right 
    gradient_fill_rect(x, y + height - size, width, size, color, color2) # Down 
  end 
 
  #-------------------------------------------------------------------------- 
  # * Neo Clear Corner: Clear 4 corners of specific area 
  # x : area x-coordinate 
  # y : area y-coordinate 
  # width : area width 
  # height : area height 
  # size : area (size * size) that will be clear from corners 
  #-------------------------------------------------------------------------- 
  def neo_clear_corner(x, y, width, height, size = 1) 
    clear_rect(x, y, size, size) 
    clear_rect(x + width - size, y, size, size) 
    clear_rect(x, y + height - size, size, size) 
    clear_rect(x + width - size, y + height - size, size, size) 
  end 
   
  #-------------------------------------------------------------------------- 
  # * Gradient Fill Rect: Draw Gradient 
  # Same as VX's gradient_fill_rect, 
  # gradient_fill_rect(rect, color1, color2) or 
  # gradient_fill_rect(x, y, width, height, color1, color2) 
  # * This method can't draw vertical gradient 
  # credit: Dubalex & Tsunokiette 
  #-------------------------------------------------------------------------- 
  def gradient_fill_rect(*args) 
    case args.size 
    when 3 # (rect, color1, color2) 
      x, y, width, height, color1, color2 = 
      args[0].x, args[0].y, args[0].width, args[0].height, args[1], args[2] 
    when 6 # (x, y, width, height, color1, color2) 
      x, y, width, height, color1, color2 = 
      args[0], args[1], args[2], args[3], args[4], args[5] 
    end 
        (0..width-1).each do |i| 
            r = color1.red * (width - i) / width + color2.red * i / width 
            g = color1.green * (width - i) / width + color2.green * i / width 
            b = color1.blue * (width - i) / width + color2.blue * i / width 
            a = color1.alpha * (width - i) / width + color2.alpha * i / width 
            fill_rect(x + i, y, 1, height, Color.new(r, g, b, a)) 
        end 
  end 
 
  #-------------------------------------------------------------------------- 
  # * Clear Rect: Clear color in specific area 
  # This can be done by just fill rect with Color.new(0,0,0,0) 
  # but I make this due to my laziness to change main script :p 
  # Same as VX's clear_rect, 
  # clear_rect(rect) 
  # clear_rect(x, y, width, height) 
  #-------------------------------------------------------------------------- 
  def clear_rect(*args) 
    transparent_color = Color.new(0,0,0,0) 
    case args.size 
    when 1 # (rect) 
      fill_rect(args[0], transparent_color) 
    when 4 # (x, y, width, height) 
      fill_rect(args[0], args[1], args[2], args[3], transparent_color) 
    end 
  end 
end 
Neo HP/MP Gauge อันนี้ตัวเสริม สำหรับคนที่อยากใช้ Neo-Gauge แสดง HP/MP 
(ต้องมีสคริปต์ส่วน Neo-Gauge ในเกมถึงจะใช้สคริปต์ตัวเสริมนี้ได้) 
Code: #=============================================================== 
# ? [XP] ? Neo HP/MP Gauge ? ? 
#-------------------------------------------------------------- 
# ? by Woratana [[email protected]] 
# ? Released on: 23/04/2008 (D-M-Y) 
# ? Version: 1.0 
# ? Special Thanks: RBG Color Table from: 
#   http://web.njit.edu/~kevin/rgb.txt.html 
#-------------------------------------------------------------- 
 
class Window_Base < Window 
  #============================================================= 
  # NEO HP/MP GAUGE SETTING # 
  # (+) positive number | (+,-) positive or negative number 
  #============================================================= 
  HPMP_GAUGE_HEIGHT = 8 # gauge height (+) (minumum: 6) 
  # Strongly recommend to use HPMP_GAUGE_HEIGHT at least 8 
  # if you're using GAUGE_INSIDE_BORDER in Neo-Gauge 
  HPMP_GAUGE_X_PLUS = 0 # Move gauge horizontally (+,-) 
  HPMP_GAUGE_Y_PLUS = 0 # Move gauge vertically (+,-) 
  #------------------------------------------------------------ 
  # * Neo Gauge Back Color: Return back colors 
  # Set Gauge back color here~ # 
  #------------------------------------------------------------ 
  def neo_gauge_back_color 
    c1 = Color.new(0, 0, 0) # Black [Color1] 
    c2 = Color.new(100, 100, 100) # Dark Gray [Color2] 
    c3 = Color.new(200, 200, 200) # Light Gray [Color3] 
    return c1, c2, c3 
  end 
  #=================================================================== 
   
  #-------------------------------------------------------------------------- 
  # [Rewrite] * Draw HP gauge 
  #-------------------------------------------------------------------------- 
  def draw_actor_hp_gauge(actor, x, y, width = 120) 
    gwidth = width * actor.hp / actor.maxhp 
    cg = neo_gauge_back_color 
    c1, c2, c3 = cg[0], cg[1], cg[2] 
    draw_neo_gauge(x + HPMP_GAUGE_X_PLUS, y + HPMP_GAUGE_Y_PLUS, width, 
HPMP_GAUGE_HEIGHT, c1, c2, c3) 
    c1 = Color.new(139,0,0) # Dark Red 
    c2 = Color.new(255,0,0) # Pure Red 
    c3 = Color.new(255,255,0) # Pure Yellow 
    draw_neo_gauge(x + HPMP_GAUGE_X_PLUS, y + HPMP_GAUGE_Y_PLUS, gwidth, HPMP_GAUGE_HEIGHT, 
c1, c2, c3, false, false, width, 30) 
  end 
  #-------------------------------------------------------------------------- 
  # [Rewrite] * Draw MP Gauge 
  #-------------------------------------------------------------------------- 
  def draw_actor_mp_gauge(actor, x, y, width = 120) 
    gwidth = width * actor.sp / [actor.maxsp, 1].max 
    cg = neo_gauge_back_color 
    c1, c2, c3 = cg[0], cg[1], cg[2] 
    draw_neo_gauge(x + HPMP_GAUGE_X_PLUS, y + HPMP_GAUGE_Y_PLUS, width, 
HPMP_GAUGE_HEIGHT, c1, c2, c3) 
    c1 = Color.new(0,0,128) # Dark Blue 
    c2 = Color.new(0,191,255) # Blue 
    c3 = Color.new(152,251,152) # Light Green 
    draw_neo_gauge(x + HPMP_GAUGE_X_PLUS, y + HPMP_GAUGE_Y_PLUS, gwidth, HPMP_GAUGE_HEIGHT, 
c1, c2, c3, false, false, width, 40) 
  end 
 
  #-------------------------------------------------------------------------- 
  # [2 Alias] * Draw Actor HP / * Draw Actor MP 
  #-------------------------------------------------------------------------- 
  alias wor_neog_winbase_draw_achp draw_actor_hp 
  def draw_actor_hp(actor, x, y, width = 144) 
    draw_actor_hp_gauge(actor, x, y, width) 
    wor_neog_winbase_draw_achp(actor, x, y, width) 
  end 
   
  alias wor_neog_winbase_draw_acsp draw_actor_sp 
  def draw_actor_sp(actor, x, y, width = 144) 
    draw_actor_mp_gauge(actor, x, y, width) 
    wor_neog_winbase_draw_acsp(actor, x, y, width) 
  end 
end 
 
 
 
RE: HUD Neo Gauge - woratana -  07-04-2012
 
 
กี๊ซ สคริปต์นี้สวยมาก ;w;b
 
 
 
RE: HUD Neo Gauge - LuZi -  07-04-2012
 
 
 (07-04-2012, 01:01 PM)woratana Wrote:  กี๊ซ สคริปต์นี้สวยมาก ;w;b  
เนียลนะยะหล่อน  
 
 
 
RE: HUD Neo Gauge - Shinryu -  07-04-2012
 
 
เนียนวันละนิด ก็อดเมมเบอร์ไม่ไกลเกินฝัน
 
 
 
RE: HUD Neo Gauge - woratana -  07-05-2012
 
 
God Member คืออะหยัง = =" 
 
(นึกถึง Gold Member ในไทยแวร์)
 
 
 
RE: HUD Neo Gauge - Shinryu -  07-05-2012
 
 
เทพแห่งการปั้ม  
 
 
 
RE: HUD Neo Gauge - woratana -  07-07-2012
 
 
ไม่ใช่ล่ะะะะ  
 
 
 
RE: Woratana HUD Neo Gauge - ACSII -  08-09-2012
 
 
สวยจัง ชอบมากจ๊ะ
 
 
 
RE: Woratana HUD Neo Gauge - Mysticphoenix -  08-09-2012
 
 
เมพขริงๆๆๆๆ
 
 
 
RE: Woratana HUD Neo Gauge - luvikung -  08-15-2012
 
 
วไวเนียนง๊ะ =[]=!! แต่สคริปนี้เป็นพื้นฐานของหลอดเลือดเทพๆเลยนะ ww
 
 
 
 |