RMMV與對應腳本指令

稍微整理了一下 mv 對應的事件腳本指令的「中文版」,方便有需要的人使用。你可能會覺得「阿事件不是都有,為什麼要這種東西?」。這個疑惑是正確的,大部分的狀況下其實只要使用事件就可以達到相同效果,但這篇整理起來對於有稍微想要碰腳本的作者們會有一定的幫助,再者就是有些特殊狀況你確實無法輸入事件,這時候就可以用到這張表了。






這邊舉簡單的兩個例子
1. 在NPC自主移動時,想要讓他「顯示氣球圖示」,但在設定移動路線中並沒有氣球圖示這個選項時該怎麼辦?
這時候你可以在腳本輸入下列指令,就可以在非劇本的事件中,讓事件自動顯示圖片了
var e =$gameMap.event(this._eventId);e.requestBalloon(1);

2.當我只想執行某個事件中特定頁面的功能該怎麼辦?(2k3 有此功能,但mv 內建無此功能)
這時候只要在腳本中輸入下面的code , 就會執行特定事件的某一頁事件內容(事件條件要符合才會執行)
$gameMap.event(EventID, EventPage).start();

3.還有哪裡可以用得到?
我們打開f8 debug 視窗時,下列的指令都可以直接在f8視窗使用,也會立即生效。

就是這麼一回事,有些狀況你可能會需要用到這些腳本,這最早是老外開始列出來的,粽子只是將對應的內容中文化而已,希望可以幫到各位作者囉!有問題或是想補充都可以告訴粽子唷!

