• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

delay reducer

Status
Not open for further replies.
Level 5
Joined
Mar 6, 2008
Messages
206
1st of all i know this is a wc3 editing forum, but there isnt a forum for just wc3 tools (i think, have looked)

when i play warcraft 3 i tend to play + host escapes and tds and people always complain about delay and it gets really annoying

does anyone know a website where a i can find a delay reducer. that works and is safe.

thanks

EDIT: wheres the download bloody_turds.
EDIT 2: i found the download but the zip file was invalid/corrupt
 
Last edited:

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,202
You can not reduce lag when playing. Anyone who thinks you can is probably not thinking straight. The "lag" is caused by the time your signal from your PC takes to reachtheirs and for their PCs to send a response back. Thus playing with people closer to you will mean overall less lag than on the other side of the world.

If you mean lag as in low FPS, then that is their fault that their PCs are not good enough or that your map is badly made. If you mean lag as in "waiting for player" or "hideouly long delays" then it is eithor the player's connections fault, their PC's fault or the hosts connection's fault (too slow to host).

If you mean lag as in the TriggerSleepAction delay, that is a WC3 bug and can not really be reduced.
 

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,202
Probably auto refresh and kicks and simlar stuff as well as score tracking. Really I have no idea. Maybe they disconect you from battlenet ingame so you do not receive messages to reduce speed unnoticably.

However, the minimum delay you can have is being host. Anyone else has the delay of about their propper ping (those ping programs on game join are incorrect).
 

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,202
it keeps the game off the server which infact helps STOP server discs
oximoron phrase.

SO it basically stops server disconnects by disconecting the server? that makes absoultly no sense.

Again, you probably mean it disconnects you from battlenet. Which is like I said eariler. The game keeps on going while the host is no longer connected to battlenet due to the host handling the other players not the battlenet. However I still do not really see how it works considering you actually do not send information via battlenet to other players ingame anyway unless you /w.

The only logical reason for better speeds I can see is that battlenet does not run all its funny hack checks on you.
 
Level 5
Joined
Mar 6, 2008
Messages
206
bloody_turds i tryed that link 1st of all, i registered but the folder was corrupt and had nothing in it
 
Last edited:
Level 5
Joined
Jun 5, 2007
Messages
73
Probably auto refresh and kicks and simlar stuff as well as score tracking. Really I have no idea. Maybe they disconect you from battlenet ingame so you do not receive messages to reduce speed unnoticably.

However, the minimum delay you can have is being host. Anyone else has the delay of about their propper ping (those ping programs on game join are incorrect).


Not really.. The pickuplistChecker makes it possible to host a game via the "Local Area Network" option in wc3 and publish it on battle.net. Wc3 automatically compensate lag for 300ms on battle.net which will cause a minimum of 300ms delay no matter what connection you have between clients. If you on the other hand host a game via LAN, there is no lag compensation obviously so there won't be any lag except for the delay caused by slow connections.
 

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,202
The fact is ingame it should not really matter as nothing goes through the servers anyway next to /w and such things. Thus the more logical questio nis why is there a forced delay when there is no need?.

You may find it has something to do with sync or something to prevent the host having unfair advantage over people far away.
 
Level 5
Joined
Jun 5, 2007
Messages
73
I've created a 'proof-of-concept' program which allows you to change the default 250ms hosting latency.. Attached below.
Edit: The program doesn't need to run after you've changed the latency, you can close it once it's done.
 

Attachments

  • DelayReducer.rar
    3.1 KB · Views: 231
Level 5
Joined
Mar 6, 2008
Messages
206
thanks risc but
a) my hosting has messed up... when i try to host a game it says
my messed up wc3 =( said:
file name invalid or too many characters
or something like that

and b) i don't know what to extract .rar files
 
Level 2
Joined
Jun 29, 2008
Messages
20
U need winrar or something which will extract
rar-archives. 7-zip is freeware and will do that for you:
http://www.7-zip.org/
Alright, back2thread:
The client will automatically increase delay or, if u want it that way, pings
to 300ms if they are lower.
If you host the game over LAN it will increase delay/ping too, but only to 100ms.
So, if you use ListChecker (and it isnt illegal as long as you use your own CD-Key for it) it will connect to Battle.NET and register your game there.
It will hold the connection to battle.net only to refresh your game in the list.
When the game is started, the connection will be dropped, so it now is running fully without BNet´s help. And because you used the menupoint "Local Network"
Wc3 (THE CLIENT) will treat the game like a LAN-game.
And thats, how delay is reduced. It will not reduces lags, but the delay, so
the units will react to your inputs earlier.

I hope I removed all doubts.

MfG chemderrick
 
Level 5
Joined
Jun 5, 2007
Messages
73
With my tool you don't need pickuplist since you can specify exactly which hosting latency your want (even on battle.net), though I wouldn't recommend 0 ms since that would probably cause desyncs.
 
Level 5
Joined
Mar 6, 2008
Messages
206
does anyone know what my problem with hosting is and how to sort it.
i could host before this occured
 
Level 5
Joined
Jun 5, 2007
Messages
73
You'll need .NET Framework 2.

EDIT: Here's the source:
Code:
//delayReducer
//Proof-of-concept hosting latency editor
//Copyright (c) 2008, E.Sandberg (Risc)
//Released under the GPL (http://www.gnu.org/licenses/gpl.txt)

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Diagnostics;

