Project1

标题: 关于时间脚本 求助 [打印本页]

作者: 347780682    时间: 2016-3-11 12:00
标题: 关于时间脚本 求助
这个的脚本本来是12个小时变动一次时辰 我设置了6个时长想让他4个小时变动一次
于是我改了这个
return Math.floor(this.getHour() / 12 ) === 0 ?

return Math.floor(this.getHour() / 4 ) === 0 ?
但是他只是变成第一次为4小时跳动第二次为20小时 求教改哪里才是正确的





JAVASCRIPT 代码复制
  1. //=============================================================================
  2. // Chronus.js
  3. // ----------------------------------------------------------------------------
  4. // Copyright (c) 2015 Triacontane
  5. // This software is released under the MIT License.
  6. // [url]http://opensource.org/licenses/mit-license.php[/url]
  7. // ----------------------------------------------------------------------------
  8. // Version
  9. // 1.2.0 2016/02/14 アナログ時計の表示機能を追加
  10. //                  現実の時間を反映させる機能の追加
  11. // 1.1.3 2016/01/21 競合対策(YEP_MessageCore.js)
  12. // 1.1.2 2016/01/10 カレンダーウィンドウの表示位置をカスタマイズできる機能を追加
  13. // 1.1.1 2015/12/29 日の値に「1」を設定した場合に日付の表示がおかしくなる不具合を修正
  14. //                  一部のコードを最適化
  15. // 1.1.0 2015/12/01 天候と時間帯をゲーム変数に格納できるよう機能追加
  16. // 1.0.0 2015/11/27 初版
  17. // ----------------------------------------------------------------------------
  18. // [Blog]   : [url]http://triacontane.blogspot.jp/[/url]
  19. // [Twitter]: [url]https://twitter.com/triacontane/[/url]
  20. // [GitHub] : [url]https://github.com/triacontane/[/url]
  21. //=============================================================================
  22.  
  23. /*:
  24.  * @plugindesc ゲーム内時間の導入プラグイン
  25.  * @author トリアコンタン
  26.  *
  27.  * @param 月ごとの日数配列
  28.  * @desc 各月の日数の配列です。カンマ区切りで指定してください。個数は自由です。
  29.  * @default 31,28,31,30,31,30,31,31,30,31,30,31
  30.  *
  31.  * @param 曜日配列
  32.  * @desc 曜日の名称配列です。カンマ区切りで指定してください。個数は自由です。
  33.  * @default (日),(月),(火),(水),(木),(金),(土)
  34.  *
  35.  * @param 自然時間加算
  36.  * @desc 1秒ごとに加算されるゲーム時間(分単位)の値です。イベント処理中は無効です。
  37.  * @default 5
  38.  *
  39.  * @param 場所移動時間加算
  40.  * @desc 1回の場所移動で加算されるゲーム時間(分単位)の値です。
  41.  * @default 30
  42.  *
  43.  * @param 戦闘時間加算(固定)
  44.  * @desc 1回の戦闘で加算されるゲーム時間(分単位)の値です。
  45.  * @default 30
  46.  *
  47.  * @param 戦闘時間加算(ターン)
  48.  * @desc 1回の戦闘で消費したターン数ごとに加算されるゲーム時間(分単位)の値です。
  49.  * @default 5
  50.  *
  51.  * @param 年のゲーム変数
  52.  * @desc 指定した番号のゲーム変数に「年」の値が自動設定されます。
  53.  * @default 0
  54.  *
  55.  * @param 月のゲーム変数
  56.  * @desc 指定した番号のゲーム変数に「月」の値が自動設定されます。
  57.  * @default 0
  58.  *
  59.  * @param 日のゲーム変数
  60.  * @desc 指定した番号のゲーム変数に「日」の値が自動設定されます。
  61.  * @default 0
  62.  *
  63.  * @param 曜日IDのゲーム変数
  64.  * @desc 指定した番号のゲーム変数に「曜日」のIDが自動設定されます。
  65.  * @default 0
  66.  *
  67.  * @param 曜日名のゲーム変数
  68.  * @desc 指定した番号のゲーム変数に「曜日」の名称が自動設定されます。
  69.  * ゲーム変数に文字列が入るので注意してください。
  70.  * @default 0
  71.  *
  72.  * @param 時のゲーム変数
  73.  * @desc 指定した番号のゲーム変数に「時」の値が自動設定されます。
  74.  * @default 0
  75.  *
  76.  * @param 分のゲーム変数
  77.  * @desc 指定した番号のゲーム変数に「時」の値が自動設定されます。
  78.  * @default 0
  79.  *
  80.  * @param 時間帯IDのゲーム変数
  81.  * @desc 指定した番号のゲーム変数に「時間帯」のIDが自動設定されます。
  82.  * 0:深夜 1:早朝 2:朝 3:昼 4:夕方 5:夜
  83.  * @default 0
  84.  *
  85.  * @param 天候IDのゲーム変数
  86.  * @desc 指定した番号のゲーム変数に「天候」のIDが自動設定されます。
  87.  * 0:なし 1:雨 2:嵐 3:雪
  88.  * @default 0
  89.  *
  90.  * @param 日時フォーマット1
  91.  * @desc マップ上の日付ウィンドウ1行目に表示される文字列です。
  92.  * YYYY:年 MM:月 DD:日 HH24:時(24) HH:時(12) AM:午前 or 午後 MI:分 DY:曜日
  93.  * @default YYYY年 MM月 DD日 DY
  94.  *
  95.  * @param 日時フォーマット2
  96.  * @desc マップ上の日付ウィンドウ2行目に表示される文字列です。
  97.  * YYYY:年 MM:月 DD:日 HH24:時(24) HH:時(12) AM:午前 or 午後 MI:分 DY:曜日
  98.  * @default AMHH時 MI分
  99.  *
  100.  * @param カレンダー表示X座標
  101.  * @desc カレンダーの表示 X 座標です。
  102.  * @default 0
  103.  *
  104.  * @param カレンダー表示Y座標
  105.  * @desc カレンダーの表示 Y 座標です。
  106.  * @default 0
  107.  *
  108.  * @param 文字盤画像ファイル
  109.  * @desc アナログ時計を表示する場合の文字盤画像ファイル名(拡張子は不要)です。
  110.  * 画像は「img/pictures/」以下に保存してください。
  111.  * @default
  112.  *
  113.  * @param 長針画像ファイル
  114.  * @desc アナログ時計を表示する場合の長針画像ファイル名(拡張子は不要)です。
  115.  * 画像は「img/pictures/」以下に保存してください。
  116.  * @default
  117.  *
  118.  * @param 短針画像ファイル
  119.  * @desc アナログ時計を表示する場合の長針画像ファイル名(拡張子は不要)です。
  120.  * 画像は「img/pictures/」以下に保存してください。
  121.  * @default
  122.  *
  123.  * @param 時計X座標
  124.  * @desc アナログ時計の表示X座標です。画像の中心座標を指定してください。
  125.  * @default 84
  126.  *
  127.  * @param 時計Y座標
  128.  * @desc アナログ時計の表示Y座標です。画像の中心座標を指定してください。
  129.  * @default 156
  130.  *
  131.  * @help ゲーム内で時刻と天候の概念を表現できるプラグインです。
  132.  * 自動、マップ移動、戦闘で時間が経過し、時間と共に天候と色調が変化します。
  133.  * これらの時間は調節可能で、またイベント中は時間の進行が停止します。
  134.  *
  135.  * さらに、現実の時間をゲーム中に反映させる機能もあります。
  136.  * 設定を有効にすると現実の時間がゲーム内とリンクします。
  137.  *
  138.  * 日付や曜日も記録し、曜日の数や名称を自由に設定できます。
  139.  * 現在日付はフォーマットに従って、画面左上に表示されます。
  140.  *
  141.  * 日付フォーマットには以下を利用できます。
  142.  * YYYY:年 MM:月 DD:日 HH24:時(24) HH:時(12) AM:午前 or 午後 MI:分 DY:曜日
  143.  *
  144.  * また、規格に沿った画像を用意すればアナログ時計も表示できます。
  145.  * 表示位置は各画像の表示可否は調整できます。
  146.  *
  147.  * 画像の規格は以下の通りです。
  148.  * ・文字盤 : 任意のサイズの正方形画像
  149.  * ・長針  : 文字盤と同じサイズの画像で、上(0)を指している針の画像
  150.  * ・短針  : 文字盤と同じサイズの画像で、上(0)を指している針の画像
  151.  *
  152.  * ツクマテにて規格に合った時計画像をリクエストしました。
  153.  * 使用する場合は、以下のURLより利用規約を別途確認の上、ご使用ください。
  154.  * [url]http://tm.lucky-duet.com/viewtopic.php?f=47&t=555&p=1615#p1615[/url]
  155.  *
  156.  * プラグインコマンド詳細
  157.  *  イベントコマンド「プラグインコマンド」から実行。
  158.  *  指定する値には制御文字\V[n]を使用できます。
  159.  *  (引数の間は半角スペースで区切る)
  160.  *
  161.  * C_ADD_TIME [分] : 指定した値(分単位)だけ時間が経過します。
  162.  * C_ADD_DAY [日] : 指定した値(日単位)だけ日数が経過します。
  163.  * C_SET_TIME [時] [分] : 指定した時間に変更します。
  164.  * C_SET_DAY [年] [月] [日] : 指定した日付に変更します。
  165.  * C_STOP : 時間の進行を停止します。
  166.  * C_START : 時間の進行を開始します。
  167.  * C_SHOW : カレンダーを表示します。
  168.  * C_HIDE : カレンダーを非表示にします。
  169.  * C_DISABLE_TINT : 時間帯による色調の変更を禁止します。
  170.  * C_ENABLE_TINT : 時間帯による色調の変更を許可します。
  171.  * C_DISABLE_WEATHER : 時間経過による天候の変化を禁止します。
  172.  * C_ENABLE_WEATHER : 時間経過による天候の変化を許可します。
  173.  * C_SET_SNOW_LAND : 悪天候時に雪が降るようになります。
  174.  * C_RESET_SNOW_LAND : 悪天候時に雨もしくは嵐が降るようになります。
  175.  * C_SET_SPEED [分] : 実時間1秒あたりの時間の経過速度を設定します。
  176.  * C_SHOW_CLOCK : アナログ時計を表示します。
  177.  * C_HIDE_CLOCK : アナログ時計を非表示にします。
  178.  * C_SET_TIME_REAL : 時間の取得方法を実時間に変更します。
  179.  * C_SET_TIME_VIRTUAL : 時間の取得方法をゲーム内時間に変更します。
  180.  *
  181.  * メモ欄詳細
  182.  *  タイトルセットおよびマップのメモ欄に以下を入力すると、一時的に天候と色調変化を自動で無効化できます。
  183.  *  屋内マップやイベントシーンなどで一時的に無効化したい場合に利用できます。
  184.  *
  185.  * <C_Tint:OFF> : 色調の変更を一時的に無効化します。
  186.  * <C_Weather:OFF> : 天候を一時的に無効化します。
  187.  *
  188.  * 利用規約:
  189.  *  作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)
  190.  *  についても制限はありません。
  191.  *  このプラグインはもうあなたのものです。
  192.  */
  193.  
  194. function Game_Chronus() {
  195.     this.initialize.apply(this, arguments);
  196. }
  197.  
  198. (function () {
  199.     'use strict';
  200.     var pluginName = 'Chronus';
  201.  
  202.     //=============================================================================
  203.     // PluginManager
  204.     //  多言語とnullに対応したパラメータの取得を行います。
  205.     //  このコードは自動生成され、全てのプラグインで同じものが使用されます。
  206.     //=============================================================================
  207.     var getParamString = function(paramNames) {
  208.         var value = getParamOther(paramNames);
  209.         return value == null ? '' : value;
  210.     };
  211.  
  212.     var getParamNumber = function(paramNames, min, max) {
  213.         var value = getParamOther(paramNames);
  214.         if (arguments.length < 2) min = -Infinity;
  215.         if (arguments.length < 3) max = Infinity;
  216.         return (parseInt(value, 10) || 0).clamp(min, max);
  217.     };
  218.  
  219.     var getParamOther = function(paramNames) {
  220.         if (!Array.isArray(paramNames)) paramNames = [paramNames];
  221.         for (var i = 0; i < paramNames.length; i++) {
  222.             var name = PluginManager.parameters(pluginName)[paramNames[i]];
  223.             if (name) return name;
  224.         }
  225.         return null;
  226.     };
  227.  
  228.     var getParamArrayString = function (paramNames) {
  229.         var values = getParamString(paramNames).split(',');
  230.         for (var i = 0; i < values.length; i++) values[i] = values[i].trim();
  231.         return values;
  232.     };
  233.  
  234.     var getParamArrayNumber = function (paramNames, min, max) {
  235.         var values = getParamArrayString(paramNames);
  236.         if (arguments.length < 2) min = -Infinity;
  237.         if (arguments.length < 3) max = Infinity;
  238.         for (var i = 0; i < values.length; i++) values[i] = (parseInt(values[i], 10) || 0).clamp(min, max);
  239.         return values;
  240.     };
  241.  
  242.     var getCommandName = function (command) {
  243.         return (command || '').toUpperCase();
  244.     };
  245.  
  246.     var getArgNumber = function (arg, min, max) {
  247.         if (arguments.length < 2) min = -Infinity;
  248.         if (arguments.length < 3) max = Infinity;
  249.         return parseIntStrict(convertEscapeCharacters(arg)).clamp(min, max);
  250.     };
  251.  
  252.     var parseIntStrict = function(value, errorMessage) {
  253.         var result = parseInt(value, 10);
  254.         if (isNaN(result)) throw Error('指定した値[' + value + ']が数値ではありません。' + errorMessage);
  255.         return result;
  256.     };
  257.  
  258.     var convertEscapeCharacters = function(text) {
  259.         if (text == null) text = '';
  260.         var window = SceneManager._scene._windowLayer.children[0];
  261.         return window ? window.convertEscapeCharacters(text) : text;
  262.     };
  263.  
  264.     var _DataManager_extractSaveContents = DataManager.extractSaveContents;
  265.     DataManager.extractSaveContents = function(contents) {
  266.         _DataManager_extractSaveContents.apply(this, arguments);
  267.         $gameSystem.chronus().onLoad();
  268.     };
  269.  
  270.     //=============================================================================
  271.     // Game_Interpreter
  272.     //  プラグインコマンド[C_ADD_TIME]などを追加定義します。
  273.     //=============================================================================
  274.     var _Game_Interpreter_pluginCommand      = Game_Interpreter.prototype.pluginCommand;
  275.     Game_Interpreter.prototype.pluginCommand = function (command, args) {
  276.         _Game_Interpreter_pluginCommand.apply(this, arguments);
  277.         try {
  278.             this.pluginCommandChronus(command, args);
  279.         } catch (e) {
  280.             if ($gameTemp.isPlaytest() && Utils.isNwjs()) {
  281.                 var window = require('nw.gui').Window.get();
  282.                 var devTool = window.showDevTools();
  283.                 devTool.moveTo(0, 0);
  284.                 devTool.resizeTo(Graphics.width, Graphics.height);
  285.                 window.focus();
  286.             }
  287.             console.log('プラグインコマンドの実行中にエラーが発生しました。');
  288.             console.log('- コマンド名  : ' + command);
  289.             console.log('- コマンド引数 : ' + args);
  290.             console.log('- エラー原因   : ' + e.toString());
  291.         }
  292.     };
  293.  
  294.     Game_Interpreter.prototype.pluginCommandChronus = function (command, args) {
  295.  
  296.         switch (getCommandName(command)) {
  297.             case 'C_ADD_TIME' :
  298.                 $gameSystem.chronus().addTime(getArgNumber(args[0], 0, 99999));
  299.                 break;
  300.             case 'C_ADD_DAY' :
  301.                 $gameSystem.chronus().addDay(getArgNumber(args[0], 0, 99999));
  302.                 break;
  303.             case 'C_SET_TIME' :
  304.                 var hour = getArgNumber(args[0], 0, 23);
  305.                 var minute = getArgNumber(args[1], 0, 59);
  306.                 $gameSystem.chronus().setTime(hour, minute);
  307.                 break;
  308.             case 'C_SET_DAY' :
  309.                 var year = getArgNumber(args[0], 1, 5000);
  310.                 var month = getArgNumber(args[1], 1, $gameSystem.chronus().getMonthOfYear());
  311.                 var day = getArgNumber(args[2], 1, $gameSystem.chronus().getDaysOfMonth(month));
  312.                 $gameSystem.chronus().setDay(year, month, day);
  313.                 break;
  314.             case 'C_STOP' :
  315.                 $gameSystem.chronus().stop();
  316.                 break;
  317.             case 'C_START' :
  318.                 $gameSystem.chronus().start();
  319.                 break;
  320.             case 'C_SHOW' :
  321.                 $gameSystem.chronus().showCalendar();
  322.                 break;
  323.             case 'C_HIDE' :
  324.                 $gameSystem.chronus().hideCalendar();
  325.                 break;
  326.             case 'C_DISABLE_TINT':
  327.                 $gameSystem.chronus().disableTint();
  328.                 break;
  329.             case 'C_ENABLE_TINT':
  330.                 $gameSystem.chronus().enableTint();
  331.                 break;
  332.             case 'C_DISABLE_WEATHER':
  333.                 $gameSystem.chronus().disableWeather();
  334.                 break;
  335.             case 'C_ENABLE_WEATHER':
  336.                 $gameSystem.chronus().enableWeather();
  337.                 break;
  338.             case 'C_SET_SNOW_LAND':
  339.                 $gameSystem.chronus().setSnowLand();
  340.                 break;
  341.             case 'C_RESET_SNOW_LAND':
  342.                 $gameSystem.chronus().resetSnowLand();
  343.                 break;
  344.             case 'C_SET_SPEED':
  345.                 $gameSystem.chronus().setTimeAutoAdd(getArgNumber(args[0], 0, 99));
  346.                 break;
  347.             case 'C_SHOW_CLOCK':
  348.                 $gameSystem.chronus().showClock();
  349.                 break;
  350.             case 'C_HIDE_CLOCK':
  351.                 $gameSystem.chronus().hideClock();
  352.                 break;
  353.             case 'C_SET_TIME_REAL':
  354.                 $gameSystem.chronus().setTimeReal();
  355.                 break;
  356.             case 'C_SET_TIME_VIRTUAL':
  357.                 $gameSystem.chronus().setTimeVirtual();
  358.                 break;
  359.         }
  360.     };
  361.  
  362.     var _Game_Interpreter_command236 = Game_Interpreter.prototype.command236;
  363.     Game_Interpreter.prototype.command236 = function() {
  364.         var result = _Game_Interpreter_command236.call(this);
  365.         if (!$gameParty.inBattle()) {
  366.             $gameSystem.chronus().setWeatherType(Game_Chronus.weatherTypes.indexOf(this._params[0]));
  367.             $gameSystem.chronus().setWeatherPower(this._params[1]);
  368.             $gameSystem.chronus().refreshTint(true);
  369.         }
  370.         return result;
  371.     };
  372.  
  373.     //=============================================================================
  374.     // Game_System
  375.     //  ゲーム内時間を扱うクラス「Game_Chronus」を追加定義します。
  376.     //=============================================================================
  377.     var _Game_System_initialize = Game_System.prototype.initialize;
  378.     Game_System.prototype.initialize = function() {
  379.         _Game_System_initialize.call(this);
  380.         this._chronus = new Game_Chronus();
  381.     };
  382.  
  383.     Game_System.prototype.chronus = function() {
  384.         return this._chronus;
  385.     };
  386.  
  387.     Game_System.prototype.onBattleEnd = function() {
  388.         this.chronus().onBattleEnd();
  389.     };
  390.  
  391.     var _Game_System_onLoad = Game_System.prototype.onLoad;
  392.     Game_System.prototype.onLoad = function() {
  393.         if (_Game_System_onLoad) _Game_System_onLoad.apply(this, arguments);
  394.         if (!this.chronus()) this._chronus = new Game_Chronus();
  395.         this._chronus.onLoad();
  396.     };
  397.  
  398.     //=============================================================================
  399.     // Game_Map
  400.     //  マップ及びタイルセットから、色調変化無効フラグを取得します。
  401.     //=============================================================================
  402.     Game_Map.prototype.isDisableTint = function() {
  403.         return this.isChronicleMetaInfo('Tint');
  404.     };
  405.  
  406.     Game_Map.prototype.isDisableWeather = function() {
  407.         return this.isChronicleMetaInfo('Weather');
  408.     };
  409.  
  410.     Game_Map.prototype.isChronicleMetaInfo = function(tagName) {
  411.         var value = $dataMap.meta['chronus' + tagName];
  412.         if (value != null) return value === 'OFF';
  413.         value = $dataMap.meta['C_' + tagName];
  414.         if (value != null) return value === 'OFF';
  415.         value = $dataTilesets[$dataMap.tilesetId].meta['chronus' + tagName];
  416.         if (value != null) return value === 'OFF';
  417.         value = $dataTilesets[$dataMap.tilesetId].meta['C_' + tagName];
  418.         if (value != null) return value === 'OFF';
  419.         return false;
  420.     };
  421.  
  422.     //=============================================================================
  423.     // Game_Player
  424.     //  場所移動時の時間経過を追加定義します。
  425.     //=============================================================================
  426.     var _Game_Player_performTransfer = Game_Player.prototype.performTransfer;
  427.     Game_Player.prototype.performTransfer = function() {
  428.         _Game_Player_performTransfer.call(this);
  429.         $gameSystem.chronus().transfer();
  430.     };
  431.  
  432.     //=============================================================================
  433.     // Scene_Map
  434.     //  Game_Chronusの更新を追加定義します。
  435.     //=============================================================================
  436.     var _Scene_Map_onMapLoaded = Scene_Map.prototype.onMapLoaded;
  437.     Scene_Map.prototype.onMapLoaded = function() {
  438.         $gameSystem.chronus().refreshTint(true);
  439.         $gameSystem.chronus().refreshWeather(true);
  440.         _Scene_Map_onMapLoaded.apply(this, arguments);
  441.     };
  442.  
  443.     var _Scene_Map_updateMain = Scene_Map.prototype.updateMain;
  444.     Scene_Map.prototype.updateMain = function() {
  445.         _Scene_Map_updateMain.apply(this, arguments);
  446.         $gameSystem.chronus().update();
  447.     };
  448.  
  449.     var _Scene_Map_createAllWindows = Scene_Map.prototype.createAllWindows;
  450.     Scene_Map.prototype.createAllWindows = function() {
  451.         this.createChronusWindow();
  452.         _Scene_Map_createAllWindows.apply(this, arguments);
  453.     };
  454.  
  455.     Scene_Map.prototype.createChronusWindow = function() {
  456.         this._chronusWindow = new Window_Chronus();
  457.         this.addWindow(this._chronusWindow);
  458.     };
  459.  
  460.     //=============================================================================
  461.     // BattleManager
  462.     //  戦闘終了時のゲーム内時間経過処理を追加定義します。
  463.     //=============================================================================
  464.     var _BattleManager_endBattle = BattleManager.endBattle;
  465.     BattleManager.endBattle = function(result) {
  466.         $gameSystem.onBattleEnd();
  467.         _BattleManager_endBattle.call(this, result);
  468.     };
  469.  
  470.     //=============================================================================
  471.     // Window_Chronus
  472.     //  ゲーム内時間情報を描画するウィンドウです。
  473.     //=============================================================================
  474.     function Window_Chronus() {
  475.         this.initialize.apply(this, arguments);
  476.     }
  477.  
  478.     Window_Chronus.prototype = Object.create(Window_Base.prototype);
  479.     Window_Chronus.prototype.constructor = Window_Chronus;
  480.  
  481.     var _Window_Chronus_initialize = Window_Chronus.prototype.initialize;
  482.     Window_Chronus.prototype.initialize = function() {
  483.         var bitmap = new Bitmap();
  484.         var pad = 8;
  485.         var width = Math.max(bitmap.measureTextWidth(this.chronus().getDateFormat(1)),
  486.             bitmap.measureTextWidth(this.chronus().getDateFormat(2)));
  487.         _Window_Chronus_initialize.call(this, 0, 0, width + pad * 2, 28 * 2 + pad * 2);
  488.         this.padding = pad;
  489.         this.contents = new Bitmap(this.width - this.padding * 2, this.height - this.padding * 2);
  490.         this.x = getParamNumber('カレンダー表示X座標');
  491.         this.y = getParamNumber('カレンダー表示Y座標');
  492.         this.refresh();
  493.     };
  494.  
  495.     Window_Chronus.prototype.refresh = function() {
  496.         this.contents.clear();
  497.         this.contents.drawText(this.chronus().getDateFormat(1),
  498.             0, 0, this.contents.width, this.contents.fontSize, 'left');
  499.         this.contents.drawText(this.chronus().getDateFormat(2),
  500.             0, this.contents.fontSize, this.contents.width, this.contents.fontSize, 'left');
  501.     };
  502.  
  503.     Window_Chronus.prototype.update = function() {
  504.         if (this.chronus().isShowingCalendar()) {
  505.             this.show();
  506.             if (this.chronus().isNeedRefresh()) this.refresh();
  507.         } else {
  508.             this.hide();
  509.         }
  510.     };
  511.  
  512.     Window_Chronus.prototype.chronus = function() {
  513.         return $gameSystem.chronus();
  514.     };
  515.  
  516.     //=============================================================================
  517.     // Sprite_Abstract
  518.     //  時計スプライトを使用しない場合に使用される抽象スプライトクラスです。
  519.     //=============================================================================
  520.     function Sprite_Abstract() {
  521.         this.initialize.apply(this, arguments);
  522.     }
  523.  
  524.     Sprite_Abstract.prototype.initialize = function() {
  525.         this.x = 0;
  526.         this.y = 0;
  527.         this.width = 0;
  528.         this.height = 0;
  529.     };
  530.  
  531.     Sprite_Abstract.prototype.update = function() {
  532.     };
  533.  
  534.     //=============================================================================
  535.     // Sprite_Chronicle_Clock
  536.     //  ゲーム内時間情報を描画するウィンドウです。
  537.     //=============================================================================
  538.     function Sprite_Chronicle_Clock() {
  539.         this.initialize.apply(this, arguments);
  540.     }
  541.  
  542.     Sprite_Chronicle_Clock.prototype = Object.create(Sprite.prototype);
  543.     Sprite_Chronicle_Clock.prototype.constructor = Sprite_Chronicle_Clock;
  544.  
  545.     var _Sprite_Chronicle_Clock_initialize = Sprite_Chronicle_Clock.prototype.initialize;
  546.     Sprite_Chronicle_Clock.prototype.initialize = function() {
  547.         _Sprite_Chronicle_Clock_initialize.apply(this, arguments);
  548.         this.x = getParamNumber('時計X座標');
  549.         this.y = getParamNumber('時計Y座標');
  550.         this.anchor.x = 0.5;
  551.         this.anchor.y = 0.5;
  552.         this.bitmap = ImageManager.loadPicture(getParamString('文字盤画像ファイル'));
  553.         this.createHourHandSprite();
  554.         this.createMinuteHandSprite();
  555.     };
  556.  
  557.     Sprite_Chronicle_Clock.prototype.createHourHandSprite = function() {
  558.         var handName = getParamString('短針画像ファイル'), handSprite = new Sprite();
  559.         handSprite.anchor.x = 0.5;
  560.         handSprite.anchor.y = 0.5;
  561.         handSprite.bitmap = handName ? ImageManager.loadPicture(handName) : ImageManager.loadEmptyBitmap();
  562.         handSprite.visible = !!handName;
  563.         this.hourHandSprite = handSprite;
  564.         this.addChild(this.hourHandSprite);
  565.     };
  566.  
  567.     Sprite_Chronicle_Clock.prototype.createMinuteHandSprite = function() {
  568.         var handName = getParamString('長針画像ファイル'), handSprite = new Sprite();
  569.         handSprite.anchor.x = 0.5;
  570.         handSprite.anchor.y = 0.5;
  571.         handSprite.bitmap = handName ? ImageManager.loadPicture(handName) : ImageManager.loadEmptyBitmap();
  572.         handSprite.visible = !!handName;
  573.         this.minuteHandSprite = handSprite;
  574.         this.addChild(this.minuteHandSprite);
  575.     };
  576.  
  577.     Sprite_Chronicle_Clock.prototype.update = function() {
  578.         this.visible = this.chronus().isShowingClock();
  579.         if (this.visible && !this.chronus().isTimeStop()) {
  580.             this.updateHourHand();
  581.             this.updateMinuteHand();
  582.         }
  583.     };
  584.  
  585.     Sprite_Chronicle_Clock.prototype.updateHourHand = function() {
  586.         if (!this.hourHandSprite.visible) return;
  587.         this.hourHandSprite.rotation = this.chronus().getRotationHourHand();
  588.     };
  589.  
  590.     Sprite_Chronicle_Clock.prototype.updateMinuteHand = function() {
  591.         if (!this.minuteHandSprite.visible) return;
  592.         this.minuteHandSprite.rotation = this.chronus().getRotationMinuteHand();
  593.     };
  594.  
  595.     Sprite_Chronicle_Clock.prototype.chronus = function() {
  596.         return $gameSystem.chronus();
  597.     };
  598.  
  599.     //=============================================================================
  600.     // Spriteset_Map
  601.     //  アナログ時計の画像を追加定義します。
  602.     //=============================================================================
  603.     var _Spriteset_Map_createUpperLayer = Spriteset_Map.prototype.createUpperLayer;
  604.     Spriteset_Map.prototype.createUpperLayer = function() {
  605.         _Spriteset_Map_createUpperLayer.apply(this, arguments);
  606.         this.createClockSprite();
  607.     };
  608.  
  609.     Spriteset_Map.prototype.createClockSprite = function() {
  610.         var fileName = ImageManager.loadPicture(getParamString('文字盤画像ファイル'));
  611.         this._clockSprite = fileName ? new Sprite_Chronicle_Clock() : new Sprite_Abstract();
  612.         this.addChild(this._clockSprite);
  613.     };
  614.  
  615.     //=============================================================================
  616.     // Game_Chronus
  617.     //  時の流れを扱うクラスです。このクラスはGame_Systemクラスで生成されます。
  618.     //  セーブデータの保存対象のためグローバル領域に定義します。
  619.     //=============================================================================
  620.     Game_Chronus.prototype             = Object.create(Game_Chronus.prototype);
  621.     Game_Chronus.prototype.constructor = Game_Chronus;
  622.     Game_Chronus.weatherTypes          = ['none', 'rain', 'storm', 'snow'];
  623.  
  624.     Game_Chronus.prototype.initialize = function () {
  625.         this._timeMeter       = 0;            // 一日の中での時間経過(分単位)60 * 24
  626.         this._dayMeter        = 0;            // ゲーム開始からの累計日数
  627.         this._stop            = true;         // 停止フラグ(全ての加算に対して有効。ただし手動による加算は例外)
  628.         this._disableTint     = false;        // 色調変更禁止フラグ
  629.         this._calendarVisible = false;        // カレンダー表示フラグ
  630.         this._disableWeather  = false;        // 天候制御禁止フラグ
  631.         this._weatherType     = 0;            // 天候タイプ(0:なし 1:雨 2:嵐 :3雪)
  632.         this._weatherPower    = 0;            // 天候の強さ
  633.         this._weatherCounter  = 0;            // 同一天候の維持時間
  634.         this._weatherSnowLand = false;        // 降雪地帯フラグ
  635.         this._clockVisible    = false;        // アナログ時計表示フラグ
  636.         this._realTime        = false;        // 実時間フラグ
  637.         this._frameCount      = 0;
  638.         this._demandRefresh   = false;
  639.         this._prevHour        = -1;
  640.         this._nowDate         = null;
  641.         this._timeAutoAdd     = 0;
  642.         this._timeTransferAdd = 0;
  643.         this._timeBattleAdd   = 0;
  644.         this._timeTurnAdd     = 0;
  645.         this._weekNames       = null;
  646.         this._daysOfMonth     = null;
  647.         this.onLoad();
  648.     };
  649.  
  650.     Game_Chronus.prototype.onLoad = function () {
  651.         if (!this._nowDate) this._nowDate = new Date();
  652.         if (!this._frameCount) this._frameCount = 0;
  653.         this._timeAutoAdd     = getParamNumber('自然時間加算', 0, 99);
  654.         this._timeTransferAdd = getParamNumber('場所移動時間加算', 0);
  655.         this._timeBattleAdd   = getParamNumber('戦闘時間加算(固定)', 0);
  656.         this._timeTurnAdd     = getParamNumber('戦闘時間加算(ターン)', 0);
  657.         this._weekNames       = getParamArrayString('曜日配列');
  658.         this._daysOfMonth     = getParamArrayNumber('月ごとの日数配列');
  659.     };
  660.  
  661.     Game_Chronus.prototype.update = function () {
  662.         this.updateEffect();
  663.         if (this.isTimeStop()) return;
  664.         this._frameCount++;
  665.         if (this._frameCount >= 60) {
  666.             if (this.isRealTime()) this._nowDate.setTime(Date.now());
  667.             this.addTime();
  668.         }
  669.     };
  670.  
  671.     Game_Chronus.prototype.isRealTime = function () {
  672.         return !!this._realTime;
  673.     };
  674.  
  675.     Game_Chronus.prototype.isTimeStop = function() {
  676.         return this.isStop() || $gameMap.isEventRunning();
  677.     };
  678.  
  679.     Game_Chronus.prototype.updateEffect = function () {
  680.         var hour = this.getHour();
  681.         if (this._prevHour !== hour) {
  682.             this.controlWeather(false);
  683.             this.refreshTint(false);
  684.             this._prevHour = this.getHour();
  685.         }
  686.     };
  687.  
  688.     Game_Chronus.prototype.refreshTint = function (swift) {
  689.         this.isEnableTint() ? this.setTint(this.getTimeZone(), swift) : $gameScreen.clearTone();
  690.     };
  691.  
  692.     Game_Chronus.prototype.setTint = function (timezone, swift) {
  693.         var tone = null;
  694.         switch (timezone) {
  695.             case 0:
  696.                 tone = [-102, -102, -68, 102];
  697.                 break;
  698.             case 1:
  699.                 tone = [-68, -68, 0, 0];
  700.                 break;
  701.             case 2:
  702.                 tone = [0, 0, 0, 0];
  703.                 break;
  704.             case 3:
  705.                 tone = [34, 34, 34, 0];
  706.                 break;
  707.             case 4:
  708.                 tone = [68, -34, -34, 0];
  709.                 break;
  710.             case 5:
  711.                 tone = [-68, -68, 0, 68];
  712.                 break;
  713.         }
  714.         if (this.getWeatherTypeId() !== 0) {
  715.             tone[0] > 0 ? tone[0] /= 7 : tone[0] -= 14;
  716.             tone[1] > 0 ? tone[1] /= 7 : tone[1] -= 14;
  717.             tone[2] > 0 ? tone[2] /= 7 : tone[1] -= 14;
  718.             tone[3] === 0 ? tone[3] = 68 : tone[3] += 14;
  719.         }
  720.         $gameScreen.startTint(tone, swift ? 0 : this.getEffectDuration());
  721.     };
  722.  
  723.     Game_Chronus.prototype.setWeatherType = function(value) {
  724.         this._weatherType = value.clamp(0, Game_Chronus.weatherTypes.length - 1);
  725.     };
  726.  
  727.     Game_Chronus.prototype.setWeatherPower = function(value) {
  728.         this._weatherPower = value.clamp(0, 10);
  729.     };
  730.  
  731.     Game_Chronus.prototype.setTimeAutoAdd = function(value) {
  732.         this._timeAutoAdd = value.clamp(0, 99);
  733.     };
  734.  
  735.     Game_Chronus.prototype.controlWeather = function (force) {
  736.         if (!force && Math.random() * 10 > this._weatherCounter - 7) {
  737.             this._weatherCounter++;
  738.         } else {
  739.             this._weatherCounter = 0;
  740.             if (Math.random() * 10 > 7) {
  741.                 this.setWeatherType(this.isSnowLand() ? 3 : Math.random() * 10 > 6 ? 2 : 1);
  742.                 this.setWeatherPower(Math.floor(Math.random() * 10));
  743.             } else {
  744.                 this.setWeatherType(0);
  745.                 this.setWeatherPower(0);
  746.             }
  747.         }
  748.         this.refreshWeather(false);
  749.     };
  750.  
  751.     Game_Chronus.prototype.refreshWeather = function (swift) {
  752.         this.isEnableWeather() ? this.setScreenWeather(swift) : $gameScreen.changeWeather(0, 0, 0);
  753.     };
  754.  
  755.     Game_Chronus.prototype.setScreenWeather = function (swift) {
  756.         $gameScreen.changeWeather(this.getWeatherType(), this._weatherPower, swift ? 0 : this.getEffectDuration());
  757.     };
  758.  
  759.     Game_Chronus.prototype.getEffectDuration = function () {
  760.         return this.isRealTime() ? 600 : Math.floor(60 * 5 / (this._timeAutoAdd / 10));
  761.     };
  762.  
  763.     Game_Chronus.prototype.disableTint = function () {
  764.         this._disableTint = true;
  765.         this.refreshTint(true);
  766.     };
  767.  
  768.     Game_Chronus.prototype.enableTint = function () {
  769.         this._disableTint = false;
  770.         this.refreshTint(true);
  771.     };
  772.  
  773.     Game_Chronus.prototype.isEnableTint = function () {
  774.         return !this._disableTint && !$gameMap.isDisableTint();
  775.     };
  776.  
  777.     Game_Chronus.prototype.disableWeather = function () {
  778.         this._disableWeather = true;
  779.         this.refreshWeather(true);
  780.     };
  781.  
  782.     Game_Chronus.prototype.enableWeather = function () {
  783.         this._disableWeather = false;
  784.         this.refreshWeather(true);
  785.     };
  786.  
  787.     Game_Chronus.prototype.isEnableWeather = function () {
  788.         return !this._disableWeather && !$gameMap.isDisableWeather();
  789.     };
  790.  
  791.     Game_Chronus.prototype.setSnowLand = function () {
  792.         this._weatherSnowLand = true;
  793.         this.refreshWeather(true);
  794.     };
  795.  
  796.     Game_Chronus.prototype.resetSnowLand = function () {
  797.         this._weatherSnowLand = false;
  798.         this.refreshWeather(true);
  799.     };
  800.  
  801.     Game_Chronus.prototype.isSnowLand = function () {
  802.         return this._weatherSnowLand;
  803.     };
  804.  
  805.     Game_Chronus.prototype.setTimeReal = function () {
  806.         this._realTime = true;
  807.     };
  808.  
  809.     Game_Chronus.prototype.setTimeVirtual = function () {
  810.         this._realTime = false;
  811.     };
  812.  
  813.     Game_Chronus.prototype.onBattleEnd = function () {
  814.         if (this.isStop()) return;
  815.         this.addTime(this._timeBattleAdd + this._timeTurnAdd * $gameTroop.turnCount());
  816.     };
  817.  
  818.     Game_Chronus.prototype.transfer = function () {
  819.         if (this.isStop()) return;
  820.         this.addTime(this._timeTransferAdd);
  821.     };
  822.  
  823.     Game_Chronus.prototype.stop = function () {
  824.         this._stop = true;
  825.     };
  826.  
  827.     Game_Chronus.prototype.start = function () {
  828.         this._stop = false;
  829.     };
  830.  
  831.     Game_Chronus.prototype.isStop = function () {
  832.         return this._stop;
  833.     };
  834.  
  835.     Game_Chronus.prototype.showCalendar = function () {
  836.         this._calendarVisible = true;
  837.     };
  838.  
  839.     Game_Chronus.prototype.hideCalendar = function () {
  840.         this._calendarVisible = false;
  841.     };
  842.  
  843.     Game_Chronus.prototype.isShowingCalendar = function () {
  844.         return this._calendarVisible;
  845.     };
  846.  
  847.     Game_Chronus.prototype.isSnowLand = function () {
  848.         return this._weatherSnowLand;
  849.     };
  850.  
  851.     Game_Chronus.prototype.showClock = function () {
  852.         this._clockVisible = true;
  853.     };
  854.  
  855.     Game_Chronus.prototype.hideClock = function () {
  856.         this._clockVisible = false;
  857.     };
  858.  
  859.     Game_Chronus.prototype.isShowingClock = function () {
  860.         return this._clockVisible;
  861.     };
  862.  
  863.     Game_Chronus.prototype.addTime = function (value) {
  864.         if (arguments.length === 0) value = this._timeAutoAdd;
  865.         this._timeMeter += value;
  866.         while (this._timeMeter >= 60 * 24) {
  867.             this.addDay();
  868.             this._timeMeter -= 60 * 24;
  869.         }
  870.         this.demandRefresh(false);
  871.     };
  872.  
  873.     Game_Chronus.prototype.setTime = function (hour, minute) {
  874.         var time = hour * 60 + minute;
  875.         if (this._timeMeter > time) this.addDay();
  876.         this._timeMeter = time;
  877.         this.demandRefresh(true);
  878.     };
  879.  
  880.     Game_Chronus.prototype.addDay = function (value) {
  881.         if (arguments.length === 0) value = 1;
  882.         this._dayMeter += value;
  883.         this.demandRefresh(false);
  884.     };
  885.  
  886.     Game_Chronus.prototype.setDay = function (year, month, day) {
  887.         var newDay = (year - 1) * this.getDaysOfYear();
  888.         for (var i = 0; i < month - 1; i++) {
  889.             newDay += this._daysOfMonth[i];
  890.         }
  891.         newDay += day - 1;
  892.         this._dayMeter = newDay;
  893.         this.demandRefresh(true);
  894.     };
  895.  
  896.     Game_Chronus.prototype.demandRefresh = function (effectRefreshFlg) {
  897.         this._demandRefresh = true;
  898.         this._frameCount = 0;
  899.         this.setGameVariable();
  900.         if (effectRefreshFlg) {
  901.             this.refreshTint(true);
  902.             this.controlWeather(true);
  903.         }
  904.     };
  905.  
  906.     Game_Chronus.prototype.isNeedRefresh = function() {
  907.         var needRefresh = this._demandRefresh;
  908.         this._demandRefresh = false;
  909.         return needRefresh;
  910.     };
  911.  
  912.     Game_Chronus.prototype.getDaysOfWeek = function () {
  913.         return this._weekNames.length;
  914.     };
  915.  
  916.     Game_Chronus.prototype.getDaysOfMonth = function (month) {
  917.         return this._daysOfMonth[month - 1];
  918.     };
  919.  
  920.     Game_Chronus.prototype.getDaysOfYear = function () {
  921.         var result = 0;
  922.         this._daysOfMonth.forEach(function(days) {result += days});
  923.         return result;
  924.     };
  925.  
  926.     Game_Chronus.prototype.setGameVariable = function () {
  927.         this.setGameVariableSub('年のゲーム変数', this.getYear());
  928.         this.setGameVariableSub('月のゲーム変数', this.getMonth());
  929.         this.setGameVariableSub('日のゲーム変数', this.getDay());
  930.         this.setGameVariableSub('曜日IDのゲーム変数', this.getWeekIndex());
  931.         this.setGameVariableSub('曜日名のゲーム変数', this.getWeekName());
  932.         this.setGameVariableSub('時のゲーム変数', this.getHour());
  933.         this.setGameVariableSub('分のゲーム変数', this.getMinute());
  934.         this.setGameVariableSub('時間帯IDのゲーム変数', this.getTimeZone());
  935.         this.setGameVariableSub('天候IDのゲーム変数', this.getWeatherTypeId());
  936.     };
  937.  
  938.     Game_Chronus.prototype.setGameVariableSub = function (paramName, value) {
  939.         var index = getParamNumber(paramName, 0, 5000);
  940.         if (index !== 0) $gameVariables.setValue(index, value);
  941.     };
  942.  
  943.     Game_Chronus.prototype.getMonthOfYear = function () {
  944.         return this._daysOfMonth.length;
  945.     };
  946.  
  947.     Game_Chronus.prototype.getWeekName = function () {
  948.         return this._weekNames[this.getWeekIndex()];
  949.     };
  950.  
  951.     Game_Chronus.prototype.getWeekIndex = function () {
  952.         return this.isRealTime() ? this._nowDate.getDay() : this._dayMeter % this.getDaysOfWeek();
  953.     };
  954.  
  955.     Game_Chronus.prototype.getYear = function () {
  956.         return this.isRealTime() ? this._nowDate.getFullYear() : Math.floor(this._dayMeter / this.getDaysOfYear()) + 1;
  957.     };
  958.  
  959.     Game_Chronus.prototype.getMonth = function () {
  960.         if (this.isRealTime()) return this._nowDate.getMonth() + 1;
  961.         var days = this._dayMeter % this.getDaysOfYear();
  962.         for (var i = 0; i < this._daysOfMonth.length; i++) {
  963.             days -= this._daysOfMonth[i];
  964.             if (days < 0) return i + 1;
  965.         }
  966.         return null;
  967.     };
  968.  
  969.     Game_Chronus.prototype.getDay = function () {
  970.         if (this.isRealTime()) return this._nowDate.getDate();
  971.         var days = this._dayMeter % this.getDaysOfYear();
  972.         for (var i = 0; i < this._daysOfMonth.length; i++) {
  973.             if (days < this._daysOfMonth[i]) return days + 1;
  974.             days -= this._daysOfMonth[i];
  975.         }
  976.         return null;
  977.     };
  978.  
  979.     Game_Chronus.prototype.getHour = function () {
  980.         return this.isRealTime() ? this._nowDate.getHours() : Math.floor(this._timeMeter / 60);
  981.     };
  982.  
  983.     Game_Chronus.prototype.getMinute = function () {
  984.         return this.isRealTime() ? this._nowDate.getMinutes() : this._timeMeter % 60;
  985.     };
  986.  
  987.     Game_Chronus.prototype.getDateFormat = function(index) {
  988.         var format = getParamString('日時フォーマット' + String(index));
  989.         format = format.replace(/DY/gi, function() {
  990.             return this.getWeekName();
  991.         }.bind(this));
  992.         format = format.replace(/(Y+)/gi, function() {
  993.             return this.getValuePadding(this.getYear(), arguments[1].length);
  994.         }.bind(this));
  995.         format = format.replace(/MM/gi, function() {
  996.             return this.getValuePadding(this.getMonth(), String(this.getMonthOfYear()).length);
  997.         }.bind(this));
  998.         format = format.replace(/DD/gi, function() {
  999.             return this.getValuePadding(this.getDay(),
  1000.                 String(this.getDaysOfMonth(this.getMonth())).length);
  1001.         }.bind(this));
  1002.         format = format.replace(/HH24/gi, function() {
  1003.             return this.getValuePadding(this.getHour(), 2);
  1004.         }.bind(this));
  1005.         format = format.replace(/HH/gi, function() {
  1006.             return this.getValuePadding(this.getHour() % 12, 2);
  1007.         }.bind(this));
  1008.         format = format.replace(/AM/gi, function() {
  1009.             return Math.floor(this.getHour() / 12 ) === 0 ?
  1010.                 $gameSystem.isJapanese() ? '午前' : '深夜  ' :
  1011.                 $gameSystem.isJapanese() ? '午後' : '早晨  ' ;
  1012.                 $gameSystem.isJapanese() ? '午後' : '深夜  ' ;
  1013.                 $gameSystem.isJapanese() ? '午後' : '早晨  ' ;
  1014.                 $gameSystem.isJapanese() ? '午後' : '深夜  ' ;
  1015.                 $gameSystem.isJapanese() ? '午後' : '早晨  ' ;
  1016.         }.bind(this));
  1017.         format = format.replace(/MI/gi, function() {
  1018.             return this.getValuePadding(this.getMinute(), 2);
  1019.         }.bind(this));
  1020.         return format;
  1021.     };
  1022.  
  1023.     Game_Chronus.prototype.getTimeZone = function () {
  1024.         return this.isHourInRange(0, 4)   ? 0 :
  1025.                this.isHourInRange(5, 6)   ? 1 :
  1026.                this.isHourInRange(7, 11)  ? 2 :
  1027.                this.isHourInRange(12, 16) ? 3 :
  1028.                this.isHourInRange(17, 18) ? 4 :
  1029.                this.isHourInRange(19, 21) ? 5 :
  1030.                this.isHourInRange(22, 24) ? 0 : null;
  1031.     };
  1032.  
  1033.     Game_Chronus.prototype.getWeatherTypeId = function () {
  1034.         return this._weatherType;
  1035.     };
  1036.  
  1037.     Game_Chronus.prototype.getWeatherType = function () {
  1038.         return Game_Chronus.weatherTypes[this.getWeatherTypeId()];
  1039.     };
  1040.  
  1041.     Game_Chronus.prototype.getValuePadding = function(value, digit, padChar) {
  1042.         if (arguments.length === 2) padChar = '0';
  1043.         var result = "";
  1044.         for (var i = 0; i < digit; i++) result += padChar;
  1045.         result += value;
  1046.         return result.substr(-digit);
  1047.     };
  1048.  
  1049.     Game_Chronus.prototype.isHourInRange = function(min, max) {
  1050.         var hour = this.getHour();
  1051.         return hour >= min && hour <= max;
  1052.     };
  1053.  
  1054.     Game_Chronus.prototype.getAnalogueHour = function() {
  1055.         return this.getHour() + (this.getAnalogueMinute() / 60);
  1056.     };
  1057.  
  1058.     Game_Chronus.prototype.getAnalogueMinute = function() {
  1059.         return this.getMinute() + (this.isRealTime() ? 0 : this._frameCount / 60 * this._timeAutoAdd);
  1060.     };
  1061.  
  1062.     Game_Chronus.prototype.getRotationHourHand = function() {
  1063.         return (this.getAnalogueHour() % 12) * (360 / 12) * Math.PI / 180;
  1064.     };
  1065.  
  1066.     Game_Chronus.prototype.getRotationMinuteHand = function() {
  1067.         return this.getAnalogueMinute() * (360 / 60) * Math.PI / 180;
  1068.     };
  1069. })();

作者: seedj13    时间: 2016-3-11 13:01
return Math.floor(this.getHour() / 12 ) === 0 ?这句是小时除以12,返回值小于1则取整为0,表示上午,返回值大于1则取整为1,表示下午,原文是这样的吧。
你如果要改成/4,则会出来4点之前返回0,4点到8点返回1,8点到12点返回2,一直到下一个0点之后,才会重新返回1,所以你的语句只有第一个4小时是发生变更的,后面没变,你得把后面的情况也写到代码里去,我看了下这个脚本要配合图片才会显示面板,我没法给你测试,只能给你指出下解决方法,你可以用switch语句,来对Math.floor(this.getHour() / 12 )进行判断,然后把时段名称放在数组里,或者单独放置也行,进行匹配就得到了你的效果。
作者: 347780682    时间: 2016-3-11 17:13
seedj13 发表于 2016-3-11 13:01
return Math.floor(this.getHour() / 12 ) === 0 ?这句是小时除以12,返回值小于1则取整为0,表示上午,返 ...


作者: seedj13    时间: 2016-3-11 18:43
  1.         format = format.replace(/AM/gi, function() {
  2.                         switch(Math.floor(this.getHour() / 4 )){
  3.                                 case 0:
  4.                                         return '深夜';
  5.                                         break;
  6.                                 case 1:
  7.                                         return '凌晨';
  8.                                         break;
  9.                                 case 2:
  10.                                         return '上午';
  11.                                         break;
  12.                                 case 3:
  13.                                         return '下午';
  14.                                         break;
  15.                                 case 4:
  16.                                         return '傍晚';
  17.                                         break;
  18.                                 case 5:
  19.                                         return '晚上';
  20.                                         break;
  21.                                 }
  22.         }.bind(this));
  23. 替换一下
复制代码

作者: tseyik    时间: 2016-3-11 18:59
本帖最后由 tseyik 于 2016-3-11 19:01 编辑


応還栗修改這裏(1005-1012行)

        format = format.replace(/HH/gi, function() {
            return this.getValuePadding(this.getHour() % 12, 2);
        }.bind(this));
        format = format.replace(/AM/gi, function() {
            return Math.floor(this.getHour() / 12) === 0 ?
                $gameSystem.isJapanese() ? '午前' : 'Morning  ' :
                $gameSystem.isJapanese() ? '午後' : 'Afternoon';
        }.bind(this));




                $gameSystem.isJapanese() ? '午前' : 'Morning  ' :
                $gameSystem.isJapanese() ? '午後' : 'Afternoon';

也要改成4個




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1