根据时间更新值

本文关键字:更新 时间 | 更新日期: 2023-09-27 18:30:34

我创建了一个简单的累积奖金游戏。我完成了游戏,但我目前的问题是每天补充硬币。我每天给10个硬币,更新应该在上午9点。问题是我不知道什么时候存储第一个播放日期它。这就是我迄今为止一直在尝试的。

   public DateTime firstPlayedDate
   {
     get
    {
        CoinTracker firstPlayedEntry = _db.CoinTrackers.Where(u => u.FbId == fbId).OrderByDescending(u => u.CoinTimer).FirstOrDefault();
        return firstPlayedEntry == null ? new DateTime() : firstPlayedEntry.CoinTimer;
    }
   }
   public int AvailableDailyCoins
   {
     get
     {   
        return (DateTime.UtcNow.Date - firstPlayedDate.Date).Days > 0 ? 10 : 0;
     }
   }

我想到的一种方式是,每当玩家有 10 个硬币时,我就会存储第一个 PlayedDate。还有其他想法吗??

根据时间更新值

如果您的想法是这样,我不会根据客户端中运行的计时器给出硬币。这将允许最基本的作弊。任何人都可以修改浏览器中运行的代码,使用小提琴手等工具给自己奖励。

相反,我会将lastActiveTimestamp存储在服务器上的用户配置文件中,然后使用cron作业在给定时间根据需要迭代用户列表奖励硬币,或者,我更喜欢,实际上甚至不在上午9点给予奖励 - 只需通过读取lastActiveTimestamp并从Datetime.Now()计算他们的帐户下次激活时到期的奖励。

希望这是有道理的。