No-Bling/DOTA

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

AveYo commented

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?

AveYo commented

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

AveYo commented

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

AveYo commented

@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?

AveYo commented

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

AveYo commented

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

AveYo commented

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

dota2_TgNbj7nFN0
i get this error whenever i launch dota with -tempcontent option after using a latest nobling script.
please help

AveYo commented

@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

AveYo commented

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

AveYo commented

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"?

AveYo commented

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

AveYo commented

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.

AveYo commented

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.

AveYo commented

Edit: this is the best I can do about the choices dialog:
wtf2
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.

Edit: this is the best I can do about the choices dialog:
wtf2

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.

AveYo commented

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.

AveYo commented

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.

AveYo commented

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

It's not prettier, but it adds some clarity IMO.

notepad++_C1Y8bRVDL8

Not sure why "Default" has a thicker border, but I'm looking.

@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. :^)

AveYo commented

u punks are never satisfied are you?

haha
sorry, but I take this small text trick any day over those ugly checkboxes

so checkmate atheists, how are you gonna get physically ill now? ๐Ÿคฃ

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.

AveYo commented

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/

AveYo commented

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.

@AveYo how is the development bro?

AveYo commented

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