.. VCO Lua Extensions ..
Plans are currently being created for a next release of VLE.
Plans for VLE 1.05.        Total: ...        Remaining: ...        Completion: ...
 
Bugs
Possible Bugs
Objects may still get removed at run time :o, could be when theres alot of objects. Eg. >800
When moving an object, the player's camera position and camera look-at will move, but the object might not.
Known Bugs
Temp objects created using /taddob may not get removed when they should.
This occurs when there are over 100 timers active.
Workaround added to not allow players to add a temp object if there are >= 100 timers active.
It's possible to add >100 pickups if a pickup is respawning, causing the pickup ID to be '-1'.
Fix /speedo - can crash the server when a player disables it.
Should be fixed when the VLETimer("x", "off") bug is fixed.
When a player stops spectating a player, set the player who was spectating's interior to their interior when they typed /spec.
The VLETimer() function does not accept boolean parameters.
If 2 timers are running, then a timer is turned off using VLETimer("TimerName", "off") - the server will crash.
Setting the weather when random weather is enabled and the current weather is the weather you typed, won't work.
Server sometimes crashes when a player logs in.
Should be fixed when the VLETimer("x", "off") bug is fixed.
Using /incar on a vehicle ID that does not exist will crash the server.
Other
Other
Make VLE work on Linux.
[DONE] Stage 1 - Make the conversion work from Windows to Linux.
[DONE] Stage 2 - Make the conversion work from Linux to Windows.
[DONE] Stage 3 - Tidy up the code with another loop.
[DONE] Stage 4 - Make it check the first EOL char of EVERY file incase execution died on a previous conversion attempt.
Plan & check for new commands to add for the vehicle, object, pickup, marker & icon systems.
Plan & check for new commands to add for the actor system.
Check it ends the timer for /tstfu if the player leaves the server.
When the Game Mode Features are loaded at runtime, if feature IDs change, update other files:
[DONE] SC - SCM File & SCM RGB File
[DONE] SCM - SCM RGB File
[DONE] Vehicles - Vehicle Light States (Only if 'General' extension is loaded)
[DONE] Pickups - Pickup Respawn Delays
[DONE] Markers - Marker Enter Commands
Check /spec for crashes after converted to tables.
/nearobs should echo several times instead of just once.
Make it so you can only locally/globally assign commands to alphanumeric characters.
Make it so you can remove temp objects using /remob.
Make /cmdlevel show the previous level of the command.
Make it possible to type '/key <Key>' or '/gkey <Key>' to see which command is assigned to the key.
Search for 'VLE Extensions' in every extension and change it to 'VLE', then change the main folder name to 'VLE'.
/colour all r g b t - doesn't work until the server is restarted, make it work w/o a restart.
In the Game Mode extension, check that the features in 'Command Functions.lua' are in the same order as 'Functions.lua'.
Replace the 3 'pre command call checks', var 'AdminLevel' & var 'RequiredAdminLevel' in every command function with VLEPreCommandCall(PlayerID, Command)
After doing this, check all command names where the command function code could use one of those 2 variables. - /cmds used AdminLevel
After adding VLEPreCommandCall() - add a check to see if the player is muted - if they are, do not continue executing the command.
Also do not execute command if player is muted for:
local key binds
global key binds
onPlayerChat() commands prefixed with /cmdprefix
Make the <NewSkinModelName> parameter optional for /skinname
Redo all the LoadStuffAtRunTime functions in the Game Mode extension.
Make it load file into tableA,
then numerically sort tableA,
then loop around tableA and create features storing new IDs numerically sorted into tableB,
then store tableB into file. (2 file handles)
Check /timers, /timer and /timeroff for bugs. (Problems occured after redid the timer system)
Make VLERemovePickup() also remove the pickup respawn delay from 'Pickup Respawn Delays.txt'.
Also make VLERemoveAllPickups() remove the 'Pickup Respawn Delays.txt' file.
Remove /acmds
Change syntax of '/cmds' to '/cmds [<Level>]' - Defaults to level 0
/addobrow should echo the IDs several times if there are alot.
/addobrow should check if (AmountToAdd + CurrentAmountOfObs) > 1000
Remove all the 'VLEIsLoaded_x' global variables, as the VLEIsLoaded() function now checks the 'VLEExtensions[]' global table.
Remove all the VLE Extra stuff from the Stats extension.
If a player is registered but not logged in, don't update the stats:
Connects
Spawns
Spawn Skins
Disconnects
Disconnect Reasons
Online Duration
If the player logs in successfully, increase their connects stat if it has not already been increased since they connected.
Make the function 'VLEMultiRemoveFile( FilePath, ValueOneTokens )'
Example usage: VLEMultiRemoveFile( "filename.txt", "v1 v1here anotherv1 etcv1" )
After created the 'VLEMultiRemoveFile()' function, use it in the functions that take feature property params, related to the following commands:
/remallscm
/remallcars
/remallobs
/remallpickups
/remallcps
/remallcoronas
/remallicons
In the functions for all the following commands:
[DONE] /remsc - remove all SCM colours for all SCMs in that SC
[DONE] /remscm - remove the SCM colour for the SCM
[DONE] /remcar - remove the vehicle light state (only if General ext. loaded)
[DONE] /rempickup - remove the pickup respawn delay & if the pickup is respawning, end the timer
[DONE] /remcp - remove the marker enter command
[DONE] /remcorona - remove the marker enter command
--
[DONE] /remallsc - remove the SCM colours file
[DONE] /remallscm - remove all the SCM colours for all SCMs in that SC
[DONE] /remallcars - remove the vehicle light states file (only if General ext. loaded)
[DONE] /remallpickups - remove the pickups respawn delay file, turn all pickup respawn timers off
[DONE] /remallcps - remove the marker enter commands file
[DONE] /remallcoronas - remove the marker enter commands file
/dis and /alt should use 'VCUnits/2.42' so the amount is in meters, not VC game units.
If the player is registered but not logged in, do not execute local & global key binds for the player.
For '/addpickup gen modelID', if the player doesn't specify the typeID, default to 3 instead of 9, as 9 is a proximity bomb. (Blows up on vehicle contact)
Put the pickup respawn delays inside the Pickups.txt file, instead of using 'Pickup Respawn Delays.txt'.
Change /pickuprespawn syntax to: /pickuprespawn <PickupID> [<Duration> <TimeUnit>]
Make /drunk check if the player name/ID is invalid before checking if the player is spawned.
Make /aliasip /banip and /unbanip check if the IP v4 Address is valid.
Files To Tables
Files To Tables
Global key functions, also load all global keys into table at run time.
Update /gkeys
Spectate functions.
Make the VLEGetSkinModelNameFromSkinModelID() function check data from tables, which is set at runtime.
Then check '/key 7 /scmskin 0 0 wruihfuirhguir' doesn't cause a CPU timeout.
Make /gunkeyall loop around the table instead of the file.
Make all the stats functions work with tables.
Check that every function in Game Mode.lua that should work with tables, does actually work with tables.
Check all command functions in every extension where it could use a table instead of a file.
Didn't check every extension for 1.05, however the majority of commands use tables.
New Features & Commands
New Features & Commands
Add /markercmds
Add /markercmd <MarkerID> <Command> [<Parameters>]
Add /remmarkercmd <MarkerID>
/bind <Command> [<CommandToBindTo>] [<Parameters>]
Parameters can contain tokens: %player %playername %player2 %1 %5 %1- %3- %1-4 %4-7 etc
Example:
/bind /stub /givewep %player stubby
/stub
Add /unbind <Command>
Add /binds
Add /speedotype [mph/kmph/none]
Add /gspeedotype [mph/kmph]
Add /speedodp [<DecimalPlaces>/none]
Add /gspeedodp [<DecimalPlaces>]
Add /cmdprefixes
Add /addcmdprefix <Character>/none
Add /remcmdprefix <Character>/none
Make the file functions ignore blank lines in the txt files.
Add /carrespawn [<Duration> <PartOfTimeUnit>]
Add /servername [<NewServerName>]
Add /serverport [<NewServerPort>]
Add /servermode [<NewServerModeName>]
Add /servermaxplayers [<NewServerMaxPlayers>]
Add /serverannounce [on/off]
Add /serverpass [<NewServerPassword>]
Add /remserverpass
Add /serverbindip [<NewServerBindIP>]
Add /remserverbindip
Add /vctextall <StyleID(0-5)> <Text>
Spawn Class System Update
Run Time
Load all spawn classes into a table at runtime.
Make all spawn class functions work with the spawn classes table instead of files.
Add / Remove
For /showsc - Possibly update output text & check the command function contains good coding.
Make the command function loop around the spawn classes table instead of the file.
For /addsc <SCName> - Update output text & check there is a function for command with good coding.
For /remsc <SCID> - Update output text & check there is a function for command with good coding.
Add /remallsc
Name
For /scname <SCID> [<SCName>] - Update output text & check there is a function for command with good coding.
Check if this actually needs a server restart. -- It does.
For /scrgb - Change command name to '/scnamergb <SCID> [<Red> <Green> <Blue>]'.
Update output text & check there is a function for command with good coding.
Check if this actually needs a server restart.
Camera
For /sccampos <SCID> - Update output text & check there is a function for command with good coding.
Check if this actually needs a server restart.
For /sclookpos <SCID> - Update output text & check there is a function for command with good coding.
Check if this actually needs a server restart.
Position
Add /scpos <SCID>
Add /gotosc <SCID>
Add /nearsc [<Radius>]
Spawn Class Member System Update
Run Time
Load all spawn class members into a table at runtime.
Make all spawn class member functions work with the spawn class members table instead of files.
If spawn class member IDs change at runtime, update them in the SCM Colours txt file.
Other
Make it load spawn class member interiors when a player spawns.
Add / Remove
/showscm <SCID> - Possibly update output text & check the command function contains good coding.
Make the command function loop around the spawn class members table instead of the file.
/addscm <SCID> <SkinModelName/ID> - Update output text & check there is a function for command with good coding.
Make this also save interiors.
/remscm <SCID> <SCMID> - Update output text & check there is a function for command with good coding.
Add /remallscm <SCID>
Make the VLERemoveSpawnClassMember() function remove the SCM RGB colour.
Skin Model
/scmskin <SCID> <SCMID> <NewSkinModelName/ID> - Update output text & check there is a function for command with good coding.
Make it so you don't need to restart the server.
Add /allscmskin <SCID> <NewSkinModelName/ID>
Create a function for this.
Position
/scmspawnpos <SCID> <SCMID> - Change command name to '/savescm'.
Update output text & check there is a function for command with good coding.
Make it so you don't need to restart the server.
Make this also save interiors.
Add /saveallscm <SCID>
Create a function for this something like VLESaveAllSCMPositionsInSC(SCID, XPos, YPos, ZPos, ZAngle)
Add /scmpos <SCID> <SCMID>
Add /gotoscm <SCID> <SCMID>
Add /nearscm [<Radius>] [<SCID>]
Colour
/scmcolour <SCID> <SCMID> <Red> <Green> <Blue> - Change command name to '/scmrgb'.
Update output text & check there is a function for command with good coding.
Make it so you don't need to restart the server.
Fix the bug where it sets all player's colours to the colour you specify when you use the command.
Add /allscmrgb <SCID> <Red> <Green> <Blue>
Create a function for this.
Weapons
Add /scmweps <SCID> <SCMID>
/scmwep - Change the command syntax to '/scmwep <SCID> <SCMID> <WeaponName/ID> <Ammo>'.
Update output text & check there is a function for command with good coding.
Make it so you don't need to restart the server.
Add /remscmwep <SCID> <SCMID> <WeaponName/ID>
Create a function for this.
Add /scmwepcs <SCID> <SCMID> 1/2/3 <WeaponName/ID>
Create a function for this.
Add /allscmwep <SCID> <WeaponName/ID> <Ammo>
Create a function for this.
Add /remallscmwep <SCID> <WeaponName/ID>
Create a function for this.
Add /allscmwepcs <SCID> 1/2/3 <WeaponName/ID>
Create a function for this.
Vehicle System Update
Amount
/cars [<VehicleModelName/ID>]
Add / Remove
/addcar <VehicleModelName/ID>
/remcar <VehicleID>
/remcars <VehicleIDRanges>
/remallcars [<VehicleModelName/ID>]
Position
/nearcars [<Radius>]
/gotocar <VehicleID>
/getcar <VehicleID>
/savecar [<VehicleID>]
/carpos [<VehicleID>]
Model
/carmodel <VehicleID> [<NewVehicleModelName/ID>]
/allcarmodels <NewVehicleModelName/ID>
Colour
/carcol <VehicleID> [<Colour1> <Colour2>]
/allcarcols <Colour1> <Colour2>
Other
Make the VLERemoveVehicle() function eject players then remove.
Object System Update
Amount
/obs [<ObjectModelID>]
Add / Remove
/addob <ObjectModelID>
/remob [<ObjectID>]
/remobs <ObjectIDRange>
/remallobs [<ObjectModelID>]
Position
/nearobs [<Radius>]
/gotoob <ObjectID>
/getob <ObjectID>
/moveob [<ObjectID>]
Announce sensitivity level instead of spamming the chat box.
Make keys 1-6 set the move-object-mode.
Make the object keep up with the camera on move XY/Z Pos.
Make the sensitivity level have 2 types, VC Units & Degrees.
/saveob [<ObjectID>]
/obpos <ObjectID>
Model
/obmodel <ObjectID> [<NewObjectModelID>]
/allobmodels <NewObjectModelID>
Other
If a player uses /remob on an object they are moving, stop the player moving the object.
When a player stops moving an object, save their sensitivity levels.
Reload the levels when they start moving an object again.
[Level defaults] VC Units: 1, Degrees: 6
Pickup System Update
Amount
/pickups
/pickups gen [<ObjectModelID>]
/pickups wep [<WeaponName/ID>]
/pickups cash [<Amount>]
Add / Remove
/addpickup gen <ObjectModelID> [<PickupTypeID>]
/addpickup wep <WeaponModel/ID> [<Ammo>]
/addpickup cash <Amount>
/rempickup <PickupID>
/rempickups <PickupIDRange>
/remallpickups [gen] [<ObjectModelID>]
/remallpickups [wep] [<WeaponModel/ID>]
/remallpickups [cash] [<Amount>]
Position
/nearpickups [<Radius>] [gen/wep/cash]
/pickuppos <PickupID>
/savepickup <PickupID>
/gotopickup <PickupID>
/getpickup <PickupID>
Model / Wep / Cash
/pickupmodel <PickupID> [<NewObjectModelID>]
/allpickupmodels <NewObjectModelID>
/pickupwep <PickupID> [<WeaponName/ID>] [<Ammo>]
/allpickupweps <WeaponName/ID> [<Ammo>]
/pickupcash <PickupID> [<Amount>]
/allpickupcash <NewAmount>
Marker System Update
Amount
/markers
/markers cp [<CheckpointSize>]
/markers corona [<Red> <Green> <Blue>]
Add / Remove
/addcp [<Radius>]
/remcp <MarkerID>
/remcps <MarkerIDRange>
/remallcps [<CheckpointSize>]
/addcorona [<Red> <Green> <Blue>]
/remcorona <MarkerID>
/remcoronas <MarkerIDRange>
/remallcoronas [<Red> <Green> <Blue>]
Position
/nearmarkers [<Radius>] [cp/corona]
/gotomarker <MarkerID>
/getmarker <MarkerID>
/savemarker <MarkerID>
/markerpos <MarkerID>
Corona Colour / Checkpoint Radius
/coronargb <MarkerID> [<Red> <Green> <Blue>]
Change command name from /coronacol to /coronargb
/cpradius <MarkerID> [<NewRadius>]
Other
/remcp and /remcorona should also remove the command assigned for the marker, if any.
Actor System Update
Amount
/actors [<SkinModelID>]
Add / Remove
/addactor <SkinModelID>
/remactor <ActorID>
Make this remove actor data from file and table, but not the actor itself to prevent game freezes.
/remactors <ActorIDRange>
Make this remove actors from file and table, but dont remove the actual actor to prevent game freezes.
/remallactors [<SkinModelID>]
Make this remove the actors file and clear the table, but don't remove the actual actors to prevent game freezes.
Position
/actorpos <ActorID>
/saveactor <ActorID>
/gotoactor <ActorID>
/nearactors [<Radius>]
Name / Skin / Animation / Blip
/actorname <ActorID> [<NewActorName>]
/actorskin <ActorID> [<NewSkinModelID>]
/actoranim <ActorID> [<NewAnimationID>]
/actorblip <ActorID> [on/off]
Icon System Update
Amount
/icons [<IconTypeID>]
Add / Remove
/addicon <IconTypeID> [<IconSize>]
/remicon <IconID>
/remicons <IconIDRange>
/remallicons [<IconTypeID>]
Position
/nearicons [<Radius>] [<IconTypeID>]
/gotoicon <IconID>
/geticon <IconID>
/saveicon <IconID>
/iconpos <IconID>
Icon Type ID / Icon Size / Flash Icon
/icontype <IconID> [<NewIconTypeID>]
/iconsize <IconID> [<NewIconSize>]
/iconflash <IconID> [on/off]
Before Release (Only when all other updates are done)
Web Updates
Update all functions in VLE section on VCO wiki.
Update the downloads page on this site.
Add actor commands page to the Commands page.
Update the commands page on this site to all 1.05 commands.
Update the bugs page on this site.
Update the release log page on this site.
Update all view code online pages on this site.
Extension Updates
Update /version in the General extension.
Search all extensions for 'outputConsole' and '--'. (Debug messages)
Didn't check every extension - but almost certain there are no debug outputs.
Check all commands are in the correct extension.
Txt File Updates
Make sure all command functions are in the 'Command Functions.txt' file for every extension.
Make sure all command levels (if > 0) are in the 'Command Levels.txt' file for every extension.
Make sure all command syntaxes are in the 'Command Syntaxes.txt' file for every extension.