System GetDelay

Steel

Software Engineer
Reaction score
109
Unless you code in some usefulness for this in an actual map, left to their own devices, others won't be able to use this on their own. I can't think of a practical application for this in any way ever. Not only is it inaccurate because it bases delay off of tracking a unit which is even more inaccurate. It doesn't track things in a quick enough interval to be accurate enough to compete with a millisecond comparison in latency.
 

Dr.Jack

That's Cap'n to you!
Reaction score
108
Seems to me that plenty of things can affect the outcome.
Can you show us a test that proves this is accurate/reliable?
 

Jesus4Lyf

Good Idea™
Reaction score
397
As a player and mapper, sometimes all I want is a way to vaguely compare one host to another. Regardless of the accuracy of this, as long as it returns a higher value for laggier connections, this is amazing.

And I've approved this. The research behind this is too good to lose, regardless. I'm nearly certain I will be implementing this in my maps. But, if we find this to be unaccurate in a makes-this-useless way in the future, we will unapprove this. :)

Also, you should discuss the "private constant integer DUMMYID = 'h004'" line in implementation. That's a custom unit id which doesn't usually exist, no?
 

cleeezzz

The Undead Ranger.
Reaction score
268
thanks :D

updated 1.0c

1.0c
  • System now creates a universal dummy that is reused. It is shown and hidden to prevent players from selecting it when not checking delay. (NO desync in multiplayer, Tested)
  • Added Detail to implementation about dummy unit
 

Karawasa

Element Tower Defense
Reaction score
38
I also don't see much (if any) practical use for this. It's cool, but what are you really going to do with it.
 

Jesus4Lyf

Good Idea™
Reaction score
397
I'm playing Element TD right now ironically, and I was just thinking how awesome this would be in the multiboard because sometimes I lag 5 minutes back in time towards the end. :thup:

(Seriously, that isn't exaggerating at all. My laptop is really old and my game finishes 5-10 mins after my friends'.)
 

cleeezzz

The Undead Ranger.
Reaction score
268
mm sounds good, although ive only noticed this recently in my archer wars map but while im aiming my arrows and any point target skill, the UI will be cancelled because of the selection.

so i think i need to make an update to make sure the player isn't doing anything currently + check delay for an individual player rather than all of them.
 

Trollvottel

never aging title
Reaction score
262
couldnt you write a GetHost function using this (if it really works, the host always has the smallest delay)?
 

Jesus4Lyf

Good Idea™
Reaction score
397
I have very limited time spent with actual WC3 these days, but I'll say this:

I know for a fact (tested) that the gamecache synch method is unreliable (even with multiple calls and taking the average).
I have heard that using unit selection is reliable. :thup:

So this would be the same as using unit selection for get host.
 

Azlier

Old World Ghost
Reaction score
461
I am a magician when it comes to untested stuff. This doesn't even need GetDelay.

JASS:
library GetHost initializer Init

globals
    private unit U
    private player Host = null
    private trigger t = CreateTrigger()
endglobals

constant function GetHost takes nothing returns player
    return Host
endfunction

private function Click takes nothing returns boolean
    set Host = GetTriggerPlayer()
    call DestroyTrigger(t)
    call RemoveUnit(U)
    set t = null
    set U = null
    call DestroyBoolExpr(Filter(function Click))
    return false
endfunction

private function Init takes nothing returns nothing
    set U = CreateUnit(Player(15), 'hfoo', 10000, 10000, 270)
    call PauseUnit(U, true)
    call TriggerRegisterUnitEvent(t, U, EVENT_UNIT_SELECTED)
    call TriggerAddCondition(t, Condition(function Click))
    call SelectUnit(U, true)
endfunction

endlibrary
 

Azlier

Old World Ghost
Reaction score
461
Destroying a boolexpr within itself is quite fishy, I admit. I wonder if anything really happens there.

Comment it out, if you want. It'll work fine without it. :p
 

Jesus4Lyf

Good Idea™
Reaction score
397
Bleh.
>[LJASS]call DestroyTrigger(t)[/LJASS]
I don't trust that either. The trigger may be about to fire (if the event has already passed).

I'd wait for 60 seconds and destroy it from the init. (Because you might lag window for that long also.)

I'd also make the selection occur 0 sec into the game, probably. Not on init.
 

Azlier

Old World Ghost
Reaction score
461
Selection, believe it or not, works fine on Init.

And yes, the trigger is about to fire. Eleven more times. Genius I am. :D
 

Jesus4Lyf

Good Idea™
Reaction score
397
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top