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 RPGVX Ace 스크립트 1인용메뉴 file A.M.S 2010.07.18 2608 0
287 RPGVX 스크립트 1인용메뉴 file A.M.S 2010.07.18 2560 0
286 RPGXP 스크립트 2D 마인크래프트 프로젝트 7 2013.09.26 3047 2
285 RPGVX 스크립트 3D 그래픽 파티클 스크립트 1 청담 2013.09.29 1272 0
284 RPGXP 스크립트 3D스크립트!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6 공박사 2014.01.18 2805 2
283 RPGXP 스크립트 8방향 이동스크립트 5 천둥번들 2014.02.22 1723 6
282 RPGXP 스크립트 8방향이동 1 1 file A.M.S 2010.10.14 2151 0
281 RPGXP 스크립트 8방향이동 1 file A.M.S 2010.10.14 2330 0
280 RPGMV 플러그인 9마리 이상의 몬스터 설정 | More Enemies 러닝은빛 2018.08.31 760 0
279 RPGVX Ace 스크립트 Ace로 만든 습작 랜덤 위치로 지형변환. JunkMan 2014.10.04 511 0
278 RPGMV 플러그인 Action Sequence Pack 2 (전투모드 액션 플러그인) 2 plam 2016.01.05 1819 0
277 RPGMV 플러그인 Advanced Game Time (게임에 시간개념을 적용해주는 플러그인) 2 plam 2016.01.06 1396 0
276 RPGXP 스크립트 AraLab_MultiStartingPoint (다중 출발점 스크립트, 캐릭터 선택 스크립트) ver.0.2beta 3  운 2014.01.21 1973 1
275 RPGMV 플러그인 Bind Pictures To Map (이미지 결합 플러그인) 3 file 이녕 2015.10.30 1048 0
274 RPGMV 플러그인 Crafting System (아이템 조합 시스템) 3 plam 2016.01.06 1706 0
273 RPGMV 플러그인 CSS 캔버스 필터 file 러닝은빛 2016.10.06 910 0
272 RPGVX Ace 스크립트 Custom Icon Sheets (커스텀 아이콘 적용 스크립트) plam 2016.01.10 470 0
271 RPGXP 스크립트 c[n] 명령어 줄때의 색상 결정. 창조도시 2008.02.14 1015 1
270 RPGXP 스크립트 c[n] 명령어 줄때의 색상 결정. 창조도시 2008.02.14 1438 1
269 RPGVX Ace 스크립트 Damage Popup by Dargor (데미지 수치 팝업하는 스크립트) plam 2016.01.10 612 0
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(김원배) | 사신지(김병국)