Giter Site home page Giter Site logo

dbm-unified's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

dbm-unified's Issues

GUI bugs

Describe the bug

I have compiled some visual bugs that happen with DBM GUI.

Do you have an error log of what happened?

NA

To Reproduce

See below for each case scenario.

Screenshots

  • 1. Clicking resizer button sometimes snaps the window somewhere else entirely, even if the cursor remains in the same place.

I have no clear way to repro this bug, just clicking and opening random menus until it starts bugging the size.

Wow_QG0zcIi2Rt.mp4
  • 2. Links area not updating height since myheight is hardcoded to 0
Wow_CzM6M7pIsY.mp4
  • 3. Caused by default font replacement (for example elvui), which makes some fontstrings one line, and some two lines, breaking the hardcoded myheight values.

image
An easy fix would be line breaking \n every localization string (example: Start color\n(User)).

  • 4. Mod panel statistics header not updating on resize.
Wow_p3vXkkcS7c.mp4
  • 5. Mod panel doesn't truncate long names in button.text. Would extend even further with font replacements/higher fontsizes.

image

  • 6. Ability areas do not update with resize
Wow_5IGev8krUJ.mp4
  • 7. Mod panel does not run DisplayFrame properly if player logins inside the instance and boss mod loads, being the first thing the player sees when /dbm, causing the heights to not work as expected:

image

Clicking the mod panel button re-runs the DisplayFrame and fixes the issue.

  • 8. Address dropdownOption visibility bugs :

a) requires a BoolOption or MiscLine above it to show on GUI;
b) cannot have a BoolOption below it or will overlap on GUI.

  • 9. Dropdown goes empty on SharedMedia path overwrites. This happens because dropdown are handled by callfunc values, which is prone to error with SharedMedia since they are keyed by the mediakey (or media name), not mediapath, which means that whenever a mediapath is changed but the media key is the same, it will bug.

image

It is recommended to rewrite dropdown to properly handle LSM and store values by their name (not their path), and then use LSM Fetch method to return currently stored path in the mediatable.

Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?
Yes, except for problem no. 3.

Which version of DeadlyBossMods are you using?
image

Was it working in a previous version? If yes, which was the last good one?
Not to my knowledge.

Additional context
@QartemisT , maybe this is something to be considered in #70 or 10.0 GUI?


Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?
Yes, except for problem no. 3.

Which version of DeadlyBossMods are you using?
image

Was it working in a previous version? If yes, which was the last good one?
Not to my knowledge.

Additional context
@QartemisT , maybe this is something to be considered in #70 or 10.0 GUI?

Profiles Work

Core Profiles Needs:

  • Ability to import/export profiles as a profile string.
  • Ability to have per character profiles (currently core profiles are global, change profile you change it on everyone). This should not replace global though. It should be an option to use global or per character profiles

Mod Profile Needs:

  • Ability to import/export profiles as a profile string
  • Ability to have global profiles. this is literlaly opposite problem of core. Mod profiles ONLY support per character and not global. Again, this needs to be user choice.
  • With support for global profiles added, an additional smarter global profile can be used. A middle ground between per character, and a single profile for all. This middle ground would be a single profile for all by role. IE you can have 4 global profiles instead of 1 where one is for tank, one for healer, one for melee dps one for ranged dps. This would be the new default going forward.

Notes:
Core profiles are settings for frame placement, timer placement, global warning sounds and fonts, etc. Basically all the settings for core.
Mod profiles are all the settings for sub mods such as Castle Nathria. What warnings/timers/etc are enabled/disabled.

Warning sounds

none of the warning sounds are working, in the warning selection screen you can choose and test the 5 types. warnings only work with one voice pack, even with the option to play both warnings, VP and original, Normal warnings are not working at all, there is silence.

DBM Event Register Needs Review

The whole event manager probably needs complete rewriting, because registershorttermevents was a hacky addition and and apparently has actually been broken for years. Fortunately no mods currently seem affected by the breakage since the way it's broken doesn't affect way most mods register/unregister events. As such this task is mostly for tracking purposes for when this is eventually modularized.

Intent: DBM was supposed to support better registering and unregistering events at both core and mod level in short term. Meaning events don't stay registered all the time and wasting CPU.

Function: Register short term events is supposed to be stand alone from register events regular (which is intended mostly for events that stay registered all the time). Unregister short term events is supposed to only clear the short term events that were registered.

Actuality: Register short term events shoves short term events into same table as long term events. Unregister short term event that's also a long term event just nukes both. Fortunately there is no mod that actually does this (not even core thankfully)

Likely need: Because every part of event handler runs through a single table for registered events, probably still need a single table tracking what's registered (long or short term). However when long or short term events are actually registered THESE should probably each be in their own table. Then when unregistering short term events, We remove any events in short term table that aren't also in long term table from the main event tracker table.. Something like

if shortTermEvents[event] then
	if not longTermEvents[event] then
		shortTermEvents[event] = nil
		--run actual event unregister for event
		registeredEvents[event] = nil--Untrack from main tracked events table
	else
		shortTermevents[event] = nil--Only wipe from short term events, but not unregister it if it's still being used by long term events
	end
end

Keystone snooping (retail only)

Details and Astral keys both have a way of snooping keystones of guildies, bnet friends, and party members.

I'd like DBM to add to this with a slash command, at least on party members, with maybe a more advanced ability to also open a window that also shows friends lists and guild keys.

best approach would probably be to support https://github.com/Tercioo/Open-Raid-Library/blob/main/docs.txt standard but we probably don't want to load the entire lib since it has a LOT of stuff we don't use. instead probably just snoop comms from it and astral keys and send comms on one or both of those channels when we send our own keys out (if neither mod is installed, if it is we won't transmit keys)

Add Support for Nameplate timers

This doesn't have to use the over complicated DBM bar object, it could simply be added to DBM-Nameplates and have a bar timer handed off to nameplate addons (plater already added support for this in some capacity) or internal handling. Need to touch base with Tercio and Kesava

https://gyazo.com/8521388acf222fe5ddd800d143b48a01 was concept Tercio showed on it for Plater

