상점

간단한 여관 by Tsunokiette@Creation Asylum

by 백호 posted Feb 22, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
http://www.dubealex.com/asylum/index.php?showtopic=9362
  간단한 여관스크립트입니다.  호출법은 이벤트 명령->스크립트에서:
a = #여관 비용
b = #주인의 인사말('어서 오세요~ 하룻밤에 $$$입니다.  쉬어가시겠습니까?')
c = #작별인사('안녕히 가세요~')
call_inn(a,b,c)

호출 예:
a = 300
b = '어서 오십시오.  하룻밤 자는데 300G입니다.  자고 가시겠습니까?'
c = '이용해 주셔서 감사합니다.'
call_inn(a,b,c)


#==============================================================================
# ** Inn
#------------------------------------------------------------------------------
# Tsunokiette
# 2
# 2006-06-12
#
# Edited by Zeriab
# 2006-06-13
#==============================================================================

# Quick Call
def call_inn(a,b,c)
  $scene = Inn.new(a,b,c)
end

#=================================================================
# ** Scene Inn
#=================================================================
class Inn
   
    #=================================================================
    # * Initialization
    #-----------------------------------------------------------------
    # Cost = Ammount of Money to Charge.
    # Message A = Message to say hello and ask if you want to stay.
    # Message B = Message to say once you've stayed and are leaving.
    #=================================================================
    def initialize(cost,message_a,message_b)
        @cost = cost
        @hello = message_a
        @goodbye = message_b
    end
 
    #=================================================================
    # * Main Proccessing
    #=================================================================
    def main
        @bitmap = Spriteset_Map.new
        @gold = Window_Gold.new
        @gold.x = (640 - @gold.width)
        @gold.y = 0
        @choice = Window_Command.new(200,['Yes','No'])
        width = @choice.contents.text_size('Yes').width + 40
        @choice.dispose
        @choice = Window_Command.new(width,['Yes','No'])
        @choice.width = width
        @choice.y = 214
        @choice.index = 0
        @message = Window_Message.new 
        $game_temp.message_text = @hello.dup   
        @message.visible = true
        # Execute transition
        Graphics.transition
        loop do
            Graphics.update
            Input.update
            @choice.update
            @bitmap.update
            $game_temp.message_text = @hello.dup   
            @message.refresh
            @message.update           
            if Input.trigger?(Input::C)
                case @choice.index
                when 0
                    if $game_party.gold >= @cost
                        for actor in $game_party.actors
                          actor.hp = actor.maxhp
                          actor.sp = actor.maxsp
                        end
                        @gold.visible = false
                        @message.visible = false
                        @choice.visible = false
                        @choice.active = false
                        $game_party.lose_gold(@cost)
                        @gold.refresh
                        tone1 = Tone.new(-255,-255,-255,255)
                        tone2 = Tone.new(0,0,0,0)
                        $game_screen.start_tone_change(tone1, 20)
                        wait = 0
                        max_wait = 165
                        while wait < max_wait do
                          if wait == 20
                            $game_system.me_play(RPG::AudioFile.new('014-Inn01'))
                          end
                          if wait == max_wait - 20
                            $game_screen.start_tone_change(tone2, 20)
                          end
                          wait += 1
                          $game_screen.update
                          Graphics.update
                          @bitmap.update
                        end
                        @gold.visible = true
                        @message.visible = true
                    else         
                        @choice.visible = false
                        @choice.active = false
                        @goodbye = "It appears you don't have enough money."
                    end
                end
                break
            elsif Input.trigger?(Input::B)
                break
            end
        end
        @choice.visible = false
        @choice.active = false 
        $game_temp.message_text = @goodbye.dup   
        loop do
            Graphics.update
            Input.update
            @bitmap.update
            $game_temp.message_text = @goodbye.dup
            @message.update
            @message.refresh
            if Input.trigger?(Input::C) or Input.trigger?(Input::B)
                @message.visible = false
                break
            end
        end
        @gold.dispose
        @message.dispose
        @choice.dispose
        @bitmap.dispose
        $scene = Scene_Map.new
    end
end