<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WrapEarth アーカイブ - だくまたゲーム制作ブログ</title>
	<atom:link href="https://d9m.conohawing.com/category/org/wrapearth/feed/" rel="self" type="application/rss+xml" />
	<link>https://d9m.conohawing.com/category/org/wrapearth/</link>
	<description></description>
	<lastBuildDate>Sun, 04 Dec 2022 15:51:11 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>【WrapEarth】VXAceをMZに移植④～ウィンドウ調整プラグインその２【RPGツクール】</title>
		<link>https://d9m.conohawing.com/org_we_004/</link>
					<comments>https://d9m.conohawing.com/org_we_004/#respond</comments>
		
		<dc:creator><![CDATA[だくまた]]></dc:creator>
		<pubDate>Sun, 04 Dec 2022 15:51:10 +0000</pubDate>
				<category><![CDATA[WrapEarth]]></category>
		<category><![CDATA[作成中]]></category>
		<category><![CDATA[自作ゲーム]]></category>
		<guid isPermaLink="false">http://d9m.one/?p=1888</guid>

					<description><![CDATA[<p>目次 ●はじめに●公式コード調査▷setHandlerとaddCommandを使う？▷Window_MenuCommand調査●プラグイン修正▷プラグイン▷独自メニュー作成●感想▷今回のプラグインについて▷公式コードにつ [&#8230;]</p>
<p>投稿 <a href="https://d9m.conohawing.com/org_we_004/">【WrapEarth】VXAceをMZに移植④～ウィンドウ調整プラグインその２【RPGツクール】</a> は <a href="https://d9m.conohawing.com">だくまたゲーム制作ブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">●はじめに</a></li><li><a href="#toc2" tabindex="0">●公式コード調査</a><ol><li><a href="#toc3" tabindex="0">▷setHandlerとaddCommandを使う？</a></li><li><a href="#toc4" tabindex="0">▷Window_MenuCommand調査</a></li></ol></li><li><a href="#toc5" tabindex="0">●プラグイン修正</a><ol><li><a href="#toc6" tabindex="0">▷プラグイン</a></li><li><a href="#toc7" tabindex="0">▷独自メニュー作成</a></li></ol></li><li><a href="#toc8" tabindex="0">●感想</a><ol><li><a href="#toc9" tabindex="0">▷今回のプラグインについて</a></li><li><a href="#toc10" tabindex="0">▷公式コードについて</a></li></ol></li><li><a href="#toc11" tabindex="0">●次回へ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">●はじめに</span></h2>



<p>VXAceで作成したゲームもMZに移植し、アツマールで公開しようと思います。</p>



<p>ラップアース移植、メニュー最適化用にプラグインを作成中。</p>



<h2 class="wp-block-heading"><span id="toc2">●公式コード調査</span></h2>



<h3 class="wp-block-heading"><span id="toc3">▷setHandlerとaddCommandを使う？</span></h3>



<p>setHandlerやaddCommandとかを見かけたので、<br>その辺使えば簡単にできるだろうと思ったけど甘かった。<br>setHandlerだけでは変化しないし、addCommandがWindow_Selectableにない模様。</p>



<figure class="wp-block-image size-full is-resized"><img fetchpriority="high" decoding="async" src="https://d9m.one/wp-content/uploads/2022/12/image.png" alt="" class="wp-image-1890" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/12/image.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/12/image-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/12/image-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /><figcaption class="wp-element-caption">甘く見た結果</figcaption></figure>



<p>せっかく見れるんだから、ちゃんと公式のコードを確認しよう。</p>



<h3 class="wp-block-heading"><span id="toc4">▷Window_MenuCommand調査</span></h3>



<p>メインメニューにあたるWindow_MenuCommandを見てみる。</p>



<p>Window_MenuCommandはWindow_Commandを継承し、そいつのaddCommandを使っている。<br>addCommandはmakeCommandListの中で使っていて、<br>makeCommandList自体はWindow_Commandのrefreshを使っている。<br>実体化したウィンドウのsetHandlerでハンドラを関連付けるようだ。<br>なるほど、（自分の実力では）実装したら色々ハマるだろうけど、思ったよりシンプル。</p>



<p>Window_Commandを継承してinitializeでaddCommand、<br>ウィンドウ作成後にsetHandlerでハンドラ指定か～。<br>refreshでは親のrefreshを行儀よく呼ばないと駄目だな。</p>



<p>行けそうなので、一旦プラグインを整理して作り直す。</p>



<h2 class="wp-block-heading"><span id="toc5">●プラグイン修正</span></h2>



<h3 class="wp-block-heading"><span id="toc6">▷プラグイン</span></h3>



<p>がっつり変更。<br>ラップアース用ならWindow_Commandの継承だけで済むかもだけど、まぁ一応変えられる余地は残しておこう。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-js" data-file="d9mWindow.js" data-lang="JavaScript"><code>/*:ja
 * @target MZ
 * @plugindesc ラップアース用メニュー構成
 * @author dar9matter
 *
 * @help d9mWindow.js
 *
 * ラップアース用メニュー構成
 */
(() =&gt; {
    // シーン登録
    d9mSceneEntry = function (scene, windowId, funcs) {
        let root = this;
        let windowName = windowId.charAt(7).toLowerCase() + windowId.slice(8);
        let createWindowId = &#39;create&#39; + windowName.charAt(0).toUpperCase() + windowName.slice(1) + &#39;Window&#39;;

        // オブジェクトへ関数を登録
        if (funcs) {
            for (let targetClassId in funcs) {
                let obj = root[targetClassId];
                if (!obj) {
                    continue;
                }
                for (let id in funcs[targetClassId]) {
                    obj.prototype[id] = funcs[targetClassId][id];
                }
            }
        }

        // 作成ウィンドウの登録
        if (!scene.prototype[createWindowId]) {
            switch (windowId) {
            case &#39;Window_MenuCommand&#39;:
                scene.prototype[createWindowId] = scene.prototype.createCommandWindow;
                scene.prototype.commandWindowRect = scene.prototype[windowName + &#39;WindowRect&#39;];
                break;
            case &#39;Window_MenuStatus&#39;:
                scene.prototype[createWindowId] = scene.prototype.createStatusWindow;
                scene.prototype.statusWindowRect = scene.prototype[windowName + &#39;WindowRect&#39;];
                break;
            default:
                scene.prototype[createWindowId] = function () {
                    let rectFunc = scene.prototype[windowName + &#39;WindowRect&#39;];
                    if (!rectFunc) {
                        rectFunc = function() { return new Rectangle() };
                    }
                    this[&#39;_&#39; + windowName + &#39;Window&#39;] = new root[windowId](rectFunc());
                    this.addWindow(this[&#39;_&#39; + windowName + &#39;Window&#39;]);
                }
                break;
            }
        }
    }

    // シーン初期化
    d9mInitScene = function(sceneId, initParams) {
        let windowIdList = [];

        // 各ウィンドウ設定
        for (windowId in initParams) {
            let sceneParams = initParams[windowId];
            let windowName = windowId.charAt(7).toLowerCase() + windowId.slice(8);

            // 基底クラス選択
            let baseId;
            if (sceneParams.menuItems) {
                baseId = &#39;Window_Command&#39;;          // メニューがある場合
            } else {
                baseId = &#39;Window_Selectable&#39;;       // メニューがない場合
            }

            // ウィンドウクラスが無かったら作成
            if (!this[windowId]) {
                this[windowId] = function() {
                    this.initialize(...arguments);
                    this.refresh();
                }
                this[windowId].prototype = Object.create(this[baseId].prototype);
                this[windowId].prototype.constructor = this[windowId];
            }

            // 登録用データ
            let entryParams = {};
            entryParams[sceneId] = {};
            entryParams[windowId] = {};

            // シーンに「ウィンドウ操作関数」を登録
            if (sceneParams.rect) {
                // ウィンドウ矩形取得関数を登録
                entryParams[sceneId][windowName + &#39;WindowRect&#39;] = function () {
                    return new Rectangle(
                        sceneParams.rect[0],
                        sceneParams.rect[1],
                        sceneParams.rect[2],
                        sceneParams.rect[3]
                    );
                }
            }

            // cols/rows指定
            if (sceneParams.matrix) {
                entryParams[windowId].maxCols = function() { return sceneParams.matrix[0]; }
                entryParams[windowId].numVisibleRows = function() { return sceneParams.matrix[1]; }
            }
            // ウィンドウに「関数」を登録
            if (sceneParams.arrange) {
                // メニュー指定がある場合
                if (sceneParams.menuItems) {
                    entryParams[windowId].makeCommandList = function() {
                        for (let i = 0; i &lt; sceneParams.menuItems.length; i++) {
                            let itemInfo = sceneParams.menuItems[i];
                            if (!itemInfo.enabled) itemInfo.enabled = true;
                            if (!itemInfo.ext) itemInfo.ext = null;
                            this.addCommand(itemInfo.name, itemInfo.symbol, itemInfo.enabled, itemInfo.ext);
                        }
                    }
                }

                for (let funcId in sceneParams.arrange) {
                    entryParams[windowId][funcId] = sceneParams.arrange[funcId];
                }
            }

            // シーンに登録
            d9mSceneEntry(this[sceneId], windowId, entryParams);

            windowIdList.push(windowId);
        }

        // シーン作成関数を上書き
        this[sceneId].prototype.create = function() {
            d9mProtoCall(this, &#39;create&#39;);

            windowIdList.forEach(windowId =&gt; {
                // ウィンドウ作成
                let createWindowId = &#39;create&#39; + windowId.slice(7) + &#39;Window&#39;;
                if (this[createWindowId]) {
                    this[createWindowId]();
                }

                // ハンドラ設定
                let sceneParams = initParams[windowId];
                if (sceneParams.menuItems) {
                    let wnd = this[&#39;_&#39; + windowId.charAt(7).toLowerCase() + windowId.slice(8) + &#39;Window&#39;];
                    for (let i = 0; i &lt; sceneParams.menuItems.length; i++) {
                        let itemInfo = sceneParams.menuItems[i];
                        wnd.setHandler(itemInfo.symbol, itemInfo.handler.bind(this));
                    }
                }
            });
        };
    }

    // protoの関数を呼び出す
    d9mProtoCall = function (wnd, funcName) {
        if ([...arguments].length &gt;= 3) {
            wnd.__proto__.__proto__[funcName].call(wnd, ...[...arguments].slice(2));
        } else {
            wnd.__proto__.__proto__[funcName].call(wnd);
        }
    }
})();
</code></pre></div>



<h3 class="wp-block-heading"><span id="toc7">▷独自メニュー作成</span></h3>



<p>jsonでウィンドウの情報を定義、<br>ウィンドウ名が公式に用意されているものだったらそれを使う。<br>存在しなかったら独自ウィンドウとして新規作成。</p>



<p>独自メニューとして「魔法」「セーブ」「ゲーム終了」を用意。<br>自分用なのでd9mProtoCallの後に直接記述して済ませる。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-js" data-file="d9mWindow.js" data-lang="JavaScript"><code>    d9mInitScene(&#39;Scene_Menu&#39;, {
        Window_MenuCommand: {
            matrix: [2, 4],
            rect: [0, 52, 400, 200],
        },
        Window_MenuStatus: {
            matrix: [4, 1],
            rect: [84, 376, 640, 240],
            arrange: {
                drawItemImage: function(index) {
                    const actor = this.actor(index);
                    const rect = this.itemRectWithPadding(index);
                    const w = Math.min(rect.width, 144);
                    const h = Math.min(rect.height, 144);
                    const lineHeight = this.lineHeight();
                    this.changePaintOpacity(actor.isBattleMember());
                    this.drawActorFace(actor, rect.x, rect.y + lineHeight * 0.7, w, h);
                    this.changePaintOpacity(true);
                },
                drawItemStatus: function(index) {
                    const actor = this.actor(index);
                    const rect = this.itemRectWithPadding(index);
                    const x = rect.x;
                    const y = rect.y;
                    const width = rect.width;
                    const bottom = y + rect.height;
                    const lineHeight = this.lineHeight();
                    this.drawActorName(actor, x, y + lineHeight * 0, width);
                    this.drawActorIcons(actor, x, y + lineHeight * 1, width);

                    this.drawActorLevel(actor, x, y + lineHeight * 3.7, width);
                    this.placeBasicGauges(actor, x, y + lineHeight * 4.5, width);
                },
            }
        },
        Window_Test: {
            rect  : [608, 52, 160, 44 * 3 + 24],
            menuItems: [
                { name:&#39;魔法&#39;,       symbol:&#39;skill&#39;,   handler: Scene_Menu.prototype.commandPersonal },
                { name:&#39;セーブ&#39;,     symbol:&#39;save&#39;,    handler: Scene_Menu.prototype.commandSave     },
                { name:&#39;ゲーム終了&#39;, symbol:&#39;gameEnd&#39;, handler: Scene_Menu.prototype.commandGameEnd  },
            ],
            arrange: {
            }
        }
    });
</code></pre></div>



<p>結局jsonを基にウィンドウ作ってるからトリアコンタンさんの使うべきだろうけど、高機能なのかめっちゃ長い。<br>基本他人のコード理解するのめんどいし、作るの楽しいからいいや。</p>



<p>動かした結果。右上のが追加したメニューウィンドウ。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/12/image-1.png" alt="" class="wp-image-1891" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/12/image-1.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/12/image-1-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/12/image-1-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /><figcaption class="wp-element-caption">一部既存メニューを呼べた</figcaption></figure>



<p>魔法選択後、キャラクターを選択すると固まる。<br>通常のメニューから復帰できるけど。</p>



<p>残念、今回はここまでにしよう。</p>



<h2 class="wp-block-heading"><span id="toc8">●感想</span></h2>



<h3 class="wp-block-heading"><span id="toc9">▷今回のプラグインについて</span></h3>



<p>それなりに整理できたし、後から得た知識を追加できる形になったかと思うので満足。</p>



<p>セーブとゲーム終了は正しく動いたけど、魔法でキャラクターを選択すると固まる。<br>通常のコマンドウィンドウとまだ何か違いがあるってことか。</p>



<p>うーん、やっぱりまだまだ甘かったかぁ。</p>



<h3 class="wp-block-heading"><span id="toc10">▷公式コードについて</span></h3>



<p>実装やテストしている時に何か違和感あると思ったら<br>Window_MenuCommandの作成がcreateCommandWindowで行われている。</p>



<p>作成関数がcreate[Menu]CommandWindowじゃないので上手く統一して扱えない。<br>まだ理解が追いついてない部分もあるんだろうけど、気持ち悪い。</p>



<p>create[Menu]CommandWindowにcreateCommandWindow、<br>[menu]CommandWindowRectにcommandWindowRectの関数を入れて統一する形にした。</p>



<p>・・・これが上の不具合に影響してるのかなぁ。</p>



<h2 class="wp-block-heading"><span id="toc11">●次回へ</span></h2>



<p>JSONでウィンドウを作成できるようにし、シーンを上書きできるようにした。<br>まだ不完全だが独自メニューも作れる取っ掛かりもできた。</p>



<p>次は独自メニューから既存メニューを辿れるようにしたい。</p>



<p>嬉しくはないが、RPG Maker Uniteは来年春になった。<br>もうちょっとだけ時間をかけてみよう。</p>



<p>※プラグインは自由に使ってもらって構いませんが、<br>　何が起きても責任は負いません、自己責任でよろしく。</p>
<p>投稿 <a href="https://d9m.conohawing.com/org_we_004/">【WrapEarth】VXAceをMZに移植④～ウィンドウ調整プラグインその２【RPGツクール】</a> は <a href="https://d9m.conohawing.com">だくまたゲーム制作ブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://d9m.conohawing.com/org_we_004/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【WrapEarth】VXAceをMZに移植③～ウィンドウ調整プラグイン【RPGツクール】</title>
		<link>https://d9m.conohawing.com/org_we_003/</link>
					<comments>https://d9m.conohawing.com/org_we_003/#respond</comments>
		
		<dc:creator><![CDATA[だくまた]]></dc:creator>
		<pubDate>Sat, 26 Nov 2022 14:41:53 +0000</pubDate>
				<category><![CDATA[WrapEarth]]></category>
		<category><![CDATA[作成中]]></category>
		<category><![CDATA[自作ゲーム]]></category>
		<guid isPermaLink="false">http://d9m.one/?p=1851</guid>

					<description><![CDATA[<p>目次 ●はじめに●現状の確認▷スプリム▷魔法▷装備●プラグイン作成▷ウィンドウ作成処理▷既存ウィンドウ調整●次回へ ●はじめに VXAceで作成したゲームもMZに移植し、アツマールで公開しようと思います。 今回は酷い遷移 [&#8230;]</p>
<p>投稿 <a href="https://d9m.conohawing.com/org_we_003/">【WrapEarth】VXAceをMZに移植③～ウィンドウ調整プラグイン【RPGツクール】</a> は <a href="https://d9m.conohawing.com">だくまたゲーム制作ブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">●はじめに</a></li><li><a href="#toc2" tabindex="0">●現状の確認</a><ol><li><a href="#toc3" tabindex="0">▷スプリム</a></li><li><a href="#toc4" tabindex="0">▷魔法</a></li><li><a href="#toc5" tabindex="0">▷装備</a></li></ol></li><li><a href="#toc6" tabindex="0">●プラグイン作成</a><ol><li><a href="#toc7" tabindex="0">▷ウィンドウ作成処理</a></li><li><a href="#toc8" tabindex="0">▷既存ウィンドウ調整</a></li></ol></li><li><a href="#toc9" tabindex="0">●次回へ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">●はじめに</span></h2>



<p>VXAceで作成したゲームもMZに移植し、アツマールで公開しようと思います。</p>



<p>今回は酷い遷移をしていたメニューを修正します。</p>



<h2 class="wp-block-heading"><span id="toc2">●現状の確認</span></h2>



<h3 class="wp-block-heading"><span id="toc3">▷スプリム</span></h3>



<p>スプリムは魔法を身につけるためのアイテムで、装備して戦うほど「同調」していくシステム。<br>２つを合成して使ったりするので「スプリム」という項目に色々入れている。<br>スプリムに対して行う行為をメニュー「スプリム」内で色々行っている、わかりにくい。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-55.png" alt="" class="wp-image-1854" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-55.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-55-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-55-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<h3 class="wp-block-heading"><span id="toc4">▷魔法</span></h3>



<p>スプリムで習得した魔法を使おうとする時は魔法を選択する必要がある。<br>魔法は「スプリム＞使用者＞スプリム＞魔法＞使用する魔法」と選ばなくてはならない、遠い↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-56.png" alt="" class="wp-image-1856" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-56.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-56-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-56-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<h3 class="wp-block-heading"><span id="toc5">▷装備</span></h3>



<p>装備も特殊。<br>せめて武器は一番上にもってきたい。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-57.png" alt="" class="wp-image-1857" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-57.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-57-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-57-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>デフォルトのメニュー構成は表示せず、整理した独自メニューから各機能を呼び出すようにしよう。<br>とりあえず、整理しないと。</p>



<h2 class="wp-block-heading"><span id="toc6">●プラグイン作成</span></h2>



<h3 class="wp-block-heading"><span id="toc7">▷ウィンドウ作成処理</span></h3>



<p>情報を表示できるウィンドウを新規追加できるようにした。<br>drawTextとかやってるプログラムを見れば色々表示できるだろう。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-js" data-file="d9mWindow.js" data-lang="JavaScript"><code>/*:ja
 * @target MZ
 * @plugindesc ラップアース用メニュー構成
 * @author dar9matter
 *
 * @help d9mWindow.js
 *
 * ラップアース用メニュー構成
 */
(() =&gt; {
    // ウィンドウ作成
    d9mWindowCreate = function (scene, id) {
        let classId = &#39;Window_Menu&#39; + id.charAt(0).toUpperCase() + id.slice(1).toLowerCase();
        let root = this;

        this[classId] = function () { this.initialize(...arguments); }
        this[classId].prototype = Object.create(Window_Selectable.prototype);
        this[classId].prototype.constructor = this[classId];

        this[classId].prototype.initialize = function() {
            Window_Selectable.prototype.initialize.call(this, scene.prototype[id + &#39;WindowRect&#39;]());
            this.refresh();
        }

        let createWindowId = &#39;create&#39; + id.charAt(0).toUpperCase() + id.slice(1).toLowerCase() + &#39;Window&#39;;
        scene.prototype[createWindowId] = function () {
            scene[&#39;_&#39; + id + &#39;Window&#39;] = new root[classId]();
            this.addWindow(scene[&#39;_&#39; + id + &#39;Window&#39;]);
        }
    }

    // ウィンドウ調整
    d9mWindowArrange = function (scene, id, rectFunc, callbacks) {
        let classId = &#39;Window_Menu&#39; + id.charAt(0).toUpperCase() + id.slice(1).toLowerCase();
        let wnd = this[classId];

        if (rectFunc) {
            scene.prototype[id + &#39;WindowRect&#39;] = rectFunc;
        }

        if (callbacks) {
            for (let funcId in callbacks) {
                wnd.prototype[funcId] = callbacks[funcId];
            }
        }
    }

    // シーン初期化
    d9mInitScene = function (scene, menuList) {
        scene.prototype.create = function() {
            scene.prototype.__proto__.create.call(this);

            menuList.forEach(id =&gt; {
                let createWindowId = &#39;create&#39; + id.charAt(0).toUpperCase() + id.slice(1).toLowerCase() + &#39;Window&#39;;
                if (this[createWindowId]) {
                    this[createWindowId]();
                }
            });
        };
    }

    // メニューシーンにテストウィンドウを作成
    d9mWindowCreate(Scene_Menu, &#39;test&#39;);

    // メニューシーンのテストウィンドウを調整
    d9mWindowArrange(Scene_Menu, &#39;test&#39;,
        function () {
            return new Rectangle(608, 430, 160, 100);
        },
        {
            refresh: function(index) {
                // 使うこともあるので、作られてなかったら処理しない
                if (!$gameVariables || !$gameParty || !$gameSwitches) {
                    return;
                }

                // 画面クリア
                this.contents.clear();

                const rect = this.itemLineRect(0);
                const x = rect.x;
                const y = rect.y;
                const width = rect.width;

                const lineHeight = this.lineHeight();

                this.drawCurrencyValue($gameParty.gold(), TextManager.currencyUnit, x, y, width);
                this.drawText(&#39;Test&#39;, x, y + lineHeight * 1, width);
            },
        }
    );

    // メニューシーンを初期化
    d9mInitScene(Scene_Menu, [&#39;command&#39;, &#39;gold&#39;, &#39;status&#39;, &#39;test&#39;]);
})();
</code></pre></div>



<p>右下に独自ウィンドを表示。<br>収まるならアクター一覧に卒業の証とスプリム同調状態を表示したいな。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-58.png" alt="" class="wp-image-1858" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-58.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-58-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-58-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /><figcaption class="wp-element-caption">独自ウィンドウ表示</figcaption></figure>



<h3 class="wp-block-heading"><span id="toc8">▷既存ウィンドウ調整</span></h3>



<p>既存のウィンドウを微調整する関数を追加。<br>BreakThroughのメニュー構成にしてみる。<br>BreakThroughの時は試行錯誤しながら作ったので、整理してメニューの追加、調整をしやすくした。</p>



<p>関数を置き換えているだけなので名前を調べながら作る必要があるので大変だけど。</p>



<p>RPGツクールUniteが出たら触ることも無くなるだろうし、これでいいかな。↓</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-js" data-file="d9mWindow.js" data-lang="JavaScript"><code>/*:ja
 * @target MZ
 * @plugindesc ラップアース用メニュー構成
 * @author dar9matter
 *
 * @help d9mWindow.js
 *
 * ラップアース用メニュー構成
 */
(() =&gt; {
    // ウィンドウ作成
    d9mWindowCreate = function (scene, id) {
        let classId = &#39;Window_Menu&#39; + id.charAt(0).toUpperCase() + id.slice(1).toLowerCase();
        let root = this;

        this[classId] = function () { this.initialize(...arguments); }
        this[classId].prototype = Object.create(Window_Selectable.prototype);
        this[classId].prototype.constructor = this[classId];

        this[classId].prototype.initialize = function() {
            Window_Selectable.prototype.initialize.call(this, scene.prototype[id + &#39;WindowRect&#39;]());
            this.refresh();
        }

        let createWindowId = &#39;create&#39; + id.charAt(0).toUpperCase() + id.slice(1).toLowerCase() + &#39;Window&#39;;
        scene.prototype[createWindowId] = function () {
            scene[&#39;_&#39; + id + &#39;Window&#39;] = new root[classId]();
            this.addWindow(scene[&#39;_&#39; + id + &#39;Window&#39;]);
        }
    }

    // ウィンドウ調整
    d9mWindowArrange = function (scene, id, rectFunc, callbacks) {
        let classId = &#39;Window_Menu&#39; + id.charAt(0).toUpperCase() + id.slice(1).toLowerCase();
        let wnd = this[classId];

        if (rectFunc) {
            scene.prototype[id + &#39;WindowRect&#39;] = rectFunc;
        }

        if (callbacks) {
            for (let funcId in callbacks) {
                wnd.prototype[funcId] = callbacks[funcId];
            }
        }
    }

    // シーン初期化
    d9mInitScene = function (scene, menuList) {
        scene.prototype.create = function() {
            scene.prototype.__proto__.create.call(this);

            menuList.forEach(id =&gt; {
                let createWindowId = &#39;create&#39; + id.charAt(0).toUpperCase() + id.slice(1).toLowerCase() + &#39;Window&#39;;
                if (this[createWindowId]) {
                    this[createWindowId]();
                }
            });
        };
    }

    // メニューシーンにテストウィンドウを作成
    d9mWindowCreate(Scene_Menu, &#39;test&#39;);

    // メニューシーンのテストウィンドウを調整
    d9mWindowArrange(Scene_Menu, &#39;test&#39;,
        function () {
            return new Rectangle(608, 430, 160, 100);
        },
        {
            refresh: function(index) {
                // 使うこともあるので、作られてなかったら処理しない
                if (!$gameVariables || !$gameParty || !$gameSwitches) {
                    return;
                }

                // 画面クリア
                this.contents.clear();

                const rect = this.itemLineRect(0);
                const x = rect.x;
                const y = rect.y;
                const width = rect.width;

                const lineHeight = this.lineHeight();

                this.drawCurrencyValue($gameParty.gold(), TextManager.currencyUnit, x, y, width);
                this.drawText(&#39;Test&#39;, x, y + lineHeight * 1, width);
            },
        }
    );
    // メニューシーンのコマンドウィンドウを調整
    d9mWindowArrange(Scene_Menu, &#39;command&#39;,
        function () {
            const ww = 400;
            const wh = Scene_Menu.prototype.calcWindowHeight(4, true);
            const wx = 0;
            const wy = Scene_Menu.prototype.mainAreaTop();
            return new Rectangle(wx, wy, ww, wh);
        },
        {
            maxCols: function() { return 2; },
            numVisibleRows: function() { return 4; },
        }
    );
    // メニューシーンのステータスウィンドウを調整
    d9mWindowArrange(Scene_Menu, &#39;status&#39;,
        function () {
            const ww = 640;
            const wh = 240;
            const wx = (Graphics.boxWidth - 640) / 2;
            const wy = Scene_Menu.prototype.mainAreaBottom() - wh;
            return new Rectangle(wx, wy, ww, wh);
        },
        {
            maxCols: function() { return 4; },
            numVisibleRows: function() { return 1; },
            drawItemImage: function(index) {
                const actor = this.actor(index);
                const rect = this.itemRectWithPadding(index);
                const w = Math.min(rect.width, 144);
                const h = Math.min(rect.height, 144);
                const lineHeight = this.lineHeight();
                this.changePaintOpacity(actor.isBattleMember());
                this.drawActorFace(actor, rect.x, rect.y + lineHeight * 0.7, w, h);
                this.changePaintOpacity(true);
            },
            drawItemStatus: function(index) {
                const actor = this.actor(index);
                const rect = this.itemRectWithPadding(index);
                const x = rect.x;
                const y = rect.y;
                const width = rect.width;
                const bottom = y + rect.height;
                const lineHeight = this.lineHeight();
                this.drawActorName(actor, x, y + lineHeight * 0, width);
                this.drawActorIcons(actor, x, y + lineHeight * 1, width);

                this.drawActorLevel(actor, x, y + lineHeight * 3.7, width);
                this.placeBasicGauges(actor, x, y + lineHeight * 4.5, width);
            },
        }
    );

    // メニューシーンを初期化
    d9mInitScene(Scene_Menu, [&#39;command&#39;, &#39;status&#39;, &#39;test&#39;]);
})();
</code></pre></div>



<p>とりあえずBreakThroughのメニュー構成で表示。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-59.png" alt="" class="wp-image-1859" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-59.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-59-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-59-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<h2 class="wp-block-heading"><span id="toc9">●次回へ</span></h2>



<p>独自ウィンドウを作成できるようにし、既存ウィンドウを調整できるようにした。</p>



<p>まだメニュー構成をどうするか考えてないけど、<br>次は独自ウィンドウをメニューとして動かせるようにプラグインを修正しよう。</p>



<p>プラグインは自由に使ってもらって構いません。<br>そのかわり何が起きても責任は負いません、自己責任でよろしく。</p>
<p>投稿 <a href="https://d9m.conohawing.com/org_we_003/">【WrapEarth】VXAceをMZに移植③～ウィンドウ調整プラグイン【RPGツクール】</a> は <a href="https://d9m.conohawing.com">だくまたゲーム制作ブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://d9m.conohawing.com/org_we_003/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【WrapEarth】VXAceをMZに移植②～転職機能【RPGツクール】</title>
		<link>https://d9m.conohawing.com/org_we_002/</link>
					<comments>https://d9m.conohawing.com/org_we_002/#respond</comments>
		
		<dc:creator><![CDATA[だくまた]]></dc:creator>
		<pubDate>Fri, 18 Nov 2022 16:09:03 +0000</pubDate>
				<category><![CDATA[WrapEarth]]></category>
		<category><![CDATA[作成中]]></category>
		<category><![CDATA[自作ゲーム]]></category>
		<guid isPermaLink="false">http://d9m.one/?p=1792</guid>

					<description><![CDATA[<p>目次 ●はじめに●クラスチェンジ▷SceneCustomMenu.js▷プラグイン作成●マップ操作▷Mキーでマップ表示▷マウス操作対応●魔法仕様▷マウス操作対応●次回へ ●はじめに VXAceで作成したゲームもMZに移植 [&#8230;]</p>
<p>投稿 <a href="https://d9m.conohawing.com/org_we_002/">【WrapEarth】VXAceをMZに移植②～転職機能【RPGツクール】</a> は <a href="https://d9m.conohawing.com">だくまたゲーム制作ブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">●はじめに</a></li><li><a href="#toc2" tabindex="0">●クラスチェンジ</a><ol><li><a href="#toc3" tabindex="0">▷SceneCustomMenu.js</a></li><li><a href="#toc4" tabindex="0">▷プラグイン作成</a></li></ol></li><li><a href="#toc5" tabindex="0">●マップ操作</a><ol><li><a href="#toc6" tabindex="0">▷Mキーでマップ表示</a></li><li><a href="#toc7" tabindex="0">▷マウス操作対応</a></li></ol></li><li><a href="#toc8" tabindex="0">●魔法仕様</a><ol><li><a href="#toc9" tabindex="0">▷マウス操作対応</a></li></ol></li><li><a href="#toc10" tabindex="0">●次回へ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">●はじめに</span></h2>



<p>VXAceで作成したゲームもMZに移植し、アツマールで公開しようと思います。</p>



<p>今回は転職機能をメニューを使って動かし、マウス操作も可能にします。</p>



<h2 class="wp-block-heading"><span id="toc2">●クラスチェンジ</span></h2>



<h3 class="wp-block-heading"><span id="toc3">▷SceneCustomMenu.js</span></h3>



<p>「<a rel="noopener" href="https://triacontane.blogspot.com/" target="_blank">トリアコンタン</a>」さんの「<a rel="noopener" href="https://plugin.fungamemake.com/archives/23762" target="_blank">SceneCustomMenu.js</a>」をお借りしてメニューを作ろう。<br>MZのプラグイン機能と「<a rel="noopener" href="https://plugin.fungamemake.com/archives/23762" target="_blank">SceneCustomMenu.js</a>」の高機能さもあって複雑。</p>



<p>デフォルトで用意されているアクター選択がそのまま使えた。<br>右上の詳細に現在の職業も表示したけど、左のアクター選択にすでに存在してた…まいっか。</p>



<p>とりあえずこれで。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-22.png" alt="" class="wp-image-1794" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-22.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-22-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-22-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /><figcaption class="wp-element-caption">クラスチェンジするアクターを選択</figcaption></figure>



<p>上位職は通常職を卒業してから選べるようにする。<br>上位職は選択できないようにして表示。<br>条件を満たすと表示される最下行の職業は出さない。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-23.png" alt="" class="wp-image-1795" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-23.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-23-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-23-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /><figcaption class="wp-element-caption">何に転職するか選択</figcaption></figure>



<p>職業選択後は移植して使おうと思ったが、<br>職業変更イベントが変数を使えないため恐ろしいことになってる。<br>当時は体験版だったので最大変数を変えられずアクターの名前を変数代わりにしたりしてカオス。<br>VXAceには無かった３つ目の引数がundefinedだし。↓</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-24-1024x720.png" alt="" class="wp-image-1796" width="768" height="540" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-24-1024x720.png 1024w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-24-300x211.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-24-768x540.png 768w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-24-130x90.png 130w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-24.png 1054w" sizes="(max-width: 768px) 100vw, 768px" /><figcaption class="wp-element-caption">旧転職イベント</figcaption></figure>



<h3 class="wp-block-heading"><span id="toc4">▷プラグイン作成</span></h3>



<p>不具合発生時にイベントを修正するのも面倒なのでプラグイン化。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-js" data-file="d9mWrapEarthClassChange.js" data-lang="JavaScript"><code>/*:ja
 * @target MZ
 * @plugindesc 転職機能
 * @author dar9matter
 *
 * @help d9mWrapEarthClassChange.js
 *
 * 転職チェック機能
 *
 */
let d9mWE = {};
(() =&gt; {
    &#39;use strict&#39;;

    // スキルとして登録した各「卒業の証」のスキルID
    let warriorId      = 75;
    let mageId         = 77;
    let monkId         = 79;
    let magicWarriorId = 81;
    let knightId       = 83;
    let sageId         = 85;

    // 転職機能の初期化
    d9mWE.initSelectClass = function () {
        $gameVariables.setValue(118, -1);       // 変数「118:転職アクター」を初期化
        $gameVariables.setValue(109, -1);       // 変数「109:選択職業」を初期化
    }

    // 職業選択の開始
    d9mWE.startSelectClass = function () {
        $gameSwitches.setValue(117, d9mWE.checkMagicWarrior());     // 「魔法戦士」転職有効のスイッチ
        $gameSwitches.setValue(118, d9mWE.checkKnight());           // 「騎士」転職有効のスイッチ
        $gameSwitches.setValue(119, d9mWE.checkSage());             // 「賢者」転職有効のスイッチ
        $gameSwitches.setValue(120, d9mWE.checkSpiritWarrior());    // 「精霊の戦士」転職有効のスイッチ

        // 職業選択ウィンドウを表示
        SceneManager.changeWindowFocus(&#39;class_select&#39;);
    }

    // キャンセル
    d9mWE.cancelSelectClass = function () {
        $gameVariables.setValue(118, -1);       // 変数「118:転職アクター」を初期化
        $gameVariables.setValue(109, -1);       // 変数「109:選択職業」を初期化
    }

    // 転職実行
    d9mWE.changeClass = function () {
        let actor = $gameVariables.value(118);              // 選択中のアクターオブジェクト
        let classId = $gameVariables.value(109) + 1;        // 選択した職業のID

        // テンポラリ用アクターの名前を変更して文章表示に活用
        $gameActors.actor(9)._name = actor._name;
        $gameActors.actor(8)._name = $dataClasses[classId].name;

        // 職業変更
        actor.changeClass(classId, false)
    }

    // 魔法戦士になれるか？
    d9mWE.checkMagicWarrior = function () {
        let actorId = $gameVariables.value(118).id;
        return d9mWE.checkGraduation(actorId, warriorId) && d9mWE.checkGraduation(actorId, mageId);
    }

    // 騎士になれるか？
    d9mWE.checkKnight = function () {
        let actorId = $gameVariables.value(118).id;
        return d9mWE.checkGraduation(actorId, warriorId) && d9mWE.checkGraduation(actorId, monkId);
    }

    // 賢者になれるか？
    d9mWE.checkSage = function () {
        let actorId = $gameVariables.value(118).id;
        return d9mWE.checkGraduation(actorId, mageId) && d9mWE.checkGraduation(actorId, monkId);
    }

    // 精霊の戦士になれるか？
    d9mWE.checkSpiritWarrior = function () {
        let actorId = $gameVariables.value(118).id;
        return d9mWE.checkGraduation(actorId, magicWarriorId)
            && d9mWE.checkGraduation(actorId, knightId)
            && d9mWE.checkGraduation(actorId, sageId);
    }

    // 卒業したかチェック
    d9mWE.checkGraduation = function (actorId, skillId) {
        let flag = false;

        if (!$gameParty.members()[actorId]) {
            return false;
        }

        $gameParty.members()[actorId].skills().forEach((skill) =&gt; {
            if (skill.id == skillId) { flag = true; }
        });

        return flag;
    }
})();</code></pre></div>



<p>転職の呼び出しは用意されてるとは思っていたが、<br>転職以外も色々制御できるようになってたんだなぁ。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-25.png" alt="" class="wp-image-1797" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-25.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-25-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-25-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /><figcaption class="wp-element-caption">クラスチェンジ完成</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc5">●マップ操作</span></h2>



<h3 class="wp-block-heading"><span id="toc6">▷Mキーでマップ表示</span></h3>



<p>マップ表示アイテムの地図が「大事なもの」からになってるので面倒。<br>Mキーを押すだけで呼べるように修正。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-26.png" alt="" class="wp-image-1798" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-26.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-26-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-26-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /><figcaption class="wp-element-caption">Mキーでマップ表示切り替え</figcaption></figure>



<h3 class="wp-block-heading"><span id="toc7">▷マウス操作対応</span></h3>



<p>と、ここまで来てマウス操作できないことに気付く。<br>標準プラグイン「ButtonPicture.js」を使えばクリック対応できるようなので追加。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-29.png" alt="" class="wp-image-1802" width="629" height="509" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-29.png 838w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-29-300x243.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-29-768x622.png 768w" sizes="(max-width: 629px) 100vw, 629px" /><figcaption class="wp-element-caption">標準プラグイン追加</figcaption></figure>



<p>左上のミニマップをクリックしたら表示、↓</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-30.png" alt="" class="wp-image-1805" width="240" height="163"/><figcaption class="wp-element-caption">ミニマップをクリック→</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-31.png" alt="" class="wp-image-1806" width="409" height="328" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-31.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-31-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-31-768x616.png 768w" sizes="(max-width: 409px) 100vw, 409px" /><figcaption class="wp-element-caption">マップが表示される</figcaption></figure>
</div>
</div>



<p><br>マップ表示中は画面クリックでマップ表示終了するようになった。↓</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-31.png" alt="" class="wp-image-1806" width="409" height="328" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-31.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-31-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-31-768x616.png 768w" sizes="(max-width: 409px) 100vw, 409px" /><figcaption class="wp-element-caption">マップをクリック→</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-32.png" alt="" class="wp-image-1809" width="409" height="328" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-32.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-32-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-32-768x616.png 768w" sizes="(max-width: 409px) 100vw, 409px" /><figcaption class="wp-element-caption">マップ表示終了</figcaption></figure>
</div>
</div>



<h2 class="wp-block-heading"><span id="toc8">●魔法仕様</span></h2>



<h3 class="wp-block-heading"><span id="toc9">▷マウス操作対応</span></h3>



<p>ゲームのキモである操作はQWASによるキー入力。<br>こちらもマウス操作に対応しなければならなかった・・・。</p>



<p>操作しにくそうだけど左上のアイコンクリックしてもらう形にするか。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-27.png" alt="" class="wp-image-1799" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-27.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-27-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-27-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /><figcaption class="wp-element-caption">左上のアイコンクリックで氷弾を発射</figcaption></figure>



<p>移動先をクリックする形なので、アイコンクリックもそれほど違和感なかった。</p>



<p></p>



<h2 class="wp-block-heading"><span id="toc10">●次回へ</span></h2>



<p>転職機能とマップのマウス対応、魔法のマウス対応を行った。</p>



<p>最低限メニューは改善しないと酷い状態なので、次はメニューかな。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/image-28.png" alt="" class="wp-image-1800" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/image-28.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-28-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/image-28-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /><figcaption class="wp-element-caption">メニューの流れがわかりにくい上、深すぎる</figcaption></figure>



<p>メニュー＞スプリム＞魔法と辿ってやっと魔法が使える。<br>一ヶ月の突貫工事だったとはいえ、やはり酷い。</p>



<p>ここはちょっと手間かもだけど、クレームの嵐は目に見えてるので頑張ろう。</p>
<p>投稿 <a href="https://d9m.conohawing.com/org_we_002/">【WrapEarth】VXAceをMZに移植②～転職機能【RPGツクール】</a> は <a href="https://d9m.conohawing.com">だくまたゲーム制作ブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://d9m.conohawing.com/org_we_002/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【WrapEarth】VXAceをMZに移植①【RPGツクール】</title>
		<link>https://d9m.conohawing.com/org_we_001/</link>
					<comments>https://d9m.conohawing.com/org_we_001/#respond</comments>
		
		<dc:creator><![CDATA[だくまた]]></dc:creator>
		<pubDate>Tue, 08 Nov 2022 14:38:00 +0000</pubDate>
				<category><![CDATA[WrapEarth]]></category>
		<category><![CDATA[作成中]]></category>
		<category><![CDATA[自作ゲーム]]></category>
		<guid isPermaLink="false">http://d9m.one/?p=1710</guid>

					<description><![CDATA[<p>目次 ●はじめに●VXAceからMZへ移植▷コンバーター▷画像変換▷独自画像の調整▷日本語に修正●不具合修正▷敵ズレ▷キー操作▷クラスチェンジ●動作確認▷装備ズレ▷イベント関連▷パズル●次回へ ●はじめに VXAceで作 [&#8230;]</p>
<p>投稿 <a href="https://d9m.conohawing.com/org_we_001/">【WrapEarth】VXAceをMZに移植①【RPGツクール】</a> は <a href="https://d9m.conohawing.com">だくまたゲーム制作ブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">●はじめに</a></li><li><a href="#toc2" tabindex="0">●VXAceからMZへ移植</a><ol><li><a href="#toc3" tabindex="0">▷コンバーター</a></li><li><a href="#toc4" tabindex="0">▷画像変換</a></li><li><a href="#toc5" tabindex="0">▷独自画像の調整</a></li><li><a href="#toc6" tabindex="0">▷日本語に修正</a></li></ol></li><li><a href="#toc7" tabindex="0">●不具合修正</a><ol><li><a href="#toc8" tabindex="0">▷敵ズレ</a></li><li><a href="#toc9" tabindex="0">▷キー操作</a></li><li><a href="#toc10" tabindex="0">▷クラスチェンジ</a></li></ol></li><li><a href="#toc11" tabindex="0">●動作確認</a><ol><li><a href="#toc12" tabindex="0">▷装備ズレ</a></li><li><a href="#toc13" tabindex="0">▷イベント関連</a></li><li><a href="#toc14" tabindex="0">▷パズル</a></li></ol></li><li><a href="#toc15" tabindex="0">●次回へ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">●はじめに</span></h2>



<p>VXAceで作成したゲームもMZに移植し、アツマールで公開しようと思います。</p>



<p>年内にRPGMakerUniteも出るとのことなので、発売前に公開するためコンバーターを利用します。</p>



<h2 class="wp-block-heading"><span id="toc2">●VXAceからMZへ移植</span></h2>



<h3 class="wp-block-heading"><span id="toc3">▷コンバーター</span></h3>



<p>「Ace MZ」に「変換、移植、コンバート」などを付けて検索したけど見つけられなかった。<br>公式ページにはリンクなし、MV購入してユーザー登録しないと駄目？</p>



<a rel="noopener" href="https://tkool.jp/mv/special/plugin.html" title="RPGツクールMV" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://d9m.conohawing.com/wp-content/uploads/cocoon-resources/blog-card-cache/377fbc61c25614ae49a6ce6d0e654ccc.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">RPGツクールMV</div><div class="blogcard-snippet external-blogcard-snippet">PCだけじゃないついにスマホゲームも解禁！進化を続けるツクールシリーズ新次元へ！「RPGツクールMV」</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=http://rpgmakerofficial.com/mv" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">rpgmakerofficial.com</div></div></div></div></a>



<p>諦めずに検索してたらGitHUBがあったので胸をなでおろす。<br><a href="https://github.com/dodo64/plugins/blob/master/Ace%20%20MV%20Converter.rb">https://github.com/dodo64/plugins/blob/master/Ace%20%20MV%20Converter.rb</a></p>



<p>VXAceを起動し、スクリプトエディタのMainにスクリプトをコピー。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we000.png" alt="" class="wp-image-1719" width="373" height="364"/></figure>



<p>この状態で実行するとプロジェクトのルートフォルダに「mv-data」が作られた。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we001.png" alt="" class="wp-image-1721" width="586" height="437"/></figure>



<p>MZのプロジェクトを作成し、dataフォルダにmv-dataの内容をコピー、Audioも置き換え。</p>



<p>起動するとタイルが違う。<br>扉として看板置いたり、扉の上に階段置いたりする勇気はない。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we002.png" alt="" class="wp-image-1722" width="586" height="437" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we002.png 781w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we002-300x224.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we002-768x572.png 768w" sizes="(max-width: 586px) 100vw, 586px" /></figure>



<p>とりあえず動かしてみるが、いきなりエラー。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we003.png" alt="" class="wp-image-1724" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we003.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we003-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we003-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>フォントは正しいはずだが、undefinedってことはコンバート時にJSON定義されかったのかな。<br>一旦保存して起動しなおすと消えた。</p>



<p>がしかし次のエラー。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we004.png" alt="" class="wp-image-1725" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we004.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we004-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we004-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>画像関係は手動コンバートが必要らしいので、一気にやってしまおう。</p>



<h3 class="wp-block-heading"><span id="toc4">▷画像変換</span></h3>



<p>検索した時に手動変換してる人が居たので、こちらを参考にちくちく変換。</p>



<a rel="noopener" href="https://www.5ing-myway.com/convert-vxace-to-mv/" title="RPGツクール VXAceのグラフィック素材をMV規格に変換する方法 | 趣味に生きる。" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://d9m.conohawing.com/wp-content/uploads/cocoon-resources/blog-card-cache/b838e58a81b0431fca6e4e259b293727.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">RPGツクール VXAceのグラフィック素材をMV規格に変換する方法 | 趣味に生きる。</div><div class="blogcard-snippet external-blogcard-snippet">waifu2x-caffeとGIMPを使ってRPGツクールVXAceのRTPをRPGツクールMVで使えるようにする方法です。（Windows 64bit版向け）</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.5ing-myway.com/convert-vxace-to-mv/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.5ing-myway.com</div></div></div></div></a>



<p>グラフィックのコンバーターは時間がかかるけど、「単純な引き延ばしではない」ということかな。</p>



<p>動いた！↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we005.png" alt="" class="wp-image-1726" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we005.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we005-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we005-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>けど独自で用意したUIがズレている。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we006.png" alt="" class="wp-image-1727" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we006.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we006-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we006-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>色んな画像を位置指定しているので、大変かも知れない・・・。</p>



<h3 class="wp-block-heading"><span id="toc5">▷独自画像の調整</span></h3>



<p>MZのUIに被らないよう、右上のアイコンを左に移動。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we007.png" alt="" class="wp-image-1728" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we007.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we007-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we007-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>全体マップを収まるサイズに拡大。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we008.png" alt="" class="wp-image-1729" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we008.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we008-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we008-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>イベントの画像位置指定の修正で各位置ズレを解決。</p>



<p>フィールドの左上マップの位置ズレ修正。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we009.png" alt="" class="wp-image-1730" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we009.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we009-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we009-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>現在位置を示すマーカーの位置ズレ修正。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we010.png" alt="" class="wp-image-1731" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we010.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we010-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we010-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>ダンジョン内のミニマップと鍵の位置ズレを修正。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we011.png" alt="" class="wp-image-1732" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we011.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we011-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we011-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>思っていたよりは楽に修正できた。</p>



<p>しかし、違う装備スロットに装備されるため、左上のアイコンが表示されないことが判明。<br>・・・これは、やばいか？</p>



<p>ここまで来たら完全作り直しより圧倒的に楽なはず。<br>大丈夫だろ。</p>



<h3 class="wp-block-heading"><span id="toc6">▷日本語に修正</span></h3>



<p>デフォルト指定のままだったためか、コンバートで結構英語になってた。<br>VXAceに無い項目もあったからかな？</p>



<p>MZデフォルト値に置き換えたけど、ちょっと面倒だった。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we012.png" alt="" class="wp-image-1733" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we012.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we012-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we012-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<h2 class="wp-block-heading"><span id="toc7">●不具合修正</span></h2>



<h3 class="wp-block-heading"><span id="toc8">▷敵ズレ</span></h3>



<p>敵がめっちゃ左上に集まってる。<br>サイズ調整だけでは駄目だったっぽい。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we013.png" alt="" class="wp-image-1734" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we013.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we013-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we013-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>敵パーティをランダムに切り替えられるよう頑張ったため、修正が大変。</p>



<p>「画像なしの敵は配置しても扱われない」という動作を利用し、変身させてパターンを増やしたのだが、<br>変身している敵が並んでいない・・・？と混乱した。</p>



<p>随分昔のことだし、ハック的？なものだし、解析できてよかった。</p>



<p>テスト戦闘で各パターンで期待通り表示されることを確認。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we014.png" alt="" class="wp-image-1735" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we014.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we014-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we014-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<h3 class="wp-block-heading"><span id="toc9">▷キー操作</span></h3>



<p>QWASで魔法を使ったり、Dキーで並び替えしたりできる。<br>この操作はこのゲームの根幹にかかわる部分なのに動かない…まずい。</p>



<p>キー判定がスクリプトになっているが、MZでは許可されたキーしか使えないようだ。</p>



<p>許可キーを追加したプラグインを記述し、Dキーで隊列変更することを確認。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we015.png" alt="" class="wp-image-1736" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we015.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we015-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we015-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>ふぅ、一安心。</p>



<h3 class="wp-block-heading"><span id="toc10">▷クラスチェンジ</span></h3>



<p>クラスチェンジの対象者名が出ていない。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we016.png" alt="" class="wp-image-1739" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we016.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we016-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we016-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>さらにクラス選択のカーソルがズレている。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we017.png" alt="" class="wp-image-1740" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we017.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we017-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we017-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>表示がおかしいのは修正できるが、マウスで操作できない。<br>これは作り直さないと駄目だな。</p>



<p>メニュー作成プラグインを借りて、そこからコモンイベントに移したクラスチェンジ処理を呼べば動くだろう。</p>



<p>とりあえず、後回し。</p>



<h2 class="wp-block-heading"><span id="toc11">●動作確認</span></h2>



<h3 class="wp-block-heading"><span id="toc12">▷装備ズレ</span></h3>



<p>装備設定と装備箇所が合わない。<br>装備スロット「スプリム」に行くはずなのに、装備スロット「ビット」に装備される。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we018.png" alt="" class="wp-image-1741" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we018.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we018-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we018-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>装備スロットには「スプリム」となっているのに、「ビット」として扱われている・・・。↓</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we019-1024x642.png" alt="" class="wp-image-1742" width="768" height="482" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we019-1024x642.png 1024w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we019-300x188.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we019-768x481.png 768w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we019.png 1182w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p>RPGツクールのデフォルトでは武器に当たるが、コンバートでズレて変換された？</p>



<p>装備設定をし直して確認したら予感的中、正しく動いた。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we020.png" alt="" class="wp-image-1743" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we020.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we020-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we020-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<p>武器、防具の装備タイプを付け直して正しい場所に装備されることを確認。<br>これは流石に焦った、よー気付いた。</p>



<p>装備に連動して画面左上の「S」にアイコンが表示されること、<br>Sキーを押して魔法（キャラクターの左にある白い球）が発射されることを確認。↓</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we021.png" alt="" class="wp-image-1744" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we021.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we021-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we021-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<h3 class="wp-block-heading"><span id="toc13">▷イベント関連</span></h3>



<p>ツクールの仕様がほとんど変わってないから大丈夫だと思うが、<br>怖いのはアイテムに対して作成した独自処理。<br>強化、合成、レベルアップなどあるので、ちゃんと変換できてるか心配。</p>



<p>左上の「同調率」が上がることを確認、とりあえず動いてそう。↓<br>合成、強化、古代魔法、、、とあるので、まだまだ確認が必要だが・・・。</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we022.png" alt="" class="wp-image-1745" width="614" height="492" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we022.png 818w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we022-300x241.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we022-768x616.png 768w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<h3 class="wp-block-heading"><span id="toc14">▷パズル</span></h3>



<p>ゼ○ダ的なパズルがあるので、その部分が動くか確認。<br>しかし、パズル攻略を覚えていないため、突破に時間がかかる始末。<br>岩動かしたり、闇払ったり、壁登ったり、ひとまず大丈夫そう。</p>



<p>壁登りに使うツタは「１発目が消えるバグ」が残っているのを再発見。<br>直せずに諦めてたが、直すか。</p>



<p>選択している行の「ツタ位置を変数に入れる」処理を忘れたため、<br>初回は２マス以上離れたと判断されてツタが消滅していた。<br>いや、しょーもな！↓</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://d9m.one/wp-content/uploads/2022/11/we023-1024x720.png" alt="" class="wp-image-1746" width="768" height="540" srcset="https://d9m.conohawing.com/wp-content/uploads/2022/11/we023-1024x720.png 1024w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we023-300x211.png 300w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we023-768x540.png 768w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we023-130x90.png 130w, https://d9m.conohawing.com/wp-content/uploads/2022/11/we023.png 1054w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<h2 class="wp-block-heading"><span id="toc15">●次回へ</span></h2>



<p>コンバーターが見つけられなかったり、移植しきれなかった部分があったりと焦ったが、何とか動きそう。</p>



<p>クラスチェンジをちゃんと組み込めば後は問題なさそうだ。<br>念のためテストプレイし、ちゃんと通ることを確認たら公開しよう。</p>



<p>強引な作りでインターフェースが最悪なのが気になるが、<br>まずは完璧な移植をしてからにしよう。<br></p>
<p>投稿 <a href="https://d9m.conohawing.com/org_we_001/">【WrapEarth】VXAceをMZに移植①【RPGツクール】</a> は <a href="https://d9m.conohawing.com">だくまたゲーム制作ブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://d9m.conohawing.com/org_we_001/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
