ESOUI

ESOUI (https://www.esoui.com/forums/index.php)
-   General Authoring Discussion (https://www.esoui.com/forums/forumdisplay.php?f=174)
-   -   Internet / Socket access (https://www.esoui.com/forums/showthread.php?t=8454)

JayC667 04/09/19 04:00 PM

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.

Wheels 04/09/19 05:09 PM

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.

Drummerx04 04/09/19 05:53 PM

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

Dolgubon 04/09/19 06:10 PM

Also, no matter how much optimization is done, there is one major slowdown that you can't do anything about.

Finding tanks and healers.

JayC667 04/09/19 11:26 PM

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...

JayC667 04/09/19 11:36 PM

Quote:

Originally Posted by Dolgubon (Post 37688)
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.

Marazota 04/10/19 05:08 AM

Quote:

Originally Posted by JayC667 (Post 37685)
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

Baertram 04/10/19 05:52 AM

Quote:

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 :p
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...).

Drummerx04 04/10/19 06:22 AM

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.

Rhyono 04/10/19 09:07 AM

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.

Baertram 04/11/19 12:14 AM

Reading the screen should be somehow agaisnt the TOS as well, isn't it?

Wheels 04/11/19 12:24 AM

Quote:

Originally Posted by Baertram (Post 37705)
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.

Drummerx04 04/11/19 06:26 AM

Quote:

Originally Posted by Wheels (Post 37706)
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.

Wheels 04/11/19 08:02 AM

Quote:

Originally Posted by Drummerx04 (Post 37707)
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.

Baertram 04/11/19 08:42 AM

Quote:

Originally Posted by Wheels (Post 37708)
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.

Wheels 04/11/19 09:25 AM

Quote:

Originally Posted by Baertram (Post 37709)
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.


All times are GMT -6. The time now is 04:18 AM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2014 - 2022 MMOUI