Talk:Nav Mesh Editing
Jump to navigation
Jump to search
These two commands are handy for forcing creation of nav areas and connections that would otherwise be impossible to make normally. This is because nav_save_selected
stores the information for a selected set in a file, that can be edited, and then added through nav_merge_mesh
.
The two commands in theory would be particularly handy for dealing with area portals in the nav mesh. I think they should be mentiond on this page, but I am uncertain how to describe them in an understandable way. - Amicdict (talk) 14:38, 26 August 2021 (PDT)
- Well, I never heard about them, but I guess you can just go ahead and try to write everything you found out so far in a new subsection, probably under the Advanced editing techniques. As soon as you have written something, there will be the chance that others investigate about that topic, too. --Popcorn (talk) 15:55, 26 August 2021 (PDT)
Select areas by attribute? / Transient areas
Is there no nav command to select all areas with a certain attribute in or I am blind ??!? --Nescius (talk) 15:15, 2 May 2025 (PDT)
- The former, I presume. Unless there's VScript ways by now, but I just tested it. There is a
CNavMesh
instance but its methods don't seem to work because they access some null instance. Unfortunate. --popcorn (talk) 20:15, 2 May 2025 (PDT) - May be overcomplicated, but you can
nav_save_selected
all areas to a text file and find all areas with an "Attributes" int that has the bit flag you want and edit them if desired. If it's just about adding/removing some flag from the entire mesh, you cannav_select_radius 999999; nav_(mark|clear)_attribute (NO_JUMP|STAND|JUMP);
. --popcorn (talk) 20:42, 2 May 2025 (PDT)
alias nextmap 1;
alias 1 "alias nextmap 2; dostuff; map cs_assault"
alias 2 "alias nextmap 3; dostuff; map cs_compound"
alias 3 "alias nextmap 4; dostuff; map cs_havana"
alias 4 "alias nextmap 5; dostuff; map cs_italy"
alias 5 "alias nextmap 6; dostuff; map cs_militia"
alias 6 "alias nextmap 7; dostuff; map cs_office"
alias 7 "alias nextmap 8; dostuff; map de_aztec"
alias 8 "alias nextmap 9; dostuff; map de_cbble"
alias 9 "alias nextmap 10; dostuff; map de_chateau"
alias 10 "alias nextmap 11; dostuff; map de_dust"
alias 11 "alias nextmap 12; dostuff; map de_dust2"
alias 12 "alias nextmap 13; dostuff; map de_inferno"
alias 13 "alias nextmap 14; dostuff; map de_nuke"
alias 14 "alias nextmap 15; dostuff; map de_piranesi"
alias 15 "alias nextmap 16; dostuff; map de_port"
alias 16 "alias nextmap 17; dostuff; map de_prodigy"
alias 17 "alias nextmap 18; dostuff; map de_tides"
alias 18 "alias nextmap 19; dostuff; map de_train"
alias 19 "alias nextmap; dostuff;"
nav_edit 1;
alias t "nav_toggle_selected_set; wait 2"
alias c1 "t;nav_clear_attribute CROUCH"
alias c2 "t;nav_clear_attribute JUMP"
alias c3 "t;nav_clear_attribute PRECISE"
alias c4 "t;nav_clear_attribute NO_JUMP"
alias c5 "t;nav_clear_attribute STOP"
alias c6 "t;nav_clear_attribute RUN"
alias c7 "t;nav_clear_attribute WALK"
alias c8 "t;nav_clear_attribute AVOID"
//alias c9 "t;nav_clear_attribute TRANSIENT"
alias c10 "t;nav_clear_attribute DONT_HIDE"
alias c11 "t;nav_clear_attribute STAND"
alias c12 "t;nav_clear_attribute NO_HOSTAGES"
alias c13 "t;nav_clear_attribute STAIRS"
alias c14 "t;nav_clear_attribute NO_MERGE"
alias c15 "t;nav_clear_attribute OBSTACLE_TOP"
alias c16 "t;nav_clear_attribute CLIFF"
alias dostuff "clear_non_transient; t; nav_save_selected; wait 30;"
alias clear_non_transient "c1;c2;c3;c4;c5;c6;c7;c8;c9;c10;c11;c12;c13;c14;c15;c16;"
- Oh I was too pissed off such a basic command is missing to even start thinking of alternatives and just abandoned all efforts lol. But knowing vscript's CNavMesh doesn't work is quite disappointing. I suppose nav_save_selected will work for what I want after I remove all undesired attributes and then save so I can ctrl+f the one I want. What I wanted to do was check if there is any official map using the TRANSIENT attribute --Nescius (talk) 00:13, 3 May 2025 (PDT)
- Did some cfg script for automation and found some TRANSIENT attributes in cs_havana. Though they don't seem to do anything. At first I thought it's related to areas being blocked automatically at start of the round but it had the same behavior without transient.
--Nescius (talk) 02:59, 3 May 2025 (PDT)- Yeah, the transient areas are actually used right at those critical spots. Then apparently the transient attribute is unimplemented. For a moment I thought that func_nav_blockers or trigger_hurts do the job of blocking, but there aren't any. I'm wondering how the blocked state is toggled then.
- Btw, in case you may find it interesting, I just remember that for csgo I wrote a program to convert the exported nav text file to squirrel source code such that you can find (and view) areas in-game (however not to edit them, obviously). --popcorn (talk) 11:49, 3 May 2025 (PDT)
- I was hoping that was the case for transient areas but the blocking happens even if you remove transient areas. I tried spawning func_brush in that map via
ent_create func_brush model *41
in the middle of random nav squares and they get blocked when the round resets too. I have too little motivation to checkas it was pretty much replaced by
. So
also doesn't have a command to select areas with attributes ? I find that so ridiculous. How someone programs a command like "nav_select_stairs" instead of spending 5 more minutes creating "nav_select_with_attributes" lmao --Nescius (talk) 11:58, 3 May 2025 (PDT)
- (Oh, funny, you answered faster than I could correct myself due to having overlooked your previous last two sentences. Sorry.)
- Yeah, I feel the pain with that missing command.
- Well, the program for the squirrel code generation I mentioned isn't specific to csgo. I just wanted to mention that it may be a thing that you "just" have to rearrange the exported nav areas text file to get data you can process in squirrel and thus in-game. --popcorn (talk) 12:28, 3 May 2025 (PDT)
- I was hoping that was the case for transient areas but the blocking happens even if you remove transient areas. I tried spawning func_brush in that map via