namespace DelayReducerConsole
{
    class Program
    {
        private const int PROCESS_ALL_ACCESS = 0x1F0FFF;
        #region Win32Imports
        [DllImport("kernel32.dll")]
        private static extern int ReadProcessMemory(int hProcess, int lpBaseAddress, out int lpBuffer, int nSize, 

int lpNumberOfBytesWritten);
        [DllImport("kernel32.dll")]
        private static extern int WriteProcessMemory(int hProcess, int lpBaseAddress, byte[] lpBuffer, int nSize, 

ref int lpNumberOfBytesWritten);
        [DllImport("kernel32.dll")]
        private static extern int OpenProcess(int dwDesiredAccess, int bInheritHandle, int dwProcessId);
        [StructLayout(LayoutKind.Sequential)]
        private struct LUID
        {
            internal int LowPart;
            internal int HighPart;
        }
        private const int ANYSIZE_ARRAY = 1;
        [StructLayout(LayoutKind.Sequential)]
        private struct LUID_AND_ATTRIBUTES
        {
            internal LUID pLuid;
            internal int Attributes;
        }
        struct TOKEN_PRIVILEGES
        {
            public int PrivilegeCount;
            public LUID TheLuid;
            public int Attributes;
        }
        [DllImport("advapi32.dll")]
        private static extern int OpenProcessToken(int ProcessHandle, int DesiredAccess, ref int TokenHandle);
        [DllImport("advapi32.dll", EntryPoint = "LookupPrivilegeValueA")]
        private static extern int LookupPrivilegeValue(string lpSystemName, string lpName, ref LUID lpLuid);
        [DllImport("advapi32.dll")]
        private static extern int AdjustTokenPrivileges(int TokenHandle, int DisableAllPrivileges, ref 

TOKEN_PRIVILEGES NewState, int BufferLength, int PreviousState, int ReturnLength);
        [DllImport("kernel32.dll")]
        private static extern int CloseHandle(int hObject);
        private const int TOKEN_ADJUST_PRIVILEGES = 0x20;
        private const int TOKEN_QUERY = 0x8;
        private const int SE_PRIVILEGE_ENABLED = 0x2;
        private const string SE_DEBUG_Name = "SeDebugPrivilege";
        #endregion

        static void Main(string[] args)
        {
            Console.WriteLine("DelayReducer 'proof-of-concept' by Risc (2008)");
            Console.WriteLine("Searching for Wc3 process...");
            Process[] pids = Process.GetProcessesByName("war3");
            int proc;
            int hToken = 0;
            LUID sedebugNameValue = new LUID();
            TOKEN_PRIVILEGES tkp = new TOKEN_PRIVILEGES();
            OpenProcessToken(Process.GetCurrentProcess().Handle.ToInt32(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, 

ref hToken);
            LookupPrivilegeValue(null, SE_DEBUG_Name, ref sedebugNameValue);
            tkp.PrivilegeCount = 1;
            tkp.TheLuid = sedebugNameValue;
            tkp.Attributes = SE_PRIVILEGE_ENABLED;
            AdjustTokenPrivileges(hToken, 0, ref tkp, Marshal.SizeOf(tkp), 0, 0);
            CloseHandle(hToken);

            Int32 delay;
            int newdelay = 0;
            int byteswritten = 0;

            if (pids.Length > 0)
            {
                Console.WriteLine("Found process.");
                proc = OpenProcess(PROCESS_ALL_ACCESS, 0, pids[0].Id);
                ReadProcessMemory(proc, 0x6F6E5271, out delay, 4, 0);
                Console.WriteLine("Current hosting latency is " + delay.ToString() + " ms");
                Console.Write("Set latency to: ");
                try
                {
                    newdelay = int.Parse(Console.ReadLine());
                    WriteProcessMemory(proc, 0x6F6E5271, BitConverter.GetBytes(newdelay), 4, ref byteswritten);
                    ReadProcessMemory(proc, 0x6F6E5271, out delay, 4, 0);
                    if (delay == newdelay)
                    {
                        Console.WriteLine("Successfully set latency to " + delay.ToString() + " ms.");
                        Console.WriteLine("Press any key to quit.");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("FAILED to set latency to " + delay.ToString() + " ms.");
                        Console.WriteLine("Press any key to quit.");
                        Console.ReadKey();
                    }
                }
                catch
                {
                    Console.WriteLine("God... OF COURSE you can only enter numbers without decimals!");
                    Console.WriteLine("Quitting...\n\nTry again, press any key to quit.");
                    Console.ReadKey();
                }
            }
            else
            {
                Console.WriteLine("Can't find Wc3 process.. Make sure it's running first!\n\nTry again, press any 

key to quit.");
                Console.ReadKey();
            }
        }
    }
}
 
Level 1
Joined
Jun 30, 2008
Messages
4
VCK (Visual Custom Kick) can reduce latency too, and it also has several other useful features (Refresher, start without count, etc.). It's the only hosting tool I use, because it does everything I need it to.
EDIT: link
 
Level 2
Joined
Jun 29, 2008
Messages
20
Narwhol, thank you for the link,
but I think we should help slawter solving his problem.
I will test the tool as soon as possible and I will try to help you.
Until then, someone should look for semantical mistakes in the source.

MfG chemderrick
 
Level 5
Joined
Mar 6, 2008
Messages
206
Narwhol, thank you for the link,
but I think we should help slawter solving his problem.
I will test the tool as soon as possible and I will try to help you.
Until then, someone should look for semantical mistakes in the source.

MfG chemderrick

problem solved - i reinstalled warcraft i just have to check to the firewall to see if i an host
 
Level 5
Joined
Mar 6, 2008
Messages
206
i downloaded 7-zip but it dont work for me.
how do you use it. i right clicked and used extract here on the .rar file
 
Level 2
Joined
Jun 29, 2008
Messages
20
Uhm, if I got you right, you totally failed at reading our posts.
Its for reducing the delay, that appears when hosting on B.Net,
to the level that appears when hosting in LAN mode.

MfG chemderrick
 
Status
Not open for further replies.
Top