Quantcast Internet / Socket access - ESOUI
Thread Tools Display Modes
04/09/19, 04:00 PM   #1
JayC667
Join Date: Apr 2019
Posts: 3
Internet / Socket access

Hey guys,

(for TL;DR see bottom)

I am getting really fed up with this stupid Dungeon Finder.
Especially the part where everyone in the group accepts the invitation, but then there are no instance servers ready, and ESO lies to us that "some declined the invite" and all the crap starts from anew.
Especially in the context that whenever you form a group and enter any dungeon manually (by teleporting there) you get an instance immediately.

As multiple games have had serious problems with their group finder tools, I have already rewritten a DungeonFinder-like tool myself.
It is thread-safe, fair queueing (if someone aborts or instance servers etc are not ready etc, people will get put back in front of the queue).
When tested in a perfect ESO-like (4 roles, 4 and 12 player missions) environment , with a huge number of ready instance servers and lots of people joining fast, it can form about 1200 groups and dispatch them to their shards per second. (running on i7-4790 at about 50%, no speed optimizations made yet, only proof-of-concept)

So my plan is to host that on my server, and make an
  • ingame UI (selecting role + missions)
  • coordination over my server
  • group invitation system
  • auto-port to dungeon

TL;DR:
The only problem I see there is: how can I open a socket in LUA from within ESO and communicate with my server? Protocol (TCP/UDP/any other) is not relevant to me.
Communication would go two ways, sending and receiving.
I know theres such libraries for LUA, but is there any method included in ESO already, or does the possibility exist to bring such a lib into the ESO environment?



Off-topic: another idea is to create a UI, selecting missions+role, that UI postst to chat (maybe theres hidden channels, havent checked), and from there on work like (or even use) AutoInvite, and kick off the mission once everyone has joined.
  Reply With Quote
04/09/19, 05:09 PM   #2
Wheels
AddOn Author - Click to view addons
Join Date: Feb 2017
Posts: 36
I hate to be the bearer of bad news, but this cannot be directly done with an addon. You are not able to open any sort of connection within the addon itself. The method other addons use for transferring data to a server is generally through a 3rd party tool that scans the addon savedvariables file for data to upload.
  Reply With Quote
04/09/19, 05:53 PM   #3
Drummerx04
AddOn Author - Click to view addons
Join Date: Sep 2017
Posts: 37
The ESO LUA API does not have access to pretty much anything outside of the game environment.

You cannot:
  • Open/Read/Write files
  • Access any network interfaces. No Raw Sockets. No REST/Web requests.
  • Use any LUA libraries besides string, table, and a few time functions in "os"
  • Create external/native GUI windows
  • Access external processes via pipes... or at all
  • Any native system calls
  • Choose when SavedVariables get written to disk

Basically you wasted your time
  Reply With Quote
04/09/19, 06:10 PM   #4
Dolgubon
 
Dolgubon's Avatar
AddOn Author - Click to view addons
Join Date: Jan 2016
Posts: 334
Also, no matter how much optimization is done, there is one major slowdown that you can't do anything about.

Finding tanks and healers.
  Reply With Quote
04/09/19, 11:26 PM   #5
JayC667
Join Date: Apr 2019
Posts: 3
Alright guys. Thanx a lot for the detailed and fast infos!

Was afraid so.
So the only actual way of communicating with the outside world is to register some strings, then hope for /reloadui or relog, and be afraid of DC/crash...

Okay, then theres only 3 modes left: abusing the chat system, anaylzing ESOs network protocols & proxying, using graphical detection...
  Reply With Quote
04/09/19, 11:36 PM   #6
JayC667
Join Date: Apr 2019
Posts: 3
Originally Posted by Dolgubon View Post
Also, no matter how much optimization is done, there is one major slowdown that you can't do anything about.

Finding tanks and healers.
Oh, mainly playing healer and tank here ;-)
The DF is still my worst enemy. Either not even letting me join (unable to queue), or then making me rub down my F key to non-existence (and keeping lying to me).
Both these things have been especially bad the last few days...

BTW if I made such an addon(hack), I would users allow to choose which roles they would accept to play with, say also the combinations Healer+DD+DD+DD or DD+DD+DD+DD or Tank+Tank+Tank+Tank, basically any combination.
From level 500 up theres not so much healing needed for dungeons, cuz people know the mechanics, learned to doge the red-bad-zones and usually at least one of the players has an off-heal prepared (with most DDs running on magicka anyways), so this can work out fine.
Has done so for me at least.
  Reply With Quote
04/10/19, 05:08 AM   #7
Marazota
Join Date: Sep 2015
Posts: 109
Originally Posted by JayC667 View Post
Hey guys,

(for TL;DR see bottom)

I am getting really fed up with this stupid Dungeon Finder.
Especially the part where everyone in the group accepts the invitation, but then there are no instance servers ready, and ESO lies to us that "some declined the invite" and all the crap starts from anew.
Especially in the context that whenever you form a group and enter any dungeon manually (by teleporting there) you get an instance immediately.

As multiple games have had serious problems with their group finder tools, I have already rewritten a DungeonFinder-like tool myself.
It is thread-safe, fair queueing (if someone aborts or instance servers etc are not ready etc, people will get put back in front of the queue).
When tested in a perfect ESO-like (4 roles, 4 and 12 player missions) environment , with a huge number of ready instance servers and lots of people joining fast, it can form about 1200 groups and dispatch them to their shards per second. (running on i7-4790 at about 50%, no speed optimizations made yet, only proof-of-concept)

So my plan is to host that on my server, and make an
  • ingame UI (selecting role + missions)
  • coordination over my server
  • group invitation system
  • auto-port to dungeon

TL;DR:
The only problem I see there is: how can I open a socket in LUA from within ESO and communicate with my server? Protocol (TCP/UDP/any other) is not relevant to me.
Communication would go two ways, sending and receiving.
I know theres such libraries for LUA, but is there any method included in ESO already, or does the possibility exist to bring such a lib into the ESO environment?



Off-topic: another idea is to create a UI, selecting missions+role, that UI postst to chat (maybe theres hidden channels, havent checked), and from there on work like (or even use) AutoInvite, and kick off the mission once everyone has joined.

the only thing that will keep ppl away from your DF is game DF BUFF
you receiving a buff you know, for your stats
  Reply With Quote
04/10/19, 05:52 AM   #8
Baertram
 
Baertram's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 2,122
BTW if I made such an addon(hack), I would users allow to choose which roles they would accept to play with, say also the combinations Healer+DD+DD+DD or DD+DD+DD+DD or Tank+Tank+Tank+Tank, basically any combination.
From level 500 up theres not so much healing needed for dungeons, cuz people know the mechanics, learned to doge the red-bad-zones and usually at least one of the players has an off-heal prepared (with most DDs running on magicka anyways), so this can work out fine.
Has done so for me at least.
If you made such an addon/hack you'd be working for ZOs
You got no possibilities to do so.

Problem is: This would again force the players who play healers or tanks to play as dd as noone would like to take them with them anymore (which is done most of the time today already...).
  Reply With Quote
04/10/19, 06:22 AM   #9
Drummerx04
AddOn Author - Click to view addons
Join Date: Sep 2017
Posts: 37
It's probably worth mentioning that if you write an external program to scrape information from GUI and then automate in game functions, then this would most definitely violate the terms of service.

I could be giving ZOS too much credit here, but I would also think that network traffic between the client and server is likely encrypted in some way. If it is encrypted, you would need to include a memory inspector that can attach to the game. This would be absolutely against the TOS.
  Reply With Quote
04/10/19, 09:07 AM   #10
Rhyono
AddOn Author - Click to view addons
Join Date: Sep 2016
Posts: 485
I believe someone made an addon or was making one for personal use that would make a colored square in the corner that their external program would analyze in real time. That would get info out, but there's still the issue of getting it back in.
  Reply With Quote
04/11/19, 12:14 AM   #11
Baertram
 
Baertram's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 2,122
Reading the screen should be somehow agaisnt the TOS as well, isn't it?
  Reply With Quote
04/11/19, 12:24 AM   #12
Wheels
AddOn Author - Click to view addons
Join Date: Feb 2017
Posts: 36
Originally Posted by Baertram View Post
Reading the screen should be somehow agaisnt the TOS as well, isn't it?
Is it? I would be interested to see if that were the case, not sure if that's actually specified.
  Reply With Quote
04/11/19, 06:26 AM   #13
Drummerx04
AddOn Author - Click to view addons
Join Date: Sep 2017
Posts: 37
Originally Posted by Wheels View Post
Is it? I would be interested to see if that were the case, not sure if that's actually specified.
I believe scraping the screen to automate something in game would be against TOS. Ultimately the issue I see with this new "addon" would be using an external program to automate functions in game. I mean at that point you are basically looking at Botting software, which is absolutely against the TOS even though ZOS appears to be sluggish at banning for it.

I'm just going to be steering clear of this project if it ever gets released.
  Reply With Quote
04/11/19, 08:02 AM   #14
Wheels
AddOn Author - Click to view addons
Join Date: Feb 2017
Posts: 36
Originally Posted by Drummerx04 View Post
I believe scraping the screen to automate something in game would be against TOS. Ultimately the issue I see with this new "addon" would be using an external program to automate functions in game. I mean at that point you are basically looking at Botting software, which is absolutely against the TOS even though ZOS appears to be sluggish at banning for it.

I'm just going to be steering clear of this project if it ever gets released.
Ahh put in the context of scraping to enable automation definitely makes it sound much more likely to be against TOS, I guess the other wording hadn't really struck me that way.
  Reply With Quote
04/11/19, 08:42 AM   #15
Baertram
 
Baertram's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 2,122
Originally Posted by Wheels View Post
Ahh put in the context of scraping to enable automation definitely makes it sound much more likely to be against TOS, I guess the other wording hadn't really struck me that way.
Sorry, I meant the "screen reading" of colors or whatever data by external software in order to do something ingame.
Maybe it would be ok if it wouldn't be ingame but on your computer in the other programm, like collecting data. But as SvaedVars are only writing on reloadui / relog (except the prioritized small data) I guess ZOs wouldn't like this to happen neither.
  Reply With Quote
04/11/19, 09:25 AM   #16
Wheels
AddOn Author - Click to view addons
Join Date: Feb 2017
Posts: 36
Originally Posted by Baertram View Post
Sorry, I meant the "screen reading" of colors or whatever data by external software in order to do something ingame.
Maybe it would be ok if it wouldn't be ingame but on your computer in the other programm, like collecting data. But as SvaedVars are only writing on reloadui / relog (except the prioritized small data) I guess ZOs wouldn't like this to happen neither.
Yeah I was thinking about it as a method of just gathering data to the local system, which I could see as a kind of gray area. I would definitely agree that an external program performing actions in game based on what "sees" would get pretty dangerous since you could start doing combat reactions rather than some mundane data gathering.
  Reply With Quote

ESOUI » Developer Discussions » General Authoring Discussion » Internet / Socket access

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off