Code Monkey home page Code Monkey logo

diablointerface's People

Contributors

d2inventory avatar dependabot[bot] avatar fairfieldt avatar feyd avatar overseershenk avatar qhris avatar rotacioskapa avatar squeek502 avatar ubeogesh avatar zutatensuppe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

diablointerface's Issues

Make the process name configurable.

Now I see the process name is fixed defined in file D2Reader/D2DataReader.cs.
Can you please make it configurable? I want use it in case run D2 with a different process name.

Add auto-split on normal items

Feature

Add the feature to auto-split on acquiring a specific item for the first time or with a specific count.

  • Implementation for only gems.
  • Implementation with manually entered Items.
  • Implementation with dropbox list.

Unresolved

How should auto-splits with the same item interact with each other?

Bug: Game start Autosplit triggers when settings are saved

Autosplit triggers when settings are saved, because the autosplits are reset on setting changes. the character is still the same tho (a valid autosplit char). the game start autosplit has no other requirements other than a valid autosplit char, so splits immediately.

Especially painful because settings are saved as a whole: tooling (server, http push, etc) together with run related (runes, splits, ...)

Issue with Autosplit

Hi,
I can't seem to make the autosplit work. No matter what hotkey I try it just simply wont split. (the test hotkey in the settings does nothing either)
Yes, I have used the same hotkey on all: Diablo, Livesplit and the Interface.
Yes, I have tried to start all programs as admin. (Which I always did for the interface)
Yes, I have checked the "Enable Autosplit" checkbox.
Yes, I have named the Splits the same way on both Livesplit and the Interface settings.

Greets Teo1904

Feature: Skill tree

Add reading of skill tree information.

Currently we only read single skills, no combination with others (synergies, route in tree, etc).

Not sure why, but autosplit won't work

I followed the steps exactly as posted. I am running everything as an administrator, I have global hot keys set and using the test causes the LiveSplit to start without a problem. When I initially installed this all last night, it was working fine. But it randomly decided upon doing a new run to not auto-split and I have been unable to figure out why. DiabloInterface starts up upon making a new character, but it just isn't starting the split anymore.

I attached my generated log after deleting it and retrying.

2018.11.27.log

Issue with Resistance update

Hi,

I noticed yesterday that the shown resistances get updated, but not for the difficulty i am actually in.
I made a video to clarify this a little more:
https://youtu.be/Wy2EqEnXpl0
It Shows that on nightmare it shows the resistances of normal. Yes they get updated when I change resistances on my gear, but it just shows the resistances how they would be in normal.

That is a big issue for viewers that are really curious about those. ;)

greetz Teo1904

Too much IAS shown

reported by BlazerFlamewing

hey there, apparently sometimes the interface displays a different number sometimes for Increased Attack Speed
eg: I built my grail zon for 95 IAS (the max) - the display says 105. the secondary stats dash that PlugY has says 95 too

95 is the maximum breakpoint, but you can go higher but it would be ineffective, like gettinng 215 FCR on a sorc when 200 is the last breakpoint you can reach
but the math on all the gear doesn't check out on paper, either
should be 95, DI reads 105, plugy reads 95
she is wearing Treachery (45%), Highlords Wrath (20%), Moser's Blessed Circle with 2x 15% IAS jewels (30%) = 95%

yeah, it's a bit different and makes a difference when you for example use the 95% breakpoint i have with a different weapon with a different base speed, it might not work out to be the best

Weapon is Titans

which has a base 10% IAS

we currently incude the base ias in the shown value, but maybe this is confusing and we should be able to turn it off

Hook for all items that get generated/dropped?

How feasible is it to be able to handle each item generation event (thinking mostly of items dropped by monsters, but other sources like chests and npc shops could be relevant too)?

Suddenly high CPU usage

Placeholder ticket to investigate high cpu usage in some cases with the code in develop branch vs master (or even vs a version way back?) reported by BlazerFlamewing and the_SaltySpitoon

Chat extract from discord:

i encountered this issue when i was first developing the extension, it's actually the reason i used the old DI code vs. the new code
because randomly after periods of time it would enter some kind of infinite loop where it just hammers on the cpu
sometimes it takes 30 minutes, sometimes it takes 2 hours
but it's happening in the main memory reading function from what i could tell
only happens in the develop branch code, not the old code
never figured out what was causing it
@Zutatensuppe
it happened to blazer tonight on his stream
oops i thought all of those messages were about that
well i think blazer is going to message you about it
i think i have a VS profile of it in action but it's like 300MB because it took so long for it to enter that state
i'll see if i can find it

