RPGXP 스크립트
2013.10.12 21:20

퀘스트 스크립트

조회 수 3100 추천 수 2 댓글 21
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제


 1.PNG

2.PNG

위에 그림처럼 나오게 합니다.

퀘스트 창 나오게 하기전에

# 주의사항 :
# 퀘스트가 하나도 없을시에는 에러가 납니다

 


# 퀘스트 로그 시스템
# game_guy 가이 만듬
# 빗자루씨 번역
# Version 3.0
#-------------------------------------------------------------------------------
# 간략한 소개:
# 퀘스트를 만들수 있는 스크립트 입니다.
#
# 구성 요소:
# 퀘스트가 완료되었을때 이름을 노란색으로 표시합니다.
# 퀘스트를 만들기 쉬워집니다.
# 존나게 긴 퀘스트를 만들수 있습니다.
# 그림을 띄워서 설명할 수 있습니다.
# 퀘스트를 추가하고 쉽게 클리어 할수 있습니다.
# 다른 쉬운 버전보다 가볍습니다.
#
# 설치방법:
# 조금 아래를 내려다보면 # 이 보입니다. 아래에 있는 대로 하세요..
# 이벤트 설정에서 스크립트 실행으로 아래를 응용할수 있습니다.
#
# 스크립트 목록:

#이벤트에 스크립트 에 써주면 됩니다.
# Quest.add(id) ~ 퀘스트(id)를 리스트에 추가합니다.
# Quest.take(id) ~ 퀘스트(id)를 리스트에서 삭제합니다.
# Quest.complete(id) ~ 퀘스트(id)를 완료합니다.
# Quest.completed?(id) ~ 퀘스트(id)를 완료했을때 값을 true로 돌립니다..
# Quest.has?(id) ~ 퀘스트(id)를 받았는지 확인합니다.
# $scene = Scene_Quest.new ~ 퀘스트 메뉴를 엽니다.

#
# 주의사항 :
# 퀘스트가 하나도 없을시에는 에러가 납니다.
# 적어도 퀘스트가 하나라도 있을때 퀘스트 창을 열수 있게 해주세요.
#
# 크레딧:
# game_guy ~ 이거 만들었습니다.
# 베타 테스터 ~ Sally and Landith
# Blizzard ~ 이 사람의 코드에서 조금 배꼈다고 하는군요.
# 빗자루씨 ~ 이거 번역한사람입네다.
#===============================================================================
module GameGuy
  #==================================================
  # Begin Config
  # UsePicture ~ true값으로 지정되었을때 그림을
  #              퀘스트창에 표시합니다만 false일때는 안합니다.
  #==================================================
  UsePicture   = false
  def self.qpicture(id)
    case id
    #==================================================
    # 퀘스트 그림
    # when x then return "그림" 방식으로 추가합니다.
    # x = id, 그림 = quotes 안에 있는 그림
    #==================================================
    when 1 then return "ghost"

    end
    return nil
  end
 
  def self.qname(id)
    case id
    #==================================================
    # 퀘스트 이름
    # when x then return "이름" 방식으로 추가합니다.
    # x = id, 이름 = quotes 안에 있는 이름
    #==================================================
    when 1 then return "첫번째 마을"
    #when 9 then return

     
    end
    return ""
  end
     $q = [0]
   for x in 1...600
   $q[x] = self.qname(x)
   end
  def self.qlocation(id)
    case id
    #==================================================
    # 퀘스트 장소
    # x = id, 장소 = quotes 안에 있는 장소
    #==================================================
    when 1 then return "마을"
    end
    return "????"
  end
 
  def self.qdescription(id)
    case id
    #==================================================
    # 퀘스트 설명
    # when x then return "설명" 방식으로 추가합니다.
    # x = id, 설명 = quotes 안에 있는 설명
    #==================================================
    when 1 then return " 나는 여행중에 첫번째 마을을 만나게될껏이다."end
    return ""
  end
 
end

module Quest
 
  def self.add(id)
    $game_party.add_quest(id)
  end
 
  def self.take(id)
    $game_party.take_quest(id)
  end
 
  def self.complete(id)
    $game_party.complete(id)
  end
 
  def self.completed?(id)
    return $game_party.completed?(id)
  end
 
  def self.has?(id)
    return $game_party.has_quest?(id)
  end
 
end
 
