Plugin API

Status
Not open for further replies.

Reg1oxeN

Administrator
Staff member
Messages
1,451
Все взаимодействие с апи происходит через переменную api.
Названия функций и переменных чувствительны к регистру.
Для более развернутых примеров всегда можно обратиться к уже имеющимся плагинам.

api.client.?

РезультатФункцияАргументыОписание
boolIsConnectedнетПодключен к серверу
boolIsInGameнетНа сервере
boolIsSourceTVнетЯвляется сурств и скорее всего смотрит демку
boolIsAliveнетЖивой
intGetTeamнетКоманда (0 вне команды, 1 спеки, 2 т, 3 кт)
intGetObserverModeнетРежим спектатора (0 нет, 1 камера смерти, 2 фиксированный, 3 первое лицо, 4 третье лицо, 5 свободный полет)
intGetIndexнетИндекс
intGetUserIDнетЮзерайди
intGetVelocityнетВелосити
JavaScript:
if (api.client.IsInGame())
{
    console.log("игрок на сервере");
}
api.players.?
Все функции требуют индекс игрока в качестве аргумента.

РезультатФункцияАргументыОписание
boolIsConnectedиндекс_игрокаПодключен
boolIsAliveиндекс_игрокаЖивой
boolIsFakePlayerиндекс_игрокаБот
boolIsSourceTVиндекс_игрокаБот STV
stringGetNameиндекс_игрокаИмя
stringGetClanTagиндекс_игрокаКлантег
intGetUserIDиндекс_игрокаЮзерайди
intGetTeamиндекс_игрокаКоманда
intGetScoreиндекс_игрокаФраги
intGetDeathsиндекс_игрокаСмерти
intGetPingиндекс_игрокаПинг
JavaScript:
let localPlayer = api.client.GetIndex();
if (api.players.IsConnected(localPlayer))
{
    console.log("игрок", api.players.GetName(localPlayer), "подключен к серверу и имеет", api.players.GetScore(localPlayer), "фрагов")
}
api.server.?

РезультатФункцияАргументыОписание
stringGetAddressнетПолный айпи адрес
stringGetNameнетНазвание сервера
stringGetMapнетНазвание карты
api.config.?
Все конфиги хранятся в папке [game]\cstrike\javascript\configs и всегда имеют расширение json
Имя конфига может содержать только латиницу, цифры и символ нижнего подчеркивания, все остальные символы удаляются.

РезультатФункцияАргументыОписание
boolExistsназвание_конфигаСуществует
stringLoadназвание_конфигаЗагрузить
boolSaveназвание_конфига, конфигСохранить
JavaScript:
let configName = "test";
if (api.config.Exists(configName))
{
    let configData = api.config.Load(configName);
    let saveResult = api.config.Save(configName, configData);
    if (!saveResult)
    {
        console.log(`конфиг ${configName} не сохранен`);
    }
}
api.sounds.?

РезультатФункцияАргументыОписание
идентификаторPlayпуть, громкость от 0.0 до 1.0 (опционально)Воспроизвести
boolStopидентификаторОстановить
boolSetVolumeидентификатор, громкость от 0.0 до 1.0Задать громкость
floatGetDurationидентификаторПолучить длительность
boolIsPlayingидентификаторВсе еще играет
JavaScript:
var soundId = api.sounds.Play("hitsound.wav");
console.log("имеет длительность", api.sounds.GetDuration(soundId));

soundId = api.sounds.Play("hitsound2.wav", 0.1);
api.sounds.SetVolume(soundId, 1.0);
api.sounds.Stop(soundId);
api.cvar.?
Если планируется часто использовать какую-то определенную консольную переменную, то для оптимизации производительности предпочтительнее кешировать поиск переменных используя api.cvar.Find(cvar_name)

РезультатФункцияАргументыОписание
boolSetValueимя_команды, любойЗадать значение
stringGetValueимя_командыПолучить значение
boolGetBoolимя_командыПолучить значение
intGetIntимя_командыПолучить значение
floatGetFloatимя_командыПолучить значение
CvarObjectFind
имя_команды
Найти переменную и вернуть объект

CvarObject
РезультатФункцияАргументыОписание
boolIsValidнетКвар валидный
stringGetNameнетИмя квара
boolSetValueлюбойЗадать значение
stringGetValueнетПолучить значение
boolGetBoolнетПолучить значение
intGetIntнетПолучить значение
floatGetFloatнетПолучить значение
JavaScript:
api.cvar.SetValue("net_graph", 1);
api.cvar.SetValue("net_graph", "1");

var cvarObj = api.cvar.Find("net_graph");
if (cvarObj.IsValid())
{
    console.log("квар найден", cvarObj.GetName(), "и имеет значение", cvarObj.GetValue());
}
api.command.?
Все команды получают префикс plugin_, если не имеют один из разрешенных префиксов.
В списке разрешенных префиксов находятся plugin_ и js_, которые вы можете указывать явно, например "js_test" заместо "test"
Имя команды может содержать только латиницу, цифры и символ нижнего подчеркивания, все остальные символы удаляются.

РезультатФункцияАргументыОписание
CommandObjectCreateНазваниеСоздать команду

CommandObject
РезультатФункцияАргументыОписание
boolIsValidнетКоманда создалась
stringGetNameнетНазвание
нетSetCallbackФункцияЗадать функцию для обработки
JavaScript:
var commandObj = api.command.Create("test");
commandObj.SetCallback(commandCallback);

function commandCallback(args)
{
    //args - лист
    console.log("commandCallback:", args);
}
api.noesis.?
Для использования модели из плагина в документе используйте plugin.?

