<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/wiki/PL/Element_data?action=history&amp;feed=atom</id>
	<title>PL/Element data - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/wiki/PL/Element_data?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PL/Element_data&amp;action=history"/>
	<updated>2026-05-22T02:36:36Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PL/Element_data&amp;diff=80580&amp;oldid=prev</id>
		<title>FileEX: /* Synchronizowana element data z konkretnymi klientami (subscribe) */</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PL/Element_data&amp;diff=80580&amp;oldid=prev"/>
		<updated>2024-09-12T18:32:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Synchronizowana element data z konkretnymi klientami (subscribe)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:32, 12 September 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l86&quot;&gt;Line 86:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 86:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local function getElementsWithinMarker(marker)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local function getElementsWithinMarker(marker&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, type&lt;/ins&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     if (not isElement(marker)) or (getElementType(marker) ~= &amp;quot;marker&amp;quot;) then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     if (not isElement(marker)) or (getElementType(marker) ~= &amp;quot;marker&amp;quot;) then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         return false&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         return false&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local markerColShape = getElementColShape(marker)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local markerColShape = getElementColShape(marker)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local elements = getElementsWithinColShape(markerColShape)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local elements = getElementsWithinColShape(markerColShape&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, type&lt;/ins&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     return elements&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     return elements&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki-wiki_dev_:diff::1.12:old-80579:rev-80580 --&gt;
&lt;/table&gt;</summary>
		<author><name>FileEX</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PL/Element_data&amp;diff=80579&amp;oldid=prev</id>
		<title>FileEX: /* Synchronizowana element data z konkretnymi klientami (subscribe) */</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PL/Element_data&amp;diff=80579&amp;oldid=prev"/>
		<updated>2024-09-12T18:31:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Synchronizowana element data z konkretnymi klientami (subscribe)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:31, 12 September 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l86&quot;&gt;Line 86:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 86:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;function getElementsWithinMarker(marker)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;local &lt;/ins&gt;function getElementsWithinMarker(marker)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     if (not isElement(marker)) or (getElementType(marker) ~= &amp;quot;marker&amp;quot;) then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     if (not isElement(marker)) or (getElementType(marker) ~= &amp;quot;marker&amp;quot;) then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         return false&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         return false&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki-wiki_dev_:diff::1.12:old-80578:rev-80579 --&gt;
&lt;/table&gt;</summary>
		<author><name>FileEX</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PL/Element_data&amp;diff=80578&amp;oldid=prev</id>
		<title>FileEX at 18:31, 12 September 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PL/Element_data&amp;diff=80578&amp;oldid=prev"/>
		<updated>2024-09-12T18:31:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:31, 12 September 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l86&quot;&gt;Line 86:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 86:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;function getElementsWithinMarker(marker)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    if (not isElement(marker)) or (getElementType(marker) ~= &quot;marker&quot;) then&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        return false&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    end&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    local markerColShape = getElementColShape(marker)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    local elements = getElementsWithinColShape(markerColShape)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    return elements&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;end&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local startMarker = createMarker(0,0,3,'cylinder',1.5, 255, 0, 0)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local startMarker = createMarker(0,0,3,'cylinder',1.5, 255, 0, 0)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki-wiki_dev_:diff::1.12:old-80577:rev-80578 --&gt;
&lt;/table&gt;</summary>
		<author><name>FileEX</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PL/Element_data&amp;diff=80577&amp;oldid=prev</id>
		<title>FileEX: Translation</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PL/Element_data&amp;diff=80577&amp;oldid=prev"/>
		<updated>2024-09-12T18:30:35Z</updated>

		<summary type="html">&lt;p&gt;Translation&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Każdy [[Element]] może posiadać swoje własne dane, nazywane '''element data'''. Jest to zbiór danych, składający się z klucza oraz wartości. Element daty mogą być przydatne dla przechowywania i synchronizacji informacji pomiędzy serwerem, a klientami. Przykładowo możesz zapisywać punkty gracza, właśnie na jego elemencie, a następnie po stronie klienta możesz je wyświetlać np. w tabeli graczy. Często element data jest także przydatna dla stricte skryptowych zastosowań, aby sprawdzać czy gracz ma np. konto VIP.&lt;br /&gt;
&lt;br /&gt;
{{PL/Note|Należy jednak pamiętać, że element daty są dość obciążające dla serwera, gdyż są nieustannie synchronizowane pomiędzy wszystkimi klientami. Dlatego warto rozważyć wyłączenie synchronizacji konkretnej element daty jeśli nie jest ona potrzebna lub ograniczyć ją do konkretnych klientów. Duża ilość synchronizowanych element dat ma znaczący wpływ na wydajność serwera!}}&lt;br /&gt;
&lt;br /&gt;
Synchronizację elementdaty można wyłączyć ustawiając argument '''synchronize''' na ''false'' przy użyciu funkcji [[setElementData]].&lt;br /&gt;
&lt;br /&gt;
Wartością elementdaty może być niemal wszystko. Może to być liczba, ciąg znaków, wartość true/false, element czy tabela danych.&lt;br /&gt;
&lt;br /&gt;
==Ograniczenia==&lt;br /&gt;
Jak już wspomniano każdy [[Element]] może posiadać dowolną ilość element dat &amp;quot;na sobie&amp;quot;. Jednak istnieją pewne ograniczenia jeśli chodzi o to co możemy podać jako wartość elementdaty. Nie mogą to być tzw. ''non-element userdata'' (Więcej informacji [[PL/MTA_Classes|tutaj]]), funkcje (typ ''function'') oraz wątki (typ ''thread''). Nie można także przesyłać tabel zawierających co najmniej jeden z w/w typów.&lt;br /&gt;
&lt;br /&gt;
==Synchronizacja==&lt;br /&gt;
''Każda'' element data domyślnie jest synchronizowana. Oznacza to, że każda zmiana jej po stronie serwera jest synchronizowana ze wszystkimi klientami i analogicznie po stronie klienta jest synchronizowana z serwerem, a następnie ze wszystkimi klientami. Im więcej element dat tym więcej pakietów synchronizacji pomiędzy serwerem a klientami. Ma to znaczący wpływ na wydajność serwera w przypadku dużej ilości graczy oraz dużej ilości element dat, w zależności od przepustowości serwera.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Nie zawsze jest potrzeba synchronizowania element dat, więc gdy to możliwe wyłączaj synchronizację podając jako argument ''synchronize'' wartość ''false'' przy ustawianiu jej [[setElementData]]. Wówczas taka element data dostępna jest tylko po tej stronie gdzie została ustawiona. Czyli jeśli ustawiono element datę po stronie serwera, to tylko tam jest ona dostępna. Jeśli ustawiono ją po stronie klienta to jest ona dostępna '''tylko u tego klienta, u którego została ustawiona'''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Możesz także ograniczyć synchronizację element daty do konkretnych osób, dla których ma być synchronizowana. Jest to możliwe dzięki tzw. ''subscribe-mode''. Możesz określić za pomocą funkcji [[addElementDataSubscriber]] oraz [[removeElementDataSubscriber]] określić z kim ma być synchronizowana dana element data.&lt;br /&gt;
&lt;br /&gt;
==Bezpieczeństwo==&lt;br /&gt;
Pamiętaj, że '''absolutnie nigdy''' nie należy ufać stronie klienta. Nigdy nie powinno się zarządzać wrażliwymi danymi po stronie klienta, ponieważ strona klienta może być fałszywa. Wszystko co dzieje się po stronie klienta, dzieje się na komputerze danego klienta, a co za tym idzie wszystko może zostać sfałszowane. Dlatego zawsze należy w miarę możliwości wszelkie ważne dane trzymać po stronie serwera, a jeśli już musisz coś sprawdzać po stronie klienta np. czy gracz ma rangę to pamiętaj, aby sprawdzić to również po stronie serwera, jako dodatkowe zabezpieczenie.&lt;br /&gt;
&lt;br /&gt;
Zapoznaj się z [[Script security|artykułem o bezpieczeństwie skryptów]] po więcej informacji jak się chronić.&lt;br /&gt;
&lt;br /&gt;
==Funkcje elementdat==&lt;br /&gt;
* [[setElementData]] - Do ustawiania elementdaty&lt;br /&gt;
* [[getElementData]] - Do odczytu elementdaty&lt;br /&gt;
* [[hasElementData]] - Do sprawdzenia czy element ma daną elementdate. Jest równoważne ze sprawdzeniem [[getElementData]] czy nie jest false, zazwyczaj nie ma potrzeby sprawdzania czy elementdata w ogóle istnieje, tylko czy ma jakąś wartość.&lt;br /&gt;
* [[addElementDataSubscriber]] - Do dodania klienta, z którym ma być synchronizowana elementdata.&lt;br /&gt;
* [[removeElementDataSubscriber]] - Do usunięcia klienta, z którym nie ma już być synchronizowana elementdata.&lt;br /&gt;
* [[hasElementDataSubscriber]] - Do sprawdzenia czy konkretny elementdata jest synchronizowana z konkretnym klientem.&lt;br /&gt;
&lt;br /&gt;
==Eventy elementdat==&lt;br /&gt;
* [[onElementDataChange]]&lt;br /&gt;
* [[onClientElementDataChange]]&lt;br /&gt;
&lt;br /&gt;
==Przykłady==&lt;br /&gt;
===Synchronizowana element data ze wszystkimi===&lt;br /&gt;
Ten przykład ustawia element datę o nazwie ''kills'' dla gracza, która określa ilość zabójstw. Komenda ''kills &amp;lt;nick&amp;gt;'' pozwala sprawdzić ilość zabójstw danego gracza, a także każdy widzi swoją ilość zabójstw u góry ekranu.&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Event, aby doliczać zabójstwa&lt;br /&gt;
addEventHandler('onPlayerWasted', root, function(_, killer)&lt;br /&gt;
    if (killer and getElementType(killer) == 'player') then -- jeśli zabójcą był gracz&lt;br /&gt;
        local kills = getElementData(killer, 'kills') or 0 -- pobieramy ilość zabójstw gracza, jeśli nigdy nikogo nie zabił to domyślnie 0&lt;br /&gt;
        setElementData(killer, 'kills', kills + 1) -- Zwiększamy ilość zabójstw o 1&lt;br /&gt;
    end&lt;br /&gt;
end)&lt;br /&gt;
&lt;br /&gt;
-- Komenda do sprawdzania ilości zabójstw danego gracza&lt;br /&gt;
addCommandHandler('kills', function(plr, cmd, nick)&lt;br /&gt;
    if (not nick) then&lt;br /&gt;
        outputChatBox('Nie podano nicku', plr)&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- szukamy gracza po nicku&lt;br /&gt;
    local killer = getPlayerFromName(nick)&lt;br /&gt;
    if (killer) then&lt;br /&gt;
        local kills = getElementData(killer, 'kills') or 0&lt;br /&gt;
        outputChatBox('Ten gracz ma na koncie '..kills..' zabójstw', plr)&lt;br /&gt;
    else&lt;br /&gt;
        outputChatBox('Nie znaleziono gracza o takim nicku', plr)&lt;br /&gt;
    end&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local screenX, screenY = guiGetScreenSize()&lt;br /&gt;
local textY = (30/1080) * screenY -- skalujemy pozycje tekstu&lt;br /&gt;
&lt;br /&gt;
-- Renderujemy tekst na ekranie&lt;br /&gt;
addEventHandler('onClientRender', root, function()&lt;br /&gt;
    local kills = getElementData(localPlayer, 'kills') or 0&lt;br /&gt;
    dxDrawText('Zabójstwa: '..kills, 0, textY, screenX, 0, 0xFFFFFFFF, 1, 'default-bold', 'center')&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Synchronizowana element data z konkretnymi klientami (subscribe)===&lt;br /&gt;
Ten przykład imituje wyścig pomiędzy dwoma graczami i pokazuje każdemu z nich ilość punktów przeciwnika z elementdaty ''race_scores''. W tym przypadku synchronizujemy elementdatę tylko pomiędzy członkami wyścigu, a nie wszystkimi klientami.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local startMarker = createMarker(0,0,3,'cylinder',1.5, 255, 0, 0)&lt;br /&gt;
&lt;br /&gt;
-- Event, że weszliśmy w marker&lt;br /&gt;
addEventHandler('onMarkerHit', startMarker, function(he,md)&lt;br /&gt;
    if (getElementType(he) == 'player' and md) then -- Sprawdzamy czy wszedł gracz&lt;br /&gt;
        local elems = #getElementsWithinMarker(source, 'player') -- Pobieramy ilość elementów (graczy) w markerze&lt;br /&gt;
        if (elems == 2) then -- Jeśli w markerze jest 2 graczy&lt;br /&gt;
            -- Ustawiamy punkty na 0 dla obydwu graczy i ustawiamy synchronizację na tryb 'subscribe'&lt;br /&gt;
            setElementData(elems[1], 'race_scores', 0, 'subscribe')&lt;br /&gt;
            setElementData(elems[2], 'race_scores', 0, 'subscribe')&lt;br /&gt;
            &lt;br /&gt;
            addElementDataSubscriber(elems[1], 'race_scores', elems[2]) -- ustawiamy synchronizację elementdaty race_scores gracza 1 z graczem 2&lt;br /&gt;
            addElementDataSubscriber(elems[2], 'race_scores', elems[1]) -- ustawiamy synchronizację elementdaty race_scores gracza 2 z graczem 1&lt;br /&gt;
            -- Wysyłamy informacje do klientów o rozpoczęciu wyścigu&lt;br /&gt;
            triggerClientEvent({elems[1],elems[2]}, 'startRaceBetweenPlayers', resourceRoot, elems[1], elems[2])&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local screenX, screenY = guiGetScreenSize()&lt;br /&gt;
local textY = (30/1080) * screenY -- Skalujemy wysokość tekstu na ekranie&lt;br /&gt;
local opponent&lt;br /&gt;
&lt;br /&gt;
-- Funkcja renderująca punkty na ekranie&lt;br /&gt;
local function renderScores()&lt;br /&gt;
    if (opponent and isElement(opponent)) then -- Czy gracz wciąż jest na serwerze&lt;br /&gt;
        local scores = getElementData(opponent, 'race_scores')&lt;br /&gt;
        dxDrawText('Punkty przeciwnika: '..scores, 0, textY, screenX, 0, 0xFFFFFFFF, 1, 'default-bold', 'center')&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addEvent('startRaceBetweenPlayers', true)&lt;br /&gt;
addEventHandler('startRaceBetweenPlayers', resourceRoot, function(player1, player2)&lt;br /&gt;
    -- Ustalamy przeciwnika&lt;br /&gt;
    opponent = localPlayer == player1 and player2 or player1&lt;br /&gt;
    &lt;br /&gt;
    -- Renderujemy punkty przeciwnika&lt;br /&gt;
    addEventHandler('onClientRender', root, renderScores)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wtedy jeśli zmieni się wartość elementdaty ``race_scores`` dla jednego z graczy, drugi zobaczy, że ilość punktów uległa zmianie.&lt;br /&gt;
&lt;br /&gt;
===Element data z wyłączoną synchronizacją===&lt;br /&gt;
Ten przykład ustawia element datę gdy gracz odebrał już nagrodę. To prosty przykład, więc po ponownym połączeniu się z serwerem gracz znów może odebrać nagrodę!&lt;br /&gt;
W przykładzie wyłączamy synchronizację elementdaty, ponieważ nie potrzebujemy jej synchronizować ze wszystkimi klientami. Używamy jej tylko na stronie serwera, więc nie ma potrzeby jej synchronizowania z klientami.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Tworzymy marker&lt;br /&gt;
local marker = createMarker(0,0,3, 'cylinder', 1.5, 255, 255, 0)&lt;br /&gt;
&lt;br /&gt;
-- Event, że weszliśmy w marker&lt;br /&gt;
addEventHandler('onMarkerHit', marker, function(he, md)&lt;br /&gt;
    if (getElementType(he) == 'player' and md) then -- Jeśli w marker wszedł gracz, a nie np. wjechał pojazd&lt;br /&gt;
        if (getElementData(he, 'reward')) then -- jeśli gracz ma elementdate, czyli odebrał już nagrodę&lt;br /&gt;
            outputChatBox('Odebrałeś/aś już nagrodę!', he)&lt;br /&gt;
            return&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Gracz odbiera nagrode&lt;br /&gt;
        local money = math.random(100,1000) -- Losujemy kwote nagrody od 100 do 1000$&lt;br /&gt;
        givePlayerMoney(he, money) -- dajemy graczowi pieniądze&lt;br /&gt;
        outputChatBox('Odebrano '..money..'$ nagrody', he)&lt;br /&gt;
        &lt;br /&gt;
        setElementData(he, 'reward', true, false) -- Ustawiamy elementdate, że gracz odebrał już nagrodę. Wyłączamy synchronizację, ponieważ jej nie potrzebujemy&lt;br /&gt;
    end&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[en:Element data]]&lt;br /&gt;
[[Category:Translated/Scripting Concepts]]&lt;/div&gt;</summary>
		<author><name>FileEX</name></author>
	</entry>
</feed>