diff --git a/include/TLuaEngine.h b/include/TLuaEngine.h index 07ede1b..060ce1f 100644 --- a/include/TLuaEngine.h +++ b/include/TLuaEngine.h @@ -263,6 +263,7 @@ private: sol::table Lua_TriggerGlobalEvent(const std::string& EventName, sol::variadic_args EventArgs); sol::table Lua_TriggerLocalEvent(const std::string& EventName, sol::variadic_args EventArgs); sol::table Lua_GetPlayerIdentifiers(int ID); + std::string Lua_GetPlayerRole(int ID); sol::table Lua_GetPlayers(); std::string Lua_GetPlayerName(int ID); sol::table Lua_GetPlayerVehicles(int ID); diff --git a/src/TLuaEngine.cpp b/src/TLuaEngine.cpp index 9810c99..a53b6b8 100644 --- a/src/TLuaEngine.cpp +++ b/src/TLuaEngine.cpp @@ -595,6 +595,15 @@ sol::table TLuaEngine::StateThreadData::Lua_GetPlayerIdentifiers(int ID) { } } +std::string TLuaEngine::StateThreadData::Lua_GetPlayerRole(int ID) { + auto MaybeClient = GetClient(mEngine->Server(), ID); + if (MaybeClient && !MaybeClient.value().expired()) + return MaybeClient.value().lock()->GetRoles(); + else + return ""; +} + + sol::table TLuaEngine::StateThreadData::Lua_GetPlayers() { sol::table Result = mStateView.create_table(); mEngine->Server().ForEachClient([&](std::weak_ptr Client) -> bool { @@ -883,6 +892,9 @@ TLuaEngine::StateThreadData::StateThreadData(const std::string& Name, TLuaStateI MPTable.set_function("GetPlayerIdentifiers", [&](int ID) -> sol::table { return Lua_GetPlayerIdentifiers(ID); }); + MPTable.set_function("GetPlayerRole", [&](int ID) -> std::string { + return Lua_GetPlayerRole(ID); + }); MPTable.set_function("Sleep", &LuaAPI::MP::Sleep); // const std::string& EventName, size_t IntervalMS, int strategy MPTable.set_function("CreateEventTimer", [&](sol::variadic_args Args) {