Commit Graph

180 Commits

Author SHA1 Message Date
Tixx cd4cc3e630 Add servertime lua function 2026-08-07 01:33:44 +02:00
Lion Kortlepel 4104dc1f18 fix lua result serialization causing various issues
for example, loading a library which returns a table of functions would
fail with an inexplicable (to the user) error about serialization. This
is now fixed. We no longer use a single result type, instead there are
void results and normal results, and the former simply never has to
worry about the result.

This was likely causing even more issues; if the `sol::object` was
populated before, it hitting the dtor in another path would, again, like
we've seen before, corrupt the lua stack.
2026-04-29 18:29:02 +00:00
Lion Kortlepel 57fe7cb055 fix GCC 11 compiler/libstdc++ error
GCC 11's C++ stdlib does a weird maneuver here where it needs to know
the size of the std::pair<>::second's type. So we wrap it in a ptr.
2026-04-19 21:16:43 +00:00
Lion Kortlepel 06bd719dbf clarify/fix std::visit compile time check 2026-04-19 20:34:20 +00:00
Lion Kortlepel f820d75851 fix TLuaValue handling to be less odd 2026-04-19 18:17:54 +00:00
Lion Kortlepel 9ca12fc7a6 fix std::weak_ptr locking and expiry checks
You're supposed to .lock() instead of TOCTOU checking, of course.
Not sure what I was thinking when I built that. .lock() returns a
default constructed std::shared_ptr on error, which is `false` via
`operator bool`.
2026-04-19 18:17:54 +00:00
Lion Kortlepel 98fb12bbcc fix holding lock during sleep
oops
2026-04-19 18:17:54 +00:00
Lion Kortlepel 3e12e487ab fix success/error handling in lua engine 2026-04-19 18:17:54 +00:00
Lion Kortlepel b3e8d86cef refactor Lua result handling for safety
this massively improves thread safety and cleanly serializes accesses
into the lua engine's result objects where accesses before were
extremely unsafe and could access a corrupt/invalid stack.

