// implements some editing commands //////// Entity Editing /////////////// =enttype = [ || [strcmp * $arg1] [strcmp (enttype) $arg1] ] =entattr = [ || [strcmp * $arg2] [= (entattr $arg1) $arg2] ] // clear ents of given type clearents = [ if $editing [ entcancel entselect [ =enttype $arg1 ]; echo Deleted (enthavesel) $arg1 entities; delent ] ] // replace all ents that match current selection // with the values given replaceents = [ if $editing [ do [ entfind @(entget) entset @(loopconcat i $numargs [result $[arg@(+ $i 1)]]) ] echo Replaced (enthavesel) entities ] ] selentedit = [ saycommand ( concatword "/entset " (entget) ) ] selreplaceents = [ saycommand ( concatword "/replaceents " (entget) ) ] selentfindall = [ do [ entfind @(entget) ] ] // modify given attribute of ent by a given amount // arg1 attribute // arg2 value entproperty = [ entattr $arg1 (+ (entattr $arg1) $arg2) ] enttypelist = [ light mapmodel playerstart envmap particles sound shells bullets rockets riflerounds grenades cartridges health healthboost greenarmour yellowarmour quaddamage teleport teledest monster carrot jumppad base respawnpoint spotlight box barrel platform elevator flag ] enttypeselect = [ enttypelength = (listlen $enttypelist) next = (mod (+ (indexof $enttypelist (enttype)) $arg1) $enttypelength) if (< $next 0) [ next = (+ $next $enttypelength) ] do [entset @(listsplice (entget) (at $enttypelist $next) 0 1)] ] ////// Entity primary actions ///////// ent_action_base = [ entproperty 0 ( * $arg1 1 ) ] ent_action_teleport = [ entproperty 0 ( * $arg1 1 ) ] ent_action_teledest = [ entproperty 1 ( * $arg1 1 ) ] ent_action_mapmodel = [ entproperty 1 ( * $arg1 1 ) ] ent_action_spotlight = [ entproperty 0 ( * $arg1 5 ) ] ent_action_light = [ entproperty 0 ( * $arg1 5 ) ] ent_action_jumppad = [ entproperty 0 ( * $arg1 5 ) ] ent_action_respawnpoint = [ entproperty 0 ( * $arg1 15 ) ] ent_action_playerstart = [ entproperty 0 ( * $arg1 15 ) ] ent_action_envmap = [ entproperty 0 ( * $arg1 5 ) ] ent_action_particles = [ entproperty 0 ( * $arg1 1 ) ] ent_action_sound = [ entproperty 0 ( * $arg1 1 ) ] ent_action_cycle = [ entset ( if ( > $arg1 -1 ) [ result $arg2 ] [ result $arg3 ] ) ] ent_action_shells = [ ent_action_cycle $arg1 bullets quaddamage ] ent_action_bullets = [ ent_action_cycle $arg1 rockets shells ] ent_action_rockets = [ ent_action_cycle $arg1 riflerounds bullets ] ent_action_riflerounds = [ ent_action_cycle $arg1 grenades rockets ] ent_action_grenades = [ ent_action_cycle $arg1 cartridges riflerounds ] ent_action_cartridges = [ ent_action_cycle $arg1 quaddamage grenades ] ent_action_quaddamage = [ ent_action_cycle $arg1 shells cartridges ] ent_action_health = [ ent_action_cycle $arg1 healthboost yellowarmour ] ent_action_healthboost = [ ent_action_cycle $arg1 greenarmour health ] ent_action_greenarmour = [ ent_action_cycle $arg1 yellowarmour healthboost ] ent_action_yellowarmour = [ ent_action_cycle $arg1 health greenarmour ] ent_action_monster = [ entproperty 1 ( * $arg1 1 ) ] ent_action_box = [ entproperty 1 ( * $arg1 1 ) ] ent_action_barrel = [ entproperty 1 ( * $arg1 1 ) ] ent_action_platform = [ entproperty 1 ( * $arg1 1 ) ] ent_action_elevator = [ entproperty 1 ( * $arg1 1 ) ] //////// Copy and Paste ////////////// // 3 types of copying and pasting // 1. select only cubes -> paste only cubes // 2. select cubes and ents -> paste cubes and ents. same relative positions // 3. select only ents -> paste last selected ent. if ents are selected, replace attrs as paste opaquepaste = 1 entcopybuf = "" entreplace = [ do [ if (enthavesel) [] [ newent @entcopybuf ] entset @entcopybuf ] ] editcopy = [ if (|| [havesel] [! (enthavesel)]) [ entcopybuf = "" entcopy copy ] [ entcopybuf = (entget) ] ] editpaste = [ cancelpaste = (! (|| [enthavesel] [havesel])); if (strcmp "" $entcopybuf) [ pastehilite reorient // temp; real fix will be in octaedit onrelease [ if $opaquepaste delcube paste entpaste if $cancelpaste [ cancelsel ] ] ] [ entreplace if $cancelpaste [ cancelsel ] ] ] /////// Selection /////////////// // select ents with given properties // '*' is wildcard entfind = [ if (= $numargs 0) [ entselect 1 ] [ entselect (concat [ && [=enttype @@arg1] ] (loopconcat i (- $numargs 1) [ result [ [=entattr @@i @@[arg@(+ $i 2)]] ] ])) ] ] entfindinsel = [ if (= $numargs 0) [ entselect [ insel ] ] [ entselect (concat [ && [insel] [=enttype @@arg1] ] (loopconcat i (- $numargs 1) [ result [ [=entattr @@i @@[arg@(+ $i 2)]] ] ])) ] ] lse = [ line = "" count = 0 entloop [ line = ( concatword $line (entget) " " ) count = ( + $count 1 ) if (> $count 4) [ echo $line line = "" count = 0 ] ] if (> $count 0 ) [ echo $line ] echo (enthavesel) entities selected ] drag = [ dragging 1; onrelease [ dragging 0 ] ] corners = [ selectcorners 1; dragging 1; onrelease [ selectcorners 0; dragging 0 ] ] editmove = [ moving 1; onrelease [ moving 0 ]; result $moving ] entdrag = [ entmoving 1; onrelease [entmoving 0]; result $entmoving ] editdrag = [ cancelsel; || [entdrag] [ drag ] ] selcorners = [ if $hmapedit [ hmapselect ] [ cancelsel; || [entdrag] [ corners ] ] ] editextend = [ || [entdrag] [ selextend; reorient; editmove ] ] editmovewith = [ if (havesel) [ || [editmove] [ @arg1 ] onrelease [ moving 0; dragging 0 ] ] [ @arg1 ] ] editmovecorner = [ editmovewith selcorners ] editmovedrag = [ editmovewith editdrag ] ////// Other Editing commands ///////// editfacewentpush = [ if (|| [havesel] [! (enthavesel)] ) [ if $moving [ pushsel $arg1 ] [ entcancel editface $arg1 $arg2 ] ] [ if $entmoving [ entpush $arg1 ] [ ent_action_@(enttype) $arg1 ] ] ] entswithdirection = "playerstart teledest mapmodel flag monster box barrel platform elevator" entdirection = [ if ( && [enthavesel] [ = (havesel) 0 ] ) [ if (>= (indexof $entswithdirection (enttype)) 0) [ if (> $arg1 0) [ entproperty 0 $arg2 if (> (entattr 0) 360) [ entproperty 0 -360 ] ] [ entproperty 0 (- 0 $arg2) if (< (entattr 0) 0) [ entproperty 0 360 ] ] ] result 1 ] [ result 0 ] ] editdel = [ if (! (enthavesel)) [delcube]; delent ] editflip = [ flip; entflip ] editrotate = [ || [ entdirection $arg1 15 ] [ rotate $arg1 entrotate $arg1 ] ] editcut = [ if (moving 1) [ if (= $moving 1) [selsave] onrelease [ moving 0 if (selmoved) [ selswap copy; entcopy delcube; delent selrestore paste; entpaste ] ] ] ] edithud = [ format "%6^f7%7^f7gridpower ^f2%1 %2 %3 %4 %5" $gridpower ( if $allfaces [format "^f2allfaces"][format "^f4allfaces"] )( if $entediting [format "^f2entediting"][format "^f4entediting"] )( if $entselsnap [format "^f2entselsnap"][format "^f4entselsnap"] )( if $dropwaypoints [format "^f0dropwaypoints"][] )( if $hmapedit [format "brush^f2 %1 ^f7:^f2 %2^n" $brushindex $brushname] [ if $blendpaintmode [ format "blendpaint mode: ^f2%1^f7^nblend brush: ^f2%2^n" (at $blendpaintmodes $blendpaintmode) (getblendbrushname (curblendbrush)) ] [if (! (enthavesel)) [ texnum = (? (>= $texguinum 0) $texguinum (getseltex)) format "^f2%1 ^f7:^f2 %2^n" (max 0 $texnum) (gettexname $texnum) ]] ] )( if (enthavesel) [concat (entget) ":^f2" (enthavesel) "^f7selected^n"] ) ] entcomplete = [ listcomplete $arg1 $enttypelist ] entcomplete newent entcomplete entfind entcomplete clearents listcomplete editmat "air water clip glass noclip lava gameclip death alpha" air = [ editmat air $arg1 ] loop i 4 [ [water@(? $i (+ $i 1))] = [ editmat water@(? $i (+ $i 1)) $arg1 ] [lava@(? $i (+ $i 1))] = [ editmat lava@(? $i (+ $i 1)) $arg1 ] [glass@(? $i (+ $i 1))] = [ editmat glass@(? $i (+ $i 1)) $arg1 ] ] clip = [ editmat clip $arg1 ] noclip = [ editmat noclip $arg1 ] gameclip = [ editmat gameclip $arg1 ] death = [ editmat death $arg1 ] alpha = [ editmat alpha $arg1 ] blendpaintmodes = ["off" "replace" "dig" "fill" "inverted dig" "inverted fill"] setblendpaintmode = [ if (> $numargs 0) [blendpaintmode $arg1] [blendpaintmode 0] echo "blend paint mode set to:" (at $blendpaintmodes $blendpaintmode) ] scrollblendbrush = [ if (> $numargs 0) [nextblendbrush $arg1] [nextblendbrush] echo "blend brush set to:" (getblendbrushname (curblendbrush)) ] minimaphere = [minimapheight (at (getcampos) 2)] getsundir = [sunlightyaw (getcamyaw); sunlightpitch (getcampitch)] echovcolor = [echo ***vcolor (getvcolor $getseltex)] echovrotate = [echo ***vrotate (getvrotate $getseltex)] echovoffset = [echo ***voffset (getvoffset $getseltex)] echovscroll = [echo ***vscroll (getvscroll $getseltex)] echovscale = [echo ***vscale (getvscale $getseltex)] echovlayer = [echo ***vlayer (getvlayer $getseltex)] echovalpha = [echo ***valpha (getvalpha $getseltex)] // echovshaderparamname = [echo (getvshaderparamnames $getseltex)] // Echoes the name of altered vshaderparam, if used. Only works with vshaderparam, not params set in map.cfg echovshaderparam = [echo ***vshaderparam (getvshaderparamnames $getseltex) (getvshaderparam $getseltex (getvshaderparamnames $getseltex))] // Only works with vshaderparam, not params set in map.cfg // echovshaderparamenvscale = [echo ***shaderparam envscale (getvshaderparam $getseltex envscale)] // echovshaderparamglowcolor = [echo ***shaderparam glowcolor (getvshaderparam $getseltex glowcolor)] // echovshaderparamparallaxscale = [echo ***shaderparam parallaxscale (getvshaderparam $getseltex parallaxscale)] // echovshaderparampulseglowcolor = [echo ***shaderparam pulseglowcolor (getvshaderparam $getseltex pulseglowcolor)] // echovshaderparampulseglowspeed = [echo ***shaderparam pulseglowspeed (getvshaderparam $getseltex pulseglowspeed)] // echovshaderparampulsespeed = [echo ***shaderparam pulsespeed (getvshaderparam $getseltex pulsespeed)] // echovshaderparamspecscale = [echo ***shaderparam specscale (getvshaderparam $getseltex specscale)] findpickupents = [entfind shells;entfind bullets;entfind rockets;entfind riflerounds;entfind grenades;entfind cartridges;entfind greenarmour;entfind yellowarmour;entfind health;entfind healthboost;entfind quaddamage;] prettysky = [ skybox "skyboxes/remus/sky01" ambient 25 21 23 skylight 148 153 163 blurskylight 2 sunlight 255 252 250 sunlightscale 1.3 sunlightpitch 43 sunlightyaw 53 ]