조회 수 427 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

# ▶ 메세지 띄우기 - 준돌

class Window_JDmsg < Window_Base
  # ● 오브젝트 초기화
  def initialize
    super(0, 50, 640, 150)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.size = 22
  end

  def set_text(text,text_color)
    # 텍스트와 alignment의 적어도 한편이 전회와 다른 경우
    if text != @text
      # 텍스트를 재묘화
      self.contents.clear
      self.contents.font.color = text_color(text_color)
      self.contents.draw_text(2, 0, self.width - 40, 32, text, 1)
      @text = text
      @actor = nil
    end
    self.visible = true
  end
end

class Scene_Map
  alias jd_initialize initialize
  #───────────────────────
  # ♧ 오브젝트 초기화
  #───────────────────────
  def initialize
    $간단윈도우a = Window_JDmsg.new
    $간단윈도우a.opacity = 0
    $간단윈도우a.z = 999
  end
  #───────────────────────
  # ♧ 프레임 갱신
  #───────────────────────
  alias jd_update update
  def update
    jd_update
    if $간단윈도우a.disposed?
      $메세지 = Window_Help.new
    end
    $간단윈도우a.contents_opacity -= 4
    if $간단윈도우a.contents_opacity< 50
      $간단윈도우a.opacity = 0
      $간단윈도우a.contents_opacity = 0
    end
    if $scene != self      
    end
  end
end
  
def 보조메세지(text,text_color = "normal_color")
  $간단윈도우a.contents_opacity = 255
  $간단윈도우a.set_text(text,text_color)
  if text_color == "노말"
  text_color = "normal_color"
  end
end

여기까지 메세지

#=================================================
# ■ 간단메세지
#-------------------------------------------------
#  Author: Bimilist[비밀소년]
#  Desc: 액션 알피지의 간단한 버젼입니다.
#             고의적으로 함수를 한국어로 만들었으므로,
#             일본어로 번역시 작동여부는 불투명합니다.
#=================================================


class Scene_Map < Scene_Map
  #───────────────────────
  # ♧ 오브젝트 초기화
  #───────────────────────
  def initialize
    super
    $간단윈도우 = Window_Help.new
    $간단윈도우.opacity = 0
    $간단윈도우.z = 999
  end
  #───────────────────────
  # ♧ 프레임 갱신
  #───────────────────────
  def update
    super
    if $간단윈도우.disposed?
      $간단윈도우 = Window_Help.new
    end
    $간단윈도우.opacity -= 2
    if $간단윈도우.opacity < 128
      $간단윈도우.opacity = 0
      $간단윈도우.contents_opacity = 0
    end
    if $scene != self
      $간단윈도우.dispose
    end
  end
end
  
def 간단메세지(text)
  $간단윈도우.opacity = 255
  $간단윈도우.contents_opacity = 255
  $간단윈도우.set_text(text, 1)
end


여기까지 간단 메세지

#=================================================
# ■ Simple_Action
#-------------------------------------------------
#  Author: Bimilist[비밀소년]
#  Desc: 액션 알피지의 간단한 버젼입니다.
#             고의적으로 함수를 한국어로 만들었으므로,
#             일본어로 번역시 작동여부는 불투명합니다.
#=================================================



#───────────────────────
# ♧ 그냥 유용한 함수
#───────────────────────
def 전멸했니?
  # 전이벤트의 루프
  for event in $game_map.events.values
    # 이벤트의 좌표와 트리거가 일치했을 경우
    if event.액션하니?
      return false
    end
  end
  return true
end
def 파티바꿔!
  $game_player.rotate_party
end