РезультатФункцияАргументыОписание
NoesisObjectCreateнетСоздать панель

NoesisObject
РезультатФункцияАргументыОписание
NoesisViewmodelObjectCreateViewModelФункцияСоздание модели взаимодействия документа с плагином
boolCreateConverterНазвание, функцияКонвертор строк из документа ноезиса в плагин.
В функцию приходит строка и нужно вернуть новую строку через возврат.
Конвертор всегда создается глобально, поэтому используйте уникальные имена, иначе создание будет заблокировано другим плагином.
Не рекомендуется использовать конвертор в документах, не связанных с плагином документа, в которых он был создан.
Конвертор всегда находится в пространстве имен Js
boolLoadDocumentПуть документаЗагрузка документа
boolActivateнетАктивация фокуса документа
boolDeactivateнетДеактивация фокуса документа
boolReloadнетПерезагрузка документа

NoesisViewmodelObject
РезультатФункцияАргументыОписание
boolCreateIntНазвание, стандартное числовое значениеСоздать переменную int
boolCreateUIntНазвание, стандартное числовое значениеСоздать переменную uint
boolCreateFloatНазвание, стандартное числовое значениеСоздать переменную float
boolCreateDoubleНазвание, стандартное числовое значениеСоздать переменную double
boolCreateStringНазвание, стандартное string значениеСоздать переменную string
boolCreateEventНазваниеСоздать эвент
JavaScript:
//создаем панель
var noesisObj = api.noesis.Create();

//всегда создаем конвертор перед загрузкой документа
noesisObj.CreateConverter("ToStringConverter", NoesisConverter);

//создаем viewmodel
var viewmodelObj = noesisObj.CreateViewModel(InitViewModel);

//только после создания модели загружаем документ
noesisObj.LoadDocument("test.xaml");

function NoesisConverter(value)
{
    //выводим значение которое пришло и возвращаем измененное значение
    console.log("[NoesisConverter]", value);
    return "TEST_" + value + "_TEST";
}

function InitViewModel(obj)
{
    obj.CreateInt("test1", 0);
    obj.CreateUInt("test2", 0);
    obj.CreateFloat("test3", 0);
    obj.CreateDouble("test4", 0);
    obj.CreateString("test5", "");
    obj.CreateEvent("TestEvent");
}

//далее можем задать любые значения переменным для использования их в документе
viewmodelObj.test1 = 101;
viewmodelObj.test2 = 202;
viewmodelObj.test3 = 303;
viewmodelObj.test4 = 404;
viewmodelObj.test5 = 505;

//так можно вызвать эвент
viewmodelObj.TestEvent();
api.callback.?

РезультатФункцияАргументыОписание
boolAddНазвание, функцияДобавить
boolRemoveНазвание, функцияУдалить
JavaScript:
api.callback.Add("PlayerHit", PlayerHitCallback);
function PlayerHitCallback(obj)
{
    if (obj.Enemy)
    {
        console.log("попал по противнику");
    }
    else
    {
        console.log("попал по союзнику");
    }
 
    if (obj.Headshot)
    {
        console.log("попал в голову");
    }
}

Список каллбеков:
НазваниеАргументы функции при вызовеОписание
BuildUserInfoCvarsBuildUserInfoCvarsObjectПодготовка списка setinfo команд перед отправкой на сервер
DeathNoticeEventDeathNoticeEventObjectСобытие уведомления о смерти
JoinToServerнетЗашел на сервер
DisconnectFromServerDisconnectFromServerObjectВышел с сервера
PlayerHitPlayerHitObjectПопал по игроку
PlaySoundPlaySoundObjectПроигрывание кастомного звука с сервера
ChatMessageChatMessageObjectСообщение чата
MapStartнетНачало карты
MapEndнетКонец карты
RoundStartнетНачало раунда
RoundEndнетКонец раунда

РезультатФункцияАргументыОписание
листGetListнетПолучить список команд
boolAddOrSetValueНазвание, значениеДобавить или установить значение команды
boolSetValueНазвание, значениеУстановить значение команды
stringGetValueНазваниеПолучить значение команды
boolRemoveНазваниеУдалить команду
ПеременнаяОписание
AttackerКто убил
VictimКого убил
AssisterКто помог
WeaponОружие
HeadshotВ голову
PenetratedПрострелом
AssistedFlashКто помог флешкой
SuicideИгрок самоубился
AttackerBlindКто убил был слепой
SmokeЧерез дым
NoScopeБез снайперского прицела
ПеременнаяОписание
MessageПричина выхода с сервера
ПеременнаяОписание
EnemyПротивник
HeadshotВ голову
Верните значение false чтобы отменить воспроизведение звука.
Важно понимать, что сюда попадают только нестандартные звуки, которые игрок качает по желанию с сервера.
ПеременнаяОписание
NameИмя звукового файла
IsLocalЛокальный звук
IsPlayerЗвук от игрока
IsWorldЗвук от мира или карты
FlagsФлаги звука
ChannelКанал звука
VolumeГромкость
РезультатФункцияАргументыОписание
boolSetVolumeЧисло от 0.0 до 1.0Задать громкость
Верните значение false чтобы отменить отображение сообщения.
На серверах, где используется разукрашенный чат, может некорректно определяться сообщение от игрока.
РезультатФункцияАргументыОписание
stringGetMessageнетПолучить сообщение
boolSetMessageТекстЗадать сообщение
boolIsRadioнетРадио сообщение
boolIsServerнетСерверное сообщение
boolIsSystemнетСистемное сообщение
boolIsSayнетСообщение от игрока
 
Last edited:
Status
Not open for further replies.
Back
Top