http://dran.land/emitters.webmupdate, emitter script that gives me jet emitter:
function jet()
d = getClientByName("DrenDran"):getPlayer()
addEmitter("playerJetEmitter"):attachToDynamic(d,"Right_Foot")
addEmitter("playerJetEmitter"):attachToDynamic(d,"Left_Foot")
end
settings = {}
settings.texture = "assets/particles/cloud.png"
settings.color0 = "0.0 0.0 1.0 0.6"
settings.color1 = "1.0 0.46 0.0 0.5"
settings.color2 = "1.0 0.46 0.0 0.4"
settings.color3 = "1.0 0.0 0.0 0.0"
settings.size0 = 1.6
settings.size1 = 1.0
settings.size2 = 1.0
settings.size3 = 2.1
settings.time0 = 0
settings.time1 = 0.2
settings.time2 = 0.3
settings.time3 = 1
settings.drag = "0.2 0.2 0.2"
settings.gravity = "0 -5 0"
settings.inheritedVelFactor = 1
settings.lifetimeMS = 200
settings.lifetimeVarianceMS = 10
settings.spinSpeed = 1
settings.useInvAlpha = true
settings.needsSorting = true
addParticleType("playerJetParticle",settings)
settings = {}
settings.particles = "playerJetParticle"
settings.ejectionOffset = 0
settings.ejectionPeriodMS = 8
settings.ejectionVelocity = 5
settings.periodVarianceMS = 0
settings.phiReferenceVel = 0
settings.phiVariance = 360
settings.thetaMax = 3.1415
settings.thetaMin = 3.1415
settings.velocityVariance = 0
settings.uiName = "Player Jet"
addEmitterType("playerJetEmitter",settings)
Also a list of all functions on the server so far:
numVehicles = getNumVehicles()
x,y,z = brickCar:getPosition()
x,y,z = brickCar:getVelocity()
brickCar:setPosition(x,y,z)
brickCar:setVelocity(x,y,z)
client = brickCar:getOwner() - Returns nil if the creator has since left the server
numBricks = brickCar:getNumBricks()
brickCar = getBrickCarIdx(index)
brickCar:remove()
count = getNumBricks()
brick = getBrickIdx(index)
count = getNumNamedBricks(name)
brick = getNamedBrickIdx(name,idx)
brick = getBrickAt(x,y,z)
name = brick:getName()
width,length,height = brick:getDimensions()
r,g,b,a = brick:getColor()
x,y,z = brick:getPosition()
bool = brick:isSpecial() - Does it have it's own model as opposed to being a regular rectangular prism
id = brick:getTypeID() - Returns nil if isSpecial == false
client = brick:getOwner() - Only gets the owner if they're still online
brick:remove() - Removes the brick, using any lua reference to the old brick after deleting it will crash the server for now. Very fun.
brick:setColliding(bool)
brick:setColor(r,g,b,a)
brick:setPosition(x,y,z)
brick:setAngleID(angleID) - From 0 to 3
client = getClientIdx(index)
client = getClientByName(string)
client:setPlayer(dynamic)
client:toggleRotationControl(bool) - snaps the player's (if available) rotation to a rotation around Y axis equal to client's camera yaw
client:bindCamera(dynamic) - Set client's camera to follow a given dynamic object around
client:setCameraPosition(x,y,z) - Unbinds client's camera from dynamic if bound and fixes camera position
client:setCameraDirection(x,y,z) - Unbinds client's camera from dynamic if bound, direction has no effect if freelook == true
client:setCameraFreelook(bool) - Is the camera direction fixed? No effect if camera bound to dynamic
client:sendMessage(text,category) - Category is optional, but will allow the client to filter certain types of messages. CEGUI text formatting tags work here.
client:getNumBricks()
client:getBrickIdx(index)
name = client:getName()
howMany = client:getNumVehicles() - How many vehicles this client currently has on the map
client:spawnPlayer(x,y,z) - Removes old player and creates a new one, binds camera to it, and gives it a hammer and wrench
client = gcbn(string) - alias for getClientByName(string)
client:clearBricks() - Quickly clears all of a clients bricks
client:bottomPrint(text,timeoutMS) - Timeout can be 0 (to clear message) all the way up to 65534 milliseconds. CEGUI formatting tags can change text color and other properties.
echo(string) - Can accept and render CEGUI text formatting tags for display in client developer console.
saveBuildLod(filePath) - Saves all static bricks (i.e. the main build) to a file (do not add a file extension)
playSound(name,x,y,z,looping)
registerEventListener(eventName,functionName) - Will call your function any time a given event occurs allow you to change if and how the event fires
clearAllBricks() - Clears all of the bricks in the server
loadBlocklandSave(filePath) - Loads blockland BLS save at that given relative file path
unregisterEventListener(eventName,functionName) --- Disables a package
messageAll(text,category)
printNetIDs() - Puts how many objects of each type (i.e. vehicles, clients) have been allocated since server start.
clearAllCars() - Removes all built brick cars
bottomPrintAll(message,milliseconds) - calls bottomPrint on all clients
ScheduleID = Schedule(milliseconds,functionName) -- Calls named function if it exists in a certain amount of time
Cancel(scheduleID) - Cancels a schedule if it exists
dynamic = getDynamicIdx(index) - Find dynamic object at given index
dynamic:setGravity(x,y,z) - Set gravity of a particular object
dynamic:setVelocity(x,y,z)
dynamic = getPlayerByName(string) - returns a dynamic
num = getNumDynamics()
num = getNumClients()
dyanmic = client:getPlayer()
dynamic:setAngularFactor(x,y,z) - Sets if and how much a dynamic can be affected by rotations around a given axis from collisions and such
dynamic:setRotation(w,x,y,z) - A quaternion
dynamic:setPosition(x,y,z)
dynamic:setRestitution(restitution) - Sets how bouncy something is, 0 is not at all, 1 is normal, can go higher
dynamic:setAngularVelocity(x,y,z)
dynamic = addDynamic(typeID)
dynamic:setNodeColor(nodeName,r,g,b)
dynamic:setShapeName(name,red,green,blue) - You can also omit the color arguments if you want
dynamic:remove()
x,y,z = dynamic:getPosition()
addParticleType(datablockName,table) -- The table contains all of the properties for the emitter
addEmitterType(datablockName,table) --
emitter = addEmitter(type,x,y,z) --- x,y,z are optional
emitter:attachToDynamic(dynamic,nodeName) -- nodeName is optional, it's where to attach the emitter
emitter:attachToBrick(brick) -- nil can be passed and emitter will stay at its last position then
emitter:remove()