# ━━━━━━━━━━━━━━━━━━━━━━━━
# ♣ Game_Event
#     Game_Event를 액션용으로 바꾸어 줍니다.
# ━━━━━━━━━━━━━━━━━━━━━━━━
class Game_Event < Game_Event
  attr_accessor :gauge
  #───────────────────────
  # ♧ 프레임 갱신
  #───────────────────────
  def update
    super
    return if not 액션하니?
    지워져! if 죽었니? and not 지워졌니?
    리젠! if 죽었니? and 리젠되니?
    어택!
  end
  #───────────────────────
  # ♧ 되살리기 기능 추가
  #───────────────────────
  def unerase
    @erased = false
    refresh
  end
  #───────────────────────
  # ♧ moveto(-10,-10)이 안되는 것을 대신.
  #───────────────────────
  def moveto_outside
    @x = -10
    @y = -10
    @real_x = @x * 128
    @real_y = @y * 128
    @prelock_direction = 0
  end
  #───────────────────────
  # ♧ 간편함을 위한 함수들
  #───────────────────────
  def 액션하니?
    return (@hp != nil)
  end
  def 죽었니?
    return false if not 액션하니?
    return (@hp == 0)
  end
  def 리젠되니?
    return (@regen_time != nil)
  end
  def 지워졌니?
    return (@erased == true)
  end
  #───────────────────────
  # ♧ 생명력과 타격치를 설정함으로서 액션을 시작
  #───────────────────────
  def 액션(hp, dmg)
    return if 액션하니?
    @maxhp = @hp = hp
    @dmg = dmg
  end
  #───────────────────────
  # ♧ 리젠한다. time은 초단위. 소수점도 가능.
  #───────────────────────
  def 리젠(time)
    return if not 액션하니?
    @regen_time = time
    @regen_count = 0
  end
  #───────────────────────
  # ♧ 추가로 돈과 경험치도 지급
  #───────────────────────
  def 상금(gold, exp)
    @gold = gold
    @exp = exp
  end
  #───────────────────────
  # ♧ 아이템
  #───────────────────────
  def 아이템(id, rate = 100)
    @item_id = id
    @item_rate = rate
  end
  #───────────────────────
  # ♧ 자신에게 데미지를 준다
  #───────────────────────
  def 데미지(dmg)
    return if not 액션하니?
    @hp = [@hp - dmg, 0].max
    @gauge = @hp.to_f / @maxhp.to_f
  end
  #───────────────────────
  # ♧ 자신을 죽인다
  #───────────────────────
  def 지워져!
    item = nil
    if (@item_id and @item_rate)
      if rand(100) < @item_rate
        item = $data_items[@item_id]
      end
    end
    if (@gold and @exp)
      $game_player.보상(@gold, @exp, item)
    elsif (item)
      $game_player.보상(0, 0, item)
    end
    moveto_outside
    erase
    return if 리젠되니?
    @hp = nil
    @dmg = nil
    @gold = nil
    @exp = nil
    @item_id = nil
    @item_rate = nil
  end
  #───────────────────────
  # ♧ 리젠한다.
  #───────────────────────
  def 리젠!
    return if not 리젠되니?
    if @regen_count < @regen_time * 40
      @regen_count += 1
      return
    end
    moveto(@event.x, @event.y)
    @hp = @maxhp
    @regen_count = 0
    unerase
  end
  #───────────────────────
  # ♧ 자신이 공격한다
  #───────────────────────
  def 어택!
    단거리_공격_간단히_주인공만
  end
  #───────────────────────
  # ♧ 간단히 주인공만 공격하는 함수
  #  간단함을 유지하기 위해서 딜레이를 위한 변수를
  #  따로 만들지 않고 1.0초로 고정한다.
  #  어택() 함수와 분리한 이유는 장거리 공격으로의
  #  확장을 위해서이다.
  #  ps. 1초에 한번씩 주인공을 바라보며 공격하므로 강하다!!
  #───────────────────────
  def 단거리_공격_간단히_주인공만
    if @delay == nil or @delay == 0
      @delay = 40
    else
      @delay -= 1
      return
    end
    dist = (x - $game_player.x).abs + (y - $game_player.y).abs
    if dist == 1
      turn_toward_player
      $game_player.데미지(@dmg)
    end
  end
end



