#include maps\mp\_utility; createfx() { if(!isDefined(level.createFX)) level.createFX = []; triggers = getentarray("trigger_multiple","classname"); for(i=0;i 1000) continue; difference = vectornormalize(e.org - (level.player.origin + (0,0,55))); newdot = vectordot(forward, difference); if(newdot < dot) continue; highlight = e; dot = newdot; } if(isDefined(highlight)) { if(getcvar("effect_genshoot") != "") { setcvar("effect_genshoot", ""); if((isDefined(ent.selected)) && (ent.selected == highlight)) { ent.selected = undefined; org.origin = (0,0,0); setcvar("effect_display", "off"); } else { ent.selected = highlight; org.origin = ent.selected.org; org.origin2 = ent.selected.org2; setcvar("effect_delay", ent.selected.delay); oldDelay = ent.selected.delay; msg = ent.selected.id; if((ent.selected.type == "exploderfx") || (ent.selected.type == "loopfx")) { effectName = msg; effect = level._effect[msg]; } else if(ent.selected.type == "soundfx") { soundName = msg; sound = msg; } ent.org.desired_origin = ent.org.origin; } } } if(getcvar("effect_exploder") == "") exploderNum = -1; else { exploderNum = getCvarInt("effect_exploder"); if(isDefined(ent.selected)) { type = ent.selected.type; createfx_delete(ent.selected); level thread exploderfxWrapper(exploderNum, effectName, ent.org.origin, getCvarFloat("effect_delay"), ent.org.origin2, ent.soundalias); ent.selected = level.createFX[level.createFX.size-1]; } setcvar("effect_exploder", ""); } if(isDefined(ent.selected)) { if(getcvar("effect_soundalias") != "") { ent.selected.soundalias = getcvar("effect_soundalias"); createfx_recreate(ent, ent.selected.id); setcvar("effect_soundalias", ""); } if(getcvar("effect_display") != "off") setcvar("effect_display", "off"); if(getcvar("effect_delete") != "") { createfx_delete(ent.selected); ent.selected = undefined; org.origin = (0,0,0); } else if(oldDelay != getCvarFloat("effect_delay")) { origin = ent.selected.org; if(isDefined(effectName)) createfx_recreate(ent, effectName); else if(ent.selected.type == "soundfx") { effectName = undefined; effect = undefined; soundName = ent.selected.id; sound = ent.selected.id; createfx_recreate(ent, soundName); } } if(exploderNum != -1) { if(isDefined(ent.selected.exploder)) ent.selected.exploder.script_exploder = exploderNum; else { ent.selected.type = "exploderfx"; createfx_delete(ent.selected); level thread exploderfxWrapper(exploderNum, effectName, ent.org.origin, getCvarFloat("effect_delay"), ent.org.origin2, ent.soundalias); ent.selected = level.createFX[level.createFX.size-1]; } } } else { if(getcvar("effect_delete") != "") org.origin = (0,0,0); if(exploderNum != -1) { level thread exploderfxWrapper(exploderNum, effectName, ent.org.origin, getCvarFloat("effect_delay"), ent.org.origin2, ent.soundalias); ent.selected = level.createFX[level.createFX.size-1]; } } if(isDefined(highlight)) highlight.highlight = true; if(isDefined(sound)) { if(!isDefined(ent.selected)) { if(getcvar("effect_create") != "" && ent.org.origin != (0,0,0)) level thread maps\mp\_fx::soundfx(soundName, ent.org.origin); } else { if((getcvar("effect_create") != "") && (ent.org.origin != (0,0,0))) { type = ent.selected.type; if(type == "soundfx") { createfx_recreate(ent, soundName); level thread maps\mp\_fx::soundfx(soundName, ent.org.origin); } } } } else if(isDefined(effect)) { sound = undefined; soundName = undefined; if(!isDefined(ent.selected)) { if((getcvar("effect_create") != "") && (ent.org.origin != (0,0,0))) level thread maps\mp\_fx::loopfxthread(effectName, ent.org.origin, getCvarFloat("effect_delay"), ent.org.origin2); if(getcvar("effect_display") == "on") { if(gettime() > timer) { playfx( effect, org.origin, vectorNormalize(org.origin2 - org.origin)); timer = gettime() + (getCvarFloat("effect_delay") * 1000); } } } else { if((getcvar("effect_create") != "") && (ent.org.origin != (0,0,0))) { type = ent.selected.type; if(type == "exploderfx") level thread exploderfxWrapper(ent.selected.exploder.script_exploder, effectName, ent.org.origin, getCvarFloat("effect_delay"), ent.org.origin2, ent.soundalias); else if(type == "loopfx") level thread maps\mp\_fx::loopfxthread(effectName, ent.org.origin, getCvarFloat("effect_delay"), ent.org.origin2); else if(type == "soundfx") level thread maps\mp\_fx::soundfx(soundName, ent.org.origin); } if(getcvar("effect_onceoff") == "on") { selectedFX = undefined; for(i=0;i 1) println(" *** CREATING EFFECT, COPY THESE LINES TO ", level.script, "_fx.gsc *** "); else println(" *** CREATING EFFECT, COPY THIS LINE TO ", level.script, "_fx.gsc *** "); for(i=0;i 1.0) { color[p] = 1.0; color_dir[p] = "down"; } } else { color[p] -= color_rate[p]; if(color[p] < 0.0) { color[p] = 0.0; color_dir[p] = "up"; } } } col = (color[0], color[1], color[2]); oldColor[i] = col; } for(;;) { for(p=0;p<3;p++) { if(color_dir[p] == "up") { color[p] += color_rate[p]; if(color[p] > 1.0) { color[p] = 1.0; color_dir[p] = "down"; } } else { color[p] -= color_rate[p]; if(color[p] < 0.0) { color[p] = 0.0; color_dir[p] = "up"; } } } col = (color[0], color[1], color[2]); wait( [[level.ex_fpstime]](0.05) ); newAngles = (randomint(360), randomint(360), randomint(360)); oldAngles[0] = newAngles; oldColor[0] = col; if(org.origin == (0,0,0)) { for(i=num-1;i>0;i--) oldColor[i] = oldColor[i-1]; for(i=num-1;i>0;i--) oldAngles[i] = oldAngles[i-1]; continue; } if(getcvar("effect_orient") != "on") { for(i=0;i0;i--) oldAngles[i] = oldAngles[i-1]; for(i=num-1;i>0;i--) oldColor[i] = oldColor[i-1]; } } createfx_showOrigin(id, org, delay, org2, type, exploder, id2) { if(!isDefined(level.createFX)) level.createFX = []; ent = spawnstruct(); ent.id = id; ent.id2 = id2; ent.org = org; ent.delay = delay; ent.type = type; if(!isDefined(org2)) org2 = ent.org + (0,0,100); ent.org2 = org2; if(isDefined(exploder)) ent.exploder = exploder; ent.highlight = false; level.createFX[level.createFX.size] = ent; return ent; } createfx_showOriginProc(e) { level endon("createfx stop showing origins"); for(;;) { for(i=0;i 9000000) // 1200x1200 continue; print3d(ent.org + right, ent.id, color, 1, 0.75); if(ent.type == "exploderfx") { print3d(ent.org + right + (0,0,-15), "exploder: " + ent.exploder.script_exploder, color, 1, 0.75); if(isDefined(ent.exploder.script_soundalias)) print3d(ent.org + right + (0,0,-30), "alias: " + ent.exploder.script_soundalias, color, 1, 0.75); } else if(isDefined(ent.soundalias)) print3d(ent.org + right + (0,0,-15), "alias: " + ent.soundalias, color, 1, 0.75); } wait( [[level.ex_fpstime]](0.05) ); } } createfx_delete(selected) { if(selected.type == "exploderfx") { num = selected.exploder.script_exploder; selected.exploder delete(); } else if(selected.type == "soundfx") selected.soundfx delete(); newfx = []; for(i=0;i