2k3 플러그인

001.png

002.png 003.png


http://rpgmaker.net/engines/rm2k3/utilities/32/


  SaveGlobal.dyn라는 별도의 파일에 각 세이브 파일에 대응하는 글로벌 변수를 저장하고 사용하는 기능을 통해 궁극적으로는 커스텀 세이브/로드 시스템을 구현하려는 시도에서 만들어진 플러그인입니다. DynRPG가 설치된 프로젝트에서만 구동 가능하며, DynPlugins 폴더 안에 해당 플러그인의 dll 파일이 들어 있습니다. 위 링크를 통해 배포페이지에서 해당 플러그인의 데모 파일을 다운로드 받을 수 있습니다. DynRPG에 대한 내용은 "습작의 스크립트 이야기 : 번외편 - 7편 : DynRPG(http://avangs.info/1031048)"를 참고해주세요. 해당 플러그인의 자세한 사용법에 대한 내용은 리드미를 참고하세요.


#. 리드미 내용

 

========================================================================

CMS Tools: Global Save Data (Store a range of variables) v1.0

For RPG Maker 2003 with DynRPG v0.13 or higher

By PepsiOtaku

========================================================================


This plugin was designed to work alongside the CustomSaveLoad patch. It saves variables from a particular 

save file into a binary "database" (SaveGlobal.dyn) and assigns them an identifier based on the save file

(Save13.lsd = an id of 13). Using this identifier, the plugin can import those variables from another save file.


This was built specifically for making a custom save/load menu. Imagine you are pressing up/down through save

files. Each time you do this, the menu needs to load specific pieces of data like HP & MP for each character,

gold, time played, etc. Each file has a separate set of data that has to be loaded on the spot. This simplifies

this process by using a variable called "ExportVar" as an export trigger (for saving) and a variable called

"ImportVar" as an import trigger (for loading). Set the ExportVar to the Save ID to index your variable range,

and set the ImportVar to the index you want to load. VarRangeStart and VarRangeEnd are used to define the 

variable range you wish to export/import.


Specifically, if you set your ExportVar to a number (9 for example), it takes what's currently stored in 

VarRangeStart-VarRangeEnd and places it into the SaveGlobal.dyn file under an index of "09." If you set the

ExportVar to 37, it will do the same thing in an index of "37." Indexes are stored in binary format in 

sequential order, so between save 9 and 37 would be a a ton of zeros if there was no data saved within 

indexes 10-36. 


For loading, set the ImportVar to the index number, and it will load the data for VarRangeStart-VarRangeEnd

and store them in those variables for the save file you have loaded. In my case, the index id's are the save

slots. This way, you could be in Save 37, and see what's those 100 variables were in Save 9. 


The one exception is that you can't use "0" for an index number. It has to be at least 1 due to how the 

binary file is structured.


With that in mind, if your range is 4101-4200, You could use the set variable command to set variable 4101

to a number representing a party member, v4102 to that member's max HP, v4103 to their max MP, etc. You can

kind of interpret that functionality in any way that would suit you, be it a save system, a high score 

system or anything else you can think up that uses variables. 


NOTE: Stick to small variable ranges. I wouldn't use more than 100 variables in your range, as you may get 

  unpredictable results, or crashes. 


NOTE 2: Do not set your variable range to 100 vars, save a bunch of games, and then set your range to 200 vars

  as this will corrupt the data in SaveGlobal.dyn. You must delete your old SaveGlobal.dyn, and then let

  the plugin create a new one.



Installation

-------------


To install the plugin, make sure that you have patched your project with cherry's AutoEnter patch, 

CustomSaveLoad patch, and DynRPG


1. Patch DynRPG onto your BetterAEP/CustomSaveLoad RPG_RT.exe.


2. Copy the "global_save_data.dll"into the DynPlugins folder of your own project.


3. Add the following (between the asterisks) to your DynRPG.ini 


**********************************************


[global_save_data]

VarRangeStart=4101

VarRangeEnd=4130

ExportVar=3346

ImportVar=3351


**********************************************


4. Change the numeric values to the variables of your choice. Again, it's super important that you stick to less

than 100 variables in your range. You probably don't need more than that anyway.



Note: If you want to use this for a custom save/load menu, make sure you install Cherry's CustomSaveLoad patch

  alongside BetterAEP. Using my default variable choices, you should have this setup:


(this is just my naming scheme, but you get the idea) 

3346: AEPSL-SaveSwitch --> ExportVar

3350: AEP-Selector --> Used by the AutoEnterPatch. 0 to launch the load menu, 2 to quit

3351: AEPSL-SaveID --> used to query 

3352: AEPSL-SaveExists --> 1 if save exits, 0 if it doesn't

3353: AEPSL-HeroLevel --> not used

3354: AEPSL-HeroHP --> not used

3355: DynRPG-LoadSaveInfo  --> ImportVar

4101-4130 (The "global" variables) - Hero ID, Level, HP, MP for all 4 party members (16 vars), saves, location,

  gold, playtime hours/mins/seconds (3 vars) was my setup


Instructions

-------------

The nature of how this plugin gets used is very complex, so I'd recommend getting comfortable with

Cherry's BetterAEP & CustomSaveLoad patch before trying to figure this out.



1. In your save file event call, set all of the vars you're using in your range to their respective values

   and then add the following:


   <>Variable Oper: [3346:AEPSL-SaveSwitch] Set, Var [FileSelected]'s Value (FileSelected is used as the index id)

   <>Wait: 0.1 Sec

   <>Variable Oper: [3351:AEPSL-SaveID] Set, Var [FileSelected]'s Value

   <>Open Save Menu (in The SaveLoad patch, this saves the file defined in the previous line)  



2. In your menu, when you select a file, you should have some kind of a "LoadFile" event call. In this event call,

   first set your var range to 0 (to reset all vars before loading them from SaveGlobal.dyn). At this point,

   you should also have a variable set to the selected file (I'll call "FileSelected"). Do the following:


   <>Variable Oper: [3351:AEPSL-SaveID] Set, Var [FileSelected]'s Value   

   <>Variable Oper: [3355:DynRPG-LoadSaveInfo] Set, Var [FileSelected]'s Value 

   <>Variable Oper: [3352:AEPSL-SaveExists] Set, Var [3351:AEPSL-SaveID]'s Value 

   <>Branch if Var [3342:AEPSL-SaveExists] is 1

   (At this point, all of your vars have been loaded, so you can refer to them and draw them on screen using DynText)


Who's 습작

profile

* 게임소재 자료실 관리자 (2012.04.17 ~ ) / 게임리뷰 게시판 관리자 (2012.08.23 ~ )
* 개인 블로그 : http://eternalworld.tistory.com
* 리뷰 블로그 : http://etude87.tistory.com
* 팀 블로그 : http://teamel.tistory.com
* 작업물 영상 : https://www.youtube.com/user/juillet29/videos
* RPG Maker VX 메뉴 편집기 : http://eternalworld.tistory.com/426
* RPG Maker Ace 메뉴 편집기 : http://eternalworld.tistory.com/417
* RPG Maker 시리즈 구매 가이드 : http://etude87.tistory.com/69
* RPG Maker DLC 라이선스 정리 : http://etude87.tistory.com/126
* RPG Maker RTP 정리 : http://etude87.tistory.com/161
* RPG Maker 시리즈 한글패치 정리 : http://etude87.tistory.com/174
* 쯔꾸르 시리즈 이용 규약 : http://etude87.tistory.com/171