Can somebody do a tutorial of how to use user filters?
vannessqn opened this issue ยท 50 comments
Like Idk how it work, what can you do with it? Maybe a video will be awesome
See updated readme for a quick introduction.
I have added missing vital function in the script to generate a items_reference.txt
file so download it again.
The mod alters those definitions dynamically, and you can prevent it for specific items / heroes / slots / rarity.
You can even completely replace definitions for an item with those from another item :P
That's it for now, got so many things to do
ok bro I dont want to bother you haha, oh can you explain some of the options no-bling dota does? what is the wearables, loadout, glancevalue does? the potato I think is disable some stuff on menu? glancevalue I remember reading the old readme that it disable all dota 2 cosmetics?
Pretty much.
Couriers, Wards: hide particle effects
Heroes: does not do anything atm, it will hide some default hero effects (like TB trail, SF trail AM weapon fx etc)
Wearables: hide / revert to defaults particle effects for workshop items (hats).
Abilities: revert to defaults custom spell effects for workshop items.
GlanceValue: also revert models for workshop items, so it looks like the default ones (aka "nohats" / vanilla dota)
Taunts: self-descriptive
SoundBoard: mutes custom chatwheel sounds
Loadout: work in progress, hide hero effects in menu, hide effigies effects in game, more to be added (outposts, weather)
Potato: hides some ui effects, as well as the main menu fps killing promotional tiles
Not yet added back to readme because I might change them soon
ty sir, and a little thing more, right now it doesnt work with DOTA 2 Mod from dota2mods.com (it worked great together before) so if u have spare time in the future maybe you can check it out, 2 of the mod make play dota 2 in third world bearable :))
Kinda conflicting mods, one disables bling, and the other adds some more :)
The new version overrides items_game.txt
to soft-replace resources, and that thing probably does it too.
Not sure if I will go back to the previous method of individually replacing files.
Actually No-Bling can be used to add mods as well - even more efficiently than other solutions.
Custom resources can be placed in a pak01_dir
folder in the script directory and will be picked up automatically
Custom items_game.txt
entries can be added to the quite able No-Bling-filters.txt
file
I'm sure one can identify the required entries by doing a search in that modded file for matching paths
Might even want to raise the issue with the other authors as they could provide a items_game.txt-less variant + filters for no-bling in text form
Thank you for the update, can I help with documentation?
need help with enigma world chasm, i want leave the ultimate effect and sound on and only that!! what line should i edit in items_game.txt for this? tnx.. 0.o
@Lgazana: that's simple, you only need one entry in the No-Bling-filters.txt
file
"user-filters"
{
keep_ability "8326"
}
Searched for world chasm in items_reference.txt
Found it under 8326 id
Used 8326 with the keep_ability
filter (that also affects ability sounds)
thanks but i don't have No-Bling-filters.txt so do i create it myself? and where should i put it?
Yes that's how you do it. You place it in the same folder as the script
i don't know man i think it's not reading what's inside No-Bling-filters.txt or keep_ability filter not working or something cause the Enigma's ultimate is still default blue and the sound is default too..
but the fps increase is crazy.. very amazing job!!
ok it worked finally xD
Actually it's easy to see if the filter file has been found, just scroll up to see the first script output - whenever a filter file is found it will print it to the console (I really need to remove all that debugging text spam)
console
Glad you did it!
lol thank you so much and good job!
I have been following your @AveYo user filters example and now I can do a quite of magic things with it!! Still had a few of problems, I have the Shoulder Plate of the Fervent Conscript Honored version (style not unlocked), I want to mod it so when I wear it it can turn on the unlocked on, can you show me how to do it properly, I tried to edit it some ways but it's just not work
Yeah, the new filter capabilities rule!
For now, at the very minimum you could do this:
"user-filters"
{
keep_item "8534,8535,8536,8543,8544,8545,8546"
8534 { visuals { styles { 0 { skin 1 } 1 { skin 0 } } } }
8535 { visuals { styles { 0 { skin 1 } 1 { skin 0 } } } }
8536 { visuals { styles { 0 { skin 1 } 1 { skin 0 } } } }
8543 { visuals { styles { 0 { skin 1 } 1 { skin 0 } } } }
8544 { visuals { styles { 0 { skin 1 } 1 { skin 0 } } } }
8545 { visuals { styles { 0 { skin 1 } 1 { skin 0 } } } }
8546 { visuals { styles { 0 { skin 1 } 1 { skin 0 } } } }
}
Note that it's condensed, but the gist of it is simple: switch skin 0 to skin 1 and vice-versa!
You probably want to copy paste the complete visuals section for each item in the set individually from items_reference.txt
But for styles in particular I should add a switch filter or something to make it more convenient, I had it planned but forgot about it
I added it but it doesnt seems to work for me... But there are bigger problem, it seems like keep_modifier example in the user filters had permanent effect for me, I already deleted all the line related to skywrath and jugg but the effect still appear in game, and I can't make it disappear... I have already validated dota 2, redownload No-Bling, even deleted the user filters file but the effect still there https://imgur.com/a/zHdeTHM
@vannessqn delete <STEAMPATH>\steamapps\common\dota 2 beta\game\dota_tempcontent
folder
@lovesosa3 same as above (you might have some other mods there or an older conflicting file)
@AveYo I already tried it, deleted and rerun no-bling, it's still there, one more thing, when I was learning following your example I tried to add 1 more effect like the jugg's default weapon this case for NP https://imgur.com/a/pvtcLJ7. Idk if this cause the problem, I think not... But I dont understand like when dota_tempcontent is deleted it like the mod itself is deleted right? So when I rerun it will create a new dota_tempcontent, but now it doesnt even have user filter file, why it cause such problem, weird
First of all, each effect is linked behind the scenes with particle snapshots and control points to follow a certain model.
Effects from a hero will almost never work on another hero and can be quite problematic later on.
I know I've opened the possibility, but just don't dive right in into doing that. Stick with same hero items.
Second, yes, the mod is effectively recreated whenever you run the main script.
But when using the desktop shortcut it will only recreate the mod if a new dota patch has arrived.
I think this might be a source for confusion, so I will add tracking changes for the filters file as well next,
so it will recreate the mod also when filters change!
@AveYo Appreciate it dude, but I think you misunderstood me, I dont mod NP's default weapon effect into Jugg, I just do the samething for NP like the Jugg line,
keep_modifier { particles/units/heroes/hero_juggernaut/juggernaut_blade_generic.vpcf - particles/units/heroes/hero_furion/furion_staff.vpcf - }
like this
Right :)
Misunderstood
Actually for furion's staff there is already an internal asset filter so you probably can't override it like that atm.
Will do something about this in the next update
hey i need some help keeping "legion's blades of vothmoch" icon and everything but remove all glowy effects coming out of it and the blades..
so what can i use with keep_item "5810"?
Icons are not supported as a dedicated filter yet, will be featured next.
I personally find custom icons disturbing in-game so it did not even cross my mind someone would want them :)
The idea is to give as much as possible control to user via simple filters that do not require programming language knowledge.
Working atm to implement a disable internal filters option and add some more
Bummer.
The one method I had to completely revert Invoker persona during matchmaking, no longer works after AM persona release.
Or I miss-remember the steps.
Update delayed to check what else broke / works.
@AveYo first off, thank you for taking your time developing and updating this thing, doing god's work.
I have some feedback and a couple of suggestions to improve it.
This version of No-Bling doesn't remove hats on heroes like the old one did (I think it must be GlanceValue option). Is this something you currently work on to fix in new implementation?
Right now I use both: re-built pak01_dir.vpk from old No-Bling with everything but HeroTweaks enabled (some animations were broken because of it), and renamed pak01_dir.vpk to pak02_dir.vpk from new No-Bling with everyting enabled. Haven't paid a lot of attention if there are some minor hats left on some heroes in-game, but in menus, most heroes look vanilla, even new sets from TI10 Cache and AM persona (with some minor visual glitches).
I suggest you to keep old implementation of No-Bling in a separate branch of this repo, just so you have a backup and everyone else can learn from it (maybe) or use it until you get new implementation parity with old one.
My next suggestion would be to add description of what each option does from here to readme. I'd say it's essential, because how should anyone know what each option does before they decide to use it or not?
And another QoL/UX suggestion: I was really confused with new interface because there was no clear way to tell that red background meant "disabled" and white meant "enabled". I was able to tell which does what only by trying to build it (all whites resulted in no built file) and by looking at contents of No-Bling-choices.txt.
Even though new UI looks slicker than the old version, it can be really confusing. I'd say the best option woud be to make checkboxes visible again, or add some text like "ON" and "OFF" instead of them.
I see I'm not the only one confused. Even if you want to leave the UI as-is, could you please at least mention this in readme?
Also, if you need old implementation for any reason, ping/DM me and I can spin up a forked repo, if that's OK.
The colors being confusing is such a reddit thing I've rofl a bit!
Why would red not be un-selected when the buttons at the bottom have red background around them?
And it only takes one, two runs at most to get used to. I'm keeping it if only to troll some users
But sure, I can add a Roses are ๐ด, Selected No-Bling choices are โช note ๐
Heroes option does nothing atm, it's a work in progress.
There's no point on going back to the old build, won't take much longer to get on parity / better.
Reliable rules (filters) to set exceptions from the automated generated build is the strong point now.
It helps both me as a dev and advanced users familiar or not with items_game modding.
Most stuff is self-descriptive (to me) but I'm trying to document the new format by examples.
I think you will find the upcoming final user-rules format example much more helpful:
"user-rules" // see generated items_reference.txt and create your own rules, do not use these examples as-is
{
keep_hero ( npc_dota_hero_meepo npc_dota_hero_lina ) // meepo + lina all items
keep_slot {
* ( weapon offhand_weapon ) // any-hero weapon + offhand_weapon items
npc_dota_hero_warlock ( ability_ultimate ) // warlock ability_ultimate items
}
keep_rarity {
* ( arcana ) // any-hero arcana items
npc_dota_hero_ursa { * ( rare immortal ) } // ursa any-slot rare + immortal items
npc_dota_hero_antimage { head ( mythical ) } // am's head mythical items
}
keep_item ( 12 38 6694 ) // items 12, 38, 6694
keep_type {
// override_internal 1
4004 ( * ) // item 4004 any-type, same as keep_item ( 4004 )
4005 ( model_player ) // item 4005 model_player [GlanceValue]
4006 ( portraits ) // item 4006 portraits
7247 ( gem ) // item 7247 gem having effects
4007 ( visuals ) // item 4007 whole visuals section
4020 ( particle_create ) // item 4020 visuals having type particle_create [bling]
4454 ( sound particle ) // item 4454 visuals having type sound + particle [ability]
4794 ( ability_icon ) // item 4794 visuals having type ability_icon
npc_dota_hero_rattletrap { * ( particle_create ) } // clockwerk any-slot visuals having type particle_create [bling]
npc_dota_hero_enigma { arms ( model_player ) } // enigma's arms model_player [GlanceValue]
}
keep_soundboard ( TI10_Ceeeb Brutal )
// replace_item pairs of id1 id2 or id1 {manual definition}
246 { visuals{} } // replace item 246 [ss's weapon] with empty visuals manual definition
247 246 // replace item 247 [ss's offhand_weapon] with item 246 [ss's weapon]
12 // replace item 12 [kunkka's weapon] with {manual definition from 5321}
{
"model_player" "models/items/kunkka/kunkka_shadow_blade/kunkka_shadow_blade.vmdl"
"visuals"
{
"asset_modifier"
{
"type" "particle"
"asset" "particles/units/heroes/hero_kunkka/kunkka_weapon_glow_ambient.vpcf"
"modifier" "particles/econ/items/kunkka/kunkka_weapon_shadow/kunkka_weapon_glow_shadow_ambient.vpcf"
}
"asset_modifier"
{
"type" "particle_create"
"modifier" "particles/units/heroes/hero_kunkka/kunkka_weapon_glow_ambient.vpcf"
}
}
}
// internal replace_item rule can also be used for generic hero + slot replace
replace_item {
// override_internal 1
npc_dota_hero_omniknight { weapon 44 } // replace all omniknight's weapon items with item 44 [default weapon]
}
replace_model_player {
// override_internal 1
6972 5712 // replace item 6972 [sky's Complete Staff] with 5712 "model_player"
npc_dota_hero_furion { weapon 4159 } // replace all furion's weapon model with 4159 "model_player"
}
replace_visuals {
// override_internal 1
6972 5712 // replace item 6972 "visuals" with 5712 "visuals" section
npc_dota_hero_furion { weapon 4159 } // replace all furion's weapon "visuals" with 4159 "visuals" section
}
replace_style {
8534 { 0 1 } 8544 { 0 1 } 8545 { 0 1 } 8546 { 0 1 } // replace style 0 with style 1 for some items part of Fervent Conscript
}
replace_type {
// override_internal 1
4004 { * 2 } // replace item 4004 any-type = 2, same as replace_item { 4004 2 }
4005 { model_player 15 } // replace item 4005 model_player = 15 "model_player"
4006 { portraits 468 } // replace item 4006 portraits = 468 "portraits" section
4007 { visuals 47 } // replace item 4007 whole visuals section = 47 "visuals"
4020 { particle_create 15 } // replace item 4020 visuals having type particle_create [bling] = 15
4454 { particle 4598 sound 4598 } // replace item 4454 visuals having type ability + sound = 4598
4794 { ability_icon 7741 } // replace item 4794 visuals having type icon = 7741
npc_dota_hero_enigma { arms { model_player 8326 } } // replace enigma's arms model_player = 8326 "model_player"
}
}
Will probably add a glossary page for rules (filters) and add back the table format for each choice like before ๐
I agree with what @Mackzwellz said. The UI is rather confusing at first glance. Moreso because there are quite a few options preselected. Some button-depressed texture or a border between buttons and options would be helpful in increasing the glancevalue of the mod. :^)
And speaking of GlanceValue, the option doesn't revert wards and couriers to the default model.
Edit: this is the best I can do about the choices dialog:
Will this one get you punks satisfied? ๐คฃ
GlanceValue by default will revert wards next, but not couriers.
Who even likes having 5 donkeys at the fountain?
Plus some couriers are absolutely awesome!
But sure, a rule will be available to revert couriers too.
This is a serious question. How do we know if a button is enabled or not, and if the button is "Enabled"? And does that mean it will be filtered out or allowed?
Also it would be nice if there were tooltips or a hover tooltip that included the info from:
Couriers, Wards: hide particle effects
Heroes: does not do anything atm, it will hide some default hero effects (like TB trail, SF trail AM weapon fx etc)
Wearables: hide / revert to defaults particle effects for workshop items (hats).
Abilities: revert to defaults custom spell effects for workshop items.
GlanceValue: also revert models for workshop items, so it looks like the default ones (aka "nohats" / vanilla dota)
Taunts: self-descriptive
SoundBoard: mutes custom chatwheel sounds
Loadout: work in progress, hide hero effects in menu, hide effigies effects in game, more to be added (outposts, weather)
Potato: hides some ui effects, as well as the main menu fps killing promotional tiles
Not yet added back to readme because I might change them soon
I am happy to contribute to the mod and/or provide documentation if you want collaboration.
Serious question or trolling, let me clarify again:
- at the top I see a bunch of vertical words, some with red on white, some with white on red.
- there is a small empty red space after, that is not clickable; if I resize the dialog, it gets bigger. hmm.
- at the bottom I see 3 horizontal words white on red that are common dialog button labels. can highlight.
- I just assume that red is the background color, and the inverted colors, red on white background equals selecting.
- it's not at all outlandish. but let's pretend I'm confused. I just press Enter, or click OK:
the selected choices are printed on the script window..
I might miss them since the script spams plenty of debug messages
so I make all choices white and click OK.
then I make all choices red and click OK.
yep, red on white background equals selecting. TIL
Also, this last concept has a much more pronounced 3d pressed effect on practice, screenshot does not give it justice
And let's be honest here, it's called No-Bling DOTA mod, what it mainly does is disables bling (cosmetic particle effects) for...
.. the selected choices. Some are self-descriptive, some were described in the old versions. Like the GlanceValue also reverting models to defaults. I definitely need to add those descriptions back to the readme after the next update.
But I don't see a point in adding superfluous tooltips that golem knows who will be confused again by.
This is still a script, with a convenient dialog instead of a command prompt where you would need to write them manually
My intention was not to upset or frustrate you. I was just trying to point out that it might be a good option to implement radio or check boxes in public class Choices
, to help with usability in the future.
And as far as tooltips go, they could be fetched from the README. Then they could be updated in one location but relevant to both. I understand that you think they are a bad idea.
I really like this script, and I am hoping to help you improve this program which is why I offer to help with code or documentation in every post where I criticize anything.
And I get that, but the whole thing is meant to set up once and then just use the desktop shortcut,
that will refresh the mod as needed without showing a dialog. Not very important in the grand scheme.
I got into the habit of only releasing a complete version of something exactly because WIP can be frustrating.
Can't tackle documentation when you expect to add breaking changes to core features on the next update.
And that's what will happen next with the rules (user filters).
But I consider them more or less complete and will not touch them again significantly.
Finally less of a WIP and can resume expanding choices, and we all can start experimenting, sharing cool snippets and talk about visual bugs for specific items.
I can't stress enough how much I value any feedback, and specially criticism.
This mod had not much direct involvement from others until now.
Hope my sarcasm overdrive won't drive the few of you away
I understand now why you want it set up the way you do. And in that case, why bother using a GUI at all instead of just having a "config" file or just using "no-bling-choices"?
In the mean time, pull request submitted for changing GUI style to have checkboxes. It's not sexy, but if it only gets used once...
Thanks for communicating what's going on. I'm glad to be working with you on it.
Of course Choices Dialog is useful for anyone in the early stages of experimenting
Would not want to enter text at a console prompt or edit some text file every time I want a certain option and not another
Might be a batch freak, but I always value offloading console navigation to GUIs supporting both keyboard and mouse
If it were viable, I would have even create a GUI filter picker, but it's not realistic, hence the text format.
Haven't checked your proposal, but you should note that the current version is sexy as hell, really hard to beat
@coldshouldermedia: Looks good. GlanceValue++.
Just a suggestion- would it be possible to have the inner colour of the unchecked checkboxes white or maroon? Red kinda makes them look like selected square radios. I've never worked with winForms so, idk how customisable it is.
Edit: this is the best I can do about the choices dialog:
I was under the impression that red was the selected value till I read @AveYo's rant. ๐
I mean, uuuusually darker colours signify that something's selected. And as someone who works in UI/UX it gives me major uncanny valley feels. ๐
Who even likes having 5 donkeys at the fountain?
@AveYo: Dota is ass. Gotta go full ass. If you start half-assing, you're done for. :^)
Assuming that is a custom icon, I would suggest using an "Eye" and/or "X-ed Eye" and/or "No Eye" icon, to indicate that a given category will be visible or not.
Seems like that would provide great clarity.
It's a unicode font glyph.
after I added it directly to the text I was thinking is fine and dandy, will crop something fast with it
but then I launch the manjaro vm, and stare mesmerized at the ๐ฒ's instead of the checkmarks.
then I dance a bit with LANG, fontconfig and other lame linux stuff, but it's not just that, it's also mono quirks
so I implement my own simple c# font-fallback, hunt for a similar glyph that's present in common linux fonts
like โ aka square root aka \u221A
then I add a placeholder and a simple add / replace text toggle inside the invert function
but since I had to look over and over at that lame padding code to overcome yet another mono winforms bug,
I now set out to get a proper alignment, experimenting with other controls
turns out radiobutton has a working ContentAlignment.MidleCenter but since it's a radiobutton, it works differently
fixed that as well, I'm content;
but there goes my available time, "wasted" on non-essential part of the project
I think you will now finally catch my drift - functionality first, aspect later. and while aspect might be confusing, you can work around it, while you can't do much about missing script logic.
Tomorrow I'm back at a PC to work on the pressing issues.
@AveYo Would you like to merge your version with my main menu tweak? I maintain main menu tweak for this battlepass https://old.reddit.com/r/DotA2/comments/gtepk9/dota2_battle_pass_main_menu_performance_tweak/
upcoming update already deals with the pesky menu stuff semi-dynamic:
// Potato
if (choices.Contains("Potato"))
{
var vids = new List<string>();
vids.AddRange(Directory.GetFiles(GAMEPATH+"/dota/panorama/videos", "*.webm", SearchOption.TopDirectoryOnly));
vids.AddRange(Directory.GetFiles(GAMEPATH+"/dota/panorama/videos/promo", "*.webm", SearchOption.AllDirectories));
foreach (var vid in vids)
{
var potato = SlashPath(vid).Substring(GAMEPATH.Length + 6);
if (rules["keep_potato"].Contains(potato)) continue;
output.AddEntry(potato, data["null"]);
Log("potato:",potato);
}
var maps = new List<string>();
maps.AddRange(Directory.GetFiles(GAMEPATH+"/dota/maps", "*.vpk", SearchOption.AllDirectories));
foreach (var map in maps)
{
if (map.Contains("frontpage") || map.Contains("aegis_rotate") || map.Contains("roshan_rotate"))
{
var potato = SlashPath(map).Substring(GAMEPATH.Length + 6);
if (rules["keep_potato"].Contains(potato)) continue;
output.AddEntry(potato, data["null"]);
Log("potato:",potato);
}
}
}
Edit: took a look, most stuff was also blocked in the old script version and will be back in the new one soon.
But the panorama files is a huge ๐งง, don't do that
VAC routinely checks for d2js-family cheats, and you know valve, they are not thorough
you might end up flagged in the same boat with cheaters despite your harmless modifications.
And that can be even worse than a ban - at least you can appeal that - instead it can affect matchmaking quality drastically.
just a quick covid vacation
this whole items_game.txt only was such a failure, as it worked perfectly on my network, but it turns out it does not work nearly as good for others (somehow my home isp does some weird caching and the game does not refresh the file pff)
I feel like dumping everything to the bin and go back to the roots that made this mod so great
but will first try to solve the non-working stuff via old-fashion resource replacements and see how it goes
Hmmm. Weird. Isn't it inside a .vpk?
Do you use items_game.txt to keep track of patch changes which is getting messed up because of the ISP issue?
It's cool bro do whatever you feel good for us
I have a stupid question that's a little off topic.
I understand that this mod changes something in the game so that things stop being displayed. Can I change the game texts (descriptions of items and the names of the Characters)? If so, how do I do it (not using this mod, but by myself.)? Thanks. (I just don't know where else to ask this question)
@Kujivunia you could look it up yourself, e.g. on reddit or google, if you wanted details. Here's an instruction for you, shame this ain't reddit and I'm not getting them internet points. Oh well.
So most game resources in Dota 2 are stored in a bunch of .vpk files in \Steam\steamapps\common\dota 2 beta\game\dota
folder. You'll see "pak01_<numbers>.vpk" files and a single "pak01_dir.vpk" file. It is essentially a single folder ("directory") with resources split into a few parts (files with numbers). You can use resource viewer like GCFScape to open and view "pak01_dir.vpk" - it will actually contain all "pak01" resources.
Then, you can use search and find .txt files with strings (descriptions) that you want to change. You can extract them to any folder after you find them, and change the contents.
After that, you will need to create your .vpk file. This is the same thing that No-Bling does. You can create a folder named, let's say, "pak02_dir" next to "vpkmod.exe" in No-Bling folder. Inside the folder, create the same folder structure that you see in GCFScape when you open pak01_dir.vpk. You don't need all folders, just create the ones for the files you are changing.
Let's say you want to change pak01_dir.vpk\resource\localization\abilities_english.txt
. You will need to create only "resource" folder inside your "pak02_dir" folder, then "localization" inside "resource", then copy modified "abilities_english.txt" there.
Then, open Notepad, paste in vpkmod -i pak02_dir -r -o pak01_dir.vpk
, Save As -> select "all files" instead of ".txt" in File Type -> put "pak.bat" as file name -> save this file next to "vpkmod.exe".
Now open/run this file as if it was an .exe. A new "pak01_dir.vpk" will be created in the same folder. You can use GCFScape to open it and check the contents. If it's all right, copy it to "dota_tempcontent" or whichever folder you are using for No-Bling inside Dota 2. The name of this file can be "pak02_dir.vpk", "pak03_dir.vpk", whatever, it will work. Now run Dota 2 and check if it actually works.
Hope this was clear enough. If you want to know more, open vpkmod.cs with Notepad and search for Console.Write(" VPKMOD v2.0 ")
. You will find brief description of other things that vpkmod.exe can do. Or if you are l33t enough, do Win+R -> cmd -> cd <path to folder with vpkmod.exe> -> vpkmod -h and play around. Don't forget to bless @AveYo and others who helped to create this wonderful VPK tool and GCFScape.
Maybe AveYo could use this as instruction for custom modding... (wink wink)
It would be great if there was a video tutorial on this