# ━━━━━━━━━━━━━━━━━━━━━━━━
# ♣ Game_Player
#     Game_Player를 액션용으로 바꾸어 줍니다.
#     간단함을 유지하기 위해 다음과 같이 만들었습니다.
#     1. 액션에 참여하는 액터는 오로지 파티맴버의
#        첫번째 케릭터가 되겠습니다.
#     2. 죽을 경우 파티 맴버들의 순서를 바꾸며,
#        모두 죽는 경우에는 게임오버로 처리됩니다.
#     3. 파티에 아무도 없는 경우 전투를 하지 않습니다.
#     4. 데미지 공식은 간단히 체력 빼기 타격치입니다.
#         즉, 방어력, 회피율, 힘 등은 모두 무시됩니다.
#     필요에 따라 개조하여 사용하세요.
# ━━━━━━━━━━━━━━━━━━━━━━━━
class Game_Player < Game_Player
  attr_accessor :gauge
  #───────────────────────
  # ♧ 프레임 갱신
  #───────────────────────
  def update
    super
    return if not 액션하니?
    다이 if 죽었니?
    어택
  end
  #───────────────────────
  # ♧ 간편함을 위한 함수들
  #───────────────────────
  def 파티있니?
    return ($game_party.actors.size != 0)
  end
  def 액션하니?
    return 파티있니?
  end
  def 죽었니?
    return false if not 파티있니?
    return ($game_party.actors[0].hp == 0)
  end
  #───────────────────────
  # ♧ 보상받고 메세지로 표기
  #───────────────────────
  def 보상(gold, exp, item = nil)
    if 파티있니?
      $game_party.actors[0].exp += exp
      $game_party.gain_gold(gold)
      if not item
        간단메세지(sprintf("금냥: %d, 경험: %d 를 획득 했습니다.", gold, exp))
      elsif not gold and not exp
        간단메세지(sprintf("%s를 획득 했습니다.", item.name))
      else
        간단메세지(sprintf("금냥: %d, 경험: %d, 아템: %s", gold, exp, item.name))
      end
      case item
      when RPG::Item
        $game_party.gain_item(item.id, 1)
      when RPG::Weapon
        $game_party.gain_weapon(item.id, 1)
      when RPG::Armor
        $game_party.gain_armor(item.id, 1)
      end
    end
  end
  #───────────────────────
  # ♧ 자신에게 데미지를 준다
  #───────────────────────
  def 데미지(dmg)
    return if not 액션하니?
    dmg = (dmg - $game_party.actors[0].pdef)
    if dmg <= 0
      dmg = 1
    end
    $game_party.actors[0].hp -= dmg
    @gauge = $game_party.actors[0].hp.to_f / $game_party.actors[0].maxhp.to_f
  end
  #───────────────────────
  # ♧ 자신을 죽인다
  #───────────────────────
  def 다이
  end
  def rotate_party
    return if $game_party.actors.size < 2
    actor = $game_party.actors[0]
    for i in 0..($game_party.actors.size - 2)
      $game_party.actors[i] = $game_party.actors[i + 1]
    end
    $game_party.actors[$game_party.actors.size - 1] = actor
    $game_player.refresh
  end
  #───────────────────────
  # ♧ 자신이 공격한다
  #───────────────────────
  def 어택
    단거리_공격_간단히_주인공만
  end
  #───────────────────────
  # ♧ 적합한 이벤트를 골라내어 공격한다
  #     간편함을 위해서 딜레이... 없음...!!!!
  #───────────────────────
  def 단거리_공격_간단히_주인공만
    # 결정키가 눌리면
    if Input::trigger?(Input::C)
      # 정면의 좌표를 계산
      new_x = @x + (@direction == 6 ?  1 : @direction == 4 ?  -1 : 0)
      new_y = @y + (@direction == 2 ?  1 : @direction == 8 ?  -1 : 0)
      # 전이벤트의 루프
      for event in $game_map.events.values
        # 이벤트의 좌표와 트리거가 일치했을 경우
        if event.x == new_x and event.y == new_y and
          event.데미지($game_party.actors[0].atk)
        end
      end
    end
  end
end



