[C++] Meilleur moyen d'obtenir la date actuelle

CPP, .H, .M files || par Microsoft
Avatar de l’utilisateur
Message(s) : 7
Inscrit(e) le : 21 Mars 2012, 19:47

[C++] Meilleur moyen d'obtenir la date actuelle

Messagepar OlivierVerville907 » 29 Avr 2012, 00:48

Okay donc, encore une fois pour le même projet. J'ai commencer à créer des événements speciaux, pour des jours spécifiques. Exemple, le jour de Noël, votre héro gagne +25% d'experience durant toute la journée. Mon code fonctionne avec des conditions basée sur des dates. J'obtiens la date avec system time. Ce qui veut dire que, si quelqu'un le voulait bien, il pourrait changer la date de son ordinateur et avoir accès aux événements spéciaux nimporte quand.

Donc, existe-t-il un moyen plus sur d'obtenir la date actuelle? Voici le code que j'utilises en ce moment:
  1. BOOL Design::HolidayEvents()
  2. {
  3.     if (!ClientReady(FALSE) || !V_HolidayEvents)
  4.     return FALSE;
  5.  
  6.     SYSTEMTIME Time;
  7.     GetLocalTime(&Time);
  8.  
  9.     /* Special Days Events */
  10.     if (Time.wMonth == 12 && Time.wDay == 25)
  11.     {
  12.         Print(0, 0, "ÿc4<ÿc3Whist Modÿc4>ÿc0: Welcome %sÿc0, this game is using the Whist Mod %s under version 1.13c.", Me->pPlayerData->szName, V_wmModVer);
  13.         if (GetUnitStat(Me, STAT_ADMINFLAG) == 1){Print(0, 4, "ÿc4<ÿc3D2Adminÿc4>ÿc0: ÿc4You are now a Realm Administrator.");}
  14.         Print(0, 0, "ÿc4<ÿc3Whist Modÿc4>ÿc0: Today it's Christmas. Experience gain is increased by 25%%. Merry Christmas.");
  15.         D2COMMON_AddUnitStat(Me, STAT_ADDXPGAIN, 25, 0);
  16.         V_HolidayEvents = FALSE;
  17.     }
  18.  
  19.     else if (Time.wMonth == 1 && Time.wDay == 1)
  20.     {
  21.         Print(0, 0, "ÿc4<ÿc3Whist Modÿc4>ÿc0: Welcome %sÿc0, this game is using the Whist Mod %s under version 1.13c.", Me->pPlayerData->szName, V_wmModVer);
  22.         if (GetUnitStat(Me, STAT_ADMINFLAG) == 1){Print(0, 4, "ÿc4<ÿc3D2Adminÿc4>ÿc0: ÿc4You are now a Realm Administrator.");}
  23.         Print(0, 0, "ÿc4<ÿc3Whist Modÿc4>ÿc0: Today it's the New Year day. Experience gain is increased by 35%%. Happy New Year.");
  24.         D2COMMON_AddUnitStat(Me, STAT_ADDXPGAIN, 35, 0);
  25.         V_HolidayEvents = FALSE;
  26.     }
  27.  
  28.     else if (Time.wMonth == 10 && Time.wDay == 31)
  29.     {
  30.         Print(0, 0, "ÿc4<ÿc3Whist Modÿc4>ÿc0: Welcome %sÿc0, this game is using the Whist Mod %s under version 1.13c.", Me->pPlayerData->szName, V_wmModVer);
  31.         if (GetUnitStat(Me, STAT_ADMINFLAG) == 1){Print(0, 4, "ÿc4<ÿc3D2Adminÿc4>ÿc0: ÿc4You are now a Realm Administrator.");}
  32.         Print(0, 8, "ÿc4<ÿc3Whist Modÿc4>ÿc0: ÿc8Happy Halloween Everyone. Magic Find is increased by 25%% Today.");
  33.         D2COMMON_AddUnitStat(Me, STAT_MAGICFIND, 25, 0);
  34.         V_HolidayEvents = FALSE;
  35.     }
  36.  
  37.     else if (Time.wMonth == 4 && Time.wDay == 1)
  38.     {
  39.         Print(0, 0, "ÿc4<ÿc3Whist Modÿc4>ÿc0: Welcome %sÿc0, this game is using the Whist Mod %s under version 1.13c.", Me->pPlayerData->szName, V_wmModVer);
  40.         if (GetUnitStat(Me, STAT_ADMINFLAG) == 1){Print(0, 4, "ÿc4<ÿc3D2Adminÿc4>ÿc0: ÿc4You are now a Realm Administrator.");}
  41.         Print(0, 0, "ÿc4<ÿc3Whist Modÿc4>ÿc0: It's April's Fool day, gold find has been increased by 2500%%. Haha, just kidding, it's increased by 25%% :)");
  42.         D2COMMON_AddUnitStat(Me, STAT_GOLDFIND, 25, 0);
  43.         V_HolidayEvents = FALSE;
  44.     }
  45.  
  46.     else
  47.     {
  48.         Print(0, 0, "ÿc4<ÿc3Whist Modÿc4>ÿc0: Welcome %sÿc0, this game is using the Whist Mod %s under version 1.13c.", Me->pPlayerData->szName, V_wmModVer);
  49.         if (GetUnitStat(Me, STAT_ADMINFLAG) == 1){Print(0, 4, "ÿc4<ÿc3D2Adminÿc4>ÿc0: ÿc4You are now a Realm Administrator.");}
  50.         V_HolidayEvents = FALSE;
  51.     }
  52.     /* End of Special Days Events */
  53.  
  54.     return TRUE;
  55. }


J'ai tester, et en effet, j'ai pu accéder a tous les événements spéciaux en changeant la date de mon ordinateur, aka deux ou trois clics.

Merci.
Olivier Verville
V4S907

Retour vers C++/C

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité