Skip to content

Commit 9d7b4d2

Browse files
committed
feat(scripting/player): ExecuteCommand
1 parent 3c44740 commit 9d7b4d2

File tree

6 files changed

+32
-0
lines changed

6 files changed

+32
-0
lines changed

AMBuildScript

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ class MMSPluginConfig(object):
244244
'-Wno-non-virtual-dtor',
245245
'-Wno-overloaded-virtual',
246246
'-Wno-return-local-addr',
247+
'-Wno-invalid-offsetof',
247248
'-fexceptions',
248249
'-std=c++17',
249250
]

plugin_files/scripting/includes/swiftly/player.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,22 @@ class Player
176176
return 0;
177177
}
178178
}
179+
180+
void ExecuteCommand(const char *cmd, ...)
181+
{
182+
va_list ap;
183+
char buffer[2048];
184+
185+
va_start(ap, cmd);
186+
UTIL_FormatArgs(buffer, sizeof(buffer), cmd, ap);
187+
va_end(ap);
188+
189+
void *player_ExecuteCommand = FetchFunctionPtr(nullptr, "scripting_Player_ExecuteCommand");
190+
if (player_ExecuteCommand)
191+
reinterpret_cast<Player_ExecuteCommand>(player_ExecuteCommand)(this->m_playerSlot, buffer);
192+
else
193+
NOT_SUPPORTED("scripting_Player_ExecuteCommand");
194+
}
179195
};
180196

181197
#endif

plugin_files/scripting/includes/swiftly/swiftly_memory.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ typedef int (*Player_GetMoney)(uint32_t);
2828
typedef void (*Player_SetMoney)(uint32_t, int);
2929
typedef void (*Player_TakeMoney)(uint32_t, int);
3030

31+
typedef void (*Player_ExecuteCommand)(uint32_t, const char *);
32+
3133
typedef const char *(*Player_GetClanTag)(uint32_t);
3234
typedef void (*Player_SetClanTag)(uint32_t, const char *);
3335

src/components/Plugins/inc/Scripting.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ SMM_API int scripting_Player_GetMoney(uint32 playerId);
141141
SMM_API void scripting_Player_SetMoney(uint32 playerId, int money);
142142
SMM_API void scripting_Player_TakeMoney(uint32 playerId, int money);
143143

144+
SMM_API void scripting_Player_ExecuteCommand(uint32 playerId, const char *cmd);
145+
144146
SMM_API void scripting_Player_Weapons_Drop(uint32 playerId);
145147
SMM_API void scripting_Player_Weapons_Remove(uint32 playerId);
146148
SMM_API void scripting_Player_Weapons_Give(uint32 playerId, const char *name);

src/components/Plugins/src/language/lua/player.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ void SetupLuaPlayer(luacpp::LuaState *state, Plugin *plugin)
7878
{ return base->fakeClient; })
7979
.DefMember("GetSlot", [](LuaPlayerClass *base) -> int
8080
{ return base->playerSlot; })
81+
.DefMember("ExecuteCommand", [](LuaPlayerClass *base, const char *command) -> void
82+
{ scripting_Player_ExecuteCommand(base->playerSlot, command); })
8183
.DefMember("health", [healthClass](LuaPlayerClass *base) -> luacpp::LuaObject
8284
{ return healthClass.CreateInstance(base->playerSlot); })
8385
.DefMember("armor", [armorClass](LuaPlayerClass *base) -> luacpp::LuaObject

src/components/Plugins/src/scripting/Player.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -769,4 +769,13 @@ SMM_API void scripting_Player_Weapon_SetDefaultChangeSkinAttributes(uint32 playe
769769
weapon->m_AttributeManager().m_Item().m_iEntityQuality = 3;
770770
else if (!weapon->m_AttributeManager().m_Item().m_iAccountID() && weapon->m_CBodyComponent() && weapon->m_CBodyComponent()->m_pSceneNode())
771771
weapon->m_CBodyComponent()->m_pSceneNode()->GetSkeletonInstance()->m_modelState().m_MeshGroupMask = 2;
772+
}
773+
774+
SMM_API void scripting_Player_ExecuteCommand(uint32 playerId, const char *cmd)
775+
{
776+
Player *player = g_playerManager->GetPlayer(playerId);
777+
if (!player)
778+
return;
779+
780+
engine->ClientCommand(*player->GetSlot(), cmd);
772781
}

0 commit comments

Comments
 (0)