[回到版面][▼底部]
回應模式
名 稱
E-mail
標 題
內 文
附加圖檔[] []
刪除用密碼(刪除文章用。英數字8字元以內)
驗證碼
  • 可附加檔案類型:GIF, JPG, PNG, BMP, SWF;大小限制:3072 KB。
  • 當回文時E-mail填入sage為不推文功能。
  • 發文間隔時間為 30 秒;貼圖間隔時間為 30 秒。
  • 目前附加圖檔使用量大小: 70908 KB / 1313072 KB


0

MV「強制戰鬥行動」的腳本指令 無名氏 ID:n662k4nY IP No.1514回報1推文

島民好
因為想在戰鬥中內嵌事件,使用腳本來強制戰鬥行為
查了一下,MV「強制戰鬥行動」的腳本指令為下
>>$gameParty.members()[index].forceAction(skillId, targetIndex);
>>BattleManager.forceAction($gameParty.members()[index]);
其中"TargetIndex"若為-1的情況下會隨機目標、為-2則為上一個目標
那麼,以上兩行腳本指令的參數"index"指的是什麼呢?

本以為是指「我方成員於隊伍中的ID」
然而,在實際使用時卻出現
>>TypeError Cannot read property 'makeTargets' of undefined
的錯誤,我欲達成的情境為以下:
>>只有一人為隊伍成員、使用「技能18(指定使用者本身的技能)」時會強制使用「技能19(指定使用者本身的回復技能)」
我設置的方式為:
>>一、技能18為指定使用者本身的無效技能,使用時會觸發公用事件(一般劇情)1
>>二、公用事件1的內容為腳本:
>>>>$gameParty.members()[0].forceAction(19, -2);
>>>>BattleManager.forceAction($gameParty.members()[0]);
上述的設置在運用時出現了以下流程:
>>一、系統訊息顯示「技能18對角色1無效果」
>>二、系統訊息顯示「角色1使用了技能19,回復XXX點HP」
>>三、出現錯誤「TypeError Cannot read property 'makeTargets' of undefined」,crash

上述的情境,在我將腳本指令改為
>>>>$gameParty.members()[0].forceAction(19, -2);
>>>>BattleManager.forceAction($gameParty.members()[1]);
之後就維持正常的流程不再出現crash,為以下:
>>一、系統訊息顯示「技能18對角色1無效果」
>>二、系統訊息顯示「角色1使用了技能19,角色1回復XXX點HP」

然而,在我方隊伍出現一人以上的成員(假設為兩人)時卻出現以下流程:
>>一、系統訊息顯示「技能18對角色1無效果」
>>二、系統訊息顯示「角色2使用了技能19,角色2回復XXX點HP」
並且若「技能18」為「角色2」所施放,就會再度出現上述的crash

請問島民上述的變數該如何設置?

並除了上述情形外,想就以下幾種可能的情境請教島民用該指令是否能夠實現、以及參數設置方式:
>>1.我方隊伍為一人,「技能18」為指定"敵方單體"的技能,「技能19」為指定"敵方群體"的技能
>>2.我方隊伍為一人,「技能18」為指定"敵方單體"的技能,「技能19」為指定"使用者本身"的技能
>>3.我方隊伍為多人,「技能18」為指定"敵方單體"的技能,「技能19」為指定"敵方群體"的技能
>>4.我方隊伍為多人,「技能18」為指定"敵方單體"的技能,「技能19」為指定"使用者本身"的技能
>>5.我方隊伍為多人,「技能18」為指定"我方群體"的技能,「技能19」為指定"我方單體"的技能
>>6.我方隊伍為多人,「技能18」為指定"我方單體"的技能,「技能19」為指定"我方群體"的技能

以上,感謝島民的耐心與協助

(゚∀゚)<: 先在下面補一行this.setWaitMode('action')看看,有問題的是BattleManager.forceAction那句,就你的情況有沒有那句似乎沒差 (CEXQ9ihY 18/10/18 15:36) 111.246.*.*
未命名專案 無名氏 ID:CEXQ9ihY IP No.1515回報推文

你對index的理解沒問題,只是"強制行動"指令還有一行this.setWaitMode('action'),
少了這句在 $gameParty.members()[0].forceAction(19, -2) 後執行BattleManager.forceAction(battler)會出錯
應該是沒設等待會流掉什麼導致 BattleManager.startAction() 時抓不到需要的數值

測試發現就算沒 BattleManager.forceAction(battler) 好像也沒影響(處理上是角色動完才執行這句,是因為角色正在行動?),但如果要加這句就要配合 this.setWaitMode('action')

因為$gameParty.members()[0].forceAction(19, -2)可以正常運作,
所以最後那些,技能設定正確就行

未命名專案 原PO ID:gNP.B/Ws IP No.1516回報推文
>>No.1515
感謝島民的協助,上面的問題於加上指令後已經解決

不過想順便詢問另一項問題
一般來說若是要在技能使用時以指令取得技能使用者或目標對象的數值
應該會將指令寫在「公式」的部分
如:要取得技能使用者的隊伍index並記錄在變數85中,會在公式中以
>>$gameVariables.setValue(85,a.index())
方式記載


然而,要啟用右上角的「公式」則必須將該技能設定為HP傷害、HP回復、MP傷害......
這類具有實際「變更角色HP、MP」效果的技能
這樣的方式在如果該技能純粹是為了變更參數、附加狀態的情況下
(也就是說這種技能是像「防護」那樣,傷害為「無」的技能)
就會出現很突兀的「XXX未受到傷害」這樣的系統訊息

請問島民這類專門「取得戰鬥對象參數」控制指令只能寫在「公式」中嗎?
是否有其他的下指令的區域呢?
未命名專案 無名氏 ID:CEXQ9ihY IP No.1517回報推文
>>No.1516
當時搞事件流也是卡在沒辦法取得目前行動對象,普遍好像是用狀態法解決(附上OO狀態,然後戰鬥事件偵測有此狀態的角色強制行動)

如果不是很堅持純事件建議直接改腳本,在 Game_Battler.prototype.useItem 內追加:
if (this.isActor()) {
$gameVariables.setValue(85, $gameParty.members().indexOf(BattleManager._subject))
}


0
【刪除文章】[]
刪除用密碼: