Project1

标题: 实时更新的时间系统 [打印本页]

作者: 宁静    时间: 2016-6-2 23:10
标题: 实时更新的时间系统
本帖最后由 余烬之中 于 2016-6-4 10:29 编辑

作为一个js的小白,今天在瓢虫和当当的帮助下写了这个插件,算是学习js的第一步吧!
写好了拿出来跟大家分享一下,看有没有同样需要使用的小伙伴,也希望有大神多指导指导我!
脚本一开始是参照 @余烬之中 的教学贴写的窗口,后来在瓢虫和当当的帮助下,添加了变量调用和实时更新,在这里再次万分感谢!
顺便勾搭一下,有没有志同道合想一起做游戏的小伙伴?QQ330572745!

使用效果图:


脚本:
JAVASCRIPT 代码复制
  1. Scene_Map.prototype.start = function() {
  2.     Scene_MenuBase.prototype.start.call(this);
  3.     SceneManager.clearStack();
  4.     if (this._transfer) {
  5.         this.fadeInForTransfer();
  6.         this._mapNameWindow.open();
  7.         this._ningjingWindow.open();
  8.         $gameMap.autoplay();
  9.     } else if (this.needsFadeIn()) {
  10.         this.startFadeIn(this.fadeSpeed(), false);
  11.     }
  12.     this.menuCalling = false;
  13. };
  14.  
  15. Scene_Map.prototype.stop = function() {
  16.     Scene_MenuBase.prototype.stop.call(this);
  17.     $gamePlayer.straighten();
  18.     this._mapNameWindow.close();
  19.     this._ningjingWindow.close();
  20.     if (this.needsSlowFadeOut()) {
  21.         this.startFadeOut(this.slowFadeSpeed(), false);
  22.     } else if (SceneManager.isNextScene(Scene_Map)) {
  23.         this.fadeOutForTransfer();
  24.     } else if (SceneManager.isNextScene(Scene_Battle)) {
  25.         this.launchBattle();
  26.     }
  27. };
  28. Scene_Map.prototype.terminate = function() {
  29.     Scene_MenuBase.prototype.terminate.call(this);
  30.     if (!SceneManager.isNextScene(Scene_Battle)) {
  31.         this._spriteset.update();
  32.         this._mapNameWindow.hide();
  33.         this._ningjingWindow.hide();
  34.         SceneManager.snapForBackground();
  35.     }
  36.     $gameScreen.clearZoom();
  37. };
  38. Scene_Map.prototype.createDisplayObjects = function() {
  39.     this.createSpriteset();
  40.     this.createMapNameWindow();
  41.     this.createNingJingWindow();
  42.     this.createWindowLayer();
  43.     this.createAllWindows();
  44. };
  45. Scene_Map.prototype.createNingJingWindow = function(){
  46.     this._ningjingWindow = new Window_Testing(550,580,260,40);
  47.     this.addChild(this._ningjingWindow);
  48. };
  49.  
  50. Scene_Map.prototype.callMenu = function() {
  51.     SoundManager.playOk();
  52.     SceneManager.push(Scene_Menu);
  53.     Window_MenuCommand.initCommandPosition();
  54.     $gameTemp.clearDestination();
  55.     this._ningjingWindow.hide();
  56.     this._mapNameWindow.hide();
  57.     this._waitCount = 2;
  58. };
  59. Scene_Map.prototype.launchBattle = function() {
  60.     BattleManager.saveBgmAndBgs();
  61.     this.stopAudioOnBattleStart();
  62.     SoundManager.playBattleStart();
  63.     this.startEncounterEffect();
  64.     this._ningjingWindow.hide();
  65.     this._mapNameWindow.hide();
  66. };
  67.  
  68. function Window_Testing() {
  69.     this.initialize.apply(this, arguments);
  70. }
  71. Window_Testing.prototype = Object.create(Window_Base.prototype);
  72. Window_Testing.prototype.initialize = function(x, y, width, height) {
  73.     Window_Base.prototype.initialize.call(this, x, y, width, height);
  74.     this.contents.fontSize = 20;
  75. }
  76.  
  77. Window_Testing.prototype.standardPadding = function() {
  78.     return 8;
  79. };
  80.  
  81. Window_Testing.prototype.update = function() {
  82.     Window_Base.prototype.update.call(this);
  83.  
  84.         if ($gameVariables.value(1)==0){
  85.                 $gameVariables._data[1]=1
  86.                 $gameVariables._data[2]=1
  87.                 $gameVariables._data[3]=1
  88.                 $gameVariables._data[4]=1
  89.         }else if($gameVariables.value(5)>=4){
  90.                 $gameVariables._data[5]-=4
  91.                 $gameVariables._data[4]+=1
  92.         }else if($gameVariables.value(4)>=25){
  93.                 $gameVariables._data[4]-=24
  94.                 $gameVariables._data[3]+=1
  95.         }else if($gameVariables.value(3)>=31){
  96.                 $gameVariables._data[3]-=30
  97.                 $gameVariables._data[2]+=1
  98.         }else if($gameVariables.value(2)>=13){
  99.                 $gameVariables._data[2]-=12
  100.                 $gameVariables._data[1]+=1
  101.         }
  102.     var textW = 270;
  103.     var textH = 0;
  104.     this.contents.clear();
  105.     this.drawText($gameVariables.value(1) + "年", -180, -6, textW, 'right');
  106.     textH += this.lineHeight();
  107.     this.drawText($gameVariables.value(2) + "月", -130, -6, textW, 'right');
  108.     textH += this.lineHeight();
  109.     this.drawText($gameVariables.value(3) + "日", -80, -6, textW, 'right');
  110.     textH += this.lineHeight();
  111.     this.drawText($gameVariables.value(4) + "时", -30, -6, textW, 'right');
  112.     textH += this.lineHeight();
  113. };

