/** @addtogroup Server */
/*@{*/

/**
 * \~russian @name   
 * \~english @name Time and data
 * \~ @weight 500
 */
//@{

/** \~russian  .
 *
 *      #get_start_time.
 *
 * @see get_start_time
 */
const uint16 __Year;

/** \~russian  .
 *
 * @par  
 * 1  12.
 */
const uint16 __Month;

/** \~russian  .
 *
 * @par  
 * 1  (   ).    .
 */
const uint16 __Day;

/** \~russian  .
 *
 * @par  
 * 0  23.
 */
const uint16 __Hour;

/** \~russian  .
 *
 * @par  
 * 0  59.
 */
const uint16 __Minute;

/** \~russian  .
 *
 * @par  
 * 0  59.
 */
const uint16 __Second;

/** \~russian   ,   , , , ,   . */
const uint16 __FullSecond;

/** \~russian   .
 *
 *      #get_start_time.
 * @see get_start_time
 */
const uint16 __TimeMultiplier;

//@}

/**
 * \~russian @name 
 *
 *  ,       .
 *
 ** \~english @name Combat
 *
 * List of global variables that can be used to tweak combat.
 *
 * \~ @weight 490
 */
//@{

/** (?) */
uint __Breaktime;

/** (?) */
uint __TimeoutTransfer;

/** (?) */
uint __TimeoutBattle;

/** (?) */
uint __ApRegeneration;

/** \~russian   AP     . */
uint __RtApCostCritterWalk;

/** \~russian   AP     . */
uint __RtApCostCritterRun;

/** (?) */
uint __RtApCostMoveItemContainer;

/** (?) */
uint __RtApCostMoveItemInventory;

/** (?) */
uint __RtApCostPickItem;

/** (?) */
uint __RtApCostDropItem;

/** (?) */
uint __RtApCostReloadWeapon;

/** (?) */
uint __RtApCostPickCritter;

/** (?) */
uint __RtApCostUseItem;

/** (?) */
uint __RtApCostUseSkill;

/** (?) */
uint __TbApCostCritterMove;

/** (?) */
uint __TbApCostMoveItemContainer;

/** (?) */
uint __TbApCostMoveItemInventory;

/** (?) */
uint __TbApCostPickItem;

/** (?) */
uint __TbApCostDropItem;

/** (?) */
uint __TbApCostReloadWeapon;

/** (?) */
uint __TbApCostPickCritter;

/** (?) */
uint __TbApCostUseItem;

/** (?) */
uint __TbApCostUseSkill;

/** (?) */
uint __ApCostAimEyes;

/** (?) */
uint __ApCostAimHead;

/** (?) */
uint __ApCostAimGroin;

/** (?) */
uint __ApCostAimTorso;

/** (?) */
uint __ApCostAimArms;

/** (?) */
uint __ApCostAimLegs;

/** (?) */
uint __HitAimEyes;

/** (?) */
uint __HitAimHead;

/** (?) */
uint __HitAimGroin;

/** (?) */
uint __HitAimTorso;

/** (?) */
uint __HitAimArms;

/** (?) */
uint __HitAimLegs;

bool __RtAlwaysRun;

bool __TbAlwaysRun;

/** \~russian  , - false */
bool __AlwaysRun;

/** \~russian   ,   -,    */
uint __AlwaysRunMoveDist;

/** \~russian   //etc,   -,    */
uint __AlwaysRunUseDist;

//@}

/**
 * \~russian @name   
 * \~english @name Worldmap
 * \~ @weight 480
 */
//@{

/** \~russian    .
 *
 * @par  
 * 100.
 */
uint __GlobalMapWidth;

/** \~russian    .
 *
 * @par  
 * 100.
 */
uint __GlobalMapHeight;

/** \~russian     .
 *
 * @par  
 * 500.
 */
uint __GlobalMapZoneLength;

/** \~russian   . */
uint __GlobalMapMaxGroupCount;

//@}

/**
 * \~russian @name 
 * \~english @name Miscellaneous
 * \~ @weight 470
 */
//@{

/** \~russian ,     . */
uint __FixBoyDefaultExperience;

/** \~russian    .
 *
 * @par 
 * <code>(20 + Perception * 3) - (Sneak / __SneakDivider)</code>.
 */
uint __SneakDivider;

/** \~russian   . */
bool __FreeExp;

/** \~russian  . */
bool __RegulatePvP;

/** \~russian    . */
bool __NoAnswerShuffle;

/** \~russian     (    ). */
bool __RunOnCombat;

/** \~russian      . */
bool __RunOnTransfer;

/** \~russian      #critter_idle. */
uint __CritterIdleTick;

/** \~russian   . */
uint __LevelCap;

/** \~russian        #__LevelCap ( ,  , ). */
bool __LevelCapAddExperience;

/** \~russian    .
 *
 * @par  
 * <code>critter.LookRadius = __LookNormal + critter.Perception * 3 - opponent.Sneak / __SneakDivider + critter.BonusLook</code>
 */
uint __LookNormal;

/** \~russian   .
 *
 *   ,     .
 */
uint __LookMinimum;

/** \~russian  -,     . */
int __DeadHitPoints;

/** \~russian   ,  -.
 *
 * \~
 * @see Critter::GetBagRefreshTime
 * @see Critter::SetBagRefreshTime
 */
uint __BagRefreshTime;

/** \~russian    ,    . */
uint __WisperDist;

/** \~russian ,         #item_cost. */
bool __CustomItemCost;

/** \~russian      .
 *
 *    .    ,   0.
 *
 */
uint __AccountPlayTime;

/** \~russian          .
 *
 * @remarks        @c true;    @c false.
 *
 */
bool __DialogDemandRecheck;

/**
 * \~russian    .
 *
 * \~ @see #ST_TALK_DISTANCE
 */
uint __TalkDistance;

/** \~russian    ,    . */
uint __ShoutDist;

/** \~russian     */ 
float __SpritesZoom;

/** \~russian    
 *
 * \~russian @remarks   10.0f
 */
float __SpritesZoomMax;

/** \~russian    
 *
 * \~russian @remarks   0.2f
 */
float __SpritesZoomMin;

/** \~russian    */
uint __DlgTalkMinTime;

/** \~russian    */
uint __DlgBarterMinTime;

//@}

/**
 * \~russian @name  
 * \~english @name Look modifiers
 * \~ @weight 475
 */
//@{

/** \~russian   ,       .
 *
 * . @link LookChecks Look checks@endlink.
 */
int __LookChecks;

/** \~russian        . */
uint __LookDir0;

/** \~russian        . */
uint __LookDir1;

/** \~russian           . */
uint __LookDir2;

/** \~russian        . */
uint __LookDir3;

/** \~russian        . */
uint __LookSneakDir0;

/** \~russian        . */
uint __LookSneakDir1;

/** \~russian           . */
uint __LookSneakDir2;

/** \~russian        . */
uint __LookSneakDir3;

/** \~russian  ( ),        1%. */
uint __LookWeight;

/** \~russian   . */
int __MouseX;
int __MouseY;

/** \~russian   @ref GLOBAL_PROCESS_MOVE . */
uint __EncounterTime;

//@{


/**
 * \~russian @name  
 * \~english @name General functions
 * \~ @weight 300
 */
//@{

/** \~russian    -.
 *
 * @param  text   .
 */
void Log(string& text);

/** \~russian   .
 *
 * @param  minimum   .
 * @param  maximum   .
 *
 * @return    @a minimum  @a maximum, .
 */
int Random(int minimum, int maximum);

/** \~russian    .
 *
 *   . ,  , .
 *   ,   , .
 *
 * @param  text    ,  .
 * @param  result  ,     .
 *
 * @return @c true     ;
 *         @c false    .
 */
bool StrToInt(string& text, int& result);

/** \~russian    .
 *
 *   ,    :    ,
 *   .     -,    ,
 * , .
 *
 * @return  .
 */
string@ GetLastError();

/** \~russian    .
 *
 * @param  player         ,    .
 * @param  npc            NPC,     .
 * @param  ignoreDistance  true,        
 *
 * @return @c true      ;
 *         @c false    .
 */
bool RunDialog(Critter& player, Critter& npc, bool ignoreDistance);

/** \~russian    .
 *
 * @param  player         ,    .
 * @param  dialogId         .
 * @param  hexX, hexY         .
 * @param  ignoreDistance  true,        
 *
 * @return @c true      ;
 *         @c false    .
 */
bool RunDialog(Critter& player, uint16 dialogId, uint16 hexX, uint16 hexY, bool ignoreDistance);

/** \~russian    .
 *
 * @param  channel   .
 * @param  text     .
 */
void RadioMessage(uint16 channel, string& text);

/** \~russian    .
 *
 *    MSG-.
 *
 * @param  channel   .
 * @param  textMsg   MSG- (. @link MsgNums Msg nums@endlink).
 * @param  strNum    .
 */
void RadioMessageMsg(uint16 channel, uint16 textMsg, uint strNum);

/** \~russian     .
 *
 * @param  score     (. @link Scores@endlink).
 * @param  player  ,      .
 * @param  name     @a player  @c null,
 *                         .
 *
 */
void SetBestScore(int score, Critter@+ player, string& name);

/** \~russian    .
 *
 *     :
 * @code
 * void listen_Func(Critter& player, string& text);
 * @endcode
 * - @a player  ,     ;
 * - @a text   .
 *  @b listen_     ,
 *      (   dlg_, d_, r_...).
 *
 * @param   sayType     .  @link SayTypes Say types@endlink.
 * @param   firstStr    ,      .   .
 * @param   parameter      .
 *                       @c SAY_RADIO   ,
 *                             (. @b MAPS.TXT).
 * @param   scriptName   .
 *
 * @return  @c true    ; @c false    .
 *
 * @remarks     @c firstStr  5,   63.
 *
 * @see     EraseTextListener
 */
bool AddTextListener(int sayType, string& firstStr, uint16 parameter, string& scriptName);

/** \~russian    .
 *
 *           
 *    #AddTextListener.
 *
 * @see AddTextListener
 */
void EraseTextListener(int sayType, string& firstStr, uint16 parameter);

/** \~russian   ,     . */
NpcPlane@+ CreatePlane();

/** \~russian       . */
uint GetTick();

/** \~russian      .
 *
 *       .
 *
 * @param  map      .
 * @param  look      .
 * @param  hx, hy    .
 * @param  dir      .
 *
 */
void ViewMap(Map& map, uint look, uint16 hx, uint16 hy, uint8 dir);

/** \~russian       .
 *
 * @param  scriptName         .
 * @param  funcDeclaration     .
 *
 * @return  .
 *
 * @see    GetScriptName
 *
 */
uint GetScriptId(string& scriptName, string& funcDeclaration);

/** \~russian       .
 *
 * @param  scriptId   .
 *
 * @return  .
 *
 * @see    GetScriptId
 */
string@ GetScriptName(uint scriptId);

//@}

/**
 * \~russian @name  
 * \~english @name Coordinates system
 * \~ @weight 280
 */
//@{

/** \~russian     .
 *
 * @param  cr1   .
 * @param  cr2   .
 *
 * @return     .
 */
uint GetCrittersDistantion(Critter& cr1, Critter& cr2);

/** \~russian     .
 *
 * @param  hexX1, hexY1   1- .
 * @param  hexX2, hexY2   2- .
 *
 * @return     .
 */
uint GetDistantion(uint16 hexX1, uint16 hexY1, uint16 hexX2, uint16 hexY2);

/** \~russian  ,     2   1.
 *
 * @param  fromX, fromY   1- .
 * @param  toX, toY       2- .
 *
 * @return .  : 0  -, 1  , 2  -, 3  -  ..
 */
uint8 GetDirection(uint16 fromX, uint16 fromY, uint16 toX, uint16 toY);

uint8 GetOffsetDir(uint16 hx, uint16 hy, uint16 tx, uint16 ty, float offset);

//@}

/**
 * \~russian @name    
 * \~english @name For maps and locations
 * \~ @weight 280
 */
//@{

/** \~russian  .
 *
 * @param  protoId         ID   (.  @b _maps.fos).
 * @param  worldX, worldY      .
 * @param  critters           ,    .
 *
 * @return  ID  .      0.
 */
uint CreateLocation(uint16 protoId, uint16 worldX, uint16 worldY, Critter@[]@+ critters);

/** \~russian   .
 *
 * @param  locationId   ID .
 */
void DeleteLocation(uint16 locationId);

/** \~russian      .
 *
 * @param  locId    .
 *
 * @return     Location.    @c null.
 */
Location@+ GetLocation(uint locId);

/** \~russian     .
 *
 * @param  locPid        (. @b CITIES.TXT).
 * @param  skipCount     .
 *                         ,   .
 *
 * @return     Location.    @c null.
 */
Location@+ GetLocationByPid(uint16 locPid, uint skipCount);

/** \~russian  ,    .
 *
 * @param  worldX, worldY       .
 * @param  radius             .
 * @param  locations       ,       .
 *
 * @return   .
 */
uint GetLocations(uint16 worldX, uint16 worldY, uint radius, Location@[]@+ locations);

/** \~russian      .
 *
 * @param  mapId    .
 *
 * @return     Map.    @c null.
 */
Map@+ GetMap(uint mapId);

/** \~russian     .
 *
 * @param  mapProtoId     (. @b _maps.fos, @b MAPS.TXT).
 * @param  skipCount      .
 *                          ,   .
 *
 * @return     Map.    @c null.
 */
Map@+ GetMapByPid(uint16 mapProtoId, uint skipCount);

/** \~russian         .
 *
 * @param   pid           (. @b CITY.TXT).
 * @param   locations  ,       .
 *
 * @return    .
 */
uint GetAllLocations(uint16 pid, Location@[]@+ locations);

/** \~russian         .
 *
 * @param   pid      (. @b MAPS.TXT).
 * @param   maps  ,       .
 *
 * @return    .
 */
uint GetAllMaps(uint16 pid, Map@[]@+ maps);

//@}

/**
 * \~russian @name    
 * \~english @name For players and critters
 * \~ @weight 270
 */
//@{

/** \~russian      NPC   .
 *
 * @param   pid    NPC.
 * @param   npc  ,       NPC.
 *
 * @return    NPC.
 *
 */
uint GetAllNpc(uint16 pid, Critter@[]@+ npc);

/** \~russian      .
 *
 * @param  critterId    .
 *
 * @return     Critter.   ,  
 *                  -,
 *             @c null.
 */
Critter@+ GetCritter(uint critterId);

/** \~russian     .
 *
 * @param   playerName   () .
 *
 * @return      Critter,    @c null.
 *
 * @remarks      ( ),     .
 */
Critter@+ GetPlayer(string& playerName);

/** \~russian       .
 *
 *     .
 *
 * @param  name   () .
 *
 * @return  .
 */
uint GetPlayerId(string& name);

/** \~russian       .
 *
 *     .
 *
 * @param  playerId   .
 *
 * @return  .
 */
string@+ GetPlayerName(uint playerId);

/** \~russian     NPC    .
 *
 * @param  npc  NPC,   .
 *
 */
void DeleteNpc(Critter& npc);

/** \~russian (?)
 *
 * @param   cr1
 * @param   cr2
 * @param   withInventory
 * @param   withVars
 *
 * @return
 */
bool SwapCritters(Critter& cr1, Critter& cr2, bool withInventory, bool withVars);

/** \~russian        */
uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters);

/** \~russian    
 *                 .
 *
 *  :
 * @code
 * int _FuncName(Critter& cr, uint index)
 * @endcode
 *
 * @param  index       (. @link Params  @endlink).
 * @param  funcName   .
 *
 * @return @c true      ;
 *         @c false    .
 *
 * @see    Critter::Param
 * @see    SetParameterChangeBehaviour
 *
 */
bool SetParameterGetBehaviour(uint index, string& funcName);

/** \~russian    - 
 *                 .
 *
 *  :
 * @code
 * void _FuncName(Critter& cr, uint index, int oldValue)
 * @endcode
 *
 * @param   index       (. @link Params  @endlink).
 * @param   funcName   .
 *
 * @return  @c true      ;
 *          @c false    .
 *
 * @see     Critter::Param
 * @see     Critter::ParamBase
 * @see     SetParameterGetBehaviour
 *
 */
bool SetParameterChangeBehaviour(uint index, string& funcName);

/** \~russian       ,
 *            -    .
 *
 * @see     Critter::Param
 * @see     Critter::ParamBase
 *
 */
void SetSendParameter(int index, bool enabled);

/** \~russian       ,
 *            -    .
 *
 * @see     Critter::Param
 * @see     Critter::ParamBase
 *
 */
void SetChosenSendParameter(int index, bool enabled);

//@}

/**
 * \~russian @name  
 * \~english @name Game Variables
 * \~ @weight 260
 */
//@{

/** \~russian   .
 *
 * @param  varId  ID  (. <b>GVAR_...</b>   @b _vars.fos).
 *
 * @return     GameVar.    @c null.
 */
GameVar@+ GetGlobalVar(uint16 varId);

/** \~russian   .
 *
 * @param  varId     ID  (. <b>LVAR_...</b>   @b _vars.fos).
 * @param  masterId  ID .
 *
 * @return     GameVar.    @c null.
 */
GameVar@+ GetLocalVar(uint16 varId, uint masterId);

/** \~russian   .
 *
 * @param  varId     ID  (. <b>UVAR_...</b>   @b _vars.fos).
 * @param  masterId  ID .
 * @param  slaveId   ID  .
 *
 * @return     GameVar.    @c null.
 */
GameVar@+ GetUnicumVar(uint16 varId, uint masterId, uint slaveId);

//@}

/**
 * \~russian @name  
 * \~english @name Items related
 * \~ @weight 250
 */
//@{

/** \~russian          .
 *
 * @param   pid      (.  @b ITEMPID.H).
 * @param   items  ,       .
 *
 * @return    .
 *
 */
uint GetAllItems(uint16 pid, Item@[]@+ items);

/** \~russian   ,   ID.
 *
 * @param  protoId  ID   (.  @b ITEMPID.H).
 *
 * @return     ProtoItem.    @c null.
 */
ProtoItem@+ GetProtoItem(uint16 protoId);

/** \~russian       .
 *
 * @param  bagId        (. @b _bags.fos).
 * @param  pids       ,         .
 * @param  minCounts  ,          .
 * @param  maxCounts  ,          .
 * @param  slots      ,          .
 *
 * @return     .
 *
 * @see    #ST_BAG_ID
 */
uint GetBagItems(uint bagId,
    uint16[]@+ pids, uint[]@+ minCounts, uint[]@+ maxCounts, int[]@+ slots);

/** \~russian       .
 *
 * @param  item     .
 * @param  count     .
 * @param  toCr    ,    .
 *
 * @see    MoveItems(Item@[]&, Critter&)
 * @see    MoveItem(Item&, uint, Item&, uint)
 * @see    MoveItem(Item&, uint, Map&, uint16, uint16)
 */
void MoveItem(Item& item, uint count, Critter& toCr);

/** \~russian    -,     ID.
 *
 *  ID      
 *      .
 *
 *   , ,  ,
 *     .  ,      
 *  -,      .   @a stackId
 *   .
 *
 * @param  item      .
 * @param  count      .
 * @param  toCont   -,    .
 * @param  stackId    ID  (. Item::SpecialId).
 *
 * @see    Item::SpecialId
 * @see    MoveItems(Item@[]&, Item&, uint)
 * @see    MoveItem(Item&, uint, Critter&)
 * @see    MoveItem(Item&, uint, Map&, uint16, uint16)
 */
void MoveItem(Item& item, uint count, Item& toCont, uint stackId);

/** \~russian     .
 *
 * @param  item         .
 * @param  count         .
 * @param  toMap       ,      .
 * @param  toHx, toHy    ,     .
 *
 * @see    Item::SpecialId
 * @see    MoveItems(Item@[]&, Map&, uint16, uint16)
 * @see    MoveItem(Item&, uint, Critter&)
 * @see    MoveItem(Item&, uint, Item&, uint)
 */
void MoveItem(Item& item, uint count, Map& toMap, uint16 toHx, uint16 toHy);

/** \~russian         .
 *
 * @param  items    .
 * @param  toCr   ,      .
 *
 * @see    MoveItem(Item&, uint, Critter&)
 */
void MoveItems(Item@[]& items, Critter& toCr);

/** \~russian       -,     ID.
 *
 * @param  items      .
 * @param  toCont   -,      .
 * @param  stackId    ID  (. Item::SpecialId).
 *
 * @see    Item::SpecialId
 * @see    MoveItem(Item&, uint, Item&, uint)
 */
void MoveItem(Item@[]& items, Item& toCont, uint stackId);

/** \~russian       .
 *
 * @param  items         .
 * @param  toMap       ,      .
 * @param  toHx, toHy    ,     .
 *
 * @see    Item::SpecialId
 * @see    MoveItem(Item&, uint, Map&, uint16, uint16)
 */
void MoveItems(Item@[]& items, Map& toMap, uint16 toHx, uint16 toHy);

/** \~russian     ,   ,   .
 *
 * @param  item  ,   .
 *
 * @see    DeleteItems
 */
void DeleteItem(Item& item);

/** \~russian        .
 *
 * @param    items   ,   .
 *
 * @remarks   @c null    @a items.
 *
 * @see      DeleteItem
 */
void DeleteItems(Item@[]& items);

/** \~russian     .
 *
 * @param  protoId   .
 *
 * @return      .
 */
uint WorldItemCount(uint16 protoId);

//@}

/**
 * \~russian @name    / 
 * \~english @name Time and time events
 * \~ @weight 240
 */
//@{

/** \~russian     .
 *
 * @param  [out]  year           
 * @param  [out]  month          
 * @param  [out]  day_of_week     
 * @param  [out]  day            
 * @param  [out]  hour           
 * @param  [out]  minute         
 * @param  [out]  second         
 * @param  [out]  milliseconds   
 *
 */
void GetTime(uint16& year, uint16& month, uint16& day_of_week, uint16& day,
             uint16& hour, uint16& minute, uint16& second, uint16& milliseconds);

/** \~russian        .
 *
 * @param  [in]   fullSecond      .
 * @param  [out]  year        ,    .
 * @param  [out]  month       ,    .
 * @param  [out]  dayOfWeek    ,    .
 * @param  [out]  day          ,    .
 * @param  [out]  hour        ,    .
 * @param  [out]  minute      ,    .
 * @param  [out]  second      ,    .
 *
 * @see    GetFullSecond
 */
void GetGameTime(uint fullSecond, uint16& year, uint16& month, uint16& dayOfWeek, uint16& day, uint16& hour, uint16& minute, uint16& second);

/** \~russian   , , ,      .
 *
 * @param   year                              .
 * @param   month, day, hour, minute, second  , , ,    .
 *
 * @return   .
 *
 * @remarks      .
 *
 * @see     GetGameTime
 */
uint GetFullSecond(uint16 year, uint16 month, uint16 day, uint16 hour, uint16 minute, uint16 second);

/** \~russian  ,      .
 *
 *  - :
 * @code
 * uint e_FuncName(uint[]@ values);
 * @endcode
 * @arg @a values   .
 *
 *     ,    @a values   .
 *
 *       ,  <code>values == null</code>.
 *
 *    @a values      :
 * @code
 * uint len = values.length();
 * crLen = values[len-2]; //  
 * itemLen = values[len-1]; //  
 * @endcode
 *
 * @param  beginSecond  ,   ,   .
 * @param  funcName      -.
 *                           :
 *                      - @b func_name    ,
 *                      - <b>module_name\@func_name</b>      @b module_name.
 * @param  save         ,  ,          .
 *                      @c true  , , @c false  .
 *
 * @return  .      0.
 */
uint CreateTimeEvent(uint beginSecond, string& funcName, bool save);

/** \~russian  ,      .
 *
 * @param  beginSecond  ,   ,   .
 * @param  funcName      - (. CreateTimeEvent(uint, string&, bool)).
 * @param  value        ,    .
 * @param  save         ,  ,          .
 *                      @c true  , , @c false  .
 *
 * @return  .      0.
 *
 * @see    CreateTimeEvent(uint, string&, bool)
 */
uint CreateTimeEvent(uint beginSecond, string& funcName, int value, bool save);

/** \~russian  ,      .
 *
 * @param  beginSecond  ,   ,   .
 * @param  funcName      - (. CreateTimeEvent(uint, string&, bool)).
 * @param  value        ,    .
 * @param  save         ,  ,          .
 *                      @c true  , , @c false  .
 *
 * @return  .      0.
 *
 * @see    CreateTimeEvent(uint, string&, bool)
 */
uint CreateTimeEvent(uint beginSecond, string& funcName, uint value, bool save);

/** \~russian  ,      .
 *
 * @param  beginSecond  ,   ,   .
 * @param  funcName      - (. CreateTimeEvent(uint, string&, bool)).
 * @param  values       ,    .
 * @param  save         ,  ,          .
 *                      @c true  , , @c false  .
 *
 * @return  .      0.
 *
 * @see    CreateTimeEvent(uint, string&, bool)
 */
uint CreateTimeEvent(uint beginSecond, string& funcName, int[]& values, bool save);

/** \~russian  ,      .
 *
 * @param  beginSecond  ,   ,   .
 * @param  funcName      - (. CreateTimeEvent(uint, string&, bool)).
 * @param  values       ,    .
 * @param  save         ,  ,          .
 *                      @c true  , , @c false  .
 *
 * @return  .      0.
 *
 * @see    CreateTimeEvent(uint, string&, bool)
 */
uint CreateTimeEvent(uint beginSecond, string& funcName, uint[]& values, bool save);

/** \~russian  ,      .
 *
 * @param  num        
 * @param  duration         (  ).
 * @param  values    ,    .
 *
 * @return  false,    .
 *
 * @see    CreateTimeEvent(uint, string&, bool)
 */
bool GetTimeEvent(uint num, uint& duration, uint[]@+ values);

/** \~russian  ,      .
 *
 * @param  num        
 * @param  duration         (  ).
 * @param  values    ,    .
 *
 * @return  false,    .
 *
 * @see    CreateTimeEvent(uint, string&, bool)
 */
bool GetTimeEvent(uint num, uint& duration, int[]@+ values);

/** \~russian  ,      .
 *
 * @param  num        
 * @param  duration         (  ).
 * @param  values    ,    .
 *
 * @return  false,    .
 *
 * @see    CreateTimeEvent(uint, string&, bool)
 */
bool SetTimeEvent(uint num, uint duration, uint[]@+ values);

/** \~russian  ,      .
 *
 * @param  num        
 * @param  duration         (  ).
 * @param  values    ,    .
 *
 * @return  false,    .
 *
 * @see    CreateTimeEvent(uint, string&, bool)
 */
bool SetTimeEvent(uint num, uint duration, int[]@+ values);

/** \~russian     .
 *
 *      .
 *
 * @param  num    .
 *
 * @return  false,    .
 *
 * @see    CreateTimeEvent(uint, string&, bool)
 */
bool EraseTimeEvent(uint num);

//@}

/**
 * \~russian @name    
 * \~english @name Data related
 * \~ @weight 230
 */
//@{

/** \~russian  .
 *
 * @param  name    .
 */
void EraseAnyData(string& name);

/** \~russian    .
 *
 * @param  name    .
 * @param  data  ,     .
 *                 ,    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    SetAnyData(string&, int64[]&)
 * @see    SetAnyData(string&, int64[]&, uint)
 */
bool GetAnyData(string& name, int64[]& data);

/** \~russian    .
 *
 * @param  name    .
 * @param  data  ,     .
 *                 ,    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    SetAnyData(string&, int32[]&)
 * @see    SetAnyData(string&, int32[]&, uint)
 */
bool GetAnyData(string& name, int32[]& data);

/** \~russian    .
 *
 * @param  name    .
 * @param  data  ,     .
 *                 ,    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    SetAnyData(string&, int16[]&)
 * @see    SetAnyData(string&, int16[]&, uint)
 */
bool GetAnyData(string& name, int16[]& data);

/** \~russian    .
 *
 * @param  name    .
 * @param  data  ,     .
 *                 ,    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    SetAnyData(string&, int8[]&)
 * @see    SetAnyData(string&, int8[]&, uint)
 */
bool GetAnyData(string& name, int8[]& data);

/** \~russian    .
 *
 * @param  name    .
 * @param  data  ,     .
 *                 ,    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    SetAnyData(string&, uint64[]&)
 * @see    SetAnyData(string&, uint64[]&, uint)
 */
bool GetAnyData(string& name, uint64[]& data);

/** \~russian    .
 *
 * @param  name    .
 * @param  data  ,     .
 *                 ,    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    SetAnyData(string&, uint32[]&)
 * @see    SetAnyData(string&, uint32[]&, uint)
 */
bool GetAnyData(string& name, uint32[]& data);

/** \~russian    .
 *
 * @param  name    .
 * @param  data  ,     .
 *                 ,    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    SetAnyData(string&, uint16[]&)
 * @see    SetAnyData(string&, uint16[]&, uint)
 */
bool GetAnyData(string& name, uint16[]& data);

/** \~russian    .
 *
 * @param  name    .
 * @param  data  ,     .
 *                 ,    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    SetAnyData(string&, uint8[]&)
 * @see    SetAnyData(string&, uint8[]&, uint)
 */
bool GetAnyData(string& name, uint8[]& data);

/** \~russian ,      .
 *
 * @param  name   .
 *
 * @return @c true,  ; @c false   .
 */
bool IsAnyData(string& name);

/** \~russian       .
 *
 *       .     65535 .
 *
 * @param  name    .
 * @param  data    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, int64[]&)
 * @see    SetAnyData(string&, int64[]&, uint)
 */
bool SetAnyData(string& name, int64[]& data);

/** \~russian       .
 *
 *       .     65535 .
 *
 * @param  name    .
 * @param  data    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, int32[]&)
 * @see    SetAnyData(string&, int32[]&, uint)
 */
bool SetAnyData(string& name, int32[]& data);

/** \~russian       .
 *
 *       .     65535 .
 *
 * @param  name    .
 * @param  data    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, int16[]&)
 * @see    SetAnyData(string&, int16[]&, uint)
 */
bool SetAnyData(string& name, int16[]& data);

/** \~russian       .
 *
 *       .     65535 .
 *
 * @param  name    .
 * @param  data    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, int8[]&)
 * @see    SetAnyData(string&, int8[]&, uint)
 */
bool SetAnyData(string& name, int8[]& data);

/** \~russian       .
 *
 *       .     65535 .
 *
 * @param  name    .
 * @param  data    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, uint64[]&)
 * @see    SetAnyData(string&, uint64[]&, uint)
 */
bool SetAnyData(string& name, uint64[]& data);

/** \~russian       .
 *
 *       .     65535 .
 *
 * @param  name    .
 * @param  data    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, uint32[]&)
 * @see    SetAnyData(string&, uint32[]&, uint)
 */
bool SetAnyData(string& name, uint32[]& data);

/** \~russian       .
 *
 *       .     65535 .
 *
 * @param  name    .
 * @param  data    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, uint16[]&)
 * @see    SetAnyData(string&, uint16[]&, uint)
 */
bool SetAnyData(string& name, uint16[]& data);

/** \~russian       .
 *
 *       .     65535 .
 *
 * @param  name    .
 * @param  data    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, uint8[]&)
 * @see    SetAnyData(string&, uint8[]&, uint)
 */
bool SetAnyData(string& name, uint8[]& data);

/** \~russian         .
 *
 *       .     65535 .
 *
 * @param  name        .
 * @param  data        .
 * @param  dataSize    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, int64[]&)
 * @see    SetAnyData(string&, int64[]&)
 */
bool SetAnyData(string& name, int64[]& data, uint dataSize);

/** \~russian         .
 *
 *       .     65535 .
 *
 * @param  name        .
 * @param  data        .
 * @param  dataSize    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, int32[]&)
 * @see    SetAnyData(string&, int32[]&)
 */
bool SetAnyData(string& name, int32[]& data, uint dataSize);

/** \~russian         .
 *
 *       .     65535 .
 *
 * @param  name       .
 * @param  data       .
 * @param  dataSize   .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, int16[]&)
 * @see    SetAnyData(string&, int16[]&)
 */
bool SetAnyData(string& name, int16[]& data, uint dataSize);

/** \~russian         .
 *
 *       .     65535 .
 *
 * @param  name        .
 * @param  data        .
 * @param  dataSize    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, int8[]&)
 * @see    SetAnyData(string&, int8[]&)
 */
bool SetAnyData(string& name, int8[]& data, uint dataSize);

/** \~russian         .
 *
 *       .     65535 .
 *
 * @param  name        .
 * @param  data        .
 * @param  dataSize    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, uint64[]&)
 * @see    SetAnyData(string&, uint64[]&)
 */
bool SetAnyData(string& name, uint64[]& data, uint dataSize);

/** \~russian         .
 *
 *       .     65535 .
 *
 * @param name   .
 * @param data   .
 * @param dataSize   .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, uint32[]&)
 * @see    SetAnyData(string&, uint32[]&)
 */
bool SetAnyData(string& name, uint32[]& data, uint dataSize);

/** \~russian         .
 *
 *       .     65535 .
 *
 * @param  name        .
 * @param  data        .
 * @param  dataSize    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, uint16[]&)
 * @see    SetAnyData(string&, uint16[]&)
 */
bool SetAnyData(string& name, uint16[]& data, uint dataSize);

/** \~russian         .
 *
 *       .     65535 .
 *
 * @param  name        .
 * @param  data        .
 * @param  dataSize    .
 *
 * @return @c true,   ; @c false   .
 *
 * @see    GetAnyData(string&, uint8[]&)
 * @see    SetAnyData(string&, uint8[]&)
 */
bool SetAnyData(string& name, uint8[]& data, uint dataSize);

//@}

/*@}*/
