<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Esenthel Forum - Network]]></title>
		<link>https://esenthel.com/forum/</link>
		<description><![CDATA[Esenthel Forum - https://esenthel.com/forum]]></description>
		<pubDate>Wed, 29 Apr 2026 11:18:28 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[[solved]IRC connection via TCP]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=11403</link>
			<pubDate>Fri, 03 Mar 2023 20:28:08 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=11403</guid>
			<description><![CDATA[Hi,<br />
This is for my own personal upcoming game<br />
I am trying to make a connection via Socket so i can listen to IRC chat (for a Twitch integration).<br />
<br />
My problem is that the socket TCP connection is stuck in IN_PROGRESS stage.<br />
IRC requires login information to connect properly, and i am not sure if i am doing things in the correct order, i tried different way but to no success.<br />
<br />
The intend here is to be able to connect to a chat room on twitch IRC, the next step will be to listen and parse all msgs, then use them as a voting tool for my game<br />
<br />
sending returns -1<br />
<br />
here is my integration:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>class Twitch_Handler<br />
{<br />
&nbsp;&nbsp; Socket TwitchSocket;<br />
&nbsp;&nbsp; Socket.RESULT result;<br />
&nbsp;&nbsp; SockAddr TwitchSAddr;<br />
&nbsp;&nbsp; Str username = "justinfan4445";<br />
&nbsp;&nbsp; Str password = "randompass";<br />
&nbsp;&nbsp; Str channelName = "jungroan"; //Set to the channel you want ot get chat messages from<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; FileText data;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; void Create()<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TwitchSAddr.setHost("irc.chat.twitch.tv", 6667);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TwitchSocket.createTcp(TwitchSAddr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TwitchSocket.block(false);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result = TwitchSocket.connect(TwitchSAddr);&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.writeMem();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.putText(S+"PASS " + password+"&#92;r &#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.putText(S+"NICK " + username+"&#92;r &#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.putText(S+"USER " + username + " 8 * :" + username+"&#92;r &#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.putText(S+"JOIN #" + channelName+"&#92;r &#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int size = TwitchSocket.send(&amp;data, data.size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gui.msgBox(S, S+"sent"+size+data.size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; void Update()<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Byte data[1024];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int received = TwitchSocket.receive(data, 1024);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Gui.msgBox(S, S+"recv"+received);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Gui.msgBox(S, S+"update..."+result);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool failed = TwitchSocket.connectFailed();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!TwitchSocket.is() || result==Socket.FAILED || failed)Create();<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; void DrawDebug()<br />
&nbsp;&nbsp; {<br />
<br />
&nbsp;&nbsp; }<br />
}<br />
Twitch_Handler Twitch;</code></div></div>
]]></description>
			<content:encoded><![CDATA[Hi,<br />
This is for my own personal upcoming game<br />
I am trying to make a connection via Socket so i can listen to IRC chat (for a Twitch integration).<br />
<br />
My problem is that the socket TCP connection is stuck in IN_PROGRESS stage.<br />
IRC requires login information to connect properly, and i am not sure if i am doing things in the correct order, i tried different way but to no success.<br />
<br />
The intend here is to be able to connect to a chat room on twitch IRC, the next step will be to listen and parse all msgs, then use them as a voting tool for my game<br />
<br />
sending returns -1<br />
<br />
here is my integration:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>class Twitch_Handler<br />
{<br />
&nbsp;&nbsp; Socket TwitchSocket;<br />
&nbsp;&nbsp; Socket.RESULT result;<br />
&nbsp;&nbsp; SockAddr TwitchSAddr;<br />
&nbsp;&nbsp; Str username = "justinfan4445";<br />
&nbsp;&nbsp; Str password = "randompass";<br />
&nbsp;&nbsp; Str channelName = "jungroan"; //Set to the channel you want ot get chat messages from<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; FileText data;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; void Create()<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TwitchSAddr.setHost("irc.chat.twitch.tv", 6667);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TwitchSocket.createTcp(TwitchSAddr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TwitchSocket.block(false);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result = TwitchSocket.connect(TwitchSAddr);&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.writeMem();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.putText(S+"PASS " + password+"&#92;r &#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.putText(S+"NICK " + username+"&#92;r &#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.putText(S+"USER " + username + " 8 * :" + username+"&#92;r &#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.putText(S+"JOIN #" + channelName+"&#92;r &#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int size = TwitchSocket.send(&amp;data, data.size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gui.msgBox(S, S+"sent"+size+data.size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; void Update()<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Byte data[1024];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int received = TwitchSocket.receive(data, 1024);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Gui.msgBox(S, S+"recv"+received);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Gui.msgBox(S, S+"update..."+result);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool failed = TwitchSocket.connectFailed();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!TwitchSocket.is() || result==Socket.FAILED || failed)Create();<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; void DrawDebug()<br />
&nbsp;&nbsp; {<br />
<br />
&nbsp;&nbsp; }<br />
}<br />
Twitch_Handler Twitch;</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[solved] sending file over p2p steam]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9472</link>
			<pubDate>Tue, 19 Feb 2019 01:55:23 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9472</guid>
			<description><![CDATA[Hey,<br />
<br />
EDIT : i was struggling to make p2p with files using byte packet, here is the SOLVED and working version of the code<br />
<br />
i am using the Steamwork SDK for this, using 2 func, ( sendp2p/readp2p)<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>void SendP2PPacket(ulong TargetCSID, EP2PSend UDPTCPBUFF, File &amp;f, int Channel=0)<br />
{&nbsp;&nbsp; <br />
&nbsp;&nbsp; f.pos(0); <br />
&nbsp;&nbsp; byte *data;<br />
&nbsp;&nbsp; void* buffer = Alloc(data, f.size());<br />
&nbsp;&nbsp; f.get(buffer, f.size());<br />
&nbsp;&nbsp; if(!SteamNetworking().SendP2PPacket( CSteamID(TargetCSID), buffer, f.size(), UDPTCPBUFF, Channel ))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gui.msgBox(S, S+"Error Sending Packet via P2P");<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; Free( buffer );<br />
}</code></div></div>
<br />
So far nothing too hard, i pack my File with what i want to send, i pass it along to this function, pos is set back to (0) and send some byte buffer that get created with it. the rest of the args doesnt really matter, its just the target and the method used.<br />
<br />
then on my loop(receiver) i am catching the packets using steam func like this<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>void UpdateP2PPacket()<br />
{<br />
&nbsp;&nbsp; uint32 msgSize=0;<br />
&nbsp;&nbsp; int nChannel = 0;<br />
&nbsp;&nbsp; while(SteamNetworking().IsP2PPacketAvailable(&amp;msgSize, nChannel))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte *data;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void* packet = Alloc(data, msgSize);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CSteamID steamIDRemote; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32 bytesRead = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SteamNetworking().ReadP2PPacket(data, msgSize, &amp;bytesRead, &amp;steamIDRemote))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File f_packet;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f_packet.writeMem().putN(data, msgSize);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f_packet.pos(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte t=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int test=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t=f_packet.getByte();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f_packet.decIntV(test);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Gui.msgBox(S, S+"WORKS"+t+"/"+test);&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Free( packet );<br />
&nbsp;&nbsp; }<br />
}</code></div></div>
 <br />
<br />
there again, nothing crazy. we check if a packet is available, if it is then we get the size in byte.<br />
then we malloc for the byte ( depending of msgsize ).<br />
<br />
then we call the func to get this packet, and store it in our mem. then read write it as file, then read the file itself<br />
<br />
thanks for the helps <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="smile" title="smile" />]]></description>
			<content:encoded><![CDATA[Hey,<br />
<br />
EDIT : i was struggling to make p2p with files using byte packet, here is the SOLVED and working version of the code<br />
<br />
i am using the Steamwork SDK for this, using 2 func, ( sendp2p/readp2p)<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>void SendP2PPacket(ulong TargetCSID, EP2PSend UDPTCPBUFF, File &amp;f, int Channel=0)<br />
{&nbsp;&nbsp; <br />
&nbsp;&nbsp; f.pos(0); <br />
&nbsp;&nbsp; byte *data;<br />
&nbsp;&nbsp; void* buffer = Alloc(data, f.size());<br />
&nbsp;&nbsp; f.get(buffer, f.size());<br />
&nbsp;&nbsp; if(!SteamNetworking().SendP2PPacket( CSteamID(TargetCSID), buffer, f.size(), UDPTCPBUFF, Channel ))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gui.msgBox(S, S+"Error Sending Packet via P2P");<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; Free( buffer );<br />
}</code></div></div>
<br />
So far nothing too hard, i pack my File with what i want to send, i pass it along to this function, pos is set back to (0) and send some byte buffer that get created with it. the rest of the args doesnt really matter, its just the target and the method used.<br />
<br />
then on my loop(receiver) i am catching the packets using steam func like this<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>void UpdateP2PPacket()<br />
{<br />
&nbsp;&nbsp; uint32 msgSize=0;<br />
&nbsp;&nbsp; int nChannel = 0;<br />
&nbsp;&nbsp; while(SteamNetworking().IsP2PPacketAvailable(&amp;msgSize, nChannel))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte *data;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void* packet = Alloc(data, msgSize);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CSteamID steamIDRemote; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32 bytesRead = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SteamNetworking().ReadP2PPacket(data, msgSize, &amp;bytesRead, &amp;steamIDRemote))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File f_packet;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f_packet.writeMem().putN(data, msgSize);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f_packet.pos(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte t=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int test=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t=f_packet.getByte();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f_packet.decIntV(test);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Gui.msgBox(S, S+"WORKS"+t+"/"+test);&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Free( packet );<br />
&nbsp;&nbsp; }<br />
}</code></div></div>
 <br />
<br />
there again, nothing crazy. we check if a packet is available, if it is then we get the size in byte.<br />
then we malloc for the byte ( depending of msgsize ).<br />
<br />
then we call the func to get this packet, and store it in our mem. then read write it as file, then read the file itself<br />
<br />
thanks for the helps <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="smile" title="smile" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[solved]Steam callbacks, issue with macro]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9452</link>
			<pubDate>Thu, 13 Dec 2018 19:25:10 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9452</guid>
			<description><![CDATA[Hey,<br />
<br />
i seem to have an issue with the STEAM_CALLBACK macro provided by the steamwork SDK<br />
here is the code:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>class GroupGUI : GuiObjs<br />
{<br />
&nbsp;&nbsp; STEAM_CALLBACK(GroupGUI, OnPersonaStateChange, PersonaStateChange_t);<br />
<br />
void OnPersonaStateChange(PersonaStateChange_t *pCallback)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; }<br />
<br />
void Create(){ //do creation there and stuff<br />
}<br />
}<br />
GroupGUI GUI_Group;</code></div></div>
<br />
When the .h is generated thru EE code editor VS sees it as ";TEAM_CALLBACK" instead of "STEAM_CALLBACK" and throw an error.<br />
<a href="https://gyazo.com/c3cecdef25515d8c51f9ec3ad9b5cab5" target="_blank">https://gyazo.com/c3cecdef25515d8c51f9ec3ad9b5cab5</a><br />
<br />
Using VS only i can get it working ,but i want to stick to EE editor. ( casual scripting ;D )<br />
<br />
What is the proper way to code this ? or any way around this that someone knows ?<br />
and is there a way to avoid function to create header file automatically ?<br />
<br />
here is the code from Steam:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>// Declares a callback member function plus a helper member variable which<br />
// registers the callback on object creation and unregisters on destruction.<br />
// The optional fourth 'var' param exists only for backwards-compatibility<br />
// and can be ignored.<br />
#define STEAM_CALLBACK( thisclass, func, .../*callback_type, [deprecated] var*/ ) &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;_STEAM_CALLBACK_SELECT( ( __VA_ARGS__, 4, 3 ), ( /**/, thisclass, func, __VA_ARGS__ ) )<br />
<br />
<br />
//-----------------------------------------------------------------------------<br />
// The following macros are implementation details, not intended for public use<br />
//-----------------------------------------------------------------------------<br />
#define _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param )<br />
#define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_STEAM_CALLBACK_##SELECTED<br />
#define _STEAM_CALLBACK_SELECT( X, Y )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_STEAM_CALLBACK_HELPER X Y<br />
#define _STEAM_CALLBACK_3( extra_code, thisclass, func, param ) &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;struct CCallbackInternal_ ## func : private CCallbackImpl&lt; sizeof( param ) &gt; { &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCallbackInternal_ ## func () { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCallbackInternal_ ## func ( const CCallbackInternal_ ## func &amp; ) { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCallbackInternal_ ## func &amp; operator=( const CCallbackInternal_ ## func &amp; ) { return *this; } &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private: virtual void Run( void *pvParam ) { _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisclass *pOuter = reinterpret_cast&lt;thisclass*&gt;( reinterpret_cast&lt;char*&gt;(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pOuter-&gt;func( reinterpret_cast&lt;param*&gt;( pvParam ) ); &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;} m_steamcallback_ ## func ; void func( param *pParam )<br />
#define _STEAM_CALLBACK_4( _, thisclass, func, param, var ) &#92;<br />
CCallback&lt; thisclass, param &gt; var; void func( param *pParam )</code></div></div>
<br />
Thanks]]></description>
			<content:encoded><![CDATA[Hey,<br />
<br />
i seem to have an issue with the STEAM_CALLBACK macro provided by the steamwork SDK<br />
here is the code:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>class GroupGUI : GuiObjs<br />
{<br />
&nbsp;&nbsp; STEAM_CALLBACK(GroupGUI, OnPersonaStateChange, PersonaStateChange_t);<br />
<br />
void OnPersonaStateChange(PersonaStateChange_t *pCallback)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; }<br />
<br />
void Create(){ //do creation there and stuff<br />
}<br />
}<br />
GroupGUI GUI_Group;</code></div></div>
<br />
When the .h is generated thru EE code editor VS sees it as ";TEAM_CALLBACK" instead of "STEAM_CALLBACK" and throw an error.<br />
<a href="https://gyazo.com/c3cecdef25515d8c51f9ec3ad9b5cab5" target="_blank">https://gyazo.com/c3cecdef25515d8c51f9ec3ad9b5cab5</a><br />
<br />
Using VS only i can get it working ,but i want to stick to EE editor. ( casual scripting ;D )<br />
<br />
What is the proper way to code this ? or any way around this that someone knows ?<br />
and is there a way to avoid function to create header file automatically ?<br />
<br />
here is the code from Steam:<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>// Declares a callback member function plus a helper member variable which<br />
// registers the callback on object creation and unregisters on destruction.<br />
// The optional fourth 'var' param exists only for backwards-compatibility<br />
// and can be ignored.<br />
#define STEAM_CALLBACK( thisclass, func, .../*callback_type, [deprecated] var*/ ) &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;_STEAM_CALLBACK_SELECT( ( __VA_ARGS__, 4, 3 ), ( /**/, thisclass, func, __VA_ARGS__ ) )<br />
<br />
<br />
//-----------------------------------------------------------------------------<br />
// The following macros are implementation details, not intended for public use<br />
//-----------------------------------------------------------------------------<br />
#define _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param )<br />
#define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_STEAM_CALLBACK_##SELECTED<br />
#define _STEAM_CALLBACK_SELECT( X, Y )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_STEAM_CALLBACK_HELPER X Y<br />
#define _STEAM_CALLBACK_3( extra_code, thisclass, func, param ) &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;struct CCallbackInternal_ ## func : private CCallbackImpl&lt; sizeof( param ) &gt; { &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCallbackInternal_ ## func () { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCallbackInternal_ ## func ( const CCallbackInternal_ ## func &amp; ) { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCallbackInternal_ ## func &amp; operator=( const CCallbackInternal_ ## func &amp; ) { return *this; } &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private: virtual void Run( void *pvParam ) { _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisclass *pOuter = reinterpret_cast&lt;thisclass*&gt;( reinterpret_cast&lt;char*&gt;(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pOuter-&gt;func( reinterpret_cast&lt;param*&gt;( pvParam ) ); &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;} m_steamcallback_ ## func ; void func( param *pParam )<br />
#define _STEAM_CALLBACK_4( _, thisclass, func, param, var ) &#92;<br />
CCallback&lt; thisclass, param &gt; var; void func( param *pParam )</code></div></div>
<br />
Thanks]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Download class]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9423</link>
			<pubDate>Sat, 22 Sep 2018 02:07:40 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9423</guid>
			<description><![CDATA[Hi, <br />
<br />
I'm trying to use <span style="font-weight: bold;">Download </span>class for my custom REST server, but all I get is <span style="font-weight: bold;">DWNL_ERROR </span>state. I believe that's because Download does not want to work with <span style="font-weight: bold;">"http://localhost"</span> address and it is forced to use 80 port on HTTP and 443 on HTTPS.<br />
<br />
It resolves addresses by using <span style="font-weight: bold;">GetHostAddresses() </span>function, if I specify public IP address (like google address 172.217.8.14) it works correctly, but it fails when using "127.0.0.1" or "localhost".<br />
<br />
So what can I do if I want to test Download on localhost and with the use of different port (like 8000)?<br />
<br />
P.S. I tried to edit "C:\Windows\System32\drivers\etc\hosts" file (Win10), but nothing changed]]></description>
			<content:encoded><![CDATA[Hi, <br />
<br />
I'm trying to use <span style="font-weight: bold;">Download </span>class for my custom REST server, but all I get is <span style="font-weight: bold;">DWNL_ERROR </span>state. I believe that's because Download does not want to work with <span style="font-weight: bold;">"http://localhost"</span> address and it is forced to use 80 port on HTTP and 443 on HTTPS.<br />
<br />
It resolves addresses by using <span style="font-weight: bold;">GetHostAddresses() </span>function, if I specify public IP address (like google address 172.217.8.14) it works correctly, but it fails when using "127.0.0.1" or "localhost".<br />
<br />
So what can I do if I want to test Download on localhost and with the use of different port (like 8000)?<br />
<br />
P.S. I tried to edit "C:\Windows\System32\drivers\etc\hosts" file (Win10), but nothing changed]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[web Connection crashes.]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9313</link>
			<pubDate>Thu, 09 Nov 2017 08:16:07 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9313</guid>
			<description><![CDATA[Connection class isn't usable in web because it internally calls block() which crashes with error "bad ioctl syscall 21537 "<br />
(it somewhat known issue with emscripten but isn't fixed in  because websockets anyways are async) <br />
my suggested fix:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//(Connection.cpp:720):<br /></span><span style="color: #0000BB">Bool&nbsp;Socket</span><span style="color: #007700">::</span><span style="color: #0000BB">block</span><span style="color: #007700">(</span><span style="color: #0000BB">Bool&nbsp;on</span><span style="color: #007700">)<br />{<br /></span><span style="color: #FF8000">#if&nbsp;WEB<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;!</span><span style="color: #0000BB">on</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">#else<br /></span><span style="color: #007700">...&nbsp;</span><span style="color: #0000BB">original&nbsp;code<br /></span><span style="color: #FF8000">#endif<br /></span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div>
]]></description>
			<content:encoded><![CDATA[Connection class isn't usable in web because it internally calls block() which crashes with error "bad ioctl syscall 21537 "<br />
(it somewhat known issue with emscripten but isn't fixed in  because websockets anyways are async) <br />
my suggested fix:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//(Connection.cpp:720):<br /></span><span style="color: #0000BB">Bool&nbsp;Socket</span><span style="color: #007700">::</span><span style="color: #0000BB">block</span><span style="color: #007700">(</span><span style="color: #0000BB">Bool&nbsp;on</span><span style="color: #007700">)<br />{<br /></span><span style="color: #FF8000">#if&nbsp;WEB<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;!</span><span style="color: #0000BB">on</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">#else<br /></span><span style="color: #007700">...&nbsp;</span><span style="color: #0000BB">original&nbsp;code<br /></span><span style="color: #FF8000">#endif<br /></span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[SQL and UID]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9215</link>
			<pubDate>Sun, 23 Apr 2017 15:01:52 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9215</guid>
			<description><![CDATA[Hi, i faced a problem:<br />
I have UID in my postgresql DB table, it looks like:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>2b179f70-3c29-11e4-abda-6fbacb471cca</code></div></div>
But when i select it to EE application i get the following:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>709f172b-293c-e411-abda-6fbacb471cca</code></div></div>
<br />
As you see first 8 bytes are swaped, rest 8 bytes are OK, it appears not only in select but in insert also.<br />
<br />
When i want to insert it i do:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>id.fromHex("2b179f703c2911e4abda6fbacb471cca");</code></div></div>
<br />
Tried in 32 and 64bit, Debug and Release.<br />
<br />
If i try to select vice versa, it works vice versa.<br />
<br />
One more example:<br />
<blockquote><cite>Quote:</cite>in db: 12345678-9012-3456-7890-123456789012<br />
in ee: 78563412-1290-5634-7890-123456789012</blockquote>
<br />
But if i pass UID as text from EE and to EE, it works fine, but it's bad, because it's way too slower.<br />
<br />
<span style="font-weight: bold;">UPD:</span><br />
If i bind UID like this to be inserted into database, it inserts fine:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>sql.commandParam(0, CPtr(&amp;id), 16); // Inserts fine<br />
sql.commandParam(0, id); // inserts swaped</code></div></div>
But in any way after select back to EE it swaps no matter how it was inserted]]></description>
			<content:encoded><![CDATA[Hi, i faced a problem:<br />
I have UID in my postgresql DB table, it looks like:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>2b179f70-3c29-11e4-abda-6fbacb471cca</code></div></div>
But when i select it to EE application i get the following:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>709f172b-293c-e411-abda-6fbacb471cca</code></div></div>
<br />
As you see first 8 bytes are swaped, rest 8 bytes are OK, it appears not only in select but in insert also.<br />
<br />
When i want to insert it i do:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>id.fromHex("2b179f703c2911e4abda6fbacb471cca");</code></div></div>
<br />
Tried in 32 and 64bit, Debug and Release.<br />
<br />
If i try to select vice versa, it works vice versa.<br />
<br />
One more example:<br />
<blockquote><cite>Quote:</cite>in db: 12345678-9012-3456-7890-123456789012<br />
in ee: 78563412-1290-5634-7890-123456789012</blockquote>
<br />
But if i pass UID as text from EE and to EE, it works fine, but it's bad, because it's way too slower.<br />
<br />
<span style="font-weight: bold;">UPD:</span><br />
If i bind UID like this to be inserted into database, it inserts fine:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>sql.commandParam(0, CPtr(&amp;id), 16); // Inserts fine<br />
sql.commandParam(0, id); // inserts swaped</code></div></div>
But in any way after select back to EE it swaps no matter how it was inserted]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Multicast]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9113</link>
			<pubDate>Sun, 18 Sep 2016 12:03:03 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9113</guid>
			<description><![CDATA[Hey<br />
<br />
Is it possible to use FastConnection or Socket to receive messages from a multicast address, like 239.255.42.99?<br />
<br />
Thanks,<br />
<br />
yvan]]></description>
			<content:encoded><![CDATA[Hey<br />
<br />
Is it possible to use FastConnection or Socket to receive messages from a multicast address, like 239.255.42.99?<br />
<br />
Thanks,<br />
<br />
yvan]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Download Html]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=9016</link>
			<pubDate>Tue, 10 May 2016 09:33:20 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=9016</guid>
			<description><![CDATA[Hello, <br />
<br />
I'm working for download the news for a launcher, but i have a problem.<br />
<br />
I receive my News in my launcher with download but, i can receive this caracter: "é, à,è".<br />
<br />
this is my code : <br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>if( downloadNews.state() == DWNL_DONE)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //FileText f2(download.data(),&nbsp;&nbsp;download.size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileText f2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f2.readMem(downloadNews.data(),&nbsp;&nbsp;downloadNews.totalSize());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; messages = f2.getAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Gui.msgBox(S, messages);&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;downloadNews.del();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test.code(messages);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br />
&nbsp;&nbsp; }</code></div></div>
<br />
the web serveur, i can read: <br />
<blockquote><cite>Quote:</cite>é<br />
<br />
News test<br />
<br />
Nous sommes désolé mais nous travaillons actuellement sur la mise en place des news.<br />
<br />
Il y a des é à è !<br />
<br />
news 2</blockquote>
<br />
but in the game i receive: <a href="http://www.hostingpics.net/viewer.php?id=596164Sanstitre.png" target="_blank"><img src="http://img15.hostingpics.net/pics/596164Sanstitre.png" border="0" alt="[Image: 596164Sanstitre.png]" /></a><br />
<br />
i don't understand why.<br />
<br />
And i have a problem for place the text of top, when the texte size change. <br />
<br />
thank you for your help<br />
<hr />
I'm think i need UTF-8]]></description>
			<content:encoded><![CDATA[Hello, <br />
<br />
I'm working for download the news for a launcher, but i have a problem.<br />
<br />
I receive my News in my launcher with download but, i can receive this caracter: "é, à,è".<br />
<br />
this is my code : <br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>if( downloadNews.state() == DWNL_DONE)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //FileText f2(download.data(),&nbsp;&nbsp;download.size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileText f2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f2.readMem(downloadNews.data(),&nbsp;&nbsp;downloadNews.totalSize());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; messages = f2.getAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Gui.msgBox(S, messages);&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;downloadNews.del();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test.code(messages);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br />
&nbsp;&nbsp; }</code></div></div>
<br />
the web serveur, i can read: <br />
<blockquote><cite>Quote:</cite>é<br />
<br />
News test<br />
<br />
Nous sommes désolé mais nous travaillons actuellement sur la mise en place des news.<br />
<br />
Il y a des é à è !<br />
<br />
news 2</blockquote>
<br />
but in the game i receive: <a href="http://www.hostingpics.net/viewer.php?id=596164Sanstitre.png" target="_blank"><img src="http://img15.hostingpics.net/pics/596164Sanstitre.png" border="0" alt="[Image: 596164Sanstitre.png]" /></a><br />
<br />
i don't understand why.<br />
<br />
And i have a problem for place the text of top, when the texte size change. <br />
<br />
thank you for your help<br />
<hr />
I'm think i need UTF-8]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Receive Http information]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8967</link>
			<pubDate>Tue, 22 Mar 2016 15:49:32 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8967</guid>
			<description><![CDATA[Hello,<br />
<br />
I'm trying to receive information for a web Server but, i can connect on the server, but i can't receive information. I'm starting with socket, can you help me? Thank you so mutch.  <br />
<br />
i'm try this: <br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>newsSockAdd.setHost("google.be", 80);<br />
&nbsp;&nbsp; newsSock.createTcp(newsSockAdd);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; newsSock.bind(newsSockAdd);<br />
&nbsp;&nbsp; newsSock.block(false);<br />
&nbsp;&nbsp; Byte data[1024];<br />
&nbsp;&nbsp; int test = newsSock.receive(&amp;data, 1024);</code></div></div>
<br />
But i receive nothing.<br />
thank you for your help]]></description>
			<content:encoded><![CDATA[Hello,<br />
<br />
I'm trying to receive information for a web Server but, i can connect on the server, but i can't receive information. I'm starting with socket, can you help me? Thank you so mutch.  <br />
<br />
i'm try this: <br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>newsSockAdd.setHost("google.be", 80);<br />
&nbsp;&nbsp; newsSock.createTcp(newsSockAdd);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; newsSock.bind(newsSockAdd);<br />
&nbsp;&nbsp; newsSock.block(false);<br />
&nbsp;&nbsp; Byte data[1024];<br />
&nbsp;&nbsp; int test = newsSock.receive(&amp;data, 1024);</code></div></div>
<br />
But i receive nothing.<br />
thank you for your help]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Host without port forwarding]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8946</link>
			<pubDate>Wed, 17 Feb 2016 13:56:34 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8946</guid>
			<description><![CDATA[Is it possible to host a server with the port closed but can be joined by other client?<br />
<br />
BTW, I'm not sure how it called, UPnP? NAPT?]]></description>
			<content:encoded><![CDATA[Is it possible to host a server with the port closed but can be joined by other client?<br />
<br />
BTW, I'm not sure how it called, UPnP? NAPT?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[send mail from windows server]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8927</link>
			<pubDate>Wed, 06 Jan 2016 19:11:49 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8927</guid>
			<description><![CDATA[I thought i'd share this little piece of code. On linux you can use sendmail to send an email, but this is not available on a windows server. But you can send an email like this:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #007700">if(</span><span style="color: #0000BB">SendMailSupported</span><span style="color: #007700">())<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">SendMail</span><span style="color: #007700">(</span><span style="color: #0000BB">fromName</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">fromMail</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">client</span><span style="color: #007700">.</span><span style="color: #0000BB">recoveryID</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">mail</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">subject</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">message</span><span style="color: #007700">);<br />}&nbsp;else<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">log</span><span style="color: #007700">(</span><span style="color: #0000BB">S&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"no&nbsp;sendmail&nbsp;support.&nbsp;Saving&nbsp;message&nbsp;for&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">client</span><span style="color: #007700">.</span><span style="color: #0000BB">recoveryID</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Str&nbsp;filename&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">FFirst</span><span style="color: #007700">(</span><span style="color: #DD0000">"C:/inetpub/mailroot/Pickup/recover"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"txt"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Str&nbsp;fileOnly&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">SkipStartPath</span><span style="color: #007700">(</span><span style="color: #0000BB">filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"C:/inetpub/mailroot/Pickup/"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">bool&nbsp;fileReady&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">FileText&nbsp;f</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">write</span><span style="color: #007700">(</span><span style="color: #0000BB">fileOnly</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">ANSI</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putLine</span><span style="color: #007700">(</span><span style="color: #0000BB">S&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"From:&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">fromName&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"&nbsp;&lt;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">fromMail&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"&gt;"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putLine</span><span style="color: #007700">(</span><span style="color: #0000BB">S&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"To:&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">client</span><span style="color: #007700">.</span><span style="color: #0000BB">recoveryID&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"&nbsp;&lt;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">mail&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"&gt;"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putLine</span><span style="color: #007700">(</span><span style="color: #0000BB">S&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"Subject:&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">subject</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putLine</span><span style="color: #007700">(</span><span style="color: #0000BB">S</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putText</span><span style="color: #007700">(</span><span style="color: #0000BB">message</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putLine</span><span style="color: #007700">(</span><span style="color: #0000BB">S</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putLine</span><span style="color: #007700">(</span><span style="color: #DD0000">"."</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">flush</span><span style="color: #007700">())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">log</span><span style="color: #007700">(</span><span style="color: #DD0000">"Failed&nbsp;to&nbsp;send&nbsp;mail.&nbsp;Failed&nbsp;to&nbsp;flush&nbsp;file&nbsp;to&nbsp;disk."</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;</span><span style="color: #0000BB">fileReady&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">log</span><span style="color: #007700">(</span><span style="color: #DD0000">"Failed&nbsp;to&nbsp;send&nbsp;mail.&nbsp;Failed&nbsp;to&nbsp;open&nbsp;file&nbsp;for&nbsp;writing."</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">fileReady&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;!</span><span style="color: #0000BB">FRename</span><span style="color: #007700">(</span><span style="color: #0000BB">fileOnly</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">filename</span><span style="color: #007700">))<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">log</span><span style="color: #007700">(</span><span style="color: #DD0000">"Failed&nbsp;to&nbsp;send&nbsp;mail.&nbsp;Failed&nbsp;to&nbsp;move&nbsp;to&nbsp;pickup&nbsp;dir."</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">FDelFile</span><span style="color: #007700">(</span><span style="color: #0000BB">fileOnly</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />}&nbsp;<br /></span></code></div></div></div>
<br />
This assumes you have an smtp server installed and the user running your application has write access to C:/inetpub/mailroot/Pickup/<br />
<br />
A few notable points are:<br />
<br />
- You can't write to the pickup directory in one go. The file will be picked up by the system before you've completed writing to it.<br />
- For some reason my files did not get sent in UTF8 or UTF16.<br />
- Mind the emtpy line and a dot on a separate line after the actual message.<br />
- The file must be closed before moving (renaming). In this example i've made sure this is the case by using extra braces.]]></description>
			<content:encoded><![CDATA[I thought i'd share this little piece of code. On linux you can use sendmail to send an email, but this is not available on a windows server. But you can send an email like this:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #007700">if(</span><span style="color: #0000BB">SendMailSupported</span><span style="color: #007700">())<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">SendMail</span><span style="color: #007700">(</span><span style="color: #0000BB">fromName</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">fromMail</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">client</span><span style="color: #007700">.</span><span style="color: #0000BB">recoveryID</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">mail</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">subject</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">message</span><span style="color: #007700">);<br />}&nbsp;else<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">log</span><span style="color: #007700">(</span><span style="color: #0000BB">S&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"no&nbsp;sendmail&nbsp;support.&nbsp;Saving&nbsp;message&nbsp;for&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">client</span><span style="color: #007700">.</span><span style="color: #0000BB">recoveryID</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Str&nbsp;filename&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">FFirst</span><span style="color: #007700">(</span><span style="color: #DD0000">"C:/inetpub/mailroot/Pickup/recover"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"txt"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Str&nbsp;fileOnly&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">SkipStartPath</span><span style="color: #007700">(</span><span style="color: #0000BB">filename</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"C:/inetpub/mailroot/Pickup/"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">bool&nbsp;fileReady&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">FileText&nbsp;f</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">write</span><span style="color: #007700">(</span><span style="color: #0000BB">fileOnly</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">ANSI</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putLine</span><span style="color: #007700">(</span><span style="color: #0000BB">S&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"From:&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">fromName&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"&nbsp;&lt;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">fromMail&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"&gt;"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putLine</span><span style="color: #007700">(</span><span style="color: #0000BB">S&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"To:&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">client</span><span style="color: #007700">.</span><span style="color: #0000BB">recoveryID&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"&nbsp;&lt;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">mail&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"&gt;"</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putLine</span><span style="color: #007700">(</span><span style="color: #0000BB">S&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"Subject:&nbsp;"&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">subject</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putLine</span><span style="color: #007700">(</span><span style="color: #0000BB">S</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putText</span><span style="color: #007700">(</span><span style="color: #0000BB">message</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putLine</span><span style="color: #007700">(</span><span style="color: #0000BB">S</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">putLine</span><span style="color: #007700">(</span><span style="color: #DD0000">"."</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!</span><span style="color: #0000BB">f</span><span style="color: #007700">.</span><span style="color: #0000BB">flush</span><span style="color: #007700">())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">log</span><span style="color: #007700">(</span><span style="color: #DD0000">"Failed&nbsp;to&nbsp;send&nbsp;mail.&nbsp;Failed&nbsp;to&nbsp;flush&nbsp;file&nbsp;to&nbsp;disk."</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;</span><span style="color: #0000BB">fileReady&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">log</span><span style="color: #007700">(</span><span style="color: #DD0000">"Failed&nbsp;to&nbsp;send&nbsp;mail.&nbsp;Failed&nbsp;to&nbsp;open&nbsp;file&nbsp;for&nbsp;writing."</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">fileReady&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;!</span><span style="color: #0000BB">FRename</span><span style="color: #007700">(</span><span style="color: #0000BB">fileOnly</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">filename</span><span style="color: #007700">))<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">log</span><span style="color: #007700">(</span><span style="color: #DD0000">"Failed&nbsp;to&nbsp;send&nbsp;mail.&nbsp;Failed&nbsp;to&nbsp;move&nbsp;to&nbsp;pickup&nbsp;dir."</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">FDelFile</span><span style="color: #007700">(</span><span style="color: #0000BB">fileOnly</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;}<br />}&nbsp;<br /></span></code></div></div></div>
<br />
This assumes you have an smtp server installed and the user running your application has write access to C:/inetpub/mailroot/Pickup/<br />
<br />
A few notable points are:<br />
<br />
- You can't write to the pickup directory in one go. The file will be picked up by the system before you've completed writing to it.<br />
- For some reason my files did not get sent in UTF8 or UTF16.<br />
- Mind the emtpy line and a dot on a separate line after the actual message.<br />
- The file must be closed before moving (renaming). In this example i've made sure this is the case by using extra braces.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Amount of network connections [Solved]]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8639</link>
			<pubDate>Mon, 14 Sep 2015 18:48:10 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8639</guid>
			<description><![CDATA[Hello!<br />
<br />
I have the strange situation after moving to Windows 10. When i run EE editor, my Game Server and Client, Client says to me that i can't connect to my Server. I tried to connect to my PostgreSQL server and it said the following:<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2796" target="_blank">image_2015-09-14_21-21-38.png</a> (Size: 7.03 KB / Downloads: 122)
<!-- end: postbit_attachments_attachment --><br />
<br />
I triet to search the internet, but it said the following:<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2797" target="_blank">image_2015-09-14_21-22-39.png</a> (Size: 49.1 KB / Downloads: 122)
<!-- end: postbit_attachments_attachment --><br />
<br />
There was no such behavior on Windows 7. I started investigating the problem, i closed my Server, Client and EE Editor and my connection returned!<br />
So i downloaded TCPView and that's what i saw there:<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2798" target="_blank">ee_network.png</a> (Size: 26.36 KB / Downloads: 122)
<!-- end: postbit_attachments_attachment --><br />
<br />
But when closing all EE apps, it told me the following:<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2799" target="_blank">no_ee_network.png</a> (Size: 40.55 KB / Downloads: 122)
<!-- end: postbit_attachments_attachment --><br />
<br />
264 Endpoints (!!!) vs just 30. And with EE they continued growing.<br />
<br />
It seems like Windows <span style="font-style: italic;">(10 or all versions)</span> have a limitation of <span style="text-decoration: underline;">500 Endpoints</span> <span style="font-style: italic;">(as they are called in TCPView, left bottom corner)</span> and when I start EE Editor or my Game Server, which has only one [b]ConnectionServer[b] class, it starts to spam with new connections and makes whole computer network stop.<br />
<br />
Do you know why is that? <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="smile" title="smile" />]]></description>
			<content:encoded><![CDATA[Hello!<br />
<br />
I have the strange situation after moving to Windows 10. When i run EE editor, my Game Server and Client, Client says to me that i can't connect to my Server. I tried to connect to my PostgreSQL server and it said the following:<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2796" target="_blank">image_2015-09-14_21-21-38.png</a> (Size: 7.03 KB / Downloads: 122)
<!-- end: postbit_attachments_attachment --><br />
<br />
I triet to search the internet, but it said the following:<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2797" target="_blank">image_2015-09-14_21-22-39.png</a> (Size: 49.1 KB / Downloads: 122)
<!-- end: postbit_attachments_attachment --><br />
<br />
There was no such behavior on Windows 7. I started investigating the problem, i closed my Server, Client and EE Editor and my connection returned!<br />
So i downloaded TCPView and that's what i saw there:<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2798" target="_blank">ee_network.png</a> (Size: 26.36 KB / Downloads: 122)
<!-- end: postbit_attachments_attachment --><br />
<br />
But when closing all EE apps, it told me the following:<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=2799" target="_blank">no_ee_network.png</a> (Size: 40.55 KB / Downloads: 122)
<!-- end: postbit_attachments_attachment --><br />
<br />
264 Endpoints (!!!) vs just 30. And with EE they continued growing.<br />
<br />
It seems like Windows <span style="font-style: italic;">(10 or all versions)</span> have a limitation of <span style="text-decoration: underline;">500 Endpoints</span> <span style="font-style: italic;">(as they are called in TCPView, left bottom corner)</span> and when I start EE Editor or my Game Server, which has only one [b]ConnectionServer[b] class, it starts to spam with new connections and makes whole computer network stop.<br />
<br />
Do you know why is that? <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="smile" title="smile" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[MSSQL and UID]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8538</link>
			<pubDate>Sat, 20 Jun 2015 10:44:39 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8538</guid>
			<description><![CDATA[What would be the propper way of saving and loading out of mssql for UID values?<br />
Atm im using a "bigint" to store the UID value into in mssql but it does not seem to work all that well <img src="images/smilies/pfft.gif" style="vertical-align: middle;" border="0" alt="pfft" title="pfft" /> as when i get it back out the object where the UID came from is unfindable.]]></description>
			<content:encoded><![CDATA[What would be the propper way of saving and loading out of mssql for UID values?<br />
Atm im using a "bigint" to store the UID value into in mssql but it does not seem to work all that well <img src="images/smilies/pfft.gif" style="vertical-align: middle;" border="0" alt="pfft" title="pfft" /> as when i get it back out the object where the UID came from is unfindable.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Network problems while server is running]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8494</link>
			<pubDate>Fri, 15 May 2015 03:05:04 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8494</guid>
			<description><![CDATA[I've just noticed that the collaborative development server application kills network connections from my machine as well as others on the network?.. me and my wife been having a lot of internet issues the past few days. Just earlier i found out the culprit which has been the server i have been running on my pc. i could barely connect to any websites with the server running and as soon as i shut it down any problems disappear.. started the server back up.. bang problems started straight away again. On any browser (Chrome IE and Firefox) it will give a connection error on almost all websites.]]></description>
			<content:encoded><![CDATA[I've just noticed that the collaborative development server application kills network connections from my machine as well as others on the network?.. me and my wife been having a lot of internet issues the past few days. Just earlier i found out the culprit which has been the server i have been running on my pc. i could barely connect to any websites with the server running and as soon as i shut it down any problems disappear.. started the server back up.. bang problems started straight away again. On any browser (Chrome IE and Firefox) it will give a connection error on almost all websites.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How transfer pathWorld server to client ?]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8480</link>
			<pubDate>Fri, 08 May 2015 23:23:11 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8480</guid>
			<description><![CDATA[hey so im coming to you, simply to ask, how would you pass a pathWorld from a client to a server to archieved a link between my ai client side and server side on their movement.<br />
<br />
i'd like to handle the fact that when a item got set in the client/server side, the other one understand it without communication and have a sync every couple minutes to make sure they are similar (for exemple)<br />
<br />
this would be to avoid killing the bandwidth on large regions, but maybe someone has a better idea ?<br />
<br />
when i create my pathworld into my world, my region seems to not have any knowledge of it and the data disapear, someone knows why ?<br />
<br />
ps: i am using inesis base with modified coding<br />
<br />
Thanks]]></description>
			<content:encoded><![CDATA[hey so im coming to you, simply to ask, how would you pass a pathWorld from a client to a server to archieved a link between my ai client side and server side on their movement.<br />
<br />
i'd like to handle the fact that when a item got set in the client/server side, the other one understand it without communication and have a sync every couple minutes to make sure they are similar (for exemple)<br />
<br />
this would be to avoid killing the bandwidth on large regions, but maybe someone has a better idea ?<br />
<br />
when i create my pathworld into my world, my region seems to not have any knowledge of it and the data disapear, someone knows why ?<br />
<br />
ps: i am using inesis base with modified coding<br />
<br />
Thanks]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[getting bytes from sqLite]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8340</link>
			<pubDate>Mon, 09 Feb 2015 21:52:43 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8340</guid>
			<description><![CDATA[Hi,<br />
<br />
it's not a big issue, but I don't think this behaviour is intended:<br />
<br />
Suppose you have a table with a column which accepts a byte:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">columns</span><span style="color: #007700">.New().</span><span style="color: #0000BB">set</span><span style="color: #007700">(</span><span style="color: #DD0000">"value"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SDT_BYTE</span><span style="color: #007700">)&nbsp;<br /></span></code></div></div></div>
<br />
I would suppose this would be the way to retrieve it:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">byte&nbsp;value</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">sql</span><span style="color: #007700">.</span><span style="color: #0000BB">getCol</span><span style="color: #007700">(</span><span style="color: #0000BB">3</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">value</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div>
<br />
But this triggers an error:  Memp.setNum does not support PTR mode.<br />
<br />
A column can contain a byte, but it cannot be loaded as one. That's not very logical, right?<br />
<br />
It doesn't matter that much, but once in a while I forget why I get this error and spend half an hour examining my table and query <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="smile" title="smile" /><br />
<br />
Regards,<br />
<br />
yvan]]></description>
			<content:encoded><![CDATA[Hi,<br />
<br />
it's not a big issue, but I don't think this behaviour is intended:<br />
<br />
Suppose you have a table with a column which accepts a byte:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">columns</span><span style="color: #007700">.New().</span><span style="color: #0000BB">set</span><span style="color: #007700">(</span><span style="color: #DD0000">"value"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SDT_BYTE</span><span style="color: #007700">)&nbsp;<br /></span></code></div></div></div>
<br />
I would suppose this would be the way to retrieve it:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">byte&nbsp;value</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">sql</span><span style="color: #007700">.</span><span style="color: #0000BB">getCol</span><span style="color: #007700">(</span><span style="color: #0000BB">3</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">value</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div>
<br />
But this triggers an error:  Memp.setNum does not support PTR mode.<br />
<br />
A column can contain a byte, but it cannot be loaded as one. That's not very logical, right?<br />
<br />
It doesn't matter that much, but once in a while I forget why I get this error and spend half an hour examining my table and query <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="smile" title="smile" /><br />
<br />
Regards,<br />
<br />
yvan]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[my fault] Pak + sqlite]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8238</link>
			<pubDate>Sun, 28 Dec 2014 11:36:46 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8238</guid>
			<description><![CDATA[Hello!<br />
<br />
I faced a problem, is there a way to read sqlite database if it is inside a Pak?<br />
<span style="font-weight: bold;">FExist()</span> finds a file in Pak, but sqlite creates empty DB with the same name near my EXE.<br />
<br />
In headers description <span style="font-weight: bold;">connectSQLite()</span> performs project data connection<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>// file exists only in project data, try to connect in read-only mode using callbacks</code></div></div>
<br />
UPD1:<br />
<br />
According to your <span style="font-weight: bold;">SQLite VFS</span> implementation, it should work...]]></description>
			<content:encoded><![CDATA[Hello!<br />
<br />
I faced a problem, is there a way to read sqlite database if it is inside a Pak?<br />
<span style="font-weight: bold;">FExist()</span> finds a file in Pak, but sqlite creates empty DB with the same name near my EXE.<br />
<br />
In headers description <span style="font-weight: bold;">connectSQLite()</span> performs project data connection<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>// file exists only in project data, try to connect in read-only mode using callbacks</code></div></div>
<br />
UPD1:<br />
<br />
According to your <span style="font-weight: bold;">SQLite VFS</span> implementation, it should work...]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Connection.updateState()]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8229</link>
			<pubDate>Tue, 23 Dec 2014 19:53:33 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8229</guid>
			<description><![CDATA[Hello!<br />
<br />
I faced an issue, i take the following code (it's too small to export it as a project):<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Connection conn;<br />
Thread t;<br />
<br />
void InitPre() <br />
{<br />
&nbsp;&nbsp; EE_INIT();<br />
}<br />
<br />
bool Init() // initialize after engine is ready<br />
{<br />
&nbsp;&nbsp; t.create(connect, 0, 10000);<br />
&nbsp;&nbsp; return true;<br />
}<br />
<br />
void Shut()<br />
{<br />
&nbsp;&nbsp; t.del();<br />
}<br />
<br />
bool Update()<br />
{<br />
&nbsp;&nbsp; if(conn.receive(0))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(conn.data.getInt())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 0: break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 1: break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; if(Kb.bp(KB_ESC))return false;<br />
&nbsp;&nbsp; return true;<br />
}<br />
<br />
void Draw()<br />
{<br />
&nbsp;&nbsp; D.clear(TURQ);<br />
&nbsp;&nbsp; D.text (0, 0, "Hello to Esenthel Engine !");<br />
}<br />
<br />
Bool connect(Thread &amp;thread_caller)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(conn.state() != CONNECT_GREETED)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SockAddr server;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server.ip&nbsp;&nbsp;("127.0.0.1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server.port(7777);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.clientConnectToServer(server);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.updateState(5000);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;return true;<br />
}</code></div></div>
<br />
I do Connection.updateState() in thread because i don't want my window to hang during connection. From time to time <span style="font-style: italic;">(sometimes at application launch time, sometimes after 40 seconds, sometimes more)</span> application crashes - unable to allocate some memory. I think it's because main thread and secondary thread call <span style="font-weight: bold;">conn.receive(0)</span> and <span style="font-weight: bold;">conn.updateState(5000)</span> simultaneously. <br />
<br />
Is it right to use it like that or not? <br />
<br />
How to avoid crashes if i need to wait for connection to be greeted in thread?<br />
<br />
Please help <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="smile" title="smile" />]]></description>
			<content:encoded><![CDATA[Hello!<br />
<br />
I faced an issue, i take the following code (it's too small to export it as a project):<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Connection conn;<br />
Thread t;<br />
<br />
void InitPre() <br />
{<br />
&nbsp;&nbsp; EE_INIT();<br />
}<br />
<br />
bool Init() // initialize after engine is ready<br />
{<br />
&nbsp;&nbsp; t.create(connect, 0, 10000);<br />
&nbsp;&nbsp; return true;<br />
}<br />
<br />
void Shut()<br />
{<br />
&nbsp;&nbsp; t.del();<br />
}<br />
<br />
bool Update()<br />
{<br />
&nbsp;&nbsp; if(conn.receive(0))<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(conn.data.getInt())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 0: break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 1: break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; if(Kb.bp(KB_ESC))return false;<br />
&nbsp;&nbsp; return true;<br />
}<br />
<br />
void Draw()<br />
{<br />
&nbsp;&nbsp; D.clear(TURQ);<br />
&nbsp;&nbsp; D.text (0, 0, "Hello to Esenthel Engine !");<br />
}<br />
<br />
Bool connect(Thread &amp;thread_caller)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(conn.state() != CONNECT_GREETED)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SockAddr server;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server.ip&nbsp;&nbsp;("127.0.0.1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server.port(7777);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.clientConnectToServer(server);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.updateState(5000);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;return true;<br />
}</code></div></div>
<br />
I do Connection.updateState() in thread because i don't want my window to hang during connection. From time to time <span style="font-style: italic;">(sometimes at application launch time, sometimes after 40 seconds, sometimes more)</span> application crashes - unable to allocate some memory. I think it's because main thread and secondary thread call <span style="font-weight: bold;">conn.receive(0)</span> and <span style="font-weight: bold;">conn.updateState(5000)</span> simultaneously. <br />
<br />
Is it right to use it like that or not? <br />
<br />
How to avoid crashes if i need to wait for connection to be greeted in thread?<br />
<br />
Please help <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="smile" title="smile" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[SQL::getRowsCols]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8058</link>
			<pubDate>Thu, 16 Oct 2014 15:28:12 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8058</guid>
			<description><![CDATA[Another small suggestion :-)<br />
<br />
In the SQL::getRowsCols function, esenthel always requires a where clause. This is not always needed because you might want to retrieve all values in a particular column. For example something like this:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">SQL</span><span style="color: #007700">.</span><span style="color: #0000BB">getRowsCols</span><span style="color: #007700">(</span><span style="color: #DD0000">"accounts"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">S</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">Memc</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">Str</span><span style="color: #007700">&gt;().New()&nbsp;=&nbsp;</span><span style="color: #DD0000">"accountName"</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div>
<br />
.. wont work because there's an empty condition. I can solve this by using tricks like:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">SQL</span><span style="color: #007700">.</span><span style="color: #0000BB">getRowsCols</span><span style="color: #007700">(</span><span style="color: #DD0000">"accounts"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">S&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"ID&nbsp;&gt;&nbsp;-1"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">Memc</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">Str</span><span style="color: #007700">&gt;().New()&nbsp;=&nbsp;</span><span style="color: #DD0000">"accountName"</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div>
<br />
or perhaps:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">SQL</span><span style="color: #007700">.</span><span style="color: #0000BB">getRowsCols</span><span style="color: #007700">(</span><span style="color: #DD0000">"accounts"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">S&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"accountName&nbsp;LIKE&nbsp;'_'"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">Memc</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">Str</span><span style="color: #007700">&gt;().New()&nbsp;=&nbsp;</span><span style="color: #DD0000">"accountName"</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div>
<br />
but both are non optimal because they have to check every line and see if it fits the condition. (Or are there optimisations at DB level I'm not aware of?)<br />
<br />
I think there would be a speed benefit if you drop the entire where clause when the condition is an empty string.<br />
<br />
Regards,<br />
<br />
yvan]]></description>
			<content:encoded><![CDATA[Another small suggestion :-)<br />
<br />
In the SQL::getRowsCols function, esenthel always requires a where clause. This is not always needed because you might want to retrieve all values in a particular column. For example something like this:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">SQL</span><span style="color: #007700">.</span><span style="color: #0000BB">getRowsCols</span><span style="color: #007700">(</span><span style="color: #DD0000">"accounts"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">S</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">Memc</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">Str</span><span style="color: #007700">&gt;().New()&nbsp;=&nbsp;</span><span style="color: #DD0000">"accountName"</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div>
<br />
.. wont work because there's an empty condition. I can solve this by using tricks like:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">SQL</span><span style="color: #007700">.</span><span style="color: #0000BB">getRowsCols</span><span style="color: #007700">(</span><span style="color: #DD0000">"accounts"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">S&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"ID&nbsp;&gt;&nbsp;-1"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">Memc</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">Str</span><span style="color: #007700">&gt;().New()&nbsp;=&nbsp;</span><span style="color: #DD0000">"accountName"</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div>
<br />
or perhaps:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">SQL</span><span style="color: #007700">.</span><span style="color: #0000BB">getRowsCols</span><span style="color: #007700">(</span><span style="color: #DD0000">"accounts"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">S&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #DD0000">"accountName&nbsp;LIKE&nbsp;'_'"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">Memc</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">Str</span><span style="color: #007700">&gt;().New()&nbsp;=&nbsp;</span><span style="color: #DD0000">"accountName"</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div>
<br />
but both are non optimal because they have to check every line and see if it fits the condition. (Or are there optimisations at DB level I'm not aware of?)<br />
<br />
I think there would be a speed benefit if you drop the entire where clause when the condition is an empty string.<br />
<br />
Regards,<br />
<br />
yvan]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Questions concerning what you can do with Esenthel on the Server.]]></title>
			<link>https://esenthel.com/forum/showthread.php?tid=8002</link>
			<pubDate>Sun, 21 Sep 2014 02:39:41 +0000</pubDate>
			<guid isPermaLink="false">https://esenthel.com/forum/showthread.php?tid=8002</guid>
			<description><![CDATA[Got a few questions concerning the limits of Esenthel on a Dedicated Server with no Graphics Card.<br />
<br />
1) First would you be able to load a World that you had created in the Editor on a Server and use it for Server side Physics/Collision Detection, Path Finding, AI, ect.? Or would you need to have a graphics card on the Server in order to be able to do that?<br />
<br />
2) If you could Load a World on the Server would you then be able to send the Client the Data for the World so that the Server controls what the Players see so the world couldn't be hacked?<br />
<br />
Thanks.]]></description>
			<content:encoded><![CDATA[Got a few questions concerning the limits of Esenthel on a Dedicated Server with no Graphics Card.<br />
<br />
1) First would you be able to load a World that you had created in the Editor on a Server and use it for Server side Physics/Collision Detection, Path Finding, AI, ect.? Or would you need to have a graphics card on the Server in order to be able to do that?<br />
<br />
2) If you could Load a World on the Server would you then be able to send the Client the Data for the World so that the Server controls what the Players see so the world couldn't be hacked?<br />
<br />
Thanks.]]></content:encoded>
		</item>
	</channel>
</rss>