<?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[Dinkleberg's GMod - Guides and Information]]></title>
		<link>https://www.dinklebergsgmod.com/site/</link>
		<description><![CDATA[Dinkleberg's GMod - https://www.dinklebergsgmod.com/site]]></description>
		<pubDate>Thu, 04 Jun 2026 20:36:11 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Enable Game Recording via Steam]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=19822</link>
			<pubDate>Fri, 06 Sep 2024 16:28:07 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=336">The Chuckster</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=19822</guid>
			<description><![CDATA[So a couple of months ago, Valve rolled out an update that allows for in-game recording built into Steam itself. One could readily see the benefits of this, namely:<ul class="mycode_list"><li>Simplicity: Not having to have multiple applications open in order to record gameplay<br />
</li>
<li>Audience: Everyone who has Garry's Mod has Steam installed already which makes the scope of people potentially recording grow exponentially<br />
</li>
<li>Ease of use: The interface, while not as in depth as a program like OBS, has enough features to be good enough to use when recording for proof, funny gamer moments, or otherwise.<br />
</li>
</ul>
The only issue that presents itself is that this feature is behind the Steam Client Beta, which this guide is here to explain how to enable, as well as configure the settings to effectively record in-game. <br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Enabling the Steam Client Beta:</span></span><br />
1. Select "Steam" in the top left corner and select "Settings" in the dropdown menu.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4219" target="_blank" title="">step 1.png</a> (Size: 17.43 KB / Downloads: 96)
<!-- end: postbit_attachments_attachment --><br />
<br />
2. Under the "Steam Settings" left sidebar, select "Interface".<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4220" target="_blank" title="">step 2.png</a> (Size: 106.24 KB / Downloads: 105)
<!-- end: postbit_attachments_attachment --><br />
<br />
3. In the "Client Beta Participation" section, select "Steam Beta Update" from the dropdown menu. After selecting, Steam will then prompt you to restart.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4221" target="_blank" title="">step 3.png</a> (Size: 22.66 KB / Downloads: 94)
<!-- end: postbit_attachments_attachment --><br />
<br />
After restarting, you should now have access to the ability to access the "Game Recording" tab under Steam settings.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Configuring Game Recording:</span></span><br />
1. Select "Steam" in the top left corner and select "Settings" in the dropdown menu.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4219" target="_blank" title="">step 1.png</a> (Size: 17.43 KB / Downloads: 96)
<!-- end: postbit_attachments_attachment --><br />
<br />
2. Under the "Steam Settings" left sidebar, select "Game Recording".<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4222" target="_blank" title="">step2.2.png</a> (Size: 182.36 KB / Downloads: 97)
<!-- end: postbit_attachments_attachment --><br />
<br />
3. You now should now be on a page similar to the one above. You are free to tinker with the various settings but I do have a couple recommendations:<ul class="mycode_list"><li>I recommend having "Record in Background" due to the ease of use provided by the clip editor built into the Steam overlay. If storage is of concern to you, limiting the length of recording or bit rate can significantly bring disk space used down. (120 minutes @ 7.5Mbps is 6.75gb)<br />
</li>
<li>I recommend leaving on the "Enable GPU hardware encoding" setting as it cuts down on the CPU load recording presents. Garry's Mod (and any Source game for that matter) cares significantly more about the speed of your CPU than your GPU so freeing up that tiny bit of CPU resources may provide an extra amount of performance. This setting should be enabled by default.<br />
</li>
<li>I recommend enabling the "Record Microphone" setting under the "Audio Recording" section. As of now, this is the only way to record your own voice via Steam Game Recording. This setting uses the inherited settings from the "Voice" section in the Steam Settings menu. In order to make sure your voice is recorded along with your gameplay, make sure you have the proper device selected for the "Voice Input Device" setting.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Navigating the Game Recording Overlay:</span></span><br />
In the Shift+Tab Steam overlay, select the "Game Recording" button, this will open the overlay to edit your previous recordings.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4225" target="_blank" title="">bar.png</a> (Size: 60.19 KB / Downloads: 86)
<!-- end: postbit_attachments_attachment --><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4224" target="_blank" title="">overlay.jpg</a> (Size: 495.66 KB / Downloads: 94)
<!-- end: postbit_attachments_attachment --><br />
<br />
From here you can now clip previous recordings and even export them into a surprising amount of different mediums. <br />
If anyone has questions or something to add to this, just lemme know. :)]]></description>
			<content:encoded><![CDATA[So a couple of months ago, Valve rolled out an update that allows for in-game recording built into Steam itself. One could readily see the benefits of this, namely:<ul class="mycode_list"><li>Simplicity: Not having to have multiple applications open in order to record gameplay<br />
</li>
<li>Audience: Everyone who has Garry's Mod has Steam installed already which makes the scope of people potentially recording grow exponentially<br />
</li>
<li>Ease of use: The interface, while not as in depth as a program like OBS, has enough features to be good enough to use when recording for proof, funny gamer moments, or otherwise.<br />
</li>
</ul>
The only issue that presents itself is that this feature is behind the Steam Client Beta, which this guide is here to explain how to enable, as well as configure the settings to effectively record in-game. <br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Enabling the Steam Client Beta:</span></span><br />
1. Select "Steam" in the top left corner and select "Settings" in the dropdown menu.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4219" target="_blank" title="">step 1.png</a> (Size: 17.43 KB / Downloads: 96)
<!-- end: postbit_attachments_attachment --><br />
<br />
2. Under the "Steam Settings" left sidebar, select "Interface".<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4220" target="_blank" title="">step 2.png</a> (Size: 106.24 KB / Downloads: 105)
<!-- end: postbit_attachments_attachment --><br />
<br />
3. In the "Client Beta Participation" section, select "Steam Beta Update" from the dropdown menu. After selecting, Steam will then prompt you to restart.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4221" target="_blank" title="">step 3.png</a> (Size: 22.66 KB / Downloads: 94)
<!-- end: postbit_attachments_attachment --><br />
<br />
After restarting, you should now have access to the ability to access the "Game Recording" tab under Steam settings.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Configuring Game Recording:</span></span><br />
1. Select "Steam" in the top left corner and select "Settings" in the dropdown menu.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4219" target="_blank" title="">step 1.png</a> (Size: 17.43 KB / Downloads: 96)
<!-- end: postbit_attachments_attachment --><br />
<br />
2. Under the "Steam Settings" left sidebar, select "Game Recording".<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4222" target="_blank" title="">step2.2.png</a> (Size: 182.36 KB / Downloads: 97)
<!-- end: postbit_attachments_attachment --><br />
<br />
3. You now should now be on a page similar to the one above. You are free to tinker with the various settings but I do have a couple recommendations:<ul class="mycode_list"><li>I recommend having "Record in Background" due to the ease of use provided by the clip editor built into the Steam overlay. If storage is of concern to you, limiting the length of recording or bit rate can significantly bring disk space used down. (120 minutes @ 7.5Mbps is 6.75gb)<br />
</li>
<li>I recommend leaving on the "Enable GPU hardware encoding" setting as it cuts down on the CPU load recording presents. Garry's Mod (and any Source game for that matter) cares significantly more about the speed of your CPU than your GPU so freeing up that tiny bit of CPU resources may provide an extra amount of performance. This setting should be enabled by default.<br />
</li>
<li>I recommend enabling the "Record Microphone" setting under the "Audio Recording" section. As of now, this is the only way to record your own voice via Steam Game Recording. This setting uses the inherited settings from the "Voice" section in the Steam Settings menu. In order to make sure your voice is recorded along with your gameplay, make sure you have the proper device selected for the "Voice Input Device" setting.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Navigating the Game Recording Overlay:</span></span><br />
In the Shift+Tab Steam overlay, select the "Game Recording" button, this will open the overlay to edit your previous recordings.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4225" target="_blank" title="">bar.png</a> (Size: 60.19 KB / Downloads: 86)
<!-- end: postbit_attachments_attachment --><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dinklebergsgmod.com/site/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=4224" target="_blank" title="">overlay.jpg</a> (Size: 495.66 KB / Downloads: 94)
<!-- end: postbit_attachments_attachment --><br />
<br />
From here you can now clip previous recordings and even export them into a surprising amount of different mediums. <br />
If anyone has questions or something to add to this, just lemme know. :)]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to: (Actually) Factory Reset GMod]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=18932</link>
			<pubDate>Sun, 24 Dec 2023 08:52:15 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=13392">hoy89</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=18932</guid>
			<description><![CDATA[Many things can break in Garry's Mod and cause issues that may not be fixed after simple troubleshooting steps like steam file verification. In any other game this is fine - just reinstall. However, Garry's Mod tends to 'hold on' to bad settings and bad files, even after uninstallation and re-installation. The aim of this small step-by-step guide is to bring the game condition back to as if you installed it for the first time.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Factory Resetting Garry's Mod</span></span><br />
<hr class="mycode_hr" /><ul class="mycode_list"><li> 0. (Optional) Back up your customization.<ul class="mycode_list"><li> 0a. Make a backup of your 'autoexec.cfg' file located in 'Steam\SteamLibrary\steamapps\common\GarrysMod\garrysmod\cfg'. This assumes you have (correctly) stored all of your relevant settings and binds here.<br />
</li>
<li> 0b. Make a note of your current launch options.<br />
</li>
<li> 0c. 'Favorite' any Workshop Addons that you do not want to lose.<br />
</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li> 1. Unsubscribe from ALL Workshop Addons.<ul class="mycode_list"><li>Addons that you have subscribed to a long time ago and forgotten about can cause issues or conflicts that persist between re-installations and computers. Addons can also receive updates that break functionality or, again, cause conflicts.<br />
</li>
<li>In general, all Addons have the potential to cause problems, either by themselves or when used with other Addons.<br />
</li>
<li>The safest option is to simply remove all of them, and later only reinstall the Addons that you actually use.<br />
</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li> 2. Run 'FactoryReset-GMod.bat' without "Run as administrator". It is located in 'Steam\SteamLibrary\steamapps\common\GarrysMod'.<br />
</li>
</ul>
<ul class="mycode_list"><li> 3. Load game then exit.<br />
</li>
</ul>
<ul class="mycode_list"><li> 4. Navigate to 'Steam\userdata\[User ID]\4000\remote\cfg' and open 'config.cfg' with notepad. Select and delete every line, leaving a blank file.<br />
</li>
</ul>
<ul class="mycode_list"><li> 5. In your Steam library, right click the game and select 'Properties'. Replace your launch options with the following options:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>-autoconfig -default +host_writeconfig config.cfg full +mat_savechanges +quit</code></div></div><br />
</li>
</ul>
<ul class="mycode_list"><li> 6. Load game. It will automatically exit.<br />
</li>
</ul>
<ul class="mycode_list"><li> 7. Uninstall Garry's Mod and Counter-Strike: Source through steam by right clicking the game in your library, and navigating to Manage -&gt; Uninstall.<br />
</li>
</ul>
<ul class="mycode_list"><li> 8. Remove remaining Garry's Mod leftover folder(s).<ul class="mycode_list"><li> 8a. Delete 'GarrysMod' from 'Steam\SteamLibrary\steamapps\common'.<br />
</li>
</ul>
<ul class="mycode_list"><li> 8b. Alternatively, if you have Garry's Mod and/or Counter-Strike: Source installed on a dedicated drive, delete everything in the 'steamapps' folder.<br />
</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li> 9.  Re-download and install Counter-Strike: Source, then Garry's Mod.<br />
</li>
</ul>
<ul class="mycode_list"><li> 10. Erase factory reset launch options from 'Properties' menu.<br />
</li>
</ul>
<ul class="mycode_list"><li> 11. Load Garry's Mod. At the bottom right there will be a button labeled 'Games'. Click on it and make sure Counter-Strike: Source is ticked in the sub menu. <ul class="mycode_list"><li>Half-Life 2 and Team Fortress 2 may also be ticked by default, you can leave them as-is.<br />
</li>
<li>This is a good time to check if your issue has been solved, before you start setting the game up again.<br />
</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li> 12. (Optional) Restore your backups.<ul class="mycode_list"><li> 12a. Move your 'autoexec.cfg' back into 'Steam\SteamLibrary\steamapps\common\GarrysMod\garrysmod\cfg'.<br />
</li>
<li> 12b. Re-enter your launch options.<br />
</li>
<li> 12c. Re-subscribe to Workshop Addons.<br />
</li>
</ul>
</li>
</ul>
<br />
<span style="font-size: xx-small;" class="mycode_size">EDIT  12/24/23: Clarification</span>]]></description>
			<content:encoded><![CDATA[Many things can break in Garry's Mod and cause issues that may not be fixed after simple troubleshooting steps like steam file verification. In any other game this is fine - just reinstall. However, Garry's Mod tends to 'hold on' to bad settings and bad files, even after uninstallation and re-installation. The aim of this small step-by-step guide is to bring the game condition back to as if you installed it for the first time.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Factory Resetting Garry's Mod</span></span><br />
<hr class="mycode_hr" /><ul class="mycode_list"><li> 0. (Optional) Back up your customization.<ul class="mycode_list"><li> 0a. Make a backup of your 'autoexec.cfg' file located in 'Steam\SteamLibrary\steamapps\common\GarrysMod\garrysmod\cfg'. This assumes you have (correctly) stored all of your relevant settings and binds here.<br />
</li>
<li> 0b. Make a note of your current launch options.<br />
</li>
<li> 0c. 'Favorite' any Workshop Addons that you do not want to lose.<br />
</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li> 1. Unsubscribe from ALL Workshop Addons.<ul class="mycode_list"><li>Addons that you have subscribed to a long time ago and forgotten about can cause issues or conflicts that persist between re-installations and computers. Addons can also receive updates that break functionality or, again, cause conflicts.<br />
</li>
<li>In general, all Addons have the potential to cause problems, either by themselves or when used with other Addons.<br />
</li>
<li>The safest option is to simply remove all of them, and later only reinstall the Addons that you actually use.<br />
</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li> 2. Run 'FactoryReset-GMod.bat' without "Run as administrator". It is located in 'Steam\SteamLibrary\steamapps\common\GarrysMod'.<br />
</li>
</ul>
<ul class="mycode_list"><li> 3. Load game then exit.<br />
</li>
</ul>
<ul class="mycode_list"><li> 4. Navigate to 'Steam\userdata\[User ID]\4000\remote\cfg' and open 'config.cfg' with notepad. Select and delete every line, leaving a blank file.<br />
</li>
</ul>
<ul class="mycode_list"><li> 5. In your Steam library, right click the game and select 'Properties'. Replace your launch options with the following options:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>-autoconfig -default +host_writeconfig config.cfg full +mat_savechanges +quit</code></div></div><br />
</li>
</ul>
<ul class="mycode_list"><li> 6. Load game. It will automatically exit.<br />
</li>
</ul>
<ul class="mycode_list"><li> 7. Uninstall Garry's Mod and Counter-Strike: Source through steam by right clicking the game in your library, and navigating to Manage -&gt; Uninstall.<br />
</li>
</ul>
<ul class="mycode_list"><li> 8. Remove remaining Garry's Mod leftover folder(s).<ul class="mycode_list"><li> 8a. Delete 'GarrysMod' from 'Steam\SteamLibrary\steamapps\common'.<br />
</li>
</ul>
<ul class="mycode_list"><li> 8b. Alternatively, if you have Garry's Mod and/or Counter-Strike: Source installed on a dedicated drive, delete everything in the 'steamapps' folder.<br />
</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li> 9.  Re-download and install Counter-Strike: Source, then Garry's Mod.<br />
</li>
</ul>
<ul class="mycode_list"><li> 10. Erase factory reset launch options from 'Properties' menu.<br />
</li>
</ul>
<ul class="mycode_list"><li> 11. Load Garry's Mod. At the bottom right there will be a button labeled 'Games'. Click on it and make sure Counter-Strike: Source is ticked in the sub menu. <ul class="mycode_list"><li>Half-Life 2 and Team Fortress 2 may also be ticked by default, you can leave them as-is.<br />
</li>
<li>This is a good time to check if your issue has been solved, before you start setting the game up again.<br />
</li>
</ul>
</li>
</ul>
<ul class="mycode_list"><li> 12. (Optional) Restore your backups.<ul class="mycode_list"><li> 12a. Move your 'autoexec.cfg' back into 'Steam\SteamLibrary\steamapps\common\GarrysMod\garrysmod\cfg'.<br />
</li>
<li> 12b. Re-enter your launch options.<br />
</li>
<li> 12c. Re-subscribe to Workshop Addons.<br />
</li>
</ul>
</li>
</ul>
<br />
<span style="font-size: xx-small;" class="mycode_size">EDIT  12/24/23: Clarification</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to read net_graph]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=17554</link>
			<pubDate>Sun, 04 Dec 2022 03:42:12 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=75">RussEfarmer</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=17554</guid>
			<description><![CDATA[The net_graph command is probably something everyone already uses to see ping and fps easily (net_graph 1), but there are actually three other levels of net_graph that show a lot of good information about your network connection to the server. This thread will be explaining how to read the fourth level (net_graph 4) of net_graph.<br />
<br />
Here is a screenshot of net_graph 4 broken up and numbered:<br />
<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/1048805692074623026/net_graph_4.png" loading="lazy"  alt="[Image: net_graph_4.png]" class="mycode_img" /><br />
<br />
Here is what each number/section means:<br />
<span style="font-weight: bold;" class="mycode_b">1:</span> This is the main area of the network graph. Each vertical line on the graph is a representation of each packet your client has sent and received to and from the server (after decompression), the colors in the line signifies the types and amounts of data moved. As a quick example, in the attached image you can see where I move my camera into the map, and the server starts sending me entity and player updates (green and red), but when I move back out of the map, I stop getting that data and only get voice and sound data.<br />
<br />
The white numbers at the top of the lines are the decompressed size, in bytes, of the packet. They only appear for packets with sizes in the 95th percentile. Any data that doesn't fit any color in the graph legend is indicated by the blank space between the last color in the bar and the white dot at the top of the bar.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2:</span> FPS and ping, duh<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3:</span> Quantity of data sent to/from the server. The in/out number is the size of the last incoming/outgoing packet, and the k/s number is the average amount of data being sent/received in kilobytes per second.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4:</span> The quantity of lost and choked packets since you've connected. A lost packet is one that was completely lost in transit and had to be resent, and a choked packet is one that the client wanted to send on that tick, but couldn't, causing a delay to the next tick.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5: </span>Server tickrate and frame time variance. Frame time variance is calculated as the standard deviation of server frame time across 50 server ticks. High variance could mean that the server doesn't have enough processing power to run at the tickrate it wants to. A server tickrate below 20 will turn this line yellow, and a server tickrate below 10 will turn this line red.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">6: </span>This is a measure of how strong your lag compensation is. A value of 100ms means that you are buffering and interpolating 100ms of entity and player movements. This means that every entity and player on your screen is 100ms old, but it also means that you can have packets take up to 100ms round trip to and from the server and still have hitreg work correctly, since the server will rewind time to when you shot, process it, and still have it show up correctly for you since it was within the buffered window. Events that happen outside of this buffered window up to 250ms are extrapolated (the server just guesses lmao), and anything after interp + 250ms works outside of lag compensation and is disregarded.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">7:</span> From top to bottom, this is your configured cl_updaterate setting, the actual cl_updaterate you are getting, the actual cl_cmdrate you are getting, and your desired cl_cmdrate. cl_updaterate is how often you want to receive updates from the server, cl_cmdrate is how often you want to send updates to the server. Most servers lock your actual cl_cmdrate to prevent exploits, since increasing your update rate breaks a lot of tick-based logic (Good example of that is the jump pack flying exploit, hackers crank the cl_cmdrate value higher than the server is supposed to let you, which makes the jump pack multiply your upward velocity way too often)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">8:</span> This extremely hard to see graph (green line) is a historical view of ping. High is higher, low is lower. A red vertical line indicates a dropped packet, and a yellow line indicates a choked packet (both of these increment the loss/choke counter)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">9:</span> This graph is how hard lag compensation has to work (technically called the lerp graph). The higher the blue section goes on a server tick, the further back the server had to rewind your actions to process them. Events that happen outside of the interp period are extrapolated, which are shown on the graph as an orange vertical bar. If you look very closely, there are white dots at the bottom of this graph, which indicates that a client packet was sent on that tick. You can see that there is a white dot 50% of the time, which lines up with the numbers seen in section 7 (66 updates received per second, top number, vs 33 updates sent per second, bottom number)<br />
<br />
Most of this shit makes no sense and you should basically never have this open, but if you want to diagnose lag issues or tune your lag compensation settings for better hitreg, it's the best tool you can use.]]></description>
			<content:encoded><![CDATA[The net_graph command is probably something everyone already uses to see ping and fps easily (net_graph 1), but there are actually three other levels of net_graph that show a lot of good information about your network connection to the server. This thread will be explaining how to read the fourth level (net_graph 4) of net_graph.<br />
<br />
Here is a screenshot of net_graph 4 broken up and numbered:<br />
<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/1048805692074623026/net_graph_4.png" loading="lazy"  alt="[Image: net_graph_4.png]" class="mycode_img" /><br />
<br />
Here is what each number/section means:<br />
<span style="font-weight: bold;" class="mycode_b">1:</span> This is the main area of the network graph. Each vertical line on the graph is a representation of each packet your client has sent and received to and from the server (after decompression), the colors in the line signifies the types and amounts of data moved. As a quick example, in the attached image you can see where I move my camera into the map, and the server starts sending me entity and player updates (green and red), but when I move back out of the map, I stop getting that data and only get voice and sound data.<br />
<br />
The white numbers at the top of the lines are the decompressed size, in bytes, of the packet. They only appear for packets with sizes in the 95th percentile. Any data that doesn't fit any color in the graph legend is indicated by the blank space between the last color in the bar and the white dot at the top of the bar.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2:</span> FPS and ping, duh<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3:</span> Quantity of data sent to/from the server. The in/out number is the size of the last incoming/outgoing packet, and the k/s number is the average amount of data being sent/received in kilobytes per second.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4:</span> The quantity of lost and choked packets since you've connected. A lost packet is one that was completely lost in transit and had to be resent, and a choked packet is one that the client wanted to send on that tick, but couldn't, causing a delay to the next tick.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5: </span>Server tickrate and frame time variance. Frame time variance is calculated as the standard deviation of server frame time across 50 server ticks. High variance could mean that the server doesn't have enough processing power to run at the tickrate it wants to. A server tickrate below 20 will turn this line yellow, and a server tickrate below 10 will turn this line red.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">6: </span>This is a measure of how strong your lag compensation is. A value of 100ms means that you are buffering and interpolating 100ms of entity and player movements. This means that every entity and player on your screen is 100ms old, but it also means that you can have packets take up to 100ms round trip to and from the server and still have hitreg work correctly, since the server will rewind time to when you shot, process it, and still have it show up correctly for you since it was within the buffered window. Events that happen outside of this buffered window up to 250ms are extrapolated (the server just guesses lmao), and anything after interp + 250ms works outside of lag compensation and is disregarded.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">7:</span> From top to bottom, this is your configured cl_updaterate setting, the actual cl_updaterate you are getting, the actual cl_cmdrate you are getting, and your desired cl_cmdrate. cl_updaterate is how often you want to receive updates from the server, cl_cmdrate is how often you want to send updates to the server. Most servers lock your actual cl_cmdrate to prevent exploits, since increasing your update rate breaks a lot of tick-based logic (Good example of that is the jump pack flying exploit, hackers crank the cl_cmdrate value higher than the server is supposed to let you, which makes the jump pack multiply your upward velocity way too often)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">8:</span> This extremely hard to see graph (green line) is a historical view of ping. High is higher, low is lower. A red vertical line indicates a dropped packet, and a yellow line indicates a choked packet (both of these increment the loss/choke counter)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">9:</span> This graph is how hard lag compensation has to work (technically called the lerp graph). The higher the blue section goes on a server tick, the further back the server had to rewind your actions to process them. Events that happen outside of the interp period are extrapolated, which are shown on the graph as an orange vertical bar. If you look very closely, there are white dots at the bottom of this graph, which indicates that a client packet was sent on that tick. You can see that there is a white dot 50% of the time, which lines up with the numbers seen in section 7 (66 updates received per second, top number, vs 33 updates sent per second, bottom number)<br />
<br />
Most of this shit makes no sense and you should basically never have this open, but if you want to diagnose lag issues or tune your lag compensation settings for better hitreg, it's the best tool you can use.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[All About IP Bans (They suck)]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=13871</link>
			<pubDate>Sat, 07 May 2022 04:43:11 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=75">RussEfarmer</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=13871</guid>
			<description><![CDATA[I've wanted to make this thread for a while but every time I write it I don't quite explain stuff correctly, so I'm just going to commit and hope it works...<br />
<br />
We use IP bans to deal with people that evade steamid bans with alternate accounts. The principal behind this is instead of banning an individual account, we ban a whole computer, so any alts fail to connect regardless of their ban status. Today I'm going to explain what exactly is happening when we IP ban someone, and why IP bans are actually less effective than regular bans when used incorrectly.<br />
<br />
First off, computers have IP addresses. Just like a mailing address, IP addresses mark messages sent to and from computers. When a message is sent, just like a letter you would send in the mail, it is marked with the source address and destination address. When we ban an IP address, the server adds the IP to the IP ban list, and if a player connects from an IP address that is in the IP ban list, the server will kick the player. Notice how I said "if a player connects", as in, the player still connects to the server briefly. In order to kick the player because they are banned, they have to actually be connected first, otherwise what is telling them they are banned? Something important to note is that this is NOT a hard deny and IP bans are not a substitute for firewall. Traffic can still reach our server, so trying to use an IP ban to stop a denial of service attack is useless. <br />
<br />
So IP bans block the players IP instead of steamid. Great, right? Not quite, because IP addresses do not behave similarly to steamids at all. Lets talk about pitfall #1, network address translation. The standard that a large percentage of the internet still uses for network connectivity is called IPv4, which also defines what exactly an IP address is. IPv4 addresses are 32 bits, meaning they can represent 4.1 billion unique values. After the internet started booming in size, computer networking experts predicted that we would run out of IPv4 addresses if something wasn't done, so network address translation (NAT) was born. NAT is enabled on a router (a router in its simplest form is a boundary between two networks), and what it does is it represents multiple computers each with a unique IP address as a single device with one IP address. The details on how exactly this works aren't important, it gets hairy fast. This diagram explains it quite well:<br />
<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/972345889098186792/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /><br />
The issue here is that you are not banning a computer, you are banning the router that represents that computer, which could be representing other computers in that house. IP bans always have this effect of collateral damage as long as the IP being banned is representing multiple devices. This situation specifically isn't really an issue, because the chance that two individual people connecting to the server from the same house and one of them getting IP banned is very low. However, where it DOES become a big issue is with carrier grade NAT. Cell phone data service, wireless broadband service, and some cable internet services, due to the number of devices they have to provide connectivity to, do an additional layer of NAT to conserve IP addresses.<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/972352570054025217/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /><br />
Now instead of banning a single house, we are banning whole neighborhoods. It's kind of like adding a whole town to a no-fly list because one terrorist came from there, not very fair and way overkill... but honestly acceptable for a temporary ban (if IP bans were temporary that is, which they aren't, so this isn't acceptable). I haven't even talked about pitfall #2 though, which makes the IP ban all but useless.<br />
<br />
DHCP, Dynamic Host Control Protocol, is a standard that allows computers to request an IP address from a DHCP server, and have one assigned to it automatically. This is called dynamic IP addressing, which differs from static addressing where you have to manually keep track of duplicate IP addresses. This protocol lets you connect to the wifi without having to manually set your IP address every time. DHCP is done on a lease system, so IP addresses are not kept permanently, the computer needs to maintain their lease by staying connected to the network. If the DHCP lease expires, they lose the address they had, and they will have to request a new one.<br />
<br />
This might not be so bad inside your house, but you would think that your internet provider sets static IP addresses for the router they give you, right? Wrong! Your router requests an IP address to use from your ISP's DHCP server, just like your computer requests an IP address to use from your house's DHCP server (which also happens to be your router). You might see the issue here. If I get IP banned and the DHCP lease on my router expires, I get a brand new IP address, and some poor schmuck across the city got my banned IP address. Depending on your service provider, your DHCP lease expires every day, every week, or if the device is disconnected for x amount of time.<br />
<br />
To wrap up, two issues with IP bans:<br />
1. Because of Network Address Translation, issuing an IP ban causes collateral damage. Very rarely will you be banning an individual computer, at the very least you will be banning an entire home, if not an entire geographic location such as a neighborhood or town.<br />
2. IP addresses do not stay "attached" to the same person for very long, so IP bans will never permanently ban the person you want it to. Sure the IP is banned, but since people get new IP addresses so often, the IP you banned just gets recycled and assigned to a different person, so they are now banned.<br />
<br />
IP bans are not "super bans", they are actually less powerful than steamid bans and serve only one purpose: temporarily ban someone alt evading. It is less effective than a regular ban in any other circumstance.<br />
<br />
Anyway, I hope that was informative somehow. Thanks for reading.]]></description>
			<content:encoded><![CDATA[I've wanted to make this thread for a while but every time I write it I don't quite explain stuff correctly, so I'm just going to commit and hope it works...<br />
<br />
We use IP bans to deal with people that evade steamid bans with alternate accounts. The principal behind this is instead of banning an individual account, we ban a whole computer, so any alts fail to connect regardless of their ban status. Today I'm going to explain what exactly is happening when we IP ban someone, and why IP bans are actually less effective than regular bans when used incorrectly.<br />
<br />
First off, computers have IP addresses. Just like a mailing address, IP addresses mark messages sent to and from computers. When a message is sent, just like a letter you would send in the mail, it is marked with the source address and destination address. When we ban an IP address, the server adds the IP to the IP ban list, and if a player connects from an IP address that is in the IP ban list, the server will kick the player. Notice how I said "if a player connects", as in, the player still connects to the server briefly. In order to kick the player because they are banned, they have to actually be connected first, otherwise what is telling them they are banned? Something important to note is that this is NOT a hard deny and IP bans are not a substitute for firewall. Traffic can still reach our server, so trying to use an IP ban to stop a denial of service attack is useless. <br />
<br />
So IP bans block the players IP instead of steamid. Great, right? Not quite, because IP addresses do not behave similarly to steamids at all. Lets talk about pitfall #1, network address translation. The standard that a large percentage of the internet still uses for network connectivity is called IPv4, which also defines what exactly an IP address is. IPv4 addresses are 32 bits, meaning they can represent 4.1 billion unique values. After the internet started booming in size, computer networking experts predicted that we would run out of IPv4 addresses if something wasn't done, so network address translation (NAT) was born. NAT is enabled on a router (a router in its simplest form is a boundary between two networks), and what it does is it represents multiple computers each with a unique IP address as a single device with one IP address. The details on how exactly this works aren't important, it gets hairy fast. This diagram explains it quite well:<br />
<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/972345889098186792/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /><br />
The issue here is that you are not banning a computer, you are banning the router that represents that computer, which could be representing other computers in that house. IP bans always have this effect of collateral damage as long as the IP being banned is representing multiple devices. This situation specifically isn't really an issue, because the chance that two individual people connecting to the server from the same house and one of them getting IP banned is very low. However, where it DOES become a big issue is with carrier grade NAT. Cell phone data service, wireless broadband service, and some cable internet services, due to the number of devices they have to provide connectivity to, do an additional layer of NAT to conserve IP addresses.<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/972352570054025217/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /><br />
Now instead of banning a single house, we are banning whole neighborhoods. It's kind of like adding a whole town to a no-fly list because one terrorist came from there, not very fair and way overkill... but honestly acceptable for a temporary ban (if IP bans were temporary that is, which they aren't, so this isn't acceptable). I haven't even talked about pitfall #2 though, which makes the IP ban all but useless.<br />
<br />
DHCP, Dynamic Host Control Protocol, is a standard that allows computers to request an IP address from a DHCP server, and have one assigned to it automatically. This is called dynamic IP addressing, which differs from static addressing where you have to manually keep track of duplicate IP addresses. This protocol lets you connect to the wifi without having to manually set your IP address every time. DHCP is done on a lease system, so IP addresses are not kept permanently, the computer needs to maintain their lease by staying connected to the network. If the DHCP lease expires, they lose the address they had, and they will have to request a new one.<br />
<br />
This might not be so bad inside your house, but you would think that your internet provider sets static IP addresses for the router they give you, right? Wrong! Your router requests an IP address to use from your ISP's DHCP server, just like your computer requests an IP address to use from your house's DHCP server (which also happens to be your router). You might see the issue here. If I get IP banned and the DHCP lease on my router expires, I get a brand new IP address, and some poor schmuck across the city got my banned IP address. Depending on your service provider, your DHCP lease expires every day, every week, or if the device is disconnected for x amount of time.<br />
<br />
To wrap up, two issues with IP bans:<br />
1. Because of Network Address Translation, issuing an IP ban causes collateral damage. Very rarely will you be banning an individual computer, at the very least you will be banning an entire home, if not an entire geographic location such as a neighborhood or town.<br />
2. IP addresses do not stay "attached" to the same person for very long, so IP bans will never permanently ban the person you want it to. Sure the IP is banned, but since people get new IP addresses so often, the IP you banned just gets recycled and assigned to a different person, so they are now banned.<br />
<br />
IP bans are not "super bans", they are actually less powerful than steamid bans and serve only one purpose: temporarily ban someone alt evading. It is less effective than a regular ban in any other circumstance.<br />
<br />
Anyway, I hope that was informative somehow. Thanks for reading.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Convert SteamIDs straight from your clipboard]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=15122</link>
			<pubDate>Mon, 04 Oct 2021 03:46:39 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=75">RussEfarmer</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=15122</guid>
			<description><![CDATA[Yesterday night I made a thread talking about how you can convert steamids to a usable steam community URLs with some simple arithmetic, and I thought "I could totally make this with autohotkey"<br />
<br />
Well it definitely WASN'T simple arithmetic, but I did it anyway.<br />
<br />
This tool takes whatever is on your clipboard, searches it for either a steamid or steam community profile URL, and converts between the two. If you have steamids, it converts to urls, and if you have urls, it converts to steamids. The converted steamids and urls are put back on your clipboard so you can instantly paste them back into whatever you were doing.<br />
<br />
Here's a demo video of the tool:<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/L4fkM_cIPb8" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
Download: <a href="https://cdn.discordapp.com/attachments/582800239887646732/894426274980827217/ConvertSteamID.exe" target="_blank" rel="noopener" class="mycode_url">https://cdn.discordapp.com/attachments/5...teamID.exe</a><br />
Github Repo: <a href="https://github.com/RussEfarmer/SteamID-Clipboard-Convert" target="_blank" rel="noopener" class="mycode_url">https://github.com/RussEfarmer/SteamID-C...rd-Convert</a><br />
<br />
To use the tool you can either manually run the program, or you can use autohotkey to bind the program to a hotkey. To do that, install autohotkey at autohotkey.com and follow these steps:<br />
1. Enable this setting in windows explorer:<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/894427615081930772/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /><br />
<br />
2. Create a new file and name it (whatever).ahk. Accept all prompts.<br />
3. Open the file with notepad.<br />
4. Type ^!s:: and press enter. (This is the start of an autohotkey keybind. ^ is the ctrl key, ! is alt, and s is s. The hotkey will be ctrl + alt + s.<br />
5. Type "Run (file path of program)"<br />
6. To get the file path of the tool, select the program and use the "Copy path" button.<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/894428683270496256/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /><br />
<br />
7. The final result should look similar to this:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>^!s::<br />
Run "C:&#92;Users&#92;RussE&#92;Desktop&#92;rcon-test&#92;Convert SteamID&#92;ConvertSteamID.exe"</code></div></div><br />
8. Save the file, and double click it to run it. The hotkey script is running in the background.<br />
9. To close the script, go down to the system tray, right click the H, and select exit:<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/894429389977190410/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" />]]></description>
			<content:encoded><![CDATA[Yesterday night I made a thread talking about how you can convert steamids to a usable steam community URLs with some simple arithmetic, and I thought "I could totally make this with autohotkey"<br />
<br />
Well it definitely WASN'T simple arithmetic, but I did it anyway.<br />
<br />
This tool takes whatever is on your clipboard, searches it for either a steamid or steam community profile URL, and converts between the two. If you have steamids, it converts to urls, and if you have urls, it converts to steamids. The converted steamids and urls are put back on your clipboard so you can instantly paste them back into whatever you were doing.<br />
<br />
Here's a demo video of the tool:<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/L4fkM_cIPb8" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
Download: <a href="https://cdn.discordapp.com/attachments/582800239887646732/894426274980827217/ConvertSteamID.exe" target="_blank" rel="noopener" class="mycode_url">https://cdn.discordapp.com/attachments/5...teamID.exe</a><br />
Github Repo: <a href="https://github.com/RussEfarmer/SteamID-Clipboard-Convert" target="_blank" rel="noopener" class="mycode_url">https://github.com/RussEfarmer/SteamID-C...rd-Convert</a><br />
<br />
To use the tool you can either manually run the program, or you can use autohotkey to bind the program to a hotkey. To do that, install autohotkey at autohotkey.com and follow these steps:<br />
1. Enable this setting in windows explorer:<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/894427615081930772/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /><br />
<br />
2. Create a new file and name it (whatever).ahk. Accept all prompts.<br />
3. Open the file with notepad.<br />
4. Type ^!s:: and press enter. (This is the start of an autohotkey keybind. ^ is the ctrl key, ! is alt, and s is s. The hotkey will be ctrl + alt + s.<br />
5. Type "Run (file path of program)"<br />
6. To get the file path of the tool, select the program and use the "Copy path" button.<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/894428683270496256/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /><br />
<br />
7. The final result should look similar to this:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>^!s::<br />
Run "C:&#92;Users&#92;RussE&#92;Desktop&#92;rcon-test&#92;Convert SteamID&#92;ConvertSteamID.exe"</code></div></div><br />
8. Save the file, and double click it to run it. The hotkey script is running in the background.<br />
9. To close the script, go down to the system tray, right click the H, and select exit:<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/894429389977190410/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Convert SteamIDs to profile links with a calculator]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=15117</link>
			<pubDate>Sun, 03 Oct 2021 05:23:14 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=75">RussEfarmer</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=15117</guid>
			<description><![CDATA[There's no special tricks behind converting the steamids we see in game from that type to steamid64 and steamid3 (the kind you see in CSGO), it's all just math. Math so easy that you can actually do it on your calculator:<br />
<br />
Convert steamid to steamid3 profile link:<br />
Let <span style="font-style: italic;" class="mycode_i">X</span>, <span style="font-style: italic;" class="mycode_i">Y</span> and <span style="font-style: italic;" class="mycode_i">Z</span> equal these components of the steamid: <span style="font-style: italic;" class="mycode_i">STEAM_X:Y:Z</span><br />
Use the formula <span style="font-style: italic;" class="mycode_i">W=Z*2+Y </span>and convert to this link:<br />
<a href="https://steamcommunity.com/profiles/" target="_blank" rel="noopener" class="mycode_url">https://steamcommunity.com/profiles/</a>[U:1:<span style="font-style: italic;" class="mycode_i">W</span>]<br />
<br />
And it's that easy. Multiply the last part by 2, add the middle to it, slam it on the end of that link, and you have a profile URL.<br />
<br />
You can actually convert steamids to steamid64, but the numbers are a little bigger:<br />
Let <span style="font-style: italic;" class="mycode_i">X</span>, <span style="font-style: italic;" class="mycode_i">Y</span> and <span style="font-style: italic;" class="mycode_i">Z</span> equal these components of the steamid: <span style="font-style: italic;" class="mycode_i">STEAM_X:Y:Z</span><br />
Let <span style="font-style: italic;" class="mycode_i">V</span> equal the account identifier for normal user accounts: <span style="font-style: italic;" class="mycode_i">76561197960265728</span><br />
Use the formula <span style="font-style: italic;" class="mycode_i">W=Z*2+V+Y</span> and convert to this link:<br />
<a href="https://steamcommunity.com/profiles/" target="_blank" rel="noopener" class="mycode_url">https://steamcommunity.com/profiles/</a><span style="font-style: italic;" class="mycode_i">W</span>]]></description>
			<content:encoded><![CDATA[There's no special tricks behind converting the steamids we see in game from that type to steamid64 and steamid3 (the kind you see in CSGO), it's all just math. Math so easy that you can actually do it on your calculator:<br />
<br />
Convert steamid to steamid3 profile link:<br />
Let <span style="font-style: italic;" class="mycode_i">X</span>, <span style="font-style: italic;" class="mycode_i">Y</span> and <span style="font-style: italic;" class="mycode_i">Z</span> equal these components of the steamid: <span style="font-style: italic;" class="mycode_i">STEAM_X:Y:Z</span><br />
Use the formula <span style="font-style: italic;" class="mycode_i">W=Z*2+Y </span>and convert to this link:<br />
<a href="https://steamcommunity.com/profiles/" target="_blank" rel="noopener" class="mycode_url">https://steamcommunity.com/profiles/</a>[U:1:<span style="font-style: italic;" class="mycode_i">W</span>]<br />
<br />
And it's that easy. Multiply the last part by 2, add the middle to it, slam it on the end of that link, and you have a profile URL.<br />
<br />
You can actually convert steamids to steamid64, but the numbers are a little bigger:<br />
Let <span style="font-style: italic;" class="mycode_i">X</span>, <span style="font-style: italic;" class="mycode_i">Y</span> and <span style="font-style: italic;" class="mycode_i">Z</span> equal these components of the steamid: <span style="font-style: italic;" class="mycode_i">STEAM_X:Y:Z</span><br />
Let <span style="font-style: italic;" class="mycode_i">V</span> equal the account identifier for normal user accounts: <span style="font-style: italic;" class="mycode_i">76561197960265728</span><br />
Use the formula <span style="font-style: italic;" class="mycode_i">W=Z*2+V+Y</span> and convert to this link:<br />
<a href="https://steamcommunity.com/profiles/" target="_blank" rel="noopener" class="mycode_url">https://steamcommunity.com/profiles/</a><span style="font-style: italic;" class="mycode_i">W</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Inserting Images into Threads]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=14258</link>
			<pubDate>Wed, 19 May 2021 04:37:03 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=10155">gerbil</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=14258</guid>
			<description><![CDATA[<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">Just a quick guide in case some are new to the forums.</span></span><br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">I know I've had a few ask how to add the signatures I've made them so I thought this would help a bunch.</span></span><br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">First Step</span></span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">Getting your image!</span></span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">Your image needs to be in the form of a link. These links will have to end with ( <span style="font-weight: bold;" class="mycode_b">.gif</span> ), ( <span style="font-weight: bold;" class="mycode_b">.png</span> ), ( <span style="font-weight: bold;" class="mycode_b">.jpg</span> ), etc.</span></span></span><br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-style: italic;" class="mycode_i">Ex.</span></span></span><br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><img src="https://i.gyazo.com/ac0bf54984b1a321e484896d8317e742.png" loading="lazy"  alt="[Image: ac0bf54984b1a321e484896d8317e742.png]" class="mycode_img" /></span><br />
<ul class="mycode_list"><li><span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">I like to send my downloaded/personally made images/gifs through discord to retrieve a link. ( Uploading image to Discord &gt; Right Clicking &gt; 'Copy Link' )</span></span></span><br />
</li>
</ul>
<ul class="mycode_list"><li><span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">If you are taking from google or anything else you just need to: Right Click your selected image &gt; Click 'Open image in a new tab' &gt; Copy the link if it has </span></span><span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">( <span style="font-weight: bold;" class="mycode_b">.gif</span> ), ( <span style="font-weight: bold;" class="mycode_b">.png</span> ), ( <span style="font-weight: bold;" class="mycode_b">.jpg</span> ), etc.</span> at the end</span></span><span style="font-family: Times New Roman;" class="mycode_font">.</span><br />
</li>
</ul>
<span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">Second Step</span></span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">Inserting the image!</span></span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">Now that you have the image you want, you just need to click the photograph looking button at the top of your thread box:</span></span></span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size"><img src="https://cdn.discordapp.com/attachments/842334511374270464/844419175450673212/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /></span></span></span><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">It will show a little menu like this and this is where you insert the link in the <span style="font-weight: bold;" class="mycode_b">URL</span> slot.</span></span><br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: small;" class="mycode_size"><span style="font-style: italic;" class="mycode_i">( Aka your link ending in ( <span style="font-weight: bold;" class="mycode_b">.gif</span> ), ( <span style="font-weight: bold;" class="mycode_b">.png</span> ), ( <span style="font-weight: bold;" class="mycode_b">.jpg</span> ), etc )</span></span></span></span><br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><img src="https://cdn.discordapp.com/attachments/842334511374270464/844421103681536010/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /></span><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">Then you click 'Insert'</span></span><span style="font-family: Times New Roman;" class="mycode_font">!</span><br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">Additionally you can also edit the width and height of the image with the (optional) though in a lot of cases this can stretch the image if you didn't calculate the W x H correctly.</span></span><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">Hopefully this helps someone- Unless this is a completely useless thread in the wrong place. Probably is. Who knows.</span></span>]]></description>
			<content:encoded><![CDATA[<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">Just a quick guide in case some are new to the forums.</span></span><br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">I know I've had a few ask how to add the signatures I've made them so I thought this would help a bunch.</span></span><br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">First Step</span></span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">Getting your image!</span></span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">Your image needs to be in the form of a link. These links will have to end with ( <span style="font-weight: bold;" class="mycode_b">.gif</span> ), ( <span style="font-weight: bold;" class="mycode_b">.png</span> ), ( <span style="font-weight: bold;" class="mycode_b">.jpg</span> ), etc.</span></span></span><br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-style: italic;" class="mycode_i">Ex.</span></span></span><br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><img src="https://i.gyazo.com/ac0bf54984b1a321e484896d8317e742.png" loading="lazy"  alt="[Image: ac0bf54984b1a321e484896d8317e742.png]" class="mycode_img" /></span><br />
<ul class="mycode_list"><li><span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">I like to send my downloaded/personally made images/gifs through discord to retrieve a link. ( Uploading image to Discord &gt; Right Clicking &gt; 'Copy Link' )</span></span></span><br />
</li>
</ul>
<ul class="mycode_list"><li><span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">If you are taking from google or anything else you just need to: Right Click your selected image &gt; Click 'Open image in a new tab' &gt; Copy the link if it has </span></span><span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">( <span style="font-weight: bold;" class="mycode_b">.gif</span> ), ( <span style="font-weight: bold;" class="mycode_b">.png</span> ), ( <span style="font-weight: bold;" class="mycode_b">.jpg</span> ), etc.</span> at the end</span></span><span style="font-family: Times New Roman;" class="mycode_font">.</span><br />
</li>
</ul>
<span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">Second Step</span></span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">Inserting the image!</span></span></span><br />
<span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">Now that you have the image you want, you just need to click the photograph looking button at the top of your thread box:</span></span></span><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: medium;" class="mycode_size"><img src="https://cdn.discordapp.com/attachments/842334511374270464/844419175450673212/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /></span></span></span><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">It will show a little menu like this and this is where you insert the link in the <span style="font-weight: bold;" class="mycode_b">URL</span> slot.</span></span><br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: small;" class="mycode_size"><span style="font-style: italic;" class="mycode_i">( Aka your link ending in ( <span style="font-weight: bold;" class="mycode_b">.gif</span> ), ( <span style="font-weight: bold;" class="mycode_b">.png</span> ), ( <span style="font-weight: bold;" class="mycode_b">.jpg</span> ), etc )</span></span></span></span><br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><img src="https://cdn.discordapp.com/attachments/842334511374270464/844421103681536010/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /></span><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">Then you click 'Insert'</span></span><span style="font-family: Times New Roman;" class="mycode_font">!</span><br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">Additionally you can also edit the width and height of the image with the (optional) though in a lot of cases this can stretch the image if you didn't calculate the W x H correctly.</span></span><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">Hopefully this helps someone- Unless this is a completely useless thread in the wrong place. Probably is. Who knows.</span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Making Garry's Mod run faster with Source shenanigans]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=13837</link>
			<pubDate>Mon, 08 Mar 2021 05:30:21 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=75">RussEfarmer</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=13837</guid>
			<description><![CDATA[There are a couple of things you can do to increase gmod's performance quite a bit, mostly by setting multi threaded processing on things that don't have it enabled by default<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Optimizing Garry's Mod for multithreaded processing (THESE HELP THE MOST)</span><br />
<hr class="mycode_hr" />
In your autoexec.cfg, add these commands:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>gmod_mcore_test 1<br />
mat_queue_mode 2<br />
cl_threaded_bone_setup 1</code></div></div><ul class="mycode_list"><li>gmod_mcore_test 1 enables experimental multicore processing for gmod. Under very rare conditions this might cause a crash on some models of processors. I have been using it for 5 years without trouble.<br />
</li>
<li>mat_queue_mode 2 sets the material system to use queued multithreading mode instead of synchronous singlethreaded mode. In English, it sets texture processing to be sent to multiple cores instead of just one. Benefits laptops the most<br />
</li>
<li>cl_threaded_bone_setup 1 enables multithreading for bone processing for things like animation and footsteps.<br />
</li>
</ul>
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">General setting changes</span><br />
<hr class="mycode_hr" />
In your autoexec, add these lines:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mat_motion_blur_enabled 0<br />
mat_reducefillrate 1<br />
mat_vsync 0<br />
cl_forcepreload 1<br />
cl_ragdoll_collide 0<br />
mat_specular 0</code></div></div><ul class="mycode_list"><li>mat_motion_blur_enabled 0 disables motion blur. This doesn't make anything faster but you should really have this setting off in TTT.<br />
</li>
<li>mat_reducefillrate 1 reduces shader quality. Some shadows may look grainy<br />
</li>
<li>mat_vsync 0 disables vsync. If you have major screen tearing, set this to 1<br />
</li>
<li>cl_forcepreload 1 forces all map textures to be loaded before joining the map. This increases load times but boosts FPS.<br />
</li>
<li>cl_ragdoll_collide 0 disables ragdoll collisions<br />
</li>
<li>mat_specular 0 disables the shine on things like metal and floors. Also fixes some missing texture problems. Makes the game look more dull, though.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Launch options</span><br />
<hr class="mycode_hr" />
In your <a href="https://prnt.sc/10ft33p" target="_blank" rel="noopener" class="mycode_url">launch options</a>, set these options:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>-high -nojoy</code></div></div><ul class="mycode_list"><li>-high sets the process priority to high<br />
</li>
<li>-nojoy disables joystick support, reducing memory requirements<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Using the 64-bit executable &amp; Chromium web renderer</span><br />
<hr class="mycode_hr" />
<a href="https://www.dinklebergsgmod.com/site/showthread.php?tid=13719" target="_blank" rel="noopener" class="mycode_url">Follow the guide by bryanbrr to learn how to do this.</a> Using a 64-bit executable doesn't make a huge difference other than being able to use more than 4GB of memory, but the Chromium renderer is much faster than the default Awesomium renderer.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">More aggressive setting changes</span><br />
<hr class="mycode_hr" />
You can add either the <a href="https://pastebin.com/aZvBW4vQ" target="_blank" rel="noopener" class="mycode_url">"Potato"</a> config or the <a href="https://pastebin.com/ydr0gvV8" target="_blank" rel="noopener" class="mycode_url">"Beyond Potato"</a> config to your autoexec (but not both). Alternatively, you can add a mix of the options from <span style="font-weight: bold;" class="mycode_b"><a href="https://steamcommunity.com/app/440/discussions/0/2741975115078652091/" target="_blank" rel="noopener" class="mycode_url">this</a></span> forum thread.<br />
<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/818349147513946151/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /><br />
<hr class="mycode_hr" />
autoexec.cfg is a config automatically ran at the game start. Configs, or .cfgs are lists of console commands that are ran one after another. When you load console commands into a cfg and run the cfg, you are running all of those console commands with just one command. In the case of autoexec.cfg, it's ran automatically when the game starts.<br />
<br />
autoexec.cfg is at steamapps\common\GarrysMod\garrysmod\cfg\autoexec.cfg, if you don't have one create one. Edit it with notepad.<br />
<br />
I recommend splitting up your autoexec into pieces by using enter. I have a section for my multithreading stuff, a section for my fps and ping displays, a section for random performance tweaks, a section for console filtering, and a section for aliases. Here is my autoexec:<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/818352023496949780/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">If you need any help following this guide, feel free to contact me through the Discord or through forum PM.</span>]]></description>
			<content:encoded><![CDATA[There are a couple of things you can do to increase gmod's performance quite a bit, mostly by setting multi threaded processing on things that don't have it enabled by default<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Optimizing Garry's Mod for multithreaded processing (THESE HELP THE MOST)</span><br />
<hr class="mycode_hr" />
In your autoexec.cfg, add these commands:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>gmod_mcore_test 1<br />
mat_queue_mode 2<br />
cl_threaded_bone_setup 1</code></div></div><ul class="mycode_list"><li>gmod_mcore_test 1 enables experimental multicore processing for gmod. Under very rare conditions this might cause a crash on some models of processors. I have been using it for 5 years without trouble.<br />
</li>
<li>mat_queue_mode 2 sets the material system to use queued multithreading mode instead of synchronous singlethreaded mode. In English, it sets texture processing to be sent to multiple cores instead of just one. Benefits laptops the most<br />
</li>
<li>cl_threaded_bone_setup 1 enables multithreading for bone processing for things like animation and footsteps.<br />
</li>
</ul>
<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">General setting changes</span><br />
<hr class="mycode_hr" />
In your autoexec, add these lines:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mat_motion_blur_enabled 0<br />
mat_reducefillrate 1<br />
mat_vsync 0<br />
cl_forcepreload 1<br />
cl_ragdoll_collide 0<br />
mat_specular 0</code></div></div><ul class="mycode_list"><li>mat_motion_blur_enabled 0 disables motion blur. This doesn't make anything faster but you should really have this setting off in TTT.<br />
</li>
<li>mat_reducefillrate 1 reduces shader quality. Some shadows may look grainy<br />
</li>
<li>mat_vsync 0 disables vsync. If you have major screen tearing, set this to 1<br />
</li>
<li>cl_forcepreload 1 forces all map textures to be loaded before joining the map. This increases load times but boosts FPS.<br />
</li>
<li>cl_ragdoll_collide 0 disables ragdoll collisions<br />
</li>
<li>mat_specular 0 disables the shine on things like metal and floors. Also fixes some missing texture problems. Makes the game look more dull, though.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Launch options</span><br />
<hr class="mycode_hr" />
In your <a href="https://prnt.sc/10ft33p" target="_blank" rel="noopener" class="mycode_url">launch options</a>, set these options:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>-high -nojoy</code></div></div><ul class="mycode_list"><li>-high sets the process priority to high<br />
</li>
<li>-nojoy disables joystick support, reducing memory requirements<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Using the 64-bit executable &amp; Chromium web renderer</span><br />
<hr class="mycode_hr" />
<a href="https://www.dinklebergsgmod.com/site/showthread.php?tid=13719" target="_blank" rel="noopener" class="mycode_url">Follow the guide by bryanbrr to learn how to do this.</a> Using a 64-bit executable doesn't make a huge difference other than being able to use more than 4GB of memory, but the Chromium renderer is much faster than the default Awesomium renderer.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">More aggressive setting changes</span><br />
<hr class="mycode_hr" />
You can add either the <a href="https://pastebin.com/aZvBW4vQ" target="_blank" rel="noopener" class="mycode_url">"Potato"</a> config or the <a href="https://pastebin.com/ydr0gvV8" target="_blank" rel="noopener" class="mycode_url">"Beyond Potato"</a> config to your autoexec (but not both). Alternatively, you can add a mix of the options from <span style="font-weight: bold;" class="mycode_b"><a href="https://steamcommunity.com/app/440/discussions/0/2741975115078652091/" target="_blank" rel="noopener" class="mycode_url">this</a></span> forum thread.<br />
<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/818349147513946151/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /><br />
<hr class="mycode_hr" />
autoexec.cfg is a config automatically ran at the game start. Configs, or .cfgs are lists of console commands that are ran one after another. When you load console commands into a cfg and run the cfg, you are running all of those console commands with just one command. In the case of autoexec.cfg, it's ran automatically when the game starts.<br />
<br />
autoexec.cfg is at steamapps\common\GarrysMod\garrysmod\cfg\autoexec.cfg, if you don't have one create one. Edit it with notepad.<br />
<br />
I recommend splitting up your autoexec into pieces by using enter. I have a section for my multithreading stuff, a section for my fps and ping displays, a section for random performance tweaks, a section for console filtering, and a section for aliases. Here is my autoexec:<br />
<img src="https://cdn.discordapp.com/attachments/582800239887646732/818352023496949780/unknown.png" loading="lazy"  alt="[Image: unknown.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">If you need any help following this guide, feel free to contact me through the Discord or through forum PM.</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[DDoS: It's not quite what you think]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=13778</link>
			<pubDate>Tue, 02 Mar 2021 00:27:02 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=75">RussEfarmer</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=13778</guid>
			<description><![CDATA[When I say "DDoS", many people imagine an intimidating hackerman joining the server, and then magically the entire server starts lagging when he gives the magic word. Or maybe it's a weird guy you ticked off on the YouTube comment section, and right after he posts an intimidating message, your Internet shuts off. With the stereotype of what a DDoS attack is floating around, I wanted to explain what a DDoS attack <span style="font-style: italic;" class="mycode_i">actually</span> is, how attackers use them to deny service, and how most attacks on our server that make them lag are almost definitely not DDoS attacks.<br />
<br />
DDoS originates from the acronym DoS, standing for Denial of Service. The goals of these attacks are to prevent a network service from being usable normally, usually by disrupting the server computer that's running the service. Most commonly this is done with overwhelming network traffic onto that server computer. However, as the sophistication of the computer networks protecting these servers increased, the feasibility of using a single network host to send any meaningful network traffic to achieve a disruption was lowering fast. This prompts the need to <span style="font-style: italic;" class="mycode_i">distribute</span> the attack source across dozens, hundreds or thousands of different network hosts in a Distributed Denial of Service attack, or DDoS attack.<br />
<br />
So the goal of a Denial of Service attack is to obviously deny service. But how?<br />
<br />
<hr class="mycode_hr" />
<span style="font-weight: bold;" class="mycode_b">Brute force!</span><br />
A very common way is to overwhelm whatever computer is offering that service to the Internet by simply sending too many network packets for it to feasibly process and understand what to do with. There are two common ways to do this:<ul class="mycode_list"><li>SYN flooding - In the Transmission Control Protocol (TCP), in order to connect to a server and start sharing data, you need to perform something called a <span style="font-style: italic;" class="mycode_i">handshake</span> to open the connection. This handshake starts with a SYN (sync) segment, which gives the server the necessary information to synchronize your connection settings for error free transmission. Afterwards, the server the server sends an ACK(nowledgement) segment verifying that it got your information, and then the server sends you its SYN segment. Finally, you ACK the server's SYN, and you're ready to transmit.<br />
<br />
Now the problem comes with an attacker sending millions of SYN segments to a listening TCP port per second, usually with a different spoofed source address every time. The server will get these SYNs, send a SYN-ACK back for every single one, and then wait until the timeout period ends for you to respond with an ACK. If enough computer resources are spent replying to and waiting on these fraudulent SYN segments, there won't be enough resources to properly respond to <span style="font-style: italic;" class="mycode_i">legitimate</span> connection requests, meaning they cannot connect to the server.<br />
<br />
This attack is mitigated using several clever defense mechanisms outlined in <a href="https://tools.ietf.org/html/rfc4987" target="_blank" rel="noopener" class="mycode_url">RFC4987</a>, and isn't very effective without massive traffic volumes.<br />
<br />
</li>
<li>UDP flooding - the User Datagram Protocol (UDP), in contrast to TCP, is a very simple networking protocol. User sends data, server (probably) gets data, and whatever application that data goes to has to figure out the rest. In a UDP flood, bogus UDP packets are sent to the server on random ports, where the server uses CPU time to check if an application is listening on the port. If it's not, it uses even more CPU time to send an ICMP Destination Unreachable packet back to the source IP. The idea here is the server will waste time spewing out ICMP packets to random addresses, but this is easily mitigated by reducing the number of ICMP packets that are allowed to be sent per second. Again, this attack isn't effective without massive volumes of traffic.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Telling other things to use brute force for you!</span><br />
Instead of using their own computer to generate overwhelming network traffic, attackers can use a technique called amplification to multiply their bandwidth to an attack target. By using network hosts running protocols that allow us to send relatively small amounts of traffic, and have that server return an even larger amount of traffic, we can exploit this to "amplify" the amount of traffic coming out of our source computer. <br />
<br />
A relatively recent method to do this is is with the <a href="https://github.com/memcached/memcached" target="_blank" rel="noopener" class="mycode_url">memcached protocol</a>, a protocol used to store common web requests and database queries in memory instead of running these requests every time. Afterwards, a service (usually an internal one) can request data from the memcache, and the memcache can provide the large data from memory very quickly. So we have a protocol that allows you to request data with very little effort, and will reply with a relatively huge amount of data, and if incorrectly configured, can be done from the open internet.. can you see where this is going?<br />
<br />
On February 28th, 2018, GitHub was victim to an amplification attack using exposed memcached servers. It was the largest DDoS attack ever performed, with a maximum traffic volume of 1.3 terabits per second of traffic being sent to GitHub's border network and DDoS mitigation network. The attack lasted 28 minutes, with amazingly, both GitHub and GitHub's DDoS protection service surviving the assault with minimal disruption.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Controlling other computers to use brute force for you!</span><br />
This is probably the one you've heard of the most. Another excellent way to initiate DDoS attacks is by writing malware designed to give you remote control of an infected system, where afterwards you can instruct the infected systems to attack whoever you want, however you like. This collection of "zombie computers" is called a botnet.<br />
<br />
This model is effective and versatile, but comes with effort. An attacker needs to successfully write malware, usually a Trojan, to compromise several hundred or thousand computers across the Internet, and have this process not be traceable back to the attacker. Additionally, an attacker needs to maintain this botnet, by creating new malware and making workarounds for security patches for existing compromised systems. This makes it infeasible for a random threat actor wanting to cause trouble to perform, and those who do perform it, offer their services in exchange for money. Most of these are not explicitly advertised as "DDoS" tools, as this would draw attention, but if you google "network stress test service" you'll definitely find something.<br />
<br />
The most famous DDoS attack performed with a botnet was in 2004, through the largest, most expensive and fastest spreading computer virus to date. W32.MyDoom@mm "mydoom" was an email worm discovered on Jan 26th, 2004 at 8am by McAfee security engineers. By 4pm on the same day, web traffic slowed 10% overall, with 50% of email messages being sent across the internet originating from infected systems. On February 1st, a DDoS attack consisting of approximately 1 million infected computers was directed towards <a href="http://www.sco.com" target="_blank" rel="noopener" class="mycode_url">www.sco.com</a>, with the attack being so severe that the website was temporarily removed from the DNS by DNS service providers.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">With software vulnerabilities!</span><br />
The kind of DoS (usually not DDoS) attacks we almost exclusively see are called application layer denial of service attacks, where instead of attacking the network and transport layers of the network stack, an attacker attacks the application directly using a vulnerability in the software. This type of attack flies under the radar of just about every DoS protection a server has, because it's not a DoS in the traditional "spam random garbage at the server until it goes down" fashion. These attacks use known exploits in the software they are attacking (like an outdated or unpatched version of Apache webserver, or in our case, a 20 year old video game server) to slow performance or even stop the application from working.<br />
<br />
In Garry's Mod, I call these "lag scripts" (because they are NOT a DDoS), which are a feature in many paid hack clients. I don't know what mechanism makes these attacks work, but I am thankful that it is difficult enough to perform to warrant charging money for the software that can do it.<br />
<br />
<hr class="mycode_hr" />
<span style="font-weight: bold;" class="mycode_b">So if our server only sees these "lag scripts", are normal DDoS attacks still a threat to our server?</span><br />
The answer is technically yes, but no. Is 50 caliber sniper rifle pointed at your head a threat? Yes. Is it still a threat when you're standing behind 5 inches of steel plating? A little bit, but not really.<br />
<br />
Dinkleberg's TTT and Dinkleberg's Prophunt (and most likely the other two servers) use <a href="https://www.nfoservers.com/" target="_blank" rel="noopener" class="mycode_url">NFOservers</a>. This hosting provider uses in house DDoS protection, extremely high speed links to the Internet, and a very high availability internal network. These selling points drive up the price a lot, but the fact that we've been using this server host for so long has been a huge factor for the server's success. Our latency is EXTREMELY low compared to other servers, and we are only matched by other servers using NFO. We are basically always at the top of the server list as long as you are on the eastern United States, DESPITE having enterprise grade DDoS protection.<br />
<br />
Unless the threat actor has either an absolutely gigantic botnet or has a nasty zero-day exploit up their sleeve, if a DDoS attack is launched on one of our servers, it's going to be completely unnoticeable to the players. In a worst case, NFO will crank up the firewall on your box a little bit and players will experience a few ms higher latency, but there will not be an interruption of service. Only during a MASSIVE attack will we ever have our server disrupted.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Do player bans prevent DDoS attacks?</span><br />
An attacker doesn't need to be connected to the server, or even know what the server does, to launch a DDoS against it. However, denial of service done through lag hacks require the player to be connected, so banning them solves the problem.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Do IP bans prevent DDoS attacks?</span><br />
No, ULX IP bans work at the application layer and provide no traffic blocking. These are the exact same thing as steamid bans, but with IPs. Besides, with a DDoS attack, traffic comes from multiple IPs, so even if blocking was provided by banning IPs through ULX, it wouldn't be effective unless you banned every single attacker IP. This wouldn't be necessary though, because NFO's DDoS protection initiates temporary blocks on attacker IPs during an attack. IP bans do protect against lag hacks by disconnecting the player, but IP bans are significantly less effective than steamid bans because of the way IP addresses are given to internet users by their ISPs. Ban evasion is as simple as unplugging your router and plugging it back in.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">If we are safe against DDoS attacks, what can we do about lag hacks?</span><br />
Detecting the exact player doing it is difficult (unless they're a moron and say something like "ddosing your server lul" in chat), but the only thing you can do is ban the player responsible. A trick I picked up over the years is that if a player is using a sophisticated enough hacked client, running the ulx getcommandtable command on them won't return anything because the hack blocks this data from being sent. If the table doesn't show up, they are hacking.<br />
<hr class="mycode_hr" />
<br />
I wrote this over a few days because the nerd in me gets irritated at people saying things are DDoS attacks when they aren't ;) hopefully you can find this somewhat useful/entertaining even though this is one chonkin forum post.]]></description>
			<content:encoded><![CDATA[When I say "DDoS", many people imagine an intimidating hackerman joining the server, and then magically the entire server starts lagging when he gives the magic word. Or maybe it's a weird guy you ticked off on the YouTube comment section, and right after he posts an intimidating message, your Internet shuts off. With the stereotype of what a DDoS attack is floating around, I wanted to explain what a DDoS attack <span style="font-style: italic;" class="mycode_i">actually</span> is, how attackers use them to deny service, and how most attacks on our server that make them lag are almost definitely not DDoS attacks.<br />
<br />
DDoS originates from the acronym DoS, standing for Denial of Service. The goals of these attacks are to prevent a network service from being usable normally, usually by disrupting the server computer that's running the service. Most commonly this is done with overwhelming network traffic onto that server computer. However, as the sophistication of the computer networks protecting these servers increased, the feasibility of using a single network host to send any meaningful network traffic to achieve a disruption was lowering fast. This prompts the need to <span style="font-style: italic;" class="mycode_i">distribute</span> the attack source across dozens, hundreds or thousands of different network hosts in a Distributed Denial of Service attack, or DDoS attack.<br />
<br />
So the goal of a Denial of Service attack is to obviously deny service. But how?<br />
<br />
<hr class="mycode_hr" />
<span style="font-weight: bold;" class="mycode_b">Brute force!</span><br />
A very common way is to overwhelm whatever computer is offering that service to the Internet by simply sending too many network packets for it to feasibly process and understand what to do with. There are two common ways to do this:<ul class="mycode_list"><li>SYN flooding - In the Transmission Control Protocol (TCP), in order to connect to a server and start sharing data, you need to perform something called a <span style="font-style: italic;" class="mycode_i">handshake</span> to open the connection. This handshake starts with a SYN (sync) segment, which gives the server the necessary information to synchronize your connection settings for error free transmission. Afterwards, the server the server sends an ACK(nowledgement) segment verifying that it got your information, and then the server sends you its SYN segment. Finally, you ACK the server's SYN, and you're ready to transmit.<br />
<br />
Now the problem comes with an attacker sending millions of SYN segments to a listening TCP port per second, usually with a different spoofed source address every time. The server will get these SYNs, send a SYN-ACK back for every single one, and then wait until the timeout period ends for you to respond with an ACK. If enough computer resources are spent replying to and waiting on these fraudulent SYN segments, there won't be enough resources to properly respond to <span style="font-style: italic;" class="mycode_i">legitimate</span> connection requests, meaning they cannot connect to the server.<br />
<br />
This attack is mitigated using several clever defense mechanisms outlined in <a href="https://tools.ietf.org/html/rfc4987" target="_blank" rel="noopener" class="mycode_url">RFC4987</a>, and isn't very effective without massive traffic volumes.<br />
<br />
</li>
<li>UDP flooding - the User Datagram Protocol (UDP), in contrast to TCP, is a very simple networking protocol. User sends data, server (probably) gets data, and whatever application that data goes to has to figure out the rest. In a UDP flood, bogus UDP packets are sent to the server on random ports, where the server uses CPU time to check if an application is listening on the port. If it's not, it uses even more CPU time to send an ICMP Destination Unreachable packet back to the source IP. The idea here is the server will waste time spewing out ICMP packets to random addresses, but this is easily mitigated by reducing the number of ICMP packets that are allowed to be sent per second. Again, this attack isn't effective without massive volumes of traffic.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Telling other things to use brute force for you!</span><br />
Instead of using their own computer to generate overwhelming network traffic, attackers can use a technique called amplification to multiply their bandwidth to an attack target. By using network hosts running protocols that allow us to send relatively small amounts of traffic, and have that server return an even larger amount of traffic, we can exploit this to "amplify" the amount of traffic coming out of our source computer. <br />
<br />
A relatively recent method to do this is is with the <a href="https://github.com/memcached/memcached" target="_blank" rel="noopener" class="mycode_url">memcached protocol</a>, a protocol used to store common web requests and database queries in memory instead of running these requests every time. Afterwards, a service (usually an internal one) can request data from the memcache, and the memcache can provide the large data from memory very quickly. So we have a protocol that allows you to request data with very little effort, and will reply with a relatively huge amount of data, and if incorrectly configured, can be done from the open internet.. can you see where this is going?<br />
<br />
On February 28th, 2018, GitHub was victim to an amplification attack using exposed memcached servers. It was the largest DDoS attack ever performed, with a maximum traffic volume of 1.3 terabits per second of traffic being sent to GitHub's border network and DDoS mitigation network. The attack lasted 28 minutes, with amazingly, both GitHub and GitHub's DDoS protection service surviving the assault with minimal disruption.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Controlling other computers to use brute force for you!</span><br />
This is probably the one you've heard of the most. Another excellent way to initiate DDoS attacks is by writing malware designed to give you remote control of an infected system, where afterwards you can instruct the infected systems to attack whoever you want, however you like. This collection of "zombie computers" is called a botnet.<br />
<br />
This model is effective and versatile, but comes with effort. An attacker needs to successfully write malware, usually a Trojan, to compromise several hundred or thousand computers across the Internet, and have this process not be traceable back to the attacker. Additionally, an attacker needs to maintain this botnet, by creating new malware and making workarounds for security patches for existing compromised systems. This makes it infeasible for a random threat actor wanting to cause trouble to perform, and those who do perform it, offer their services in exchange for money. Most of these are not explicitly advertised as "DDoS" tools, as this would draw attention, but if you google "network stress test service" you'll definitely find something.<br />
<br />
The most famous DDoS attack performed with a botnet was in 2004, through the largest, most expensive and fastest spreading computer virus to date. W32.MyDoom@mm "mydoom" was an email worm discovered on Jan 26th, 2004 at 8am by McAfee security engineers. By 4pm on the same day, web traffic slowed 10% overall, with 50% of email messages being sent across the internet originating from infected systems. On February 1st, a DDoS attack consisting of approximately 1 million infected computers was directed towards <a href="http://www.sco.com" target="_blank" rel="noopener" class="mycode_url">www.sco.com</a>, with the attack being so severe that the website was temporarily removed from the DNS by DNS service providers.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">With software vulnerabilities!</span><br />
The kind of DoS (usually not DDoS) attacks we almost exclusively see are called application layer denial of service attacks, where instead of attacking the network and transport layers of the network stack, an attacker attacks the application directly using a vulnerability in the software. This type of attack flies under the radar of just about every DoS protection a server has, because it's not a DoS in the traditional "spam random garbage at the server until it goes down" fashion. These attacks use known exploits in the software they are attacking (like an outdated or unpatched version of Apache webserver, or in our case, a 20 year old video game server) to slow performance or even stop the application from working.<br />
<br />
In Garry's Mod, I call these "lag scripts" (because they are NOT a DDoS), which are a feature in many paid hack clients. I don't know what mechanism makes these attacks work, but I am thankful that it is difficult enough to perform to warrant charging money for the software that can do it.<br />
<br />
<hr class="mycode_hr" />
<span style="font-weight: bold;" class="mycode_b">So if our server only sees these "lag scripts", are normal DDoS attacks still a threat to our server?</span><br />
The answer is technically yes, but no. Is 50 caliber sniper rifle pointed at your head a threat? Yes. Is it still a threat when you're standing behind 5 inches of steel plating? A little bit, but not really.<br />
<br />
Dinkleberg's TTT and Dinkleberg's Prophunt (and most likely the other two servers) use <a href="https://www.nfoservers.com/" target="_blank" rel="noopener" class="mycode_url">NFOservers</a>. This hosting provider uses in house DDoS protection, extremely high speed links to the Internet, and a very high availability internal network. These selling points drive up the price a lot, but the fact that we've been using this server host for so long has been a huge factor for the server's success. Our latency is EXTREMELY low compared to other servers, and we are only matched by other servers using NFO. We are basically always at the top of the server list as long as you are on the eastern United States, DESPITE having enterprise grade DDoS protection.<br />
<br />
Unless the threat actor has either an absolutely gigantic botnet or has a nasty zero-day exploit up their sleeve, if a DDoS attack is launched on one of our servers, it's going to be completely unnoticeable to the players. In a worst case, NFO will crank up the firewall on your box a little bit and players will experience a few ms higher latency, but there will not be an interruption of service. Only during a MASSIVE attack will we ever have our server disrupted.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Do player bans prevent DDoS attacks?</span><br />
An attacker doesn't need to be connected to the server, or even know what the server does, to launch a DDoS against it. However, denial of service done through lag hacks require the player to be connected, so banning them solves the problem.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Do IP bans prevent DDoS attacks?</span><br />
No, ULX IP bans work at the application layer and provide no traffic blocking. These are the exact same thing as steamid bans, but with IPs. Besides, with a DDoS attack, traffic comes from multiple IPs, so even if blocking was provided by banning IPs through ULX, it wouldn't be effective unless you banned every single attacker IP. This wouldn't be necessary though, because NFO's DDoS protection initiates temporary blocks on attacker IPs during an attack. IP bans do protect against lag hacks by disconnecting the player, but IP bans are significantly less effective than steamid bans because of the way IP addresses are given to internet users by their ISPs. Ban evasion is as simple as unplugging your router and plugging it back in.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">If we are safe against DDoS attacks, what can we do about lag hacks?</span><br />
Detecting the exact player doing it is difficult (unless they're a moron and say something like "ddosing your server lul" in chat), but the only thing you can do is ban the player responsible. A trick I picked up over the years is that if a player is using a sophisticated enough hacked client, running the ulx getcommandtable command on them won't return anything because the hack blocks this data from being sent. If the table doesn't show up, they are hacking.<br />
<hr class="mycode_hr" />
<br />
I wrote this over a few days because the nerd in me gets irritated at people saying things are DDoS attacks when they aren't ;) hopefully you can find this somewhat useful/entertaining even though this is one chonkin forum post.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Increase Garry's Mod Performance (64-bit Guide)]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=13719</link>
			<pubDate>Fri, 19 Feb 2021 19:44:25 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=11329">bryanbrr</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=13719</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="color: #e82a1f;" class="mycode_color">(DISCLAIMER: THIS WON'T WORK IN EVERY SITUATION. IT HAS HELPED ME PERSONALLY WITH MASSIVE FPS DROPS)</span></div>
<span style="font-weight: bold;" class="mycode_b">1. Open up Steam and go to Steam Library<br />
</span><img src="https://i.ibb.co/qYrpSS4/Library-Page.png" loading="lazy"  alt="[Image: Library-Page.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Right-Click on Garry's Mod and select Properties. It should open this menu with the option of Betas. </span><br />
<span style="font-weight: bold;" class="mycode_b"><img src="https://i.ibb.co/jRnXLDz/Betas.png" loading="lazy"  width="640" height="480" alt="[Image: Betas.png]" class="mycode_img" /></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Click on (None) and Select the Option in Red</span><br />
<img src="https://i.ibb.co/gVmny9M/Screenshot-285.png" loading="lazy"  width="640" height="480" alt="[Image: Screenshot-285.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. After making this selection, Garry's Mod should begin to update. After the update finishes open Garry's Mod from within Steam and Select the Icon Below. </span><br />
<img src="https://i.ibb.co/2YT4gGj/Launch.png" loading="lazy"  alt="[Image: Launch.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Enjoy more FPS!</span>]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="color: #e82a1f;" class="mycode_color">(DISCLAIMER: THIS WON'T WORK IN EVERY SITUATION. IT HAS HELPED ME PERSONALLY WITH MASSIVE FPS DROPS)</span></div>
<span style="font-weight: bold;" class="mycode_b">1. Open up Steam and go to Steam Library<br />
</span><img src="https://i.ibb.co/qYrpSS4/Library-Page.png" loading="lazy"  alt="[Image: Library-Page.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Right-Click on Garry's Mod and select Properties. It should open this menu with the option of Betas. </span><br />
<span style="font-weight: bold;" class="mycode_b"><img src="https://i.ibb.co/jRnXLDz/Betas.png" loading="lazy"  width="640" height="480" alt="[Image: Betas.png]" class="mycode_img" /></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Click on (None) and Select the Option in Red</span><br />
<img src="https://i.ibb.co/gVmny9M/Screenshot-285.png" loading="lazy"  width="640" height="480" alt="[Image: Screenshot-285.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. After making this selection, Garry's Mod should begin to update. After the update finishes open Garry's Mod from within Steam and Select the Icon Below. </span><br />
<img src="https://i.ibb.co/2YT4gGj/Launch.png" loading="lazy"  alt="[Image: Launch.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Enjoy more FPS!</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[The OBS Replay Buffer]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=13408</link>
			<pubDate>Thu, 31 Dec 2020 07:57:45 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=75">RussEfarmer</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=13408</guid>
			<description><![CDATA[The OBS replay buffer is a method of recording in OBS where instead of recording to a file on disk, you run a continuous recording to memory, and have a hotkey to dump that recording to disk at any time. This is extremely useful, since instead of recording hours and hours of footage, you can use replay buffer to keep, say, 600 seconds of video in memory at all times, and if something happened that you want to save as a recording, you can dump that 600 seconds into a file on disk.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Recording Settings</span><br />
<hr class="mycode_hr" />
(these steps aren't in any particular order)<br />
<br />
To use the replay buffer, you need to go to the output tab and set the output mode to advanced in the top. Replay buffer isn't enabled in simple mode.<br />
<br />
Set your recording format to mkv (mp4 also works fine, but is less robust against crashes or problems with saving the recording), and if you have an NVIDIA GTX or RTX graphics card, set the encoder to NVENC. If you have both the NVENC and the NVENC (new) option, use the new option. The NVENC encoder uses the video encoder that is integrated into almost all GTX graphics cards or any RTX graphics card to process video instead of using a large chunk of the CPU, meaning that framerate is not affected nearly as much. If you do not have a GTX or RTX card, use x264. Next, you can follow <span style="font-weight: bold;" class="mycode_b"><a href="https://stream.twitch.tv/encoding/" target="_blank" rel="noopener" class="mycode_url">this guide</a></span> to dial in settings for recording under the rate control section. The left side is for NVENC, the right side is for x264. I recommend loading up a map and testing your recording settings by moving and jumping around for a few seconds, then watching it back. If your recording is blurry and blocky, increase the bitrate by a couple thousand if you're using NVENC, or if you're using x264 increase either the CPU usage preset or bitrate.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Make sure you adjusted these settings on the Recording tab and not the Streaming tab. In advanced mode, they look exactly the same.</span><br />
<br />
To set the resolution and framerate, move to the video tab. The canvas resolution should be the screen resolution of your monitor, and the scaled resolution should be whatever resolution you want the recorded video to be. 1280x720 works perfectly without making a giant file. The downscale filter works fine on either 16 or 36 samples, but 36 samples may use more computer resources. Unless you have a good computer, disk space to spare and absolutely love 60 fps, leaving the framerate at 30 fps is fine. I record at 60 because 60 looks awesome.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">You want to add a scene in OBS and use the "Game Capture" to capture only Garry's Mod. Do not use "Display Capture", because capturing the entire display will load your CPU/GPU a lot more than Game Capture.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Configuring Replay Buffer</span><br />
<hr class="mycode_hr" />
The more seconds you want to record to replay buffer, the more memory OBS will use to store the video.<br />
<br />
To enable the replay buffer, go to the output tab, then the replay buffer tab. Click enable replay buffer, and set the number of seconds you want to record for. Next, you need to set a hotkey to dump your recording in the hotkeys tab. The hotkey is called "Save Replay". Insert is the key I use because nothing elseuses insert.<br />
<br />
For players that want to save funny clips, I recommend at least a 60 second replay buffer. I personally would be more comfortable with a 150 second replay buffer (2.5 minutes). For staff members, I would recommend a longer replay buffer of 300-600 seconds (5-10 minutes). For recording players for evidence, I have a million gigabytes of RAM, so I do a replay buffer of 1200 seconds (20 minutes) "just in case&#153;."<br />
<br />
If you're running out of memory, you either need to decrease your recording bitrate, decrease your recording resolution, or decrease the number of seconds on your replay buffer. Windows will constantly try to move memory that isn't actively being used to your hard drive, such as a Google Chrome tab you haven't opened in the last 3 hours. If you notice that your computer is using 50% of memory and you only have 4GB free and don't think that will be enough, don't worry, because as soon as OBS starts eating memory for recording, Windows will try to make space in memory for it. You most likely won't run out very easily.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Remux MKV Recordings</span><br />
<hr class="mycode_hr" />
MKV is used as opposed to MP4 because if you're recording using MP4 and OBS crashes, or the file fails to write completely for whatever reason, the entire recording is gone. The only downside to this is that many video editing programs don't support MKV files. Luckily, OBS has a built in method to convert between MKV and MP4, and unlike a complete rerender, takes almost no time at all.<br />
<br />
To remux a recording, go to File &gt; Remux Recordings. Here, you can select a recording, or multiple recordings, to convert to MP4. When you select them, just press remux, and it should complete fairly quickly. The remuxed MP4 files are saved to your recording folder. To differentiate between the old MKV files and the new MP4 files, I recommend using Windows Explorer to sort by file type.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Shrinking Files with Rerendering</span><br />
<hr class="mycode_hr" />
If you're struggling with large files being uploaded to YouTube, or have a video editor that doesn't like what OBS Remux spits out, you can use a tool called Handbrake to rerender files in h264 MP4 files, which basically anything can use. It has a ton of presets, I personally use Fast 720p for uploading to YouTube. Files that get spat out by this thing are usually compressed very efficiently.<br />
<br />
Note that Handbrake sometimes likes to export files as .M4V files instead of .MP4 files. They're the exact same file, and you can just change the extension.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Using a Second GPU for NVENC</span><br />
<hr class="mycode_hr" />
If you have a second GTX GPU installed in your system, you can use it specifically for video recording, and keep your main graphics card free for playing games. To do this, go to the output tab, move to the recording tab, and change the "GPU" box from 0 to 1. You can use the task manager to verify that your second GPU is actually being used for recording. The nice thing about doing this is that the graphics card you use for this doesn't have to be particularly powerful. In my case, I upgraded to a GTX 1660 Super, and I have my old GTX 1050 Ti plugged in below it. The 1050 Ti is only at 25% capacity while recording, while the primary GPU is completely free to run games.<br />
<br />
..<br />
<br />
I know there's a ton of guides on this already, but I've been battling with OBS for probably four years now, and I'd figure I'd share what works for me and hopefully some useful information. This was written in about 45 minutes at 3AM, so if there are typos or some weird grammar.. oops I guess.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">If you need any help getting this working, feel free to contact me through the Discord or forum PM</span>]]></description>
			<content:encoded><![CDATA[The OBS replay buffer is a method of recording in OBS where instead of recording to a file on disk, you run a continuous recording to memory, and have a hotkey to dump that recording to disk at any time. This is extremely useful, since instead of recording hours and hours of footage, you can use replay buffer to keep, say, 600 seconds of video in memory at all times, and if something happened that you want to save as a recording, you can dump that 600 seconds into a file on disk.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Recording Settings</span><br />
<hr class="mycode_hr" />
(these steps aren't in any particular order)<br />
<br />
To use the replay buffer, you need to go to the output tab and set the output mode to advanced in the top. Replay buffer isn't enabled in simple mode.<br />
<br />
Set your recording format to mkv (mp4 also works fine, but is less robust against crashes or problems with saving the recording), and if you have an NVIDIA GTX or RTX graphics card, set the encoder to NVENC. If you have both the NVENC and the NVENC (new) option, use the new option. The NVENC encoder uses the video encoder that is integrated into almost all GTX graphics cards or any RTX graphics card to process video instead of using a large chunk of the CPU, meaning that framerate is not affected nearly as much. If you do not have a GTX or RTX card, use x264. Next, you can follow <span style="font-weight: bold;" class="mycode_b"><a href="https://stream.twitch.tv/encoding/" target="_blank" rel="noopener" class="mycode_url">this guide</a></span> to dial in settings for recording under the rate control section. The left side is for NVENC, the right side is for x264. I recommend loading up a map and testing your recording settings by moving and jumping around for a few seconds, then watching it back. If your recording is blurry and blocky, increase the bitrate by a couple thousand if you're using NVENC, or if you're using x264 increase either the CPU usage preset or bitrate.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Make sure you adjusted these settings on the Recording tab and not the Streaming tab. In advanced mode, they look exactly the same.</span><br />
<br />
To set the resolution and framerate, move to the video tab. The canvas resolution should be the screen resolution of your monitor, and the scaled resolution should be whatever resolution you want the recorded video to be. 1280x720 works perfectly without making a giant file. The downscale filter works fine on either 16 or 36 samples, but 36 samples may use more computer resources. Unless you have a good computer, disk space to spare and absolutely love 60 fps, leaving the framerate at 30 fps is fine. I record at 60 because 60 looks awesome.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">You want to add a scene in OBS and use the "Game Capture" to capture only Garry's Mod. Do not use "Display Capture", because capturing the entire display will load your CPU/GPU a lot more than Game Capture.</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Configuring Replay Buffer</span><br />
<hr class="mycode_hr" />
The more seconds you want to record to replay buffer, the more memory OBS will use to store the video.<br />
<br />
To enable the replay buffer, go to the output tab, then the replay buffer tab. Click enable replay buffer, and set the number of seconds you want to record for. Next, you need to set a hotkey to dump your recording in the hotkeys tab. The hotkey is called "Save Replay". Insert is the key I use because nothing elseuses insert.<br />
<br />
For players that want to save funny clips, I recommend at least a 60 second replay buffer. I personally would be more comfortable with a 150 second replay buffer (2.5 minutes). For staff members, I would recommend a longer replay buffer of 300-600 seconds (5-10 minutes). For recording players for evidence, I have a million gigabytes of RAM, so I do a replay buffer of 1200 seconds (20 minutes) "just in case&#153;."<br />
<br />
If you're running out of memory, you either need to decrease your recording bitrate, decrease your recording resolution, or decrease the number of seconds on your replay buffer. Windows will constantly try to move memory that isn't actively being used to your hard drive, such as a Google Chrome tab you haven't opened in the last 3 hours. If you notice that your computer is using 50% of memory and you only have 4GB free and don't think that will be enough, don't worry, because as soon as OBS starts eating memory for recording, Windows will try to make space in memory for it. You most likely won't run out very easily.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Remux MKV Recordings</span><br />
<hr class="mycode_hr" />
MKV is used as opposed to MP4 because if you're recording using MP4 and OBS crashes, or the file fails to write completely for whatever reason, the entire recording is gone. The only downside to this is that many video editing programs don't support MKV files. Luckily, OBS has a built in method to convert between MKV and MP4, and unlike a complete rerender, takes almost no time at all.<br />
<br />
To remux a recording, go to File &gt; Remux Recordings. Here, you can select a recording, or multiple recordings, to convert to MP4. When you select them, just press remux, and it should complete fairly quickly. The remuxed MP4 files are saved to your recording folder. To differentiate between the old MKV files and the new MP4 files, I recommend using Windows Explorer to sort by file type.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Shrinking Files with Rerendering</span><br />
<hr class="mycode_hr" />
If you're struggling with large files being uploaded to YouTube, or have a video editor that doesn't like what OBS Remux spits out, you can use a tool called Handbrake to rerender files in h264 MP4 files, which basically anything can use. It has a ton of presets, I personally use Fast 720p for uploading to YouTube. Files that get spat out by this thing are usually compressed very efficiently.<br />
<br />
Note that Handbrake sometimes likes to export files as .M4V files instead of .MP4 files. They're the exact same file, and you can just change the extension.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Using a Second GPU for NVENC</span><br />
<hr class="mycode_hr" />
If you have a second GTX GPU installed in your system, you can use it specifically for video recording, and keep your main graphics card free for playing games. To do this, go to the output tab, move to the recording tab, and change the "GPU" box from 0 to 1. You can use the task manager to verify that your second GPU is actually being used for recording. The nice thing about doing this is that the graphics card you use for this doesn't have to be particularly powerful. In my case, I upgraded to a GTX 1660 Super, and I have my old GTX 1050 Ti plugged in below it. The 1050 Ti is only at 25% capacity while recording, while the primary GPU is completely free to run games.<br />
<br />
..<br />
<br />
I know there's a ton of guides on this already, but I've been battling with OBS for probably four years now, and I'd figure I'd share what works for me and hopefully some useful information. This was written in about 45 minutes at 3AM, so if there are typos or some weird grammar.. oops I guess.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">If you need any help getting this working, feel free to contact me through the Discord or forum PM</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[What is FastDL?]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=13381</link>
			<pubDate>Tue, 29 Dec 2020 05:37:14 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=75">RussEfarmer</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=13381</guid>
			<description><![CDATA[FastDL is a technology that source games use that, as the name implies, allows you to download things quickly from the server.<br />
<br />
When you join a server, the client will try to mimic the content of the server. If content is missing, it will attempt to download it from the server before giving up. By default, this download uses the client/server network connection (client port 27005, server port 27015). This is a bad thing, because this connection is limited to 30 kilobytes per second.<br />
<br />
To fix this, source games have a server cvar that can be set to tell the client where to download content from called sv_downloadurl. This is set to a plain old HTTP server that contains a copy of the server content that needs to be sent to the client. In the case of Dinks TTT, this url is <a href="http://dinklebergsttt.site.nfoservers.com/server" target="_blank" rel="noopener" class="mycode_url">http://dinklebergsttt.site.nfoservers.com/server</a>.<br />
<br />
Whenever the client is missing a map the server is playing on, instead of the server sending it from its own file system, it tells the client to find the file on this web server. This has the advantage of being much faster, taking full advantage of HTTP file transfers instead of the Source Engine's built in file transfer system. It also has the advantage of reducing lag, since the machine that sends players files and the machine that runs the game server are separate, which makes the connection to the game server a lot less congested.<br />
<br />
Tools exist for synchronizing the FastDL HTTP server and the server content. One of these tools is SourceRSC, which automatically transfers your files from the server to the FastDL server with FTP, and compresses them into the BZIP2 format for smaller file sizes. Source games can natively unzip BZIP2 files.<br />
<br />
There are also other ways the client can receive files from the server. The argument +host_workshop_collection [url] can be ran from server startup, and can tell the client to download the addons in a workshop collection before joining. Another more popular method is to use a workshop.lua file in the lua\autorun\server folder, containing resource.AddWorkshop functions that individually tell the client what workshop addons it should subscribe to before joining. There is a tool to automatically create these files at <a href="https://csite.io/tools/gmod-universal-workshop" target="_blank" rel="noopener" class="mycode_url">https://csite.io/tools/gmod-universal-workshop</a>. Both of these have the advantage of not using server bandwidth at all, and instead using the Steam workshop.<br />
<br />
Hope this was interesting to..someone. What's the point of having completely useless knowledge if you can't post it?]]></description>
			<content:encoded><![CDATA[FastDL is a technology that source games use that, as the name implies, allows you to download things quickly from the server.<br />
<br />
When you join a server, the client will try to mimic the content of the server. If content is missing, it will attempt to download it from the server before giving up. By default, this download uses the client/server network connection (client port 27005, server port 27015). This is a bad thing, because this connection is limited to 30 kilobytes per second.<br />
<br />
To fix this, source games have a server cvar that can be set to tell the client where to download content from called sv_downloadurl. This is set to a plain old HTTP server that contains a copy of the server content that needs to be sent to the client. In the case of Dinks TTT, this url is <a href="http://dinklebergsttt.site.nfoservers.com/server" target="_blank" rel="noopener" class="mycode_url">http://dinklebergsttt.site.nfoservers.com/server</a>.<br />
<br />
Whenever the client is missing a map the server is playing on, instead of the server sending it from its own file system, it tells the client to find the file on this web server. This has the advantage of being much faster, taking full advantage of HTTP file transfers instead of the Source Engine's built in file transfer system. It also has the advantage of reducing lag, since the machine that sends players files and the machine that runs the game server are separate, which makes the connection to the game server a lot less congested.<br />
<br />
Tools exist for synchronizing the FastDL HTTP server and the server content. One of these tools is SourceRSC, which automatically transfers your files from the server to the FastDL server with FTP, and compresses them into the BZIP2 format for smaller file sizes. Source games can natively unzip BZIP2 files.<br />
<br />
There are also other ways the client can receive files from the server. The argument +host_workshop_collection [url] can be ran from server startup, and can tell the client to download the addons in a workshop collection before joining. Another more popular method is to use a workshop.lua file in the lua\autorun\server folder, containing resource.AddWorkshop functions that individually tell the client what workshop addons it should subscribe to before joining. There is a tool to automatically create these files at <a href="https://csite.io/tools/gmod-universal-workshop" target="_blank" rel="noopener" class="mycode_url">https://csite.io/tools/gmod-universal-workshop</a>. Both of these have the advantage of not using server bandwidth at all, and instead using the Steam workshop.<br />
<br />
Hope this was interesting to..someone. What's the point of having completely useless knowledge if you can't post it?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Literally every console command]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=13339</link>
			<pubDate>Fri, 25 Dec 2020 02:21:14 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=75">Russ the Stress Queen</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=13339</guid>
			<description><![CDATA[<a href="https://gmbrblog.blogspot.com/2015/06/garrys-mod-cvar-list-console-commands.html" target="_blank" rel="noopener" class="mycode_url">Here's a table of literally every console command in vanilla Garry's Mod as of June 2015.</a><br />
<br />
Some of these commands aren't documented very well because of their lack of use and lack of help text. Google will usually help you find exactly what a command does if it's at all useful. Additionally, the <a href="https://developer.valvesoftware.com/wiki/Console_Command_List" target="_blank" rel="noopener" class="mycode_url">Valve Developer Wiki</a> will sometimes have good information on some commands, but not ones exclusive to Garry's Mod.<br />
<br />
The in game command to find this list is cvarlist [search text]. cvarlist voice will show you any command related to voice, and cvarlist sv will show you all commands that have "sv" in them.]]></description>
			<content:encoded><![CDATA[<a href="https://gmbrblog.blogspot.com/2015/06/garrys-mod-cvar-list-console-commands.html" target="_blank" rel="noopener" class="mycode_url">Here's a table of literally every console command in vanilla Garry's Mod as of June 2015.</a><br />
<br />
Some of these commands aren't documented very well because of their lack of use and lack of help text. Google will usually help you find exactly what a command does if it's at all useful. Additionally, the <a href="https://developer.valvesoftware.com/wiki/Console_Command_List" target="_blank" rel="noopener" class="mycode_url">Valve Developer Wiki</a> will sometimes have good information on some commands, but not ones exclusive to Garry's Mod.<br />
<br />
The in game command to find this list is cvarlist [search text]. cvarlist voice will show you any command related to voice, and cvarlist sv will show you all commands that have "sv" in them.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Push To Mute Bind On Discord]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=12616</link>
			<pubDate>Wed, 23 Sep 2020 07:41:38 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=11446">§bKiwi The Fruit</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=12616</guid>
			<description><![CDATA[Ever been in a Discord vc and Gmod at the same time? Fear not! Here's how to make a Push To Mute bind in Discord:<br />
<br />
1. Go to Settings in the bottom left of the Discord desktop client.<br />
2. Scroll down to where it says "Keybinds"<br />
3. Select "Add A Keybind" in the top right<br />
4. Change the action to "Push To Mute" and make the key "x"<br />
5. Boom! Never again will anyone need to hear you voice two times.<br />
<br />
<img src="https://cdn.discordapp.com/attachments/751507577602572428/758231420618801153/SNAGHTML851c986.png" loading="lazy"  alt="[Image: SNAGHTML851c986.png]" class="mycode_img" />]]></description>
			<content:encoded><![CDATA[Ever been in a Discord vc and Gmod at the same time? Fear not! Here's how to make a Push To Mute bind in Discord:<br />
<br />
1. Go to Settings in the bottom left of the Discord desktop client.<br />
2. Scroll down to where it says "Keybinds"<br />
3. Select "Add A Keybind" in the top right<br />
4. Change the action to "Push To Mute" and make the key "x"<br />
5. Boom! Never again will anyone need to hear you voice two times.<br />
<br />
<img src="https://cdn.discordapp.com/attachments/751507577602572428/758231420618801153/SNAGHTML851c986.png" loading="lazy"  alt="[Image: SNAGHTML851c986.png]" class="mycode_img" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Colors in Gmod!]]></title>
			<link>https://www.dinklebergsgmod.com/site/showthread.php?tid=12183</link>
			<pubDate>Thu, 13 Aug 2020 09:55:01 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dinklebergsgmod.com/site/member.php?action=profile&uid=11470">Aki (♥ω♥)</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dinklebergsgmod.com/site/showthread.php?tid=12183</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">I don't know if there is an official list or not so I'll just post this here haha.<br />
</span></div>
<div style="text-align: center;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">Link: <a href="https://docs.google.com/document/d/1ysAV8P3zuUovB-d6C0sR7TYOBljB0GneVB71aVvr1Ag/edit" target="_blank" rel="noopener" class="mycode_url">Colors in Gmod!</a></span></div>]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">I don't know if there is an official list or not so I'll just post this here haha.<br />
</span></div>
<div style="text-align: center;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">Link: <a href="https://docs.google.com/document/d/1ysAV8P3zuUovB-d6C0sR7TYOBljB0GneVB71aVvr1Ag/edit" target="_blank" rel="noopener" class="mycode_url">Colors in Gmod!</a></span></div>]]></content:encoded>
		</item>
	</channel>
</rss>