Advertisement
BM_R1KO

Untitled

Jul 9th, 2017
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #if defined _keys_core_included
  2.  #endinput
  3. #endif
  4. #define _keys_core_included
  5.  
  6. #define KEYS_MAX_LENGTH     64
  7.  
  8. // Прототип вызова при валидации параметров ключа
  9. functag public bool:KeyParamsValidateCallback(iClient, const String:sKeyType[], Handle:hParamsArr, String:sError[], iErrLen);
  10.  
  11. // Прототип вызова при акцивации ключа
  12. functag public bool:KeyUseCallback(iClient, const String:sKeyType[], Handle:hParamsArr, String:sError[], iErrLen);
  13.  
  14. // Прототип вызова при выводе параметров ключа
  15. functag public KeyPrintCallback(iClient, const String:sKeyType[], Handle:hParamsArr, String:sBuffer[], iBufLen);
  16.  
  17. // Прототип вызова при проверке существования ключа
  18. functag public KeyCheckValidKeyCallback(const String:sKey[], bool:bKeyExists);
  19.  
  20. // Прототип вызова при получении данных ключа
  21. functag public KeyGetDataCallback(const String:sKey[], bool:bKeyExists, const String:sKeyType[], iUses, iExpires, Handle:hParamsArr);
  22.  
  23. // Прототип вызова при добавлении ключа
  24. functag public KeyAddCallback(const String:sKey[], bool:bSuccess);
  25.  
  26. // Прототип вызова при удалении ключа
  27. functag public KeyRemoveCallback(const String:sKey[], bool:bSuccess);
  28.  
  29. // Прототип вызова при использоании ключа игроком
  30. functag public KeyUseCallback(iClient, const String:sKey[], bool:bSuccess, String:sError[]);
  31.  
  32. // Вызывается когда ядро было загружено
  33. forward Keys_OnCoreStarted();
  34.  
  35. // Загружено ли ядро
  36. native bool:Keys_IsCoreStarted();
  37.  
  38. // Получает Handle базы данных
  39. native Handle:Keys_GetCoreDatabase();
  40.  
  41. // Получает тип базы данных (0 - SQLite, 1 - MySQL)
  42. native bool:Keys_GetDatabaseType();
  43.  
  44. // Регистрирует тип ключей
  45. native bool:Keys_RegKey(const String:sKeyType[],
  46.                     KeyParamsValidateCallback:OnKeyParamsValidate,
  47.                     KeyUseCallback:OnKeyUse,
  48.                     KeyPrintCallback:OnKeyPrint);
  49.  
  50. // Разрегистрирует тип ключей
  51. native Keys_UnregKey(const String:sKeyType[]);
  52.  
  53. // Проверяет существование типа ключей
  54. native bool:Keys_IsValidKeyType(const String:sKeyType[]);
  55.  
  56. // Получает adt_array со всеми типами ключей (нужно закрывать Handle)
  57. native Handle:Keys_FillArrayByKeyTypes();
  58.  
  59. // Проверяет существование ключа
  60. native Keys_IsValidKey(const String:sKey[], KeyCheckValidKeyCallback:IsValidKeyCallback);
  61.  
  62. // Получает данные ключа
  63. native Keys_GetKeyData(const String:sKey[], KeyGetDataCallback:GetKeyDataCallback);
  64.  
  65. // Генерирует ключ
  66. native Keys_GenerateKey(String:sBuffer[], iBufLen, const String:sTemplate[] = "");
  67.  
  68. // Добавляет ключ
  69. native Keys_AddKey(const String:sKey[], KeyAddCallback:AddKeyCallback);
  70.  
  71. // Удаляет ключ
  72. native Keys_RemoveKey(const String:sKey[], KeyRemoveCallback:RemoveKeyCallback);
  73.  
  74. // Использует ключ игроком
  75. native Keys_UseKey(iClient, const String:sKey[], bool:bNotify, KeyUseCallback:UseKeyCallback);
  76.    
  77. // Для использования не забыть:
  78. // LoadTranslations("keys_core.phrases");
  79. stock Keys_GetTimeFromStamp(String:sBuffer[], iMaxLength, iTimeStamp, iClient = LANG_SERVER)
  80. {
  81.     if (iTimeStamp > 31536000)
  82.     {
  83.         new iYears = iTimeStamp / 31536000;
  84.         new i = iTimeStamp - (iYears*31536000);
  85.         if(i > 2592000)
  86.         {
  87.             FormatEx(sBuffer, iMaxLength, "%d %T %d %T", iYears, "YEARS", iClient, i / 2592000, "MONTHS", iClient);
  88.         }
  89.         else
  90.         {
  91.             FormatEx(sBuffer, iMaxLength, "%d %T", iYears, "YEARS", iClient);
  92.         }
  93.         return;
  94.     }
  95.  
  96.     if (iTimeStamp > 2592000)
  97.     {
  98.         new iMonths = iTimeStamp / 2592000;
  99.         new i = iTimeStamp - (iMonths*2592000);
  100.         if (i > 86400)
  101.         {
  102.             FormatEx(sBuffer, iMaxLength, "%d %T %d %T", iMonths, "MONTHS", iClient, i / 86400, "DAYS", iClient);
  103.         }
  104.         else
  105.         {
  106.             FormatEx(sBuffer, iMaxLength, "%d %T", iMonths, "MONTHS", iClient);
  107.         }
  108.         return;
  109.     }
  110.  
  111.     if (iTimeStamp > 86400)
  112.     {
  113.         new iDays = iTimeStamp / 86400 % 365;
  114.         new iHours = (iTimeStamp / 3600) % 24;
  115.         if (iHours > 0)
  116.         {
  117.             FormatEx(sBuffer, iMaxLength, "%d %T %d %T", iDays, "DAYS", iClient, iHours, "HOURS", iClient);
  118.         }
  119.         else
  120.         {
  121.             FormatEx(sBuffer, iMaxLength, "%d %T", iDays, "DAYS", iClient);
  122.         }
  123.         return;
  124.     }
  125.  
  126.     new iHours = (iTimeStamp / 3600);
  127.     new iMins = (iTimeStamp / 60) % 60;
  128.     new iSecs = iTimeStamp % 60;
  129.    
  130.     if (iHours > 0)
  131.     {
  132.         FormatEx(sBuffer, iMaxLength, "%02d:%02d:%02d", iHours, iMins, iSecs);
  133.     }
  134.     else
  135.     {
  136.         FormatEx(sBuffer, iMaxLength, "%02d:%02d", iMins, iSecs);
  137.     }
  138. }
  139.  
  140. public SharedPlugin:__pl_keys_core=
  141. {
  142.     name = "keys_core",
  143.     file = "Keys_Core.smx",
  144. #if defined REQUIRE_PLUGIN
  145.     required = 1
  146. #else
  147.     required = 0
  148. #endif
  149. };
  150.  
  151. #if !defined REQUIRE_PLUGIN
  152.  
  153. public __pl_keys_core_SetNTVOptional()
  154. {
  155.     MarkNativeAsOptional("Keys_IsCoreStarted");
  156.     MarkNativeAsOptional("Keys_GetCoreDatabase");
  157.     MarkNativeAsOptional("Keys_GetDatabaseType");
  158.     MarkNativeAsOptional("Keys_RegKey");
  159.     MarkNativeAsOptional("Keys_UnregKey");
  160.     MarkNativeAsOptional("Keys_IsValidKeyType");
  161.     MarkNativeAsOptional("Keys_FillArrayByKeyTypes");
  162.     MarkNativeAsOptional("Keys_IsValidKey");
  163.     MarkNativeAsOptional("Keys_GetKeyData");
  164.     MarkNativeAsOptional("Keys_GenerateKey");
  165.     MarkNativeAsOptional("Keys_AddKey");
  166.     MarkNativeAsOptional("Keys_RemoveKey");
  167.     MarkNativeAsOptional("Keys_UseKey");
  168. }
  169. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement