<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.miranda-ng.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Unsane</id>
	<title>Miranda NG - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.miranda-ng.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Unsane"/>
	<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Special:Contributions/Unsane"/>
	<updated>2026-10-18T19:28:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=User:Unsane/LuaParamsExample&amp;diff=28770</id>
		<title>User:Unsane/LuaParamsExample</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=User:Unsane/LuaParamsExample&amp;diff=28770"/>
		<updated>2018-04-15T17:44:24Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== ModifyMenuItem ===&lt;br /&gt;
Modifies menu item.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Menu item handle.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: New menu item name or &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;icon&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: [[Plugin:MirLua/en/m_icolib#AddIcon|Icon]] handle or &#039;&#039;[[Plugin:MirLua/en/m_core#INVALID_HANDLE_VALUE|INVALID_HANDLE_VALUE]]&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;flags&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Additional flags or &#039;&#039;-1&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: If success, returns menu item handle, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hMenuItem = genmenu.CreateRoot(genmenu.MO_MAIN)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ModifyMenuItemWithTable ===&lt;br /&gt;
Modifies menu item.&lt;br /&gt;
====Parameters====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Name&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;(required)&lt;br /&gt;
|&#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
|Menu item handle&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|New menu item name or &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|icon&lt;br /&gt;
|&#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
|[[Plugin:MirLua/en/m_icolib#AddIcon|Icon]] handle or &#039;&#039;[[Plugin:MirLua/en/m_core#INVALID_HANDLE_VALUE|INVALID_HANDLE_VALUE]]&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|flags&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|Additional flags or &#039;&#039;-1&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Result====&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: If success, returns menu item handle, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
====Example====&lt;br /&gt;
{{Content:MirLua/Example|code=local hMenuItem = genmenu.CreateRoot(genmenu.MO_MAIN)}}&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=User:Unsane/LuaParamsExample&amp;diff=28769</id>
		<title>User:Unsane/LuaParamsExample</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=User:Unsane/LuaParamsExample&amp;diff=28769"/>
		<updated>2018-04-15T17:42:48Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== ModifyMenuItem ===&lt;br /&gt;
Modifies menu item.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Menu item handle.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: New menu item name or &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;icon&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: [[Plugin:MirLua/en/m_icolib#AddIcon|Icon]] handle or &#039;&#039;[[Plugin:MirLua/en/m_core#INVALID_HANDLE_VALUE|INVALID_HANDLE_VALUE]]&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;flags&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Additional flags or &#039;&#039;-1&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: If success, returns menu item handle, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hMenuItem = genmenu.CreateRoot(genmenu.MO_MAIN)}}&lt;br /&gt;
&lt;br /&gt;
=== ModifyMenuItemWithTable ===&lt;br /&gt;
Modifies menu item.&lt;br /&gt;
====Parameters====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Name&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;(required)&lt;br /&gt;
|&#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
|Menu item handle&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|New menu item name or &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|icon&lt;br /&gt;
|&#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
|[[Plugin:MirLua/en/m_icolib#AddIcon|Icon]] handle or &#039;&#039;[[Plugin:MirLua/en/m_core#INVALID_HANDLE_VALUE|INVALID_HANDLE_VALUE]]&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|flags&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|Additional flags or &#039;&#039;-1&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Result====&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: If success, returns menu item handle, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
====Example====&lt;br /&gt;
{{Content:MirLua/Example|code=local hMenuItem = genmenu.CreateRoot(genmenu.MO_MAIN)}}&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=User:Unsane/LuaParamsExample&amp;diff=28768</id>
		<title>User:Unsane/LuaParamsExample</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=User:Unsane/LuaParamsExample&amp;diff=28768"/>
		<updated>2018-04-15T17:36:11Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== ModifyMenuItem ===&lt;br /&gt;
Modifies menu item.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Menu item handle.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: New menu item name or &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;icon&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: [[Plugin:MirLua/en/m_icolib#AddIcon|Icon]] handle or &#039;&#039;[[Plugin:MirLua/en/m_core#INVALID_HANDLE_VALUE|INVALID_HANDLE_VALUE]]&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;flags&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Additional flags or &#039;&#039;-1&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: If success, returns menu item handle, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hMenuItem = genmenu.CreateRoot(genmenu.MO_MAIN)}}&lt;br /&gt;
&lt;br /&gt;
=== ModifyMenuItemWithTable ===&lt;br /&gt;
Modifies menu item.&lt;br /&gt;
====Parameters====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Name&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
|Menu item handle&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|New menu item name or &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;icon&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
|[[Plugin:MirLua/en/m_icolib#AddIcon|Icon]] handle or &#039;&#039;[[Plugin:MirLua/en/m_core#INVALID_HANDLE_VALUE|INVALID_HANDLE_VALUE]]&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;flags&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|Additional flags or &#039;&#039;-1&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
====Result====&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: If success, returns menu item handle, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
====Example====&lt;br /&gt;
{{Content:MirLua/Example|code=local hMenuItem = genmenu.CreateRoot(genmenu.MO_MAIN)}}&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=User:Unsane/LuaParamsExample&amp;diff=28763</id>
		<title>User:Unsane/LuaParamsExample</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=User:Unsane/LuaParamsExample&amp;diff=28763"/>
		<updated>2018-04-15T17:12:07Z</updated>

		<summary type="html">&lt;p&gt;Unsane: Created page with &amp;quot;=== ModifyMenuItem === Modifies menu item. ;Parameters : &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;hMenuItem&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; :: Type: &amp;#039;&amp;#039;&amp;#039;light userdata&amp;#039;&amp;#039;&amp;#039; :: Menu item handle. : &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;name&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; :: Type: &amp;#039;&amp;#039;&amp;#039;string&amp;#039;&amp;#039;&amp;#039; :: New m...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== ModifyMenuItem ===&lt;br /&gt;
Modifies menu item.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Menu item handle.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: New menu item name or &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;icon&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: [[Plugin:MirLua/en/m_icolib#AddIcon|Icon]] handle or &#039;&#039;[[Plugin:MirLua/en/m_core#INVALID_HANDLE_VALUE|INVALID_HANDLE_VALUE]]&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;flags&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Additional flags or &#039;&#039;-1&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: If success, returns menu item handle, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hMenuItem = genmenu.CreateRoot(genmenu.MO_MAIN)}}&lt;br /&gt;
&lt;br /&gt;
=== ModifyMenuItemWithTable ===&lt;br /&gt;
Modifies menu item.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Menu item handle.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: New menu item name or &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;icon&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: [[Plugin:MirLua/en/m_icolib#AddIcon|Icon]] handle or &#039;&#039;[[Plugin:MirLua/en/m_core#INVALID_HANDLE_VALUE|INVALID_HANDLE_VALUE]]&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;flags&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Additional flags or &#039;&#039;-1&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: If success, returns menu item handle, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hMenuItem = genmenu.CreateRoot(genmenu.MO_MAIN)}}&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds/ru&amp;diff=28580</id>
		<title>Plugin:MirLua/Module/m sounds/ru</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds/ru&amp;diff=28580"/>
		<updated>2018-04-13T22:22:33Z</updated>

		<summary type="html">&lt;p&gt;Unsane: Created page with &amp;quot;Тип: $type_string_required&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
Allows you to work with sounds.&lt;br /&gt;
&lt;br /&gt;
Include module: &amp;lt;code&amp;gt;local sounds = require(&#039;m_sounds&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Parameters written in &#039;&#039;&#039;&#039;&#039;bold italics&#039;&#039;&#039;&#039;&#039; are obligatory.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== AddSound ===&lt;br /&gt;
Registers a sound.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Unique name.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;description&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Description.&lt;br /&gt;
: &#039;&#039;section&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Section name in Miranda sound settings. By default plugin name (&#039;&#039;MirLua&#039;&#039;) is used.&lt;br /&gt;
: &#039;&#039;path&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to sound file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was registered successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hIcon = sounds.AddSound(&#039;soundUniqueName&#039;, &#039;My super icon&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlaySound ===&lt;br /&gt;
Plays sound by its unique name.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Unique name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlaySound(&#039;soundUniqueName&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlayFile ===&lt;br /&gt;
Plays sound from file.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;path&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlayFile(&#039;c:\\lambada.wav&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials (en)]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28577</id>
		<title>Plugin:MirLua/Module/m sounds</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28577"/>
		<updated>2018-04-13T22:20:53Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Allows you to work with sounds.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; Include module:&amp;lt;/translate&amp;gt; &amp;lt;code&amp;gt;local sounds = require(&#039;m_sounds&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Parameters written in &#039;&#039;&#039;&#039;&#039;bold italics&#039;&#039;&#039;&#039;&#039; are obligatory.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== AddSound ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Registers a sound.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: &lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Type: &amp;lt;tvar|type_string_required&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
:: &amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; Unique name.&amp;lt;/translate&amp;gt;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;description&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Description.&lt;br /&gt;
: &#039;&#039;section&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Section name in Miranda sound settings. By default plugin name (&#039;&#039;MirLua&#039;&#039;) is used.&lt;br /&gt;
: &#039;&#039;path&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to sound file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was registered successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hIcon = sounds.AddSound(&#039;soundUniqueName&#039;, &#039;My super icon&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlaySound ===&lt;br /&gt;
Plays sound by its unique name.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: &lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Type: &amp;lt;tvar|type_string_required&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
:: Unique name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlaySound(&#039;soundUniqueName&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlayFile ===&lt;br /&gt;
Plays sound from file.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;path&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlayFile(&#039;c:\\lambada.wav&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials (en)]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28571</id>
		<title>Plugin:MirLua/Module/m sounds</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28571"/>
		<updated>2018-04-13T22:19:34Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Allows you to work with sounds.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; Include module:&amp;lt;/translate&amp;gt; &amp;lt;code&amp;gt;local sounds = require(&#039;m_sounds&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Parameters written in &#039;&#039;&#039;&#039;&#039;bold italics&#039;&#039;&#039;&#039;&#039; are obligatory.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== AddSound ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
Registers a sound.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;translate&amp;gt;&lt;br /&gt;
Type: &amp;lt;tvar|type_string_required&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
:: &amp;lt;translate&amp;gt;Unique name.&amp;lt;/translate&amp;gt;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;description&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Description.&lt;br /&gt;
: &#039;&#039;section&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Section name in Miranda sound settings. By default plugin name (&#039;&#039;MirLua&#039;&#039;) is used.&lt;br /&gt;
: &#039;&#039;path&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to sound file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was registered successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hIcon = sounds.AddSound(&#039;soundUniqueName&#039;, &#039;My super icon&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlaySound ===&lt;br /&gt;
Plays sound by its unique name.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;translate&amp;gt;&lt;br /&gt;
Type: &amp;lt;tvar|type_string_required&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
:: Unique name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlaySound(&#039;soundUniqueName&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlayFile ===&lt;br /&gt;
Plays sound from file.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;path&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlayFile(&#039;c:\\lambada.wav&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials (en)]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28570</id>
		<title>Plugin:MirLua/Module/m sounds</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28570"/>
		<updated>2018-04-13T22:19:10Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Allows you to work with sounds.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; Include module:&amp;lt;/translate&amp;gt; &amp;lt;code&amp;gt;local sounds = require(&#039;m_sounds&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Parameters written in &#039;&#039;&#039;&#039;&#039;bold italics&#039;&#039;&#039;&#039;&#039; are obligatory.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== AddSound ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
Registers a sound.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;translate&amp;gt;&lt;br /&gt;
Type: &amp;lt;tvar|type_string_required&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/tvar&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
:: &amp;lt;translate&amp;gt;Unique name.&amp;lt;/translate&amp;gt;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;description&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Description.&lt;br /&gt;
: &#039;&#039;section&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Section name in Miranda sound settings. By default plugin name (&#039;&#039;MirLua&#039;&#039;) is used.&lt;br /&gt;
: &#039;&#039;path&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to sound file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was registered successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hIcon = sounds.AddSound(&#039;soundUniqueName&#039;, &#039;My super icon&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlaySound ===&lt;br /&gt;
Plays sound by its unique name.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;translate&amp;gt;&lt;br /&gt;
Type: &amp;lt;tvar|type_string_required&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/tvar&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
:: Unique name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlaySound(&#039;soundUniqueName&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlayFile ===&lt;br /&gt;
Plays sound from file.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;path&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlayFile(&#039;c:\\lambada.wav&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials (en)]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28569</id>
		<title>Plugin:MirLua/Module/m sounds</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28569"/>
		<updated>2018-04-13T22:16:07Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Allows you to work with sounds.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; Include module:&amp;lt;/translate&amp;gt; &amp;lt;code&amp;gt;local sounds = require(&#039;m_sounds&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Parameters written in &#039;&#039;&#039;&#039;&#039;bold italics&#039;&#039;&#039;&#039;&#039; are obligatory.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== AddSound ===&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
Registers a sound.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;translate&amp;gt;Type:&amp;lt;/translate&amp;gt; &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;translate&amp;gt;Unique name.&amp;lt;/translate&amp;gt;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;description&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Description.&lt;br /&gt;
: &#039;&#039;section&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Section name in Miranda sound settings. By default plugin name (&#039;&#039;MirLua&#039;&#039;) is used.&lt;br /&gt;
: &#039;&#039;path&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to sound file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was registered successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hIcon = sounds.AddSound(&#039;soundUniqueName&#039;, &#039;My super icon&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlaySound ===&lt;br /&gt;
Plays sound by its unique name.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;translate&amp;gt;Type:&amp;lt;/translate&amp;gt; &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Unique name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlaySound(&#039;soundUniqueName&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlayFile ===&lt;br /&gt;
Plays sound from file.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;path&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlayFile(&#039;c:\\lambada.wav&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials (en)]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28564</id>
		<title>Plugin:MirLua/Module/m sounds</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28564"/>
		<updated>2018-04-13T22:02:31Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
Allows you to work with sounds.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;Include module:&amp;lt;/translate&amp;gt; &amp;lt;code&amp;gt;local sounds = require(&#039;m_sounds&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Parameters written in &#039;&#039;&#039;&#039;&#039;bold italics&#039;&#039;&#039;&#039;&#039; are obligatory.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== AddSound ===&lt;br /&gt;
Registers a sound.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Unique name.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;description&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Description.&lt;br /&gt;
: &#039;&#039;section&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Section name in Miranda sound settings. By default plugin name (&#039;&#039;MirLua&#039;&#039;) is used.&lt;br /&gt;
: &#039;&#039;path&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to sound file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was registered successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hIcon = sounds.AddSound(&#039;soundUniqueName&#039;, &#039;My super icon&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlaySound ===&lt;br /&gt;
Plays sound by its unique name.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Unique name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlaySound(&#039;soundUniqueName&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlayFile ===&lt;br /&gt;
Plays sound from file.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;path&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlayFile(&#039;c:\\lambada.wav&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials (en)]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28563</id>
		<title>Plugin:MirLua/Module/m sounds</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28563"/>
		<updated>2018-04-13T22:01:08Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;{{PageLang|en}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
Allows you to work with sounds.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Include module: &amp;lt;code&amp;gt;local sounds = require(&#039;m_sounds&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Parameters written in &#039;&#039;&#039;&#039;&#039;bold italics&#039;&#039;&#039;&#039;&#039; are obligatory.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== AddSound ===&lt;br /&gt;
Registers a sound.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Unique name.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;description&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Description.&lt;br /&gt;
: &#039;&#039;section&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Section name in Miranda sound settings. By default plugin name (&#039;&#039;MirLua&#039;&#039;) is used.&lt;br /&gt;
: &#039;&#039;path&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to sound file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was registered successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hIcon = sounds.AddSound(&#039;soundUniqueName&#039;, &#039;My super icon&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlaySound ===&lt;br /&gt;
Plays sound by its unique name.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Unique name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlaySound(&#039;soundUniqueName&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlayFile ===&lt;br /&gt;
Plays sound from file.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;path&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlayFile(&#039;c:\\lambada.wav&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials (en)]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/en/m_sounds&amp;diff=28562</id>
		<title>Plugin:MirLua/en/m sounds</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/en/m_sounds&amp;diff=28562"/>
		<updated>2018-04-13T21:58:53Z</updated>

		<summary type="html">&lt;p&gt;Unsane: Unsane moved page Plugin:MirLua/en/m sounds to Plugin:MirLua/m sounds: for translate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Plugin:MirLua/m sounds]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28561</id>
		<title>Plugin:MirLua/Module/m sounds</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_sounds&amp;diff=28561"/>
		<updated>2018-04-13T21:58:53Z</updated>

		<summary type="html">&lt;p&gt;Unsane: Unsane moved page Plugin:MirLua/en/m sounds to Plugin:MirLua/m sounds: for translate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|en}}&lt;br /&gt;
Allows you to work with sounds.&lt;br /&gt;
&lt;br /&gt;
Include module: &amp;lt;code&amp;gt;local sounds = require(&#039;m_sounds&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Parameters written in &#039;&#039;&#039;&#039;&#039;bold italics&#039;&#039;&#039;&#039;&#039; are obligatory.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== AddSound ===&lt;br /&gt;
Registers a sound.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Unique name.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;description&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Description.&lt;br /&gt;
: &#039;&#039;section&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Section name in Miranda sound settings. By default plugin name (&#039;&#039;MirLua&#039;&#039;) is used.&lt;br /&gt;
: &#039;&#039;path&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to sound file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was registered successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hIcon = sounds.AddSound(&#039;soundUniqueName&#039;, &#039;My super icon&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlaySound ===&lt;br /&gt;
Plays sound by its unique name.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Unique name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlaySound(&#039;soundUniqueName&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PlayFile ===&lt;br /&gt;
Plays sound from file.&lt;br /&gt;
&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;path&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Path to file.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if sound was played successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=sounds.PlayFile(&#039;c:\\lambada.wav&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials (en)]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_core&amp;diff=28560</id>
		<title>Plugin:MirLua/Module/m core</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_core&amp;diff=28560"/>
		<updated>2018-04-13T21:53:43Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* CreateHookableEvent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|en}}&lt;br /&gt;
This module is imported into global table and available in any module through variable &#039;&#039;&#039;m&#039;&#039;&#039;. It allows you to access basic features of Miranda NG core.&lt;br /&gt;
&lt;br /&gt;
{{Note|Parameters written in &#039;&#039;&#039;&#039;&#039;bold italics&#039;&#039;&#039;&#039;&#039; are obligatory.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Constants ==&lt;br /&gt;
=== NULL ===&lt;br /&gt;
Null pointer.&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== INVALID_HANDLE_VALUE ===&lt;br /&gt;
Invalid handle.&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== CALLSERVICE_NOTFOUND ===&lt;br /&gt;
Result of service call when service does not exist.&lt;br /&gt;
: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Named events ==&lt;br /&gt;
=== CreateHookableEvent ===&lt;br /&gt;
Creates a hookable event.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Event name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns event handle if event was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
local hEvent = m.CreateHookableEvent(&#039;MyEvent&#039;)&lt;br /&gt;
if hEvent == m.NULL then&lt;br /&gt;
  print(&#039;Event handle is empty!&#039;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HookEvent ===&lt;br /&gt;
Sets a callback function (&amp;quot;hook&amp;quot;) to react to event call. Hooks are called one by one in the order they were added to the sequence.&lt;br /&gt;
&lt;br /&gt;
Hook signature: &amp;lt;code&amp;gt;function (wParam, lParam) return 0 end&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Correct result for a hook is 0. When 1 is returned, the following hooks in a sequence won&#039;t be called.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Event name.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hook&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
:: Hook function to be called when event occurs.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns hook handle if hook was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hHook = m.HookEvent(&#039;MyEvent&#039;, function(w, l)&lt;br /&gt;
  print(&#039;MyEvent is raised!&#039;)&lt;br /&gt;
end)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== UnhookEvent ===&lt;br /&gt;
Removes hook from event call sequence.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hEvent&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Event handle received on [[#CreateHookableEvent|CreateHookableEvent]] call.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if hook function was removed successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.UnhookEvent(hHook)}}&lt;br /&gt;
&lt;br /&gt;
=== NotifyEventHooks ===&lt;br /&gt;
Calls all hooks of event call sequence one by one.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hEvent&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Event handle received on [[#CreateHookableEvent|CreateHookableEvent]] call.&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if all hooks were called, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.NotifyEventHooks(hEvent)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Named service functions ==&lt;br /&gt;
=== CreateServiceFunction ===&lt;br /&gt;
Creates a service function (&amp;quot;service&amp;quot;)&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns service handle if service was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hService = m.CreateServiceFunction(&#039;MyService&#039;, function(w, l)&lt;br /&gt;
  print(&#039;MyServiceis called!&#039;)&lt;br /&gt;
end)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== CallService ===&lt;br /&gt;
Calls service with parameters.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Returns result of service execution or [[#CALLSERVICE_NOTFOUND|CALLSERVICE_NOTFOUND]]&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local result = m.CallService(&#039;MyService&#039;)&lt;br /&gt;
if result == m.CALLSERVICE_NOTFOUND then&lt;br /&gt;
  print(&#039;Service is not found!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ServiceExists ===&lt;br /&gt;
Checks if service exists by its name.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if service exists, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=if m.ServiceExists(&#039;MyService&#039;) then&lt;br /&gt;
  m.CallService(&#039;MyService&#039;)&lt;br /&gt;
end}}&lt;br /&gt;
&lt;br /&gt;
=== DestroyServiceFunction ===&lt;br /&gt;
Destroys a service function.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hService&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Service handle received on [[#CreateServiceFunction|CreateServiceFunction]] call.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.DestroyServiceFunction(hService)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
=== IsPluginLoaded ===&lt;br /&gt;
Checks if plugin is loaded by its UUID.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;uuid&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Plugin UUID in format &#039;&#039;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&#039;&#039;.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if plugin is loaded, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=if m.IsPluginLoaded(&#039;{F0FDF73A-753D-499d-8DBA-336DB79CDD41}&#039;) then&lt;br /&gt;
  print(&#039;Advanced auto away plugin is loaded!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Translate ===&lt;br /&gt;
Translates a string into the language of the current langpack.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.Translate(&#039;Exit&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== Parse ===&lt;br /&gt;
Replaces Miranda NG variables in a string.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local profileName = m.ReplaceVariables(&#039;%miranda_profilename%&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials (en)]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_core&amp;diff=28559</id>
		<title>Plugin:MirLua/Module/m core</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_core&amp;diff=28559"/>
		<updated>2018-04-13T21:50:16Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* ReplaceVariables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|en}}&lt;br /&gt;
This module is imported into global table and available in any module through variable &#039;&#039;&#039;m&#039;&#039;&#039;. It allows you to access basic features of Miranda NG core.&lt;br /&gt;
&lt;br /&gt;
{{Note|Parameters written in &#039;&#039;&#039;&#039;&#039;bold italics&#039;&#039;&#039;&#039;&#039; are obligatory.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Constants ==&lt;br /&gt;
=== NULL ===&lt;br /&gt;
Null pointer.&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== INVALID_HANDLE_VALUE ===&lt;br /&gt;
Invalid handle.&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== CALLSERVICE_NOTFOUND ===&lt;br /&gt;
Result of service call when service does not exist.&lt;br /&gt;
: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Named events ==&lt;br /&gt;
=== CreateHookableEvent ===&lt;br /&gt;
Creates a hookable event.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Event name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns event handle if event was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hEvent = m.CreateHookableEvent(&#039;MyEvent&#039;)&lt;br /&gt;
if hEvent == m.NULL then&lt;br /&gt;
  print(&#039;Event handle is empty!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== HookEvent ===&lt;br /&gt;
Sets a callback function (&amp;quot;hook&amp;quot;) to react to event call. Hooks are called one by one in the order they were added to the sequence.&lt;br /&gt;
&lt;br /&gt;
Hook signature: &amp;lt;code&amp;gt;function (wParam, lParam) return 0 end&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Correct result for a hook is 0. When 1 is returned, the following hooks in a sequence won&#039;t be called.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Event name.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hook&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
:: Hook function to be called when event occurs.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns hook handle if hook was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hHook = m.HookEvent(&#039;MyEvent&#039;, function(w, l)&lt;br /&gt;
  print(&#039;MyEvent is raised!&#039;)&lt;br /&gt;
end)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== UnhookEvent ===&lt;br /&gt;
Removes hook from event call sequence.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hEvent&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Event handle received on [[#CreateHookableEvent|CreateHookableEvent]] call.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if hook function was removed successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.UnhookEvent(hHook)}}&lt;br /&gt;
&lt;br /&gt;
=== NotifyEventHooks ===&lt;br /&gt;
Calls all hooks of event call sequence one by one.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hEvent&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Event handle received on [[#CreateHookableEvent|CreateHookableEvent]] call.&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if all hooks were called, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.NotifyEventHooks(hEvent)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Named service functions ==&lt;br /&gt;
=== CreateServiceFunction ===&lt;br /&gt;
Creates a service function (&amp;quot;service&amp;quot;)&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns service handle if service was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hService = m.CreateServiceFunction(&#039;MyService&#039;, function(w, l)&lt;br /&gt;
  print(&#039;MyServiceis called!&#039;)&lt;br /&gt;
end)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== CallService ===&lt;br /&gt;
Calls service with parameters.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Returns result of service execution or [[#CALLSERVICE_NOTFOUND|CALLSERVICE_NOTFOUND]]&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local result = m.CallService(&#039;MyService&#039;)&lt;br /&gt;
if result == m.CALLSERVICE_NOTFOUND then&lt;br /&gt;
  print(&#039;Service is not found!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ServiceExists ===&lt;br /&gt;
Checks if service exists by its name.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if service exists, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=if m.ServiceExists(&#039;MyService&#039;) then&lt;br /&gt;
  m.CallService(&#039;MyService&#039;)&lt;br /&gt;
end}}&lt;br /&gt;
&lt;br /&gt;
=== DestroyServiceFunction ===&lt;br /&gt;
Destroys a service function.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hService&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Service handle received on [[#CreateServiceFunction|CreateServiceFunction]] call.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.DestroyServiceFunction(hService)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
=== IsPluginLoaded ===&lt;br /&gt;
Checks if plugin is loaded by its UUID.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;uuid&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Plugin UUID in format &#039;&#039;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&#039;&#039;.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if plugin is loaded, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=if m.IsPluginLoaded(&#039;{F0FDF73A-753D-499d-8DBA-336DB79CDD41}&#039;) then&lt;br /&gt;
  print(&#039;Advanced auto away plugin is loaded!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Translate ===&lt;br /&gt;
Translates a string into the language of the current langpack.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.Translate(&#039;Exit&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== Parse ===&lt;br /&gt;
Replaces Miranda NG variables in a string.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local profileName = m.ReplaceVariables(&#039;%miranda_profilename%&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials (en)]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_core&amp;diff=28558</id>
		<title>Plugin:MirLua/Module/m core</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_core&amp;diff=28558"/>
		<updated>2018-04-13T21:49:24Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|en}}&lt;br /&gt;
This module is imported into global table and available in any module through variable &#039;&#039;&#039;m&#039;&#039;&#039;. It allows you to access basic features of Miranda NG core.&lt;br /&gt;
&lt;br /&gt;
{{Note|Parameters written in &#039;&#039;&#039;&#039;&#039;bold italics&#039;&#039;&#039;&#039;&#039; are obligatory.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Constants ==&lt;br /&gt;
=== NULL ===&lt;br /&gt;
Null pointer.&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== INVALID_HANDLE_VALUE ===&lt;br /&gt;
Invalid handle.&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== CALLSERVICE_NOTFOUND ===&lt;br /&gt;
Result of service call when service does not exist.&lt;br /&gt;
: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Named events ==&lt;br /&gt;
=== CreateHookableEvent ===&lt;br /&gt;
Creates a hookable event.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Event name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns event handle if event was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hEvent = m.CreateHookableEvent(&#039;MyEvent&#039;)&lt;br /&gt;
if hEvent == m.NULL then&lt;br /&gt;
  print(&#039;Event handle is empty!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== HookEvent ===&lt;br /&gt;
Sets a callback function (&amp;quot;hook&amp;quot;) to react to event call. Hooks are called one by one in the order they were added to the sequence.&lt;br /&gt;
&lt;br /&gt;
Hook signature: &amp;lt;code&amp;gt;function (wParam, lParam) return 0 end&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Correct result for a hook is 0. When 1 is returned, the following hooks in a sequence won&#039;t be called.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Event name.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hook&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
:: Hook function to be called when event occurs.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns hook handle if hook was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hHook = m.HookEvent(&#039;MyEvent&#039;, function(w, l)&lt;br /&gt;
  print(&#039;MyEvent is raised!&#039;)&lt;br /&gt;
end)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== UnhookEvent ===&lt;br /&gt;
Removes hook from event call sequence.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hEvent&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Event handle received on [[#CreateHookableEvent|CreateHookableEvent]] call.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if hook function was removed successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.UnhookEvent(hHook)}}&lt;br /&gt;
&lt;br /&gt;
=== NotifyEventHooks ===&lt;br /&gt;
Calls all hooks of event call sequence one by one.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hEvent&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Event handle received on [[#CreateHookableEvent|CreateHookableEvent]] call.&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if all hooks were called, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.NotifyEventHooks(hEvent)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Named service functions ==&lt;br /&gt;
=== CreateServiceFunction ===&lt;br /&gt;
Creates a service function (&amp;quot;service&amp;quot;)&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns service handle if service was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hService = m.CreateServiceFunction(&#039;MyService&#039;, function(w, l)&lt;br /&gt;
  print(&#039;MyServiceis called!&#039;)&lt;br /&gt;
end)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== CallService ===&lt;br /&gt;
Calls service with parameters.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Returns result of service execution or [[#CALLSERVICE_NOTFOUND|CALLSERVICE_NOTFOUND]]&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local result = m.CallService(&#039;MyService&#039;)&lt;br /&gt;
if result == m.CALLSERVICE_NOTFOUND then&lt;br /&gt;
  print(&#039;Service is not found!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ServiceExists ===&lt;br /&gt;
Checks if service exists by its name.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if service exists, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=if m.ServiceExists(&#039;MyService&#039;) then&lt;br /&gt;
  m.CallService(&#039;MyService&#039;)&lt;br /&gt;
end}}&lt;br /&gt;
&lt;br /&gt;
=== DestroyServiceFunction ===&lt;br /&gt;
Destroys a service function.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hService&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Service handle received on [[#CreateServiceFunction|CreateServiceFunction]] call.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.DestroyServiceFunction(hService)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
=== IsPluginLoaded ===&lt;br /&gt;
Checks if plugin is loaded by its UUID.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;uuid&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Plugin UUID in format &#039;&#039;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&#039;&#039;.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if plugin is loaded, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=if m.IsPluginLoaded(&#039;{F0FDF73A-753D-499d-8DBA-336DB79CDD41}&#039;) then&lt;br /&gt;
  print(&#039;Advanced auto away plugin is loaded!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Translate ===&lt;br /&gt;
Translates a string into the language of the current langpack.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.Translate(&#039;Exit&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== ReplaceVariables ===&lt;br /&gt;
Replaces Miranda NG variables in a string.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local profileName = m.ReplaceVariables(&#039;%miranda_profilename%&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials (en)]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru&amp;diff=28557</id>
		<title>Plugin:MirLua/ru</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru&amp;diff=28557"/>
		<updated>2018-04-13T21:45:51Z</updated>

		<summary type="html">&lt;p&gt;Unsane: Created page with &amp;quot;Обеспечивает более читаемый и удобный синтаксис для форматирования вывода строки.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;{{PluginCard}}&lt;br /&gt;
Расширяет функциональность Miranda NG с помощью скриптов на языке Lua.&lt;br /&gt;
&lt;br /&gt;
== Lua ==&lt;br /&gt;
Плагин использует Lua 5.3.4, поставляемый в виде библиотеки lua53.dll.&lt;br /&gt;
&lt;br /&gt;
== Дополнительные возможности ==&lt;br /&gt;
&lt;br /&gt;
=== toansi ===&lt;br /&gt;
Перекодирует строку из utf-8 в ansi. Полезен, когда требуется передать строку в качестве параметра ansi-функции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;m.CallService(&#039;mRadio/Import&#039;, 0, toansi(m.Parse(&#039;%miranda_path%\\Plugins\\mradio.ini&#039;)))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Имеет краткую версию &#039;&#039;&#039;a&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;m.CallService(&#039;DB/Ini/ImportFile&#039;, 0, a&#039;import\\autoexec.ini&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== toucs2 ===&lt;br /&gt;
Аналогичен &#039;&#039;&#039;toansi&#039;&#039;&#039;, но предназначен для utf-16. Тоже имеет краткую версию - &#039;&#039;&#039;u&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== tonumber ===&lt;br /&gt;
If it receives &#039;&#039;&#039;light userdata&#039;&#039;&#039; parameter then returns it address as number, otherwise uses standard lua &#039;&#039;&#039;tonumber&#039;&#039;&#039; behavior. &lt;br /&gt;
&lt;br /&gt;
=== topointer ===&lt;br /&gt;
Преобразует lua-типы &#039;&#039;&#039;bool&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039; в &#039;&#039;&#039;light userdata&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== string.interpolate ===&lt;br /&gt;
Обеспечивает более читаемый и удобный синтаксис для форматирования вывода строки.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
local h = &#039;Hello&#039;&lt;br /&gt;
print(&#039;{h}, {w}!&#039; % {w = &#039;World&#039;})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Модули ==&lt;br /&gt;
&lt;br /&gt;
* EN&lt;br /&gt;
** [[Plugin:MirLua/en/m_core|m_core]]&lt;br /&gt;
** [[Plugin:MirLua/en/m_database|m_database]]&lt;br /&gt;
** [[Plugin:MirLua/en/m_genmenu|m_genmenu]]&lt;br /&gt;
** [[Plugin:MirLua/en/m_hotkeys|m_hotkeys]]&lt;br /&gt;
** [[Plugin:MirLua/en/m_icolib|m_icolib]]&lt;br /&gt;
** [[Plugin:MirLua/en/m_sounds|m_sounds]]&lt;br /&gt;
&lt;br /&gt;
* RU&lt;br /&gt;
** [[Plugin:MirLua/ru/m_clist|m_clist]]&lt;br /&gt;
** [[Plugin:MirLua/ru/m_core|m_core]]&lt;br /&gt;
** [[Plugin:MirLua/ru/m_database|m_database]]&lt;br /&gt;
** [[Plugin:MirLua/ru/m_genmenu|m_genmenu]]&lt;br /&gt;
** [[Plugin:MirLua/ru/m_hotkeys|m_hotkeys]]&lt;br /&gt;
** [[Plugin:MirLua/ru/m_icolib|m_icolib]]&lt;br /&gt;
** [[Plugin:MirLua/ru/m_sounds|m_sounds]]&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
{{Content:MirLua/Examples}}&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://forum.miranda-ng.org/index.php?topic=4161.0 Примеры скриптов в теме на форуме]{{RefLang|ru}}&lt;br /&gt;
* [https://www.lua.org Веб-сайт Lua]&lt;br /&gt;
* [[wikipedia:en:Lua_(programming_language)|Lua в Википедии]]&lt;br /&gt;
&lt;br /&gt;
{{PluginGroups}}&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Translations:Plugin:MirLua/15/ru&amp;diff=28556</id>
		<title>Translations:Plugin:MirLua/15/ru</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Translations:Plugin:MirLua/15/ru&amp;diff=28556"/>
		<updated>2018-04-13T21:45:51Z</updated>

		<summary type="html">&lt;p&gt;Unsane: Created page with &amp;quot;Обеспечивает более читаемый и удобный синтаксис для форматирования вывода строки.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Обеспечивает более читаемый и удобный синтаксис для форматирования вывода строки.&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_core&amp;diff=27785</id>
		<title>Plugin:MirLua/Module/m core</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_core&amp;diff=27785"/>
		<updated>2018-04-05T18:43:01Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|en}}&lt;br /&gt;
This module is imported into global table and available in any module through variable &#039;&#039;&#039;m&#039;&#039;&#039;. It allows you to access basic features of Miranda NG core.&lt;br /&gt;
&lt;br /&gt;
{{Note|Parameters written in &#039;&#039;&#039;&#039;&#039;bold italics&#039;&#039;&#039;&#039;&#039; are obligatory.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Constants ==&lt;br /&gt;
=== NULL ===&lt;br /&gt;
Null pointer.&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== INVALID_HANDLE_VALUE ===&lt;br /&gt;
Invalid handle.&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== CALLSERVICE_NOTFOUND ===&lt;br /&gt;
Result of service call when service does not exist.&lt;br /&gt;
: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Named events ==&lt;br /&gt;
=== CreateHookableEvent ===&lt;br /&gt;
Creates a hookable event.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Event name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns event handle if event was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hEvent = m.CreateHookableEvent(&#039;MyEvent&#039;)&lt;br /&gt;
if hEvent == m.NULL then&lt;br /&gt;
  print(&#039;Event handle is empty!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== HookEvent ===&lt;br /&gt;
Sets a callback function (&amp;quot;hook&amp;quot;) to react to event call. Hooks are called one by one in the order they were added to the sequence.&lt;br /&gt;
&lt;br /&gt;
Hook signature: &amp;lt;code&amp;gt;function (wParam, lParam) return 0 end&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Correct result for a hook is 0. When 1 is returned, the following hooks in a sequence won&#039;t be called.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Event name.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hook&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
:: Hook function to be called when event occurs.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns hook handle if hook was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hHook = m.HookEvent(&#039;MyEvent&#039;, function(w, l)&lt;br /&gt;
  print(&#039;MyEvent is raised!&#039;)&lt;br /&gt;
end)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== UnhookEvent ===&lt;br /&gt;
Removes hook from event call sequence.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hEvent&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Event handle received on [[#CreateHookableEvent|CreateHookableEvent]] call.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if hook function was removed successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.UnhookEvent(hHook)}}&lt;br /&gt;
&lt;br /&gt;
=== NotifyEventHooks ===&lt;br /&gt;
Calls all hooks of event call sequence one by one.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hEvent&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Event handle received on [[#CreateHookableEvent|CreateHookableEvent]] call.&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if all hooks were called, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.NotifyEventHooks(hEvent)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Named service functions ==&lt;br /&gt;
=== CreateServiceFunction ===&lt;br /&gt;
Creates a service function (&amp;quot;service&amp;quot;)&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns service handle if service was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hService = m.CreateServiceFunction(&#039;MyService&#039;, function(w, l)&lt;br /&gt;
  print(&#039;MyServiceis called!&#039;)&lt;br /&gt;
end)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== CallService ===&lt;br /&gt;
Calls service with parameters.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Returns result of service execution or [[#CALLSERVICE_NOTFOUND|CALLSERVICE_NOTFOUND]]&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local result = m.CallService(&#039;MyService&#039;)&lt;br /&gt;
if result == m.CALLSERVICE_NOTFOUND then&lt;br /&gt;
  print(&#039;Service is not found!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ServiceExists ===&lt;br /&gt;
Checks if service exists by its name.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if service exists, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=if m.ServiceExists(&#039;MyService&#039;) then&lt;br /&gt;
  m.CallService(&#039;MyService&#039;)&lt;br /&gt;
end}}&lt;br /&gt;
&lt;br /&gt;
=== DestroyServiceFunction ===&lt;br /&gt;
Destroys a service function.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hService&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Service handle received on [[#CreateServiceFunction|CreateServiceFunction]] call.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.DestroyServiceFunction(hService)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
=== IsPluginLoaded ===&lt;br /&gt;
Checks if plugin is loaded by its UUID.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;uuid&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Plugin UUID in format &#039;&#039;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&#039;&#039;.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if plugin is loaded, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=if m.IsPluginLoaded(&#039;{F0FDF73A-753D-499d-8DBA-336DB79CDD41}&#039;) then&lt;br /&gt;
  print(&#039;Advanced auto away plugin is loaded!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Utf8DecodeA ===&lt;br /&gt;
Converts Lua string contents to ANSI (codepage of the current langpack is used).&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.CallService(&amp;quot;Quotes/Import&amp;quot;, 0, Utf8DecodeA(&#039;c:\\quotes.xml&#039;))}}&lt;br /&gt;
&lt;br /&gt;
=== Utf8DecodeW ===&lt;br /&gt;
Converts Lua string contents to Unicode (UTF-16).&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.CallService(&amp;quot;Popup/ShowMessageW&amp;quot;, m.Utf8DecodeW(&#039;Hello, World!&#039;), 2)}}&lt;br /&gt;
&lt;br /&gt;
=== Translate ===&lt;br /&gt;
Translates a string into the language of the current langpack.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.Translate(&#039;Exit&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== ReplaceVariables ===&lt;br /&gt;
Replaces Miranda NG variables in a string.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local profileName = m.ReplaceVariables(&#039;%miranda_profilename%&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials (en)]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_core&amp;diff=27784</id>
		<title>Plugin:MirLua/Module/m core</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/Module/m_core&amp;diff=27784"/>
		<updated>2018-04-05T18:42:47Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;{{PageLang|en}}&lt;br /&gt;
This module is imported into global table and available in any module through variable &#039;&#039;&#039;m&#039;&#039;&#039;. It allows you to access basic features of Miranda NG core.&lt;br /&gt;
&lt;br /&gt;
{{Note|Parameters written in &#039;&#039;&#039;&#039;&#039;bold italics&#039;&#039;&#039;&#039;&#039; are obligatory.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Constants ==&lt;br /&gt;
=== NULL ===&lt;br /&gt;
Null pointer.&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== INVALID_HANDLE_VALUE ===&lt;br /&gt;
Invalid handle.&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== CALLSERVICE_NOTFOUND ===&lt;br /&gt;
Result of service call when service does not exist.&lt;br /&gt;
: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Named events ==&lt;br /&gt;
=== CreateHookableEvent ===&lt;br /&gt;
Creates a hookable event.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Event name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns event handle if event was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hEvent = m.CreateHookableEvent(&#039;MyEvent&#039;)&lt;br /&gt;
if hEvent == m.NULL then&lt;br /&gt;
  print(&#039;Event handle is empty!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== HookEvent ===&lt;br /&gt;
Sets a callback function (&amp;quot;hook&amp;quot;) to react to event call. Hooks are called one by one in the order they were added to the sequence.&lt;br /&gt;
&lt;br /&gt;
Hook signature: &amp;lt;code&amp;gt;function (wParam, lParam) return 0 end&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Correct result for a hook is 0. When 1 is returned, the following hooks in a sequence won&#039;t be called.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Event name.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hook&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
:: Hook function to be called when event occurs.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns hook handle if hook was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hHook = m.HookEvent(&#039;MyEvent&#039;, function(w, l)&lt;br /&gt;
  print(&#039;MyEvent is raised!&#039;)&lt;br /&gt;
end)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== UnhookEvent ===&lt;br /&gt;
Removes hook from event call sequence.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hEvent&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Event handle received on [[#CreateHookableEvent|CreateHookableEvent]] call.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if hook function was removed successfully, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.UnhookEvent(hHook)}}&lt;br /&gt;
&lt;br /&gt;
=== NotifyEventHooks ===&lt;br /&gt;
Calls all hooks of event call sequence one by one.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hEvent&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Event handle received on [[#CreateHookableEvent|CreateHookableEvent]] call.&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if all hooks were called, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.NotifyEventHooks(hEvent)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Named service functions ==&lt;br /&gt;
=== CreateServiceFunction ===&lt;br /&gt;
Creates a service function (&amp;quot;service&amp;quot;)&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Returns service handle if service was created successfully, otherwise &#039;&#039;&#039;nil&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local hService = m.CreateServiceFunction(&#039;MyService&#039;, function(w, l)&lt;br /&gt;
  print(&#039;MyServiceis called!&#039;)&lt;br /&gt;
end)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== CallService ===&lt;br /&gt;
Calls service with parameters.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Returns result of service execution or [[#CALLSERVICE_NOTFOUND|CALLSERVICE_NOTFOUND]]&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local result = m.CallService(&#039;MyService&#039;)&lt;br /&gt;
if result == m.CALLSERVICE_NOTFOUND then&lt;br /&gt;
  print(&#039;Service is not found!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ServiceExists ===&lt;br /&gt;
Checks if service exists by its name.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Service name.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if service exists, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=if m.ServiceExists(&#039;MyService&#039;) then&lt;br /&gt;
  m.CallService(&#039;MyService&#039;)&lt;br /&gt;
end}}&lt;br /&gt;
&lt;br /&gt;
=== DestroyServiceFunction ===&lt;br /&gt;
Destroys a service function.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hService&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Service handle received on [[#CreateServiceFunction|CreateServiceFunction]] call.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.DestroyServiceFunction(hService)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
=== IsPluginLoaded ===&lt;br /&gt;
Checks if plugin is loaded by its UUID.&lt;br /&gt;
;Parameters&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;uuid&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Plugin UUID in format &#039;&#039;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&#039;&#039;.&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Returns &#039;&#039;&#039;true&#039;&#039;&#039; if plugin is loaded, otherwise &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=if m.IsPluginLoaded(&#039;{F0FDF73A-753D-499d-8DBA-336DB79CDD41}&#039;) then&lt;br /&gt;
  print(&#039;Advanced auto away plugin is loaded!&#039;)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Utf8DecodeA ===&lt;br /&gt;
Converts Lua string contents to ANSI (codepage of the current langpack is used).&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.CallService(&amp;quot;Quotes/Import&amp;quot;, 0, Utf8DecodeA(&#039;c:\\quotes.xml&#039;))}}&lt;br /&gt;
&lt;br /&gt;
=== Utf8DecodeW ===&lt;br /&gt;
Converts Lua string contents to Unicode (UTF-16).&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.CallService(&amp;quot;Popup/ShowMessageW&amp;quot;, m.Utf8DecodeW(&#039;Hello, World!&#039;), 2)}}&lt;br /&gt;
&lt;br /&gt;
=== Translate ===&lt;br /&gt;
Translates a string into the language of the current langpack.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=m.Translate(&#039;Exit&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== ReplaceVariables ===&lt;br /&gt;
Replaces Miranda NG variables in a string.&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;text&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
;Result&lt;br /&gt;
: Type: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
;Example&lt;br /&gt;
{{Content:MirLua/Example|code=local profileName = m.ReplaceVariables(&#039;%miranda_profilename%&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials (en)]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua&amp;diff=27719</id>
		<title>Plugin:MirLua</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua&amp;diff=27719"/>
		<updated>2018-04-04T23:01:07Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;{{PluginCard}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Extends Miranda NG functionality with Lua scripts.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Lua == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
The plugin uses Lua 5.3.4 which shipped as shared library lua53.dll.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Additional functions == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== toansi===&lt;br /&gt;
Encodes lua utf-8 string to ansi. It can be usefull for passing string as parameter to ansi function.&lt;br /&gt;
&amp;lt;code&amp;gt;m.CallService(&#039;mRadio/Import&#039;, 0, toansi(m.Parse(&#039;%miranda_path%\\Plugins\\mradio.ini&#039;)))&amp;lt;/code&amp;gt;&lt;br /&gt;
Also it has a short version &#039;&#039;&#039;a&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;code&amp;gt;m.CallService(&#039;DB/Ini/ImportFile&#039;, 0, a&#039;import\\autoexec.ini&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== toucs2 ===&lt;br /&gt;
Same as &#039;&#039;&#039;toansi&#039;&#039;&#039; but for utf-16. Also it has a short version &#039;&#039;&#039;u&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== tonumber ===&lt;br /&gt;
If it receives &#039;&#039;&#039;light userdata&#039;&#039;&#039; parameter then returns it address as number, otherwise uses standard lua &#039;&#039;&#039;tonumber&#039;&#039;&#039; behaviour. &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== topointer ===&lt;br /&gt;
Converts lua types &#039;&#039;&#039;bool&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039; to  &#039;&#039;&#039;light userdata&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== string.interpolate ===&lt;br /&gt;
Provides a more readable and convenient syntax to format string output.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
local h = &#039;Hello&#039;&lt;br /&gt;
print(&#039;{h}, {w}!&#039; % {w = &#039;World&#039;})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Internal modules == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Plugin:MirLua/ru/m_clist|m_clist]]&lt;br /&gt;
* [[Plugin:MirLua/en/m_core|m_core]]&lt;br /&gt;
* [[Plugin:MirLua/en/m_database|m_database]]&lt;br /&gt;
* [[Plugin:MirLua/en/m_genmenu|m_genmenu]]&lt;br /&gt;
* [[Plugin:MirLua/en/m_hotkeys|m_hotkeys]]&lt;br /&gt;
* [[Plugin:MirLua/en/m_icolib|m_icolib]]&lt;br /&gt;
* [[Plugin:MirLua/en/m_sounds|m_sounds]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Examples == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Content:MirLua/Examples}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== External links == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://forum.miranda-ng.org/index.php?topic=4161.0 &amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; Forum topic dedicated to script examples&amp;lt;/translate&amp;gt;]{{RefLang|ru}}&lt;br /&gt;
* [https://www.lua.org &amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt; Lua website&amp;lt;/translate&amp;gt;]&lt;br /&gt;
* [[wikipedia:en:Lua_(programming_language)|&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; Lua in Wikipedia&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
{{PluginGroups}}&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Content:MirLua/Examples/json&amp;diff=20018</id>
		<title>Content:MirLua/Examples/json</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Content:MirLua/Examples/json&amp;diff=20018"/>
		<updated>2017-10-05T20:20:48Z</updated>

		<summary type="html">&lt;p&gt;Unsane: Created page with &amp;quot;{{Content:MirLua/Example|code= local json = require(&amp;#039;m_json&amp;#039;) local value = json.Decode(&amp;#039;[ true, { &amp;quot;foo&amp;quot;: &amp;quot;bar&amp;quot; } ]&amp;#039;) print(     json.Encode(nil),     json.Encode(true),     j...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Content:MirLua/Example|code=&lt;br /&gt;
local json = require(&#039;m_json&#039;)&lt;br /&gt;
local value = json.Decode(&#039;[ true, { &amp;quot;foo&amp;quot;: &amp;quot;bar&amp;quot; } ]&#039;)&lt;br /&gt;
print(&lt;br /&gt;
    json.Encode(nil),&lt;br /&gt;
    json.Encode(true),&lt;br /&gt;
    json.Encode(123),&lt;br /&gt;
    json.Encode(3.21),&lt;br /&gt;
    json.Encode(&#039;test&#039;),&lt;br /&gt;
    json.Encode({ true, { foo = &amp;quot;bar&amp;quot; } }),&lt;br /&gt;
    json.Encode(value))&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru&amp;diff=19984</id>
		<title>Plugin:MirLua/ru</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru&amp;diff=19984"/>
		<updated>2017-09-26T21:53:20Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* Примеры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PluginCard}}&lt;br /&gt;
Расширяет функциональность Miranda NG с помощью скриптов на языке Lua.&lt;br /&gt;
&lt;br /&gt;
== Модули ==&lt;br /&gt;
* [[Plugin:MirLua/ru/m_clist|m_clist]]&lt;br /&gt;
* [[Plugin:MirLua/ru/m_core|m_core]]&lt;br /&gt;
* [[Plugin:MirLua/ru/m_database|m_database]]&lt;br /&gt;
* [[Plugin:MirLua/ru/m_genmenu|m_genmenu]]&lt;br /&gt;
* [[Plugin:MirLua/ru/m_hotkeys|m_hotkeys]]&lt;br /&gt;
* [[Plugin:MirLua/ru/m_icolib|m_icolib]]&lt;br /&gt;
* [[Plugin:MirLua/ru/m_sounds|m_sounds]]&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&amp;lt;!--{{Content:MirLua/Examples}}--&amp;gt;&lt;br /&gt;
* [[Content:MirLua/Examples/database|database]]&lt;br /&gt;
* [[Content:MirLua/Examples/icons|icons]]&lt;br /&gt;
* [[Content:MirLua/Examples/menus|menus]]&lt;br /&gt;
* [[Content:MirLua/Examples/srmm|srmm]]&lt;br /&gt;
* [[Content:MirLua/Examples/popup|popup]]&lt;br /&gt;
* [[Content:MirLua/Examples/variables|variables]]&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://forum.miranda-ng.org/index.php?topic=4161.0 Примеры скриптов в теме на форуме]&lt;br /&gt;
* [https://www.lua.org Веб-сайт Lua]{{RefLang|en}}&lt;br /&gt;
* [[wikipedia:ru:Lua|Lua в Википедии]]&lt;br /&gt;
&lt;br /&gt;
{{PluginGroups}}&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Content:MirLua/Examples/srmm&amp;diff=19983</id>
		<title>Content:MirLua/Examples/srmm</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Content:MirLua/Examples/srmm&amp;diff=19983"/>
		<updated>2017-09-26T21:51:37Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Send files button in SRMM&#039;s:&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local srmm = require(&#039;m_srmm&#039;)&lt;br /&gt;
local icolib = require(&#039;m_icolib&#039;)&lt;br /&gt;
&lt;br /&gt;
local moduleName = &#039;SendFiles&#039;&lt;br /&gt;
local buttonId = 1&lt;br /&gt;
&lt;br /&gt;
local BBBF_ISIMBUTTON = 32&lt;br /&gt;
local BBBF_ISRSIDEBUTTON = 128&lt;br /&gt;
&lt;br /&gt;
m.HookTemporaryEvent(&amp;quot;SRMM/ButtonsBar/ModuleLoaded&amp;quot;, function()&lt;br /&gt;
  srmm.AddButton{&lt;br /&gt;
    Module = moduleName,&lt;br /&gt;
    ButtonId = buttonId,&lt;br /&gt;
    Flags = BBBF_ISIMBUTTON | BBBF_ISRSIDEBUTTON,&lt;br /&gt;
    Tooltip = m.Translate(&#039;Send File&#039;),&lt;br /&gt;
    Icon = icolib.AddIcon(moduleName, &#039;Send File&#039;)&lt;br /&gt;
  }&lt;br /&gt;
end)&lt;br /&gt;
&lt;br /&gt;
m.HookEvent(&amp;quot;SRMM/ButtonsBar/ButtonPressed&amp;quot;, function(w, l)&lt;br /&gt;
  local bcd = CustomButtonClickData(l)&lt;br /&gt;
  if bcd.Module == moduleName and bcd.ButtonId == buttonId then&lt;br /&gt;
    print(bcd.hContact)&lt;br /&gt;
    m.CallService(&#039;SRFile/SendCommand&#039;, bcd.hContact)&lt;br /&gt;
  end&lt;br /&gt;
end)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Open received files folder button in SRMM&#039;s:&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local srmm = require(&#039;m_srmm&#039;)&lt;br /&gt;
local icolib = require(&#039;m_icolib&#039;)&lt;br /&gt;
&lt;br /&gt;
local moduleName = &#039;MyReceivedFiles&#039;&lt;br /&gt;
local buttonId = 1&lt;br /&gt;
&lt;br /&gt;
local BBBF_ISIMBUTTON = 32&lt;br /&gt;
local BBBF_ISRSIDEBUTTON = 128&lt;br /&gt;
&lt;br /&gt;
m.HookTemporaryEvent(&amp;quot;SRMM/ButtonsBar/ModuleLoaded&amp;quot;, function()&lt;br /&gt;
  srmm.AddButton{&lt;br /&gt;
    Module = moduleName,&lt;br /&gt;
    ButtonId = buttonId,&lt;br /&gt;
    Flags = BBBF_ISIMBUTTON | BBBF_ISRSIDEBUTTON,&lt;br /&gt;
    Tooltip = m.Translate(&#039;My received files&#039;),&lt;br /&gt;
    Icon = icolib.AddIcon(moduleName, &#039;My received files&#039;)&lt;br /&gt;
  }&lt;br /&gt;
end)&lt;br /&gt;
&lt;br /&gt;
m.HookEvent(&amp;quot;SRMM/ButtonsBar/ButtonPressed&amp;quot;, function(w, l)&lt;br /&gt;
  local bcd = CustomButtonClickData(l)&lt;br /&gt;
  if bcd.Module == moduleName and bcd.ButtonId == buttonId then&lt;br /&gt;
    m.CallService(&#039;SRFile/OpenContRecDir&#039;, bcd.hContact, 0)&lt;br /&gt;
  end&lt;br /&gt;
end)&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Content:MirLua/Examples/protocols&amp;diff=19982</id>
		<title>Content:MirLua/Examples/protocols</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Content:MirLua/Examples/protocols&amp;diff=19982"/>
		<updated>2017-09-26T21:46:19Z</updated>

		<summary type="html">&lt;p&gt;Unsane: Created page with &amp;quot;Switch all protocols statuses to online: {{Content:MirLua/Example|code= local protos = require(&amp;#039;m_protocols&amp;#039;)  local ID_STATUS_OFFLINE = 40071 local ID_STATUS_ONLINE = 40072...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Switch all protocols statuses to online:&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local protos = require(&#039;m_protocols&#039;)&lt;br /&gt;
&lt;br /&gt;
local ID_STATUS_OFFLINE = 40071&lt;br /&gt;
local ID_STATUS_ONLINE = 40072&lt;br /&gt;
&lt;br /&gt;
m.HookEvent(&#039;Miranda/System/ModulesLoaded&#039;, function()&lt;br /&gt;
  for acc in protos.Accounts() do&lt;br /&gt;
    if acc.IsEnabled and not acc.IsVirtual then&lt;br /&gt;
      local status = acc:CallService(&#039;/GetStatus&#039;)&lt;br /&gt;
      if (status == ID_STATUS_OFFLINE) then&lt;br /&gt;
        acc:CallService(&#039;/SetStatus&#039;, ID_STATUS_ONLINE)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end)&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Content:MirLua/Examples/database&amp;diff=19981</id>
		<title>Content:MirLua/Examples/database</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Content:MirLua/Examples/database&amp;diff=19981"/>
		<updated>2017-09-26T21:41:20Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An [[Plugin:Msg_Export|Msg_Export]] analogue:&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local db = require(&#039;m_database&#039;)&lt;br /&gt;
&lt;br /&gt;
m.HookEvent(&amp;quot;DB/Event/Added&amp;quot;, function(w, l)&lt;br /&gt;
  local hContact = tonumber(w)&lt;br /&gt;
  -- note that path to file should be exists&lt;br /&gt;
  local path = m.Parse(&#039;%miranda_userdata%\\History\\&#039;)&lt;br /&gt;
    .. db.GetContactInfo(hContact, &#039;Uid&#039;)&lt;br /&gt;
    .. &#039;.log&#039;&lt;br /&gt;
  local contactName = db.GetContactInfo(hContact, &#039;DisplayName&#039;)&lt;br /&gt;
  local message = GetMessage(tonumber(l), contactName)&lt;br /&gt;
  print(message)&lt;br /&gt;
  if message then&lt;br /&gt;
    local file = io.open(path, &#039;a+&#039;)&lt;br /&gt;
    if file then&lt;br /&gt;
      file:write(message)&lt;br /&gt;
      file:close()&lt;br /&gt;
      print(&#039;ok&#039;)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end)&lt;br /&gt;
&lt;br /&gt;
function GetMessage(hDbEvent, contactName)&lt;br /&gt;
  local event = DBEVENTINFO(hDbEvent)&lt;br /&gt;
  if event.Type == 0 then&lt;br /&gt;
    local isSent = event.Flags &amp;amp; 2 == 2&lt;br /&gt;
    local nick = isSent and &#039;me&#039; or contactName&lt;br /&gt;
    local date = os.date(&amp;quot;%d.%m.%Y %H:%M:%S&amp;quot;, event.Timestamp)&lt;br /&gt;
    local text = toutf8(event.Blob)&lt;br /&gt;
    return string.interpolate(&#039;{1} {2}:\t{3}\n&#039;, nick, date, text)&lt;br /&gt;
  end&lt;br /&gt;
  return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function toutf8(bytes)&lt;br /&gt;
  local bytearr = {}&lt;br /&gt;
  for i = 1, #bytes do&lt;br /&gt;
    local v = bytes[i]&lt;br /&gt;
    local utf8byte = v &amp;lt; 0 and (0xff + v + 1) or v&lt;br /&gt;
    table.insert(bytearr, string.char(utf8byte))&lt;br /&gt;
  end&lt;br /&gt;
  return table.concat(bytearr)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--{{Content:MirLua/Example|code=&lt;br /&gt;
--- include m_database module&lt;br /&gt;
local db = require(&#039;m_database&#039;)&lt;br /&gt;
&lt;br /&gt;
--- Iterate all contact stored in db&lt;br /&gt;
-- @param protoName The name of protocol account or nothing&lt;br /&gt;
for hContact in db.AllContacts() do&lt;br /&gt;
  --print(hContact)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local hContact = 15&lt;br /&gt;
&lt;br /&gt;
--- Iterate all contact events stored in db&lt;br /&gt;
-- param hContact The handle of contact&lt;br /&gt;
for hEvent in db.AllEvents(hContact) do&lt;br /&gt;
  --print(hEvent)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Iterate all setting names stored in db&lt;br /&gt;
-- param module The name of module&lt;br /&gt;
-- param hContact The handle of contact or nothing&lt;br /&gt;
for setting in db.AllSettings(&#039;CList&#039;) do&lt;br /&gt;
  --print(setting)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Save value to database&lt;br /&gt;
-- @param hContact The handle of contact (can be NULL)&lt;br /&gt;
-- @param module The name of section&lt;br /&gt;
-- @param setting The name of setting&lt;br /&gt;
-- @return value The value&lt;br /&gt;
db.WriteSetting(nil, &#039;MirLua&#039;, &#039;testNum&#039;, -2342)&lt;br /&gt;
&lt;br /&gt;
--- Return value from database&lt;br /&gt;
-- @param hContact The handle of contact (can be NULL)&lt;br /&gt;
-- @param module The name of section&lt;br /&gt;
-- @param setting The name of setting&lt;br /&gt;
-- @param default The value which will be returned if setting doesn&#039;t not exists&lt;br /&gt;
local bValue = db.GetSetting(nil, &#039;MirLua&#039;, &#039;testByte&#039;);&lt;br /&gt;
&lt;br /&gt;
-- print string value if bool value is true&lt;br /&gt;
if bValue then&lt;br /&gt;
  local sValue = db.GetSetting(nil, &#039;MirLua&#039;, &#039;testString&#039;, &#039;Hello!&#039;)&lt;br /&gt;
  print(sValue)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
--- Delete value from database&lt;br /&gt;
-- @param hContact The handle of contact (can be NULL)&lt;br /&gt;
-- @param module The name of section&lt;br /&gt;
-- @param setting The name of setting&lt;br /&gt;
db.DeleteSetting(nil, &#039;MirLua&#039;, &#039;testNum&#039;);&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Content:MirLua/Examples/menus&amp;diff=19979</id>
		<title>Content:MirLua/Examples/menus</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Content:MirLua/Examples/menus&amp;diff=19979"/>
		<updated>2017-09-26T21:06:22Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Add restart menu item to main menu&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local clist = require(&amp;quot;m_clist&amp;quot;)&lt;br /&gt;
local icolib = require(&amp;quot;m_icolib&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
m.CreateServiceFunction(&amp;quot;Lua/Restart&amp;quot;, function()&lt;br /&gt;
  m.CallService(&amp;quot;Miranda/System/Restart&amp;quot;, 1)&lt;br /&gt;
end)&lt;br /&gt;
&lt;br /&gt;
clist.AddMainMenuItem{&lt;br /&gt;
  Name = &amp;quot;Restart&amp;quot;,&lt;br /&gt;
  Service = &amp;quot;Lua/Restart&amp;quot;,&lt;br /&gt;
  Uid = &#039;9FC57A01-FAC6-41AC-A009-52F1C6594095&#039;,&lt;br /&gt;
  Icon = icolib.AddIcon(&#039;restart&#039;, &#039;Restart&#039;)&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--{{Content:MirLua/Example|code=&lt;br /&gt;
--- include m_clist module&lt;br /&gt;
local clist = require(&#039;m_clist&#039;)&lt;br /&gt;
--- include m_genmenu module&lt;br /&gt;
local genmenu = require(&#039;m_genmenu&#039;)&lt;br /&gt;
--- include m_icolib module&lt;br /&gt;
local icolib = require(&#039;m_icolib&#039;)&lt;br /&gt;
&lt;br /&gt;
local menuItem =&lt;br /&gt;
{&lt;br /&gt;
  -- required field&lt;br /&gt;
  Name = &amp;quot;Menu item&amp;quot;,&lt;br /&gt;
  Flags = 0,&lt;br /&gt;
  Position = 0,&lt;br /&gt;
  Icon = nil,&lt;br /&gt;
  Service = nil,&lt;br /&gt;
  Parent = nil&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--- Add icon for menu items&lt;br /&gt;
local hIcon = icolib.AddIcon(&#039;testMenuIcon&#039;, &#039;Lua icon for menus&#039;)&lt;br /&gt;
&lt;br /&gt;
--- Add menu item to main menu&lt;br /&gt;
menuItem.Name = &amp;quot;Main menu item&amp;quot;&lt;br /&gt;
menuItem.Icon = hIcon&lt;br /&gt;
menuItem.Service = &amp;quot;Srv/MMI&amp;quot;&lt;br /&gt;
clist.AddMainMenuItem(menuItem)&lt;br /&gt;
&lt;br /&gt;
--- Add menu item to main menu&lt;br /&gt;
menuItem.Name = &amp;quot;Tray menu item&amp;quot;&lt;br /&gt;
menuItem.Service = &amp;quot;Srv/TMI&amp;quot;&lt;br /&gt;
clist.AddTrayMenuItem(menuItem)&lt;br /&gt;
&lt;br /&gt;
--- Add menu item to contact menu&lt;br /&gt;
menuItem.Name = &amp;quot;Contact menu item&amp;quot;&lt;br /&gt;
menuItem.Service = &amp;quot;Srv/CMI&amp;quot;&lt;br /&gt;
clist.AddContactMenuItem(menuItem)&lt;br /&gt;
&lt;br /&gt;
--- Create the contact menu item which will be deleted below&lt;br /&gt;
menuItem.Name = &amp;quot;testRemove&amp;quot;&lt;br /&gt;
menuItem.Service = &amp;quot;Srv/TestRemove&amp;quot;&lt;br /&gt;
local hMenuItem = clist.AddContactMenuItem(menuItem)&lt;br /&gt;
&lt;br /&gt;
--- Remove menu item from parent menu&lt;br /&gt;
genmenu.RemoveMenuItem(hMenuItem)&lt;br /&gt;
&lt;br /&gt;
--- Add root menu item&lt;br /&gt;
local hRoot = clist.AddMainMenuItem({ Name = &amp;quot;Main menu root&amp;quot; })&lt;br /&gt;
&lt;br /&gt;
--- Add child menu item&lt;br /&gt;
menuItem.Name = &amp;quot;Main menu child wierd&amp;quot;&lt;br /&gt;
menuItem.Service = &#039;Srv/SMI&#039;&lt;br /&gt;
menuItem.Parent = hRoot&lt;br /&gt;
local hChild = clist.AddMainMenuItem(menuItem)&lt;br /&gt;
&lt;br /&gt;
--- Modify menu item&lt;br /&gt;
local CMIM_NAME = tonumber(&amp;quot;80000000&amp;quot;, 16)&lt;br /&gt;
genmenu.ModifyMenuItem(hChild, &amp;quot;Main menu child&amp;quot;, hIcon, CMIM_NAME)&lt;br /&gt;
&lt;br /&gt;
local hDisabledMenuItem = clist.AddMainMenuItem({ Name = &amp;quot;Disabled main menu item&amp;quot; })&lt;br /&gt;
genmenu.EnableMenuItem(hDisabledMenuItem, false)&lt;br /&gt;
&lt;br /&gt;
local hHiddenMenuItem = clist.AddMainMenuItem({ Name = &amp;quot;Hidden main menu item&amp;quot; })&lt;br /&gt;
genmenu.ShowMenuItem(hHiddenMenuItem, false)&lt;br /&gt;
&lt;br /&gt;
local hCheckedMenuItem = clist.AddMainMenuItem({ Name = &amp;quot;Checked main menu item&amp;quot; })&lt;br /&gt;
genmenu.CheckMenuItem(hCheckedMenuItem, true)&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Content:MirLua/Examples/srmm&amp;diff=19978</id>
		<title>Content:MirLua/Examples/srmm</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Content:MirLua/Examples/srmm&amp;diff=19978"/>
		<updated>2017-09-26T21:03:22Z</updated>

		<summary type="html">&lt;p&gt;Unsane: Created page with &amp;quot;Open received files folder button in SRMM&amp;#039;s: {{Content:MirLua/Example|code= local srmm = require(&amp;#039;m_srmm&amp;#039;) local icolib = require(&amp;#039;m_icolib&amp;#039;)  local moduleName = &amp;#039;MyReceivedFi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open received files folder button in SRMM&#039;s:&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local srmm = require(&#039;m_srmm&#039;)&lt;br /&gt;
local icolib = require(&#039;m_icolib&#039;)&lt;br /&gt;
&lt;br /&gt;
local moduleName = &#039;MyReceivedFiles&#039;&lt;br /&gt;
local buttonId = 1&lt;br /&gt;
&lt;br /&gt;
local BBBF_ISIMBUTTON = 32&lt;br /&gt;
local BBBF_ISRSIDEBUTTON = 128&lt;br /&gt;
&lt;br /&gt;
m.HookTemporaryEvent(&amp;quot;SRMM/ButtonsBar/ModuleLoaded&amp;quot;, function()&lt;br /&gt;
  srmm.AddButton{&lt;br /&gt;
    Module = moduleName,&lt;br /&gt;
    ButtonId = buttonId,&lt;br /&gt;
    Flags = BBBF_ISIMBUTTON {{!}} BBBF_ISRSIDEBUTTON,&lt;br /&gt;
    Tooltip = m.Translate(&#039;My received files&#039;),&lt;br /&gt;
    Icon = icolib.AddIcon(moduleName, &#039;My received files&#039;)&lt;br /&gt;
  }&lt;br /&gt;
end)&lt;br /&gt;
&lt;br /&gt;
m.HookEvent(&amp;quot;SRMM/ButtonsBar/ButtonPressed&amp;quot;, function(w, l)&lt;br /&gt;
  local bcd = CustomButtonClickData(l)&lt;br /&gt;
  if bcd.Module == moduleName and bcd.ButtonId == buttonId then&lt;br /&gt;
    m.CallService(&#039;SRFile/OpenContRecDir&#039;, bcd.hContact)&lt;br /&gt;
  end&lt;br /&gt;
end)&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua&amp;diff=19913</id>
		<title>Plugin:MirLua</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua&amp;diff=19913"/>
		<updated>2017-09-11T21:55:38Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
{{Resolve Language}}&lt;br /&gt;
* Do not edit this article. You should edit subpages of the article instead.&lt;br /&gt;
* Не редактируйте этот файл, вам нужно править подстраницы этой статьи.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19912</id>
		<title>Plugin:MirLua/ru/m database</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19912"/>
		<updated>2017-09-11T21:53:45Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* GetContactInfo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет доступ к данным и контактам в базе данных профиля пользователя.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local db = require(&#039;m_database&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Контакты ==&lt;br /&gt;
=== Contacts ===&lt;br /&gt;
Итератор для списка контактов&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;name&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя протокола&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора номеров контактов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hContact in db.Contacts(&#039;JABBER_1&#039;) do&lt;br /&gt;
  print(db.GetSetting(hContact, &#039;JABBER_1&#039;, &#039;Nick&#039;))&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== GetContactInfo ===&lt;br /&gt;
Контактная информация&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
:&#039;&#039;&#039;&#039;&#039;field&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|тип поля&lt;br /&gt;
|название поля&lt;br /&gt;
|-&lt;br /&gt;
!Значения&lt;br /&gt;
|1-16&lt;br /&gt;
|FirstName, LastName, Nick, CustomNick, Email, City, State, Country, Phone, Homepage, About, Gender, Age, FullName, Uid, DisplayName&lt;br /&gt;
|}&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
: Значение поля или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local email = db.GetContactInfo(hContact, &#039;Email&#039;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== События ==&lt;br /&gt;
=== GetEventCount ===&lt;br /&gt;
Количество событий для контакта&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает количество событий&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetEventCount(hContact)}}&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
Итератор для списка событий контакта от первого к последнему&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.Events(hContact) do&lt;br /&gt;
  local event = DBEVENTINFO.new(hEvent)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== EventsFromEnd ===&lt;br /&gt;
Итератор для списка событий контакта от последнего к первому&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.EventsFromEnd(hContact) do&lt;br /&gt;
  local event = DBEVENTINFO.new(hEvent)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Настройки ==&lt;br /&gt;
=== GetSetting ===&lt;br /&gt;
Возвращает значение настройки&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название модуля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;value&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;any&#039;&#039;&lt;br /&gt;
:: Значание по умолчаниию&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает значение настройки или значание по умолчаниию или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
Итератор для секции настроек&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает имя секции. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for setting in db.Settings(nil, &#039;CList&#039;) do&lt;br /&gt;
  local message = string.format(&amp;quot;%s/%s = &amp;quot;, &#039;CList&#039;, setting, ...)&lt;br /&gt;
   .. db.GetSetting(nil, &#039;CList&#039;, setting)&lt;br /&gt;
  print(message)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WriteSetting ===&lt;br /&gt;
Сохраняет значение в БД&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;value&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;, &#039;&#039;&#039;table&#039;&#039;&#039; (массив байт)&lt;br /&gt;
:: Значение настройки&lt;br /&gt;
: &#039;&#039;type&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.WriteSetting(nil, &#039;test&#039;, &#039;some&#039;, true)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteSetting ===&lt;br /&gt;
Удаляет настройку&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteModule ===&lt;br /&gt;
Удаляет секцию&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteModule(nil, &#039;test&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Структуры ==&lt;br /&gt;
=== DBEVENTINFO ===&lt;br /&gt;
Таблица, описывающая событие в БД&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название аккаунта&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Timestamp&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Отметка времени&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Type&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип события&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Flags&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Флаги&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19911</id>
		<title>Plugin:MirLua/ru/m database</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19911"/>
		<updated>2017-09-11T21:53:26Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* GetContactInfo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет доступ к данным и контактам в базе данных профиля пользователя.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local db = require(&#039;m_database&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Контакты ==&lt;br /&gt;
=== Contacts ===&lt;br /&gt;
Итератор для списка контактов&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;name&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя протокола&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора номеров контактов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hContact in db.Contacts(&#039;JABBER_1&#039;) do&lt;br /&gt;
  print(db.GetSetting(hContact, &#039;JABBER_1&#039;, &#039;Nick&#039;))&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== GetContactInfo ===&lt;br /&gt;
Контактная информация&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
:&#039;&#039;&#039;&#039;&#039;field&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|тип поля&lt;br /&gt;
|название поля&lt;br /&gt;
|-&lt;br /&gt;
!Значения&lt;br /&gt;
|1-16&lt;br /&gt;
|FirstName, LastName, Nick, CustomNick, Email, City, State, Country, Phone, Homepage, About, Gender, Age, FullName, Uid, DisplayName&lt;br /&gt;
|}&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
: Значение поля или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local email = db.GetContactInfo(hContact, &#039;Email&#039;)&lt;br /&gt;
print(email)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== События ==&lt;br /&gt;
=== GetEventCount ===&lt;br /&gt;
Количество событий для контакта&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает количество событий&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetEventCount(hContact)}}&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
Итератор для списка событий контакта от первого к последнему&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.Events(hContact) do&lt;br /&gt;
  local event = DBEVENTINFO.new(hEvent)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== EventsFromEnd ===&lt;br /&gt;
Итератор для списка событий контакта от последнего к первому&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.EventsFromEnd(hContact) do&lt;br /&gt;
  local event = DBEVENTINFO.new(hEvent)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Настройки ==&lt;br /&gt;
=== GetSetting ===&lt;br /&gt;
Возвращает значение настройки&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название модуля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;value&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;any&#039;&#039;&lt;br /&gt;
:: Значание по умолчаниию&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает значение настройки или значание по умолчаниию или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
Итератор для секции настроек&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает имя секции. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for setting in db.Settings(nil, &#039;CList&#039;) do&lt;br /&gt;
  local message = string.format(&amp;quot;%s/%s = &amp;quot;, &#039;CList&#039;, setting, ...)&lt;br /&gt;
   .. db.GetSetting(nil, &#039;CList&#039;, setting)&lt;br /&gt;
  print(message)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WriteSetting ===&lt;br /&gt;
Сохраняет значение в БД&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;value&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;, &#039;&#039;&#039;table&#039;&#039;&#039; (массив байт)&lt;br /&gt;
:: Значение настройки&lt;br /&gt;
: &#039;&#039;type&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.WriteSetting(nil, &#039;test&#039;, &#039;some&#039;, true)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteSetting ===&lt;br /&gt;
Удаляет настройку&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteModule ===&lt;br /&gt;
Удаляет секцию&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteModule(nil, &#039;test&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Структуры ==&lt;br /&gt;
=== DBEVENTINFO ===&lt;br /&gt;
Таблица, описывающая событие в БД&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название аккаунта&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Timestamp&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Отметка времени&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Type&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип события&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Flags&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Флаги&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19910</id>
		<title>Plugin:MirLua/ru/m database</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19910"/>
		<updated>2017-09-11T21:51:41Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* Контакты */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет доступ к данным и контактам в базе данных профиля пользователя.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local db = require(&#039;m_database&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Контакты ==&lt;br /&gt;
=== Contacts ===&lt;br /&gt;
Итератор для списка контактов&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;name&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя протокола&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора номеров контактов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hContact in db.Contacts(&#039;JABBER_1&#039;) do&lt;br /&gt;
  print(db.GetSetting(hContact, &#039;JABBER_1&#039;, &#039;Nick&#039;))&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== GetContactInfo ===&lt;br /&gt;
Контактная информация&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
:&#039;&#039;&#039;&#039;&#039;field&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|тип поля&lt;br /&gt;
|название поля&lt;br /&gt;
|-&lt;br /&gt;
!Значения&lt;br /&gt;
|1-16&lt;br /&gt;
|FirstName, LastName, Nick, CustomNick, Email, City, State, Country, Phone, Homepage, About, Gender, Age, FullName, Uid, DisplayName&lt;br /&gt;
|}&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора номеров контактов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hContact in db.Contacts(&#039;JABBER_1&#039;) do&lt;br /&gt;
  print(db.GetSetting(hContact, &#039;JABBER_1&#039;, &#039;Nick&#039;))&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== События ==&lt;br /&gt;
=== GetEventCount ===&lt;br /&gt;
Количество событий для контакта&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает количество событий&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetEventCount(hContact)}}&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
Итератор для списка событий контакта от первого к последнему&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.Events(hContact) do&lt;br /&gt;
  local event = DBEVENTINFO.new(hEvent)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== EventsFromEnd ===&lt;br /&gt;
Итератор для списка событий контакта от последнего к первому&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.EventsFromEnd(hContact) do&lt;br /&gt;
  local event = DBEVENTINFO.new(hEvent)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Настройки ==&lt;br /&gt;
=== GetSetting ===&lt;br /&gt;
Возвращает значение настройки&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название модуля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;value&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;any&#039;&#039;&lt;br /&gt;
:: Значание по умолчаниию&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает значение настройки или значание по умолчаниию или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
Итератор для секции настроек&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает имя секции. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for setting in db.Settings(nil, &#039;CList&#039;) do&lt;br /&gt;
  local message = string.format(&amp;quot;%s/%s = &amp;quot;, &#039;CList&#039;, setting, ...)&lt;br /&gt;
   .. db.GetSetting(nil, &#039;CList&#039;, setting)&lt;br /&gt;
  print(message)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WriteSetting ===&lt;br /&gt;
Сохраняет значение в БД&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;value&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;, &#039;&#039;&#039;table&#039;&#039;&#039; (массив байт)&lt;br /&gt;
:: Значение настройки&lt;br /&gt;
: &#039;&#039;type&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.WriteSetting(nil, &#039;test&#039;, &#039;some&#039;, true)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteSetting ===&lt;br /&gt;
Удаляет настройку&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteModule ===&lt;br /&gt;
Удаляет секцию&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteModule(nil, &#039;test&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Структуры ==&lt;br /&gt;
=== DBEVENTINFO ===&lt;br /&gt;
Таблица, описывающая событие в БД&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название аккаунта&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Timestamp&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Отметка времени&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Type&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип события&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Flags&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Флаги&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19909</id>
		<title>Plugin:MirLua/ru/m database</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19909"/>
		<updated>2017-09-11T21:38:00Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет доступ к данным и контактам в базе данных профиля пользователя.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local db = require(&#039;m_database&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Контакты ==&lt;br /&gt;
=== Contacts ===&lt;br /&gt;
Итератор для списка контактов&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;name&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя протокола&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора номеров контактов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hContact in db.Contacts(&#039;JABBER_1&#039;) do&lt;br /&gt;
  print(db.GetSetting(hContact, &#039;JABBER_1&#039;, &#039;Nick&#039;))&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== События ==&lt;br /&gt;
=== GetEventCount ===&lt;br /&gt;
Количество событий для контакта&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает количество событий&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetEventCount(hContact)}}&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
Итератор для списка событий контакта от первого к последнему&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.Events(hContact) do&lt;br /&gt;
  local event = DBEVENTINFO.new(hEvent)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== EventsFromEnd ===&lt;br /&gt;
Итератор для списка событий контакта от последнего к первому&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.EventsFromEnd(hContact) do&lt;br /&gt;
  local event = DBEVENTINFO.new(hEvent)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Настройки ==&lt;br /&gt;
=== GetSetting ===&lt;br /&gt;
Возвращает значение настройки&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название модуля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;value&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;any&#039;&#039;&lt;br /&gt;
:: Значание по умолчаниию&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает значение настройки или значание по умолчаниию или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
Итератор для секции настроек&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает имя секции. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for setting in db.Settings(nil, &#039;CList&#039;) do&lt;br /&gt;
  local message = string.format(&amp;quot;%s/%s = &amp;quot;, &#039;CList&#039;, setting, ...)&lt;br /&gt;
   .. db.GetSetting(nil, &#039;CList&#039;, setting)&lt;br /&gt;
  print(message)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WriteSetting ===&lt;br /&gt;
Сохраняет значение в БД&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;value&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;, &#039;&#039;&#039;table&#039;&#039;&#039; (массив байт)&lt;br /&gt;
:: Значение настройки&lt;br /&gt;
: &#039;&#039;type&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.WriteSetting(nil, &#039;test&#039;, &#039;some&#039;, true)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteSetting ===&lt;br /&gt;
Удаляет настройку&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteModule ===&lt;br /&gt;
Удаляет секцию&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteModule(nil, &#039;test&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Структуры ==&lt;br /&gt;
=== DBEVENTINFO ===&lt;br /&gt;
Таблица, описывающая событие в БД&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название аккаунта&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Timestamp&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Отметка времени&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Type&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип события&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Flags&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Флаги&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19908</id>
		<title>Plugin:MirLua/ru/m database</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19908"/>
		<updated>2017-09-11T21:29:02Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* Events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет доступ к данным и контактам в базе данных профиля пользователя.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local db = require(&#039;m_database&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Контакты ==&lt;br /&gt;
=== Contacts ===&lt;br /&gt;
Итератор для списка контактов&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;name&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя протокола&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора номеров контактов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hContact in db.Contacts(&#039;JABBER_1&#039;) do&lt;br /&gt;
  print(db.GetSetting(hContact, &#039;JABBER_1&#039;, &#039;Nick&#039;))&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== События ==&lt;br /&gt;
=== GetEventCount ===&lt;br /&gt;
Количество событий для контакта&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает количество событий&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetEventCount(hContact)}}&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
Итератор для списка событий контакта от первого к последнему&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.Events(hContact) do&lt;br /&gt;
  local event = DBEVENTINFO.new(hEvent)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== EventsFromEnd ===&lt;br /&gt;
Итератор для списка событий контакта от последнего к первому&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.EventsFromEnd(hContact) do&lt;br /&gt;
  local event = DBEVENTINFO.new(hEvent)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Настройки ==&lt;br /&gt;
=== GetSetting ===&lt;br /&gt;
Возвращает значение настройки&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название модуля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;value&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;any&#039;&#039;&lt;br /&gt;
:: Значание по умолчаниию&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает значение настройки или значание по умолчаниию или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
Итератор для секции настроек&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает имя секции. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for setting in db.Settings(nil, &#039;CList&#039;) do&lt;br /&gt;
  local message = string.format(&amp;quot;%s/%s = &amp;quot;, &#039;CList&#039;, setting, ...)&lt;br /&gt;
   .. db.GetSetting(nil, &#039;CList&#039;, setting)&lt;br /&gt;
  print(message)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WriteSetting ===&lt;br /&gt;
Сохраняет значение в БД&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;value&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;, &#039;&#039;&#039;table&#039;&#039;&#039; (массив байт)&lt;br /&gt;
:: Значение настройки&lt;br /&gt;
: &#039;&#039;type&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.WriteSetting(nil, &#039;test&#039;, &#039;some&#039;, true)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteSetting ===&lt;br /&gt;
Удаляет настройку&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteModule ===&lt;br /&gt;
Удаляет секцию&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteModule(nil, &#039;test&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19907</id>
		<title>Plugin:MirLua/ru/m database</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19907"/>
		<updated>2017-09-11T21:28:35Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* EventsFromEnd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет доступ к данным и контактам в базе данных профиля пользователя.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local db = require(&#039;m_database&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Контакты ==&lt;br /&gt;
=== Contacts ===&lt;br /&gt;
Итератор для списка контактов&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;name&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя протокола&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора номеров контактов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hContact in db.Contacts(&#039;JABBER_1&#039;) do&lt;br /&gt;
  print(db.GetSetting(hContact, &#039;JABBER_1&#039;, &#039;Nick&#039;))&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== События ==&lt;br /&gt;
=== GetEventCount ===&lt;br /&gt;
Количество событий для контакта&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает количество событий&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetEventCount(hContact)}}&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
Итератор для списка событий контакта от первого к последнему&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=for hEvent in db.Events(hContact) do&lt;br /&gt;
  local event = totable(hEvent, &amp;quot;DBEVENTINFO&amp;quot;)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== EventsFromEnd ===&lt;br /&gt;
Итератор для списка событий контакта от последнего к первому&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.EventsFromEnd(hContact) do&lt;br /&gt;
  local event = DBEVENTINFO.new(hEvent)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Настройки ==&lt;br /&gt;
=== GetSetting ===&lt;br /&gt;
Возвращает значение настройки&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название модуля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;value&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;any&#039;&#039;&lt;br /&gt;
:: Значание по умолчаниию&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает значение настройки или значание по умолчаниию или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
Итератор для секции настроек&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает имя секции. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for setting in db.Settings(nil, &#039;CList&#039;) do&lt;br /&gt;
  local message = string.format(&amp;quot;%s/%s = &amp;quot;, &#039;CList&#039;, setting, ...)&lt;br /&gt;
   .. db.GetSetting(nil, &#039;CList&#039;, setting)&lt;br /&gt;
  print(message)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WriteSetting ===&lt;br /&gt;
Сохраняет значение в БД&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;value&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;, &#039;&#039;&#039;table&#039;&#039;&#039; (массив байт)&lt;br /&gt;
:: Значение настройки&lt;br /&gt;
: &#039;&#039;type&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.WriteSetting(nil, &#039;test&#039;, &#039;some&#039;, true)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteSetting ===&lt;br /&gt;
Удаляет настройку&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteModule ===&lt;br /&gt;
Удаляет секцию&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteModule(nil, &#039;test&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19906</id>
		<title>Plugin:MirLua/ru/m database</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19906"/>
		<updated>2017-09-11T21:27:34Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* GetSetting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет доступ к данным и контактам в базе данных профиля пользователя.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local db = require(&#039;m_database&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Контакты ==&lt;br /&gt;
=== Contacts ===&lt;br /&gt;
Итератор для списка контактов&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;name&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя протокола&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора номеров контактов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hContact in db.Contacts(&#039;JABBER_1&#039;) do&lt;br /&gt;
  print(db.GetSetting(hContact, &#039;JABBER_1&#039;, &#039;Nick&#039;))&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== События ==&lt;br /&gt;
=== GetEventCount ===&lt;br /&gt;
Количество событий для контакта&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает количество событий&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetEventCount(hContact)}}&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
Итератор для списка событий контакта от первого к последнему&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=for hEvent in db.Events(hContact) do&lt;br /&gt;
  local event = totable(hEvent, &amp;quot;DBEVENTINFO&amp;quot;)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== EventsFromEnd ===&lt;br /&gt;
Итератор для списка событий контакта от последнего к первому&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.EventsFromEnd(hContact) do&lt;br /&gt;
  local event = totable(hEvent, &amp;quot;DBEVENTINFO&amp;quot;)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Настройки ==&lt;br /&gt;
=== GetSetting ===&lt;br /&gt;
Возвращает значение настройки&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название модуля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;value&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;any&#039;&#039;&lt;br /&gt;
:: Значание по умолчаниию&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает значение настройки или значание по умолчаниию или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
Итератор для секции настроек&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает имя секции. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for setting in db.Settings(nil, &#039;CList&#039;) do&lt;br /&gt;
  local message = string.format(&amp;quot;%s/%s = &amp;quot;, &#039;CList&#039;, setting, ...)&lt;br /&gt;
   .. db.GetSetting(nil, &#039;CList&#039;, setting)&lt;br /&gt;
  print(message)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WriteSetting ===&lt;br /&gt;
Сохраняет значение в БД&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;value&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;, &#039;&#039;&#039;table&#039;&#039;&#039; (массив байт)&lt;br /&gt;
:: Значение настройки&lt;br /&gt;
: &#039;&#039;type&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.WriteSetting(nil, &#039;test&#039;, &#039;some&#039;, true)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteSetting ===&lt;br /&gt;
Удаляет настройку&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteModule ===&lt;br /&gt;
Удаляет секцию&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteModule(nil, &#039;test&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19905</id>
		<title>Plugin:MirLua/ru/m database</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19905"/>
		<updated>2017-09-11T21:26:11Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* WriteSetting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет доступ к данным и контактам в базе данных профиля пользователя.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local db = require(&#039;m_database&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Контакты ==&lt;br /&gt;
=== Contacts ===&lt;br /&gt;
Итератор для списка контактов&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;name&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя протокола&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора номеров контактов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hContact in db.Contacts(&#039;JABBER_1&#039;) do&lt;br /&gt;
  print(db.GetSetting(hContact, &#039;JABBER_1&#039;, &#039;Nick&#039;))&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== События ==&lt;br /&gt;
=== GetEventCount ===&lt;br /&gt;
Количество событий для контакта&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает количество событий&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetEventCount(hContact)}}&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
Итератор для списка событий контакта от первого к последнему&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=for hEvent in db.Events(hContact) do&lt;br /&gt;
  local event = totable(hEvent, &amp;quot;DBEVENTINFO&amp;quot;)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== EventsFromEnd ===&lt;br /&gt;
Итератор для списка событий контакта от последнего к первому&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.EventsFromEnd(hContact) do&lt;br /&gt;
  local event = totable(hEvent, &amp;quot;DBEVENTINFO&amp;quot;)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Настройки ==&lt;br /&gt;
=== GetSetting ===&lt;br /&gt;
Возвращает значение настройки&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название модуля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;value&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Значание по умолчаниию&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает значение настройки или значание по умолчаниию или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
Итератор для секции настроек&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает имя секции. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for setting in db.Settings(nil, &#039;CList&#039;) do&lt;br /&gt;
  local message = string.format(&amp;quot;%s/%s = &amp;quot;, &#039;CList&#039;, setting, ...)&lt;br /&gt;
   .. db.GetSetting(nil, &#039;CList&#039;, setting)&lt;br /&gt;
  print(message)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WriteSetting ===&lt;br /&gt;
Сохраняет значение в БД&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;value&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;, &#039;&#039;&#039;table&#039;&#039;&#039; (массив байт)&lt;br /&gt;
:: Значение настройки&lt;br /&gt;
: &#039;&#039;type&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.WriteSetting(nil, &#039;test&#039;, &#039;some&#039;, true)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteSetting ===&lt;br /&gt;
Удаляет настройку&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteModule ===&lt;br /&gt;
Удаляет секцию&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteModule(nil, &#039;test&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19904</id>
		<title>Plugin:MirLua/ru/m database</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19904"/>
		<updated>2017-09-11T21:24:23Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* WriteSetting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет доступ к данным и контактам в базе данных профиля пользователя.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local db = require(&#039;m_database&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Контакты ==&lt;br /&gt;
=== Contacts ===&lt;br /&gt;
Итератор для списка контактов&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;name&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя протокола&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора номеров контактов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hContact in db.Contacts(&#039;JABBER_1&#039;) do&lt;br /&gt;
  print(db.GetSetting(hContact, &#039;JABBER_1&#039;, &#039;Nick&#039;))&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== События ==&lt;br /&gt;
=== GetEventCount ===&lt;br /&gt;
Количество событий для контакта&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает количество событий&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetEventCount(hContact)}}&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
Итератор для списка событий контакта от первого к последнему&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=for hEvent in db.Events(hContact) do&lt;br /&gt;
  local event = totable(hEvent, &amp;quot;DBEVENTINFO&amp;quot;)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== EventsFromEnd ===&lt;br /&gt;
Итератор для списка событий контакта от последнего к первому&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.EventsFromEnd(hContact) do&lt;br /&gt;
  local event = totable(hEvent, &amp;quot;DBEVENTINFO&amp;quot;)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Настройки ==&lt;br /&gt;
=== GetSetting ===&lt;br /&gt;
Возвращает значение настройки&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название модуля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;value&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Значание по умолчаниию&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает значение настройки или значание по умолчаниию или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
Итератор для секции настроек&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает имя секции. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for setting in db.Settings(nil, &#039;CList&#039;) do&lt;br /&gt;
  local message = string.format(&amp;quot;%s/%s = &amp;quot;, &#039;CList&#039;, setting, ...)&lt;br /&gt;
   .. db.GetSetting(nil, &#039;CList&#039;, setting)&lt;br /&gt;
  print(message)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WriteSetting ===&lt;br /&gt;
Сохраняет значение в БД&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;value&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;/&#039;&#039;&#039;number&#039;&#039;&#039;/&#039;&#039;&#039;string&#039;&#039;&#039;/&#039;&#039;&#039;table&#039;&#039;&#039;&lt;br /&gt;
:: Значение настройки&lt;br /&gt;
: &#039;&#039;type&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.WriteSetting(nil, &#039;test&#039;, &#039;some&#039;, true)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteSetting ===&lt;br /&gt;
Удаляет настройку&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteModule ===&lt;br /&gt;
Удаляет секцию&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteModule(nil, &#039;test&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19903</id>
		<title>Plugin:MirLua/ru/m database</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19903"/>
		<updated>2017-09-11T21:17:06Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* WriteSetting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет доступ к данным и контактам в базе данных профиля пользователя.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local db = require(&#039;m_database&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Контакты ==&lt;br /&gt;
=== Contacts ===&lt;br /&gt;
Итератор для списка контактов&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;name&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя протокола&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора номеров контактов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hContact in db.Contacts(&#039;JABBER_1&#039;) do&lt;br /&gt;
  print(db.GetSetting(hContact, &#039;JABBER_1&#039;, &#039;Nick&#039;))&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== События ==&lt;br /&gt;
=== GetEventCount ===&lt;br /&gt;
Количество событий для контакта&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает количество событий&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetEventCount(hContact)}}&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
Итератор для списка событий контакта от первого к последнему&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=for hEvent in db.Events(hContact) do&lt;br /&gt;
  local event = totable(hEvent, &amp;quot;DBEVENTINFO&amp;quot;)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== EventsFromEnd ===&lt;br /&gt;
Итератор для списка событий контакта от последнего к первому&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.EventsFromEnd(hContact) do&lt;br /&gt;
  local event = totable(hEvent, &amp;quot;DBEVENTINFO&amp;quot;)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Настройки ==&lt;br /&gt;
=== GetSetting ===&lt;br /&gt;
Возвращает значение настройки&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название модуля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;value&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Значание по умолчаниию&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает значение настройки или значание по умолчаниию или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
Итератор для секции настроек&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает имя секции. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for setting in db.Settings(nil, &#039;CList&#039;) do&lt;br /&gt;
  local message = string.format(&amp;quot;%s/%s = &amp;quot;, &#039;CList&#039;, setting, ...)&lt;br /&gt;
   .. db.GetSetting(nil, &#039;CList&#039;, setting)&lt;br /&gt;
  print(message)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WriteSetting ===&lt;br /&gt;
Сохраняет значение в БД&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;value&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;/&#039;&#039;&#039;number&#039;&#039;&#039;/&#039;&#039;&#039;string&#039;&#039;&#039;/&#039;&#039;&#039;table&#039;&#039;&#039;(byte array)&lt;br /&gt;
:: Значение настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.WriteSetting(nil, &#039;test&#039;, &#039;some&#039;, true)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteSetting ===&lt;br /&gt;
Удаляет настройку&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteModule ===&lt;br /&gt;
Удаляет секцию&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteModule(nil, &#039;test&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_protocols&amp;diff=19902</id>
		<title>Plugin:MirLua/ru/m protocols</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_protocols&amp;diff=19902"/>
		<updated>2017-09-11T18:38:17Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* Структуры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет функционал для работы с протоколами.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local protos = require(&#039;m_protocols&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Протоколы ==&lt;br /&gt;
=== GetProtocol ===&lt;br /&gt;
Получает протокол&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;mixed&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|номер контакта&lt;br /&gt;
|название протокола&lt;br /&gt;
|}&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает мета-таблицу [[#PROTOCOLDESCRIPTOR|PROTOCOLDESCRIPTOR]]&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local proto = protos.GetProtocol({ Name = &#039;JABBER&#039; })}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Protocols ===&lt;br /&gt;
Итератор для протоколов&lt;br /&gt;
;Параметры&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора протоколов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for proto in protos.Protocols() do&lt;br /&gt;
  print(proto.Name)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CallSendChain ===&lt;br /&gt;
Вызывает цепочку обработки для исходящего события (фильтрация, шифрование и т.п.)&lt;br /&gt;
; Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя сервиса&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
{{Content:MirLua/Example|code=protos.CallSendChain(hContact, &#039;/SendMsg&#039;, 0, a&#039;Hello!&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CallReceiveChain ===&lt;br /&gt;
Вызывает цепочку обработки для входящего события (игнорирование, запись в бд и т.п.)&lt;br /&gt;
; Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя сервиса&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Аккаунты ==&lt;br /&gt;
=== GetAccount ===&lt;br /&gt;
Получает аккаунт протокола&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;mixed&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|номер контакта&lt;br /&gt;
|название аккаунта (внутреннее)&lt;br /&gt;
|}&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает мета-таблицу [[#PROTOACCOUNT|PROTOACCOUNT ]]&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local proto = protos.GetProtocol({ Name = &#039;JABBER&#039; })}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Accounts ===&lt;br /&gt;
Итератор для аккаунтов&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;mixed&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;none&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;[[#PROTOCOLDESCRIPTOR|userdata]]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|без параметра&lt;br /&gt;
|название аккаунта (внутреннее)&lt;br /&gt;
|протокол&lt;br /&gt;
|}&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора аккаунтов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for proto in protos.Protocols() do&lt;br /&gt;
  print(proto.Name)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Структуры ==&lt;br /&gt;
=== PROTOCOLDESCRIPTOR ===&lt;br /&gt;
Таблица, описывающая протокол&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название протокола&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Type&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип протокола&lt;br /&gt;
:: Значения:&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_IGNORE&#039;&#039; = 50&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_PROTOCOL&#039;&#039; = 1000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_VIRTUAL&#039;&#039; = 1001&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_ENCRYPTION&#039;&#039; = 2000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_FILTER&#039;&#039; = 3000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_TRANSLATION&#039;&#039; = 4000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_OTHER&#039;&#039; = 10000&lt;br /&gt;
;Методы&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Accounts&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Параметры&lt;br /&gt;
:: Результат&lt;br /&gt;
::: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
::: Возвращает функцию-итератор для перебора списка аккаунтов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== PROTOACCOUNT ===&lt;br /&gt;
Таблица, описывающая аккаунт протокола&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;ProtoName&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название протокола&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;ModuleName&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название аккаунта (внутреннее)&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;AccountName&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название аккаунта (пользовательское)&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;IsEnabled&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
:: Аккаунт включен?&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;IsVisible&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
:: Аккаунт отображается?&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;IsVirtual&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
:: Аккаунт виртуальный?&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;IsOldProto&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
:: Протокол поддерживает аккаунты?&lt;br /&gt;
;Методы&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;CallService&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Параметры&lt;br /&gt;
::: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:::: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:::: Имя сервиса&lt;br /&gt;
::: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
::: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
:: Результат&lt;br /&gt;
::: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
::: Возвращает результат выполнения сервиса или [[#CALLSERVICE_NOTFOUND|CALLSERVICE_NOTFOUND]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_protocols&amp;diff=19884</id>
		<title>Plugin:MirLua/ru/m protocols</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_protocols&amp;diff=19884"/>
		<updated>2017-09-04T20:35:13Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет функционал для работы с протоколами.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local protos = require(&#039;m_protocols&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Протоколы ==&lt;br /&gt;
=== GetProtocol ===&lt;br /&gt;
Получает протокол&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;mixed&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|номер контакта&lt;br /&gt;
|название протокола&lt;br /&gt;
|}&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает мета-таблицу [[#PROTOCOLDESCRIPTOR|PROTOCOLDESCRIPTOR]]&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local proto = protos.GetProtocol({ Name = &#039;JABBER&#039; })}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Protocols ===&lt;br /&gt;
Итератор для протоколов&lt;br /&gt;
;Параметры&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора протоколов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for proto in protos.Protocols() do&lt;br /&gt;
  print(proto.Name)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CallSendChain ===&lt;br /&gt;
Вызывает цепочку обработки для исходящего события (фильтрация, шифрование и т.п.)&lt;br /&gt;
; Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя сервиса&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
{{Content:MirLua/Example|code=protos.CallSendChain(hContact, &#039;/SendMsg&#039;, 0, a&#039;Hello!&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CallReceiveChain ===&lt;br /&gt;
Вызывает цепочку обработки для входящего события (игнорирование, запись в бд и т.п.)&lt;br /&gt;
; Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя сервиса&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Аккаунты ==&lt;br /&gt;
=== GetAccount ===&lt;br /&gt;
Получает аккаунт протокола&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;mixed&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|номер контакта&lt;br /&gt;
|название аккаунта (внутреннее)&lt;br /&gt;
|}&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает мета-таблицу [[#PROTOACCOUNT|PROTOACCOUNT ]]&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local proto = protos.GetProtocol({ Name = &#039;JABBER&#039; })}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Accounts ===&lt;br /&gt;
Итератор для аккаунтов&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;mixed&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;none&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;[[#PROTOCOLDESCRIPTOR|userdata]]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|без параметра&lt;br /&gt;
|название аккаунта (внутреннее)&lt;br /&gt;
|протокол&lt;br /&gt;
|}&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора аккаунтов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for proto in protos.Protocols() do&lt;br /&gt;
  print(proto.Name)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Структуры ==&lt;br /&gt;
=== PROTOCOLDESCRIPTOR ===&lt;br /&gt;
Таблица, описывающая протокол&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название протокола&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Type&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип протокола&lt;br /&gt;
:: Значения:&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_IGNORE&#039;&#039; = 50&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_PROTOCOL&#039;&#039; = 1000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_VIRTUAL&#039;&#039; = 1001&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_ENCRYPTION&#039;&#039; = 2000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_FILTER&#039;&#039; = 3000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_TRANSLATION&#039;&#039; = 4000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_OTHER&#039;&#039; = 10000&lt;br /&gt;
;Методы&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;CallService&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Параметры&lt;br /&gt;
::: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:::: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:::: Имя сервиса&lt;br /&gt;
::: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
::: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
:: Результат&lt;br /&gt;
::: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
::: Возвращает результат выполнения сервиса или [[#CALLSERVICE_NOTFOUND|CALLSERVICE_NOTFOUND]]&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Accounts&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Параметры&lt;br /&gt;
:: Результат&lt;br /&gt;
::: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
::: Возвращает функцию-итератор для перебора списка аккаунтов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== PROTOACCOUNT ===&lt;br /&gt;
Таблица, описывающая аккаунт протокола&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;ProtoName&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название протокола&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;ModuleName&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название аккаунта (внутреннее)&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;AccountName&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название аккаунта (пользовательское)&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;IsEnabled&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
:: Аккаунт включен?&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;IsVisible&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
:: Аккаунт отображается?&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;IsVirtual&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
:: Аккаунт виртуальный?&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;IsOldProto&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
:: Протокол поддерживает аккаунты?&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_protocols&amp;diff=19883</id>
		<title>Plugin:MirLua/ru/m protocols</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_protocols&amp;diff=19883"/>
		<updated>2017-09-04T20:16:33Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет функционал для работы с протоколами.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local protos = require(&#039;m_protocols&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Протоколы ==&lt;br /&gt;
=== GetProtocol ===&lt;br /&gt;
Получает протокол&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;data&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|номер контакта&lt;br /&gt;
|название протокола&lt;br /&gt;
|}&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает таблицу [[#PROTOCOLDESCRIPTOR|PROTOCOLDESCRIPTOR]].&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local proto = protos.GetProtocol({ Name = &#039;JABBER&#039; })}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Protocols ===&lt;br /&gt;
Итератор для протоколов&lt;br /&gt;
;Параметры&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора протоколов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for proto in protos.Protocols() do&lt;br /&gt;
  print(proto.Name)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CallSendChain ===&lt;br /&gt;
Вызывает цепочку обработки для исходящего события (фильтрация, шифрование и т.п.)&lt;br /&gt;
; Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя сервиса&lt;br /&gt;
: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
; Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает результат выполнения сервиса или [[#CALLSERVICE_NOTFOUND|CALLSERVICE_NOTFOUND]]&lt;br /&gt;
; Пример&lt;br /&gt;
{{Content:MirLua/Example|code=protos.CallSendChain(hContact, &#039;/SendMsg&#039;, 0, a&#039;Hello!&#039;)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Аккаунты ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Структуры ==&lt;br /&gt;
=== PROTOCOLDESCRIPTOR ===&lt;br /&gt;
Мета-таблица для работы с C-типом PROTOCOLDESCRIPTOR&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название протокола&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Type&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип протокола&lt;br /&gt;
:: Значения:&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_IGNORE&#039;&#039; = 50&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_PROTOCOL&#039;&#039; = 1000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_VIRTUAL&#039;&#039; = 1001&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_ENCRYPTION&#039;&#039; = 2000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_FILTER&#039;&#039; = 3000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_TRANSLATION&#039;&#039; = 4000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_OTHER&#039;&#039; = 10000&lt;br /&gt;
;Методы&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;CallService&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Параметры&lt;br /&gt;
::: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:::: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:::: Имя сервиса&lt;br /&gt;
::: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
::: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
:: Результат&lt;br /&gt;
::: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
::: Возвращает результат выполнения сервиса или [[#CALLSERVICE_NOTFOUND|CALLSERVICE_NOTFOUND]]&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Accounts&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Параметры&lt;br /&gt;
:: Результат&lt;br /&gt;
::: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
::: Возвращает функцию-итератор для перебора списка аккаунтов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_protocols&amp;diff=19882</id>
		<title>Plugin:MirLua/ru/m protocols</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_protocols&amp;diff=19882"/>
		<updated>2017-09-04T20:04:45Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет функционал для работы с протоколами.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local protos = require(&#039;m_protocols&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Протоколы ==&lt;br /&gt;
=== GetProtocol ===&lt;br /&gt;
Получает протокол&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;data&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|номер контакта&lt;br /&gt;
|название протокола&lt;br /&gt;
|}&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает таблицу [[#PROTOCOLDESCRIPTOR|PROTOCOLDESCRIPTOR]].&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local proto = protos.GetProtocol({ Name = &#039;JABBER&#039; })}}&lt;br /&gt;
&lt;br /&gt;
=== Protocols ===&lt;br /&gt;
Итератор для протоколов&lt;br /&gt;
;Параметры&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора протоколов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for proto in protos.Protocols() do&lt;br /&gt;
  print(proto.Name)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Структуры ==&lt;br /&gt;
=== PROTOCOLDESCRIPTOR ===&lt;br /&gt;
Мета-таблица для работы с C-типом PROTOCOLDESCRIPTOR&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название протокола&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Type&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип протокола&lt;br /&gt;
:: Значения:&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_IGNORE&#039;&#039; = 50&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_PROTOCOL&#039;&#039; = 1000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_VIRTUAL&#039;&#039; = 1001&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_ENCRYPTION&#039;&#039; = 2000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_FILTER&#039;&#039; = 3000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_TRANSLATION&#039;&#039; = 4000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_OTHER&#039;&#039; = 10000&lt;br /&gt;
;Методы&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;CallService&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Параметры&lt;br /&gt;
::: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:::: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:::: Имя сервиса&lt;br /&gt;
::: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
::: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
:: Результат&lt;br /&gt;
::: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
::: Возвращает результат выполнения сервиса или [[#CALLSERVICE_NOTFOUND|CALLSERVICE_NOTFOUND]]&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Accounts&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Параметры&lt;br /&gt;
:: Результат&lt;br /&gt;
::: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
::: Возвращает функцию-итератор для перебора списка аккаунтов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19881</id>
		<title>Plugin:MirLua/ru/m database</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_database&amp;diff=19881"/>
		<updated>2017-09-04T20:02:17Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* Contacts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет доступ к данным и контактам в базе данных профиля пользователя.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local db = require(&#039;m_database&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Контакты ==&lt;br /&gt;
=== Contacts ===&lt;br /&gt;
Итератор для списка контактов&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;name&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя протокола&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
: Возвращает функцию-итератор для перебора номеров контактов. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hContact in db.Contacts(&#039;JABBER_1&#039;) do&lt;br /&gt;
  print(db.GetSetting(hContact, &#039;JABBER_1&#039;, &#039;Nick&#039;))&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== События ==&lt;br /&gt;
=== GetEventCount ===&lt;br /&gt;
Количество событий для контакта&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает количество событий&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetEventCount(hContact)}}&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
Итератор для списка событий контакта от первого к последнему&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=for hEvent in db.Events(hContact) do&lt;br /&gt;
  local event = totable(hEvent, &amp;quot;DBEVENTINFO&amp;quot;)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== EventsFromEnd ===&lt;br /&gt;
Итератор для списка событий контакта от последнего к первому&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hContact&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает номер события. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for hEvent in db.EventsFromEnd(hContact) do&lt;br /&gt;
  local event = totable(hEvent, &amp;quot;DBEVENTINFO&amp;quot;)&lt;br /&gt;
  print(event.Timestamp, event.Blob)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Настройки ==&lt;br /&gt;
=== GetSetting ===&lt;br /&gt;
Возвращает значение настройки&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название модуля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
: &#039;&#039;value&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Значание по умолчаниию&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает значение настройки или значание по умолчаниию или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.GetSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
Итератор для секции настроек&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает имя секции. Список оканчивается элементом со значением &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
for setting in db.Settings(nil, &#039;CList&#039;) do&lt;br /&gt;
  local message = string.format(&amp;quot;%s/%s = &amp;quot;, &#039;CList&#039;, setting, ...)&lt;br /&gt;
   .. db.GetSetting(nil, &#039;CList&#039;, setting)&lt;br /&gt;
  print(message)&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WriteSetting ===&lt;br /&gt;
Сохраняет значение в БД&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.WriteSetting(nil, &#039;test&#039;, &#039;some&#039;, true)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteSetting ===&lt;br /&gt;
Удаляет настройку&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;setting&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название настройки&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteSetting(nil, &#039;test&#039;, &#039;some&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== DeleteModule ===&lt;br /&gt;
Удаляет секцию&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;hContact&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Номер контакта или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;module&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; в случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=db.DeleteModule(nil, &#039;test&#039;)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_protocols&amp;diff=19880</id>
		<title>Plugin:MirLua/ru/m protocols</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_protocols&amp;diff=19880"/>
		<updated>2017-09-04T20:00:54Z</updated>

		<summary type="html">&lt;p&gt;Unsane: Created page with &amp;quot;{{PageLang|ru}} Предоставляет функционал для работы с протоколами.  Подключение модуля: &amp;lt;code&amp;gt;local protos = requi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет функционал для работы с протоколами.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local protos = require(&#039;m_protocols&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Протоколы ==&lt;br /&gt;
=== GetProtocol ===&lt;br /&gt;
Получает протокол&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;data&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|номер контакта&lt;br /&gt;
|название протокола&lt;br /&gt;
|}&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает таблицу [[#PROTOCOLDESCRIPTOR|PROTOCOLDESCRIPTOR]].&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local proto = protos.GetProtocol({ Name = &#039;JABBER&#039; })}}&lt;br /&gt;
&lt;br /&gt;
== Структуры ==&lt;br /&gt;
=== PROTOCOLDESCRIPTOR ===&lt;br /&gt;
Мета-таблица для работы с C-типом PROTOCOLDESCRIPTOR&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название протокола&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Type&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Тип протокола&lt;br /&gt;
:: Значения:&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_IGNORE&#039;&#039; = 50&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_PROTOCOL&#039;&#039; = 1000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_VIRTUAL&#039;&#039; = 1001&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_ENCRYPTION&#039;&#039; = 2000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_FILTER&#039;&#039; = 3000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_TRANSLATION&#039;&#039; = 4000&lt;br /&gt;
::: &#039;&#039;PROTOTYPE_OTHER&#039;&#039; = 10000&lt;br /&gt;
;Методы&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;CallService&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Параметры&lt;br /&gt;
::: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:::: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:::: Имя сервиса&lt;br /&gt;
::: &#039;&#039;wParam&#039;&#039;&lt;br /&gt;
::: &#039;&#039;lParam&#039;&#039;&lt;br /&gt;
:: Результат&lt;br /&gt;
::: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
::: Возвращает результат выполнения сервиса или [[#CALLSERVICE_NOTFOUND|CALLSERVICE_NOTFOUND]]&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Accounts&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Параметры&lt;br /&gt;
:: Результат&lt;br /&gt;
::: Тип: &#039;&#039;&#039;function&#039;&#039;&#039;&lt;br /&gt;
::: Возвращает функцию-итератор для перебора списка аккаунтов&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_hotkeys&amp;diff=19876</id>
		<title>Plugin:MirLua/ru/m hotkeys</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_hotkeys&amp;diff=19876"/>
		<updated>2017-09-02T18:26:36Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* MakeHotkey */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет функционал для работы с комбинациями клавиш.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local hotkeys = require(&#039;m_hotkeys&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Функции ==&lt;br /&gt;
=== Register ===&lt;br /&gt;
Регистрирует комбинацию клавиш.&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;data&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;table&#039;&#039;&#039;&lt;br /&gt;
:: Таблица [[#HotkeyItem|HotkeyItem]].&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039;, если комбинация клавиш зарегистрирована, иначе &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hIcon = hotkeys.Register({ Name = &#039;hkUniqueName&#039; })&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Unregister ===&lt;br /&gt;
Удаляет комбинацию клавиш.&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя комбинации клавиш.&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039;, если комбинация клавиш удалена, иначе &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
hotkeys.Unregister(&#039;hkUniqueName&#039;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== MakeHotkey ===&lt;br /&gt;
Создает комбинацию клавиш.&lt;br /&gt;
;Параметры&lt;br /&gt;
:&#039;&#039;&#039;&#039;&#039;modifier&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;||&#039;&#039;&#039;string&#039;&#039;&#039;||&#039;&#039;&#039;table&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|код клавиш-модификаторов&lt;br /&gt;
|название клавиши-модификатора&lt;br /&gt;
|список названий клавиш-модификаторов&lt;br /&gt;
|-&lt;br /&gt;
!Значения&lt;br /&gt;
|&lt;br /&gt;
*shift = 0x01&lt;br /&gt;
*control = 0x02&lt;br /&gt;
*alt = 0x04&lt;br /&gt;
*win = 0x08&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&lt;br /&gt;
*ctrl&lt;br /&gt;
*shift&lt;br /&gt;
*alt&lt;br /&gt;
*ext&lt;br /&gt;
|}&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;key&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Символ.&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает комбинацию клавиш.&lt;br /&gt;
;Примеры&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local HOTKEYF_SHIFT = 0x01&lt;br /&gt;
local HOTKEYF_ALT = 0x04&lt;br /&gt;
local hk = hotkeys.MakeHotkey(HOTKEYF_SHIFT {{!}} HOTKEYF_ALT, &#039;A&#039;)&lt;br /&gt;
}}&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hk = hotkeys.MakeHotkey(&#039;ctrl&#039;, &#039;A&#039;)&lt;br /&gt;
}}&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hk = hotkeys.MakeHotkey({ &#039;ctrl&#039;, &#039;alt&#039; }, &#039;A&#039;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Структуры ==&lt;br /&gt;
=== HotkeyItem ===&lt;br /&gt;
Таблица, описывающая параметры комбинации клавиш.&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя комбинации клавиш (автоматически переводится ядром).&lt;br /&gt;
: &#039;&#039;Description&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Описание комбинации клавиш (автоматически переводится ядром).&lt;br /&gt;
: &#039;&#039;Section&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции для группировки в настройках. По умолчанию в качестве секции используется название плагина (&#039;&#039;MirLua&#039;&#039;).&lt;br /&gt;
: &#039;&#039;Hotkey&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: [[Plugin:MirLua/ru/m_hotkeys#MakeHotkey|Комбинация клавиш]] по умолчанию.&lt;br /&gt;
: &#039;&#039;Service&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя [[Plugin:MirLua/ru/m_core#CreateServiceFunction|сервиса]].&lt;br /&gt;
: &#039;&#039;Flags&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Дополнительные флаги.&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_hotkeys&amp;diff=19875</id>
		<title>Plugin:MirLua/ru/m hotkeys</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_hotkeys&amp;diff=19875"/>
		<updated>2017-09-02T18:23:54Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* MakeHotkey */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет функционал для работы с комбинациями клавиш.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local hotkeys = require(&#039;m_hotkeys&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Функции ==&lt;br /&gt;
=== Register ===&lt;br /&gt;
Регистрирует комбинацию клавиш.&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;data&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;table&#039;&#039;&#039;&lt;br /&gt;
:: Таблица [[#HotkeyItem|HotkeyItem]].&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039;, если комбинация клавиш зарегистрирована, иначе &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hIcon = hotkeys.Register({ Name = &#039;hkUniqueName&#039; })&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Unregister ===&lt;br /&gt;
Удаляет комбинацию клавиш.&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя комбинации клавиш.&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039;, если комбинация клавиш удалена, иначе &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
hotkeys.Unregister(&#039;hkUniqueName&#039;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== MakeHotkey ===&lt;br /&gt;
Создает комбинацию клавиш.&lt;br /&gt;
;Параметры&lt;br /&gt;
:&#039;&#039;&#039;&#039;&#039;modifier&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;||&#039;&#039;&#039;string&#039;&#039;&#039;||&#039;&#039;&#039;table&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|код клавиш-модификаторов||название клавиши-модификатора||список названий клавиш-модификаторов&lt;br /&gt;
|-&lt;br /&gt;
!Допустимые значения&lt;br /&gt;
|&lt;br /&gt;
*shift = 0x01&lt;br /&gt;
*control = 0x02&lt;br /&gt;
*alt = 0x04&lt;br /&gt;
*win = 0x08&lt;br /&gt;
|&lt;br /&gt;
*ctrl&lt;br /&gt;
*shift&lt;br /&gt;
*alt&lt;br /&gt;
*ext&lt;br /&gt;
|&lt;br /&gt;
*ctrl&lt;br /&gt;
*shift&lt;br /&gt;
*alt&lt;br /&gt;
*ext&lt;br /&gt;
|}&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;key&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Символ.&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает комбинацию клавиш.&lt;br /&gt;
;Примеры&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local HOTKEYF_SHIFT = 0x01&lt;br /&gt;
local HOTKEYF_ALT = 0x04&lt;br /&gt;
local hk = hotkeys.MakeHotkey(HOTKEYF_SHIFT {{!}} HOTKEYF_ALT, &#039;A&#039;)&lt;br /&gt;
}}&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hk = hotkeys.MakeHotkey(&#039;ctrl&#039;, &#039;A&#039;)&lt;br /&gt;
}}&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hk = hotkeys.MakeHotkey({ &#039;ctrl&#039;, &#039;alt&#039; }, &#039;A&#039;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Структуры ==&lt;br /&gt;
=== HotkeyItem ===&lt;br /&gt;
Таблица, описывающая параметры комбинации клавиш.&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя комбинации клавиш (автоматически переводится ядром).&lt;br /&gt;
: &#039;&#039;Description&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Описание комбинации клавиш (автоматически переводится ядром).&lt;br /&gt;
: &#039;&#039;Section&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции для группировки в настройках. По умолчанию в качестве секции используется название плагина (&#039;&#039;MirLua&#039;&#039;).&lt;br /&gt;
: &#039;&#039;Hotkey&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: [[Plugin:MirLua/ru/m_hotkeys#MakeHotkey|Комбинация клавиш]] по умолчанию.&lt;br /&gt;
: &#039;&#039;Service&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя [[Plugin:MirLua/ru/m_core#CreateServiceFunction|сервиса]].&lt;br /&gt;
: &#039;&#039;Flags&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Дополнительные флаги.&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_hotkeys&amp;diff=19874</id>
		<title>Plugin:MirLua/ru/m hotkeys</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_hotkeys&amp;diff=19874"/>
		<updated>2017-09-02T18:22:59Z</updated>

		<summary type="html">&lt;p&gt;Unsane: /* MakeHotkey */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет функционал для работы с комбинациями клавиш.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local hotkeys = require(&#039;m_hotkeys&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Функции ==&lt;br /&gt;
=== Register ===&lt;br /&gt;
Регистрирует комбинацию клавиш.&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;data&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;table&#039;&#039;&#039;&lt;br /&gt;
:: Таблица [[#HotkeyItem|HotkeyItem]].&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039;, если комбинация клавиш зарегистрирована, иначе &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hIcon = hotkeys.Register({ Name = &#039;hkUniqueName&#039; })&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Unregister ===&lt;br /&gt;
Удаляет комбинацию клавиш.&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя комбинации клавиш.&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039;, если комбинация клавиш удалена, иначе &#039;&#039;&#039;false&#039;&#039;&#039;.&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
hotkeys.Unregister(&#039;hkUniqueName&#039;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== MakeHotkey ===&lt;br /&gt;
Создает комбинацию клавиш.&lt;br /&gt;
;Параметры&lt;br /&gt;
:&#039;&#039;&#039;&#039;&#039;modifier&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
|&#039;&#039;&#039;number&#039;&#039;&#039;||&#039;&#039;&#039;string&#039;&#039;&#039;||&#039;&#039;&#039;table&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Описание&lt;br /&gt;
|код клавиш-модификаторов||название клавиши-модификатора||список названий клавиш-модификаторов&lt;br /&gt;
|-&lt;br /&gt;
!Допустимые значения&lt;br /&gt;
|&lt;br /&gt;
*shift = 0x01&lt;br /&gt;
*control = 0x02&lt;br /&gt;
*alt = 0x04&lt;br /&gt;
*win = 0x08&lt;br /&gt;
|&lt;br /&gt;
*&#039;ctrl&#039;&lt;br /&gt;
*&#039;shift&#039;&lt;br /&gt;
*&#039;alt&#039;&lt;br /&gt;
*&#039;ext&#039;&lt;br /&gt;
|&lt;br /&gt;
*&#039;ctrl&#039;&lt;br /&gt;
*&#039;shift&#039;&lt;br /&gt;
*&#039;alt&#039;&lt;br /&gt;
*&#039;ext&#039;&lt;br /&gt;
|}&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;key&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Символ.&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
: Возвращает комбинацию клавиш.&lt;br /&gt;
;Примеры&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local HOTKEYF_SHIFT = 0x01&lt;br /&gt;
local HOTKEYF_ALT = 0x04&lt;br /&gt;
local hk = hotkeys.MakeHotkey(HOTKEYF_SHIFT {{!}} HOTKEYF_ALT, &#039;A&#039;)&lt;br /&gt;
}}&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hk = hotkeys.MakeHotkey(&#039;ctrl&#039;, &#039;A&#039;)&lt;br /&gt;
}}&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hk = hotkeys.MakeHotkey({ &#039;ctrl&#039;, &#039;alt&#039; }, &#039;A&#039;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Структуры ==&lt;br /&gt;
=== HotkeyItem ===&lt;br /&gt;
Таблица, описывающая параметры комбинации клавиш.&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя комбинации клавиш (автоматически переводится ядром).&lt;br /&gt;
: &#039;&#039;Description&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Описание комбинации клавиш (автоматически переводится ядром).&lt;br /&gt;
: &#039;&#039;Section&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название секции для группировки в настройках. По умолчанию в качестве секции используется название плагина (&#039;&#039;MirLua&#039;&#039;).&lt;br /&gt;
: &#039;&#039;Hotkey&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: [[Plugin:MirLua/ru/m_hotkeys#MakeHotkey|Комбинация клавиш]] по умолчанию.&lt;br /&gt;
: &#039;&#039;Service&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя [[Plugin:MirLua/ru/m_core#CreateServiceFunction|сервиса]].&lt;br /&gt;
: &#039;&#039;Flags&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Дополнительные флаги.&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_clist&amp;diff=19871</id>
		<title>Plugin:MirLua/ru/m clist</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_clist&amp;diff=19871"/>
		<updated>2017-09-02T17:48:32Z</updated>

		<summary type="html">&lt;p&gt;Unsane: Created page with &amp;quot;{{PageLang|ru}} Предоставляет функционал для работы с меню списка контактов.  Подключение модуля: &amp;lt;code&amp;gt;lo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет функционал для работы с меню списка контактов.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local clist = require(&#039;m_clist&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Главное меню ==&lt;br /&gt;
=== AddMainMenuRoot ===&lt;br /&gt;
Создает корневой пункт в главном меню&lt;br /&gt;
&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название пункта меню&lt;br /&gt;
: &#039;&#039;position&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Позиция пункта меню&lt;br /&gt;
: &#039;&#039;hIcon&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор [[Plugin:MirLua/ru/m_icolib#AddIcon|значка]]&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает дескриптор пункта меню в случае успеха, иначе &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local hRootMenuItem = m.AddMainMenuRoot(&#039;My root menu item&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== AddMainMenuItem ===&lt;br /&gt;
Создает пункт в главном меню&lt;br /&gt;
&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;data&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;table&#039;&#039;&#039;&lt;br /&gt;
:: Таблица [[Plugin:MirLua/ru/m_genmenu#MenuItem|MenuItem]]&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает дескриптор пункта меню в случае успеха, иначе &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local hMenuItem = m.AddMainMenuItem({ Name =&#039;My menu item&#039; })}}&lt;br /&gt;
&lt;br /&gt;
== Меню контакта ==&lt;br /&gt;
=== AddContactMenuRoot ===&lt;br /&gt;
Создает корневой пункт в меню контакта&lt;br /&gt;
&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название пункта меню&lt;br /&gt;
: &#039;&#039;position&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Позиция пункта меню&lt;br /&gt;
: &#039;&#039;hIcon&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор [[Plugin:MirLua/ru/m_icolib#AddIcon|значка]]&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает дескриптор пункта меню в случае успеха, иначе &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local hRootMenuItem = m.AddContactMenuRoot(&#039;My contact menu item&#039;)}}&lt;br /&gt;
&lt;br /&gt;
=== AddContactMenuItem ===&lt;br /&gt;
Создает пункт в меню контакта&lt;br /&gt;
&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;data&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;table&#039;&#039;&#039;&lt;br /&gt;
:: Таблица [[Plugin:MirLua/ru/m_genmenu#MenuItem|MenuItem]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
: &#039;&#039;protocol&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название протокола (префикс для названия сервиса)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает дескриптор пункта меню в случае успеха, иначе &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local hMenuItem = m.AddContactMenuItem ({ Name =&#039;My menu item&#039; })}}&lt;br /&gt;
&lt;br /&gt;
== Меню трея ==&lt;br /&gt;
=== AddTrayMenuItem ===&lt;br /&gt;
Создает пункт в меню трея&lt;br /&gt;
&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;data&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;table&#039;&#039;&#039;&lt;br /&gt;
:: Таблица [[Plugin:MirLua/ru/m_genmenu#MenuItem|MenuItem]]&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает дескриптор пункта меню в случае успеха, иначе &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local hMenuItem = m.AddTrayMenuItem ({ Name =&#039;My menu item&#039; })}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_genmenu&amp;diff=19870</id>
		<title>Plugin:MirLua/ru/m genmenu</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru/m_genmenu&amp;diff=19870"/>
		<updated>2017-09-02T17:26:21Z</updated>

		<summary type="html">&lt;p&gt;Unsane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageLang|ru}}&lt;br /&gt;
Предоставляет доступ к подсистеме меню.&lt;br /&gt;
&lt;br /&gt;
Подключение модуля: &amp;lt;code&amp;gt;local genmenu = require(&#039;m_genmenu&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Параметры, выделенные &#039;&#039;&#039;&#039;&#039;жирным курсивом&#039;&#039;&#039;&#039;&#039;, являются обязательными.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Функции ==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== CreateRoot ===&lt;br /&gt;
Создает корневой пункт меню&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hMenuObject&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор глобального меню&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название пункта меню&lt;br /&gt;
: &#039;&#039;position&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Позиция пункта меню&lt;br /&gt;
: &#039;&#039;icon&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор [[Plugin:MirLua/ru/m_icolib#AddIcon|значка]]&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local hMenuItem = genmenu.CreateRoot(genmenu.MO_MAIN)}}&lt;br /&gt;
&lt;br /&gt;
=== AddMenuItem ===&lt;br /&gt;
Создает пункт меню&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hMenuObject&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор глобального меню&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;menuItem&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;table&#039;&#039;&#039;&lt;br /&gt;
:: Таблица [[#MenuItem|MenuItem]]&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает дескриптор пункта меню в случае успеха, иначе &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=&lt;br /&gt;
local hMenuItem = genmenu.AddMenuItem(genmenu.MO_MAIN, { Name = &#039;MyMenuItem&#039;})&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ModifyMenuItem ===&lt;br /&gt;
Изменяет пункт меню&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор пункта меню&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Новое название пункта меню или &#039;&#039;&#039;nil&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;icon&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор [[Plugin:MirLua/ru/m_icolib#AddIcon|значка]] или &#039;&#039;[[Plugin:MirLua/ru/m_core#INVALID_HANDLE_VALUE|INVALID_HANDLE_VALUE]]&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;flags&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Дополнительные флаги или &#039;&#039;-1&#039;&#039;&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=local hMenuItem = genmenu.ModifyMenuItem(hMenuItem, &#039;New name&#039;, m.INVALID_HANDLE_VALUE)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ConfigureMenuItem ===&lt;br /&gt;
Дополнительная настройка пункта меню&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор пункта меню&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;option&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;&#039;&#039;&#039;number&#039;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: изменяемая настройка (1 - название; 2 - горячие клавиши; 3 - параметр для исполнения; 4 - UUID)&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;value&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: значение&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ShowMenuItem ===&lt;br /&gt;
Показывает/скрывает пункт меню&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор пункта меню&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;isShown&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;&#039;true&#039;&#039;&#039; для отображения пункта меню, &#039;&#039;&#039;false&#039;&#039;&#039; для скрытия&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=genmenu.ShowMenuItem(hMenuItem, true)}}&lt;br /&gt;
&lt;br /&gt;
=== EnableMenuItem ===&lt;br /&gt;
Включает/отключает пункт меню&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор пункта меню&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;isEnabled&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;&#039;true&#039;&#039;&#039; для включения пункта меню, &#039;&#039;&#039;false&#039;&#039;&#039; для отключения&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=genmenu.EnableMenuItem(hMenuItem, false)}}&lt;br /&gt;
&lt;br /&gt;
=== CheckMenuItem ===&lt;br /&gt;
Отмечает/снимает отметку с пункта меню&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор пункта меню&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;isChecked&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;&#039;true&#039;&#039;&#039; для включения пункта меню, &#039;&#039;&#039;false&#039;&#039;&#039; для отключения&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=genmenu.CheckMenuItem(hMenuItem, true)}}&lt;br /&gt;
&lt;br /&gt;
=== RemoveMenuItem ===&lt;br /&gt;
Удаляет пункт меню&lt;br /&gt;
;Параметры&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;hMenuItem&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор пункта меню&lt;br /&gt;
;Результат&lt;br /&gt;
: Тип: &#039;&#039;&#039;boolean&#039;&#039;&#039;&lt;br /&gt;
: Возвращает &#039;&#039;&#039;true&#039;&#039;&#039; случае успеха, иначе &#039;&#039;&#039;false&#039;&#039;&#039;&lt;br /&gt;
;Пример&lt;br /&gt;
{{Content:MirLua/Example|code=genmenu.RemoveMenuItem(hMenuItem)}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Структуры ==&lt;br /&gt;
=== MenuItem ===&lt;br /&gt;
Таблица, описывающая параметры меню&lt;br /&gt;
;Поля&lt;br /&gt;
: &#039;&#039;&#039;&#039;&#039;Name&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Название пункта меню (автоматически переводится ядром)&lt;br /&gt;
: &#039;&#039;Uid&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: UUID пункта меню в формате &#039;&#039;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&#039;&#039;&lt;br /&gt;
: &#039;&#039;Service&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;string&#039;&#039;&#039;&lt;br /&gt;
:: Имя [[Plugin:MirLua/ru/m_core#CreateServiceFunction|сервиса]]&lt;br /&gt;
: &#039;&#039;Position&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Позиция пункта меню&lt;br /&gt;
: &#039;&#039;Parent&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор родительского меню&lt;br /&gt;
: &#039;&#039;Icon&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;light userdata&#039;&#039;&#039;&lt;br /&gt;
:: Дескриптор [[Plugin:MirLua/ru/m_icolib#AddIcon|значка]]&lt;br /&gt;
: &#039;&#039;Flags&#039;&#039;&lt;br /&gt;
:: Тип: &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
:: Дополнительные флаги&lt;br /&gt;
&lt;br /&gt;
[[Category:Руководства]]&lt;/div&gt;</summary>
		<author><name>Unsane</name></author>
	</entry>
</feed>