sm64coopdx/docs/lua/lua.md

74 lines
3 KiB
Markdown
Raw Permalink Normal View History

2022-01-30 06:47:22 +00:00
# Lua Reference
The Lua scripting API is in early development.
Expect many more things to be supported in the future.
<br />
## How to install Lua mods
2022-09-13 03:04:37 +00:00
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`
2022-01-30 06:47:22 +00:00
<br />
## 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 `--console` launch parameter.
- You can use the `print()` command when debugging. Your logs will show up in the console.
2022-03-17 05:55:16 +00:00
- 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/`.
<br />
2022-02-02 02:52:26 +00:00
## Sections
- [Globals](globals.md)
2022-01-30 06:47:22 +00:00
- [Constants](constants.md)
- [Functions](functions.md)
- [Structs](structs.md)
2022-09-13 03:01:45 +00:00
### Guides
- [Setting up Visual Studio Code](guides/vs-code-setup.md)
2022-09-13 03:01:45 +00:00
- [Hooks](guides/hooks.md)
- [gMarioStates](guides/mario-state.md)
- [Behavior Object Lists](guides/object-lists.md)
2022-01-30 06:47:22 +00:00
## 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.
<br />
## Example Lua mods (small)
2022-05-08 07:26:55 +00:00
- [Low Gravity](examples/low-gravity.lua)
2022-01-30 06:47:22 +00:00
- [Faster Swimming](../../mods/faster-swimming.lua)
- [Mario Run](examples/Mario-Run.lua)
2022-02-16 06:15:49 +00:00
- [HUD Rendering](examples/hud.lua)
2022-02-26 08:03:21 +00:00
- [Object Spawning](examples/spawn-stuff.lua)
2022-03-05 07:14:01 +00:00
- [Custom Ball Behavior](examples/behavior-ball.lua)
- [Replace Goomba Behavior](examples/behavior-replace-goomba.lua)
- [Add to Goomba Behavior](examples/behavior-add-to-goomba.lua)
- [Behavior with Surface Collisions](examples/behavior-surface-collisions.lua)
2022-03-31 04:36:47 +00:00
- [Custom Surface Collisions](examples/big-paddle)
2022-03-17 05:55:16 +00:00
- [Custom Box Model](examples/custom-box-model)
2022-03-18 04:41:46 +00:00
- [Custom Player Model](examples/koopa-player-model)
- [Moonjump](examples/Moonjump.lua)
- [Instant Clip](examples/instant-clip.lua)
- [Water Height Changer](examples/water-level.lua)
2022-04-16 05:01:19 +00:00
- [Custom Level](examples/custom-level)
2022-05-07 05:06:35 +00:00
- [Custom HUD Texture](examples/custom-hud-texture)
2022-05-08 07:26:55 +00:00
- [Custom Audio Test](examples/audio-test)
2023-11-13 14:30:20 +00:00
- [Custom Texture Overriding](examples/texture-override)
## Example Lua mods (large)
- [Hide and Seek Gamemode](../../mods/hide-and-seek.lua)