# ▶ 메세지 띄우기 - 준돌
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오류나타나네요 머가 문제이죠?
저장하고 불러오면 안되요