查看: 4589|回复: 4

[有事请教] 请问mv的限时选项系统如何实现?

[复制链接]
梦石
0
星屑
43
在线时间
4 小时
注册时间
2019-1-12
回帖
2
发表于 2019-1-26 11:20:39 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
想做一个对话中出现限时选项,超时后触发一些剧情的系统,但是试过用事件做是做不到的,因为选项界面没法中止。
怎么才能实现对话限时选项系统呢?
梦石
0
星屑
43
在线时间
4 小时
注册时间
2019-1-12
回帖
2
 楼主| 发表于 2019-1-26 11:21:42 | 显示全部楼层
而且也不会编写脚本
回复

使用道具 举报

梦石
0
星屑
2870
在线时间
1074 小时
注册时间
2015-11-1
回帖
261
发表于 2019-1-26 12:15:55 | 显示全部楼层
以前做过类似的,不过很简陋。

我是直接把选项显示为一张图片。
然后并行一个事件,等待多少帧后,让图片消失,这个当做是计时器。
再并行一个事件,检测有没有在显示图片期间按键。

回复

使用道具 举报

梦石
0
星屑
16261
在线时间
4014 小时
注册时间
2015-9-14
回帖
1322

开拓者

发表于 2019-1-27 00:06:40 | 显示全部楼层
限時選擇插件
作者:Tsukimi

TimeLimitedChoice.js//=============================================================================
// TimeLimitedChoice.js        2017/04/02
// Copyright (c) 2017 Tsukimi
//=============================================================================

/*:
* @plugindesc 時間制限付き選択肢プレグイン
* @author Tsukimi
*
* @help
* 時間制限付き選択肢プレグイン
* 作者:ツキミ
*
* 2018/09/17 ver 1.0.1 ツキミ式選択肢との競合を解消
* 2017/05/01 ver 1.0 完成
*
* ***************************************************
* 説明:
* 次の選択肢に時間制限をかけます。
* プラグインコマンドを実行して選択肢を設定した時、タイマーが自動で起動します。
* 時間切れすると選択ウィンドウが消え、[キャンセルのとき]
* のイベントコマンドを実行します。
*
* ※ 選択肢の表示の設定の中の、キャンセルを[分岐]にしてください。
*
* ※ 必ずしもプラグインコマンドの直後に選択肢を設定する必要がありません。
* オススメの設定方法は:
* ◆プラグインコマンド:TLChoice 300
* ◆文章:~~~~~
* ◆選択肢の表示:~~~~~
*
*
* ***************************************************
* プラグインコマンド:
*  イベントコマンド「プラグインコマンド」から実行。
*  (パラメータの間は半角スペースで区切る)
*
* TLChoice [フレーム数]
*   次の選択肢表示に時間制限をかける(1秒=60フレーム)
*   例: TLChoice 600
*   ※次の選択肢にだけ効果があります。連続で使用したい場合、
*   各[選択肢の表示]コマンドの前にもう一度このコマンドを行ってください。
*
*
* 作者のサイト: http://tsukimitsf.blog.fc2.com/
* バグなどがあったら、是非こちらへご一報ください。ありがとうございます。
*/

var Imported = Imported || {};

(function(_global) {
          // ここにプラグイン処理を記載
   
    var _Game_Timer_onExpire = Game_Timer.prototype.onExpire;
    Game_Timer.prototype.onExpire = function() {
        _Game_Timer_onExpire.call(this);
        var cw = SceneManager._scene._messageWindow._choiceWindow;
        if(!!cw._timeLimit && !!cw._TLStarted) {
            cw._timeLimit = false;
            cw._TLStarted = false;
            // processCancel, without sound
            cw.updateInputData();
            cw.deactivate();
            cw.callCancelHandler();
            // end
            this.stop();
        }
    }
    if(Imported.TKM_ChoiceList) {
        var _Window_TKMChoiceList_oked = Window_TKMChoiceList.prototype.oked;
        Window_TKMChoiceList.prototype.oked = function() {
            _Window_TKMChoiceList_oked.call(this);
            if(!!this._timeLimit) {
                this._timeLimit = false;
                this._TLStarted = false;
                $gameTimer.stop();
            }
        };
    } else {
        var _Window_ChoiceList_callOkHandler = Window_ChoiceList.prototype.callOkHandler;
        Window_ChoiceList.prototype.callOkHandler = function() {
            _Window_ChoiceList_callOkHandler.call(this);
            if(!!this._timeLimit) {
                this._timeLimit = false;
                this._TLStarted = false;
                $gameTimer.stop();
            }
        }
    }
   
    var _Window_ChoiceList_start = Window_ChoiceList.prototype.start;
    Window_ChoiceList.prototype.start = function() {
        _Window_ChoiceList_start.call(this);
        if(!!this._timeLimit) {
            this._TLStarted = true;
            $gameTimer.start(this._limitedTime || 300);
        }
    }
   
    var _Window_ChoiceList_isCancelEnabled = Window_ChoiceList.prototype.isCancelEnabled;
    Window_ChoiceList.prototype.isCancelEnabled = function() {
        var normal = _Window_ChoiceList_isCancelEnabled.call(this);
        if(!!this._timeLimit) return false;
        else return normal;
    }
   
   
    var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.call(this, command, args);
        switch(command) {
            case "TLChoice":
               var cw = SceneManager._scene._messageWindow._choiceWindow;
                cw._timeLimit = true;
                if(!args) cw._limitedTime = 300;
                else if(parseInt(args[0]) == 0) cw._limitedTime = 300;
                else cw._limitedTime = parseInt(args[0]);
                break;
        }
    };
   
})(this);

评分

参与人数 3赞 +3 收起 理由
whitedewxiao + 1 塞糖
wodebanzangzei6 + 1 认可答案
白嫩白嫩的 + 1 认可答案

查看全部评分

https://rpg.blue/data/attachment/album/202003/28/021323lltgrsvfytfwuya5.gif
回复 1 0

使用道具 举报

梦石
0
星屑
43
在线时间
4 小时
注册时间
2019-1-12
回帖
2
 楼主| 发表于 2019-1-27 09:55:35 | 显示全部楼层
wabcmcc 发表于 2019-1-27 00:06
限時選擇插件
作者:Tsukimi

太棒了!这就是我想要的东西。万分感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部