class Game_Party
 
  attr_accessor :quests
  attr_accessor :completed
 
  alias gg_quests_lat initialize
  def initialize
    @quests = []
    @completed = []
    gg_quests_lat
  end
 
  def add_quest(id)
    unless @quests.include?(id)
      @quests.push(id)
    end
  end
 
  def completed?(id)
    return @completed.include?(id)
  end
 
  def complete(id)
    unless @completed.include?(id)
      if @quests.include?(id)
        @completed.push(id)
      end
    end
  end
 
  def has_quest?(id)
    return @quests.include?(id)
  end
 
  def take_quest(id)
    @quests.delete(id)
    @completed.delete(id)
  end
 
end
class Scene_Quest
  def main
    @quests = []
    for i in $game_party.quests
      @quests.push(GameGuy.qname(i))
    end
    @map = Spriteset_Map.new
    @quests2 = []
    for i in $game_party.quests
      @quests2.push(i)
    end
    @quests_window = Window_Command.new(160, @quests)
    @quests_window.height = 480
    @quests_window.back_opacity = 110
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    @quests_window.dispose
    @quest_info.dispose if @quest_info != nil
    @map.dispose
  end
  def update
    @quests_window.update
    if @quests_window.active
      update_quests
      return
    end
    if @quest_info != nil
      update_info
      return
    end
  end
  def update_quests
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(1)
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @quest_info = Window_QuestInfo.new(@quests2[@quests_window.index])
      @quest_info.back_opacity = 110
      @quests_window.active = false
      return
    end
  end
  def update_info
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @quests_window.active = true
      @quest_info.dispose
      @quest_info = nil
      return
    end
  end