Bigwigs also has something similar using their own timer implimentation code. This is one sore spot DBM still remains behind on.

Raid Icons don't always appear in announce object

Likely related to how hacky cachedColorFunctions function is. It's not uncommon for icons to fail to render the first time any given name appears. Although could be related to another cause entirely. It's a difficult thing to test though.

[Feature] Nameplate Cooldown Icons Continued

  • Add ability to configure cooldown text same way plater has. (on, off, size)
  • Add ability to configure header text. (on, off, size)
  • Make them click through icons
  • Investigate reports of callback errors
  • Add a test mode that can be triggered via button I'll put in GUI so users can test their settings, including a callback so if Plater is being used instead of DBM, Plater can be put into test mode via DBMs button sending request.
  • All dungeon mods migrated to nameplate only timer objects. Core changed to fully recognize these objects as now in operation and old hack to terminate regular timer objects with GUIDS now removed.
  • Performance optimizing
  • Demo might reported not working
  • Double countdown text with Omni CC

Changing Language of DBM Core / Announcements

Is your feature request related to a problem? Please describe.
I am playing on English client but with German friends which are not good in English. So as a tank it's hard to announce spells.

Describe the solution you'd like
A way to change the language of DMB manually

Describe alternatives you've considered
As alternativ is there a way I can hardcode the language anywhere which DBM is using?

Additional context
I know that I need to re-do it after each DMB Update

Split auto logging into more options

"Only log non trivial content" Remove

Log bosses only will stay as is

New Options:
"Do not log trivial raids" (default on, will not log any raid that's under players current level)
"Do not log trivial dungeons" (default on, will not log any dungeons under Mythic (heroic in tbc/wrath) difficulty) under players level)

Work on unifying boss callbacks with BW and WA

Many weak auras specifically target only BW events like stage changes, timers, and announce.

In most cases, the WAs are compatible with DBM out of box if only they had also registered DBM callbacks. Unfortunately it's difficult to get authors to do this if they don't need to and end users don't often have skill to fix the WA packs they download.

The result, a large number of users are leaving DBM simply because fights "require" these weak auras.

The better solution would be if WA handled it smarter internally by simply smart combining the boss mod callbacks (especially for stage or timers using spellids and not timer id). Sadly, there doesn't seem to be much interest in this at the momen

Therefor, the more immediate solution seems to be to duplicate BWs callback handler in DBM and activate it by default if BW itself isn't installed (keyword installed, not loaded. strict check)

then sending all the BWs callbacks we're interesting in (announce, timer, stage, maybe others that weak auras use?). announce and timer would need additional filters to only pass it through handler if it's actually spellid passed, if it's not it might error due to different expectations of "timer id" field.

Links and more info:
https://twitter.com/deadlybossmods/status/1668842622234898433?s=61&t=qMqcrToMUKBCfbU6QB-uSQ
https://wago.io/LiquidAberrus
https://wago.io/rwUo_Neav
https://wago.io/Y2peTP20U

specWarnGTFO reuse for multiple spells shows wrong icon

Describe the bug
GTFO is being commonly re-used for multiple spells inside the same mod, which leads to the icon being wrong if it doesn't match the metadata set in mod load.

Do you have an error log of what happened?
NA

To Reproduce
Example:
https://github.com/DeadlyBossMods/DBM-WotLK/blob/1e1803885425d59091953699422c987366d8fb7f/DBM-Raids-WoTLK/Coliseum/NorthrendBeasts.lua#L254

Screenshots
image

Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?
Yes

Which version of DeadlyBossMods are you using?
Independent of version

Was it working in a previous version? If yes, which was the last good one?
No

Additional context
There are also several cases (on multiple mods) where the text argument for the %s locale string is not passed:
https://github.com/DeadlyBossMods/DBM-Unified/blob/master/DBM-Core/localization.en.lua#L400
One example, with two different spells and different icons, and no spellname passed (which defaults to "bad" damage and wrong icon):
https://github.com/DeadlyBossMods/DBM-WotLK/blob/1e1803885425d59091953699422c987366d8fb7f/DBM-Raids-WoTLK/Coliseum/Jaraxxus.lua#L158-L159
image
This might be intended, but decided to write it here as well since retail mods all pass the spellname into gtfo Show.

Tooltip verification/icon

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

I find in pug groups far too many people don't follow mechanics. This is either their negligence, or they don't use DBM.

Describe the solution you'd like
A clear and concise description of what you want to happen.

It might reduce the risk involved with pugging if you were to implement a tooltip icon for verification that another player is running dbm much like Raider.io shows other players scores. It could simply be an added assurance that they at least have something that tells them what they need to be doing during boss fights and such.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

I've considered emailing the makers of Raider.io to suggest they don't give io points to players in dungeons or raids that they are severely undergeared in, encouraging players to learn mechanics and work their way up.

Additional context
Add any other context or screenshots about the feature request here.

Retest literally all icon methods

  • Retest ScanForMobs using CID (Galakras, Siege of Orgrimmar. Requires Shaman marking)
  • Retest ScanforMobs using GUID (Scorpyron, Nighthold, Volatile Scorpions. KT from current content)
  • Retest ScanforMobs using Fixed icon (usually GUID are all this way so two birds this)
  • Retest ScanforMobs using Ascending and Descending (usually typical of CID methods)
  • Retest ScanforMobs using Table methods using fixed icons (Horridon and General Nazgrim)
  • Retest ScanforMobs using Table methods unfixed icons (Cenarius, Emerald nightmare. requires wisp spawns)
  • Retest basic SetIcon (Most mods setting icons on players. Several in Emerald Nightmare)
  • Retest SetAlphaIcon (Nythendra (Rot) and Ilgynoth (spew), emerald Nightmare. requires more than 1 player)
  • Retest SetSortedIcon (Sha of pride. Mark of Arrogance)
  • Does marking on KT inside Chains of Domination still work.

New GUI TODO

Features:

  • Spell icon on spell name
  • Add option to just say "Show classic DBM gui layout only" which basically tells it to ignore "newoption" because you just KNOW someone will ask for it
  • Add an option to choose whether icons bundled with abilities, or placed together in icons cat at bottom. with icons cat at bottom being the default. I see the merit of both ways. Some want to see it bundled together for cohesion but another will want them all together to be able to quick glance "what icons this mod uses"
  • Add checkbox to auto expand all by default (likely off by default but may survey this one)

Bugs:

  • Lua error can be triggered clicking very close (but not on) the + / - button that expands/collapses the spell Desc box
  • DBM doesn't work anymore (all timers and warnings just throw lua errors. Even test mod and pull timers fail
  • Nameplate auras should be grouped up. currently they aren't. or not consistently (such as 357735 on painsmith)
  • Infoframes and range frames using spellId should be grouped up, ones NOT using spellid should not. MysticalOS will go through mods that are using spellids for frames being used by more than one mechanic and fix them to use the "overview" locales so they don't incorrectly get grouped. Basically if it's nil or a string on a range frame or infoframe, don't bundle, number, bundle it like a spellid
  • Achievements timers are not properly parsed
  • mod:NewAddsLeftAnnounce objects are still not combined properly (example, wise marl in mop dungeons) (see comments for details)
  • Mysterious Lua error? (see comments for details)

Changes:

Add clarity to dropdowns for timers and special announce objects

Current issue:

  1. The dropdowns are actually quite unclear what they are for on initial inspection. Colors are assigned by type but there is no distinguishing feature of menu that actually says "this menu is for the bar color"
  2. Same goes for special announce sounds. The menu itself doesn't say "this changes the alert sound for this alert"
  3. Lastly, even countdown dropdown on timers is equally unclear.

TODO:

  • Each of the menus should show text describing what menu is, as opposed to what is selected. Selection would still be shown on clicking but basically while menu is closed it sound say "sound", "color", and "countdown" respectively.
  • Continue working on clarity of option/description text, maybe add more notes to GUI

LUA error

Describe the bug

LUA error

Do you have an error log of what happened?

5x DBM-Core/DBM-Core.lua:9320: attempt to index field '?' (a nil value)
[string "@DBM-Core/DBM-Core.lua"]:9320: in function <DBM-Core/DBM-Core.lua:9302>
[string "@DBM-Core/DBM-Core.lua"]:9334: in function UpdateKey' [string "@DBM-Raids-WoTLK/Coliseum/Twins.lua"]:71: in function <DBM-Raids-WoTLK/Coliseum/Twins.lua:69> [string "@DBM-Raids-WoTLK/Coliseum/Twins.lua"]:82: in function handler'
[string "@DBM-Core/DBM-Core.lua"]:1074: in function <DBM-Core/DBM-Core.lua:1061>
[string "=(tail call)"]: ?
[string "@DBM-Core/DBM-Core.lua"]:1074: in function <DBM-Core/DBM-Core.lua:1061>

Locals:
Skipped (In Encounter)

To Reproduce

Just appear randomly in combat

Screenshots

Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?

Which version of DeadlyBossMods are you using?

Was it working in a previous version? If yes, which was the last good one?

Additional context

LoadAddon for both GUI and for loading mods can hit script ran too long in classic wraths latest patch

Due to some unannounced undocumented change in latest wrath classic patch, LoadAddon now has a load restriction time that breaks for some DBM users, even out of combat. The known timing restriction it is unknown but it is higher than normal 250ms. Unfortunately DBM gui and module loading takes about 500-1000ms for larger modules (which after the refactor and merging of many of them, is just about all of them now)

It's unknown if this restriction is intended or some bug, because loadaddon used to be exempt from script timing since an addon loading is a one time thing and not something that causes performance issues unless it's actually broken. The irony of blizzards code is, it CAUSES breakage that results in users freezing for up to 5 minutes or fully DCing, instead of just letting the mod take a second to load. ๐Ÿคทโ€โ™‚๏ธ

None the less, the DBM GUI code needs rework to greatly reduce load times by eliminating unnecessary draws of all the sub module panels until they are visible for first time and probably other optimizations anyways, it's just been bumped up to critical/urgent.

Locale re-structuring

Core (CommonLocale)

  • br
  • cn
  • de
  • es
  • fr
  • it
  • kr
  • ru
  • tw

Core (Locale)

  • br
  • cn
  • de
  • es
  • fr
  • it
  • kr
  • ru
  • tw

GUI

  • br
  • cn
  • de
  • es
  • fr
  • it
  • kr
  • ru
  • tw

Duplicated fonts in dropdown - conflict with LibSharedMedia

Describe the bug

Some blizzard fonts are duplicated since they are being added twice with different paths (case-sensitive).

Do you have an error log of what happened?

N.A.

To Reproduce

  1. Open font dropdown

Screenshots
image
image

Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?
Yes

Which version of DeadlyBossMods are you using?
image

Was it working in a previous version? If yes, which was the last good one?
No

Additional context

-- RaidWarn Font
local Fonts = DBM_GUI:MixinSharedMedia3("font", {
{
text = DEFAULT,
value = "standardFont"
},
{
text = "Arial",
value = "Fonts\\ARIALN.TTF"
},
{
text = "Skurri",
value = "Fonts\\skurri.ttf"
},
{
text = "Morpheus",
value = "Fonts\\MORPHEUS.ttf"
}
})

vs

LibSharedMedia:
image

@QartemisT , this seems your AoE. I'd suggest either delete the duplicate font registration in each module or align fontpath, like so:

	{
		text	= "Skurri",
		value	= "Fonts\\SKURRI_CYR.TTF"
	},
	{
		text	= "Morpheus",
		value	= "Fonts\\MORPHEUS_CYR.TTF"
	}

Also, during the investigation, I found that Friz Quadrata TT does not save as such, and always defaults to Default font (on EN language, at least). Is this a bug or intended?
Feel free to comment on any topic and I'll revert as soon as I can.

Group Names for Announcement Messages

Our guild has 7 Groups running Kara, and about to boot-up a 3rd 25man Team.
So things like this happen periodically:

[07:36 PM] <DBM> Shade of Aran has been engaged by guild
[07:37 PM] <DBM> Terestian Illhoof has been defeated by guild after 2 minutes and 20.64 seconds!

Would it be viable to some how add in a group name, as defined by the raid leader, or add in the Raid Leader's Name, something to indicate what group in the guild is doing what?

Lua Error from HandleVersion

Describe the bug
I have been getting intermittent LUA errors in the Wrath of the Lich King client from DBM-Core.lua complaining about comparison to nil value I have tracked the problem down to line 1461

dbmToc = tonumber(GetAddOnMetadata("DBM-Core", "X-Min-Interface" .. (isClassic and "-Classic" or isBCC and "-BCC" or isWrath and "-Wrath" or "")))

that ("-WOTLK" or "-Wrath") will always return "-WOTLK" because that string can never be false
at the same time the DBM-Core.toc does not have a field for X-Min-Interface-WOTLK, it only has X-Min-Interface-Wrath, as a result that call to GetAddOnMetadata() will always return nil

To Reproduce
I haven't been able to reliably reproduce the error as i don't full comprehend when that handler fires, but the following can be shown to test the logic I presented above:

/script ChatFrame1:AddMessage("test message" .. GetAddOnMetadata("DBM-Core","X-Min-Interface" ..("-WOTLK" or "-Wrath")))

Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?
nope

Which version of DeadlyBossMods are you using?
the version in the DBM-Core.toc is 6d0bbda

Was it working in a previous version? If yes, which was the last good one?
I've been seeing this off and on for quite a while not sure when it originated if i'm understanding the rest of the code correctly this issue will only crop up when there is a new version of DBM available

Additional context

Toggle to remove default music from random select.

Is your feature request related to a problem? Please describe.
I use custom music packs with DBM to randomize encounter music and would like the music I include to be the only tracks that play. Currently the included tracks such as Anduin Part 2 B, Bronze Jam, Invincible, etc. have a chance to pop up in the shuffle rotation.

Describe the solution you'd like
A toggle to exclude these from being loaded into the music list.

Describe alternatives you've considered
Currently I comment out these tracks in the DBM-Core\modules\Sounds.lua on every addon update, which, while it works, can sometimes be tedious if there are frequent updates.

Additional context
Add any other context or screenshots about the feature request here.
Screenshots of what I comment out to make this work for me and am asking for a toggle for:

image
image
image

Thank you for any consideration.

Unify DBM Core

  • Check and migrate in DBM-Classic
  • Check and migrate in DBM-BCC
  • Check for any "version-specific" hacks in place
  • Test on all 3 versions

Healers also need to observe skills directed at tank players, but do not need to see or hear any information related to taunts.

Currently, if I don't select 'Filter out tank-specific information when not in tank specialization,' I hear a lot of taunt-related voice lines and timers. However, as a healing player, I only care about skills that are about to spike damage on the tank, not when they need to taunt. Could you modify your settings? Taunt reminders default to only apply to tanks, so us healing players can focus more on our own combat.

Cancel/Restart timer methods not unscheduling multi arg timers

Describe the bug

Using :Cancel(arg1, ...) or :Restart(arg1, arg2, ...) will fail to unschedule timers, specifically when dealing with multi arg timers (example, NewCDCountTimer with a count).

Do you have an error log of what happened?
NA

To Reproduce
TLDR:

local timerCount = mod:NewCDCountTimer(5, 2061)

timerCount:Start(nil, 4)
timerCount:Schedule(5, nil, 4)

timerCount:Cancel(4) -- bar timer stopped but fail to unschedule
timerCount:Cancel(nil, 4) -- bar timer failed to stop but succeed in the unschedule above

Now for the troubleshooting steps:
Letโ€™s consider a dummy example (used priest flash heal for easy repro with cast start for testing):

local timerCount = mod:NewCDCountTimer(5, 2061)

If I start and cancel, with a dummy count value = 4, no problem:

timerCount:Start(5, 4)
--
timerCount:Cancel(4)

If I restart, or add nil timer to use default is also no issue:

timerCount:Restart(nil, 4)

Increasing arg complexity with for example a GUID (using target guid just for illustration) is also no problem for now. Adapted timer with allowdouble flag accordingly:

local timerCountGUID = mod:NewCDCountTimer("d5", 2061)

timerCount:Start(nil, 4, UnitGUID("target"))
timerCount:Cancel(4, UnitGUID("target"))

Problem begins if we also add Scheduling into the mix. Due to how the methods are designed, the order of args between the Cancel/Unschedule and the Start is different and therefore will fail to match the timer to unschedule:

timerCount:Restart(nil, 4, UnitGUID("target")) -- will fail to unschedule if called again
timerCount:Schedule(5, nil, 4, UnitGUID("target"))
--
timerCount:Cancel(4, UnitGUID("target")) --will hide started timer, but fail to unschedule

I was only able to avoid this trap with arg mismatch by being verbose and not rely on restart/cancel to unschedule (notice the nil arg difference, if you add prints in each method vararg inside Core it will be more apparent):

timerCount:Start(nil, 4, UnitGUID("target"))
timerCount:Schedule(5, nil, 4, UnitGUID("target"))
--
timerCount:Unschedule(nil, 4, UnitGUID("target"))
timerCount:Stop(4, UnitGUID("target"))

Screenshots
prints are coming from Core, on timer Start, Cancel, Unschedule, with their respective method name.
image
Exception is the "scheduled timer in 5s", which is fired in the mod event.
In these demos, flash heal is used to start + schedule timer, hearthstone to cancel.

  1. with timerCount:Cancel(4), started bar is stopped, but not unscheduled:
Wow_JIFW9vm7XU.mp4
  1. with timerCount:Cancel(nil, 4), started bar is not stopped, only unscheduled:
Wow_Su0BTPqG1Y.mp4

A :Restart would be the same behaviour, since it's a copy of Cancel.

Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?
Yes

Which version of DeadlyBossMods are you using?
DBM 9.2.33 alpha (2022/09/04 16:11:37)

Was it working in a previous version? If yes, which was the last good one?
Unknown.

