본문 바로가기

렌파이/스크립트 예제

이미지에 원근법을 적용시키는 CDD 렌파이에는 이미지에 원근법을 적용해 표시하는 기능이 없습니다. 그래서 만들어봤네요. 렌파이슈타인이라는 레이 캐스팅 예제를 참고해서 CDD로 만들어봤습니다. 미술로 따지자면 1점 투시도 기법(-_-;) 을 통해 이미지에 원근법을 적용하는 CDD입니다. 예제에서 사용한 이미지는 이곳에서 구했습니다. > http://www.loftwork.com/developertest/2012/08/28/%E3%82%A2%E3%83%83%E3%83%97%E3%83%86%E3%82%B9%E3%83%88/ init python: class persTile(renpy.Displayable): def __init__(self, tile, width, height, vp = (0.5, 0.5), top = 0, **kwargs): .. 더보기
아날로그: 어 헤이트 스토리 소스 스크립트가 공개되었습니다 설명 및 다운로드I’ve been meaning to release the source code to Analogue for ages; sorry about taking so long! Here are a... tmblr.co/Z4sLZykBwst4— Christine Love (@christinelove) 2013년 5월 4일 아날로그: 증오록(Analogue: A Hate Story)의 제작자 크리스틴 러브가 게임 스크립트를 "영구 공개"했습니다. 위 트윗의 링크를 따라가시거나 아래의 링크를 클릭하면 아날로그의 스크립트를 다운로드할 수 있습니다. http://loveconquersallgam.es/post/49592102340/ive-been-meaning-to-release-the-source-co.. 더보기
버튼에서 글자와 이미지를 겹쳐 쓰는 법 screen xxx: textbutton "[month]월 [day]일" background "button.png" #........ $ ui.textbutton('글자', background = "button.png") 넵..보시다시파, 해당 버튼에서 background 라는 스타일 속성을 사용하고픈 이미지 이름으로 바꿔주면 되겠습니다. 예전에도 같은 질문을 받은 적이 있는데 그 때는 안 된다고 말씀드렸습니다만.. 두 번째로 질문을 받으니까 방법이 생각나더군요;; 예제라고까지 할 건 없지만 대략 방법을 적어봤습니다. 더보기
스크린 언어로 3개의 텍스트를 표현하는 대사창 만들기 문자열에 사용할 수 있는 .find 함수와 문자열 인덱싱을 이용하여 만들었습니다. init python: style.window['thought'].background = "#12345640" style.window['thought'].xmaximum = 400 init python: e = Character('아이린') b = Character('백안시', show_two_window = True) screen say: default side_image = None default two_window = False # what.find는 대사에서 | 표시를 찾아서 그 인덱스를 반환합니다. # 못 찾으면 -1을 반환합니다. # thinkTF 는 그렇게 반환된 위치를 저장하는 변수입니다. $ thinkTF .. 더보기
드래그 앤 드롭 예제 예제 설명(영문) 및 다운로드 이미 맞춰진 퍼즐 위에 다른 곳에 있던 퍼즐을 올려놓았을 경우, 퍼즐끼리 서로 위치를 바꾸도록 하는 함수가 나와있는 유용한 예제입니다. (제가 예전에 미니게임 만들 때 실패했던 부분이 바로 이 부분입니다-0-) 더보기
컴퓨터에서 시간정보를 받아 렌파이에서 표시하기 init python: from time import localtime, strftime import time def clock(st, at): realTime = strftime("%X %p", localtime()) ui.frame() return ui.text('%s' %realTime, color = '#fff'), .5 init: image cl = DynamicDisplayable(clock) label start: scene bg default show cl at Position(xalign = 1.0, yalign =0) '방문 가능 시간이 저녁 9시라고 했다.' '어디 보자 지금은..' $ now = time.localtime() '[now.tm_hour]시 [now.tm_min]분인가' 더보기
트랜지션 중에도 대사창을 표시하기 대사창만 표시하는 경우 init python: _window = True 이렇게 해두면 화면전환효과가 일어날 때도 대사창은 표시됩니다. 다만 이 때는 대사같은 건 없이 빈 대사창만 덩그러니 떠 있게 됩니다. 대사도 함께 나타나도록 init python: def say_with_transition(chara, what, image, transition): chara((what+'{fast}'), interact=False) renpy.with_statement(None) renpy.show(image) renpy.transition(transition) chara((what+'{fast}'), interact=False) renpy.pause(.5) init python: baek = Character('.. 더보기
그림으로 선택지를 만드는 법 # 아예 menu 문을 쓸 때마다 그림을 선택지로 만들 때 init: screen choice: window: style "menu_window" vbox: style "menu" for caption, action, chosen in items: if action: imagebutton idle caption hover (caption[:-4] + "_hover.png") action action else: text caption style "menu_caption" # 이 때는 선택지로 쓸 문장이 표시할 그림 파일이름이 되고 # 마우스가 그림 위에 올라가 있을 때는 그림파일이름+_hover.png 라는 이름을 가진 파일이 사용됨. # 그러므로 사용할 이미지 파일이 image.png 라면, image_.. 더보기
이전에 골랐던 선택지를 다르게 표시하는 방법 init: $ style.menu_choice_chosen_button.background = '#123456' init: screen choice: window: style "menu_window" vbox: style "menu" for caption, action, chosen in items: if action: if not chosen: button: action action style "menu_choice_button" text caption style "menu_choice" elif chosen == True: button: action action style "menu_choice_chosen_button" text caption style "menu_choice_chosen" else.. 더보기
스크린언어에서 persistent 변수를 사용하려면. SetField 를. textbutton '네' action SetField(persistent, 'Under19', True) textbutton '아니오' action SetField(persistent, 'Under19', False) persistent 는 SetVariable에서 사용할 수 없습니다. # 안먹힘 textbutton " 네" action SetVariable("persistent.Under19", True) http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=9213 더보기
선택지에 자동으로 핫키 바인딩, 넘버링 하기 transform choice_appear: yanchor 0.0 ypos .9 alpha 0 linear .24 yalign 1.0 alpha 1.0 on hide: linear .24 yanchor .0 ypos .9 alpha 0 screen choice: window: at choice_appear style_group "choice" yalign 1.0 has vbox $ k = 1 for label, action, chosen in items: if action: $ nkey = "%s" %k $ nLabel = nkey +'. ' + label key nkey action action textbutton nLabel: action action xfill True else: text label.. 더보기
조건에 따라 다른 선택지를 나타내는 법 # 1. 리스트와 set 이용 init: $ choices = [ ] label start: menu menu1: set choices "What should I choose?" "Choice 1.": "I choose 1." "Choice 2.": "I choose 2." "Choice 3.": "I choose 3." "Choice 4.": $ choices.remove("Choice 4.") # 에러 방지용 "I choose 4." jump menu1 # if문 이용. init: $ choice1 = choice2 = choice3 = True label start: menu menu2: "What should I choose?" "Choice 1." if choice1: "I choose 1." .. 더보기
웹에 있는 텍스트 파일을 읽어서 렌파이에 띄우기.. label splashscreen: python: import urllib # 아래의 문자열에 적힌 주소에 있는 파일을 읽어서 렌파이에서 읽을 수 있게 한다. a = urllib.urlopen("http://baekansi.hosting.paran.com/data/Quietdrive-jessica.txt") # 텍스트파일은 저장할 때 인코딩을 utf-8로 설정하고 저장해야한다. ReleaseNotes = a.read().decode("utf-8") # a를 읽고 그것을 utf-8로 디코드 vp=ui.viewport(draggable=True, mousewheel=True, xmaximum=680,ymaximum=240, xalign=0.5, yalign=.85) ui.frame() ui.vbox() ui.. 더보기
트랜지션 / ATL 사용 중일 때 클릭 방지하기 label start: #ATL 안 쓸 때 scene night off $ renpy.transition(Dissolve(2)) $ renpy.pause(2) #ATL쓸 때 scene night on: truecenter linear 2 rotate 360 $ renpy.pause(2, hard = True) #이런 짓을 매번 하면 플레이어 입장에서 겁나 귀찮으니까 되도록이면 하지 맙시다. 더보기
스크린 언어로 단축버튼 쉽게 만들기 6.13 버전에서 screens.rpy 파일에 추가되었습니다 -- 뭐라고 표현해야 될지 몰라서 단축버튼이라고 썼는데 대사창 위에 표시되는 스킵, 퀵세이브, 퀵로드 이런 버튼을 얘기하는 거다. 쿡북에 Adding On-Screen Button 보면 옛날 방식만 적혀있어서 블로그에다가 따로 적는다. 1. 단축버튼을 스크린 언어로 만든다. 자신이 필요한대로 작동하게 하려면 렌파이 새 문서에서 적절한 액션을 찾아 확인한다. 2. 매뉴얼의 특수한 스크린 이름들 페이지에서 단축버튼을 사용할 스크린을 찾아서 해당하는 스크린의 스크립트를 가져다가 복사한 다음에 use를 사용해서 단축 버튼 스크린을 추가. 액션이랑 이런 건 매뉴얼에서 찾아보고 필요한 걸 가져다 쓰면 됨. 예제..는 설명했던 것보다 약간 더 기능을 추가함.. 더보기