안녕하세요. 플러그인 이용하다 막혀서 질문드립니다!
MOG_CharSelect 플러그인이라고 해서 게임 시작시에 파티를 정하는 플러그인입니다.
총 액터는 6명이고 처음 플레이시 5명만 선택 가능하게 해놓고
엔딩을 보면 6번째 액터가 선택 가능해지는 이벤트를 만들고 싶은데요.
플러그인 기능에서 액터를 숨기는 기능은 있는데 숨김을 해제하는 커맨드가 없어서
스크립트 상으로 처리해야 할것 같은데 제가 이쪽은 문외한이라 ㅠㅠ
플러그인 파일이랑 파라미터 첨부할테니 봐주시면 감사하겠습니다!
-------------------------------------
var Imported = Imported || {};
Imported.MOG_CharSelect = true;
var Moghunter = Moghunter || {};
Moghunter.parameters = PluginManager.parameters('MOG_CharSelect');
Moghunter.skipActorIDs = Object(Moghunter.parameters['Hide Actor IDs'] || 0);
Moghunter.charSel_FaceX = Number(Moghunter.parameters['Face X-Axis'] || 30);
Moghunter.charSel_FaceY = Number(Moghunter.parameters['Face Y-Axis'] || 0);
Moghunter.charSel_Face2X = Number(Moghunter.parameters['Face 2 X-Axis'] || 690);
Moghunter.charSel_Face2Y = Number(Moghunter.parameters['Face 2 Y-Axis'] || 150);
Moghunter.charSel_Face2S = Number(Moghunter.parameters['Face 2 Space'] || 90);
Moghunter.charSel_PictureX = Number(Moghunter.parameters['Picture X-Axis'] || 70);
Moghunter.charSel_PictureY = Number(Moghunter.parameters['Picture Y-Axis'] || 0);
Moghunter.charSel_CursorX = Number(Moghunter.parameters['Cursor X-Axis'] || 0);
Moghunter.charSel_CursorY = Number(Moghunter.parameters['Cursor Y-Axis'] || 0);
Moghunter.charSel_CursorR = Number(Moghunter.parameters['Cursor Rotation'] || 0.02);
Moghunter.charSel_NameX = Number(Moghunter.parameters['Name X-Axis'] || 20);
Moghunter.charSel_NameY = Number(Moghunter.parameters['Name Y-Axis'] || 525);
Moghunter.charSel_parX = Number(Moghunter.parameters['Par X-Axis'] || 270);
Moghunter.charSel_parY = Number(Moghunter.parameters['Par Y-Axis'] || 200);
Moghunter.charSel_parFontSize = Number(Moghunter.parameters['Par Font Size'] || 22);
Moghunter.charSel_initPartySize = Number(Moghunter.parameters['Initial Party Size'] || 4);
Moghunter.charSel_rolRange = Number(Moghunter.parameters['Ring Size'] || 200);
------------------------------
해당 스크립트를 살펴보니...
240줄 부근에 원하시는 모든 부분에 대한 정보가 들어 있습니다.
Scene_CharSelect.prototype.loadFiles = function() {
this._faceBitmaps = [];
this._faceBitmaps_S = [];
this._pictureBitmaps = [];
this._skipID = [];
this.setvar(this._skipID,Moghunter.skipActorIDs);
$gameParty._actors = [];
for (var i = 1; i < $dataActors.length; i++) {$gameParty.addActor(i)};
var membersTemp = $gameParty.members();
$gameParty._actors = [];
for (var i = 0; i < membersTemp.length; i++) {
var enable = true;
var actor = membersTemp[i];
for (var s = 0; s < this._skipID.length; s++) {
if (actor._actorId === this._skipID[s]) {enable = false};
};
if (enable) {
this._actors.push(actor)
var fileName = String("Actor_" + actor._actorId)
this._faceBitmaps.push(ImageManager.loadACharSelectFaces(fileName));
this._faceBitmaps_S.push(ImageManager.loadACharSelectFacesS(fileName));
this._pictureBitmaps.push(ImageManager.loadPicture(fileName));
};
};
this._maxPartySize = Math.min(Math.max(Moghunter.charSel_initPartySize,1),this._actors.length);
};
페이스칩과 캐릭터 이미지 등등이 지정되는 부분이 있습니다.
여기에서 _skipID에 들어있는 숫자 중에 actorId에 해당하는
숫자와 일치하면 ( if (actor._actorId === this._skipID[s]) {enable = false}; )
false 상태로 아래의 if (enable) {} 안에 있는 처리.
즉, 파티 멤버로 등록을 하지 않고 이미지를
로딩하지도 않는 구조입니다.
올려주신 스크립트의 기본적인 처리는 RPG MV의
시스템을 확장한 것 뿐이라서 이미지들을 보여주기
위한 효과만 들어가 있습니다.
전투나 다른 스킬 등등에 대한 것은 일절 담겨있지 않습니다.
그냥 파티 동료의 등장 / 퇴장만을 다루고 있습니다.
240줄 부근에 있는 스크립트를 참고해서 작성해보시면
원하시는 결과를 얻으실 수 있을 거라고 생각합니다.
좀 더 설명을 드리자면 240줄 부근에 있는 loadFiles함수는
필요한 때마다 파티관련 데이터를 초기화하는 방식으로
$dataActors.length(등장하는 전체 캐릭터 전체 수)
만큼을 미리 복사해두고 비교해서 실제로 쓸
캐릭터에 대한 정보를 지정해주는 방식입니다.
Moghunter.skipActorIDs의 값을 변경시켜주신 다음에
Scene_CharSelect.loadFiles(); 로 함수를 실행시키면
파티에 대한 모든 정보가 초기화 될 겁니다.
게임 엔딩을 보았다는 판정은 어떻게 하는지는 모르습니다만
알고 계신다면 적용하는데에는 크게 무리가 없으실 겁니다.