feat: add register complex papi

This commit is contained in:
Tsubasa6848
2024-04-29 05:11:56 +08:00
Unverified
parent adfb960f54
commit 105228aba6
+60 -26
View File
@@ -3,6 +3,16 @@
namespace PAPIRemoteCall { namespace PAPIRemoteCall {
std::string removeBrackets(std::string a1) {
a1.erase(a1.find_last_not_of("%") + 1);
return a1;
}
bool isParameters(std::string str) {
std::regex reg("[<]([^<>]+)[>]");
return std::regex_search(removeBrackets(str), reg);
}
std::string GetValue(std::string const& from) { return GMLIB::Server::PlaceholderAPI::getValue(from); } std::string GetValue(std::string const& from) { return GMLIB::Server::PlaceholderAPI::getValue(from); }
std::string GetValueWithPlayer(std::string const& a1, std::string const& a2) { std::string GetValueWithPlayer(std::string const& a1, std::string const& a2) {
@@ -15,12 +25,24 @@ bool registerPlayerPlaceholder(
std::string const& PAPIName std::string const& PAPIName
) { ) {
if (RemoteCall::hasFunc(PluginName, FuncName)) { if (RemoteCall::hasFunc(PluginName, FuncName)) {
auto Call = RemoteCall::importAs<std::string(Player * pl)>(PluginName, FuncName); if (isParameters(PAPIName)) {
GMLIB::Server::PlaceholderAPI::registerPlayerPlaceholder( auto Call = RemoteCall::importAs<std::string(Player * pl, std::unordered_map<std::string, std::string>)>(
PAPIName, PluginName,
[Call](Player* sp) { return Call(sp); }, FuncName
PluginName );
); GMLIB::Server::PlaceholderAPI::registerPlayerPlaceholder(
PAPIName,
[Call](Player* sp, std::unordered_map<std::string, std::string> map) { return Call(sp, map); },
PluginName
);
} else {
auto Call = RemoteCall::importAs<std::string(Player * pl)>(PluginName, FuncName);
GMLIB::Server::PlaceholderAPI::registerPlayerPlaceholder(
PAPIName,
[Call](Player* sp) { return Call(sp); },
PluginName
);
}
return true; return true;
} }
return false; return false;
@@ -32,12 +54,22 @@ bool registerServerPlaceholder(
std::string const& PAPIName std::string const& PAPIName
) { ) {
if (RemoteCall::hasFunc(PluginName, FuncName)) { if (RemoteCall::hasFunc(PluginName, FuncName)) {
auto Call = RemoteCall::importAs<std::string()>(PluginName, FuncName); if (isParameters(PAPIName)) {
GMLIB::Server::PlaceholderAPI::registerServerPlaceholder( auto Call =
PAPIName, RemoteCall::importAs<std::string(std::unordered_map<std::string, std::string>)>(PluginName, FuncName);
[Call]() { return Call(); }, GMLIB::Server::PlaceholderAPI::registerServerPlaceholder(
PluginName PAPIName,
); [Call](std::unordered_map<std::string, std::string> map) { return Call(map); },
PluginName
);
} else {
auto Call = RemoteCall::importAs<std::string()>(PluginName, FuncName);
GMLIB::Server::PlaceholderAPI::registerServerPlaceholder(
PAPIName,
[Call]() { return Call(); },
PluginName
);
}
return true; return true;
} }
return false; return false;
@@ -50,20 +82,22 @@ bool registerStaticPlaceholder(
int num int num
) { ) {
if (RemoteCall::hasFunc(PluginName, FuncName)) { if (RemoteCall::hasFunc(PluginName, FuncName)) {
auto Call = RemoteCall::importAs<std::string()>(PluginName, FuncName); if (isParameters(PAPIName)) {
if (num == -1) { auto Call = RemoteCall::importAs<std::string()>(PluginName, FuncName);
GMLIB::Server::PlaceholderAPI::registerStaticPlaceholder( if (num == -1) {
PAPIName, GMLIB::Server::PlaceholderAPI::registerStaticPlaceholder(
[Call] { return Call(); }, PAPIName,
PluginName [Call] { return Call(); },
); PluginName
} else { );
GMLIB::Server::PlaceholderAPI::registerStaticPlaceholder( } else {
PAPIName, GMLIB::Server::PlaceholderAPI::registerStaticPlaceholder(
num, PAPIName,
[Call] { return Call(); }, num,
PluginName [Call] { return Call(); },
); PluginName
);
}
} }
return true; return true;
} }