| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

GNU Expressions

Page history last edited by Katlatze 14 years, 8 months ago

Warning: This page is EXTREMELY outdated, but could prove useful in the future.

 

To use these expressions: 

Make a folder in garrysmod/data named Expression2.

Create a .txt file, and copy-paste the expression into it, save.

Go to the E2 Stool ingame, and hit Update at the bottom of the list of files.

Click the expression in the list to load it, then fire it where you want.

 

You can update expressions simply by loading the new one, and shooting the old one. *unless the names of the inputs/outputs have changed*, all wiring will remain.


Nolphins:

The Nebcorp general all purpose Nolphin chip, v3.5, dumped February 3rd.

Notes: Make sure the prop you're placing the chip on has been rotated to world (shift-E), so the chip is also straight on the prop, for best results. North East South West refer to thrusters in front of the chip, to the right of, etc. Rear is the thruster you'd expect moves it forward. Right is on the center-right of the prop. FLSide is Front Left Side thruster, for turning. As a rule of thumb, thruster's power should be ~1/5th total weight of the contraption (Power 20 for a platform of 100). Tip for Noming strangely shaped objects: Nom a PHX platform of the largest size appropriate (bigger = more stable in all cases), then weld it.

 

New: Now with instructions in #comments! 

New: Adding configs at the top of the Expression, for choosing the mode that best suits your vessel.

New: GPS tracking!

New: I actually went through and commented most of the parts for easy reference.

New: Leaning now actually makes sense (tilts up when going up, etc)

New: Now FAR more drift resistant when going at angles that aren't straight perfect up. Nolphin can operate at pretty much any orientation now. (no more LOL I'M A TURTLE STUCK UPSIDE DOWN RAMMING THE FLOOR)

New: MOAR CONFIGS, and they actually make sense now.

New: Non-fixed Z! (doesn't force height like hoverballs, readjusts to new elevation if physgunned or slammed)

@name Nebcorp Nolphin CPU
@inputs W A S D Up Down OnOff ForceOff ForceOn X Y Z
@outputs North East South West Rear Right FLSide On
@persist Roll Yaw Pitch P2 R2 Engines ForceOn
@persist ZThrust DiffZ InternalZ ZForce AddedZ Z2 For2
@persist YForce YAdjust LocalX LocalY
#Nebcorp automatic self-righting hovering gyrations and maneuverabilities calculation chip 
##Version 3.5##
#Most recent time I adjusted the date: 
##Jan 30, 12pm##
###<< Configuration >>#
RollLeaning = 1  #0 off, 1 on
PitchLeaning = 1  #0 off, 1 on
RSpeed = 2  #0.2 - 6, The primary speed control for forward/back motions. Default 1
TSpeed = 1.4  #0.2 - 4, The turning speed control. Default 1
ZAcceleration = 1  #0.2 - 4, The speed of acceleration of going up/down. Default 1
ZTopSpeed = 1  #0.2 - 3, The top speed going up/down. Default 1
Friction = 5  #1 - 60, higher being less of an effect. Controls how quickly the ship stops.
#Yaw (turning) Mode:
#1: "Friction based", ideal for more realistic turning (if you are spun, the ship stabalizes but does not revert to your desired Yaw)
#2: "Forced Yaw", ideal for more controlled turning (if you are spun, the ship remembers what Yaw you were at before)
#Suggested for 2: Spaceships; Large Air Based; Anything with Topspeed > 70kph
#Suggested for 1: Small air based; ground based
YawMode = 1
###<< End of Configuration >>#
#NOTES ON INPUTS:
#WASD/Up/Down: Does not need to be from an APC. Only send values of 1 or 0 for each. 
#OnOff toggles the internal engine; Force simply sets the engine.
#Z overrides the height controls and simply hovers at the inputted height.
#THRUSTER ORIENTATIONS:
#Thrusters's power should be about 1/10th-1/15th the total weight of the contraption.
#Thrusters's weight should be AT LEAST 1/100th the total weight (not counting other thrusters).
#Thrusters should be prepared as follows, facing up (Names prefixed by _'s mean on the side of the surface)
#
#       _FLSide North
#
#       West    CHIP    East _Right
#
#               South
#               _Rear
#
#To use XYZ tracking Mode:
#Wire up your desired location to the inputs of XYZ, and the Nolphin will swiftly fly there.
GPSMode = (X & Y & Z) #Becomes off if any of these are unwired, on if all
#Declares common variables
interval(20)
On = Engines
Off = !Engines
Pitch = entity():angles():pitch()
Yaw = entity():angles():yaw()
Roll = entity():angles():roll()
TarR=(($Roll)*8+Roll) + (R2 *0.45 *PitchLeaning)
TarP=(($Pitch)*8+Pitch) - (P2 *PitchLeaning)
#Power settings
if(~OnOff & OnOff) {Engines = !Engines}
if(ForceOff) {Engines = 0} 
if(ForceOn) {Engines = 1} elseif(~ForceOn & !ForceOn) {Engines = 0}
#Forward Thrust, smoothened
For1=(W-S)*100
if(For2 > For1) {if(For1 == 0 | (For1 == -100 & (For2 > 0))) {For2 -= 2.1} else{For2 -= 0.70}}
if(For1 > For2) {if(For1 == 0 | (For1 == 100 & (For2 < 0))) {For2 += 2.1} else{For2 += 0.70}}
if(For2 < 1 & For2 > 0) {Forward = 0} else{Forward = For2 / 333}
#Additional Z to add, smoothened
Z3 = ZTopSpeed * 100
Z1=(Up-Down)* Z3
if(Z2 > Z1) {if(Z1 == 0 | (Z1 == -Z3 & (Z2 > 0))) {Z2 -= 0.84 * ZAcceleration} else{Z2 -= 0.28 * ZAcceleration}}
if(Z1 > Z2) {if(Z1 == 0 | (Z1 == Z3 & (Z2 < 0))) {Z2 += 0.84 * ZAcceleration} else{Z2 += 0.28 * ZAcceleration}}
if(Z2 < 1 & Z2 > 0) {ZForce = 0} else{ZForce = Z2 / 5}
AddedZ += ZForce
#Additional Pitch, smoothened
if(ZForce > 15) {P2 = 45} elseif(ZForce < -15) {P2 = -45} else{P2 = ZForce * 3}
#Additional Roll, smoothened
R1 = (D - A) * 100
if((R2 < R1) & (R2 > R1 + 1)) {R2 = 0} 
elseif(R2 > R1) {if(R1==0 | (R1 == -100 & (R2 > 0))) {R2 -= 0.9} else{R2 -= 0.3}} 
elseif(R1 > R2) {if(R1==0 | (R1 == 100 & (R2 < 0))) {R2 += 0.9} else{R2 += 0.3}}
#Z Control
if(InternalZ == 0) {InternalZ = entity():pos():z() + 35}
if(Z != 0) { #If we're recieving a target Z to go to, go.
DiffZ = Z - entity():pos():z()
ZThrust = -(DiffZ + $DiffZ * 15)  
} else { #Otherwise, default to current position.
DiffZ = InternalZ - entity():pos():z() + AddedZ
if(DiffZ > 28) {AddedZ -= (DiffZ - 28)} #Resets if we're waaay below target.
elseif(DiffZ < -28) {AddedZ -= (DiffZ + 28)} #Resets if we're waaay above target.
ZThrust = -(DiffZ + $DiffZ * 5)}
#Allows Z to work regardless of orientation
UpNZThrust = ZThrust * (1 - entity():forward():z())
UpSZThrust = ZThrust * (1 + entity():forward():z())
UpEZThrust = ZThrust * (1 - entity():right():z())
UpWZThrust = ZThrust * (1 + entity():right():z())
if(entity():forward():z() < 0.03) {RearZThrust = -25 *3 * -entity():forward():z()} else{RearZThrust = 0}
RightZThrust = R2 *3.7 * -entity():right():z()
if(RightZThrust > 20) {RightZThrust2 = 20} elseif(RightZThrust < -20) {RightZThrust2 = -20} else{RightZThrust2 = RightZThrust}
#Angle/Height thrusters
North = UpNZThrust + (TarP * 2)
East = UpEZThrust + (TarR * 2)
South = UpSZThrust - (TarP * 2)
West = UpWZThrust - (TarR * 2)
#XY OR Friction, Rear/Right Maneouverability Thrusters
if(GPSMode == 0) { #Friction mode
XFriction = entity():velL():x() / Friction
if(XFriction < 0 & !W) {XSlow = XFriction} elseif(XFriction > 0 & !S) {XSlow = XFriction} else{XSlow = 0} 
Rear = 40 * Forward * RSpeed + XSlow - RearZThrust
Right = (entity():velL():y() / Friction) + RightZThrust2  
}
elseif(GPSMode == 1) { #XY tracking Mode
SubtractedV = vec(X - entity():pos():x(), Y - entity():pos():y(), Z - entity():pos():z())
LocalX = SubtractedV:dot(entity():forward())
LocalY = SubtractedV:dot(entity():right())
Rear =  (  (-($LocalX*4 + LocalX) / 7.5) + (entity():velL():x() / Friction)  ) / 2
Right = (  (($LocalY*4 + LocalY) / 7.5) + (entity():velL():y() /Friction)  ) /2  
}
#Yaw, FLSide thruster
if(YawMode == 1) { #Friction based
FLSide = (D - A) * (1 + For2 / 60) + ((!A & !D) * entity():angVel():yaw() / Friction) }
elseif(YawMode == 2) { #Forced Yaw based
if(!Engines) {YForce = -Yaw}
YForce += (D - A) * 1.4 * TSpeed
if(YForce < -179) {YForce = 179}
if(YForce > 179) {YForce = -179}
YAdjust = angnorm(Yaw + YForce)
FLSide = (($YAdjust) * 10 + YAdjust) *1.5 *TSpeed}
else{FLSide = (D - A) * TSpeed} #Default to basic
#Turns it off + resets
if(!Engines) {AddedZ = 0, InternalZ = entity():pos():z()+35, Z2 = 0, For2 = 0
North = 0, East = 0, South = 0, West = 0, Rear = 0, Right = 0, FLSide = 0, ZThrust = 0}

 

Other Thruster Based chips:

 Recieves a target XYZ, outputs instructions for a Vector Thruster to take you there.

@name Vectorizer
@inputs X Y Z Off
@outputs VThruster:vector
@persist
#Inputs XYZ are your target location. 
#The Vector output should be wired to a Vector Thruster (set to World XYZ) and will push towards the location.
#Possible sources of XYZ: Beacon sensor tracking a player, Laser Pointer Reciever, GPS
AddThisMuchExtraHeight = 0
VThruster = vec(entity():pos():x() - X, entity():pos():y() - Y, entity():pos():z() - Z + AddThisMuchExtraHeight)
if(Off) {VThruster = vec(0,0,0)
interval(20) 

 


 

Spacebuild Products:

A deluxe fuel gauge (shows percents) for Spacebuild 2.

Also can be used to regulate generators (turns off Air generators when theres plenty of air) and then intellegently keeps them off until you need the resource again, or to control your Life support (turns off space shield if theres no coolant, turns off AC if low power to preserve the space shield, etc)


@name Nebcorp Fuel Gauge Deluxe 2
@inputs Air MaxAir Coolant MaxCoolant Energy MaxEnergy EverythingOff ACOff ShieldsOff
@outputs EPercent AirPercent CoolantPercent EnergyPercent Fuel FuelLowAlarm AC SpaceShield CoolantCompressor OxyGenerator EnergyGenerator
@persist 
interval(500)
APercent = round((Air / MaxAir * 100), 1)
CPercent = round((Coolant / MaxCoolant * 100), 1)
EPercent = round((Energy / MaxEnergy * 100), 1)
if(APercent < 0.75 | CPercent < 1 | EPercent < 1.5) {FuelLowAlarm = 1} else{FuelLowAlarm = 0}
if(APercent < CPercent) {Fuel = APercent} else{Fuel = CPercent}
if(Fuel > EPercent) {Fuel = EPercent}
if(APercent < 30 & EPercent > 3) {OxyGenerator = 1}
if(APercent > 98 | EPercent < 1) {OxyGenerator = 0}
if(CPercent < 30 & EPercent > 3) {CoolantCompressor = 1}
if(CPercent > 98 | EPercent < 1) {CoolantCompressor = 0}
if(EPercent < 30) {EnergyGenerator = 1}
if(EPercent > 98) {EnergyGenerator = 0}
if(CPercent < 0.3 | EnergyPercent < 0.2) {SpaceShield = 0} else{SpaceShield = 1}
if(APercent < 0.5 | CPercent < 0.8 | EPercent < 1) {AC = 0}
if(APercent > 1 | CPercent < 1.2 | EPercent < 1.5) {AC = 1}
if(EverythingOff) {OxyGenerator = 0, CoolantCompressor = 0, SpaceShield = 0, AC = 0}
if(ACOff) {AC = 0}
if(ShieldsOff) {SpaceShield = 0}
if(APercent > 99.8) {AirPercent = 100} else{AirPercent = APercent}
if(EPercent > 99.8) {EnergyPercent = 100} else{EnergyPercent = EPercent}
if(CPercent > 99.8) {CoolantPercent = 100} else{CoolantPercent = CPercent}

The above fuel gauge, for Spacebuild 3

@name Nebcorp Fuel Gauge Deluxe 3
@inputs Energy MaxEnergy Oxygen MaxOxygen Water MaxWater Nitrogen MaxNitrogen Hydrogen MaxHydrogen CarbonDioxide MaxCarbonDioxide EverythingOff ACOff
@outputs FuelPercent FuelLowAlarm GlobalOn EnergyGenerator OxygenGenerator WaterGenerator NitrogenGenerator HydrogenGenerator CarbonDioxideGenerator
@persist 
interval(500)
OPercent = round((Oxygen / MaxOxygen * 100), 1)
WPercent = round((Water / MaxWater * 100), 1)
NPercent = round((Nitrogen / MaxNitrogen * 100), 1)
HPercent = round((Hydrogen / MaxHydrogen * 100), 1)
CDPercent = round((CarbonDioxide / MaxCarbonDioxide * 100), 1)
EPercent = round((Energy / MaxEnergy * 100), 1)
GlobalOn = !EverythingOff
if(OPercent < 0.75 | WPercent < 1 | EPercent < 1.5) {FuelLowAlarm = 1} else{FuelLowAlarm = 0}
if(OPercent < WPercent) {FuelPercent = OPercent} else{FuelPercent = WPercent}
if(FuelPercent > EPercent) {FuelPercent = EPercent}
if(OPercent < 30 & EPercent > 3) {OxygenGenerator = 1}
if(OPercent > 98 | EPercent < 1) {OxygenGenerator = 0}
if(NPercent < 30 & EPercent > 3) {NitrogenGenerator = 1}
if(NPercent > 98 | EPercent < 1) {NitrogenGenerator = 0}
if(HPercent < 30 & EPercent > 3) {HydrogenGenerator = 1}
if(HPercent > 98 | EPercent < 1) {HydrogenGenerator = 0}
if(CDPercent < 30 & EPercent > 3) {CarbonDioxideGenerator = 1}
if(CDPercent > 98 | EPercent < 1) {CarbonDioxideGenerator = 0}
if(WPercent < 30 & EPercent > 3) {WaterGenerator = 1}
if(WPercent > 98 | EPercent < 1) {WaterGenerator = 0}
if(EPercent < 30) {EnergyGenerator = 1}
if(EPercent > 98) {EnergyGenerator = 0}
if(OPercent < 0.5 | WPercent < 0.8 | EPercent < 1) {AC = 0}
if(OPercent > 1 | WPercent < 1.2 | EPercent < 1.5) {AC = 1}
if(EverythingOff) {OxygenGenerator = 0, WaterGenerator = 0, HydrogenGenerator = 0, NitrogenGenerator = 0, CarbonDioxideGenerator = 0, AC = 0}
if(ACOff) {AC = 0}

Miscellaneous

This is a video game Expression I made for use in the lounge of the behemoth.
Instructions: To hook this up, you need a screen consisting of fifteen pixels. Three across, five down. From left to right, then top to buttom, they are to be wired to AA, AB, AC, BA, etc all the way to EA, EB, and EC. Wire "Score" and "Lives to a wire screen that can be viewed by the player.
For Inputs, wire the Randomizer to a round gate, then wire the round gate to a random value between 0 and 3. Then wire the B1, B2, and B3 to whatever control configuration you plan to use. I personally used an advanced pod controller. Wire reset can also be set to whatever you wish, though I personally wired it to a not gate, then the not gate to the "Active" output of the pod controller.
The goal of the game is to move the bottum pixel to catch the ones coming from the top. You have three lives to get as high a score as you can.
@name Ball_Cather_Game
@inputs Randomizer B1 B2 B3 Reset
@outputs AA AB AC BA BB BC CA CB CC DA DB DC Score Lives
@persist A B C D
interval(1000)
if(Reset){Score=0, Lives=3, A=0, B=0, C=0, D=0, AA=0, AB=0, AC=0, BA=0, BB=0, BC=0, CA=0, CB=0, CC=0, DA=0, DB=0, DC=0}
else{if(Lives>0&(!~Randomizer&!~B1&!~B2&!~B3))
{
if(B1+B2+B3>1){Score-=2}
if((DA&B1)|(DB&B2)|(DC&B3)){Score++}
else{if(D!=0){Lives--}}
D=C
C=B
B=A
A=Randomizer
AA=(A==1), AB=(A==2), AC=(A==3)
BA=(B==1), BB=(B==2), BC=(B==3)
CA=(C==1), CB=(C==2), CC=(C==3)
DA=(D==1), DB=(D==2), DC=(D==3)
}}

Nebcorp Jukebox v3.1, February 9th

Plays through a list of 43 songs, automatically playing the next when the previous completes. Anything may be used as a speaker, just wire something showing your target's EntID (ranger) or Entity:entity data (target finder). (Or whatever its attached to, aka default).

New: Now semi-server based. If more than one jukebox exist, they will all play the same song.

New: Semi-server actually works, now defaults to attached prop if no inputs given.

 

@name Nebcorp Jukebox 
@inputs On Next EntID EntityIn:entity
@outputs Current Timer Duration Role:string S:entity
@persist OldTime Current Duration Current2 Current3 Current4 PropB:entity
#IMPORTANT:
NumberOfSongs = 43

interval(20)
if(EntID) {Entity = entity(EntID)}
elseif(EntityIn) {Entity = EntityIn}
else{R = ranger(-25):entity(), if(R != entity() & R) {PropB = R}, Entity = PropB}

#SERVER ASPECTS
gSetGroup("Muzak")
#Checks to see if theres already a server, if not sets self as server
if(gGetNum("Server") == 0 | entity(gGetNum("Server")):type() != "gmod_wire_expression2") 
{gSetNum("Server", entity():id())}
#Actually processes what songs should be played
if(gGetNum("Server") == entity():id()) {
Timer = curtime() - OldTime
if(Duration + 1.5 < Timer) {Ended = 1}
if(Ended | (~Next & Next)) 
{Current3 = ceil(random(0.01, NumberOfSongs)), OldTime = curtime(), Ended = 0}
gSetNum("Current3", Current3)
Role = "Servering"
}
#END SERVER ASPECTS 
#CLIENT ASPECTS
else{Current3 = gGetNum("Current3"), Role = "Clienting", E = entity(gGetNum("Server"))}
if(On) {Current = Current3} else{Current = 0, Current2 = 0}
#End Client

#BEGIN ACTUAL SONG LISTING

if((Current != Current2) & Current == 1) {
Duration = 71
Entity:soundPlay("Song1", Duration, "ui/gamestartup1.mp3")}
elseif(Current != 1) {soundStop("Song1"), 1}
#
if((Current != Current2) & Current == 2) {
Duration = 241 
Entity:soundPlay("Song2", Duration, "ui/gamestartup2.mp3")} 
elseif(Current != 2) {soundStop("Song2"), 1}
#
if((Current != Current2) & Current == 3) {
Duration = 139 
Entity:soundPlay("Song3", Duration, "music/HL2_song20_submix4.mp3")} 
elseif(Current != 3) {soundStop("Song3"), 1} 
#
if((Current != Current2) & Current == 4) {
Duration = 73 
Entity:soundPlay("Song4", Duration, "music/HL2_song12_long.mp3")} 
elseif(Current != 4) {soundStop("Song4"), 1}
#
if((Current != Current2) & Current == 5) {
Duration = 170
Entity:soundPlay("Song5", Duration, "music/HL2_song16.mp3")} 
elseif(Current != 5) {soundStop("Song5"), 1}
#
if((Current != Current2) & Current == 6) {
Duration = 99 
Entity:soundPlay("Song6", Duration, "music/VLVX_song04.mp3")} #Ep1
elseif(Current != 6) {soundStop("Song6"), 1}
#
if((Current != Current2) & Current == 7) {
Duration = 114
Entity:soundPlay("Song7", Duration, "music/HL2_song29.mp3")} 
elseif(Current != 7) {soundStop("Song7"), 1} 
#
if((Current != Current2) & Current == 8) {
Duration = 81
Entity:soundPlay("Song8", Duration, "music/HL2_song1.mp3")}
elseif(Current != 8) {soundStop("Song8"), 1}
#
if((Current != Current2) & Current == 9) {
Duration = 124
Entity:soundPlay("Song9", Duration, "music/VLVX_song20.mp3")}
elseif(Current != 9) {soundStop("Song9"), 1}
#
if((Current != Current2) & Current == 10) {
Duration = 62
Entity:soundPlay("Song10", Duration, "music/VLVX_song0.mp3")}
elseif(Current != 10) {soundStop("Song10"), 1}
#
if((Current != Current2) & Current == 11) {
Duration = 107
Entity:soundPlay("Song11", Duration, "music/VLVX_song15.mp3")}
elseif(Current != 11) {soundStop("Song11"), 1}
#
if((Current != Current2) & Current == 12) {
Duration = 194
Entity:soundPlay("Song12", Duration, "music/VLVX_song22.mp3")}
elseif(Current != 12) {soundStop("Song12"), 1}
#
if((Current != Current2) & Current == 13) {
Duration = 166
Entity:soundPlay("Song13", Duration, "music/VLVX_song23.mp3")}
elseif(Current != 13) {soundStop("Song13"), 1}
#
if((Current != Current2) & Current == 14) {
Duration = 127
Entity:soundPlay("Song14", Duration, "music/VLVX_song24.mp3")}
elseif(Current != 14) {soundStop("Song14"), 1}
#
if((Current != Current2) & Current == 15) {
Duration = 167
Entity:soundPlay("Song15", Duration, "music/VLVX_song25.mp3")}
elseif(Current != 15) {soundStop("Song15"), 1}
#
if((Current != Current2) & Current == 16) {
Duration = 110
Entity:soundPlay("Song16", Duration, "music/VLVX_song26.mp3")}
elseif(Current != 16) {soundStop("Song16"), 1}
#
if((Current != Current2) & Current == 17) {
Duration = 209
Entity:soundPlay("Song17", Duration, "music/VLVX_song27.mp3")}
elseif(Current != 17) {soundStop("Song17"), 1}
#
if((Current != Current2) & Current == 18) {
Duration = 194
Entity:soundPlay("Song18", Duration, "music/VLVX_song28.mp3")}
elseif(Current != 18) {soundStop("Song18"), 1}
#
if((Current != Current2) & Current == 19) {
Duration = 74
Entity:soundPlay("Song19", Duration, "music/VLVX_song9.mp3")}
elseif(Current != 19) {soundStop("Song19"), 1}
#
if((Current != Current2) & Current == 20) {
Duration = 95
Entity:soundPlay("Song20", Duration, "music/VLVX_song3.mp3")}
elseif(Current != 20) {soundStop("Song20"), 1}
#
if((Current != Current2) & Current == 21) {
Duration = 58
Entity:soundPlay("Song21", Duration, "music/portal_4000_degrees_kelvin.mp3")}
elseif(Current != 21) {soundStop("Song21"), 1}
#
if((Current != Current2) & Current == 22) {
Duration = 226
Entity:soundPlay("Song22", Duration, "music/portal_android_hell.mp3")}
elseif(Current != 22) {soundStop("Song22"), 1}
#
if((Current != Current2) & Current == 23) {
Duration = 245
Entity:soundPlay("Song23", Duration, "music/portal_no_cake_for_you.mp3")}
elseif(Current != 23) {soundStop("Song23"), 1}
#
if((Current != Current2) & Current == 24) {
Duration = 261
Entity:soundPlay("Song24", Duration, "music/portal_party_escort.mp3")}
elseif(Current != 24) {soundStop("Song24"), 1}
#
if((Current != Current2) & Current == 25) {
Duration = 72
Entity:soundPlay("Song25", Duration, "ambient/guit1.wav")} # From CSS
elseif(Current != 25) {soundStop("Song25"), 1}
#
if((Current != Current2) & Current == 26) {
Duration = 211
Entity:soundPlay("Song26", Duration, "music/portal_self_esteem_fund.mp3")}
elseif(Current != 26) {soundStop("Song26"), 1}
#
if((Current != Current2) & Current == 27) {
Duration = 240
Entity:soundPlay("Song27", Duration, "music/portal_stop_what_you_are_doing.mp3")}
elseif(Current != 27) {soundStop("Song27"), 1}
#
if((Current != Current2) & Current == 28) {
Duration = 186
Entity:soundPlay("Song28", Duration, "music/portal_taste_of_blood.mp3")}
elseif(Current != 28) {soundStop("Song28"), 1}
#
if((Current != Current2) & Current == 29) {
Duration = 104
Entity:soundPlay("Song29", Duration, "music/portal_subject_name_here.mp3")}
elseif(Current != 29) {soundStop("Song29"), 1}
#
if((Current != Current2) & Current == 30) {
Duration = 384
Entity:soundPlay("Song30", Duration, "music/portal_you_cant_escape_you_know.mp3")}
elseif(Current != 30) {soundStop("Song30"), 1}
#
if((Current != Current2) & Current == 31) {
Duration = 84
Entity:soundPlay("Song31", Duration, "music/portal_youre_not_a_good_person.mp3")}
elseif(Current != 31) {soundStop("Song31"), 1}
#
if((Current != Current2) & Current == 32) {
Duration = 40
Entity:soundPlay("Song32", Duration, "ambient/office/OfficeNews.wav")} # From CSS
elseif(Current != 32) {soundStop("Song32"), 1}
#
if((Current != Current2) & Current == 33) {
Duration = 80
Entity:soundPlay("Song33", Duration, "ambient/music/country_rock_am_radio_loop.wav")} # From CSS
elseif(Current != 33) {soundStop("Song33"), 1}
#
if((Current != Current2) & Current == 34) {
Duration = 50
Entity:soundPlay("Song34", Duration, "ambient/music/cubanmusic1.wav")} # From CSS
elseif(Current != 34) {soundStop("Song34"), 1}
#
if((Current != Current2) & Current == 35) {
Duration = 80
Entity:soundPlay("Song35", Duration, "ambient/music/flamenco.wav")} # From CSS
elseif(Current != 35) {soundStop("Song35"), 1}
#
if((Current != Current2) & Current == 36) {
Duration = 70
Entity:soundPlay("Song36", Duration, "ambient/music/latin.wav")} # From CSS
elseif(Current != 36) {soundStop("Song36"), 1}
#
if((Current != Current2) & Current == 37) {
Duration = 73
Entity:soundPlay("Song37", Duration, "ambient/music/mirame_radio_thru_wall.wav")} # From CSS
elseif(Current != 37) {soundStop("Song37"), 1}
#
if((Current != Current2) & Current == 38) {
Duration = 15
Entity:soundPlay("Song38", Duration, "ambient/intro/Explosion02.wav")} #From Ep1
elseif(Current != 38) {soundStop("Song38"), 1}
# 
if((Current != Current2) & Current == 39) {
Duration = 78
Entity:soundPlay("Song39", Duration, "music/VLVX_song11.mp3")} #From Ep1
elseif(Current != 39) {soundStop("Song39"), 1}
# 
if((Current != Current2) & Current == 39) {
Duration = 78
Entity:soundPlay("Song39", Duration, "music/VLVX_song11.mp3")} #From Ep1
elseif(Current != 39) {soundStop("Song39"), 1}
# 
if((Current != Current2) & Current == 40) {
Duration = 120
Entity:soundPlay("Song40", Duration, "music/VLVX_song12.mp3")} #From Ep1
elseif(Current != 40) {soundStop("Song40"), 1}
# 
if((Current != Current2) & Current == 41) {
Duration = 152
Entity:soundPlay("Song41", Duration, "music/VLVX_song18.mp3")} #From Ep1
elseif(Current != 41) {soundStop("Song41"), 1}
# 
if((Current != Current2) & Current == 42) {
Duration = 169
Entity:soundPlay("Song42", Duration, "music/VLVX_song21.mp3")} #From Ep1
elseif(Current != 42) {soundStop("Song42"), 1}
# 
if((Current != Current2) & Current == 43) {
Duration = 4
Entity:soundPlay("Song43", Duration, "weapons/explode1.wav")} #From Ep1
elseif(Current != 43) {soundStop("Song43"), 1}
# 

Current2 = Current


 

Comments (4)

Kristler said

at 1:44 pm on Dec 21, 2008

Neb. We all knew this before, but ill say it again.

You.
Are.
Awesome.
and.
GOD.
At.
Exp2.

Thanks for uploading ^^!.

NEON725 said

at 8:43 pm on Jan 2, 2009

Goddamnit, I am a programmer! I should be uploading scripts and expressions!

NEON725 said

at 2:46 pm on Jan 22, 2009

My first uploaded expression is on this page now. Please comment.

(account deleted) said

at 4:14 pm on Jul 7, 2009

Penis.

You don't have permission to comment on this page.