end
class Window_QuestInfo < Window_Base
  def initialize(quest)
    super(160, 0, 480, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    @quest = quest
    refresh
  end
  def refresh
    self.contents.clear
    if GameGuy::UsePicture
      pic = GameGuy.qpicture(@quest)
      bitmap = RPG::Cache.picture(GameGuy.qpicture(@quest)) if pic != nil
      rect = Rect.new(0, 0, bitmap.width, bitmap.height) if pic != nil
      self.contents.blt(480-bitmap.width-32, 0, bitmap, rect) if pic != nil
    end
    self.contents.font.color = system_color
    self.contents.draw_text(0, 0, 480, 32, "퀘스트:")
    self.contents.font.color = normal_color
    self.contents.draw_text(0, 32, 480, 32, GameGuy.qname(@quest))
    self.contents.font.color = system_color
    self.contents.draw_text(0, 128, 480, 32, "장소:")
    self.contents.font.color = normal_color
    self.contents.draw_text(0, 160, 480, 32, GameGuy.qlocation(@quest))
    self.contents.font.color = system_color
    self.contents.draw_text(0, 192, 480, 32, "완료 여부:")
    self.contents.font.color = normal_color
    if $game_party.completed.include?(@quest)
      self.contents.font.color = crisis_color
      self.contents.draw_text(0, 224, 480, 32, "완료")
    else
      self.contents.font.color = normal_color
      self.contents.draw_text(0, 224, 480, 32, "진행중")
    end
    self.contents.font.color = system_color
    self.contents.draw_text(0, 256, 480, 32, "스토리 설명:")
    self.contents.font.color = normal_color
    text = self.contents.slice_text(GameGuy.qdescription(@quest), 460)
    text.each_index {|i|
        self.contents.draw_text(0, 288 + i*32, 460, 32, text[i])}
  end
end
class Bitmap
 
  def slice_text(text, width)
    words = text.split(' ')
    return words if words.size == 1
    result, current_text = [], words.shift
    words.each_index {|i|
        if self.text_size("#{current_text} #{words[i]}").width > width
          result.push(current_text)
          current_text = words[i]
        else
          current_text = "#{current_text} #{words[i]}"
        end
        result.push(current_text) if i >= words.size - 1}
    return result
  end

end

 

 

 

?
  • ?
    Ruit 2013.10.12 21:41
    감사합니다
  • ?
     운 2013.10.12 21:58
    네 ㅎㅎ
  • ?
    두부 2013.10.12 21:43
    예제 파일 같은거 보여줄수 없나요?
    ㅠㅠ 어떻게 쓰는지 모르겠네요...
  • ?
     운 2013.10.12 22:15
    예제는 스크립트를사용못하거나,오류있는분들을 위해, 그의스크립트작동되는 Game.exe 입니다.
  • ?
    Ruit 2013.10.12 22:04
    ㅈ....저...이런말해도되나요..?초짜가 궁금해서..물어봅니다..ㅠ...ㅇ..예제가뭔가요..?전부터 궁금해서 미치긋음..
  • ?
     운 2013.10.13 01:10
    알겠습니다.
  • ?
    두부 2013.10.13 01:00
    여기 게시판에 올려주세여
  • ?
     운 2013.10.12 21:56
    예제 파일 어디에다 올려두는지 모르겠네요., 최신게임에 올려두기엔 그런데.,
  • ?
    카티스 2013.10.14 03:55
    으어어 사용법을 모르겟어요ㅜㅡ
  • ?
    ↑고수의길↑ 2013.10.14 04:52
    예제좀...
    True값 돌리는거 어떻게 하는지.
  • ?
    카티스 2013.10.14 06:47
    예제좀요...
    할주를 모르겟음.
  • ?
    카티스 2013.10.15 02:28
    예..예제가 필요해요..
    이해를..
  • ?
    카티스 2013.10.15 03:23
    으잇;;
  • ?
     운 2013.10.15 03:15
    나중에 예제 해드리겠습니다.
  • ?
    카티스 2013.10.15 03:05
    그러면 그럴 스크립트에넣고
    어디에 뭐라쳐야 돼는거죠;; 죄송합니다..
  • ?
     운 2013.10.15 03:01
    Xp 입니다. 모바일굳ᆞㅇ
  • ?
    카티스 2013.10.15 02:58
    rpgxp에서는 불가능한가요?
  • ?
     운 2013.10.15 02:46
    알만툴 에서 툴가시고 스크립트 가셔서,
    위에 스크립트를 복사해 , 알만툴에서 새로 스크립트 만들기 한다음, 붙여놓기
  • ?
    카티스 2013.10.15 02:42
    네..넵!
    근데 이거 사용을 어떻게 하는건지...
  • ?
     운 2013.10.15 02:39
    시간되면 예제 올리도록할게요.
  • ?
    빛소리 2014.03.01 23:57
    감사합니다.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
288 RPGMV 플러그인 타이틀 커맨드에 '게임종료'를 추가해줍니다. file 파란별빛 2015.10.26 114016 0
287 RPGVX Ace 스크립트 추천 스크립트 모음 2 철창노틸 2015.03.26 5850 1
286 RPGMV 플러그인 해상도 변경 플러그인 v0.1 4 file 카리스 2015.10.24 5689 2
285 RPGXP 스크립트 물가에가면 캐릭터를 반사시켜주는 스크립트 4 file 창조도시 2007.12.02 4994 7
284 RPGMV 플러그인 Mirror Area - RPG Maker MV 2 file 러닝은빛 2017.01.03 4740 0
283 RPGXP 스크립트 물가에가면 캐릭터를 반사시켜주는 스크립트 4 file 창조도시 2007.12.02 4490 6
282 RPGXP 스크립트 대화창에 이름&얼굴 띄우기 새로운방식. file 창조도시 2007.11.06 3594 3
281 RPGXP 스크립트 대화창에 이름&얼굴 띄우기 새로운방식. file 창조도시 2007.11.06 3464 3
280 RPGXP 스크립트 안티 렉 스크립트 2 2013.09.26 3327 1
279 RPGMV 플러그인 Item Stream 2 file 러닝은빛 2016.03.08 3196 0
» RPGXP 스크립트 퀘스트 스크립트 21  운 2013.10.12 3100 2
277 RPGVX Ace 스크립트 파티원 기차처럼 줄줄이 붙는 스크립트. 1 file 천무 2015.11.12 3087 0
276 RPGXP 스크립트 특정범위내에들어오면이동하기 2 file A.M.S 2010.10.14 3082 0
275 RPGVX 스크립트 vx 한글이름입력 2 file 가가상 2010.05.21 3061 1
274 RPGXP 스크립트 2D 마인크래프트 프로젝트 7 2013.09.26 3048 2
273 RPGMV 플러그인 Drain Percentage​​ : Hp/Mp Drain 스킬 타입 백분율 계산 플러그인 2 file MKMV 2015.11.15 3017 0
272 RPGMV 플러그인 Multiple HUD 6 file 러닝은빛 2016.01.12 2844 1
271 RPGVX 스크립트 에너미 아이템 변화 스크립트 1 Evangelista 2009.05.29 2835 1
270 RPGXP 스크립트 대화창에 얼굴 띄우기& 대화창 명령어 모음. 1 file 창조도시 2008.12.31 2817 1
269 RPGXP 스크립트 3D스크립트!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6 공박사 2014.01.18 2805 2
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 15 Next
/ 15






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

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