// 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 particles sound shells bullets rockets riflerounds grenades cartridges health healthboost tinyhealth tinyarmour greenarmour yellowarmour quaddamage teleport teledest jumppad ] 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_teleport = [ entproperty 0 ( * $arg1 1 ) ] ent_action_teledest = [ entproperty 1 ( * $arg1 1 ) ] ent_action_mapmodel = [ entproperty 1 ( * $arg1 1 ) ] ent_action_light = [ entproperty 0 ( * $arg1 5 ) ] ent_action_jumppad = [ entproperty 0 ( * $arg1 5 ) ] ent_action_playerstart = [ entproperty 0 ( * $arg1 15 ) ] ent_action_particles = [ entproperty 0 ( * $arg1 1 ) ] ent_action_sound = [ entproperty 0 ( * $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 = [ 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" 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 (enthavesel) [concat (entget) ":^f2" (enthavesel) "^f7selected^n"] ) ] entcomplete = [ listcomplete $arg1 $enttypelist ] entcomplete newent entcomplete entfind entcomplete clearents listcomplete editmat "air clip noclip gameclip death alpha" air = [ editmat air $arg1 ] clip = [ editmat clip $arg1 ] noclip = [ editmat noclip $arg1 ] gameclip = [ editmat gameclip $arg1 ] death = [ editmat death $arg1 ] alpha = [ editmat alpha $arg1 ] 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)]