Counter-Strike 2 включает CS_Script (систему скриптов на базе JavaScript, которая предоставляет доступ к игровым сущностям, событиям и функциональности. Плагин s2sdk позволяет языковым модулям Plugify интегрироваться с CS_Script, предоставляя доступ к резолверу модулей Valve, что позволяет использовать плагины Plugify и систему CS_Script от Valve одновременно.
Для получения дополнительной информации о системе CS_Script от Valve см.:
Вместо этого используйте слушатель OnEntityCreated для определения момента создания сущности point_script, а затем динамически импортируйте модули CS_Script:
// ✅ Это работает - импорт после создания point_script
import("cs_script/point_script").then(point_script => {
const { Instance } = point_script;
// Теперь вы можете использовать функциональность CS_Script
});
Хотя полная интеграция с CS_Script специфична для JavaScript, другие языки могут определять момент, когда CS_Script становится доступным:
c#
python
c++
using Plugify;
using static s2sdk.s2sdk;
public unsafe class Sample : Plugin
{
public void OnPluginStart()
{
OnEntityCreated_Register(OnEntityCreatedCallback);
}
public void OnPluginEnd()
{
OnEntityCreated_Unregister(OnEntityCreatedCallback);
}
private static void OnEntityCreatedCallback(int entityHandle)
{
string className = GetEntityClassname(entityHandle);
if (className == "point_script")
{
PrintToServer("CS_Script system is now available!\n");
// Теперь вы можете взаимодействовать с сущностью point_script
}
}
}
from plugify.plugin import Plugin
from plugify.pps import s2sdk as s2
class Sample(Plugin):
def plugin_start(self):
s2.OnEntityCreated_Register(self.on_entity_created)
def plugin_end(self):
s2.OnEntityCreated_Unregister(self.on_entity_created)
@staticmethod
def on_entity_created(entity_handle):
class_name = s2.GetEntityClassname(entity_handle)
if class_name == "point_script":
s2.PrintToServer("CS_Script system is now available!\n")
#include <plugify/cpp_plugin.hpp>
#include "s2sdk.hpp"
using namespace s2sdk;
class Sample : public plg::IPluginEntry {
public:
void OnPluginStart() override {
OnEntityCreated_Register(OnEntityCreatedCallback);
}
void OnPluginEnd() override {
OnEntityCreated_Unregister(OnEntityCreatedCallback);
}
private:
static void OnEntityCreatedCallback(int entityHandle) {
auto className = GetEntityClassname(entityHandle);
if (className == "point_script") {
PrintToServer("CS_Script system is now available!\n");
}
}
};