Welcome to the new Diaspora forums, please let us know if you see anything broken! Notice: Some users may need to reupload their avatars due to an issue during forum setup!
Steeveeo's E2s
I have quite a few E2s that steeveeo made a while back, and most people have either lost them or never had them. The autodownloader used to send these to everyone, but that stopped working about a year ago. So yeah, here you guys go.
E2 Autoparenter
E2 Weldchecker
Automatic Sliding Door
Toggle Use Door
Prop Direction Finder
Third-person Camera
Holo Propeller Controller
Atmospheric Probe
E2 Autoparenter
# Author: Steeveeo # Updated: February 7, 2011 @ 12:08 AM PST (-8 GMT) # Use and Purpose: # Place this chip on the main prop of your ship and say # '!parent' in chat. This will do all the work for you # to have a properly working and non-laggy parented ship. # Note that this does auto-weight props, so if your gyropod # is setup for a different weight, you may have to adjust. # # To share this chip, just say 'share mode' in chat before placing. # # Note: Do NOT save your ship after this, it will not work as # expected. Instead, use this before flying each time your ship # is placed. # Fair Use and Legality: # This chip is provided as is and is designed to work only # as instructed. This is provided under Creative Commons and # may be modified and/or shared with anyone as long as proper # credit is given to the original author (Steeveeo). Failure to # give credit by plagiarising or removing this header is subject # to administrative punishment. @name E2 Tool - Auto Parenter @inputs @outputs @persist Parts:array Parent:entity Step @trigger runOnChat(1) #Startup if(first()) { #Check if constrained if(!entity():isConstrained() & owner():lastSaid():lower() != "share mode") { print("Please place this on a contraption to begin") selfDestruct() } elseif(entity():isConstrained()) { print("Caching structure parts, say '!parent' to begin.") Parent = entity():isConstrainedTo() Parts = entity():getConstraints() } } #Begin parenting if(chatClk(owner()) & owner():lastSaid():lower() == "!parent") { print("Initializing AutoParent, DO NOT TOUCH YOUR SHIP UNTIL THIS IS COMPLETE!") Step = 0 timer("Freeze",100) } #Freeze all props if(clk("Freeze")) { #From here on out, these are expensive processes, so we need to do this in chunks Index = 1+(10*Step) End = 0 while(Index <= 10+(10*Step)) { if(Index != Parts:count()+1) { Parts[Index,entity]:freeze() Index++ } else { #Call the Unconstrainer Step = 0 timer("Unconstrain",100) print("Freezing finished, optimizing constraints.") print("Unconstraining all props.") End = 1 break } } #Check if we did not hit the end, start next step if(!End) { Step++ timer("Freeze",100) } } #Unconstrain everything if(clk("Unconstrain")) { Index = 1+(10*Step) End = 0 while(Index <= 10+(10*Step)) { if(Index != Parts:count()+1) { Parts[Index,entity]:unConstrain() Index++ } else { #Call the Rewelder Step = 0 timer("Reweld",100) print("Unconstrain finished, welding to parent.") End = 1 break } } #Check if we did not hit the end, start next step if(!End) { Step++ timer("Unconstrain",100) } } #ReWeld everything to Parent if(clk("Reweld")) { Index = 1+(10*Step) End = 0 while(Index <= 10+(10*Step)) { if(Index != Parts:count()+1) { if(Parts[Index,entity] != Parent) { Parts[Index,entity]:weld(Parent) } Index++ } else { #Call the Weighter Step = 0 timer("Weights",100) print("Rewelding finished, beginning dynamic weighting.") End = 1 break } } #Check if we did not hit the end, start next step if(!End) { Step++ timer("Reweld",100) } } #Weight everything dynamically if(clk("Weights")) { Index = 1+(10*Step) End = 0 while(Index <= 10+(10*Step)) { if(Index != Parts:count()+1) { Part = Parts[Index,entity] if(Part == Parent) { Part:setMass(50000) } elseif(Part:type() == "prop_physics" | Part:type() == "prop_physics_multiplayer") { Part:setMass(200) } else { Type = Part:type():lower() if(Type:find("resource") | Type:find("storage") | Type:find("gen") | Type:find("regulator") | Type:find("gyropod")) { Part:setMass(50) } else { Part:setMass(1) } } Index++ } else { #Call the Parenter Step = 0 timer("Parent",100) print("Weighting finished, parenting ship.") End = 1 break } } #Check if we did not hit the end, start next step if(!End) { Step++ timer("Weights",100) } } #Parenting time if(clk("Parent")) { Index = 1+(10*Step) End = 0 while(Index <= 10+(10*Step)) { if(Index != Parts:count()+1) { if(Parts[Index,entity] != Parent & !Parts[Index,entity]:isVehicle()) { Parts[Index,entity]:parentTo(Parent) } Index++ } else { #End it print("Parenting complete, you may now fly this ship.") End = 1 break } } #Check if we did not hit the end, start next step if(!End) { Step++ timer("Parent",100) } else { selfDestruct() } }
E2 Weldchecker
# Author: Steeveeo # Updated: November 22, 2010 @ 11:48 PST (-8 GMT) # Use and Purpose: # Place on a ship and say "weldcheck: start" to mark everything # welded to it. Say "weldcheck: end" or delete the chip to clear # marking. # Fair Use and Legality: # This chip is provided as is and is designed to work only # as instructed. This is provided under Creative Commons and # may be modified and/or shared with anyone as long as proper # credit is given to the original author (Steeveeo). Failure to # give credit by plagiarising or removing this header is subject # to administrative punishment. @name Weld Check @inputs @outputs @persist Parts:array PartColors:array @trigger runOnChat(1) runOnLast(1) #Startup if(first()|dupefinished()) { } #Chat Control if(chatClk(owner())) { #Chat Parsing LastSaid = lastSaid():lower() Command = LastSaid:explode(": "):string(1) Args = LastSaid:explode(": "):string(2):explode(", ") if(Command == "weldcheck") { #Start Weld Coloring if(Args[1,string] == "start") { #Check if stuck on anything if(entity():isConstrained()) { Parts = entity():getConstraints() for(Index = 1, Parts:count()) { PartColors[Index,vector4] = Parts[Index,entity]:getColor4() } print("[WELDCHECK] - Beginning Scan and Marking Welded Objects") timer("Mark",1000) } else { print("[WELDCHECK] - Chip is not attached to anything! Weld this chip on a contraption to start check.") } } #End, unmark all checks if(Args[1,string] == "end") { print("[WELDCHECK] - Unmarking all objects, end of weld check.") timer("Unmark",1000) } } } #Mark all welded objects sequentially if(clk("Mark")) { for(Index = 1, Parts:count()) { Parts[Index,entity]:setColor(vec4(255,0,0,128)) } } #Unmark if told to or chip removed if(clk("Unmark") | last()) { for(Index = 1, Parts:count()) { Parts[Index,entity]:setColor(PartColors[Index,vector4]) } }
Automatic Sliding Door
# Author: Steeveeo # Updated: November 20, 2010 @ 4:11 PM PST (-8 GMT) # Use and Purpose: # Put this chip in a bulkhead for an effective and smooth # animated door that activates on [USE]. Automatically closes # after some time if nobody is in the way. Use the inputs for # further control. # Fair Use and Legality: # This chip is provided as is and is designed to work only # as instructed. This is provided under Creative Commons and # may be modified and/or shared with anyone as long as proper # credit is given to the original author (Steeveeo). Failure to # give credit by plagiarising or removing this header is subject # to administrative punishment. @name Use Door @inputs Lock OpenSeconds OwnerOnly @outputs PlayersInRange @persist PlayOpenSound SoundOpenPlayed PlayClosedSound SoundClosedPlayed @persist SlideUnits MaxSlide @trigger all @model models/SmallBridge/SEnts/sbadoors2a.mdl #CREDITS: # #Writer: Steeveeo runOnUse(1) hide(1) #Startup if(first()|dupefinished()) { entity():setAlpha(0) entity():setSkin(9) SlideUnits = 0 MaxSlide = 36 #Create Replacement Holos #--Left holoCreate(1) holoModel(1,entity():model()) holoSkin(1,entity():getSkin()) holoMaterial(1,entity():getMaterial()) holoColor(1,entity():getColor()) holoPos(1,entity():toWorld(vec(0,-28,0))) holoScale(1,vec(1,0.68,1)) holoParent(1,entity()) #--Right holoCreate(2) holoModel(2,entity():model()) holoSkin(2,entity():getSkin()) holoMaterial(2,entity():getMaterial()) holoColor(2,entity():getColor()) holoPos(2,entity():toWorld(vec(0,28,0))) holoScale(2,vec(1,0.68,1)) holoParent(2,entity()) } #Variable Declaration if(OpenSeconds == 0) { OpenSeconds = 3 } #Open/Close door if(!Lock) { if(OwnerOnly & useClk(owner())) { entity():setSolid(0) soundPurge() soundPlay("DoorSlide", 0, "doors/doormove3.wav") timer("ChecktoClose",OpenSeconds*1000) timer("Open Anim",1000/MaxSlide) } elseif(!OwnerOnly & useClk()) { entity():setSolid(0) soundPurge() soundPlay("DoorSlide", 0, "doors/doormove3.wav") timer("ChecktoClose",OpenSeconds*1000) timer("Open Anim",1000/MaxSlide) } } if(clk("ChecktoClose")) { #Entity Discovery findByClass("player") PlayersInRange = findClipToSphere(entity():pos(), 75) if(!PlayersInRange) { soundPurge() soundPlay("DoorSlide", 0, "doors/doormove3.wav") timer("Close Anim",1000/MaxSlide) } else { timer("ChecktoClose",1000) } } #------------ # Animations #------------ #Slide Open if(clk("Open Anim")) { SlideUnits++ holoPos(1,holoEntity(1):toWorld(vec(0,-1,0))) holoPos(2,holoEntity(2):toWorld(vec(0,1,0))) if(SlideUnits < MaxSlide) { timer("Open Anim",1000/MaxSlide) } else { soundPurge() soundPlay("DoorStop", 1, "doors/door_metal_thin_open1.wav") } } #Slide Closed if(clk("Close Anim")) { SlideUnits-- holoPos(1,holoEntity(1):toWorld(vec(0,1,0))) holoPos(2,holoEntity(2):toWorld(vec(0,-1,0))) if(SlideUnits > 0) { timer("Close Anim",1000/MaxSlide) } else { soundPurge() soundPlay("DoorStop", 1, "doors/door_metal_thin_open1.wav") entity():setSolid(1) } }
Toggle Use Door
# Author: Steeveeo # Updated: July 9, 2010 @ 6:55 AM PST (-8 GMT) # Use and Purpose: # Give this a model with the concmd "wire_expression2_model <path>", # then place where needed to make an effective and lagless door that # runs on [USE]. Use inputs for further control. # Fair Use and Legality: # This chip is provided as is and is designed to work only # as instructed. This is provided under Creative Commons and # may be modified and/or shared with anyone as long as proper # credit is given to the original author (Steeveeo). Failure to # give credit by plagiarising or removing this header is subject # to administrative punishment. @name Use Door #@model models/Slyfo/shuttlehatchclosed.mdl @model models/SmallBridge/Ship Parts/sbengine2or.mdl @inputs Lock OpenSeconds OwnerOnly @outputs PlayersInRange @persist PlayOpenSound SoundOpenPlayed PlayClosedSound SoundClosedPlayed @trigger all #CREDITS: # #Writer: Steeveeo runOnUse(1) hide(1) #Variable Declaration if(OpenSeconds == 0) { OpenSeconds = 2 } #Open/Close door if(!Lock) { if(OwnerOnly & useClk(owner())) { soundStop("DoorClosed") entity():setAlpha(0) entity():setSolid(0) soundPlay("DoorOpen", 0, "doors/doormove3.wav") timer("ChecktoClose",OpenSeconds*1000) } elseif(!OwnerOnly & useClk()) { soundStop("DoorClosed") entity():setAlpha(0) entity():setSolid(0) soundPlay("DoorOpen", 0, "doors/doormove3.wav") timer("ChecktoClose",OpenSeconds*1000) } } if(clk("ChecktoClose")) { #Entity Discovery findByClass("player") PlayersInRange = findClipToSphere(entity():pos(), 75) if(!PlayersInRange) { soundStop("DoorOpen") entity():setAlpha(255) entity():setSolid(1) soundPlay("DoorClosed", 0, "doors/door_metal_thin_open1.wav") } else { timer("ChecktoClose",1000) } }
Prop Direction Finder
@name Prop-Direction Finder @inputs @outputs @persist Prop:entity @trigger #Startup if(first()) { if(entity():isConstrained()) { print("Prop Detected, calculating prop's orientation.") Prop = entity():isConstrainedTo() #Forward holoCreate(1) holoModel(1,"hq_icosphere") holoPos(1,Prop:pos()+Prop:forward()*(10+Prop:boxSize():x())) holoColor(1,vec(255,0,0)) holoScale(1, vec(1,1,1)*(Prop:radius()/100)) holoParent(1,Prop) Direction = holoEntity(1):pos() - Prop:pos() #Up holoCreate(2) holoModel(2,"hq_icosphere") holoPos(2,Prop:pos()+Prop:up()*(10+Prop:boxSize():z())) holoColor(2,vec(0,255,0)) holoScale(2, vec(1,1,1)*(Prop:radius()/100)) holoParent(2,Prop) #Right holoCreate(3) holoModel(3,"hq_icosphere") holoPos(3,Prop:pos()+Prop:right()*(10+Prop:boxSize():y())) holoColor(3,vec(0,0,255)) holoScale(3, vec(1,1,1)*(Prop:radius()/100)) holoParent(3,Prop) print((10+Prop:boxSize():y())) } else { print("Please place on prop, not ground.") selfDestruct() } }
Third-person Camera
# Author: Steeveeo # Updated: November 19, 2010 @ 11:03 PM PST (-8 GMT) # Use and Purpose: # Hide this chip somewhere and say "camera: on" to change your # view to an over-the-shoulder third-person camera. Say # "camera: off" or undo the chip to turn this off. # # Note: This is also useful for if your camera gets screwed up # by those pesky CamControllers, or if you want to learn how # powerful the SetView function is. # Fair Use and Legality: # This chip is provided as is and is designed to work only # as instructed. This is provided under Creative Commons and # may be modified and/or shared with anyone as long as proper # credit is given to the original author (Steeveeo). Failure to # give credit by plagiarising or removing this header is subject # to administrative punishment. @name Third-Person Cam @inputs @outputs @persist On @trigger runOnChat(1) if(chatClk(owner())) { #Chat Parsing LastSaid = lastSaid():lower() Command = LastSaid:explode(": "):string(1) Args = LastSaid:explode(": "):string(2):explode(", ") if(Command == "camera") { if(Args[1,string] == "on") { if(!On) { On = 1 timer("Apply Camera",100) } else { print("[TPC] - Camera Already Active!") } } elseif(Args[1,string] == "off") { On = 0 stoptimer("Death Check") stoptimer("Respawn Check") timer("Remove Cam",100) } else { print("Argument Not Recognized") } } } #Remove Camera if(last()|clk("Remove Cam")) { owner():setView(0,vec(),ang()) } #Set up the camera if(clk("Apply Camera")) { #Camera Position Multiplier = owner():height()/75 #Default height is 72 CamPos = owner():pos() CamPos -= owner():forward()*(75*Multiplier*2) CamPos += owner():up()*(75*Multiplier) CamPos += owner():right()*(15*Multiplier) CamAng = ((owner():pos()+vec(0,0,owner():height())) - (CamPos-owner():right()*(15*Multiplier))):toAngle() owner():setView(1,CamPos,CamAng) Cam = getSetViewEnt() Cam:parentTo(owner()) timer("Death Check",100) } #Check for user death if(clk("Death Check")) { if(changed(owner():isAlive()) & !owner():isAlive()) { timer("Remove Cam",100) timer("Respawn Check",100) } else { timer("Death Check",100) } } #Check if respawned after death if(clk("Respawn Check")) { if(owner():isAlive()) { timer("Apply Camera",100) } else { timer("Respawn Check",100) } }
Holo Propeller Controller
# Author: Steeveeo # Updated: Jan 29, 2011 @ 12:17 AM PST (-8 GMT) # Use and Purpose: # This chip uses holoModel to create lagless spinning fans # for helicopters, planes, steampunk airships, and anything in # between. First, place all of your fans on your ship by welding # them where you want them (don't bother axising, just weld). # Then take an Advanced Entity Marker and hook in all of your # fans. Wire up accordingly. # # Inputs work in the following manner: # Fans [ARRAY] - Advanced Ent Marker holding all your fans # SpeedAll - Base Speed for all fans (added to # FanSpeed[Index,number]). # # Outputs: # Channel [STRING] - This is the name of the gTable that controls # individual fan speed. I would do this over a # normal wire, but arrays just don't work in # that medium. Speed index == Fan index. # Fair Use and Legality: # This chip is provided as is and is designed to work only # as instructed. This is provided under Creative Commons and # may be modified and/or shared with anyone as long as proper # credit is given to the original author (Steeveeo). Failure to # give credit by plagiarising or removing this header is subject # to administrative punishment. @name HoloPropeller Controller @inputs Fans:array SpeedAll @outputs Channel:string @persist FanSpeed:gtable SetupStep @trigger runOnLast(1) #Startup if(first()|dupefinished()|changed(Fans:count())) { #Remove existing holos holoDeleteAll() Channel = "HoloPropeller_" + entity():toString() FanSpeed = gTable(Channel,0) #Create Propellers SetupStep = 1 timer("Fan Setup",100) timer("Rotate",25) } #Build all fans if(clk("Fan Setup")) { #Loop through and create replacement holos Fan = Fans[SetupStep,entity] #Find parent of the fan, if any, so we know what to #stick the holo on. if(Fan:parent()) { Parent = Fan:parent() } else { Parent = Fan } holoCreate(SetupStep) holoModel(SetupStep,Fan:model()) holoMaterial(SetupStep,Fan:getMaterial()) holoColor(SetupStep,Fan:getColor()) holoAng(SetupStep,Fan:angles()) holoPos(SetupStep,Fan:pos()) holoParent(SetupStep,Parent) holoShadow(SetupStep,1) Fan:setAlpha(0) #Next Pass SetupStep++ if(SetupStep <= Fans:count()) { timer("Fan Setup",100) } } #Shutdown if(last()) { #Restore all prop fans for(Index = 1, Fans:count()) { Fan = Fans[Index,entity] Fan:setAlpha(255) } } #Spin the fan if(clk("Rotate")) { for(Index = 1, Fans:count()) { Speed = FanSpeed[Index,number] holoAng(Index,holoEntity(Index):toWorld(ang(0,0,Speed*SpeedAll))) } timer("Rotate",25) }
Atmospheric Probe
# Author: Steeveeo # Updated: May 2, 2010 @ 5:37 AM PST (-8 GMT) # Use and Purpose: # This chip can be placed anywhere and will output and display # the current atmospheric stats. # Fair Use and Legality: # This chip is provided as is and is designed to work only # as instructed. This is provided under Creative Commons and # may be modified and/or shared with anyone as long as proper # credit is given to the original author (Steeveeo). Failure to # give credit by plagiarising or removing this header is subject # to administrative punishment. @name Atmospheric Probe @inputs @outputs Name:string Size:string Gravity Temperature O2Percent O2Volume CO2Percent CO2Volume NitroPercent NitroVolume HydroPercent HydroVolume Vacuum Volume UnUsedVolume @persist OverlayText:string @trigger interval(5000) #Startup if(first()) { OverlayText = "" timer("Startup",500) } #Problems with duping, reset chip if(duped()) { reset() } #Compile Atmosphere Data if(clk()|clk("Startup")) { soundStop("Active") #Ping if in a viable atmosphere if(Name & Name != "Space") { soundPlay("Active", 0.5, "RD/pump/beep-3.wav",0.75) #Accidental Sonar effect FTW! } #Else Warn else { soundPlay("Active", 0.5, "buttons/blip2.wav") } #Check if real atmo or climate reg. if(entity():lsName() == "No Name") { Name = "Regulated Climate" } else { Name = entity():lsName() } #If an atmosphere is detected, read it (and don't redbrick in space). if(Name & Name != "Space") { Size = entity():lsSize():toString() + " units" Temperature = entity():lsTemperature() Gravity = entity():lsGravity() O2Percent = entity():lsO2Percent() O2Volume = entity():lsO2Amount() CO2Percent = entity():lsCO2Percent() CO2Volume = entity():lsCO2Amount() NitroPercent = entity():lsNPercent() NitroVolume = entity():lsNAmount() HydroPercent = entity():lsHPercent() HydroVolume = entity():lsHAmount() Vacuum = entity():lsEmptyAirPercent() Volume = entity():lsVolume() UnUsedVolume = entity():lsEmptyAirAmount() } else { Size = "Undetectable" Temperature = entity():lsTemperature() Gravity = 0 O2Percent = 0 O2Volume = 0 CO2Percent = 0 CO2Volume = 0 NitroPercent = 0 NitroVolume = 0 HydroPercent = 0 HydroVolume = 0 Vacuum = 100 UnUsedVolume = 0 } #Overlay Text (Tooltip) OverlayText = "- " + Name + " -\n" OverlayText += "Size: " + Size + "\n" OverlayText += "Temperature: " + round(Temperature*100)/100 + "K\n" OverlayText += "Gravity: " + round(Gravity*100)/100 + "\n" OverlayText += "Oxygen: " + round(O2Percent*100)/100 + "% (" + round(O2Volume) + ")\n" OverlayText += "Carbon Dioxide: " + round(CO2Percent*100)/100 + "% (" + round(CO2Volume) + ")\n" OverlayText += "Nitrogen: " + round(NitroPercent*100)/100 + "% (" + round(NitroVolume) + ")\n" OverlayText += "Hydrogen: " + round(HydroPercent*100)/100 + "% (" + round(HydroVolume) + ")\n" OverlayText += "Vacuum: " + round(Vacuum*100)/100 + "% (" + round(UnUsedVolume) + ")" setName(OverlayText) } #if(first()|clk("Overlay")) #{ # #Set Tooltip # entity():setOverlayText(OverlayText) # timer("Overlay",10) #}
This is a block of text that can be added to posts you make. There is a 255 character limit.
Lλmbdλ: donations for coding the space future of diaspora :>
Get your extra long EVE trial here!
Lλmbdλ: donations for coding the space future of diaspora :>
Get your extra long EVE trial here!
Comments