Bug: autosplit happens on-save

When saving settings while running with a autosplit-char that has game-start autosplit, saving settings will result in a split being triggered.

Feature: merc data

Add information about mercenary
important information:

  • items
  • name
  • type (which act-merc, which type of merc (eg. a3 ice, fire, cold)
  • stats that are displayed on merc panel (eg. lvl, hp, str, des, vita, energy resistances...)

Make a Rune priority / difficulty selection possible

What i mean by this is sth like that (example of an amazon):
Must have runes:
Tal Eth
Optional runes:
Ral Ral Tir Tir
Must have runes nightmare:
Shael Shael Eth Thul Amn Ort
Optional runes nightmare:
Ort Sol

In a matter that it first "checks" the must have runes so that they get highlighted as "we got that"
in this case -> first eth rune from "must have" and the ort from "must have nightmare" get highlighted first.
I think this would be very helpfull for hell speedruns for viewers.
Hope i made any sense :D

Faster Run/Walk and Increased Attack Speed do not include modifiers from skills

Faster Run/Walk and Increased Attack Speed currently show only the sum of those attributes on items equipped by player.
They do currently not include modifiers from skills.

There should be an option to turn on "real" values, including skills (and possibly even heavy armor run/walk reduction etc.?)

Skills FRW:

  • Vigor (Paladin)
  • Increased Speed (Barb)
  • Frenzy (Barb)
  • Burst of Speed (Assassin)
  • Feral Rage (Druid)
    (list may be incomplete)

Skills IAS:
(list incomplete)

Problem with Build

I installed the build, ran as Admin. It will not pull data from my diablo client no matter what I do. Please help. Tried re-installing the interface as well as DII and Expansion

Feature: http server

Create a http server plugin so that people can open a url to view stats by di. Makes the layout more adjustable in general.
Maybe obsolete when ppl use diablo.run browsersource, but if someone wants this locally without running an own server, this could help.

Race condition in develop branch item reader vs. item request handler?

I'm developing a program that reads on an interval basis from AllItemsRequestHandler. The program stores its own inventory state and diffs it with incoming data from AllItemsRequestHandler before pushing the delta to a web server. What I've noticed is that occasionally items that are actually equipped aren't returned in the payload from the request handler. My assumption is that the item reader thread is still writing to the character state while the request handler is reading it. This seemingly makes accurate delta compression impossible. I don't have a ton of time to study the develop source, nor am I particularly experienced in C#, so I figured I'd post this as you know a lot more about the source than I do :).

Wine integration request

Would love to have the interface running via wine, that way I don't need to boot into windows to play. The interface is looking for game.exe atm.

Load settings from main window.

Quality-of-life improvement: Allow loading settings file from main window context menu.

Example: context->load->Sorceress Hell where Sorceress Hell is the file Sorceress Hell.conf.

The idea is to allow quickly switching configuration when switching characters or run type without having to go through the route of opening up the settings window, locating the save file, etc...

Required features:

  • Keep track of all save files saved/opened with the program (history).
  • Show available settings-files in context menu.
  • Allow deleting settings-file history from the context-menu.
  • Allow loading settings-file from the context-menu.

Web socket client to push data to an existing server

Hi, I actually was working on a similar project about a year ago, but my skill set wasn't adequate enough to work with live game data. I was able to develop a program that read the save file periodically, but got stuck on parsing item data.

I just spent some time working around Underbent's BH Maphack for Slash Diablo and I've learned a great deal. I was trying to implement a web socket client that forwarded data to a specified web server where people could view stats in real time. Implementing that in C++ has been unfortunately more difficult than I had hoped for, but C# has some more robust libraries that seem easier to use.

I'd like to implement this feature into your program. I see that you have a server stream for item data, which exports in JSON data. I think the next step would be to use web sockets and allow viewers to connect via their browser to a server and see data update in real time. I'm going to begin implementing this and I think it could add to satisfying the goals of the program. I know a lot of effort has been put into developing a nice GUI that can be shown alongside the game in a stream, but I think this is the next logical approach since item and skill data is going to become very difficult to show well visibly on screen, especially if the streamer only has one screen to place apps.

Bug: Fix wrong area for new chars

OverseerShenk:

I think on entering the game, DiabloInterface initially sends the last Area ID you were in from your previous game. Do you think this could be fixed?
For the races we have a disqualification system so that your players setting can only be different in town.

To mitigate this problem we could check on a new char if the area is one of the towns (be aware of the -act ... parameter, which makes new chars start in different acts). If we detect a new char but area is not the according town, we could skip sending an event and just reread.

runeword not displayed correctly

instead of Stealth the string with identifier 0 is displayed when creating the runeword, it fixes itself when reloading the character (save+exit and launch character again)

Buggy:

grafik

Should be:
grafik

Feature: Add information about what weapon is actually secondary/primary

When the weapons are switched (secondary - primary) the game will give us the currently active weapon as "Primary".
For display on diablo.run for example it would make sense to know which weapon/shield is actually primary/secondary to make it display nicely without it switching back/forth.

Add percentage counter for 100% runs

For 100% speedruns this might be interesting:
100% = all quest in all difficulties + cow kings in all difficulties
-> 84 quests ~ around 1.19% each

so completing den + talking to akara would make 1.19% / 100

Possible to break down into:
Normal x% / 100%
Nightmare x% / 100%
Hell x% / 100%

Total x% / 100%

it does not include waypoints (SDA rules)

Not really a pressious issue - could be sth that puts 100% runs on the boards though.

Feature: change the way settings are stored/saved

Settings that are only tooling related (http client, pipe server, etc) should be stored separately from the run related settings (autosplits, rune settings, etc.). Or at least "settings changed" should trigger separately and only if the according section actually changed.

Compatibility for 1.13?

Wondering if it's possible to make this useful tool usable with the 1.13 version of this game, I don't have much experience so I'm not sure if it's a hard task or not. I'm also a bit confused on how to make my chat bot interface with the "simple pipe" of the program, apologies if this is something I've overlooked.

Either way I appreciate the hard work, the tool works wonderfully for the current patches!

Autosplit: "Game started" split is sometimes executed for existing characters

The "Game started" split is executed multiple times, even for an old character, if that character is still level 1 and has no experience. The split should only be done if a new character is started.

reproduction steps

  1. Start new game
  2. split is executed as wanted
  3. go outside of town
  4. save + exit game
  5. start a game with the same character
  6. split is executed again ๐Ÿ›

Note: we could check for new character name, but sometimes an old character is deleted from the game and a new one is created with the same name, so maybe it makes sense to check something like if part of the map has been scouted.

[0.4.0] Exception when reading item damage stats

Opening the debug window or querying items through the pipe server throws:

Exception: System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
   at System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.Format(String format, Object arg0)
   at Zutatensuppe.D2Reader.Readers.RangeStatDamage._toString(StringLookupTable stringLookupTable, Int32[] args, UInt16stringId) in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\Readers\RangeStatData.cs:line 50
   at Zutatensuppe.D2Reader.Readers.RangeStatDamage.ToString(StringLookupTable stringLookupTable) in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\Readers\RangeStatData.cs:line 37
   at Zutatensuppe.D2Reader.Readers.RangeStatData.TryHandleStat(D2Stat stat, String& description) in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\Readers\RangeStatData.cs:line 232
   at Zutatensuppe.D2Reader.Readers.ItemReader.<>c__DisplayClass49_0.<GetMagicalStrings>g__getDescription0(D2Stat stat)in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\Readers\ItemReader.cs:line 865
   at Zutatensuppe.D2Reader.Readers.ItemReader.<>c__DisplayClass49_0.<GetMagicalStrings>b__4(<>f__AnonymousType1`2 <>h__TransparentIdentifier0) in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\Readers\ItemReader.cs:line 877
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.<ReverseIterator>d__74`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at Zutatensuppe.D2Reader.Readers.ItemReader.GetMagicalStrings(D2Unit item) in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\Readers\ItemReader.cs:line 874
   at Zutatensuppe.D2Reader.D2DataReader.ReadEquippedItemStrings() in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\D2DataReader.cs:line 444
   at Zutatensuppe.D2Reader.D2DataReader.ProcessEquippedItemStrings() in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\D2DataReader.cs:line 425
   at Zutatensuppe.D2Reader.D2DataReader.ProcessGameData() in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\D2DataReader.cs:line 349
   at Zutatensuppe.D2Reader.D2DataReader.RunReadOperation() in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\D2DataReader.cs:line 266Exception: System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
   at System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.Format(String format, Object arg0)
   at Zutatensuppe.D2Reader.Readers.RangeStatDamage._toString(StringLookupTable stringLookupTable, Int32[] args, UInt16stringId) in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\Readers\RangeStatData.cs:line 50
   at Zutatensuppe.D2Reader.Readers.RangeStatDamage.ToString(StringLookupTable stringLookupTable) in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\Readers\RangeStatData.cs:line 37
   at Zutatensuppe.D2Reader.Readers.RangeStatData.TryHandleStat(D2Stat stat, String& description) in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\Readers\RangeStatData.cs:line 232
   at Zutatensuppe.D2Reader.Readers.ItemReader.<>c__DisplayClass49_0.<GetMagicalStrings>g__getDescription0(D2Stat stat)in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\Readers\ItemReader.cs:line 865
   at Zutatensuppe.D2Reader.Readers.ItemReader.<>c__DisplayClass49_0.<GetMagicalStrings>b__4(<>f__AnonymousType1`2 <>h__TransparentIdentifier0) in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\Readers\ItemReader.cs:line 877
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.<ReverseIterator>d__74`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at Zutatensuppe.D2Reader.Readers.ItemReader.GetMagicalStrings(D2Unit item) in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\Readers\ItemReader.cs:line 874
   at Zutatensuppe.D2Reader.D2DataReader.ReadEquippedItemStrings() in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\D2DataReader.cs:line 444
   at Zutatensuppe.D2Reader.D2DataReader.ProcessEquippedItemStrings() in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\D2DataReader.cs:line 425
   at Zutatensuppe.D2Reader.D2DataReader.ProcessGameData() in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\D2DataReader.cs:line 349
   at Zutatensuppe.D2Reader.D2DataReader.RunReadOperation() in C:\Users\Ryan\Programming\Diablo\DiabloInterface\src\D2Reader\D2DataReader.cs:line 266

EDIT: Happens on both 1.13 and 1.14. Only appears to trigger when certain items are equipped. Will try to narrow it down.

EDIT#2: Seems to be triggered by War Travelers being equipped, oddly enough.

EDIT#3: It's any item that has a Adds X-Y damage stat (war travs add 15-20 damage). Elemental damage seems to be okay.

EDIT#4: Actually seems to affect all damage stats, but it only throws exceptions for phys damage. Elemental damage just doesn't show up in the stat readout at all (e.g. SoJ stats don't include 1-12 lightning damage)

Automatic rune display depending on which char/mode is played

Can you make it so that the interface automatically acknowledge which char is being played to set the rune display automatically?

Like that: Starting Assa -> Tal Eth Tir Ral Ral Ral
Starting Sorc -> Tal Eth Tir Tir Ral Ral
etc.
would be convinient. (maybe do save states for norm / hell spedrun settings)
norm ama -> Tal Eth Ral Ral
hell ama -> Tal Eth Ral Ral Shael Eth Ort Eth Shael Thul Amn Ort Sol

Not sure if that is possible ^^ just a thought

Issue with Autosplit - stops splitting by itself

My first three splits are the special game start, Black Marsh and outer cloister. The first split will automatically start when I run hit town after creating my character and the second split will trigger when I reach Black Marsh. After doing Countess runs for X period of time, I continue off, but at this point I no longer get the splits happening automatically. When I reach the outer cloister, the time keeps going with no update.

Wondering if there is a reason for this.

EDIT: After testing, it looks like quitting the game and logging back in is causing it to stop auto splitting anything it hasn't yet. Any work around for this?

D2SE: v0.4.11

Hi, I'm having some problems with diablo interface through d2se
nvm.. an older version worked

somehow seems that v0.4.11 doesnt work for all cases where v0.4.10 worked.
so maybe should bring back the fallback from v0.4.10 (1.13c string check.. kind of strange but seems to work?)

Atosplit+3dfx

Greetings.
I do not know English well, so I use google.translate.
The split program does not work well with the 3dfx mode. The game after alt + tab "freezes" and after that the split does not work.

Everything was fine in version 0.31

Settings Usability

Todo: Add Save/Apply/Cancel buttons again. Menu should be kept for things like loading/saving different config file.

Version checker popping up too often

Version checker should pop up only once (or with checkbox to not show again).
Currently it is popping up every start of the tool, if newer version is available and option is turned on in settings.

Not run as admin

I have noticed that if I modify this program to not run as admin (set "asInvoker" in manifest), it cannot attach to diablo 2 process. I've debugged it a bit and notice that Process::Modules call gets an "access denied" exception.

Have you looked into this, if there is a workaround for this? My game.exe is not running elevated (i.e. not as admin). Also tried turning off UAC Virtualization for it in the task manager, didn't help either.

Show /players value

There should be an option to show the current /players value from the game.

Recently there have been a few requests to show it on stream as /players X and /players 8 categories have been added to the leaderboard.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.