查看: 2964|回复: 7

[有事请教] 存档时间和现实时间

[复制链接]
梦石
0
星屑
2617
在线时间
375 小时
注册时间
2021-9-20
回帖
71
发表于 2025-5-24 02:59:11 | 显示全部楼层 |阅读模式
悬赏50星屑已解决
请教各位大佬,如何做到在每次读档时,用当前的现实时间和存档时的时间比对,算出差值,然后用差值作为系数,与游戏内的一些变量做计算。

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

最佳答案

查看完整内容

JavaScript中可以用[pre lang="JavaScript"]var date = new Date()[/pre]获取当前设备的当前的时间并保存到变量time里面 这个time可以用time.getFullYear(),time.getMonth() + 1,time.getDay(),time.getHours(),time.getMinutes(),time.getSeconds(),来获取年月日和时分秒, 要做计算的话在存档的时候将数据保存到里面,读档时提取出来,然后再获取一次计算差值 找到rmmz_managers.js文件的第389行,如法炮制添加代码即可[pr ...

评分

参与人数 1赞 +1 收起 理由
chz2025 + 1 精品文章

查看全部评分

梦石
0
星屑
1494
在线时间
135 小时
注册时间
2020-6-1
回帖
8
发表于 2025-5-24 02:59:12 | 显示全部楼层
本帖最后由 13851402 于 2025-5-24 08:20 编辑

JavaScript中可以用[pre lang="JavaScript"]var date = new Date()[/pre]获取当前设备的当前的时间并保存到变量time里面
这个time可以用time.getFullYear(),time.getMonth() + 1,time.getDay(),time.getHours(),time.getMinutes(),time.getSeconds(),来获取年月日和时分秒,
要做计算的话在存档的时候将数据保存到里面,读档时提取出来,然后再获取一次计算差值
找到rmmz_managers.js文件的第389行,如法炮制添加代码即可[pre lang="JavaScript"]DataManager.makeSaveContents = function() {
    // A save data does not contain $gameTemp, $gameMessage, and $gameTroop.
    const contents = {};
    contents.system = $gameSystem;
    contents.screen = $gameScreen;
    contents.timer = $gameTimer;
    contents.switches = $gameSwitches;
    contents.variables = $gameVariables;
    contents.selfSwitches = $gameSelfSwitches;
    contents.actors = $gameActors;
    contents.party = $gameParty;
    contents.map = $gameMap;
    contents.player = $gamePlayer;
    // 添加代码保存相关内容
    contents.lastplaytime = new Date();
    return contents;
};

DataManager.extractSaveContents = function(contents) {
    $gameSystem = contents.system;
    $gameScreen = contents.screen;
    $gameTimer = contents.timer;
    $gameSwitches = contents.switches;
    $gameVariables = contents.variables;
    $gameSelfSwitches = contents.selfSwitches;
    $gameActors = contents.actors;
    $gameParty = contents.party;
    $gameMap = contents.map;
    $gamePlayer = contents.player;
    // 添加读取代码,读取内容
    var time = contents.lastplaytime;
    //  打印输出
    console.log(time);
};
[/pre]
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
847
在线时间
128 小时
注册时间
2022-2-21
回帖
66
发表于 2025-5-24 08:14:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
6412
在线时间
1700 小时
注册时间
2018-1-16
回帖
364
发表于 2025-5-24 10:42:47 | 显示全部楼层
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());

我用这个读取本地时间,第一次打开【离线系统】自动读取,带入,然后第二次登陆游戏回自动判断,从而计算过了多久,虽然可能会造成玩家修改系统时间的情况下,但是如果无伤大雅的离线也还行
回复

使用道具 举报

梦石
0
星屑
2617
在线时间
375 小时
注册时间
2021-9-20
回帖
71
 楼主| 发表于 2025-5-24 14:42:30 | 显示全部楼层
13851402 发表于 2025-5-24 07:25
JavaScript中可以用var date = new Date()[/pre]获取当前设备的当前的时间并保存到变量time里面
这个time可 ...

var date = new Date()

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

使用道具 举报

头像被屏蔽
梦石
0
星屑
847
在线时间
128 小时
注册时间
2022-2-21
回帖
66
发表于 2025-5-24 16:15:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
1494
在线时间
135 小时
注册时间
2020-6-1
回帖
8
发表于 2025-5-24 21:27:24 | 显示全部楼层
kingybk1976 发表于 2025-5-24 14:42
var date = new Date()

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

看完全文,我写了放在哪里的,代码也提供了,也有注释,剩下功能自定义,如果你没有脚本基础,建议先学习一下JavaScript
回复

使用道具 举报

梦石
0
星屑
1910
在线时间
106 小时
注册时间
2010-12-22
回帖
218
发表于 2025-8-14 12:40:34 | 显示全部楼层
挂机游戏必备代码! 不过只写这段代码会有BUG,就是关闭游戏,往后调整一下系统时间,然后再开游戏,瞬间可以获得大量资源~~~
建议加一段,现在时间比存档时间早,有个非常严重的惩罚的代码,这就让玩家不会钻空子了~~~
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部