2013-04-14 54 views
0

這是有點難以對我解釋,但看:執行只有在一定的時間已經過去了的東西

我做了一個MMORPG服務器啓動至極有一個啓動按鈕,磨片,你點擊一個小窗口彈出,詢問你投票服務器,然後你可以再次點擊開始啓動遊戲(有一個10秒倒計時,纔可以真正開始遊戲)

唯一的是,投票網站只接受投票從一個用戶每12小時(基於IP和cookie),並且有人投了一次後,有一點點窗口彈出並等待每次你想開始遊戲時都有點煩人。

我的想法是: 當有人點擊打開投票窗口時,他的系統日期和準確時間將寫入文件。

之後,每次點擊開始發射器讀取日期和時間,並計算自上次投票以來是否已經過了12小時,如果是,它會再次要求您投票,如果不是,它將跳過那部分並直接開始遊戲。

我不是很有經驗,我不知道從哪裏開始,如何使這項工作,你的幫助是高度讚賞。

謝謝!

這是我的事件,如果它可以幫助。

private void btnStart_Click(object sender, EventArgs e) 
    { 
     var voteForm = new VoteWindow(); 
     voteForm.Show(); 
     voteForm.BringToFront(); 
     this.Enabled = false; 
    } 

這裏是我真正開始遊戲的代碼。

private void btnStart2_Click(object sender, EventArgs e) 
    { 
     string error1 = "Deleted because it was too long..."; 
     string title1 = "Deleted because it was too long..."; 

     if (File.Exists("engine.exe")) 
     { 
      Process.Start("engine.exe", "/load /config debug"); 
      Application.Exit(); 
     } 
     else 
     { 
      MessageBox.Show(error1, title1, MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 
+0

在一個不相關的筆記上,爲什麼要這麼做: voteForm.Show(); voteForm.BringToFront(); this.Enabled = false; ??爲什麼不使用ShowDialog()呢? – Star

+0

我沒有使用ShowDialog,因爲我試過了,並且遇到了一些問題,現在我正在使用的那個完成同樣的功能,並且BringToFront將確保它位於主窗體的頂部。另外禁用是禁用和凍結主表格,而投票人開放 – Dan

回答

1

只需使用Properties.Settings。您可以通過轉到Solution Explorer然後展開Properties並打開Settings.Settings來創建新設置。在此頁面上,您可以創建一個新的System.DateTime對象。然後你會做這樣的事情。

private void btnStart_Click(object sender, EventArgs e) 
{ 
    TimeSpan ts = DateTime.Now - Properties.Settings.Default.MySetting; 

    if (ts.TotalHours > 12) 
    { 
     Properties.Settings.Default.MySetting = DateTime.Now; 
     Properties.Settings.Default.Save(); 

     var voteForm = new VoteWindow(); 
     voteForm.Show(); 
     voteForm.BringToFront(); 
     this.Enabled = false; 
    } 
} 
+0

這很好,謝謝!我通過添加其他 {}來定製它,如果12小時沒有用完(在我的情況下開始遊戲)將會發生的行爲 – Dan

+0

沒問題。如果答案有幫助,那麼你應該接受它,並upvote它。 –

相關問題