Files
assaultcube-/config/menus_edit.cfg
T
ac-stef 0b2079660a fix clip entity menu and add entity copy/paste menu
newent7 type attr1 attr2 attr3 attr4 attr5 attr6 attr7

    Works like newent, but can set all seven attributes directly.
    Does not automatically put the camera yaw angle into mapmodel and flag
    entities.

fixed selectionwalk so that the first parameter can be ""

DOCREF newent7
2017-06-15 01:12:33 +02:00

1495 lines
66 KiB
INI

//// Main > Editing ////
newmenu editing
menuinit [ if (! $editing) [menuheader "" "\f3You are not in edit mode"] [menuheader] ]
menuitem "Mapmodels\i\3" [ showmenu Mapmodels ]
menuitem "Lighting\i\3" [ showmenu Lighting ]
menuitem "Entities\i\3" [ showmenu Entities ]
menuitem "Pickups\i\3" [ showmenu Pickups ]
menuitem "Textures\i\3" [ showmenu Textures ]
menuitem "Skymaps\i\3" [ showmenu Skymaps ]
menuitem "Ambient sounds\i\3" [ showmenu [Ambient sounds] ]
menuitem "Arches, slopes and stairs\i\3" [ showmenu Arches ]
menuitem "Map operations\i\3" [ showmenu [Map operations] ]
menuitem "Map settings\i\3" [ showmenu [Map settings] ]
menuitem "Map config operations\i\3" [ showmenu [Map config operations] ]
menuitem "Map checks and statistics\i\3" [ showmenu [Map checks and statistics] ]
menuitem "Bots\i\3" [ showmenu [Creating bot waypoints] ]
menuitem "Settings\i\3" [ showmenu [Editing settings] ]
menuitem "Misc\i\3" [ showmenu [Editing misc] ]
menuitem "Keys\i\3" [ showmenu [Editing keys] ]
menuitem "Deleted entities" [ showmenu "Deleted entities" ]
menuitem "Help?" [ echo "\f2Please read the AssaultCube README which has a detailed guide on mapediting..." ]
//// Main > Editing > Mapmodels ////
newmenu Mapmodels
menuinit __rebuildmapmodelmenus
tempalias __mapmodelcategories [
platforms "Platforms"
ladders "Ladders+Stairs"
stairs "Ladders+Stairs"
fencing "Fencing"
plants "Plants"
lamps "Lights+Lamps"
street "Street"
pipes "Pipes"
office "Office"
computers "Computers"
home "Home"
industrial "Industrial"
military "Military"
signs "Signs"
litter "Other/Litter"
misc "Other/Misc"
unsoo "Unsorted/Official"
unsoa "Unsorted/Akimbo"
unsom "Unsorted/Map-Config"
unsorted "Unsorted/Custom"
]
looplist $__mapmodelcategories [key menu] [tempalias (concatword __mm_key_ $key) $menu]
tempalias __menuitem_offlineeditonly [ menuitem "menu only available in offline edit mode" -1 ]
tempalias __mm_showmodel [concat alias __lastwatchedmapmodel $arg2 ";" menumdl (escape $arg1) (concatword mapmodels/ $arg2) all 40 3]
tempalias __mm_showmodel2 [concat menumdl (escape $arg1) (concatword mapmodels/ $arg2) all 40 3]
tempalias __mm_tempmenus ""
tempalias __rebuildmapmodelmenus [
if $mapmodelchanged [
push __mm_menus "" // menus with content
push __mm_done "" // done map config slots
push idxs ""
push mpath ""
looplist $__mapmodelcategories [key menu] [delmenu $menu]
looplist (listallmapmodelattributes explodekeywords sortby: keywords sortby: desc usage defaults distribution) [path keyword desc usage dflts dist] [
mpath = (concatword "mapmodels/" $path)
dflts = (concat $dflts "0 0 0 0")
dflts = (concat (at $dflts 0) (at $dflts 1) (at $dflts 2) (at $dflts 3)) // fix missing/incomplete default slot parameters
idxs = (mapmodelslotbyname $mpath)
if (|| (! (strlen $keyword)) (< (findlist $__mapmodelcategories $keyword) 0)) [
keyword = unsorted
if (strcmp $dist "official") [ keyword = unsoo ] // unless someone writes the missing config files ;)
if (strcmp $dist "autodownload") [ keyword = unsoa ] // a.k.a "akimbo"
if (strcmp $dist "akimbo") [ keyword = unsoa ]
if (listlen $idxs) [ keyword = unsom ] // has slot in current map config
]
keyword = (concatword __mm_key_ $keyword)
newmenu $$keyword
menurenderoffset -40 0
concatuniq __mm_menus $$keyword
if (strlen $desc) [] [desc = $mpath]
if (listlen $idxs) [
__mm_done = (concat $__mm_done $idxs)
if (> (listlen $idxs) 1) [
looplist $idxs i [menuitem (concat $desc (concatword "#" $i)) (concat newent mapmodel $i) (__mm_showmodel $$keyword $path) $usage] // several slots for the same mapmodel
][
menuitem $desc (concat newent mapmodel $idxs) (__mm_showmodel $$keyword $path) $usage // usual case: one slot per model
]
][
menuitem (concatword "\f4" $desc) (concat newent mapmodel "(mapmodel" $dflts $path ")") (__mm_showmodel $$keyword $path) $usage // mapmodel has no slot assigned: assign one
]
]
// add menus sorted by author and distribution
push amenu ""
push distmenus ""
looplist $__mm_tempmenus menu [delmenu $menu]
__mm_tempmenus = ""
looplist (listallmapmodelattributes sortby: author desc usage defaults distribution) [path author desc usage dflts dist] [
mpath = (concatword "mapmodels/" $path)
dflts = (concat $dflts "0 0 0 0")
dflts = (concat (at $dflts 0) (at $dflts 1) (at $dflts 2) (at $dflts 3)) // fix missing/incomplete default slot parameters
if (strlen $author) [] [author = "*unknown*"]
idxs = (mapmodelslotbyname $mpath)
amenu = (concat "Map models by" $author)
newmenu $amenu // menu sorted by author
concatuniq __mm_tempmenus $amenu
menurenderoffset -40 0
if (listlen $idxs) [
if (> (listlen $idxs) 1) [
looplist $idxs i [menuitem (concat $path (concatword "#" $i)) (concat newent mapmodel $i) (__mm_showmodel $amenu $path) $desc] // several slots for the same mapmodel
][
menuitem $path (concat newent mapmodel $idxs) (__mm_showmodel $amenu $path) $desc // usual case: one slot per model
]
][
menuitem (concatword "\f4" $path) (concat newent mapmodel "(mapmodel" $dflts $path ")") (__mm_showmodel $amenu $path) $desc // mapmodel has no slot assigned: assign one
]
if (strlen $dist) [] [dist = "*unknown*"]
amenu = (concat "Map models of origin:" $dist)
newmenu $amenu // menu sorted by distribution
concatuniq distmenus $amenu
menurenderoffset -40 0
if (listlen $idxs) [
if (> (listlen $idxs) 1) [
looplist $idxs i [menuitem (concat $path (concatword "#" $i)) (concat newent mapmodel $i) (__mm_showmodel $amenu $path) $desc] // several slots for the same mapmodel
][
menuitem $path (concat newent mapmodel $idxs) (__mm_showmodel $amenu $path) $desc // usual case: one slot per model
]
][
menuitem (concatword "\f4" $path) (concat newent mapmodel "(mapmodel" $dflts $path ")") (__mm_showmodel $amenu $path) $desc // mapmodel has no slot assigned: assign one
]
]
amenu = "Browse all map models"
delmenu $amenu
newmenu $amenu
looplist $__mm_tempmenus m [menuitem $m (concat showmenu (escape $m))]
menuitem "" -1
looplist $distmenus m [menuitem $m (concat showmenu (escape $m))]
__mm_tempmenus = (concat $__mm_tempmenus $distmenus)
delmenu Mapmodels
newmenu Mapmodels
push __mm_sorted ""
looplist $__mapmodelcategories [key menu] [if (>= (findlist $__mm_menus $menu) 0) [concatuniq __mm_sorted $menu]] // create list of non-empty menus in order of list above
looplist $__mm_sorted m [menuitem $m (concat showmenu $m)] // only create non-empty menus
if (strlen $__mm_tempmenus) [menuitem "" -1 ; menuitem $amenu (concat showmenu (escape $amenu))]
delmenu [Delete unused mapmodel slot]
delmenu [Edit mapmodel slots]
if $editing_sp [
newmenu [Delete unused mapmodel slot]
loop i 256 [
mpath = (mapmodelslotname $i)
if (strlen $mpath) [
if (strcmp "" (mapmodelslotusage $i)) [
menuitem (concatword "delete slot #" $i ": " (editmapmodelslot $i)) (concat deletemapmodelslot $i) (__mm_showmodel [Delete unused mapmodel slot] $mpath)
]
]
]
newmenu [Edit mapmodel slots]
menurenderoffset -40 0
push origin ""
loop i 256 [
mpath = (mapmodelslotname $i)
if (strlen $mpath) [
if $__showorigin [
origin = (getmapmodelattributes $mpath distribution)
if (! (strlen $origin)) [ origin = "custom/unsorted" ]
origin = (__colororigin $origin)
]
menuitem (concatword "edit slot #" $i ": " (editmapmodelslot $i) $origin) (concat alias __mmslot $i ";" showmenu (escape "Edit mapmodel slot")) (__mm_showmodel2 [Edit mapmodel slots] $mpath)
] [
if (strlen (mapmodelslotusage $i)) [
menuitem (concatword "unassigned slot #" $i) (concat alias __mmslot $i ";" showmenu (escape "Edit mapmodel slot")) [menumdl [Edit mapmodel slots] ""]
]
]
]
pop origin
mapmodelchanged 0
] [
newmenu [Delete unused mapmodel slot]
__menuitem_offlineeditonly // "menu only available in offline edit mode"
newmenu [Edit mapmodel slots]
__menuitem_offlineeditonly // "menu only available in offline edit mode"
]
pop __mm_menus __mm_sorted __mm_done idxs mpath amenu distmenus
]
]
//// Main > Editing > Lighting ////
newmenu Lighting
menuitem "Add white lights " [ showmenu [White light] ]
menuitem "Add coloured lights " [ showmenu [Coloured light] ]
menuitem "" -1
menuitemcheckbox "Enable fullbright: " "$fullbright" [ fullbright $arg1 ]
//// Main > Editing > Lighting > White light ////
newmenu [White light]
__wlight = 1; __wlight1 = 1
menuitemslider "Light radius: " 1 32 "$__wlight" 1 [ __wlight = $arg1 ] 1
menuitemslider "Brightness: " 1 255 "$__wlight1" 5 [ __wlight1 = $arg1 ] 1
menuitem "" -1
menuitem "\f2\t [ OK ]\t\t" [ newent light $__wlight $__wlight1 ]
//// Main > Editing > Lighting > Coloured light ////
newmenu [Coloured light]
__clight = 1; __clight1 = 1; __clight2 = 1; __clight3 = 1
menuitemslider "Light radius: " 1 32 "$__clight" 1 [ __clight = $arg1 ] 1
menuitem "" -1
menuitemslider "Red light: " 1 255 "$__clight1" 5 [ __clight1 = $arg1 ] 1
menuitemslider "Green light: " 1 255 "$__clight2" 5 [ __clight2 = $arg1 ] 1
menuitemslider "Blue light: " 1 255 "$__clight3" 5 [ __clight3 = $arg1 ] 1
menuitem "" -1
menuitem "\f2\t\t [ OK ]" [ newent light $__clight $__clight1 $__clight2 $__clight3 ]
//// Main > Editing > Entities ////
newmenu Entities
menuinit [
resetcurmenu
if $editing [
menuitem "Place RVSF spawn point" [ newent playerstart 1 ]
menuitem "Place CLA spawn point" [ newent playerstart 0 ]
menuitem "Place FFA spawn point" [ newent playerstart 100 ]
menuitemcheckbox "Show all spawn points: " "$showplayerstarts" [ showplayerstarts $arg1 ]
menuitem "" -1
menuitem "Place RVSF CTF Flag" [ newent ctf-flag 1 ]
menuitem "Place CLA CTF Flag" [ newent ctf-flag 0 ]
menuitem "" -1
menuitem "Place ladder entity" "saycommand /newent ladder " [] "\f4The ladder entity lets players climb.\nPlease also place a ladder mapmodel.\n(found in the mapmodels menu)\i\3"
menuitem "Place clip entity\i\3" [ showmenu Clips ]
menuitem "" -1
push n (format2 "%1 %5 %6 %7 %8 %9 %010 %011" (editentity (getclosestent)))
push d (findlist "mapmodel sound" (at $n 0)); d = (if (! $d) [mapmodelslotname (at $n 2)] [if (= $d 1) [at (editmapsoundslot (at $n 1)) 0]])
menuitem "Copy closest entity" (format "newmenu [Paste entity]; menuitem \"paste: %1 %2\" \"newent7 %1\"; echo entity copied: %1 %2" $n $d) [] (format "\f4current closest entity:\n%1\n%2" $n $d)
menuitem "Paste entity\i\3" [ showmenu [Paste entity] ]
pop n d
menuitem "" -1
menuitem "Show list of TODO entities\i\3" [ showmenu "TODO entities" ]
menuitem "Show list of deleted entities\i\3" [ showmenu "Deleted entities" ]
][
menuitem "menu only available in edit mode" -1
]
]
tempalias __resetpickedents [ delmenu [Paste entity]; newmenu [Paste entity]; menuitem "\f7[Clear the list of copied entities from this menu]" __resetpickedents ; menuitem "" -1 ]
__resetpickedents
//// Main > Editing > Entities > Clips ////
newmenu Clips
alias _clip01 0 ; alias _clip02 1 ; alias _clip03 1 ; alias _clip04 1 ; alias _clip05 0 ; alias _clip06 0 ; alias _clip07 0
menuinit [
resetcurmenu
menusynctabstops 1
if (! $editing) [ menuheader "" "\f3not in edit mode" ]
menuitemslider "Elevation from ground: " 0 50 "$_clip01" 1 [ _clip01 = $arg1 ]
menuitemslider "Length (X): \t" 0 50 "$_clip02" 1 [ _clip02 = $arg1 ]
menuitemslider "Width (Y):\t" 0 50 "$_clip03" 1 [ _clip03 = $arg1 ]
menuitemslider "Height (Z):\t" 0 50 "$_clip04" 1 [ _clip04 = $arg1 ]
menuitemslider "Slope:\t" -4 4 "$_clip06" 1 [ _clip06 = $arg1 ]
menuitemslider "Shape:\t" 0 3 "$_clip07" "regular sloped-x sloped-y rotated" [ _clip07 = $arg1 ] 1
menuitem "" -1
menuitem "\f2\t [ Place clip entity ]" [ newent7 clip $_clip01 $_clip02 $_clip03 $_clip04 _clip05 $_clip06 $_clip07 ]
menuitem "\f2\t [ Place player clip entity]" [ newent7 plclip $_clip01 $_clip02 $_clip03 $_clip04 _clip05 $_clip06 $_clip07 ]
if $editing [
push x (editentity (getclosestent))
if (|| (strcmp (at $x 0) clip) (strcmp (at $x 0) plclip)) [
push n ""
loop i 7 [ n = [@n ; _clip0@(+ $i 1) = @(at $x (+ $i 4)) ] ]
menuitem "" -1
menuitem (concat "Pick clip size from closest entity:" (at $x 4) (at $x 5) (at $x 6) (at $x 7) (at $x 9) (at $x 10)) [ @(pop n) ; refreshcurmenudelayed ]
]
pop x
]
]
//// Main > Editing > Entities > TODO entities ////
newmenu "TODO entities"
menuinit [
resetcurmenu
push h 1
looplisti (enumtodoentities) [n desc] [
if $editing [
menuitem (concatword "Entity #" $n ": \fs\f4" (editentity $n) "\fr " $desc) (concat gotoentity $n "; echo" (escape $desc))
][
menuitem (concatword "Entity #" $n ": " $desc) -1
]
h = 0
]
if (pop h) [
menuitem "no TODO entities" -1
][
menuitem "" -1
menuitem "\f3Clear list of TODO entities" cleartodoentities
]
]
//// Main > Editing > Pickups ////
newmenu Pickups
menuheader "" "\f4place pickup entities"
menuitem "Health" [ newent health ]
menuitem "Pistol Magazine" [ newent pistol ]
menuitem "Box of Ammo" [ newent ammobox ]
menuitem "Kevlar Vest" [ newent armour ]
menuitem "Helmet" [ newent helmet ]
menuitem "Akimbo" [ newent akimbo ]
menuitem "Grenades" [ newent grenades ]
//// Main > Editing > Textures ////
newmenu Textures
menuitem "Browse official textures" [ showmenu "Official textures" ]
menuitem "Browse custom/downloaded textures" [ showmenu "Custom textures" ]
menuitem "Edit texture slots of current map" [ showmenu "Edit texture slots" ]
menuitem "Set notexture" [ showmenu "Set notexture" ]
tempalias __lastwatchedtexture "" ; tempalias __texslot ""
tempalias __rebuildtexturemenus [
if $rereadtexturelists [
delmenu "Official textures"
delmenu "Custom textures"
push fullname ""
looplist (gettexturelist "" "kurt skymaps map_editor" "") [tpath tname] [
fullname = (concatword $tpath "/" $tname)
if (strcmp official (gettextureorigin $fullname)) [
newmenu "Official textures"
] [
newmenu "Custom textures"
]
menuitem $fullname (concat _texmenu_exec (escape $fullname)) (concat _texmenu_hover (escape $fullname) (escape (curmenu)))
menurenderoffset -20 0
]
pop fullname
]
]
tempalias _texmenu_exec [
__lastwatchedtexture = $arg1
if $editing [ showmenu "Pick texture" ]
]
tempalias _texmenu_hover [
__lastwatchedtexture = $arg1
chmenutexture $arg2 $arg1
]
//// Main > Editing > Textures > Official textures ////
newmenu "Official textures"
menuinit __rebuildtexturemenus
//// Main > Editing > Textures > Custom textures ////
newmenu "Custom textures"
menuinit __rebuildtexturemenus
//// Main > Editing > Textures > Official|Custom textures > Pick texture ////
newmenu "Pick texture"
menuinit [
resetcurmenu
if (strlen $__lastwatchedtexture) [
chmenutexture (curmenu) $__lastwatchedtexture
push usedslots (textureslotbyname $__lastwatchedtexture)
menuitem (concat "Texture:" $__lastwatchedtexture) -1
menuitem (concat "Distribution:" (gettextureorigin $__lastwatchedtexture)) -1
menuitem "" -1
if (strlen $usedslots) [
menuitem "Texture is already used in:" -1
looplist $usedslots i [
menuitem (concatword " slot #" $i " (scale " (at (edittextureslot $i) 0) ")") (concat "__texslot =" $i "; showmenu [Edit texture slot]")
]
menuitem "" -1
usedslots = "once more"
]
if (! (strlen (edittextureslot 255))) [
menuitem (concat "Add to map config" $usedslots) (concat texture 0 $__lastwatchedtexture)
menuitem "Add to map config and use as next wall texture" (concat "edittexturestack wall (texture 0" $__lastwatchedtexture ")")
menuitem "Add to map config and use as next floor texture" (concat "edittexturestack floor (texture 0" $__lastwatchedtexture ")")
menuitem "Add to map config and use as next ceiling texture" (concat "edittexturestack ceiling (texture 0" $__lastwatchedtexture ")")
] [
menuitem "\f4(no free texture slots available)" -1
]
pop usedslots
][
menuitem "no texture selected" -1
]
]
//// Main > Editing > Textures > Set notexture ////
newmenu "Set notexture"
menuinit [
resetcurmenu
menurenderoffset -20 0
push m (escape (curmenu))
push t (concat chmenutexture $m "[]")
if (strlen (getnotexture)) [
menuitem (concat Current notexture: (getnotexture)) (concat loadnotexture (getnotexture)) (concat chmenutexture $m (getnotexture))
]
menuitem "Reset notexture" loadnotexture $t // no preview possible
menuitem "" -1 $t
menuitem "\f1Pick a notexture to highlight the areas" -1 $t
looplist (gettexturelist "map_editor/marker" "" ".png") [tpath tname td] [
fullname = (concatword $tpath "/" $tname)
menuitem (concat Set notexture to $tname) (concat loadnotexture (escape $fullname)) (concat chmenutexture $m (escape $fullname))
]
menuitem "" -1 $t
menuitem "\f1Pick a notexture for actual use" -1 $t
menuitem "\f4(as default texture, if custom texture downloads fail)" -1 $t
looplist (concat makke/rock.jpg makke/concrete.jpg (at (edittextureslot 2) 1) (at (edittextureslot 3) 1) (at (edittextureslot 4) 1) $__lastwatchedtexture) fn [
menuitem (concat Set notexture to $fn) (concat loadnotexture (escape $fn)) (concat chmenutexture $m (escape $fn))
]
pop m t
]
//// Main > Editing > Skymaps ////
newmenu Skymaps
menuinit [
resetcurmenu
if (&& $editing (! (getautomapconfig))) [
menuitem [Enable automapconfig to make changes permanent] [automapconfig ; closemenu (curmenu)] (concat loadsky (escape $loadsky))
menuitem "" -1 (concat loadsky (escape $loadsky))
]
menuitem (concat "Current skymap:" $loadsky) (concat loadsky (escape $loadsky))
menuitem "" -1 (concat loadsky (escape $loadsky))
push offskies ""
push userskies ""
push skyname ""
looplist (gettexturelist skymaps/ "" _ft.jpg) [c1 c2 c3 c4] [
skyname = (escape (concatword $c3 "/" $c4))
if (strcmp official (gettextureorigin (concatword $c1 "/" $c2))) [
offskies = (concat $offskies $skyname)
] [
userskies = (concat $userskies $skyname)
]
]
menuitem "Official skymaps:" -1 (concat loadsky (escape $loadsky))
looplist $offskies skyname [
menuitem (concat " " $skyname) (concat loadsky $skyname) (concat loadsky $skyname)
]
if (strlen $userskies) [
menuitem "" -1 (concat loadsky (escape $loadsky))
menuitem "Custom/downloaded skymaps:" -1 (concat loadsky (escape $loadsky))
looplist $userskies skyname [
menuitem (concat " " $skyname) (concat loadsky (escape $skyname)) (concat loadsky (escape $skyname))
]
]
pop offskies userskies skyname
]
//// Main > Editing > Ambient sounds ////
newmenu [Ambient sounds]
menuitem "Browse official mapsounds" [ showmenu "Official mapsounds" ]
menuitem "Browse custom/downloaded mapsounds" [ showmenu "Custom mapsounds" ]
menuitem "Edit mapsound slots of current map" [ showmenu "Edit mapsound slots" ]
tempalias __mapsoundtitles [
cavedrip.ogg "Cave drip"
distant_cars.ogg "Cars driving in the distance"
hum01.ogg "Humm 1"
hum02.ogg "Humm 2"
night_crickets.ogg "Crickets at night"
water.ogg "Water 1"
wind.ogg "Wind"
t_aircond.ogg "Air conditioner"
t_compressor.ogg "Compressor"
t_crow.ogg "Crow"
t_dogs01.ogg "Dogs 1"
t_helicopter.ogg "Helicopter"
t_hum01.ogg "Humm 3"
t_hum02.ogg "Humm 4"
t_hum03.ogg "Humm 5"
t_hum04.ogg "Humm 6"
t_night_dog.ogg "Dogs 2"
t_night01.ogg "Night 1"
t_night02.ogg "Night 2"
t_radio_comms.ogg "Radio comms"
t_radio_static.ogg "Radio static"
t_satcoms.ogg "Sat-coms"
t_sludge.ogg "Sludge"
t_static01.ogg "Static 1"
t_static02.ogg "Static 2"
t_vent01.ogg "Vent 1"
t_vent02.ogg "Vent 2"
t_water_owl.ogg "Water owl"
t_water01.ogg "Water 2"
t_waterdrip.ogg "Water drip"
t_wind.ogg "Wind 2"
t_waterpipe01.ogg "Waterpipes 1"
t_waterpipe02.ogg "Waterpipes 2"
warningalarm01.ogg "Warning alarm"
t_gastank.ogg "Gastank"
t_keyboard.ogg "Keyboard"
t_factory01.ogg "Factory"
t_vents.ogg "Vent 3"
t_waterfront.ogg "Waterfront"
t_generator.ogg "Generator"
t_electricbuzz.ogg "Electric buzz"
t_alarm01.ogg "Alarm"
flies.ogg "Flies"
deserthawk.ogg "Desert hawk"
owl.ogg "Owl"
citynoisebirds.ogg "City birds"
]
tempalias __rebuildmapsoundmenus [
if $rereadsoundlists [
delmenu "Official mapsounds"
delmenu "Custom mapsounds"
looplist (getmapsoundlist) [sname] [
if (strcmp official (getmapsoundorigin $sname)) [
newmenu "Official mapsounds"
] [
newmenu "Custom mapsounds"
]
push idx (findlist $__mapsoundtitles $sname)
if (< $idx 0) [
menuitem $sname (concat _sndmenu_exec $sname)
] [
menuitem (concatword (at $__mapsoundtitles (+ $idx 1)) " (" $sname ")") (concat _sndmenu_exec $sname)
]
pop idx
menurenderoffset -20 0
]
]
]
tempalias _sndmenu_exec [
__lastwatchedmapsound = $arg1
if $editing [ showmenu "Pick mapsound" ]
]
//// Main > Editing > Ambient sounds > Official mapsounds ////
newmenu "Official mapsounds"
menuinit __rebuildmapsoundmenus
//// Main > Editing > Ambient sounds > Custom mapsounds ////
newmenu "Custom mapsounds"
menuinit __rebuildmapsoundmenus
//// Main > Editing > Ambient sounds > Official|Custom mapsounds > Pick mapsound ////
newmenu "Pick mapsound"
tempalias __lastwatchedmapsound "" ; tempalias __sndslot ""
menuinit [
resetcurmenu
if (strlen $__lastwatchedmapsound) [
push usedslots (mapsoundslotbyname $__lastwatchedmapsound)
menuitem (concat "Mapsound:" $__lastwatchedmapsound) -1
menuitem (concat "Distribution:" (getmapsoundorigin $__lastwatchedmapsound)) -1
menuitem "" -1
if (strlen $usedslots) [
menuitem "Mapsound is already used in" -1
looplist $usedslots i [
menuitem (concatword " slot #" $i " (maxuses: " (at (editmapsoundslot $i) 1) ")") (concat "__sndslot =" $i "; showmenu [Edit mapsound slot]")
]
menuitem "" -1
usedslots = "once more"
]
if (! (strlen (editmapsoundslot 255))) [
menuitem (concat "\f0Add to map config" $usedslots) (concat mapsound $__lastwatchedmapsound -1)
] [
menuitem "\f4(no free mapsound slots available)" -1
]
pop usedslots
][
menuitem "no mapsound selected" -1
]
]
//// Main > Editing > Arches ////
looplist [__slopeaxis 0 __slopeinc 4 __stairaxis 0 __stairwidth 1 __undoarch "" __archside 1] [n v] [tempalias $n $v]
tempalias __setundoarch [ __undoarch = (concat select (at (selx) 0) (at (sely) 0) (at (selxs) 0) (at (selys) 0) "; if (= (undolevel)" (+ (undolevel) 2) ") [ undolevel" (undolevel) "]") ]
newmenu Arches
menuinit [ chmenutexture (curmenu) map_editor/axes.png " " ]
menuitemslider "Arch sideways curve delta: " 0 5 "$__archside" 1 [ __archside = $arg1 ]
menuitem "\t[ Place arch ]" [ if $editing_sp __setundoarch ; heightfield 2; arch $__archside ]
menuitem "Edit arches\i\3" [ showmenu "Edit arches" ]
menuitem "" -1
menuitemradio "Slope axis: " 0 1 "$__slopeaxis" ["West to East (X)" "North to South (Y)"] [ __slopeaxis = $arg1 ]
menuitemslider "Slope increment: " 0 5 "$__slopeinc" ["downwards 3" "downwards 2" "downwards 1" "upwards 1" "upwards 2" "upwards 3"] [ __slopeinc = $arg1 ]
menuitem "\t[ Place slope ]" [ if $editing_sp __setundoarch ; heightfield 0; push i (at "3 2 1 -1 -2 -3" $__slopeinc) ; slope (if $__slopeaxis 0 $i) (if $__slopeaxis $i 0) ; pop i ; 0]
menuitem "" -1
menuitem "Clear heightfielding" [ solid 0; slope 0 0 ]
menuitem "Undo last placed arch or slope" [ __undoarch ; -1 ]
menuitemcheckbox "Automatically enlarge selections after placing arches and slopes" "$enlargearchslopeselections" [ enlargearchslopeselections $arg1 ]
menuitem "Enlarge selections now" enlargevdeltaselections
menuitem "" -1
menuitemradio "Stairs axis: " 0 1 "$__stairaxis" ["West to East (X)" "North to South (Y)"] [ __stairaxis = $arg1 ]
menuitemslider "Step width: " 0 5 "$__stairwidth" ["downwards 3" "downwards 2" "downwards 1" "upwards 1" "upwards 2" "upwards 3"] [ __stairwidth = $arg1 ]
menuitem "\t[ Place stairs ]" [ push i (at "-3 -2 -1 1 2 3" $__stairwidth) ; stairs (if $__stairaxis 0 $i) (if $__stairaxis $i 0) ; pop i ; 0]
//// Main > Editing > Arches > Edit arches ////
tempalias __pickarch 2
tempalias __listarch [ push ii "" ; loop i $arg1 [ if $i [ ii = (concat $ii (archvertex $arg1 $i)) ] ] ; result (pop ii) ]
newmenu "Edit arches"
menuinit [
resetcurmenu
loop i 50 [
if (> $i 1) [
menuitem (concatword "arch width " $i ": " (__listarch $i)) (concat __pickarch = $i "; showmenu [Edit arch]")
]
]
]
//// Main > Editing > Arches > Edit arches > Edit arch ////
newmenu "Edit arch"
menuinit [
resetcurmenu
menuheader "" (concat "edit arch width" $__pickarch "(symmetrical)")
push ii ""
loop i (div $__pickarch 2) [
ii = (+ $i 1)
menuitemslider (concat vertex $ii "\t") 0 31 (archvertex $__pickarch $ii) 1 (concat archvertex $__pickarch $ii "$arg1 ; archvertex" $__pickarch (- $__pickarch $ii) "$arg1")
]
pop ii
menuitem "" -1
menuitem (concat Measure selection for width $__pickarch arch) (concat av (- $__pickarch 1) "(av_measure)")
menuitem "Edit full arch (non-symmetrical)\i\3" [ showmenu "Edit full arch" ]
menuitem "Restore arch of different size (ymmv)\i\3" [ showmenu "Pick custom arch" ]
menuitem "Delete saved custom arch\i\3" [ showmenu "Delete custom arch" ]
menuitem "" -1
tempalias __archname custom
looplist (enumalias (concatword _arch_ $__pickarch _)) [fn sn] [
if (= (+ (listlen $$fn) 1) $__pickarch) [
__archname = $sn
menuitem (concat Restore $sn " " $$fn) (concat av (- $__pickarch 1) (escape $$fn))
]
]
menuitemtextinput "Save arch as " "result $__archname" (concat __archname "= $arg1 ; (concatword _arch_"$__pickarch "_ $arg1) = (__listarch" $__pickarch ")" ) "" 250
]
//// Main > Editing > Arches > Edit arches > Edit arch > Edit full arch ////
newmenu "Edit full arch"
menuinit [
resetcurmenu
menuheader "" (concat "edit arch width" $__pickarch "(non-symmetrical)")
loop i $__pickarch [
if $i [ menuitemslider (concat vertex $i "\t") 0 31 (archvertex $__pickarch $i) 1 (concat archvertex $__pickarch $i "$arg1") ]
]
]
//// Main > Editing > Arches > Edit arches > Edit arch > Pick custom arch ////
newmenu "Pick custom arch"
menuinit [
resetcurmenu
menuheader "" (concat "pick custom arch for width" $__pickarch)
looplist (enumalias _arch_) [fn sn] [ menuitem (concat Use "\fs\f2" $sn $$fn "\fr " as width $__pickarch arch) (concat av (- $__pickarch 1) (escape $$fn)) ]
]
//// Main > Editing > Arches > Edit arches > Edit arch > Delete custom arch ////
newmenu "Delete custom arch"
menuinit [
resetcurmenu
looplist (enumalias _arch_) [fn sn] [ menuitem (concat Delete custom arch "\fs\f2" $sn "\fr" $$fn) (concat delalias (escape $fn)) ]
]
//// Main > Editing > Map operations ////
newmenu [Map operations]
menuitem "Newmap (128x128 cubes - recommended)" [ newmap 7 ]
menuitem "Newmap (256x256 cubes)" [ newmap 8 ]
menuitem "Increase mapsize (2x)" [ mapenlarge; echo The map size has been increased by 2. However, the new space is solid. To utilize it, you will need to turn it into non-solid space, by selecting it and pressing G. ]
menuitem "Print entity stats" entstats
menuitem "Copy the current closest entity" copyent
menuitem "Paste a previously copied entity" pasteent
menuitem "Cycle through multiple closest entities" nextclosestent
menuitemslider "Select only entities of this type: " 0 -1 "(closestenttype -)" (concat all (listoptions ents)) [ if $arg1 [ closestenttype $arg1 ] [ closestenttype ] ] 1
menuitem "Hide entity sparklies\i\3" [ showmenu [Hide entity sparklies] ]
menuitem "Multiple map buffers (xmaps)\i\3" [ showmenu xmaps ]
//// Main > Editing > Map operations > Hide entity sparklies ////
newmenu [Hide entity sparklies]
looplisti (listoptions ents) e [
menuitemcheckbox (concat Hide $e sparklies:) (concat "(&b $edithideentmask" (+ 0 (powf 2 $i)) ")") (concat "edithideentmask (^b $edithideentmask" (+ 0 (powf 2 $i)) ")")
]
//// Main > Editing > Map operations > xmaps ////
newmenu xmaps
tempalias __curxmap ""
menuinit [
resetcurmenu
if $editing [
push la (getxmaplist)
push lb (getxmaplist bak)
if (strlen $la) [
menuitem "\f2Currently available xmaps:" -1
looplist $la [n d] [
menuitem $d (concat "__curxmap =" $n "; showmenu xmap")
]
menuitem "" -1
]
if (strlen $lb) [
menuitem "\f2Currently stored backup xmap:" -1
menuitem (at $lb 1) -1
menuitem "Transfer backup xmap to new regular xmap" (concat inputcommand (at $lb 0) "[xmap_keep_backup $cmdbuf]" "\"\fs\f0[xmap_keep_backup]\f2 enter new nickname for backup xmap:\fr\"" 1)
menuitem "Delete backup xmap" [ saycommand "/xmap_delete_backup" ]
if $editing_sp [
if $unsavededits [
menuitem (concat "Restore backup xmap \f3(and lose" $unsavededits "currently unsaved edits)") xmap_restore
] [
menuitem "Restore backup xmap" xmap_restore
]
]
menuitem "" -1
]
menuitem "Store current map and edit state as xmap" [ inputcommand "" [xmap_store $cmdbuf] "\"\fs\f0[xmap_store]\f2 enter nickname for new xmap:\fr\"" ]
menuitem "List all xmaps in console" [ saycommand "/xmap_list" ]
pop la lb
] [
menuitem "menu only available in edit mode" -1
]
]
//// Main > Editing > Map operations > xmaps > xmap ////
newmenu xmap
menuinit [
resetcurmenu
if $editing [
push desc ""
looplist (getxmaplist) [n d] [ if (strcmp $n $__curxmap) [ desc = $d ] ]
if (strlen $desc) [
menuitem (concatword "\f2xmap " $__curxmap ":") -1
menuitem $desc -1
menuitem "" -1
if $editing_sp [
if (strlen (getxmaplist bak)) [
menuitem (concatword "Restore xmap \fs\f1" $__curxmap "\fr (store current state as new backup xmap \fs\f3and lose backup xmap \f1" (at (getxmaplist bak) 0) "\fr)") (concat xmap_restore $__curxmap)
] [
menuitem (concat "Restore xmap\fs\f1" $__curxmap "\fr(store current state as new backup xmap)") (concat xmap_restore $__curxmap)
]
]
menuitem "" -1
menuitem "Rename xmap" (concat inputcommand $__curxmap "[xmap_rename" $__curxmap "$cmdbuf]" "\"\fs\f0[xmap_rename]\f2 enter new nickname for xmap" $__curxmap ":\fr\"" 1)
menuitem "Delete xmap" (concat saycommand "/xmap_delete" $__curxmap)
]
menuselection (curmenu) 3
pop desc
] [
menuitem "menu only available in edit mode" -1
]
]
//// Main > Editing > Map settings ////
newmenu [Map settings]
tempalias __enableautomapconfig [ if (&& $editing (! (getautomapconfig))) automapconfig ]
menuinit [
resetcurmenu
if $editing [
menuheader "" (concat " Settings for map" (curmap))
menuitemtextinput (concatword "Water level (" (getvarrange min waterlevel) ".." (getvarrange max waterlevel) ", default " (getvarrange default waterlevel) "):\t") $waterlevel [waterlevel $arg1]
looplisti "red 20 green 25 blue 20 alpha 178" [n v] [
menuitemtextinput (concatword "Water colour (" $n ", default " $v "):\t") (at (getwatercolour) $i) (concat setwatercolour $n "$arg1")
]
menuitem "Water colour sliders\i\3" [ showmenu [Water colour] ]
menuitem "" -1
menuitemtextinput (concatword "Shadow yaw (0..360, default " (getvarrange default shadowyaw) "):\t") $shadowyaw [__enableautomapconfig ; shadowyaw $arg1]
menuitem "" -1
menuitemtextinput (concatword "Fog distance (" (getvarrange min fog) ".." (getvarrange max fog) ", default " (getvarrange default fog) "):\t") $fog [__enableautomapconfig ; fog $arg1]
menuitemtextinput (concatword "Fog colour (0xrrggbb, default 0x" (h0 6 (getvarrange default fogcolour)) "):\t") (concatword "0x" (h0 6 $fogcolour)) [__enableautomapconfig ; fogcolour $arg1]
menuitem "Fog colour sliders\i\3" [ showmenu [Fog colour] ]
menuitem "" -1
menuitemtextinput (concatword "Ambient light (0..255 or 0xrrggbb, default 0):\t") (if (< $ambient 256) $ambient (concatword "0x" (h0 6 $ambient))) [ambient $arg1]
menuitem "" -1
menuitemcheckbox "Map override: Disable water reflection" "$mapoverride_nowaterreflect" [ mapoverride_nowaterreflect $arg1 ]
menuitemcheckbox "Map override: Limit water waveheight" "$mapoverride_limitwaveheight" [ mapoverride_limitwaveheight $arg1 ]
menuitemcheckbox "Map override: Disable stencil shadows" "$mapoverride_nostencilshadows" [ mapoverride_nostencilshadows $arg1 ]
menuitem "" -1
if (strlen (getvantagepoint)) [
menuitem (format2 "Map vantage point is at x=%1, y=%2, z=%3, yaw=%4, pitch=%5" (getvantagepoint)) [ showmenu [Vantage point] ]
] [
menuitem "Set map vantage point\i\3" [ showmenu [Vantage point] ]
]
menuitem "" -1
push n (getnotexture)
if (! (strlen $n)) [n = <default>]
menuitem (concatword "Notexture:\n" (pop n)) [showmenu "Set notexture"]
menuitem (concatword "Skymap:\n" $loadsky) [showmenu Skymaps]
menuitem "" -1
if (strlen $mapmsg) [
menuitem (concat "Map message:" $mapmsg) editmapmsg
] [
menuitem "Edit map message..." editmapmsg
]
if (strlen $mapinfo_license) [
menuitem (concatword "Map license tag: \"" $mapinfo_license "\"") [ showmenu "Select map license" ]
if (strlen $mapinfo_comment) [
menuitem (concat "Map license comment:" $mapinfo_comment) [ editsvar mapinfo_comment ]
] [
menuitem "Edit map license comment..." [ editsvar mapinfo_comment ]
]
] [
menuitem "Select map license\i\3" [ showmenu "Select map license" ]
]
] [
menuitem "menu only available in edit mode" -1
]
menuitem "" -1
menuitem "Show map info\i\3" [ showmenu "Show map info" ]
]
//// Main > Editing > Map settings > Water colour ////
newmenu [Water colour]
looplisti [red green blue alpha] n [
menuitemslider (concatword "Water colour (" $n "): ") 0 255 (concat "(at (getwatercolour)" $i ")") 5 (concat setwatercolour $i "$arg1") 1
]
//// Main > Editing > Map settings > Fog colour ////
newmenu [Fog colour]
looplist [red 0xff0000 0x10000 green 0xff00 0x100 blue 0xff 1] [n m f] [
menuitemslider (concatword "Fog colour (" $n "): ") 0 255 (concat "(div (&b $fogcolour " $m ")" $f ")") 5 (concat "__enableautomapconfig ; fogcolour (|b (&b $fogcolour" (^b 0xffffff $m) ") (* $arg1" $f "))") 1
]
//// Main > Editing > Map settings > Fog colour > Vantage point ////
newmenu [Vantage point]
menuinit [
resetcurmenu
if (strlen (getvantagepoint)) [
menuitem (format2 "Goto current map vantage point at x=%1, y=%2, z=%3, yaw=%4, pitch=%5" (getvantagepoint)) [ gotovantagepoint ]
menuitem "" -1
if $editing_sp [
menuitem "\f3[ Delete vantage point ]" clearvantagepoint
menuitem "" -1
]
]
if(! $connected) [
menuitem "\f0[ Set current position and viewing angle as map vantage point ]" setvantagepoint
]
]
//// Main > Editing > Map settings > Select map license ////
//// Main > Editing > Map settings > Show map info ////
// see menus_licenses.cfg
//// Main > Editing > Map config operations ////
newmenu [Map config operations]
tempalias __showorigin 0 ; tempalias __colororigin [ result (concatword " \fs\f" (if (strcmp $arg1 official) 4 2) "<" $arg1 ">\fr") ]
menuinit [
resetcurmenu
if $editing_sp [
menuitem "Edit mapmodel slot\i\3" [ showmenu [Edit mapmodel slots] ]
menuitem "Delete unused mapmodel slot\i\3" [ showmenu [Delete unused mapmodel slot] ]
menuitem "" -1
menuitem "Edit texture slot\i\3" [ showmenu [Edit texture slots] ]
menuitem "" -1
menuitem "Edit mapsound slot\i\3" [ showmenu [Edit mapsound slots] ]
menuitem "" -1
menuitem "Delete ALL unused mapmodel slots" [loop ii 256 [ push i (- 255 $ii) ; if (&& (strlen (mapmodelslotname $i)) (strcmp "" (mapmodelslotusage $i))) [deletemapmodelslot $i] ; pop i]]
menuitem "Delete ALL unused texture slots" [loop ii 251 [ push i (- 255 $ii) ; if (&& (strlen (edittextureslot $i)) (strcmp "" (textureslotusage $i))) [deletetextureslot $i] ; pop i]]
menuitem "Delete ALL unused mapsound slots" [loop ii 256 [ push i (- 255 $ii) ; if (&& (strlen (editmapsoundslot $i)) (strcmp "" (mapsoundslotusage $i))) [deletemapsoundslot $i] ; pop i]]
menuitem "" -1
menuitem "Sort mapmodel slots\i\3" [ showmenu [Sort mapmodel slots] ]
menuitem "Sort texture slots\i\3" [ showmenu [Sort texture slots] ]
menuitem "Sort mapsound slots\i\3" [ showmenu [Sort mapsound slots] ]
menuitem "" -1
menuitem "Update mapmodel menus" "mapmodelchanged 1"
][
menuitem "List mapmodel slots" [ showmenu [List mapmodel slots] ]
menuitem "List texture slots" [ showmenu [List texture slots] ]
menuitem "List mapsound slots" [ showmenu [List mapsound slots] ]
menuitem "\f4(offline edit mode required to make changes)" -1
menuitem "" -1
]
menuitemcheckbox "Show media file origin/distribution" "$__showorigin" [ __showorigin = $arg1 ; mapmodelchanged 1 ]
]
//// Main > Editing > Map config operations > Edit mapmodel slots ////
newmenu [Edit mapmodel slots]
menuinit __rebuildmapmodelmenus
//// Main > Editing > Map config operations > Edit mapmodel slots > Edit mapmodel slot ////
newmenu [Edit mapmodel slot]
tempalias __lastwatchedmapmodel "" ; tempalias __mmslot ""
menuinit [
resetcurmenu
if (strlen $__mmslot) [
push info (editmapmodelslot $__mmslot)
menuheader "" (concatword "edit mapmodel slot #" $__mmslot ":\n" (mapmodelslotname $__mmslot))
if (strlen $info) [
menuitemtextinput "Clipping radius" (at $info 0) [editmapmodelslot $__mmslot $arg1]
menuitemtextinput "Clipping height " (at $info 1) [editmapmodelslot $__mmslot "" $arg1]
menuitemtextinput "z-Offset " (at $info 2) [editmapmodelslot $__mmslot "" "" $arg1]
menuitemtextinput "Scale [0.25 - 4.0] " (at $info 3) [editmapmodelslot $__mmslot "" "" "" $arg1]
push __distribution (getmapmodelattributes (mapmodelslotname $__mmslot) distribution)
if (! (strlen $__distribution)) [ __distribution = "custom/unsorted" ]
menuitem (concat "Distribution:" (pop __distribution)) -1
looplist [defaults "Defaults:" usage "Usage:" license "License:" version "Version:" requires "Requires:"] [attr hd] [ // also possible: desc "Desc:" author "Author:"
attr = (getmapmodelattributes (mapmodelslotname $__mmslot) $attr)
if (strlen $attr) [
menuitem (concat $hd $attr) -1
]
]
menuitem "" -1
menuitemtextinput "Mapmodel path " (concat result (at $info 4)) [editmapmodelslot $__mmslot "" "" "" "" $arg1] "" 250
if (&& (strlen $__lastwatchedmapmodel) (! (strcmp $__lastwatchedmapmodel (at $info 4)))) [
menuitem (concat " change to" (escape $__lastwatchedmapmodel)) [editmapmodelslot $__mmslot "" "" "" "" $__lastwatchedmapmodel]
]
menuitem "" -1
menuitem "Duplicate slot" (concat mapmodel $info)
] [
menuitem "\f3Unassigned slot" -1
]
if (strlen (mapmodelslotusage $__mmslot)) [
menuitem "" -1 (concat gotoposition (gotoposition))
looplist (mapmodelslotusage $__mmslot) ii [
menuitem (concatword "slot used by map entity #" $ii) (concat gotoentity $ii) (concat gotoentity $ii)
]
if (strcmp " " (mapmodelslotusage $__mmslot)) [
menuitem "(this model is required by another model)" -1
]
menuitem "" -1 (concat gotoposition (gotoposition))
][
menuitem "" -1
menuitem "\f3Delete unused slot" (concat deletemapmodelslot $__mmslot)
]
pop info
][
menuitem "no slot selected" -1
]
]
//// Main > Editing > Map config operations > Delete unused mapmodel slot ////
newmenu [Delete unused mapmodel slot]
menuinit __rebuildmapmodelmenus
//// Main > Editing > Map config operations > Edit texture slots ////
newmenu [Edit texture slots]
menuinit [
resetcurmenu
menurenderoffset -20 0
if $editing_sp [
push ecurmenu (escape (curmenu))
push info ""
push origin ""
looplisti (textureslotusagelist) [cnt used] [
info = (edittextureslot $i)
if $__showorigin [ origin = (__colororigin (gettextureorigin (at $info 1))) ]
if (|| $cnt (strlen $info)) [
if (! (strlen $info)) [ info = " \fs\f3<unassigned>\fr" ; origin = "" ]
menuitem (concatword "edit texture slot #" $i ": " $info " (" $cnt " uses, " $used " visible)" $origin) (concat __texslot = $i "; showmenu [Edit texture slot]") (concat chmenutexture $ecurmenu (at $info 1))
]
]
pop info ecurmenu origin
] [
__menuitem_offlineeditonly // "menu only available in offline edit mode"
]
]
//// Main > Editing > Map config operations > Edit texture slots > Edit texture slot ////
newmenu [Edit texture slot]
tempalias __defaultskymapdummy kurt/klite1.jpg
menuinit [
resetcurmenu
if (strlen $__texslot) [
push info (edittextureslot $__texslot) // "<scale> <path>"
chmenutexture (curmenu) (at $info 1)
menurenderoffset -20 0
menuheader "" (concatword "edit texture slot #" $__texslot ":\n" (at $info 1))
menuitemtextinput "Scaling factor [0..4] " (at $info 0) [edittextureslot $__texslot $arg1]
menuitem "\f4factor 0 means default (1.0)" -1
menuitem "" -1
menuitem (concat "Distribution:" (gettextureorigin (at $info 1))) -1
menuitem "" -1
menuitemtextinput "Texture path " (concat result (at $info 1)) [edittextureslot $__texslot "" $arg1] "" 250
if (&& (strlen $__lastwatchedtexture) (! (strcmp $__lastwatchedtexture (at $info 1)))) [
menuitem (concat " change to" (escape $__lastwatchedtexture)) [edittextureslot $__texslot "" $__lastwatchedtexture]
]
if (&& (! $__texslot) (! (strcmp $__defaultskymapdummy (at $info 1)))) [
menuitem (concat " change to skymap default" (escape $__defaultskymapdummy)) [edittextureslot $__texslot 0 $__defaultskymapdummy]
]
menuitem "" -1
menuitem "use as next (upper-)wall texture" [edittexturestack wall $__texslot]
menuitem "use as next floor texture" [edittexturestack floor $__texslot]
menuitem "use as next ceiling texture" [edittexturestack ceiling $__texslot]
push __usage (textureslotusage $__texslot)
if (&& $__texslot (listlen $__usage)) [
menuitem "" -1 (concat gotoposition (gotoposition))
looplist $__usage ii [
menuitem (concatword "slot used by map entity #" $ii) (concat gotoentity $ii) (concat gotoentity $ii)
]
menuitem "" -1 (concat gotoposition (gotoposition))
]
if (strlen (pop __usage)) [
if (> (listlen (textureslotbyname (at $info 1))) 1) [
menuitem "" -1
menuitem "Merge multiple slots using same texture" [showmenu "Texture slot merge"]
]
] [
menuitem "" -1
menuitem "\f3Delete unused slot" (concat deletetextureslot $__texslot)
]
if (! (strcmp $__lastwatchedtexture (at $info 1))) [
menuitem "" -1
menuitem (concat "Pick texture name" (at $info 1)) (concat __lastwatchedtexture = (escape (at $info 1)))
]
if (! $__texslot) [
menuitem "" -1
menuitem (concat "Slot #0 is hardcoded as skymap, please use" $__defaultskymapdummy) -1
] [
if (< $__texslot 5) [
menuitem "" -1
menuitem (concatword "Slot #" $__texslot " is the default " (at ["" "cube 1 water" "wall" "floor" "ceiling"] $__texslot) " texture") -1
]
]
pop info
][
menuitem "no slot selected" -1
]
]
//// Main > Editing > Map config operations > Edit texture slots > Edit texture slot > Texture slot merge ////
newmenu "Texture slot merge"
tempalias __tex_joined "" ; tempalias __tex_togo ""
menuinit [
resetcurmenu
if (strlen $__texslot) [
push info (edittextureslot $__texslot) // "<scale> <path>"
chmenutexture (curmenu) (at $info 1)
menurenderoffset -20 0
menuheader "" (concatword "merge texture slots using\n" (at $info 1))
menuitem (concat "Slots using texture" (at $info 1)) -1
push slots (textureslotbyname (at $info 1))
push usemap (textureslotusagelist)
menuitem "" -1
push last (- (listlen $slots) 1)
__tex_togo = (at $slots 0)
__tex_joined = (at $slots $last)
looplist $slots ii [
menuitem (concatword " #" $ii ": " (edittextureslot $ii) " (" (at $usemap (* $ii 2)) " uses, " (at $usemap (+ (* $ii 2) 1)) " visible)") (concat alias __texslot $ii "; showmenu [Edit texture slot]")
]
menuitem "" -1
menuitem "Merge" -1
menuitemslider " slot #" 0 $last 0 $slots (concat "__tex_togo = (at" (escape $slots) "$arg1)")
menuitem "into" -1
menuitemslider " slot #" 0 $last $last $slots (concat "__tex_joined = (at" (escape $slots) "$arg1)")
menuitem " \f0[OK]" [if (!= $__tex_joined $__tex_togo) [deletetextureslot $__tex_togo purge $__tex_joined]]
pop info slots usemap last
][
menuitem "no slot selected" -1
]
]
//// Main > Editing > Map config operations > Edit mapsound slots ////
// Edit mapsound slots
newmenu [Edit mapsound slots]
menuinit [
resetcurmenu
if $editing_sp [
push info ""
push origin ""
loop i 256 [
info = (editmapsoundslot $i)
if (strlen $info) [
if $__showorigin [ origin = (__colororigin (getmapsoundorigin (at $info 0))) ]
menuitem (concatword "edit mapsound slot #" $i ": " $info $origin) (concat alias __sndslot $i ";" showmenu (escape "Edit mapsound slot"))
] [
if (strlen (mapsoundslotusage $i)) [
menuitem (concatword "unassigned mapsound slot #" $i) (concat alias __sndslot $i ";" showmenu (escape "Edit mapsound slot"))
]
]
]
pop info origin
] [
__menuitem_offlineeditonly // "menu only available in offline edit mode"
]
]
//// Main > Editing > Map config operations > Edit mapsound slots > Edit mapsound slot ////
newmenu [Edit mapsound slot]
tempalias __snd_rad "1" ; tempalias __snd_size "0" ; tempalias __snd_vol "255"
menuinit [
resetcurmenu
if (strlen $__sndslot) [
push info (editmapsoundslot $__sndslot) // "<path> <maxuses>"
menuheader "" (concatword "edit mapsound slot #" $__sndslot ":\n" (at $info 0))
if (strlen $info) [
menuitemtextinput "Max simultaneous uses " (at $info 1) [editmapsoundslot $__sndslot "" $arg1]
menuitem " (\f4-1: unlimited)" -1
menuitem "" -1
menuitem (concat "Distribution:" (getmapsoundorigin (at $info 0))) -1
menuitem "" -1
menuitemtextinput "Mapsound path " (concat result (at $info 0)) [editmapsoundslot $__sndslot $arg1] "" 250
if (&& (strlen $__lastwatchedmapsound) (! (strcmp $__lastwatchedmapsound (at $info 0)))) [
menuitem (concat " change to" (escape $__lastwatchedmapsound)) [editmapsoundslot $__sndslot $__lastwatchedmapsound]
]
menuitem "" -1
menuitem "\f2Create map entity:" -1
menuitemslider [Sound radius: ] 1 25 "$__snd_rad" 1 [ __snd_rad = $arg1 ]
menuitemslider [Sound size: ] 0 25 "$__snd_size" 1 [ __snd_size = $arg1 ]
menuitemslider [Sound volume: ] 1 255 "$__snd_vol" 5 [ __snd_vol = $arg1 ]
menuitem "\f0 Place new entity now" (concat newent sound $__sndslot $__snd_rad $__snd_size $__snd_vol)
] [
menuitem "\f3Unassigned slot" -1
]
if (strlen (mapsoundslotusage $__sndslot)) [
menuitem "" -1 (concat gotoposition (gotoposition))
looplist (mapsoundslotusage $__sndslot) ii [
menuitem (concatword "slot used by map entity #" $ii) (concat gotoentity $ii) (concat gotoentity $ii)
]
menuitem "" -1 (concat gotoposition (gotoposition))
][
menuitem "" -1
menuitem "\f3Delete unused slot" (concat deletemapsoundslot $__sndslot)
]
pop info
][
menuitem "no slot selected" -1
]
]
//// Main > Editing > Map config operations > Sort mapmodel slots ////
looplist [__mmsort __mmmerge __texsort __texmerge __sndsort __sndmerge] i [tempalias $i 1]
newmenu [Sort mapmodel slots]
menuitemcheckbox "Sort slots alphabetically" "$__mmsort" [ __mmsort = $arg1 ]
menuitemslider "Merge " 0 2 "$__mmmerge" ["no slots" "unused identical slots" "all identical slots"] [ __mmmerge = $arg1 ] 1
menuitem "" -1
menuitem "\t\t\f0[Start]" [sortmapmodelslots (at [nosort ""] $__mmsort) (at [nomerge "" mergeused] $__mmmerge)]
//// Main > Editing > Map config operations > Sort texture slots ////
newmenu [Sort texture slots]
menuitemcheckbox "Sort slots alphabetically" "$__texsort" [ __texsort = $arg1 ]
menuitemslider "Merge " 0 2 "$__texmerge" ["no slots" "unused identical slots" "all identical slots"] [ __texmerge = $arg1 ]
menuitem "" -1
menuitem "\t\t\f0[Start]" [sorttextureslots (at [nosort ""] $__texsort) (at [nomerge "" mergeused] $__texmerge)]
//// Main > Editing > Map config operations > Sort mapsound slots ////
newmenu [Sort mapsound slots]
menuitemcheckbox "Sort slots alphabetically" "$__sndsort" [ __sndsort = $arg1 ]
menuitemslider "Merge " 0 2 "$__sndmerge" ["no slots" "unused identical slots" "all identical slots"] [ __sndmerge = $arg1 ] 1
menuitem "" -1
menuitem "\t\t\f0[Start]" [sortmapsoundslots (at [nosort ""] $__sndsort) (at [nomerge "" mergeused] $__sndmerge)]
//// Main > Editing > Map config operations > List mapmodel slots ////
newmenu [List mapmodel slots]
menuinit [
resetcurmenu
menurenderoffset -40 0
push mpath ""
push origin ""
loop i 256 [
mpath = (mapmodelslotname $i)
if (strlen $mpath) [
if $__showorigin [
origin = (getmapmodelattributes $mpath distribution)
if (! (strlen $origin)) [ origin = "custom/unsorted" ]
origin = (__colororigin $origin)
]
menuitem [slot #@[i]: @(editmapmodelslot $i)@origin] -1 (__mm_showmodel2 [List mapmodel slots] $mpath)
]
]
pop origin mpath
]
//// Main > Editing > Map config operations > List texture slots ////
newmenu [List texture slots]
menuinit [
resetcurmenu
menurenderoffset -20 0
push info ""
push origin ""
looplisti (textureslotusagelist) [cnt used] [
info = (edittextureslot $i)
if $__showorigin [ origin = (__colororigin (gettextureorigin (at $info 1))) ]
if (strlen $info) [
menuitem [texture slot #@[i]: @info @"("@cnt uses, @used visible@")"@origin] -1 [chmenutexture [List texture slots] @(at $info 1)]
]
]
pop info origin
]
//// Main > Editing > Map config operations > List mapsound slots ////
newmenu [List mapsound slots]
menuinit [
resetcurmenu
push info ""
push origin ""
loop i 256 [
info = (editmapsoundslot $i)
if (strlen $info) [
if $__showorigin [ origin = (__colororigin (getmapsoundorigin (at $info 0))) ]
menuitem (concatword "mapsound slot #" $i ": " $info $origin) -1
]
]
pop info origin
]
//// Main > Editing > Map checks and statistics ////
newmenu [Map checks and statistics]
menuinit [
resetcurmenu
if $editing [
menuitem "Map area checks\i\3" [ showmenu [Map area checks] ]
menuitem "Entity statistics" [ showmenu [Entity statistics] ]
menuitem "Check mapmodels with unconfigured custom textures" [ showmenu [Walk mapmodel entities with unconfigured custom textures] ]
menuitem "Show most visible textures" [ showmenu [Most visible textures] ]
menuitem "Cycle through spawn points" [ gotonextplayerstart ]
] [
menuitem "menu only available in edit mode" -1
]
]
tempalias __showslopes [
push i 0
looplist (mapareacheck vdelta) n [
if $n [ echo $n cubes with slopes $i .. (+ $i 2) ]
i = (+ $i 2)
]
pop i
]
tempalias __clearprobepointdummies [ clearents dummy ]
tempalias __placeprobepointdummies [
__clearprobepointdummies
looplist (mapareacheck pp) [x y z area vol avgh] [
if (> $vol 32767) [ vol = 32767 ]
editentity (addentity dummy) $x $y (+ $z 5) $area "" "" "" $vol "" $avgh
]
]
//// Main > Editing > Map checks and statistics > Map area checks ////
newmenu [Map area checks]
menuinit [
resetcurmenu
menuitem "Heightfield slope stats" __showslopes
menuitem "Goto steepest heightfield position" [ push p (mapareacheck steepest) ; gotoposition (at $p 0) (at $p 1) (at (pop p) 2)]
if $editing_sp [
menuitem "Place probe point dummies" __placeprobepointdummies
menuitem "Walk probe point dummies\i\3" [ showmenu [Walk probe point dummies] ]
menuitem "Clear probe point dummies" __clearprobepointdummies
]
]
//// Main > Editing > Map checks and statistics > Map area checks > Walk probe point dummies ////
newmenu [Walk probe point dummies]
menuinit [
resetcurmenu
__placeprobepointdummies
menuitem "\f4(return to previous position)" (concat gotoposition (gotoposition)) (concat gotoposition (gotoposition))
push ents (enumentities dummy)
looplisti (mapareacheck pp) [x y z area vol avgh] [
menuitem (concatword "#" $i " area: " $area " volume: " $vol " avg height: " $avgh " (" $x "|" $y ")") (concat gotoentity (at $ents $i)) (concat gotoentity (at $ents $i))
]
pop ents
]
//// Main > Editing > Map checks and statistics > Entity statistics ////
newmenu [Entity statistics]
menuinit [
resetcurmenu
push s 1
looplist (listoptions ents) e [
push n (listlen (enumentities $e))
if $n [
menuitem (concatword $n " entities of type " $e) (concat showmenu "[Walk" $e "entities]")
s = 0
]
pop n
]
if (pop s) [
menuitem "No entities" -1
]
]
//// Main > Editing > Map checks and statistics > Entity statistics > Walk ... entities ////
push __a "resetcurmenu ; menuitem [\f4(return to previous position)] (concat gotoposition (gotoposition)) (concat gotoposition (gotoposition)) ;"
push __b "looplist $ents i [ menuitem (concatword # $i [ ] (editentity $i)) (concat gotoentity $i) (concat gotoentity $i) ] ; pop ents"
looplist (listoptions ents) e [
newmenu (concat Walk $e entities)
menuinit (concat $__a "push ents (enumentities" $e ") ;" $__b)
]
//// Main > Editing > Map checks and statistics > Walk mapmodel entities with unconfigured custom textures ////
newmenu [Walk mapmodel entities with unconfigured custom textures]
menuinit (concat $__a "looplist (enumentities mapmodel) i [if (! (strlen (edittextureslot (at (editentity $i) 7)))) [menuitem (concatword # $i [ ] (editentity $i)) (concat gotoentity $i) (concat gotoentity $i)]]")
pop __a __b
//// Main > Editing > Map checks and statistics > Most visible textures ////
newmenu [Most visible textures]
menuinit [
resetcurmenu
menurenderoffset -20 0
if $editing [
push ec (escape (curmenu))
push mvis (textureslotusagelist onlymostvisible)
push info ""
looplist $mvis [d i] [
info = (edittextureslot $i)
menuitem (concatword "most visible " $d " texture: " (if $i (escape $info) [result <skymap>]) " (slot #" $i ")") (concat __texslot = $i "; showmenu [Edit texture slot]") (concat chmenutexture $ec (at $info 1))
]
if $editing_sp [
menuitem "" -1 (concat chmenutexture $ec [])
menuitem "Sort the most visible textures to the default slot positions" (concat sorttextureslots nomerge nosort 1 (at $mvis 1) (at $mvis 3) (at $mvis 5) (at $mvis 7)) (concat chmenutexture $ec [])
]
pop mvis ec info
] [
menuitem "menu only available in edit mode" -1
]
]
//// Main > Editing > Creating bot waypoints ////
// see menus_bot.cfg
//// Main > Editing > Editing settings ////
newmenu [Editing settings]
menuitemslider "Grid/Selection style: " 0 1 "$oldselstyle" [triangles "squares (default)"] [ oldselstyle $arg1 ] 1
menuitemcheckbox "Show mapmodel clippings: " "$showmodelclipping" [ showmodelclipping $arg1 ]
menuitemcheckbox "Show ladder entities: " "$showladderentities" [ showladderentities $arg1 ]
menuitemcheckbox "Show all playerstarts (spawn points): " "$showplayerstarts" [ showplayerstarts $arg1 ]
menuitemslider "Show closest ent slot info: " 0 2 "$hideeditslotinfo" [ always "if unassigned" never ][ hideeditslotinfo $arg1 ] 1
menuitemcheckbox "Show edit info panel: " "(! $hideeditinfopanel)" [ hideeditinfopanel (! $arg1) ]
menuitemslider "Fly speeds multiplier: " 1 5 "$flyspeed" 1 [ flyspeed $arg1 ]
menuitemcheckbox "Write xmaps to disk on quit: " "$persistentxmaps" [ persistentxmaps $arg1 ]
// opt/autosave.cfg may add some entries
//// Main > Editing > Editing misc ////
newmenu [Editing misc]
menuitem "Load batch map conversion tools" load_convmap [] "\f4(checking and editing of entire map collections)"
menuitem "Load extra map editing scripts" load_mapeditscripts [] "\f4(expert tools for hardcore map optimisations)"
menuitem "Rebuild list of mapmodels" [ echo "\f1This will take a few seconds..." ; sleep 99 [ mapmodelregistryclear ; loadallmapmodels ; echo "\f1Done." ] ] [] "\f2Use this after manually adding or removing mapmodels\nfrom your profile directory. May throw some errors."
//// Main > Editing > Editing keys ////
newmenu [Editing keys]
menuitem "Select an action and press ENTER to bind a new key:" -1
menuitem "" -1
menuitem "\f2Mousewheel editing:" -1
menuitemeditkeyinput [Move entity: ] editkey_scroll_moveent
menuitemeditkeyinput [Change vdelta: ] editkey_scroll_vdelta
menuitemeditkeyinput [Change wall/upper wall texture: ] editkey_scroll_walluppertex
menuitemeditkeyinput [Change floor/ceiling texture: ] editkey_scroll_floorceiltex
menuitem "\f4(Keys '1' thru '7' edit entity attributes)" -1
menuitem "" -1
menuitem "\f2Edit all selected cubes:" -1
menuitemeditkeyinput [Make cubes 'solid': ] editkey_cubes_solid
menuitemeditkeyinput [Make cubes 'space': ] editkey_cubes_space
menuitemeditkeyinput [Make cubes 'floor heightfield': ] editkey_cubes_hf_floor
menuitemeditkeyinput [Make cubes 'ceiling heightfield': ] editkey_cubes_hf_ceiling
menuitemeditkeyinput [Make cubes 'corner': ] corner
menuitem "" -1
menuitemeditkeyinput [Move floor down: ] editkey_move_floor_down
menuitemeditkeyinput [Move floor up: ] editkey_move_floor_up
menuitemeditkeyinput [Move ceiling down: ] editkey_move_ceiling_down
menuitemeditkeyinput [Move ceiling up: ] editkey_move_ceiling_up
menuitemeditkeyinput [Decrease vdelta: ] editkey_vdelta_down
menuitemeditkeyinput [Increase vdelta: ] editkey_vdelta_up
menuitemeditkeyinput [Equalize floor: ] editkey_equalize_floor
menuitemeditkeyinput [Equalize ceiling: ] editkey_equalize_ceiling
menuitem "" -1
menuitemeditkeyinput [Texture on floor forward: ] editkey_floortex_up
menuitemeditkeyinput [Texture on floor previous: ] editkey_floortex_dn
menuitemeditkeyinput [Texture on wall forward: ] editkey_walltex_up
menuitemeditkeyinput [Texture on wall previous: ] editkey_walltex_dn
menuitemeditkeyinput [Texture on ceiling forward: ] editkey_ceiltex_up
menuitemeditkeyinput [Texture on floor previous: ] editkey_ceiltex_dn
menuitemeditkeyinput [Texture on upper wall forward: ] editkey_uppertex_dn
menuitemeditkeyinput [Texture on upper wall previous: ] editkey_uppertex_up
menuitem "" -1
menuitem "\f2Misc editing keys:" -1
menuitemkeyinput [Enter edit mode: ] edittoggle
menuitemeditkeyinput [Exit edit mode: ] edittoggle
menuitemeditkeyinput [Show editing menu: ] editkey_show_menu
menuitemeditkeyinput [Show lighting menu: ] editkey_show_menu_light
menuitem "" -1
menuitemeditkeyinput [1st meta key: ] editmeta
menuitemeditkeyinput [2nd meta key: ] editkey_editmeta2
menuitem "" -1
menuitemeditkeyinput [Occlusion culling on/off: ] toggleocull
menuitemeditkeyinput [Mip display on/off: ] showmip
menuitemeditkeyinput [Fullbright on/off: ] editkey_fullbright
menuitemeditkeyinput [Show cube details on/off: ] showfocuscubedetails
menuitem "" -1
menuitemeditkeyinput [Copy selected cubes: ] copy
menuitemeditkeyinput [Paste cubes: ] paste
menuitemeditkeyinput [Undo geometry changes: ] undo
menuitemeditkeyinput [Redo: ] redo
menuitem "" -1
menuitemeditkeyinput [Pin/unpin closest entity: ] toggleclosestentpin
menuitemeditkeyinput [Point to select entity: ] editkey_pointatents
menuitemeditkeyinput [Cycle through closest entities: ] nextclosestent
menuitemeditkeyinput [Delete entity: ] editkey_delete_entity
menuitemeditkeyinput [Copy entity: ] copyent
menuitemeditkeyinput [Paste entity: ] pasteent
menuitemeditkeyinput [Edit entity: ] editent
menuitemeditkeyinput [Cycle through TODO entities: ] editkey_scroll_todoents
menuitemeditkeyinput [Cycle through spawns: ] editkey_scroll_spawns
menuitem "" -1
menuitem "\f2Tag clips:" -1
menuitemeditkeyinput [Show tag clip volume: ] showtagclipfocus
menuitemeditkeyinput [Remove tag clip: ] editkey_tagclip_none
menuitemeditkeyinput [Create tag 'playerclip': ] editkey_tagclip_plclip
menuitemeditkeyinput [Create tag 'clip': ] editkey_tagclip_clip
menuitem "" -1
menuitemtextinput [Lookup a keyeditbind: ] [] [
if (strlen $arg1) [
echo (concatword "\f9Contents of keyeditbind " (addpunct $arg1) :)
if (strcmp (result (keyeditbind $arg1)) "") [
echo (addpunct $arg1) is not bound
][
echo (keyeditbind $arg1)
]
]
] [] 256
menuitem [] -1
menuitem "Alternate edit binds\i\3" [ showmenu [Alternate edit binds] ]
//// Main > Editing > Editing keys > Alternate edit binds ////
newmenu [Alternate edit binds]
menuitem "\f2Back" [ closecurmenu ]
menuitem [Click to use alternate edit binds] [ exec config/opt/alternateeditbinds.cfg; closecurmenu ] [ echo "\f3See config/opt/alternateeditbinds.cfg first" ]
//// Main > Editing > Deleted entities ////
newmenu "Deleted entities"
menuinit [
resetcurmenu
if (unlistdeletedentity) [
looplisti (getdeletedentities) [type x y z a1 a2 a3 a4 a5 a6 a7] [
push desc (concat $type (concatword "[" $x "|" $y "|" $z "]") (concatword "(" $a1 ", " $a2 ", " $a3 ", " $a4 ", " $a5 ", " $a6 ", " $a7 ")"))
if (strcmp $type mapmodel) [desc = (concat $desc (mapmodelslotname $a2))]
if (&& $editing (strcmp $type sound)) [desc = (concat $desc (at (editmapsoundslot $a1) 0))]
if $editing [
menuitem (pop desc) (concat gotoposition $x $y $z $a1 0 ";" undelent $i)
][
menuitem (pop desc) -1
]
]
menuitem "\f3clear this list" "unlistdeletedentity all"
] [
menuitem "no deleted entities" -1
]
]