Additional context
AFAICT, there isn't a mod that have these conditions in order to be a live problem, nervertheless this is a bug in core methods and thus I feel like it should be addressed.
I have created a mod just for testing this matter in the dummy, if you wish to have it for your testing I will zip it and attach here.

Bar updates

Tracking list for bar releated features todo;

  • Reversed sort by remaining timer [#410]
  • Bar apperances per-bar (large/small) [#409]
  • Support custom bar "groups" and positionings. [#360]
  • All the pretty things [Me]
  • Bar transition needs improvement; Doesn't scale up/down, and doesn't position properly and top/bottom of stack.

Modularization

Stuff that could/should be modularized;

  • DBM Scheduler
  • Dev Tools
  • Icons
  • Target Scanning
  • Options/Default options
  • Util functions
  • Sync code
  • Event registering
  • Mod creation
  • Addon load handling/Load boss mods on demand
  • Profiles
  • Commands
  • Hyperlinks
  • Raid party handling
  • Update reminder
  • Notes editor
  • Pull/Kill/wipe detection
  • Auto respond/status whisper
  • General methods
  • Class methods
  • Boss Health functions
  • Announce objects
  • Yell Objects
  • Special Warning Objects
  • Timer/Beserk/Combat Objects
  • Timer/Variable recovery
  • Localization

Potential problem in the code

in this line, select is used which returns all of the items after the index, not the item at the index itself. as I see, the function isnt called with more than 1 argument so its fine. but if you use multiple arguments it can lead to bugs. to solve, just surrond the select function with ().

Missing function C_AddOns.DoesAddOnExist in wotlk leads to spam message.

Describe the bug
C_AddOns.DoesAddOnExist is not present in wrath, possibly in classic either, and as such, DBM-Core.lua:3662 always returns a message to go get the addon pack for dungeons, even if they are already loaded. IsAddOnLoaded is the function used for wrath (and possibly classic too).

Do you have an error log of what happened?
Not existent. There is no error. The way it is coded it doesn't pop error.

To Reproduce
Enter dungeon. Observe wrong message to go get dungeon pack.

Screenshots
With wrong function:
image
With correct function:
image

Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?
Not relevant.

Which version of DeadlyBossMods are you using?
3.4.56

Was it working in a previous version? If yes, which was the last good one?
NA

Additional context
Code is also only checking for vanilla dungeon packs. If you play on wrath, it's not checking for wrath dungeon packs, but only checks for vanilla dungeon packs, which makes no sense.
At the very least check for all expansion dungeon packs.

		else--Classic
			if instanceDifficultyBylevel[LastInstanceMapID] and instanceDifficultyBylevel[LastInstanceMapID][2] == 2 and not IsAddOnLoaded("DBM-Party-Vanilla") and not IsAddOnLoaded("DBM-Party-BC") and not IsAddOnLoaded("DBM-Party-WotLK") then
				AddMsg(self, L.MOD_AVAILABLE:format("DBM Dungeon mods"))
			end
		end

Bar background opacity slider

Is it possible to get a background opacity slider for timer bars? I'm using a small pixel texture for my minimalist UI, but the bars are hardcoded in DBT.lua with a 30% background opacity.

Alternatives are to allow bar heights to be set all the way down to 1, but then font and timer texts would need custom offset options too. Seems much simpler to use a one pixel bar texture, but allow the background opacity to be set to 0.

I'm brand new to LUA and the WoW APIs, but can submit a PR if this is something you're willing to add. I've started an initial stab at doing this here - master...siegester03:DBM-Unified:bar-background-opacity but I image more work is needed still

More GUI Updates

  • Splitting content mods into two different tabs (raid & pvp/dungeon & scenario)
  • Add a separte tab support for plugins that fit outside content mods
  • InfoFrame functions rewrite
  • Global settings wipe (Factory reset, with a confirm option... Re-init from table copy, and wipe settings table)
  • Import/Export feature (ref own issue https://github.com/DeadlyBossMods/DeadlyBossMods/issues/321)
  • Timer Appearance panel may include skins stuff there or it may be a 3rd panel for skins instead as

Myst requests:

  • Add input box to color pickers that allows users to copy/enter color hex code.
  • Add infoframe role icons
  • Add infoframe separators for infoframe types that are numeric in nature (such as stack and table)
    Example:
    all 6 stacks
    -line-
    all 5 stacks
    -line-
    etc

DBT: add visual element to represent timer variance window

Is your feature request related to a problem? Please describe.
Currently, when there is a time/cooldown window, DBM strives to code the lowest timer possible, and only rely on the cd object and tilde ~ to identify that the timer is not set in stone and will not be accurate 100% of the time.
Today, 95549ff was pushed that moves the ~ next to the timer text (most welcome change!), but many users without this math knowledge would still not know how to interpret this information (personal opinion), and would not know when a certain mechanic could be expected (1 second variance? 3 seconds ? 10 seconds?...), especially since timers without explicit keep boolean would simply disappear, thus leaving the user guessing whether or not the ability is yet to happen, and when could it happen.

Describe the solution you'd like
I have seen in Discord this idea thrown around a couple of times, but never elaborated on nor registered in the tracker.
This is a very gross visualization to showcase the idea:
image

Wow_x98hPOFK8f.mp4

In writing, it could behave as such:

  • minimum timer in the variance window = timer argument (current DBM behaviour, so no change here is expected* OR rework to something like string parsing "[28-32]")
  • maximum timer in the variance window = new/reworked argument (e.g.: timerMax* OR see above 2nd way)
  • variance window be embedded in the timer statusbar (e.g.: sectioned, or diferent color/pattern, or text)
  • Timer bar only stops when it reaches the maximum hardcoded timer (timerMax or timer), or if a :Start is fired again to overwrite it (an overwrite during this coded variance window would not trigger early refresh debug)

(*) food for thought here: this would be fixed on mod load, meaning that it would apply everytime the timer is Started (timerABC:Start() would always apply the same metadata that was set on creation, whenever it was used).
If the dev would need to code a specific timer Start on a specific point in the fight (say, 2nd cast on 2nd phase...) with a different window, it would not be possible unless the :Start method had been reworked. For example, timerABC:Start("[28-32]")

Describe alternatives you've considered
keep argument exists in Core but is seldomly used, but having negative timers would also not be logical for the user, hence my request to further improve on the implementation.
@QartemisT , DBT is your area, so pinging in advance, thank you.

Change language of automated reply

Is your feature request related to a problem? Please describe.
I have my game set to German but am playing on an English realm in an English guild. I would like to have dbm answer whispers i get during bossfights in English, not in German. Noone ever understands what my addon is telling them.

Describe the solution you'd like
Let us choose the language of the automated replies.

Describe alternatives you've considered
Well, i could change the language of my game but that won't directly solve the problem.

Additional context
Would love to see this feature soon!

[Bug] Panels fail to load if two or more panels have exact same boss name

Describe the bug
It doesn't show a option panel and trash mob category is gone now

Do you have an error log of what happened?

To Reproduce

Screenshots

Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?

Which version of DeadlyBossMods are you using?

Was it working in a previous version? If yes, which was the last good one?

Additional context

UnitAura error on Tindral Sageswift LFR Amirdrassil Raid fight with WoW 10.2.5

Had this error pop up multiple times on Tindral Sageswift LFR today (multiple times in the same fight and on multiple different attempts at the fight on different characters).

Message: bad argument #2 to '?' (outside of expected range 0 to 4294967295 - Usage: local aura = C_UnitAuras.GetAuraDataByIndex(unitToken, index [, filter]))
Time: Wed Jan 17 22:07:07 2024
Count: 32
Stack: bad argument #2 to '?' (outside of expected range 0 to 4294967295 - Usage: local aura = C_UnitAuras.GetAuraDataByIndex(unitToken, index [, filter]))
[string "=[C]"]: ?
[string "@Interface/AddOns/DBM-Core/DBM-Core.lua"]:6397: in function `UnitDebuff'
[string "@Interface/AddOns/DBM-Core/DBM-InfoFrame.lua"]:639: in function `?'
[string "@Interface/AddOns/DBM-Core/DBM-InfoFrame.lua"]:1155: in function `Show'
[string "@Interface/AddOns/DBM-Raids-Dragonflight/Amirdrassil/TindralSageswift.lua"]:573: in function `handler'
[string "@Interface/AddOns/DBM-Core/DBM-Core.lua"]:1106: in function <Interface/AddOns/DBM-Core/DBM-Core.lua:1093>
[string "=(tail call)"]: ?
[string "@Interface/AddOns/DBM-Core/DBM-Core.lua"]:1106: in function <Interface/AddOns/DBM-Core/DBM-Core.lua:1093>

Locals: (*temporary) = "bad argument #2 to '?' (outside of expected range 0 to 4294967295 - Usage: local aura = C_UnitAuras.GetAuraDataByIndex(unitToken, index [, filter]))"

Looks like a case overlooked with switching to the new C_UnitAuras.GetAuraDataByIndex version of UnitAura.

To Reproduce

  1. Queue for LFR Tindral Sageswift.
  2. Continue fight until stage 2 Burning Treant form.
  3. Tindral casts Suppressive Ember putting a heal absorb on players.
  4. Error triggers.

Screenshots

Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?

No.

Which version of DeadlyBossMods are you using?

DBM 10.2.17 (2024/01/17 06:02:29)

Was it working in a previous version? If yes, which was the last good one?

Done this fight many times before today and never seen this error before. Would definitely have been working with 10.2.14 under WoW 10.2.0.

Additional context

/dbm unlock timer and bars as toggle instead of 20 second timer.

Is there any way to just make this a toggle so I don't have to keep spamming the 'move me' and 'start test bars' buttons? After I do that I have like a 2 second window where enough bars move from the small bar to my enabled huge bar and allow me to align it with the rest of my UI.

DBM-RangeCheck - attempt to perform arithmetic on local 'activeRange' (a nil value) - Phase 2 of Imperator Mar'gok in Highmaul (WoD)

Describe the bug
An error occurred referencing DBM-RangeCheck during phase 2 of Imperator Mar'gok in Highmaul (WoD)

Do you have an error log of what happened?
Message: Interface/AddOns/DBM-Core/DBM-RangeCheck.lua:715: attempt to perform arithmetic on local 'activeRange' (a nil value)
Time: Wed Jul 19 10:31:24 2023
Count: 142
Stack: Interface/AddOns/DBM-Core/DBM-RangeCheck.lua:715: attempt to perform arithmetic on local 'activeRange' (a nil value)
[string "@Interface/AddOns/DBM-Core/DBM-RangeCheck.lua"]:715: in function <Interface/AddOns/DBM-Core/DBM-RangeCheck.lua:655>

Locals: activeRange = nil
restricted = true
tEnabled = true
rEnabled = false
reverse = nil
warnThreshold = 1
playerMapId = 615
sinTheta = 0
cosTheta = 1
closePlayer = 0
closestRange = nil
closetName = nil
filter = nil
type = 0
onlySummary = nil
(for index) = 2
(for limit) = 14
(for step) = 1
i = 2
uId = "raid2"
dot = Texture {
0 =
class = "WARRIOR"
}
mapId = 615
range = 60
inRange = false
(*temporary) = nil
(*temporary) = 60
(*temporary) = 32825
(*temporary) = "raid2"
(*temporary) = true
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to perform arithmetic on local 'activeRange' (a nil value)"
mainFrame = Frame {
0 =
hideTime = 0
eventRegistered = true
restrictions = true
redCircleNumPlayers = 1
}
rangeCheck =

{
Show = defined @Interface/AddOns/DBM-Core/DBM-RangeCheck.lua:880
IsRadarShown = defined @Interface/AddOns/DBM-Core/DBM-RangeCheck.lua:949
SetHideTime = defined @Interface/AddOns/DBM-Core/DBM-RangeCheck.lua:957
GetDistanceAll = defined @Interface/AddOns/DBM-Core/DBM-RangeCheck.lua:965
GetDistance = defined @Interface/AddOns/DBM-Core/DBM-RangeCheck.lua:961
UpdateRestrictions = defined @Interface/AddOns/DBM-Core/DBM-RangeCheck.lua:953
IsShown = defined @Interface/AddOns/DBM-Core/DBM-RangeCheck.lua:945
Hide = defined @Interface/AddOns/DBM-Core/DBM-RangeCheck.lua:926
}
textFrame = DBMRangeCheck {
0 =
lines =
{
}
inRangeText = FontString {
}
OnBackdropLoaded = defined @Interface/SharedXML/Backdrop.lua:152
text = FontString {
}
Center = Texture {
}
GetBackdropColor = defined @Interface/SharedXML/Backdrop.lua:390
SetupTextureCoordinates = defined @Interface/SharedXML/Backdrop.lua:214
OnBackdropSizeChanged = defined @Interface/SharedXML/Backdrop.lua:182
HasBackdropInfo = defined @Interface/SharedXML/Backdrop.lua:278
SetBackdropBorderColor = defined @Interface/SharedXML/Backdrop.lua:422
RightEdge = Texture {
}
backdropInfo =
{
}
BottomEdge = Texture {
}
GetEdgeSize = defined @Interface/SharedXML/Backdrop.lua:188
BottomLeftCorner = Texture {
}
BottomRightCorner = Texture {
}
TopEdge = Texture {
}
ApplyBackdrop = defined @Interface/SharedXML/Backdrop.lua:294
SetBackdrop = defined @Interface/SharedXML/Backdrop.lua:329
ClearBackdrop = defined @Interface/SharedXML/Backdrop.lua:282
TopRightCorner = Texture {
}
GetBackdropBorderColor = defined @Interface/SharedXML/Backdrop.lua:409
GetBackdrop = defined @Interface/SharedXML/Backdrop.lua:347
TopLeftCorner = Texture {
}
SetupPieceVisuals = defined @Interface/SharedXML/Backdrop.lua:246
SetBackdropColor = defined @Interface/SharedXML/Backdrop.lua:399
LeftEdge = Texture {
}
SetBorderBlendMode = defined @Interface/SharedXML/Backdrop.lua:266
}
radarFrame = DBMRangeCheckRadar {
circle = Texture {
}
inRangeText = FontString {
}
dots =
{
}
text = FontString {
}
0 =
background = Texture {
}
}
L =
{
AUTO_RRANGE_OPTION_TEXT = "Show reverse range frame (%s) for $spell:%s"
ANNOUNCE_PULL = "Pull in %d sec. (Sent by %s)"
SCENARIO_ENDED_AT = "%s ended after %s."
VERSIONCHECK_ENTRY_TWO = "%s: %s (%s) & %s (%s)"
MPROFILE_COPY_SUCCESS = "%s's (%d spec) mod settings have been copied."
OPTION_CATEGORY_WARNINGS_ROLE = "Role Announces"
TIMER_FORMAT_MINS = "%d |4min

To Reproduce

  1. Go to Normal Highmaul in WoD
  2. Get to the final boss
  3. Get to Phase 2 by weakening to ~55% hp
  4. Errors start occurring

Screenshots

Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?
No

Which version of DeadlyBossMods are you using?
DBM-Core 496a6fd
DBM-Raids-WoD r73

Was it working in a previous version? If yes, which was the last good one?
Didn't happen when I last ran Highmaul 4 months go. Unsure what version that was.

Additional context
Was in a group of players working on achievements

/dbm hud arrow not working (arithmetic on nil)

Describe the bug

The hud arrow does not work, and gives a lua error.

Do you have an error log of what happened?

1x DBM-Core\DBM-HudMap.lua:420: attempt to perform arithmetic on local 'w' (a nil value)
[string "@DBM-Core\DBM-HudMap.lua"]:420: in function <DBM-Core\DBM-HudMap.lua:393>
[string "@DBM-Core\DBM-HudMap.lua"]:670: in function 'Update'
[string "@DBM-Core\DBM-HudMap.lua"]:618: in function 'UpdateAll'
[string "@DBM-Core\DBM-HudMap.lua"]:1334: in function 'Update'
[string "@DBM-Core\DBM-HudMap.lua"]:285: in function <DBM-Core\DBM-HudMap.lua:254>
[string "@DBM-Core\DBM-HudMap.lua"]:308: in function <DBM-Core\DBM-HudMap.lua:307>
[string "@SharedXML\C_TimerAugment.lua"]:16: in function <SharedXML\C_TimerAugment.lua:14

To Reproduce

  1. Target a player in your party/raid
  2. Enter /dbm hud arrow target
  3. See error

Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?
No, but I can fix the problem with minor adjustments in DBM-HudMap.lua.

Which version of DeadlyBossMods are you using?
DBM 2.5.37 (2022/06/07 18:45:26) / VPVEM: v12
TBC PTR client

Was it working in a previous version? If yes, which was the last good one?
Without downdating to test, it appears to have been broken in 6ad6b54 with the following changes:
6ad6b54#diff-d86b1e33ce8a094fea9fb79124662f9e14ab4ccdf30fba070afba5a7985b0d9bL415
6ad6b54#diff-d86b1e33ce8a094fea9fb79124662f9e14ab4ccdf30fba070afba5a7985b0d9bL675
6ad6b54#diff-d86b1e33ce8a094fea9fb79124662f9e14ab4ccdf30fba070afba5a7985b0d9bL695

Additional context
Reverting the above 3 lines appears to fix the issue. The hud arrow is functional and does not give an error. I don't know which parameters are actually intended to be taken by DrawRouteLineCustom, but I see no issues with the hud after applying the changes.

As an aside, the name matching doesn't appear to work either. The help text indicates that I should be able to do /dbm hud arrow Playername and it will draw an arrow to Playername in my party/raid. I haven't been able to get this to work. I am aware that it's case sensitive.

[Feature] Support custom Alert/Timer text

  • Support entering own timer text. Must include support for timer args (such as targetname or count)
  • Support entering own alert text. Must be compatible with note feature (ie note is stil appended to custom text). Must also support args.

Range check fails in WotLK Classic Saurfang Encounter

While the previous issue with the range finder in the blood prince council encounter seems to resolved by my fix (#293), there is still an issue with the range finder in the Deathbringer Saurfang encounter. This seems not to be related to the GUI opening incorrectly, as neither the fix nor manually setting the range helps.

Describe the bug

The range finder sometimes shows no other players, regardless of distance. If you move out of the zone and port back in (either via the teleporters in ICC or probably also via warlock port or logout/login) the finder starts working again. It breaks again when you move to the gunship that is parked next to the balcony and back onto the balcony. It might thus be related to vehicle physics.

Do you have an error log of what happened?

I checked, there was no error logs in Bugsack.

However, I did some experiments and it seems that the check of IsItemInRange is not providing accurate results in this position. This might be a WoW bug and not a plugin bug, but maybe you can find a workaround? I tested this by writing into the chat frame:

/script print(IsItemInRange(32321, "raid10"))

(raid10 was my experimentation buddy in the raid)

To Reproduce

  1. Go to ICC (10 non-heroic, or probably other modes too)
  2. Defeat first three bosses
  3. Stand on the balcony where the fight with Saurfang takes place
  4. Type /range 13
  5. Range check window appears, but is always empty. This remains the case for the whole fight.

Which version of DeadlyBossMods are you using?

  • DBM 3.4.54 alpha (2023/10/30 23:29:59)
  • DBM 3.4.53 (2023/10/14 08:17:59)

Retest literally all target scanning methods

  • Test regular target scanner using CID (Blackrock Foundry thogar, Grenade scans)
  • Test regular target scanner using GUID (Blackrock Foundry thogar, Bomb scans)
  • Test unit target scanner using unitID (blackrock Foundry darmoc, when breath beast breaths)
  • Test forced abort for Unit target scanner (Blackrock Foundry Darmoc, when breath beast dies)
  • Test repeat scanner (Paragons of the Klaxxi death from above scanner)

[Bug] /dbm arrow <player> is broken

The following slash command is failing due to a first letter case mismatch:

elseif DBM:GetRaidUnitId(subCmd) then
DBM.Arrow:ShowRunTo(subCmd)

When the cmd gets lowercased here:

local cmd = msg:lower()

The player name will always mismatch on the first letter case when applying DBM:GetRaidUnitId, since it won't find raid[name].

image

Example:

  • name from a player in the group: Johndoe
  • /dbm arrow Johndoe
  • Johndoe will get lowercased to johndoe and passed into the function as DBM:GetRaidUnitId("johndoe")
  • raid["johndoe"] will always be nil, since it should have been raid["Johndoe"]

I went into git blame and this was probably when the bug was introduced: DeadlyBossMods/DeadlyBossMods@52a895e

GUI: lua error with https://github.com/DeadlyBossMods/DBM-Unified/commit/62e6f0b06645cb925e2d8bbdbeabaeb041372f74

Describe the bug

62e6f0b introduced lua error if ability button is clicked.

Do you have an error log of what happened?

Message: bad argument #1 to '?' (table expected, got nil)
Time: Sat Jul 30 00:45:29 2022
Count: 1
Stack: bad argument #1 to '?' (table expected, got nil)
[string "=[C]"]: ?
[string "=[C]"]: ?
[string "=[C]"]: ?
[string "@Interface\SharedXML\OptionsFrameTemplates.lua"]:6: in function `(for generator)'
[string "@Interface\SharedXML\OptionsFrameTemplates.lua"]:107: in function `OptionsList_ClearSelection'
[string "@Interface\SharedXML\OptionsFrameTemplates.lua"]:147: in function `OptionsListButton_OnClick'
[string "*:OnClick"]:2: in function <[string "*:OnClick"]:1>

Locals: 
Message: Interface\SharedXML\OptionsFrameTemplates.lua:94: attempt to index local 'panel' (a nil value)
Time: Sat Jul 30 00:45:29 2022
Count: 1
Stack: Interface\SharedXML\OptionsFrameTemplates.lua:94: attempt to index local 'panel' (a nil value)
[string "=[C]"]: ?
[string "@Interface\SharedXML\OptionsFrameTemplates.lua"]:94: in function `OptionsList_DisplayPanel'
[string "@Interface\SharedXML\OptionsFrameTemplates.lua"]:150: in function `OptionsListButton_OnClick'
[string "*:OnClick"]:2: in function <[string "*:OnClick"]:1>

Locals: 

To Reproduce

  1. Click the outside of the button, as shown in the video.
Wow_PjZQSlXFmH.mp4

Screenshots

Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?
No, but is reproducible and revertible with abovementioned commit.

Which version of DeadlyBossMods are you using?
image

Was it working in a previous version? If yes, which was the last good one?
Yes.

Additional context

DBT bugs

Describe the bug

I have compiled some visual bugs that happen with DBT.

Do you have an error log of what happened?

NA

To Reproduce
See below for each case scenario.

Screenshots

  • 1. In Classic animation, AnimateEnlarge does not update its anchor Points to the bars latest position, causing the bars to teleport to their final destination once animation is finished.

(2 vids, one expandUpwards, other not): https://imgur.com/a/codsYVk

  • 2. In Classic animation, MoveToNextPosition was not reimplemented and therefore it is not working.

(2 vids, one with 2021 animation, other current): https://imgur.com/a/NHpR0Q3

  • 3. In Simple animation, If Fill up and Huge Bars are disabled, Enlarge will make the small bar reset its progress and maximum value.

image

Wow_PrqN2SKb2w.mp4

Did you try having DeadlyBossMods as the only enabled addon and everything else (especially something like ElvUI) disabled?
Yes.

Which version of DeadlyBossMods are you using?
9.2.21 alpha (20222/07/01 20:33:14)

Was it working in a previous version? If yes, which was the last good one?
Before DBT rewrite, from 2021: DeadlyBossMods/DeadlyBossMods@0d607c7#diff-379aeb92b9b0fea6bbf3d7326c06cc3ea4142a1ab4ea74a64ba49f0e269a138d

Additional context
I have already relayed 1 and 2 to Artemis, but since I am finding more issues with DBT, I thought it'd be best to aggregate them in one place. I will be updating this report if I detect more cases, same as I've been doing with GUI bugs report.

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.