Project1

标题: 存档时间和现实时间 [打印本页]

作者: kingybk1976    时间: 2025-5-24 02:59
标题: 存档时间和现实时间
请教各位大佬,如何做到在每次读档时,用当前的现实时间和存档时的时间比对,算出差值,然后用差值作为系数,与游戏内的一些变量做计算。

比如一个放置游戏,下线保存后,1天后上线,获得这段时间的资源收成。


作者: 13851402    时间: 2025-5-24 02:59
本帖最后由 13851402 于 2025-5-24 08:20 编辑

JavaScript中可以用
JAVASCRIPT 代码复制
  1. var date = new Date()
获取当前设备的当前的时间并保存到变量time里面
这个time可以用time.getFullYear(),time.getMonth() + 1,time.getDay(),time.getHours(),time.getMinutes(),time.getSeconds(),来获取年月日和时分秒,
要做计算的话在存档的时候将数据保存到里面,读档时提取出来,然后再获取一次计算差值
找到rmmz_managers.js文件的第389行,如法炮制添加代码即可
JAVASCRIPT 代码复制
  1. DataManager.makeSaveContents = function() {
  2.     // A save data does not contain $gameTemp, $gameMessage, and $gameTroop.
  3.     const contents = {};
  4.     contents.system = $gameSystem;
  5.     contents.screen = $gameScreen;
  6.     contents.timer = $gameTimer;
  7.     contents.switches = $gameSwitches;
  8.     contents.variables = $gameVariables;
  9.     contents.selfSwitches = $gameSelfSwitches;
  10.     contents.actors = $gameActors;
  11.     contents.party = $gameParty;
  12.     contents.map = $gameMap;
  13.     contents.player = $gamePlayer;
  14.     // 添加代码保存相关内容
  15.     contents.lastplaytime = new Date();
  16.     return contents;
  17. };
  18.  
  19. DataManager.extractSaveContents = function(contents) {
  20.     $gameSystem = contents.system;
  21.     $gameScreen = contents.screen;
  22.     $gameTimer = contents.timer;
  23.     $gameSwitches = contents.switches;
  24.     $gameVariables = contents.variables;
  25.     $gameSelfSwitches = contents.selfSwitches;
  26.     $gameActors = contents.actors;
  27.     $gameParty = contents.party;
  28.     $gameMap = contents.map;
  29.     $gamePlayer = contents.player;
  30.     // 添加读取代码,读取内容
  31.     var time = contents.lastplaytime;
  32.     //  打印输出
  33.     console.log(time);
  34. };

作者: rpgmz    时间: 2025-5-24 08:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: l734273398    时间: 2025-5-24 10:42
var tmp = new Date();
$gameVariables.setValue(193, tmp.getYear()+1900);
$gameVariables.setValue(194, tmp.getMonth()+1);
$gameVariables.setValue(195, tmp.getDate());
$gameVariables.setValue(196, tmp.getHours());
$gameVariables.setValue(197, tmp.getMinutes());

我用这个读取本地时间,第一次打开【离线系统】自动读取,带入,然后第二次登陆游戏回自动判断,从而计算过了多久,虽然可能会造成玩家修改系统时间的情况下,但是如果无伤大雅的离线也还行
作者: kingybk1976    时间: 2025-5-24 14:42
13851402 发表于 2025-5-24 07:25
JavaScript中可以用var date = new Date()[/pre]获取当前设备的当前的时间并保存到变量time里面
这个time可 ...

var date = new Date()

请问。。。这一句添加到哪里?
作者: rpgmz    时间: 2025-5-24 16:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: 13851402    时间: 2025-5-24 21:27
kingybk1976 发表于 2025-5-24 14:42
var date = new Date()

请问。。。这一句添加到哪里?

看完全文,我写了放在哪里的,代码也提供了,也有注释,剩下功能自定义,如果你没有脚本基础,建议先学习一下JavaScript
作者: loveinyou200    时间: 昨天 12:40
挂机游戏必备代码! 不过只写这段代码会有BUG,就是关闭游戏,往后调整一下系统时间,然后再开游戏,瞬间可以获得大量资源~~~
建议加一段,现在时间比存档时间早,有个非常严重的惩罚的代码,这就让玩家不会钻空子了~~~




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