RMMV事件對應指令
事件指令 對應腳本語法
顯示文字 $gameMessage.setFaceImage(‘Actor1’,0)
$gameMessage.setBackground(1)
$gameMessage.setPositionType(1)
$gameMessage.add(“Show Text Script Call”)
顯示選項 choices = []; params = [];
$gameMessage.setChoices(choices, 0)
choices.push(“I love you1”);choices.push(“I love you2”);
choices.push(“I love you3”);choices.push(“I love you4”);
choices.push(“I love you5”);choices.push(“I love you6”);
choices.push(“I love you7”);choices.push(“I love you8”);
params.push()
數字輸入 $gameMessage.setNumberInput(var, digits);
選擇項目-道具類型 $gameMessage.setItemChoice(var, n);
滾動文字訊息 $gameMessage.setScroll(scrolling_speed, no_fast_forward);
$gameMessage.add(“Text”);
變更金幣 $gameParty.gainGold(n);
變更武器 $gameParty.gainItem($dataWeapons[weaponId], n, true/false *note);
變更裝備 $gameParty.gainItem($dataArmorsweaponId], n, true/false *note);
變更隊伍 $gameParty.addActor(n);
$gameParty.removeActor(n);
變更開關 $gameSwitches.setValue(num, true/false);
變更變數 $gameVariables.setValue(var, value);
變更自開關 $gameSelfSwitches.setValue(key, true/false);
變更計時器 $gameTimer.start(time); $gameTimer.stop();
條件分期 if (code) { stuff } else { stuff }
迴圈 while (;;) { stuff }
斷開迴圈 break;
結束事件 $gameInterpreter._index = $gameInterpreter._list.length;
一般(公用)事件 $gameTemp.reserveCommonEvent(n);
變更HP $gameActors.actor(actorId).gainHp(n)
變更MP $gameActors.actor(actorId).gainMp(n)
變更TP $gameActors.actor(actorId).gainTp(n)
變更狀態 $gameActors.actor(actorId).addState(n);
$gameActors.actor(actorId).removeState(n);
恢復全體 for (var j = 0; j < $gameActors.length; j++) { $gameActors.actor(j).recoverAll(); };
變更經驗 $gameActors.actor(actorId).gainExp(n);
變更等級 $gameActors.actor(actorId).changeLevel(n, true/false);
變更數值 $gameActors.actor(actorId).addParam(paramId, n);
變更數值 $gameActors.actor(actorId).learnSkill(n);
$gameActors.actor(actorId).forgetSkill(n);
變更裝備 $gameActors.actor(actorId).changeEquip(slotId, item);
變更名稱 $gameActors.actor(actorId).setName(n)
變更職業 $gameActors.actor(actorId).changeClass(n, keepExp)
變更名稱 $gameActors.actor(actorId).setNickname(n)
變更簡介 $gameActors.actor(actorId).setProfile(n)
轉移玩家場景 $gamePlayer.reserveTransfer(mapId, x, y, direction, fade type);
設定交通工具 $gameMap.vehicle(vehicleId).setLocation(mapId, x, y);
設定事件位置 $gameMap.event(eventID).setPosition(x, y)
滾動畫面 $gameMap.startScroll(direction, distance, speed);
設定交通工具可否搭乘 $gamePlayer.getOnOffVehicle();
等待 $gameInterpreter.wait(frames);
變更透明度 $gamePlayer.setTransparent(flag)
跟隨者顯示 $gamePlayer.showFollowers();
$gamePlayer.hideFollowers();
集合跟隨者 $gamePlayer.gatherFollowers();
this.setWaitMode(‘gather’);
顯示氣球圖示 character.requestBalloon(id);
this.setWaitMode(‘balloon’);
消除事件 $gameMap.eraseEvent(this._eventId);
淡出/淡入畫面 $gameScreen.startFadeOut(fade_speed);
$gameScreen.startFadeIn(fade_speed);
著色畫面 $gameScreen.startTint([red,green,blue,grey], duration);
閃光畫面 $gameScreen.startFlash([red,green,blue,intensity], duration);
震動畫面 $gameScreen.startShake(power, speed, duration);
天氣效果 $gameScreen.changeWeather(“weather”, power, duration);
顯示圖片 $gameScreen.showPicture(pictureId, name, origin, x, y,scaleX, scaleY, opacity, blendMode)
移動圖片 $gameScreen.movePicture(pictureId, origin, x, y, scaleX,scaleY, opacity, blendMode, duration)
混合模式 $gameScreen._pictures[id]._blendMode = #
旋轉圖片 $gameScreen.rotatePicture(pictureId, speed);
著色圖片 $gameScreen.tintPicture(pictureId, tone, duration);
消除圖片 $gameScreen.erasePicture(pictureId);
播放BGM AudioManager.playBgm( refer to sound object above );
#聲音物件格式: { name: filename, volume: n, pitch: n, pan: n }
淡出BGM AudioManager.fadeOutBgm(n);
儲存BGM $gameSystem.saveBgm();
繼續播放BGM $gameSystem.replayBgm();
播放BGM AudioManager.playBgs( refer to sound object above );
淡出BGS AudioManager.fadeOutBgs(n);
播放ME AudioManager.playMe( refer to sound object above );
播放SE AudioManager.playSe( refer to sound object above );
暫停se AudioManager.stopSe();
播放動畫 Graphics.playVideo(path/name.ext);
戰鬥處理 BattleManager.setup(troopId, true/false, true/false);
$gamePlayer.makeEncounterCount();
SceneManager.push(Scene_Battle);
商店處理 SceneManager.push(Scene_Shop);
名稱輸入處理 SceneManager.push(Scene_Name);
SceneManager.prepareNextScene(actorId, name length);
開啟選單 SceneManager.push(Scene_Menu);
開以記錄/讀取錄選單 SceneManager.push(Scene_Save);
SceneManager.push(Scene_Load);
遊戲結束/回標題畫面 SceneManager.goto(Scene_Gameover);
SceneManager.goto(Scene_Title);
執行地圖特定事件頁面 $gameMap.event(EventID, EventPage).start();
更換地圖顯示名稱 $gameMap.enableNameDisplay();
$gameMap.disableNameDisplay();
更換圖快設置 $gameMap.changeTileset(n);
更換戰鬥背景 $gameMap.changeBattleback(filename, filename);
更換遠景 $gameMap.changeParallax(name, loopX, loopY, speed x, speed y);
獲得位置資訊 $gameMap.terrainTag(x, y);
$gameMap.eventIdXy(x, y);
$gameMap.tileId(x, y, layer);
獲得地形區塊ID $gameMap.regionId(x, y);
更換戰鬥音樂/勝利ME $gameSystem.setBattleBgm(name);
$gameSystem.setVictoryMe(name);
更換戰敗音效 $gameSystem.setDefeatMe(name);
更換交通工具BGM $gameMap.vehicle(vehicleId).setBgm(name);
修改存檔功能訪問 $gameSystem.disableSave();
$gameSystem.enableSave();
修改菜單功能訪問 $gameSystem.disableMenu();
$gameSystem.enableMenu();
修改系統訪問 $gameSystem.disableEncounter();
$gameSystem.enableEncounter();
修改陣型功能訪問 $gameSystem.disableFormation();
$gameSystem.enableFormation();
修改視窗顏色 $gameSystem.setWindowTone(tone); (red, green, blue, gray);
修改角色圖像 $gameActors.actor(actorId).setCharacterImage(name, index);
$gameActors.actor(actorId).setFaceImage(name, index):
$gameActors.actor(actorId).setBattlerImage(name);
修改交通工具圖像 $gameMap.vehicle(vehicleId).setImage(name, index);
更改敵人HP/MP/TP $gameTroop.members()[enemyIndex].gainHp(n);
$gameTroop.members()[enemyIndex].gainMp(n);
$gameTroop.members()[enemyIndex].gainTp(n);
更改敵人狀態 $gameTroop.members()[enemyIndex].addState(n);
$gameTroop.members()[enemyIndex].removeState(n);
敵人恢復 $gameTroop.members()[enemyIndex].recoverAll();
更改出現敵人 $gameTroop.members()[enemyIndex].appear();
敵人變形(更換敵人) $gameTroop.members()[enemyIndex].transform(n);
顯示戰鬥動畫 $gameTroop.members()[enemyIndex].startAnimation(animationId, true/false, delayN);
我方強制動作 $gameParty.members()[index].forceAction(skillId, targetIndex);
BattleManager.forceAction($gameParty.members()[index]);

