PLEASE, CLICK ON THE TEXT ABOVE THE VIDEO TO PLAY IT! EMBED DOESN'T WORK HERE!
Hello, recently I have been working a lot with the E2 holograms and this is the result:
Holo helicopter
Controlls:
Pilot:WASD, shift up, alt down, space is airbrake, R toggles engine
Gunner: space for crosshairs, mouse 1 fire AA guns, mouse 2 fire rockets, mouse wheel up cycles rockets (visible on front hud panel), F to lock target (smart lock settings), R to lock rockets
It is 31 props and 32 constraints, ~26 holograms, 1 turret, 4 rocket mounts. Rockets are part of dup. The heli was duped and spawned max. 4 times, so the dup. damage should be 0.
The heli must be spawned at [0,0,0] angle for the holograms to work correctly (could be fixed later with E:toWorld(A))
This heli is incredibly easy to control, the rockets are fast and powerful, auto destructing after use, or switching off if entity is null, they are wireless, triggered by signals and target is fed to it by global variables.
CREDITS TO Generic Default for the heli CHASY
And yes, no picky, no clicky: (video in this case)
Click here to play.
Holo Buddy
This is exactly like Maso?s Bubble buddy, but remade into holograms. It has 4 expressions, another one for talking:
Speaking in chat: opens/closes moth for every word (string explode)
Mic: opens mouth every 500miliseconds (runOnKey(?G?))
Commands (expressions):
/evil --
/evil++ --I love this expression in text: >
/surprise ?default expression for speaking
/smile ?default
Video:
Holo buddy
Holo toaster
Yes, I noticed you guys got a thing about toasters, so I made one for you! It is a double waffle toaster made out of holograms. It grabs nearest 2 waffles, and starts to cook them, when they are cooked, it will spit them out (can be changed to frozen only). The hologram changes color 5 times during cooking, and of course, the final waffle has the final color.
Video:
holo toaster II
And yes, important part, the dups or E2 codes:
bubble buddy (make sure to spawn it on ground and that its flat)
E2 Code:
@name holo face
@inputs
@outputs Done Clk Speak Times Mod Max Mic
@persist
@trigger
Clk= chatClk(owner())
Ls= owner():lastSaid()
Ls= Ls:lower()
Mic= key("X")
if(Clk)
{
Ar= Ls:explode(" ")
Max= Ar:count()*2
}
if(Done==0)
{
if(first())
{
I=1
#for(I=1,I<=15,1)
while(I<=19)
{
holoCreate(I)
#print(I+"")
I++
}
#1=body
#2,3= big eyes
#5,6= small eyes
#4,13= mouth
#7,8=eye brows
#9=nose
#hairs: 10~18
#D mouth: 19
}
H1= holoEntity(1)
#position
holoPos(1,H1:pos()+vec(0,0,40))
holoPos(2,H1:toWorld(vec(25, 13,10)))
holoPos(3,H1:toWorld(vec(25,-13,10)))
holoPos(4,H1:toWorld(vec(29,0,-12)))
holoPos(5,H1:toWorld(vec(30, 13,10)))
holoPos(6,H1:toWorld(vec(30,-13,10)))
holoPos(7,H1:toWorld(vec(22,-13,19)))
holoPos(8,H1:toWorld(vec(22, 13,19)))
holoPos(9,H1:toWorld(vec(30, 0,0)))
holoPos(10,H1:toWorld(vec(10, 0,30)))
holoPos(11,H1:toWorld(vec(10, 10,30)))
holoPos(12,H1:toWorld(vec(10,-10,30)))
holoPos(13,H1:toWorld(vec(29,0,-12)))
holoPos(14,H1:toWorld(vec(-5,5,30)))
holoPos(15,H1:toWorld(vec(-5,-5,30)))
holoPos(16,H1:toWorld(vec(-15,-10,30)))
holoPos(17,H1:toWorld(vec(-15,-0,30)))
holoPos(18,H1:toWorld(vec(-15,10,30)))
holoPos(19,H1:toWorld(vec(29,0,-14.5)))
#angle
holoAng(7,ang(30,90,0))
holoAng(8,ang(-30,90,0))
holoAng(4,ang(0,90,0))#-15
holoAng(10,ang(80,0,0))
holoAng(11,ang(80,0,0))
holoAng(12,ang(80,0,0))
holoAng(13,ang(90,0,0))
holoAng(14,ang(80,0,0))
holoAng(15,ang(80,0,0))
holoAng(16,ang(80,0,0))
holoAng(17,ang(80,0,0))
holoAng(18,ang(80,0,0))
holoAng(19,ang(90,0,0))
#material
holoMaterial(1,"models/shiny")
holoMaterial(2,"models/shiny")
holoMaterial(3,"models/shiny")
holoMaterial(7,"models/shiny")
holoMaterial(8,"models/shiny")
holoMaterial(9,"models/shiny")
#holoMaterial(13,"models/shiny")
#holoMaterial(19,"models/shiny")
#scale
holoScale(1,vec(5,5,5))
holoScale(4,vec(1,0.2,0.2))
holoScale(5,vec(0.5,0.5,0.5))
holoScale(6,vec(0.5,0.5,0.5))
holoScale(7,vec(0.6,0.2,0.2))
holoScale(8,vec(0.6,0.2,0.2))
holoScale(9,vec(0.5,0.5,0.5))
holoScale(10,vec(1,0.2,0.2))
holoScale(11,vec(1,0.2,0.2))
holoScale(12,vec(1,0.2,0.2))
holoScale(14,vec(1,0.2,0.2))
holoScale(15,vec(1,0.2,0.2))
holoScale(16,vec(1,0.2,0.2))
holoScale(17,vec(1,0.2,0.2))
holoScale(18,vec(1,0.2,0.2))
holoScale(19,vec(0.65,1,0.2))
#model
holoModel(1,"hqicosphere2")
holoModel(2,"hqicosphere2")
holoModel(3,"hqicosphere2")
holoModel(5,"hqicosphere2")
holoModel(6,"hqicosphere2")
holoModel(9,"hqcylinder")
holoModel(13,"hqtorus2")
holoModel(19,"cylinder")
#color
Red= vec(255,0,0)
White= vec(255,255,255)
Black=vec()
Yel= vec(255,255,0)
Brown= vec(80,40,40)
holoColor(1,Yel)
holoColor(4,Red)
holoColor(5,Black)
holoColor(6,Black)
holoColor(7,Brown)
holoColor(8,Brown)
holoColor(10,Black)
holoColor(11,Black)
holoColor(12,Black)
holoColor(14,Black)
holoColor(15,Black)
holoColor(16,Black)
holoColor(17,Black)
holoColor(18,Black)
holoColor(13,Red)
holoColor(19,Red)
holoAlpha(13,0)
#holoAlpha(4,0)
#parent
I=2
while(I<=19)
{
holoParent(I,1)
I++
}
#holoParent(1,owner())
#holoPos(1,owner():shootPos())
runOnChat(1)
Done=1
Me=owner()
#holoPos(1,(Me:shootPos()))
#holoAng(1,ang(0,Me:angles():yaw(),0))#
runOnTick(1)
runOnKey("X")
#runOnKey("W")
#runOnKey("S")
#runOnKey("LCONTROL")#for height -50
}
if(tickClk())
{
Me=owner()
holoPos(1,Me:pos()+vec(0,0,45))
holoAng(1,ang(Me:eye():z()*-45,Me:angles():yaw(),0))
holoParent(1,owner())
}
if(Clk)
{
Speak=0
H1= holoEntity(1)
holoAng(4,ang(0,holoEntity(4):angles():yaw(),0))
holoScale(7,vec(0.6,0.2,0.2))
holoScale(8,vec(0.6,0.2,0.2))
holoPos(7,H1:toWorld(vec(22,-13,19)))
holoPos(8,H1:toWorld(vec(22, 13,19)))
if(Ls=="/smile")
{
holoAlpha(13,0)
holoAlpha(4,255)
holoAlpha(19,255)
holoAng(7,ang(0,holoEntity(7):angles():yaw(),0))
holoAng(8,ang(0,holoEntity(8):angles():yaw(),0))
}
elseif(Ls=="/suprise")
{
holoAng(7,ang(30,holoEntity(7):angles():yaw(),0))
holoAng(8,ang(0,holoEntity(8):angles():yaw(),0))
holoAlpha(4,0)
holoAlpha(19,0)
holoAlpha(13,255)
}
elseif(Ls=="/evil")
{
holoAlpha(13,0)
holoAlpha(4,255)
holoAlpha(19,0)#the | is better than |D
holoAng(7,ang(30,holoEntity(7):angles():yaw(),0))
holoAng(8,ang(-30,holoEntity(8):angles():yaw(),0))
holoAng(4,ang(-15,holoEntity(4):angles():yaw(),0))
}
elseif(Ls=="/evil++") #>|D
{
holoAlpha(13,0)
holoAlpha(4,255)
holoAlpha(19,0)
holoAng(7,ang(30,holoEntity(7):angles():yaw(),0))
holoAng(8,ang(-30,holoEntity(8):angles():yaw(),0))
holoAng(4,ang(-15,holoEntity(4):angles():yaw(),0))
holoScale(7,vec(1.8,0.2,0.2))
holoScale(8,vec(1.8,0.2,0.2))
holoPos(7,H1:toWorld(vec(25,-13,19)))
holoPos(8,H1:toWorld(vec(25, 13,19)))
}
else
{
Speak=1
}
}
if(changed(Mic)&Mic)
{
interval(100)
}
if(changed(Mic)&!Mic)
{
interval(0)
Mod=1
}
if(Speak|Mic)
{
runOnChat(0)
timer("Speak",500)
}
if(clk("Speak"))
{
Times++
}
if(changed(Times)&Times&Done)
{
if(Times>=Max&!Mic)
{
Times=0
Speak=0
stoptimer("Speak")
CLk=0
runOnChat(1)
Mod=1
}
if(Mod)
{
holoAlpha(4,255)
holoAlpha(13,0)
holoAlpha(19,255)
}
else
{
holoAlpha(4,0)
holoAlpha(13,255)
holoAlpha(19,0)
}
Mod=!Mod
}
if(changed(Times)&Times==0&clk("Speak"))
{
stoptimer("Speak")
runOnChat(1)
Max=0
}
Toaster:
E2 Code:
@name
@inputs
@outputs [Find Wafles]:array Cook Phase Col:vector
@persist
@trigger
interval(200)
if(first())
{
Wafles1=array()
for(I=1,6)
{
holoCreate(I)
holoColor(I,vec(100,100,100))
if(I<3|I==6)
{
holoScale(I,vec(1.5,2,0.2))
holoAng(I,ang(90,0,0))
}
elseif(I>2&I<5)
{
holoScale(I,vec(1.5,1,0.2))
holoAng(I,ang(90,90,0))
#holoAlpha(I,0)
}
else
{
holoScale(I,vec(2,1,0.2))
holoAng(I,ang(0,90,0))
}
}
H1= holoEntity(1)
H5= holoEntity(5)
H3= holoEntity(3)
holoPos(1,H1:toWorld(vec(0,0,-4.9)))
holoPos(2,H1:toWorld(vec(0,0, 4.9*2)))#multiplication anyone?
holoPos(4,H3:toWorld(vec(0,0,11)))
holoPos(3,H3:toWorld(vec(0,0,-11)))
holoPos(5,H5:toWorld(vec(0,0,-9)))
}
if(clk()&!Cook)
{
findByModel("models/waffle.mdl")
findClipToClass("waffle")
findSortByDistance(entity():pos())
Find= findToArray()
Wafles=array()
for(I=1,Find:count())
{
This= Find[I,entity]
if((This:pos()-entity():pos()):length()<30)
{
if(Wafles:count()<2)
{
Wafles:pushEntity(This)
This:setAlpha(0)
This:propFreeze(1)
}
if(Wafles:count()>=2)
{
Cook=1
print("cook")
timer("cook",5000)
break
}
if(Wafles:count()==1)
{
H1=holoEntity(1)
holoCreate(8)
holoModelAny(8,"models/waffle.mdl")
#holoScale(8,vec(1,1,0.1))
holoAng(8,ang(90,0,0))
holoPos(8,H1:toWorld(vec(-2,0,7.5)))
}
}
else
{
#This:setAlpha(255)
}
}
}
if(Cook&clk("cook"))
{
Cook=-1
print("cooked")
}
if(clk("throw"))
{
Wafles[1,entity]:propRotate(ang(0,180,0))
Wafles[2,entity]:propRotate(ang(0,180,0))
Wafles[1,entity]:tele(holoEntity(8):pos())
Wafles[2,entity]:tele(holoEntity(9):pos())
holoDelete(8)
holoDelete(9)
Wafles[1,entity]:setAlpha(255)
Wafles[2,entity]:setAlpha(255)
Wafles[1,entity]:setColor(vec(137,119,119))
Wafles[2,entity]:setColor(vec(137,119,119))
Wafles[1,entity]:propFreeze(0)
Wafles[2,entity]:propFreeze(0)
Wafles[1,entity]:applyForce(vec(0,0,50))
Wafles[2,entity]:applyForce(vec(0,0,50))
timer("dis throw",2000)
}
if(clk("dis throw"))
{
Cook=0
}
if(changed(Cook)&Cook==1)
{
#H1=holoEntity(1)
holoCreate(8)
holoModelAny(8,"models/waffle.mdl")
#holoScale(8,vec(1,1,0.1))
holoAng(8,ang(90,0,0))
holoPos(8,H1:toWorld(vec(-2,0,7.5)))
holoCreate(9)
holoModelAny(9,"models/waffle.mdl")
#holoScale(9,vec(1,1,0.1))
holoAng(9,ang(90,0,0))
holoPos(9,H1:toWorld(vec(-2,0,2.3)))
Phase=1
}
if(Phase){timer("phaser",1000)}
if(changed(Cook)&Cook==-1&!first())
{
#holoDelete(8)
#holoDelete(9)
H1=holoEntity(1)
holoPos(8,H1:toWorld(vec(-7,0,7.5)))
holoPos(9,H1:toWorld(vec(-7,0,2.3)))
timer("throw",1000)
}
if(clk("phaser"))
{
#if(Phase==0){Col=vec(255,255,255)}
Phase++
if(Phase==1){Col=vec(255,255,255)}
if(Phase==2){Col=vec(150,130,130)}
if(Phase>=4){Col=vec(137,119,119) Phase=0 stoptimer("phaser")}
holoColor(8,Col)
holoColor(9,Col)
}
no holomodelAny toaster:
E2 Code:
@name
@inputs
@outputs [Find Wafles]:array Cook
@persist
@trigger
interval(200)
if(first())
{
Wafles1=array()
for(I=1,6)
{
holoCreate(I)
holoColor(I,vec(100,100,100))
if(I<3|I==6)
{
holoScale(I,vec(1.5,2,0.2))
holoAng(I,ang(90,0,0))
}
elseif(I>2&I<5)
{
holoScale(I,vec(1.5,1,0.2))
holoAng(I,ang(90,90,0))
#holoAlpha(I,0)
}
else
{
holoScale(I,vec(2,1,0.2))
holoAng(I,ang(0,90,0))
}
}
H1= holoEntity(1)
H5= holoEntity(5)
H3= holoEntity(3)
holoPos(1,H1:toWorld(vec(0,0,-4.9)))
holoPos(2,H1:toWorld(vec(0,0, 4.9*2)))#multiplication anyone?
holoPos(4,H3:toWorld(vec(0,0,11)))
holoPos(3,H3:toWorld(vec(0,0,-11)))
holoPos(5,H5:toWorld(vec(0,0,-9)))
}
if(clk()&!Cook)
{
findByModel("models/hunter/plates/plate025x025.mdl")
findSortByDistance(entity():pos())
Find= findToArray()
Wafles=array()
for(I=1,Find:count())
{
This= Find[I,entity]
if((This:pos()-entity():pos()):length()<30)
{
if(Wafles:count()<2)
{
Wafles:pushEntity(This)
This:setAlpha(0)
This:propFreeze(1)
}
if(Wafles:count()>=2)
{
Cook=1
print("cook")
timer("cook",5000)
break
}
if(Wafles:count()==1)
{
H1=holoEntity(1)
holoCreate(8)
holoScale(8,vec(1,1,0.1))
holoAng(8,ang(90,0,0))
holoPos(8,H1:toWorld(vec(-2,0,7.5)))
}
}
else
{
This:setAlpha(255)
}
}
}
if(Cook&clk("cook"))
{
Cook=-1
print("cooked")
}
if(clk("throw"))
{
holoDelete(8)
holoDelete(9)
Wafles[1,entity]:setAlpha(255)
Wafles[2,entity]:setAlpha(255)
Wafles[1,entity]:setColor(vec(50,10,10))
Wafles[2,entity]:setColor(vec(50,10,10))
Wafles[1,entity]:propFreeze(0)
Wafles[2,entity]:propFreeze(0)
Wafles[1,entity]:propRotate(ang(90,0,0))
Wafles[2,entity]:propRotate(ang(90,0,0))
Wafles[1,entity]:tele(vec(0,0,50)+entity():pos())
Wafles[2,entity]:tele(vec(0,0,50)+entity():pos())
Wafles[1,entity]:applyForce(vec(0,0,150))
Wafles[2,entity]:applyForce(vec(0,0,100))
timer("dis throw",2000)
}
if(clk("dis throw"))
{
Cook=0
}
if(changed(Cook)&Cook==1)
{
#H1=holoEntity(1)
holoCreate(8)
holoScale(8,vec(1,1,0.1))
holoAng(8,ang(90,0,0))
holoPos(8,H1:toWorld(vec(-2,0,7.5)))
holoCreate(9)
holoScale(9,vec(1,1,0.1))
holoAng(9,ang(90,0,0))
holoPos(9,H1:toWorld(vec(-2,0,2.3)))
}
if(changed(Cook)&Cook==-1&!first())
{
#holoDelete(8)
#holoDelete(9)
H1=holoEntity(1)
holoPos(8,H1:toWorld(vec(-7,0,7.5)))
holoPos(9,H1:toWorld(vec(-7,0,2.3)))
timer("throw",1000)
}
all contraptions done by Unsmart
extensions used:
E:tele(V)//from prop core, only renamed
E:freeze(N)//prop core E
ropFreeze(N)
Snuffys key extension (bubbly budy mic detection)
holomodelAny(N,S) for helicopter and toaster, however toaster can be easily remade back to def. holo models.
If you cant stand my voice, mute the volume!
Rocket code explained, please open the dup file for the E2
Holo heli rockets detailed+code explained
Credits:
Emperus- for being the model in my holo buddy video and others too.
Raj - holo buddy video
the ***** video, sadly got removed, but you can find it at unsmart
its named as this thread. holo madness, notice the warning, rated M for mature.
Please update your helicopter with the following patch:
new patch:
e2 Code:
@name holo spawner patch 1.2
@inputs This:entity
@outputs
@persist [Col Mdl Ang Pos]:array
@trigger
Ths=entity():isConstrainedTo()
if(first()){timer("dr",500)}
if(duped()){timer("dr",10000)}
if(clk("dr"))
{
Col:pushVector4(vec4(150,150,150,255))
Col:pushVector4(vec4(150,150,150,255))
Col:pushVector4(vec4(150,150,150,255))
Col:pushVector4(vec4(150,150,150,255))
Col:pushVector4(vec4(150,150,150,255))
Col:pushVector4(vec4(150,150,150,255))
Col:pushVector4(vec4(150,150,150,100))
Col:pushVector4(vec4(150,150,150,255))
Col:pushVector4(vec4(150,150,150,255))
Col:pushVector4(vec4(150,150,150,100))
Col:pushVector4(vec4(255,255,255,255))
Col:pushVector4(vec4(150,150,150,255))
Col:pushVector4(vec4(150,150,150,255))
Col:pushVector4(vec4(150,150,150,255))
Col:pushVector4(vec4(150,150,150,255))
Mdl:pushString("models/hunter/blocks/cube05x1x025.mdl")
Mdl:pushString("models/hunter/blocks/cube05x6x025.mdl")
Mdl:pushString("models/hunter/triangles/2x2.mdl")
Mdl:pushString("models/hunter/triangles/1x1x2carved025.mdl")
Mdl:pushString("models/hunter/blocks/cube05x1x025.mdl")
Mdl:pushString("models/hunter/triangles/1x1x2carved025.mdl")
Mdl:pushString("models/hunter/tubes/tube2x2x1d.mdl")
Mdl:pushString("models/hunter/blocks/cube1x2x05.mdl")
Mdl:pushString("models/hunter/plates/tri2x1.mdl")
Mdl:pushString("models/hunter/plates/plate1x4.mdl")
Mdl:pushString("models/expression 2/cpu_processor_mini.mdl")
Mdl:pushString("models/hunter/blocks/cube1x2x1.mdl")
Mdl:pushString("models/hunter/triangles/2x2x1.mdl")
Mdl:pushString("models/hunter/plates/tri2x1.mdl")
Mdl:pushString("models/hunter/triangles/2x2.mdl")
Pos:pushVector(vec(-0.033815935254097,-90.65503692627,59.310161590576))
Pos:pushVector(vec(-0.32846355438232,318.10794067383,52.124401092529))
Pos:pushVector(vec(-22.228782653809,-70.725456237793,71.186225891113))
Pos:pushVector(vec(71.174072265625,0.40428000688553,55.274406433105))
Pos:pushVector(vec(0.01979486271739,-183.85208129883,35.586132049561))
Pos:pushVector(vec(-71.17529296875,0.44754382967949,55.276378631592))
Pos:pushVector(vec(0.010839958675206,-189.81394958496,23.72477722168))
Pos:pushVector(vec(0.022324655205011,-71.710113525391,35.585632324219))
Pos:pushVector(vec(23.700416564941,-144.03576660156,47.432975769043))
Pos:pushVector(vec(-0.26127296686172,-114.77420043945,92.86962890625))
Pos:pushVector(vec(24.007202148438,0.01594590768218,-0.024416765198112))
Pos:pushVector(vec(5.9317650794983,0.45241260528564,71.201171875))
Pos:pushVector(vec(-0.023165673017502,71.623229980469,71.174133300781))
Pos:pushVector(vec(-20.772850036621,-144.03733825684,47.415405273438))
Pos:pushVector(vec(22.174781799316,-70.727058410645,71.221374511719))
Ang:pushAngle(ang(-90,90,0))
Ang:pushAngle(ang(0,0,15))
Ang:pushAngle(ang(90,-180,0))
Ang:pushAngle(ang(45,90,90))
Ang:pushAngle(ang(-90,-90,0))
Ang:pushAngle(ang(45,-90,90))
Ang:pushAngle(ang(90,0,0))
Ang:pushAngle(ang(0,0,0))
Ang:pushAngle(ang(0,-90,90))
Ang:pushAngle(ang(0,0,16))
Ang:pushAngle(ang(90,0,0))
Ang:pushAngle(ang(0,-90,90))
Ang:pushAngle(ang(0,0,0))
Ang:pushAngle(ang(0,-90,90))
Ang:pushAngle(ang(90,-180,0))
for(I=1,Col:count())
{
if(Mdl[I,string]:find("expression")){continue}
holoCreate(I)
#holoScaleUnits(I,Cur:boxSize()/vec(2,2,0.5))#for use with model, not any model
holoAng(I,Ths:toWorld(Ang[I,angle]))
#holoPos(I,Ths:toWorld(This:toLocal(Cur:pos())))#maybe let copier do it
holoPos(I,Ths:toWorld(Pos[I,vector]))#works, less constriant on e2 CPu power
holoModelAny(I,Mdl[I,string])
holoParent(I,Ths)
holoColor(I,vec(Col[I,vector4]))
holoAlpha(I,Col[I,vector4]:w())
}
}
Rocket code here, please note that when placing rockets, they must be named correctly:
from right to left:
R2 R1 ||L1 L2
e2 Code:
@name
@inputs
@outputs Th Vec V:vector Boom Tar:entity
@persist
@trigger
signalClearOnRemove()
runOnSignal("rocketL2",0,1)
gSetGroup("target")
Tar=gGetEnt()
if(first()|duped()){Th=Vec=0 exit()}
if(signalClk())
{
Th=1
Vec=0
timer("phase 2",1000)
#Heading=entity():isConstrainedTo():angles()
}
#if(tickClk()&Th&!Vec){Cons:rotate(Heading)}
if(clk("phase 2"))
{
Vec=1
runOnTick(1)
}
if(Vec)
{
V=(Tar:pos()-entity():pos())
applyForce(V*1000)
}
if(V:length()<100&Vec)
{
Boom=1
timer("destruct",50)
}
if(clk("destruct")){selfDestruct()}
if(!Tar){Vec=Th=0 runOnTick(0)}
Bookmarks