# ━━━━━━━━━━━━━━━━━━━━━━━━
# ♣ Sprite_Character > 작은게이지
#     케릭터에 작은 게이지를 표시합니다
#     ver. SimpleAction
# ━━━━━━━━━━━━━━━━━━━━━━━━
class Sprite_Character < Sprite_Character
  def update
    super
    if @character.gauge != nil
      gauge(@character.gauge)
      @character.gauge = nil
    end
    if @_gauge_setup then
      @_gauge_duration = [@_gauge_duration - 5, 0].max
      @_gauge_sprite_b.x = self.x
      @_gauge_sprite_b.y = self.y - self.oy
      @_gauge_sprite_b.opacity = @_gauge_duration
      @_gauge_sprite.x = self.x
      @_gauge_sprite.y = self.y - self.oy
      @_gauge_sprite.opacity = @_gauge_duration
    end
  end
  def gauge(p)
    setup_gauge if not @_gauge_setup
    @_gauge_sprite.src_rect = Rect.new(0, 0, p * 30, 2)
    @_gauge_duration = 255
  end
  def setup_gauge
    dispose_gauge
    @_gauge_setup = true
    @_gauge_sprite = Sprite.new(self.viewport)
    @_gauge_sprite.bitmap = Bitmap.new(30, 2)
    @_gauge_sprite.bitmap.fill_rect(0, 0, 30, 2, Color.new(255, 255, 0))
    @_gauge_sprite.ox = 15
    @_gauge_sprite.oy = -1
    @_gauge_sprite.z = 1000
    @_gauge_sprite_b = Sprite.new(self.viewport)
    @_gauge_sprite_b.bitmap = Bitmap.new(32, 4)
    @_gauge_sprite_b.bitmap.fill_rect(0, 0, 32, 4, Color.new(0, 0, 0))
    @_gauge_sprite_b.bitmap.fill_rect(1, 1, 30, 2, Color.new(255, 0, 0))
    @_gauge_sprite_b.ox = 16
    @_gauge_sprite_b.oy = 0
    @_gauge_sprite_b.z = 999
  end
  def dispose_gauge
    return if not @_gauge_setup
    @_gauge_setup = false
    @_gauge_sprite.dispose
    @_gauge_sprite_b.dispose
  end
  def dispose
    dispose_gauge
    super
  end
end

여기까지 액알

이렇게 해서 했는데

윈도우_help오류나타나네요 머가 문제이죠?

저장하고 불러오면 안되요
?

List of Articles
번호 제목 글쓴이 날짜 조회 수
3187 rpg2003 주인공 따라다니게 하기 Ress 2006.02.22 403
3186 rpg2003 주인공 따라다니게 하기 출v항 2006.02.22 423
3185 창도의 오에카키에 관한 여러가지 질문들..? 호야군☆ 2006.02.22 231
3184 창도의 오에카키에 관한 여러가지 질문들..? 유하쿠 2006.02.22 391
» 스크립트액알하니까 윈도우_help오류나타나요 ㅠㅠ rpg매니알 2006.02.22 427
3182 스크립트 못다루면 다된밥도 못먹는다 file ac0c 2006.02.22 502
3181 님들아 스킬과퀘스트하는법좀 스샷아님 그냥글로좀알려주삼 Ress 2006.02.22 327
3180 RPG2003이 BGM 소리가 안나네요 ㅜㅜ 아두 2006.02.22 567
3179 [RPG2000]액알만들기 질문. file Roketruncher 2006.02.22 502
3178 레벨업 할때마다 스텟 올리게 하려는데요. 질문좀 할께요; Ress 2006.02.22 182
3177 레벨업 할때마다 스텟 올리게 하려는데요. 질문좀 할께요; file 무듭꾸더 2006.02.22 269
3176 만화의 업로드 시스템 관련 질문입니다. 디지즈 2006.02.22 377
3175 rpg2000을 깔고 런타임패키지를 영문판으로 받았습니다. file minkou412 2006.02.22 484
3174 RPG2003이 BGM 소리가 안나네요 ㅜㅜ 『덩키동크』 2006.02.22 463
3173 RPG2003이 BGM 소리가 안나네요 ㅜㅜ 정신나간외계인 2006.02.22 567
3172 님들아 스킬과퀘스트하는법좀 스샷아님 그냥글로좀알려주삼 담배락스 2006.02.22 294
3171 rpg2000을 깔고 런타임패키지를 영문판으로 받았습니다. Ress 2006.02.22 492
3170 난세의영웅 -용궁판- 처럼 Izh파일은 어떻게 해야 하죠? RPGameGood 2006.02.22 567
3169 전투중 이벤트인데 꽤 머리 아프게 하는게 있습니다. Ress 2006.02.22 105
3168 마샬 덤프 세이브 소스를 명확히.. ㅠㅠ;; G MAX 2006.02.21 310
Board Pagination Prev 1 ... 278 279 280 281 282 283 284 285 286 287 ... 442 Next
/ 442


[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)