<?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[ItsMods - C and C++]]></title>
		<link>https://www.itsmods.com/</link>
		<description><![CDATA[ItsMods - https://www.itsmods.com]]></description>
		<pubDate>Sat, 24 Oct 2026 09:45:03 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[[C#] Assembly]]></title>
			<link>https://www.itsmods.com/Thread-Help-C-Assembly.html</link>
			<pubDate>Thu, 06 Mar 2014 15:15:46 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.itsmods.com/member.php?action=profile&uid=95516">Dude</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.itsmods.com/Thread-Help-C-Assembly.html</guid>
			<description><![CDATA[Interesting, possible to cause an assembler code in c#?<br />
In with C++ I know, <div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>_asm</code></div></div>, but it is possible in c#?<br />
Thx <img src="https://www.itsmods.com/images/smilies/biggrin.gif" alt="Big Grin" title="Big Grin" class="smilie smilie_4" />]]></description>
			<content:encoded><![CDATA[Interesting, possible to cause an assembler code in c#?<br />
In with C++ I know, <div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>_asm</code></div></div>, but it is possible in c#?<br />
Thx <img src="https://www.itsmods.com/images/smilies/biggrin.gif" alt="Big Grin" title="Big Grin" class="smilie smilie_4" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[I need a tip.]]></title>
			<link>https://www.itsmods.com/Thread-Help-I-need-a-tip.html</link>
			<pubDate>Fri, 31 Jan 2014 18:19:54 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.itsmods.com/member.php?action=profile&uid=3737">Nekochan</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.itsmods.com/Thread-Help-I-need-a-tip.html</guid>
			<description><![CDATA[Hey guys,<br />
<br />
I am doing my custom networking for my engine, so I need a little help. I'm using UDP socket, but as you know ( maybe ): "udp sends a packet and you'll never know - will it reach the destination or not."<br />
<br />
So I am trying to make some kinda of "packet data check".<br />
Pseudocode:<br />
I got the struct called 'svpackets', this struct contains "char header[4];", "int clientIndex"; and 'bool clientGotMessage;'<br />
<br />
So when the server sends a message to the client, it also fills the struct like:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>svpackets[i].header[0] = CLIENT_MESSAGE_HEADER; 

// using rand to prevent message bothering
svpackets[i].header[1] = 0x3f * ( _sv.time * rand() % 0x2f + 0x4f );
svpackets[i].header[2] ... etc

svpackets[i].clientgotmessage = false; // not yet
svpackets[i].clientIndex = client.Number; // parameter

net_sendpacket(my data blablabla with svpackets.header);

++i;
if(i &gt; 30)
i = 0; .. etc</code></div></div><br />
Server runs loop, which also checks every client with svpacket, if svpacket.clientgotmessage equals TRUE, so just 'continue;'; If svpacket.clientgotmessage = false; so run timer for ~10 seconds and kick the client ( just because no packets for a long time ).<br />
<br />
Soo, when client got the message from a server with 'CLIENT_MESSAGE_HEADER' header, it sends THE SAME header, but only changes the 'header[0]' to another value, so server will know that it is "return message", where it will set "clientGotMessage" to true.<br />
The same method I've used for a clientsystem;<br />
<br />
Since I am working with networking not for so long time, I am not sure at all.<br />
It works great now, but as I've said before, I am not sure that it's good system at all, <br />
is there any tip to make it better?<br />
<br />
Here's what I got now:<br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">/*
 process client requests ( not client connect requests )
*/
</span><span style="color: #0000BB">void sv_processclient</span><span style="color: #007700">( </span><span style="color: #0000BB">netdata_t from</span><span style="color: #007700">, </span><span style="color: #0000BB">char </span><span style="color: #007700">*</span><span style="color: #0000BB">header</span><span style="color: #007700">, const </span><span style="color: #0000BB">char </span><span style="color: #007700">*</span><span style="color: #0000BB">message</span><span style="color: #007700">, const </span><span style="color: #0000BB">char </span><span style="color: #007700">*</span><span style="color: #0000BB">advanced </span><span style="color: #007700">)
{
    </span><span style="color: #0000BB">int                 i</span><span style="color: #007700">;
    </span><span style="color: #0000BB">serverclient_t      </span><span style="color: #007700">*</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">;
    </span><span style="color: #0000BB">char                </span><span style="color: #007700">*</span><span style="color: #0000BB">c_header</span><span style="color: #007700">;
    
    
    </span><span style="color: #FF8000">// ignore connectionless packets
    </span><span style="color: #007700">if( </span><span style="color: #0000BB">sv_checkmagic</span><span style="color: #007700">( </span><span style="color: #0000BB">header</span><span style="color: #007700">, </span><span style="color: #0000BB">NET_OOB_BYTE1 </span><span style="color: #007700">) )
        return;
    
    </span><span style="color: #FF8000">// ignore client requests
    </span><span style="color: #007700">if( </span><span style="color: #0000BB">sv_checkmagic</span><span style="color: #007700">( </span><span style="color: #0000BB">header</span><span style="color: #007700">, </span><span style="color: #0000BB">CL_COMMAND_MAGIC </span><span style="color: #007700">) &amp;&amp; </span><span style="color: #0000BB">cl_running</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">integer</span><span style="color: #007700">)
        return;
    
    </span><span style="color: #FF8000">// ignore server commands
    </span><span style="color: #007700">if( </span><span style="color: #0000BB">sv_checkmagic</span><span style="color: #007700">( </span><span style="color: #0000BB">header</span><span style="color: #007700">, </span><span style="color: #0000BB">SVCL_COMMAND_MAGIC1 </span><span style="color: #007700">) )
        return;
    
    </span><span style="color: #FF8000">// find the client
    </span><span style="color: #0000BB">p_temp </span><span style="color: #007700">= </span><span style="color: #0000BB">sv_getclientbyip</span><span style="color: #007700">( </span><span style="color: #0000BB">from</span><span style="color: #007700">.</span><span style="color: #0000BB">sockaddress </span><span style="color: #007700">);
    
    if(!</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">)
    {
        </span><span style="color: #0000BB">com_print</span><span style="color: #007700">(</span><span style="color: #DD0000">"sv_processclient: couldn't find client by an ip address&#092;n"</span><span style="color: #007700">);
        return;
    }
    
    </span><span style="color: #FF8000">// client must be connected! ( not even 'connecting' )
    </span><span style="color: #007700">if(</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">state </span><span style="color: #007700">!= </span><span style="color: #0000BB">SVCL_CONNECTED</span><span style="color: #007700">)                                                                                                         </span><span style="color: #FF8000">// just an empty slot
        </span><span style="color: #007700">return;

    if(</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">type </span><span style="color: #007700">== </span><span style="color: #0000BB">NA_BOT</span><span style="color: #007700">)                                                                                                                  </span><span style="color: #FF8000">// we don't need to
        </span><span style="color: #007700">return;

    
    switch (</span><span style="color: #0000BB">header</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]) {
        </span><span style="color: #FF8000">//
        // css packet apply
        //
        </span><span style="color: #007700">case (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">SVCL_COMMAND_MAGIC5</span><span style="color: #007700">:
            for( </span><span style="color: #0000BB">i </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">i </span><span style="color: #007700">&lt; </span><span style="color: #0000BB">MAX_COMMAND_SEQUENCE</span><span style="color: #007700">; </span><span style="color: #0000BB">i</span><span style="color: #007700">++ )                                                                                         </span><span style="color: #FF8000">// using 'MAX_COMMAND_SEQUENCE' since _sv.cmdIndex could get reset at the same time, so loop thru every entry
            </span><span style="color: #007700">{
                if( (</span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">clientId </span><span style="color: #007700">== </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">clients</span><span style="color: #007700">[</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">].</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">) &amp;&amp; </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">used </span><span style="color: #007700">)                    </span><span style="color: #FF8000">// check used css and owner of css
                </span><span style="color: #007700">{
                    </span><span style="color: #FF8000">// MAGIC5 is a client identificator
                    </span><span style="color: #007700">if( ((</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">encodedMsg</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">] == (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">header</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">] &amp;&amp;                                                          </span><span style="color: #FF8000">// indentify by the header
                         </span><span style="color: #007700">(</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">encodedMsg</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">] == (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">header</span><span style="color: #007700">[</span><span style="color: #0000BB">2</span><span style="color: #007700">] &amp;&amp;
                         (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">encodedMsg</span><span style="color: #007700">[</span><span style="color: #0000BB">2</span><span style="color: #007700">] == (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">header</span><span style="color: #007700">[</span><span style="color: #0000BB">3</span><span style="color: #007700">] &amp;&amp;
                         (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">encodedMsg</span><span style="color: #007700">[</span><span style="color: #0000BB">3</span><span style="color: #007700">] == (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">header</span><span style="color: #007700">[</span><span style="color: #0000BB">4</span><span style="color: #007700">] ))
                    {
                        </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">clients</span><span style="color: #007700">[</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">].</span><span style="color: #0000BB">lastCommandTime    </span><span style="color: #007700">= </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">time</span><span style="color: #007700">;
                        </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">clients</span><span style="color: #007700">[</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">].</span><span style="color: #0000BB">commandIndex</span><span style="color: #007700">++;
                        
                        </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">index           </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">;
                        </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">recvtime        </span><span style="color: #007700">= </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">clients</span><span style="color: #007700">[</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">].</span><span style="color: #0000BB">lastCommandTime</span><span style="color: #007700">;
                        </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">used            </span><span style="color: #007700">= </span><span style="color: #0000BB">false</span><span style="color: #007700">;
                        
                        </span><span style="color: #FF8000">// so we don't need it anymore for current client
                        //sv_resetsequence( _sv.cmd_sequence[i] );
                        //_sv.cmdIndex--;
                    </span><span style="color: #007700">}
                }
            }
        return;
        
        </span><span style="color: #FF8000">//
        // client commands
        //
        </span><span style="color: #007700">case (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">CL_HEADER_MAGIC</span><span style="color: #007700">:
            
            </span><span style="color: #0000BB">c_header </span><span style="color: #007700">= </span><span style="color: #0000BB">net_cmp4header</span><span style="color: #007700">( </span><span style="color: #0000BB">CL_COMMAND_MAGIC</span><span style="color: #007700">, </span><span style="color: #0000BB">header</span><span style="color: #007700">, </span><span style="color: #0000BB">1 </span><span style="color: #007700">);

            </span><span style="color: #FF8000">//
            // client commands
            //
            
            /* client sent a message, send it to everyone */
            </span><span style="color: #007700">if(!</span><span style="color: #0000BB">strcmp</span><span style="color: #007700">( </span><span style="color: #0000BB">message</span><span style="color: #007700">, </span><span style="color: #DD0000">"cl_say"</span><span style="color: #007700">))
            {
                </span><span style="color: #0000BB">sv_sendservercommand</span><span style="color: #007700">( </span><span style="color: #0000BB">NULL</span><span style="color: #007700">, </span><span style="color: #DD0000">"cl_chat &#092;"%s&#092;" &#092;"%s&#092;""</span><span style="color: #007700">, </span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name</span><span style="color: #007700">, </span><span style="color: #0000BB">advanced </span><span style="color: #007700">);
            
                </span><span style="color: #0000BB">net_sendpacket</span><span style="color: #007700">( </span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">c_header</span><span style="color: #007700">), </span><span style="color: #0000BB">c_header</span><span style="color: #007700">, </span><span style="color: #0000BB">from </span><span style="color: #007700">);
                
                return;
            }
            
            </span><span style="color: #FF8000">// we won't resend CSS just because we don't need it
            </span><span style="color: #007700">if(!</span><span style="color: #0000BB">strcmp</span><span style="color: #007700">( </span><span style="color: #0000BB">message</span><span style="color: #007700">, </span><span style="color: #DD0000">"disconnect"</span><span style="color: #007700">))
            {
                </span><span style="color: #0000BB">com_print</span><span style="color: #007700">( </span><span style="color: #DD0000">"%s disconnected&#092;n"</span><span style="color: #007700">, </span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name </span><span style="color: #007700">);
                
                </span><span style="color: #0000BB">sv_dropclient</span><span style="color: #007700">( </span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">, </span><span style="color: #0000BB">advanced </span><span style="color: #007700">);
            }
            
            if(!</span><span style="color: #0000BB">strcmp</span><span style="color: #007700">( </span><span style="color: #0000BB">message</span><span style="color: #007700">, </span><span style="color: #DD0000">"cl_reconnect"</span><span style="color: #007700">))
            {
                </span><span style="color: #FF8000">// TODO
                </span><span style="color: #007700">return;
            }

            return;

        </span><span style="color: #FF8000">//
        // unrecognized packets
        //
        </span><span style="color: #007700">default:
            </span><span style="color: #0000BB">com_print</span><span style="color: #007700">(</span><span style="color: #DD0000">"WARNING: unknown packet data from '%s'&#092;n"</span><span style="color: #007700">, </span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name</span><span style="color: #007700">);
            </span><span style="color: #0000BB">sv_dropclient</span><span style="color: #007700">( </span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">, </span><span style="color: #DD0000">"unknown data recieved&#092;n" </span><span style="color: #007700">);
            break;
    }
} 
</span></code></div></div></div></div></div>]]></description>
			<content:encoded><![CDATA[Hey guys,<br />
<br />
I am doing my custom networking for my engine, so I need a little help. I'm using UDP socket, but as you know ( maybe ): "udp sends a packet and you'll never know - will it reach the destination or not."<br />
<br />
So I am trying to make some kinda of "packet data check".<br />
Pseudocode:<br />
I got the struct called 'svpackets', this struct contains "char header[4];", "int clientIndex"; and 'bool clientGotMessage;'<br />
<br />
So when the server sends a message to the client, it also fills the struct like:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>svpackets[i].header[0] = CLIENT_MESSAGE_HEADER; 

// using rand to prevent message bothering
svpackets[i].header[1] = 0x3f * ( _sv.time * rand() % 0x2f + 0x4f );
svpackets[i].header[2] ... etc

svpackets[i].clientgotmessage = false; // not yet
svpackets[i].clientIndex = client.Number; // parameter

net_sendpacket(my data blablabla with svpackets.header);

++i;
if(i &gt; 30)
i = 0; .. etc</code></div></div><br />
Server runs loop, which also checks every client with svpacket, if svpacket.clientgotmessage equals TRUE, so just 'continue;'; If svpacket.clientgotmessage = false; so run timer for ~10 seconds and kick the client ( just because no packets for a long time ).<br />
<br />
Soo, when client got the message from a server with 'CLIENT_MESSAGE_HEADER' header, it sends THE SAME header, but only changes the 'header[0]' to another value, so server will know that it is "return message", where it will set "clientGotMessage" to true.<br />
The same method I've used for a clientsystem;<br />
<br />
Since I am working with networking not for so long time, I am not sure at all.<br />
It works great now, but as I've said before, I am not sure that it's good system at all, <br />
is there any tip to make it better?<br />
<br />
Here's what I got now:<br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">/*
 process client requests ( not client connect requests )
*/
</span><span style="color: #0000BB">void sv_processclient</span><span style="color: #007700">( </span><span style="color: #0000BB">netdata_t from</span><span style="color: #007700">, </span><span style="color: #0000BB">char </span><span style="color: #007700">*</span><span style="color: #0000BB">header</span><span style="color: #007700">, const </span><span style="color: #0000BB">char </span><span style="color: #007700">*</span><span style="color: #0000BB">message</span><span style="color: #007700">, const </span><span style="color: #0000BB">char </span><span style="color: #007700">*</span><span style="color: #0000BB">advanced </span><span style="color: #007700">)
{
    </span><span style="color: #0000BB">int                 i</span><span style="color: #007700">;
    </span><span style="color: #0000BB">serverclient_t      </span><span style="color: #007700">*</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">;
    </span><span style="color: #0000BB">char                </span><span style="color: #007700">*</span><span style="color: #0000BB">c_header</span><span style="color: #007700">;
    
    
    </span><span style="color: #FF8000">// ignore connectionless packets
    </span><span style="color: #007700">if( </span><span style="color: #0000BB">sv_checkmagic</span><span style="color: #007700">( </span><span style="color: #0000BB">header</span><span style="color: #007700">, </span><span style="color: #0000BB">NET_OOB_BYTE1 </span><span style="color: #007700">) )
        return;
    
    </span><span style="color: #FF8000">// ignore client requests
    </span><span style="color: #007700">if( </span><span style="color: #0000BB">sv_checkmagic</span><span style="color: #007700">( </span><span style="color: #0000BB">header</span><span style="color: #007700">, </span><span style="color: #0000BB">CL_COMMAND_MAGIC </span><span style="color: #007700">) &amp;&amp; </span><span style="color: #0000BB">cl_running</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">integer</span><span style="color: #007700">)
        return;
    
    </span><span style="color: #FF8000">// ignore server commands
    </span><span style="color: #007700">if( </span><span style="color: #0000BB">sv_checkmagic</span><span style="color: #007700">( </span><span style="color: #0000BB">header</span><span style="color: #007700">, </span><span style="color: #0000BB">SVCL_COMMAND_MAGIC1 </span><span style="color: #007700">) )
        return;
    
    </span><span style="color: #FF8000">// find the client
    </span><span style="color: #0000BB">p_temp </span><span style="color: #007700">= </span><span style="color: #0000BB">sv_getclientbyip</span><span style="color: #007700">( </span><span style="color: #0000BB">from</span><span style="color: #007700">.</span><span style="color: #0000BB">sockaddress </span><span style="color: #007700">);
    
    if(!</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">)
    {
        </span><span style="color: #0000BB">com_print</span><span style="color: #007700">(</span><span style="color: #DD0000">"sv_processclient: couldn't find client by an ip address&#092;n"</span><span style="color: #007700">);
        return;
    }
    
    </span><span style="color: #FF8000">// client must be connected! ( not even 'connecting' )
    </span><span style="color: #007700">if(</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">state </span><span style="color: #007700">!= </span><span style="color: #0000BB">SVCL_CONNECTED</span><span style="color: #007700">)                                                                                                         </span><span style="color: #FF8000">// just an empty slot
        </span><span style="color: #007700">return;

    if(</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">type </span><span style="color: #007700">== </span><span style="color: #0000BB">NA_BOT</span><span style="color: #007700">)                                                                                                                  </span><span style="color: #FF8000">// we don't need to
        </span><span style="color: #007700">return;

    
    switch (</span><span style="color: #0000BB">header</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]) {
        </span><span style="color: #FF8000">//
        // css packet apply
        //
        </span><span style="color: #007700">case (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">SVCL_COMMAND_MAGIC5</span><span style="color: #007700">:
            for( </span><span style="color: #0000BB">i </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">i </span><span style="color: #007700">&lt; </span><span style="color: #0000BB">MAX_COMMAND_SEQUENCE</span><span style="color: #007700">; </span><span style="color: #0000BB">i</span><span style="color: #007700">++ )                                                                                         </span><span style="color: #FF8000">// using 'MAX_COMMAND_SEQUENCE' since _sv.cmdIndex could get reset at the same time, so loop thru every entry
            </span><span style="color: #007700">{
                if( (</span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">clientId </span><span style="color: #007700">== </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">clients</span><span style="color: #007700">[</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">].</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">) &amp;&amp; </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">used </span><span style="color: #007700">)                    </span><span style="color: #FF8000">// check used css and owner of css
                </span><span style="color: #007700">{
                    </span><span style="color: #FF8000">// MAGIC5 is a client identificator
                    </span><span style="color: #007700">if( ((</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">encodedMsg</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">] == (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">header</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">] &amp;&amp;                                                          </span><span style="color: #FF8000">// indentify by the header
                         </span><span style="color: #007700">(</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">encodedMsg</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">] == (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">header</span><span style="color: #007700">[</span><span style="color: #0000BB">2</span><span style="color: #007700">] &amp;&amp;
                         (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">encodedMsg</span><span style="color: #007700">[</span><span style="color: #0000BB">2</span><span style="color: #007700">] == (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">header</span><span style="color: #007700">[</span><span style="color: #0000BB">3</span><span style="color: #007700">] &amp;&amp;
                         (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">encodedMsg</span><span style="color: #007700">[</span><span style="color: #0000BB">3</span><span style="color: #007700">] == (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">header</span><span style="color: #007700">[</span><span style="color: #0000BB">4</span><span style="color: #007700">] ))
                    {
                        </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">clients</span><span style="color: #007700">[</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">].</span><span style="color: #0000BB">lastCommandTime    </span><span style="color: #007700">= </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">time</span><span style="color: #007700">;
                        </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">clients</span><span style="color: #007700">[</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">].</span><span style="color: #0000BB">commandIndex</span><span style="color: #007700">++;
                        
                        </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">index           </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">;
                        </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">recvtime        </span><span style="color: #007700">= </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">clients</span><span style="color: #007700">[</span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">].</span><span style="color: #0000BB">lastCommandTime</span><span style="color: #007700">;
                        </span><span style="color: #0000BB">_sv</span><span style="color: #007700">.</span><span style="color: #0000BB">cmd_sequence</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">].</span><span style="color: #0000BB">used            </span><span style="color: #007700">= </span><span style="color: #0000BB">false</span><span style="color: #007700">;
                        
                        </span><span style="color: #FF8000">// so we don't need it anymore for current client
                        //sv_resetsequence( _sv.cmd_sequence[i] );
                        //_sv.cmdIndex--;
                    </span><span style="color: #007700">}
                }
            }
        return;
        
        </span><span style="color: #FF8000">//
        // client commands
        //
        </span><span style="color: #007700">case (</span><span style="color: #0000BB">char</span><span style="color: #007700">)</span><span style="color: #0000BB">CL_HEADER_MAGIC</span><span style="color: #007700">:
            
            </span><span style="color: #0000BB">c_header </span><span style="color: #007700">= </span><span style="color: #0000BB">net_cmp4header</span><span style="color: #007700">( </span><span style="color: #0000BB">CL_COMMAND_MAGIC</span><span style="color: #007700">, </span><span style="color: #0000BB">header</span><span style="color: #007700">, </span><span style="color: #0000BB">1 </span><span style="color: #007700">);

            </span><span style="color: #FF8000">//
            // client commands
            //
            
            /* client sent a message, send it to everyone */
            </span><span style="color: #007700">if(!</span><span style="color: #0000BB">strcmp</span><span style="color: #007700">( </span><span style="color: #0000BB">message</span><span style="color: #007700">, </span><span style="color: #DD0000">"cl_say"</span><span style="color: #007700">))
            {
                </span><span style="color: #0000BB">sv_sendservercommand</span><span style="color: #007700">( </span><span style="color: #0000BB">NULL</span><span style="color: #007700">, </span><span style="color: #DD0000">"cl_chat &#092;"%s&#092;" &#092;"%s&#092;""</span><span style="color: #007700">, </span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name</span><span style="color: #007700">, </span><span style="color: #0000BB">advanced </span><span style="color: #007700">);
            
                </span><span style="color: #0000BB">net_sendpacket</span><span style="color: #007700">( </span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">c_header</span><span style="color: #007700">), </span><span style="color: #0000BB">c_header</span><span style="color: #007700">, </span><span style="color: #0000BB">from </span><span style="color: #007700">);
                
                return;
            }
            
            </span><span style="color: #FF8000">// we won't resend CSS just because we don't need it
            </span><span style="color: #007700">if(!</span><span style="color: #0000BB">strcmp</span><span style="color: #007700">( </span><span style="color: #0000BB">message</span><span style="color: #007700">, </span><span style="color: #DD0000">"disconnect"</span><span style="color: #007700">))
            {
                </span><span style="color: #0000BB">com_print</span><span style="color: #007700">( </span><span style="color: #DD0000">"%s disconnected&#092;n"</span><span style="color: #007700">, </span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name </span><span style="color: #007700">);
                
                </span><span style="color: #0000BB">sv_dropclient</span><span style="color: #007700">( </span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">, </span><span style="color: #0000BB">advanced </span><span style="color: #007700">);
            }
            
            if(!</span><span style="color: #0000BB">strcmp</span><span style="color: #007700">( </span><span style="color: #0000BB">message</span><span style="color: #007700">, </span><span style="color: #DD0000">"cl_reconnect"</span><span style="color: #007700">))
            {
                </span><span style="color: #FF8000">// TODO
                </span><span style="color: #007700">return;
            }

            return;

        </span><span style="color: #FF8000">//
        // unrecognized packets
        //
        </span><span style="color: #007700">default:
            </span><span style="color: #0000BB">com_print</span><span style="color: #007700">(</span><span style="color: #DD0000">"WARNING: unknown packet data from '%s'&#092;n"</span><span style="color: #007700">, </span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name</span><span style="color: #007700">);
            </span><span style="color: #0000BB">sv_dropclient</span><span style="color: #007700">( </span><span style="color: #0000BB">p_temp</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clientnum</span><span style="color: #007700">, </span><span style="color: #DD0000">"unknown data recieved&#092;n" </span><span style="color: #007700">);
            break;
    }
} 
</span></code></div></div></div></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[fopen fails]]></title>
			<link>https://www.itsmods.com/Thread-Help-fopen-fails.html</link>
			<pubDate>Sun, 19 Jan 2014 12:16:39 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.itsmods.com/member.php?action=profile&uid=3737">Nekochan</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.itsmods.com/Thread-Help-fopen-fails.html</guid>
			<description><![CDATA[Hey guys,<br />
<br />
I've noticed strange error, fopen returns NULL after some <span style="font-weight: bold;" class="mycode_b">successful</span> attempts, so I don't get any file loaded.<br />
I've tried to zero it, but no luck.<br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
memset(&amp;filePtr, NULL, sizeof(FILE));</div></div>
It's just <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>filePtr = fopen(str("%s/Debug/textures/%s", fs_path-&gt;string, filename), "rb");</code></div></div><br />
'str' is <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>char* str( const char *msg, ... )
{
    va_list     argptr;
    char        text[1024];
    
    va_start(argptr, msg);
    vsnprintf(text, sizeof(text), msg, argptr);
    va_end(argptr);
    
    return text;
}</code></div></div><br />
Here's what I got after some attempts<br />
<img src="http://s020.radikal.ru/i723/1401/b8/ce5a9e2dd128.png" loading="lazy"  alt="[Image: ce5a9e2dd128.png]" class="mycode_img" /><br />
.. as you see first time it's fine, but for second time it returns '?' at the end. ( or 377/377/ and another gibrish stuff )]]></description>
			<content:encoded><![CDATA[Hey guys,<br />
<br />
I've noticed strange error, fopen returns NULL after some <span style="font-weight: bold;" class="mycode_b">successful</span> attempts, so I don't get any file loaded.<br />
I've tried to zero it, but no luck.<br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
memset(&amp;filePtr, NULL, sizeof(FILE));</div></div>
It's just <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>filePtr = fopen(str("%s/Debug/textures/%s", fs_path-&gt;string, filename), "rb");</code></div></div><br />
'str' is <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>char* str( const char *msg, ... )
{
    va_list     argptr;
    char        text[1024];
    
    va_start(argptr, msg);
    vsnprintf(text, sizeof(text), msg, argptr);
    va_end(argptr);
    
    return text;
}</code></div></div><br />
Here's what I got after some attempts<br />
<img src="http://s020.radikal.ru/i723/1401/b8/ce5a9e2dd128.png" loading="lazy"  alt="[Image: ce5a9e2dd128.png]" class="mycode_img" /><br />
.. as you see first time it's fine, but for second time it returns '?' at the end. ( or 377/377/ and another gibrish stuff )]]></content:encoded>
		</item>
	</channel>
</rss>