313 lines
8.2 KiB
INI
313 lines
8.2 KiB
INI
|
|
// 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
|
|
jumppad
|
|
base
|
|
spotlight
|
|
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 0 ( * $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_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 ]
|
|
|
|
//////// 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
|
|
]
|
|
|
|
enttoggle = [ entmoving 1; entmoving 0; ]
|
|
entaddmove = [ entmoving 2 ]
|
|
|
|
grabbing = 0
|
|
|
|
drag = [ dragging 1; onrelease [ dragging 0 ] ]
|
|
corners = [ selectcorners 1; dragging 1; onrelease [ selectcorners 0; dragging 0 ] ]
|
|
entadd = [ entaddmove; entmoving 0; ]
|
|
editmove = [ moving 1; onrelease [ moving 0 ]; result $moving ]
|
|
entdrag = [ entaddmove; 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]
|
|
entdirectionprop = [0 0 1]
|
|
|
|
entdirection = [
|
|
if ( && [enthavesel] [ = (havesel) 0 ] ) [
|
|
entdiridx = (indexof $entswithdirection (enttype))
|
|
if (>= $entdiridx 0) [
|
|
entdirprop = (at $entdirectionprop $entdiridx)
|
|
if (> $arg1 0) [
|
|
entproperty $entdirprop $arg2
|
|
if (> (entattr $entdirprop) 360) [ entproperty $entdirprop -360 ]
|
|
] [
|
|
entproperty $entdirprop (- 0 $arg2)
|
|
if (< (entattr $entdirprop) 0) [ entproperty $entdirprop 360 ]
|
|
]
|
|
]
|
|
result 1
|
|
] [
|
|
result 0
|
|
]
|
|
]
|
|
|
|
editdel = [ if (! (enthavesel)) [delcube]; delent ]
|
|
editflip = [ flip; entflip ]
|
|
|
|
editrotate = [
|
|
|| [ entdirection $arg1 15 ] [
|
|
rotate $arg1
|
|
entrotate $arg1
|
|
]
|
|
]
|
|
|
|
editcut = [
|
|
hadselection = (havesel)
|
|
moving 1
|
|
if $moving [
|
|
copy; entcopy
|
|
delcube; delent
|
|
onrelease [
|
|
moving 0
|
|
paste
|
|
entpaste
|
|
if ( ! $hadselection ) [ cancelsel ]
|
|
]
|
|
]
|
|
]
|
|
|
|
passthrough = [
|
|
passthroughsel $arg1;
|
|
if $arg1 [
|
|
passthroughcube_bak = $passthroughcube
|
|
passthroughcube 1
|
|
] [
|
|
passthroughcube $passthroughcube_bak
|
|
]
|
|
entcancel
|
|
if $setting_entediting [ entediting ( ! $arg1 ) ]
|
|
|
|
]
|
|
|
|
edithud = [
|
|
if (enthavesel) [concatword (entget) " : " (enthavesel) " selected"]
|
|
]
|
|
|
|
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)]
|