 32f395fb0c
			
		
	
	
		32f395fb0c
		
			
		
	
	
	
		
			
	
		
	
	* zip + json properties; check existing file in create file * smlua_audio_utils_replace_sequence * audio_stream_load, audio_sample_load, smlua_model_util_get_id * get_texture_info + can also load PNG files * smlua_collision_util_get * add wildcard in properties files + set text mode * filepath restrictions * Some mod_storage improvements - Cache mod storage files into a map to reduce file I/O - Fix a bug in mod_storage_save - Add mod_storage_load_all that returns all keys/values as a table * shutdown; fix buffer overflow; fix warnings; lua table * reject binary files starting with MZ or ELF * function members * better doc * adding file rewind * ModFS guide; replace yaml by ini; read string buffer changes
		
			
				
	
	
	
	
		
			3.4 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Lua Reference
The Lua scripting API is in early development.
Expect many more things to be supported in the future.
How to install Lua mods
Lua scripts you make can be placed either the mods folder in the base directory, or in <SAVE FILE LOCATION>/mods
Save file locations:
- Windows: %appdata%/sm64ex-coop
- Linux: ~/.local/share/sm64ex-coop
- MacOS: ~/Library/Application Support/sm64ex-coop
Tips
- When developing Lua mods, run the game from a console. Lua errors and logs will appear there, but only if the game is launched with the --consolelaunch parameter.
- When a function requests a time parameter, it is almost if not always in frames.
- You can use the print()command when debugging. Your logs will show up in the console.
- You can create a folder within the mods folder containing multiple lua scripts as long as one script is called main.lua. Dynos actors can be placed inside this mod folder under<your mod folder>/actors/.
Sections
Guides
Important notes on player indices
Something important to realize is that the localIndex for each player is different (unfortunately).
So the order of gMarioStates[], gNetworkPlayers[], and gPlayerSyncTable[] is different for each player.
Luckily gPlayerSyncTable[] will automatically translate the player indices, so setting gPlayerSyncTable[0].example = 1 will set it for the correct player for everyone.
The globalIndex of each player is consistent among everyone connected. So if you absolutely need to sort things in order you will have to grab it from gNetworkPlayers[<LOCAL INDEX HERE>].globalIndex.
All of this is a holdover from when there were only two players. It was a reasonable idea back then.
Example Lua mods (small)
- Low Gravity
- Faster Swimming
- Mario Run
- HUD Rendering
- Object Spawning
- Custom Ball Behavior
- Replace Goomba Behavior
- Add to Goomba Behavior
- Behavior with Surface Collisions
- Custom Surface Collisions
- Custom Box Model
- Custom Player Model
- Moonjump
- Instant Clip
- Water Height Changer
- Custom Level
- Custom HUD Texture
- Custom Audio Test
- Custom Texture Overriding
- Custom Animations (DynOS)
- Custom Animations (Lua)
- Bytestring Packet Example
- Gfx/Vtx Demo
- Lighting Engine Demo