본문 바로가기

렌파이

캐릭터 이미지가 눈을 깜박거리고 대사에 맞춰 입을 움직이게 하기 캐릭터 이미지가 눈을 깜박이고 대사중일 때 입을 움직이게 하는 스크립트입니다. 렌파이 위키의 쿡북 페이지에 실려있는데 직접 사용해보니 설명이 필요할 거 같아 적습니다. 원본 스크립트에 있는 문제점 1. 롤백, 그러니까 마우스 휠 위로 올려서 이전의 대사를 다시 표시 하면 캐릭터 입이 계속 움직인다. >> 버뜨 이건 렌파이의 롤백 시스템때문에 어떻게 될 것 같지가 않네요. 2. 텍스트창에 점을 찍을 때도 입을 움직인다 (................ 이 문제를 해결하려고 임의로 스크립트를 좀 수정했습니다. 난 원본을 쓰고 싶다!! 하시는 분은 하이라이트된 스크립트를 지우고 사용하시면 됩니다. 양이 좀 많아 보이는데, 주석 지우면 몇 줄 안 됩니다. init python: # 드립을 치고 있는 상태를 나타내.. 더보기
렌파이 CG갤러리 스크립트 설명 이하는 6.13 버전 이전에서 CG 갤러리를 만드는 스크립트입니다. 현재는 따로 CG 갤러리를 만드는 방법이 생겼으니 이 페이지를 참고하세요. (여전히 복잡하긴 마찬가지입니다..--;) -------------------- (렌파이 위키의 쿡북 페이지에 있는 CG 갤러리 스크립트 설명입니다. 예전에 작성한 글을 옮겨왔습니다) 이 코드를 사용하면 CG 갤러리를 사용할 수가 있게 되는데 주석도 영어로 써있고 코드도 한 줄로만 되는 게 아니라서 알아보기 힘들다. 고로 약간 번역을 했음. 1. 일단 여기서 new_gallery.rpy 파일을 받고 game폴더에 넣어둔다. 2. init: # 갤러리 네비게이션의 위치. 화면 오른편. $ style.gallery_nav_frame.xpos = 800 - 10 $ s.. 더보기
선택지에 자동으로 핫키 바인딩, 넘버링 하기 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를 사용해서 단축 버튼 스크린을 추가. 액션이랑 이런 건 매뉴얼에서 찾아보고 필요한 걸 가져다 쓰면 됨. 예제..는 설명했던 것보다 약간 더 기능을 추가함.. 더보기
config.say_menu_text_filter 사용하기 config.say_menu_text_filter config.say_menu_text_filter = None None이 아니라면, say와 menu문 내의 문자열에서 발견되는 텍스트를 제공하는 함수입니다. 그것들을 대체할 새로운(혹은 같은) 문자열을 반환하여야 합니다. 간단하게 온라인 게임에 보면 욕 필터링 있잖아염. 그거 생각하시면 됩니다. 자동으로 텍스트 태그를 입력하기 문장 부호 다음에 {w=.2}라는 텍스트 태그를 써넣고 있었는데 일일히 써넣기가 귀찮아서 만들었음. init python: import re def auto_tag(input): expr = re.compile(r'(\,|\.|\?|\!)\s') input = expr.sub("\g {w=.2}", input) return inp.. 더보기
screen 블록에서 ui.callsinnewcontext 사용하기 더불어 callsinnewcontext와 세이브/로드/롤백에 관련한 설명도 적어놓았습니다.. init: screen test: hbox: align (.5,.5) textbutton '테스트' action ui.callsinnewcontext('firstclass') textbutton '결과보기' action Return() $ num = 0 label start: call screen test #################### # 중요 ############### # 스크립트 진행 흐름이 여기로 넘어왔을 때, 그러니까 아래의 대사가 표시된 때에만 저장이 가능하게 해야합니다.. # 그 이유는 firstclass 에 써 놓은 주석에서 확인을.. '테스트한 횟수: %(num)s' # 근데 만약에 테스트.. 더보기
렌파이 게임 자동업데이터 렌파이 6.14 이후 엔진 자체에 업데이트 기능이 추가되었습니다. 해당 기능에 대한 안내글은 이쪽에 있습니다. http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=7618&start=0 1. 버그가 있다고 한다. 2. 사용하기 위해선 첨부한 파이썬 라이브러리를 게임폴더든 어디든간에 넣어두어야 한다. 어떻게 써먹는 건지 결국 알아냈다. 뭔소린지 하나도 이해 안 가서 첨부터 샅샅이 뜯어봤음(의지의 한국인..-0-). 준비물 웹 호스팅 계정. 본인은 paran 비즈프리에서 무료로 얻었습니당.. 위에 링크해둔 포럼 쓰레드에 가서 index.txt 와 web.rpy를 다운로드. 위에서 받은 파일이 안 먹힌다면 아래 파일을 다운로드해서 사용해보시기 바랍니다. index.t.. 더보기
레이아웃 이미지맵을 스크린 언어로 컨버팅 http://dev.renpy.org:6112/ 메인 메뉴를 꾸미기 위해 사용한 layout.imagemap 스크립트를 새로 추가된 스크린 언어용 스크립트로 변환해준다. 작업했던 스크립트를 입력하고 밑에 컨버트 버튼을 누르면 됨. 밑에 쓰인 설명 1. 이 컨버터는 아직 덜떨어져서 핫스팟 아래에 키워드 인수(variant)나 추가적인 인수(layout.ARE_YOU_SURE : "yesno_are_you_sure.png")는 변환하지 못한다. 2. 코드 안에 스크린 언어에서 사용될 스타일에 대해 적어두지 마셈. 그건 변환 못함요. 더보기
렌트윗 Rentweet http://polymorphic.shiranai.org/blog/2010/09/08/rentweet/ http://lemmasoft.renai.us/forums/viewtopic.php?f=16&t=7658&hilit=LordShiranai130514 렌트윗 홈이 접속할 수 없는 상태라 렘마 소프트 포럼에 렌트윗 파일이 올려진 토픽을 링크합니다. 렌트윗 홈에서 받은 파일도 같이 업로드합니다. 포럼에 올려진 파일은 0.3버전이며 제가 올려둔 파일은 1.0 버전입니다. 렌트윗은 MIT 라이선스를 따릅니다. 렘마 소프트 포럼의 LordShiranai 라는 유저가 제작한 렌트윗입니다. 렌파이 비주얼 노벨 엔진에서 작동하는 프레임워크. 렌트윗은 Tweepy 를 기반으로 만들어졌는데, 트위터 스테이터스를 게임 내.. 더보기
렌파이용 전투 엔진.. http://lemmasoft.renai.us/forums/viewtopic.php?f=16&t=7207 비상용(non commercial)게임에 한하여 사용할 수 있다. (CC BY-NC) 다운받아서 압축 풀고 프로젝트 디렉토리에 넣은 다음 런처에서 프로젝트 선택>battle-engine 선택하면 launch를 누르고 실행해볼 수 있다. 패스 전투 / 실시간 전투(FF시리즈식) / simple grid 전투 (시뮬레이션 RPG의 그 방식..) / 속성이 추가된 전투 / 스프라이트가 추가된 전투 / 장비/아이템 시스템 / 커스텀 스킬 / 화면 이동 등을 이용할 수 있다. ..개인적으론 이걸 쓰느니 차라리 RPG만들기 시리즈를 쓰는 게.. 아차 그건 유료 툴이지....; 더보기
스크린 언어 활용 1. 각 ui 함수에 상응하는 스크린 언어 명령문은 대개 ui.함수에서 ui. 를 뺀 것과 동일. # 주의 # ui 함수는 python 블록 안에, 스크린 언어 명령문은 # screen 블록 안에 입력해야함. $ ui.textbutton('글자', clicked = ui.returns(1) ) screen textbutton_test: textbutton '글자' action Return(1) # ui. 함수로 입력받은 값은 ui.interact() 에 저장되지만 # 스크린 언어 명령문의 Return()을 사용하면 그 값은 _return 변수에 저장된다. 대신 ui.adjustment 와 ui.layer 등 일부 ui 는 상응하는 명령문이 없으므로 파이썬 블록이나 파이썬 라인으로 적어줘야 한다. ui.c.. 더보기
렌파이에서 쓰이는 용어들 문자열이나 변수, 함수같은 용어랑 렌파이 참고문서에 나와있는 용어들은 뺐습니다. 참고문서에 있는 용어라도 번역을 여러 개의 단어로 한 경우엔 적어놓았습니다. 원래 용어 번역에 사용한 용어 설명.... ... 순으로 적었습니다. Label 라벨, 레이블 1. 라벨이라고 적은 경우는 label 명령문 등을 가리킬 때 사용하고 2. 레이블이라고 적은 경우는 이름표의 의미를 가리킬 때 사용했다. 1의 예: label start: ==스타트 라벨 2의 예: 환경 설정 들어가서 보면 음악 볼륨/ 효과음 볼륨/ 음성볼륨 이렇게 각 옵션에 대한 기능이 써있는 텍스트가 있다. 그걸 레이블이라고 번역. 물론 원래 발음은 레이블이 더 가까움..-.- (Logical) Line (논리)행. 라인. 쉽게 말하자면 스크립트 작성.. 더보기