敵人強制動作 $gameTroop.members()[index].forceAction(skillId, targetIndex);
BattleManager.forceAction($gameTroop.members()[index]);
中止戰鬥 BattleManager.abort();

英文版原文連結

Author: chimaki

作者粽子,2007年初次接觸RM2K3後便與遊戲製作結下不解之緣。2010年開始踏入遊戲業,任職研發企劃。2016年開始轉職Server工程師,喜愛並支持獨立製作。2016年開始正式推廣RPG MAKER MV。

30 thoughts on “RMMV與對應腳本指令

  1. 那個,不好意思,想請問能否製作遊戲二周目打開新劇情開關的教學?
    已經很努力爬文,找到XP跟VX的教學,但沒有MV的……(只有看到英文的,但看不懂)
    遊戲已經完成,但少了二周目新劇情功能,遊戲就不能發表了OQ

    1. 你可以參考這一篇喔!
      https://goo.gl/Mq7h9m

      我記得之前幫忙解題時好像有用過類似的的指令
      $gameMap.(事件id , 事件頁數).satrt();

      套入此篇文章的變數使用指令的話只要改成
      $gameMap.($gameVariables.value(變數編號) , 事件頁數).satrt();

      至於頁數的部分就要看大大想要怎樣指定了

    1. 這個應該使用內建的功能就可以達成囉!
      EX:
      資料庫中的道具屬性 -> 增加效果 -> 呼叫公用(一般)事件 -> 在公用事件中處理你要改變的變數

      1. 發現一個問題,我如果讓一般劇情觸發器打開會一直增加,設無,又無法動作。這要怎麼辦阿???

        1. 會造成這個問題應該公用事件設置到並行之類的, 公用事件本身不需要設定觸發器, 只要在道具那邊呼叫就只會觸發一次了

  2. 大大您好,想要請問一下"顯示圖片"的腳本裡面的那個origin要怎麼寫呢?
    我嘗試輸入img/pictures,但他卻跑出錯誤:img is not defined。

    1. 可能要請大大把code 貼出來才能幫忙喔ww, 這邊給大大範例參考一下

      $gameScreen.showPicture( 93, “woc_mainUI02”, 1, 408, 565, 100, 100, 255, 0 );

      1. 好的QAQ!我是輸入:

        $gameScreen.showPicture(41,$gameVariables.value(171),img.pictures,$gameVariables.value(166), $gameVariables.value(167),100, 100, 255, 1)

        然後請問一下,“woc_mainUI02”是甚麼意思呢?

          1. 非常感謝!終於成功了QAQ!

            是這樣的,因為這篇文裡面寫的顯示圖片腳本是:
            "$gameScreen.showPicture(pictureId, name, origin, x, y,scaleX, scaleY, opacity, blendMode)"

            所以我一直以為origin是檔案路徑的意思,雖然不知道為甚麼但是照大大給的範例把origin改成1,我的圖片就成功顯示出來了!

    1. 腳本輸入 , $gameScreen.picture(圖片ID)._name = “新的圖片名稱”
      #請記得圖片名稱要用雙引號包起來

      1. 我想令某圖片的一項數值跟隨事件的某一變數變化,我輸入以下
        $gameScreen.showPicture(61, “UIBARB”, 0, 75, 18 ,$gameVariables.value(42), 50, 255, 0)
        但似乎並不成工,看起來圖片不見了,在此請教一下在何處做錯了?

        1. 你可以先在f8 檢查變數, 而且這個寫法 , 要在變數42有值的狀況下再去呼叫才會正常, 如果他是0的話整張圖片就會不見 (scale是放大縮小倍率)
          此外你可以直接在f8 的console 中輸入 $gameScreen.picture(圖片ID) 檢查一下裡面的參數是否都正常就會知道問題在哪了w

          1. 在事件的運作中找到問題所在了WW太久沒碰連事件的一些邏輯都記錯了WW(其實還是不確定是2000和MV不一樣還是怎樣)F8我之前完全不知道,這個很有用,看來是高級很多倍的F9WW(完全不知道F9為什麼還要生存WW),感謝提醒,想來之後會很常用到W–過幾天會去找找看基本外功篇,想實質地支持製造機(拜謝

發表迴響