this fixes various obscure crashes related to accessing results,
without changing any observable behavior.
2026-04-19 18:17:54 +00:00
Lion Kortlepel 0c864665bb fix missing semicolon 2026-04-19 18:17:54 +00:00
Lion Kortlepel 4bb7232a41 fix GetIdentifiers building the wrong kind of table 2026-04-19 18:17:54 +00:00
Lion Kortlepel 58d9f2e980 fix GetIdentifiers() 2026-04-19 18:17:54 +00:00
Lion Kortlepel 66f5f2b8b6 fix error handling from SetErrorMessageFromResult 2026-04-19 18:17:54 +00:00
Lion Kortlepel e260de55af fix sol::error crash 2026-04-19 18:17:54 +00:00
Tixx 4af0e4ccac feature: BEAMMP_PROVIDER_DISABLE_MP_SET environment variable (#461)
This pull request adds BEAMMP_PROVIDER_DISABLE_MP_SET variable
(true/false/1/0) to disable MP::Set for providers.

---

By creating this pull request, I understand that code that is AI
generated or otherwise automatically generated may be rejected without
further discussion.
I declare that I fully understand all code I pushed into this PR, and
wrote all this code myself and own the rights to this code.
2026-03-21 20:11:51 +01:00
TechStreet f38797a9ab feature: BEAMMP_PROVIDER_DISABLE_MP_SET environment variable 2026-02-24 17:39:22 +00:00
boubouleuh 595247d51d adding logchat boolean to MP.SendChatMessage 2026-02-02 22:33:58 +01:00
Tixx 99476a2c77 Revert "Add stack trace to server lua engine (#350)" 2026-01-15 14:44:13 +01:00
Kipstz b74f0c7ca8 refactor: optimize string operations and improve code clarity
- Avoid redundant substr() calls in packet parsing hot-path (TServer.cpp)
  The previous code called substr(3) twice per packet, creating
  unnecessary temporary strings. Now stores the result once.

- Replace .size() == 0 with .empty() for idiomatic C++
  (TConsole.cpp, TLuaEngine.cpp)
2025-12-27 23:46:45 +01:00
Tixx 6318ca79e7 Implement Dialog packet and add MP.ConfirmationDialog 2025-06-25 13:22:05 +02:00
Tixx 731599f16e Json vehicle state and apply paint packet (#416)
Converts the vehicle stored client side from a raw string to parsed json
data. This allows us to more easily edit the vehicle state serverside,
which I've started using in this PR for updating the state after a paint
packet.

---

By creating this pull request, I understand that code that is AI
generated or otherwise automatically generated may be rejected without
further discussion.
I declare that I fully understand all code I pushed into this PR, and
wrote all this code myself and own the rights to this code.
2025-06-19 17:46:49 +02:00
Tixx 6286457fa4 Revert "support for nested lua handlers" 2025-03-15 22:29:37 +01:00
Tixx 00560f7646 Wait for the server to start before loading plugins or allowing connections 2025-02-15 21:47:17 +01:00
Tixx 2f577a2358 Store vehicles in parsed json 2025-01-25 22:16:06 +01:00
Tixx fb2e26bd28 Allow for empty icon param in MP.SendNotification 2024-11-12 12:35:12 +01:00
Tixx 956d6f50e1 Add setting for the information packet 2024-10-14 00:39:12 +02:00
Lion cf3985ce00 Add Lua function to get a player's role (#366)
Adds `MP.GetPlayerRole(player_id)` to the Lua API to get a player's role
("USER", "EA", "MDEV", "STAFF", "ET") by their player id.
Currently you can only get someone's role in onPlayerAuth from the
parameters and in onVehicleSpawned and onVehicleEdited from the packet
data, but not in onPlayerJoin for example without storing it.
2024-10-05 16:09:37 +02:00
Lion 0850cde1fb Add MP.SendNotification (#373)
Adds MP.SendNotification(message, icon, category (optional) ) to the Lua
api. Uses the newly added "N" packet in the mod.
2024-10-05 16:07:27 +02:00
Tixx 9a0270cb09 Return nil instead of "" when there's no client 2024-09-28 21:05:04 +02:00
Tixx 3ade7f5743 Add MP.SendNotification 2024-09-28 13:35:25 +02:00
Tixx 17185da53b Add MP.Get 2024-09-21 23:17:08 +02:00
Tixx 623dfa17d5 Remove expiry check and add braces 2024-09-20 14:45:41 +02:00
Tixx caafb216c9 Add MP.GetPlayerRole(player_id) 2024-09-19 07:51:07 +02:00
20dka ee03afb9a1 fix gh linux build 2024-08-29 20:17:01 +02:00
20dka f775678e2e support for nested lua handlers 2024-08-28 22:46:37 +02:00
20dka 45bb6ca6f3 fill out lua EventName 2024-08-28 22:15:57 +02:00
SaltySnail 4a062e5aa0 Fix not following naming convention
Co-authored-by: Lion <development@kortlepel.com>
2024-07-27 19:50:24 +02:00
SaltySnail 012ce08b91 Add proper lua server stacktraces 2024-07-14 03:18:59 +02:00
Lion Kortlepel 9db3619cd8 cleanup and add comments to traceback feature 2024-07-14 01:50:31 +02:00
Lion Kortlepel 6f4c3f0ceb add traceback to lua errors by way of shitty lua hacks 2024-07-14 01:43:01 +02:00
SaltySnail 4fad047bf4 Add working stacktrace 2024-07-14 01:00:57 +02:00
SaltySnail 5502c74229 add stacktrace to the server lua engine (WIP) 2024-07-14 00:22:48 +02:00
Lucca Jiménez Könings 29f4d0d286 run clang-format 2024-06-26 14:06:06 +02:00
Lucca Jiménez Könings 25739cb1bd Merge branch 'minor' into 158-bug-running-settings-help-returns-nothing 2024-06-26 11:43:38 +02:00
sla-ppy 1b60e89f26 add lua info on LuaEngine startup 2024-05-24 12:31:01 +02:00
Maximilian Rehms 7f54bcfaec successful implemented suggested change to "lua_nil"
Co-authored-by: Lion <development@kortlepel.com>
2024-05-18 22:36:57 +02:00
Maximilian Rehms 40e5496819 compiles now on macos 2024-05-18 15:06:26 +02:00
Lucca Jiménez Könings 8c15b87628 Refactor all references to settings to use new Settings type
Signed-off-by: Lucca Jiménez Könings <development@jimkoen.com>
2024-05-15 12:52:09 +02:00
Lion Kortlepel c5dff8b913 fix lua assertion on event argument passing
When adding elements to a table, the .add() function does not behave as
expected in various cases, making it really shit and difficult to use.
Instead, we keep our own index and just add one by one. It works, and
it's easy to understand.

This may lead to indices which are nil, i.e. non-fully-sequential
tables, but I can't be asked to worry about it because that shouldn't be
an issue when we use .set() everywhere.
2024-05-10 14:45:06 +02:00
Lion 586510041d fix TriggerGlobalEvent not passing event arguments correctly (#307)
This is supposed to close #106 (The code is by @lionkor from
https://github.com/BeamMP/BeamMP-Server/commit/b068a9b48f21cc80c6aa2ae3580fc9a5e3d411e0)
2024-05-08 11:47:23 +02:00