2015-11-05 59 views
0

一個遊戲的私人服務器的命令代碼我正在「開發」。添加一個限制定時器(像只能完成/每24小時使用)

internal class LotteryCommand : Command 
{ 
    public LotteryCommand() 
     : base("lottery", 1) 
    { 
    } 
    //lottery can be used once every 24h, just to attract users making them want to get on at least once a day! 
    protected override bool Process(Player player, RealmTime time, string[] args) 
    { 
     Random rand = new Random(); 

     string name = player.Name; 

     string lottonum = rand.Next(0, 100).ToString(); 
     //50 50 chance! 
     if (int.Parse(lottonum) > 49) 
     { 
      player.Manager.Database.DoActionAsync(db => 
      { 
       player.Credits = db.UpdateCredit(player.Client.Account, +5000); 
       player.UpdateCount++; 

      }); 
     } 
     foreach (Client i in player.Manager.Clients.Values) 
     { 
      i.SendPacket(new TextPacket 
      { 
       BubbleTime = 0, 
       Stars = -1, 
       Name = "Lottery - " + name, 
       Text = "rolled a " + lottonum 
      }); 
     } 
     return true; 
    } 
} 

任何人都可以告訴我要添加什麼,如果我想命令只能用於每24小時一次? 對於那些不知道/想知道它/樂透的人,並且會說「樂透 - 玩家已經擲出了一個#」,並且如果#是50或更高,那麼使用該命令的玩家將贏得5k金(點數),如果下面,他們沒有贏得任何東西。 我只是希望它每24小時只能使用一次。

回答

1

只要玩家運行該命令,就可以在數據庫中插入時間戳。在命令方法的開始處,輸入一些代碼來檢查數據庫中的時間戳,並查看它是否在最近24小時內。如果是這樣,那麼方法就會突破,或者提供一些功能來提醒他們經常玩的用戶。

您可以創建另一個名爲CanPlay的方法來返回一個布爾值,並將其傳遞給用戶和當前時間戳。使用該方法確定用戶是否可以玩。