F4MP/tiltedcode/Code/server/Scripting/GameServer_Bindings.cpp
Jous99 37b16f1547 code upload
codigo original de f4mp y tilted para referencias
2026-01-06 18:45:00 +01:00

45 lines
1.9 KiB
C++

#include "GameServer.h"
#include <Messages/NotifyChatMessageBroadcast.h>
#include <regex>
namespace Script
{
void CreateGameServerBindings(sol::state_view aState)
{
auto type = aState.new_usertype<GameServer>("GameServer", sol::meta_function::construct, sol::no_constructor);
type["get"] = []() { return GameServer::Get(); };
type["Kill"] = &GameServer::Kill;
type["Kick"] = &GameServer::Kick;
type["GetTick"] = &GameServer::GetTick;
type["SendChatMessage"] = [](GameServer& aSelf, ConnectionId_t aConnectionId, const std::string& acMessage) {
NotifyChatMessageBroadcast notifyMessage{};
std::regex escapeHtml{"<[^>]+>\\s+(?=<)|<[^>]+>"};
notifyMessage.MessageType = ChatMessageType::kLocalChat;
notifyMessage.PlayerName = "[Server]";
notifyMessage.ChatMessage = std::regex_replace(acMessage, escapeHtml, "");
GameServer::Get()->Send(aConnectionId, notifyMessage);
};
type["SendGlobalChatMessage"] = [](GameServer& aSelf, const std::string& acMessage) {
NotifyChatMessageBroadcast notifyMessage{};
std::regex escapeHtml{"<[^>]+>\\s+(?=<)|<[^>]+>"};
notifyMessage.MessageType = ChatMessageType::kGlobalChat;
notifyMessage.PlayerName = "[Server]";
notifyMessage.ChatMessage = std::regex_replace(acMessage, escapeHtml, "");
GameServer::Get()->SendToPlayers(notifyMessage);
};
type["SetTime"] = [](GameServer& aSelf, int aHours, int aMinutes,
float aScale = GameServer::Get()->GetWorld().GetCalendarService().GetTimeScale()) -> bool {
aHours = std::max(0, std::min(aHours, 23));
aMinutes = std::max(0, std::min(aMinutes, 59));
aScale = std::max(1.0f, std::min(aScale, 100.0f));
return GameServer::Get()->GetWorld().GetCalendarService().SetTime(aHours, aMinutes, aScale);
};
// type["SendPacket"]
}
} // namespace Script