조회 수 974 추천 수 0 댓글 6
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
팀이름 손님물음표
팀 책임자 심심치
팀 목적 심플액알 원거리 공격 스크립트
작업 샘플 파일첨부

아방스에서 심플액알 스크립트를 구했습니다.


무려 비밀소년님이 제작한 것이었는데요


그중에


#=================================================

# ■ Simple_Action

#-------------------------------------------------

#  Author: Bimilist[비밀소년] + [kcss] + pyunhb[난나나나솨]

#  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 장비(id, rate = 100)

    @armor_id = id

    @armor_rate = rate

  end

  #───────────────────────

  # ♧ 스위치

  #───────────────────────

  def 스위치(스위치아이디, 방식)

    @스위치아이디 = 스위치아이디 

    @방식 = 방식 

  end

  #───────────────────────

  # ♧ 변수

  #───────────────────────

  def 변수(변수아이디, 방법, 수치)

    @변수아이디 = 변수아이디

    @방법 = 방법

    @수치 = 수치

  end



  #───────────────────────

  # ♧ 자신에게 데미지를 준다

  #───────────────────────

  def 데미지(dmg)

    return if not 액션하니?

    @hp = [@hp - dmg, 0].max

    @gauge = @hp.to_f / @maxhp.to_f

  end

  #───────────────────────

  # ♧ 자신을 죽인다

  #───────────────────────

  def 지워져!

      if @방식 == 1 or @방식 == "온" or @방식 == "on" 

    $game_switches[@스위치아이디] = true 

  end 

  if @방식 == 2 or @방식 == "오프" or @방식 == "off" 

    $game_switches[@스위치아이디] = false 

  end 

  if @방식 == 3 or @방식 == "교환" or @방식 == "change" 

    if $game_switches[@스위치아이디] == true 

      $game_switches[@스위치아이디] = false 

    end 

    if $game_switches[@스위치아이디] == false 

      $game_switches[@스위치아이디] = true 

    end 

  end

  if @방법 == 1

    $game_variables[@변수아이디] += @수치

  end

  if @방법 == 2

    $game_variables[@변수아이디] -= @수치

  end

  if @방법 == 3

    $game_variables[@변수아이디] *= @수치

  end

  if @방법 == 4

    $game_variables[@변수아이디] /= @수치

  end

    item = nil

    if (@item_id and @item_rate)

      if rand(100) < @item_rate

        item = $data_items[@item_id]

      end

    end

    armor = nil

    if (@armor_id and @armor_rate)

      if rand(100) < @armor_rate

        armor = $data_armors[@armor_id]

      end

    end


    if (@gold and @exp)

      $game_player.보상(@gold, @exp, item, armor)

    elsif (item)

      $game_player.보상(0, 0, item)

    elsif (armor)

      $game_player.보상(0, 0, armor)


    end

    moveto_outside

    erase

    return if 리젠되니?

    @hp = nil

    @dmg = nil

    @gold = nil

    @exp = nil

    @item_id = nil

    @item_rate = nil

    @armor_id = nil

    @armor_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.animation_id = 4

      $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, armor = nil)

    if 파티있니?

      $game_party.actors[0].exp += exp

      $game_party.gain_gold(gold)

      

     case armor

       when RPG::Armor

        $game_party.gain_armor(armor.id, 1)

      end      

     end

     

      if not item and not armor

        간단메세지(sprintf("돈: %d, 경험: %d 를 획득 했습니다.", gold, exp))           

      elsif not armor

        간단메세지(sprintf("돈: %d, 경험: %d, 아이템: %s 를 획득 했습니다.", gold, exp, item.name))           

      elsif not item

        간단메세지(sprintf("돈: %d, 경험: %d, 장비: %s 를 획득 했습니다.", gold, exp, armor.name))           

      elsif not gold and not exp

        간단메세지(sprintf("아이템:%s, 장비:%s를 획득 했습니다.", item.name, armor.name))

      else

        간단메세지(sprintf("돈: %d, 경험: %d, 아템: %s, 장비: %s", gold, exp, item.name, armor.name))

      end      

      case item

      when RPG::Item

        $game_party.gain_item(item.id, 1)

      when RPG::Weapon

        $game_party.gain_weapon(item.id, 1)

    end

  end


  #───────────────────────

  # ♧ 자신에게 데미지를 준다

  #───────────────────────

  def 데미지(dmg)

    return if not 액션하니?

    dmg = (dmg - $game_party.actors[0].pdef) 

    dmg = (dmg - $game_party.actors[0].agi)

    if dmg <= 0 

      dmg = 1 

    end 

    $game_party.actors[0].hp -= dmg

    보조메세지(sprintf("몬스터로부터 %d 의 데미지를 받았다", dmg))

    @gauge = $game_party.actors[0].hp.to_f / $game_party.actors[0].maxhp.to_f

  end

  #───────────────────────

  # ♧ 자신을 죽인다

  #───────────────────────

  def 다이 

    # 게임 오버 판정 

    rotate_party 

    $game_temp.gameover = $game_party.all_dead? 

  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)

          event.데미지($game_party.actors[0].str)

          보조메세지(sprintf("몬스터에게 %d 의 데미지를 주었다", $game_party.actors[0].str+$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    


이부분이 문제입니다.


근거리공격은 되는데 원거리 공격이 되지 않아서요.


스크립트를 고치고싶어도 용어를 알아먹질 못해서 안돼는군요.


첨부파일에서 다른건 건드리지 마시고 스크립트만 조정해주세요. 아직 미완성입니다.


스크립트 수정후에는 사용법도 올려주셨으면 합니다.

?
  • profile
    천둥번들 2014.05.28 16:40
    다른 액알을 쓰시는게 어떨지요...
    심플액알은 초보용으로 만들어진것으로써 원거리가 되지 않습니다.
  • ?
    소년영남 2014.05.29 00:47
    원래부터 없네요. 다른걸 찾아보셔야겠네요..
  • ?
    에이엔 2014.05.29 03:13
    심심치님 제가 저번에 캐릭터칩 수정을 부탁드렷는데 아예 저희팀도터 작업을 부탁드려도 될까요??
  • ?
    심심치 2014.06.04 10:26
    네이버 N드라이브 제 공유폴더에 초대했습니다.
  • ?
    에이엔 2014.06.04 05:42
    메일로 작업 시작할까요? future2423@naver.com
  • ?
    심심치 2014.05.31 11:29
    괞찮습니다. 시간이 난다면야

  1. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구인

    선불유심매입 텔레그램@brrsim_7 선불유심내구제 뽀로로통신 통신장기연체작업급전 선불유심매입 급전 연체자바로소액급전 선불유심구매 장기연체자소액급전

  2. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구인

    확실한급전업체 선불유심내구제 @brrsim_7텔레그램 선불유심매입 뽀로로통신 유심삽니다 선불유심구매 정식업체 급전 연체자무직자면허증급전 신불자생계비소액급전

  3. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구인

    텔레그램@brrsim_7 선불유심내구제 선불유심매입 뽀로로통신 간편긴급자금 무직자 모바일소액 급전 개인선불유심삽니다 선불유심구매 정식업체 급전

  4. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구인

    선불유심내구제 @brrsim_7텔레그램 소액급전 선불유심매입 뽀로로통신 급전 선불유심현금화하는업체 선불유심구매

  5. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구인

    텔레그램@brrsim_7 선불유심내구제 선불유심매입 뽀로로통신 주부소액급전바로급전 선불유심구매 급전인터넷무담보소액 막심삽니다

  6. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구인

    선불유심내구제 텔레그램@brrsim_7 선불유심매입 뽀로로통신 소액개인돈 급전 연체자바로소액급전 선불유심구매 무방문무서류

  7. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구직

    텔레그램@brrsim_7 선불유심내구제 뽀로로통신 유심매입 선불유심구매 급전 전국바로급전해결

  8. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구인

    선불유심내구제 텔레그램@brrsim_7 선불유심매입 뽀로로통신 주부소액내구제추천 급전 선불유심구매 연체자소액급전

  9. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구직

    텔레그램@brrsim_7 선불유심내구제 소액급전 선불유심매입 뽀로로통신 대학생소액급전 선불유심구매 급전

  10. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구직

    텔레그램@brrsim_7 선불유심내구제 선불유심매입 뽀로로통신 직장인바로소액급전 선불유심구매 급전 연체자바로소액급전 근로복지공단긴급생계비

  11. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구인

    텔레그램@brrsim_7 선불유심내구제 선불유심매입 뽀로로통신 정부지원긴급생계비 소액급전 선불유심구매 막심삽니다

  12. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구인

    텔레그램@brrsim_7 선불유심내구제 선불유심매입 뽀로로통신 급전 정부정책자금생활안정생계급전지원금 선불유심구매 연체자바로소액급전

  13. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구인

    선불유심내구제 텔레그램@brrsim_7 선불유심매입 뽀로로통신 급전 모바일급전 저신용자비상금소액 유심칩매입문의 선불유심구매

  14. No Image 07Jul
    by 선불유심내구제뽀로로통신
    2026/07/07 by 선불유심내구제뽀로로통신
    in 구인

    텔레그램@brrsim_7 선불유심내구제 선불유심매입 뽀로로통신 급전 연체자30만원소액 바로소액급전 선불유심구매 바로신불급전가능

  15. No Image 06Jul
    by 선불유심내구제뽀로로통신
    2026/07/06 by 선불유심내구제뽀로로통신
    in 구인

    선불유심내구제 텔레그램@brrsim_7 선불유심매입 뽀로로통신 소액급전내구제 급전 연체자바로소액급전 선불유심구매 대학생용돈

  16. No Image 04Mar
    by 팀스파르타
    2026/03/04 by 팀스파르타
    in 구인

    [대규모 모집/재택근무] 2026 게임기획 / Unity 게임개발 튜터

  17. 하이얀 프로젝트와 함께하실 2D 아티스트와 프로그래머를 모십니다!

  18. No Image 09Jul
    by 소나사운즈
    2024/07/09 by 소나사운즈
    in 구직

    [ 사운드 제작합니다 ] BGM, 효과음, 폴리, 성우 녹음, 믹싱, 마스터링

  19. No Image 09Jul
    by 소나사운즈
    2024/07/09 by 소나사운즈
    in 구직

    [ 사운드 제작합니다 ] BGM, 효과음, 폴리, 성우 녹음, 믹싱, 마스터링

  20. No Image 26May
    by 미국산고래
    2024/05/26 by 미국산고래
    in 구인

    도트 디자이너 구인합니다 (장르:공포,학교,고어,슈팅)

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 39 Next
/ 39


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

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