作者: 宁静    时间: 2016-6-2 23:28
在变量里1-5分别是年、月、日、时、刻,互相之间的进率是1年=12月 1月=30天 1天=24时 1时=4刻
作者: mercer_73    时间: 2016-6-6 13:21
keyi,我顶
作者: mikeyh01    时间: 2016-6-7 15:51
继续努力吧
作者: chenyilindzh    时间: 2016-8-7 09:39
时间会自动增长吗?还是只能用改变量的方法更改?
作者: everlose    时间: 2016-8-7 23:12
我自己写了个事件的时间系统  会连动 资源的刷新  天气 天色  比如早5点会出现黄昏  6点天亮 晚5点 落日 6点天黑  每1个小时 随机进行1次天气变化 85%以上是晴天  10%是雨天 5是风雪  下雪只会出现在10~12月这样  然后下雨的时候屋外特效  房内只能听到声音 不会有特效  每隔多少小时 刷新挖矿点 资源点   早8点到晚5点之外的时间  商店会打烊   人物进不去   之前进去的人会被赶出来   时间系统光靠脚本意义不大  要和其他联动 才是完美
作者: 两个人的嬉闹    时间: 2016-8-13 17:18
everlose 发表于 2016-8-7 23:12
我自己写了个事件的时间系统  会连动 资源的刷新  天气 天色  比如早5点会出现黄昏  6点天亮 晚5点 落日 6 ...

能不能分享来看看
作者: locrock    时间: 2017-1-24 09:38
Scene_Map.prototype.start = function() {
    Scene_MenuBase.prototype.start.call(this);
    SceneManager.clearStack();
    if (this._transfer) {
        this.fadeInForTransfer();
        this._mapNameWindow.open();
        this._ningjingWindow.open();
        $gameMap.autoplay();
    } else if (this.needsFadeIn()) {
        this.startFadeIn(this.fadeSpeed(), false);
    }
    this.menuCalling = false;
};

Scene_Map.prototype.stop = function() {
    Scene_MenuBase.prototype.stop.call(this);
    $gamePlayer.straighten();
    this._mapNameWindow.close();
    this._ningjingWindow.close();
    if (this.needsSlowFadeOut()) {
        this.startFadeOut(this.slowFadeSpeed(), false);
    } else if (SceneManager.isNextScene(Scene_Map)) {
        this.fadeOutForTransfer();
    } else if (SceneManager.isNextScene(Scene_Battle)) {
        this.launchBattle();
    }
};
Scene_Map.prototype.terminate = function() {
    Scene_MenuBase.prototype.terminate.call(this);
    if (!SceneManager.isNextScene(Scene_Battle)) {
        this._spriteset.update();
        this._mapNameWindow.hide();
        this._ningjingWindow.hide();
        SceneManager.snapForBackground();
    }
    $gameScreen.clearZoom();
};
Scene_Map.prototype.createDisplayObjects = function() {
    this.createSpriteset();
    this.createMapNameWindow();
    this.createNingJingWindow();
    this.createWindowLayer();
    this.createAllWindows();
};
Scene_Map.prototype.createNingJingWindow = function(){
    this._ningjingWindow = new Window_Testing(550,580,260,40);
    this.addChild(this._ningjingWindow);
};

Scene_Map.prototype.callMenu = function() {
    SoundManager.playOk();
    SceneManager.push(Scene_Menu);
    Window_MenuCommand.initCommandPosition();
    $gameTemp.clearDestination();
    this._ningjingWindow.hide();
    this._mapNameWindow.hide();
    this._waitCount = 2;
};
Scene_Map.prototype.launchBattle = function() {
    BattleManager.saveBgmAndBgs();
    this.stopAudioOnBattleStart();
    SoundManager.playBattleStart();
    this.startEncounterEffect();
    this._ningjingWindow.hide();
    this._mapNameWindow.hide();
};

function Window_Testing() {
    this.initialize.apply(this, arguments);
}
Window_Testing.prototype = Object.create(Window_Base.prototype);
Window_Testing.prototype.initialize = function(x, y, width, height) {
    Window_Base.prototype.initialize.call(this, x, y, width, height);
    this.contents.fontSize = 20;
}

Window_Testing.prototype.standardPadding = function() {
    return 8;
};

Window_Testing.prototype.update = function() {
    Window_Base.prototype.update.call(this);

        if ($gameVariables.value(1)==0){
                $gameVariables._data[1]=1
                $gameVariables._data[2]=1
                $gameVariables._data[3]=1
                $gameVariables._data[4]=1
        }else if($gameVariables.value(5)>=4){
                $gameVariables._data[5]-=4
                $gameVariables._data[2]+=1
        }else if($gameVariables.value(2)>=25){
                $gameVariables._data[2]-=24
                $gameVariables._data[1]+=1
        }else if($gameVariables.value(1)>=31){
                $gameVariables._data[1]-=30
                $gameVariables._data[3]+=1
        }else if($gameVariables.value(3)>=13){
                $gameVariables._data[3]-=12
                $gameVariables._data[14]+=1
        }
    var textW = 270;
    var textH = 0;
    this.contents.clear();
    this.drawText($gameVariables.value(1) + "日", -180, -6, textW, 'right');
    textH += this.lineHeight();
    this.drawText($gameVariables.value(2) + "时", -130, -6, textW, 'right');
    textH += this.lineHeight();
    this.drawText($gameVariables.value(3) + "月", -80, -6, textW, 'right');
    textH += this.lineHeight();
    this.drawText($gameVariables.value(4) + "年", -30, -6, textW, 'right');
    textH += this.lineHeight();

我觉得这条代码这样改会好用一点




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