Перейти к содержанию

Client

Этот модуль содержит функции, необходимые для управления клиентами (реальными, либо виртуальными, ботами). Для подключения его функций используйте директиву #include <client.h>.

Доступные функции

Warning

Функции в этом разделе, помеченные звёздочкой (*), не будут отсылать никаких пакетов ванильным клиентам, не поддерживающим расширение классического протокола (CPE).

Client_NewBot

Создаёт новый объект Client и возвращает на него указатель. Управление ботами производится средствами этого модуля.

Client *Client_NewBot(void);

Client_IsBot

Проверяет, является ли переданный клиент ботом.

cs_bool Client_IsBot(Client *client);

Client_Lock

Блокирует структуру клиента при многопоточном взаимодействии.

void Client_Lock(Client *client);

Client_Unlock

Разблокирует структуру клиента.

void Client_Unlock(Client *client);

Client_ChangeWorld

Переносит клиента в указанный мир.

cs_bool Client_ChangeWorld(Client *client, World *world);

Client_Chat

Отправляет игроку сообщение указанного типа.

Note

Типы сообщений определяются расширением классического протокола (CPE), если игрок использует клиент без CPE, то сообщение при любом параметре type будет показано в чате!

void Client_Chat(Client *client, EMesgType type, cs_str message);

Client_Kick

Кикает указанного клиента.

Note

Если клиент является ботом, то после вызова этой функции он будет удалён, с этого момента обращаться к объекту более нет возможности.

void Client_Kick(Client *client, cs_str reason)

Client_KickFormat

Кикает указанного клиента, отправляя ему отформатированное сообщение.

void Client_KickFormat(Client *client, cs_str format, ...);

Client_UpdateWorldInfo *

Отправляет игроку CPE пакет обновления окружения (погода, цвета, текстурпак и другие параметры)

Warning

Не рекомендуется использовать данную функцию вручную, работу можно предоставить этой функции, она автоматически отправит пакет всем клиентам, которые находятся в указанном мире.

void Client_UpdateInfo(Client *client, World *world, cs_bool updateAll);

Client_Update *

Отправляет всем клиентам, находящимся в одном мире с указанным клиентом, CPE пакеты для обновления некоторых параметров его сущности (модель, отображаемый ник, вращение модели).

void Client_Update(Client *client);

Client_SendHacks *

Отправляет изменения чит-параметров указанному игроку.

cs_bool Client_SendHacks(Client *client, CPEHacks *hacks);

Client_NewSelection

Данная функция создаёт область выделения для указанного клиента. Функции для изменения параметров выделенной области описаны здесь.

Warning

Если клиент не поддерживает CPE дополнение SelectionCuboid, функция вернёт NULL!

CPECuboid *Client_NewSelection(Client *client);

Client_UpdateSelection *

Отправляет игроку параметры для создания выделенной области.

cs_bool Client_UpdateSelection(Client *client, CPECuboid *cub);

image

Client_RemoveSelection *

Удаляет выделение с области.

Warning

Использование объекта CPECuboid после вызова этой функции невозможно!

cs_bool Client_RemoveSelection(Client *client, CPECuboid *cub);

Client_TeleportTo

Телепортирует указанного клиента на точку vec с направлением взгляда ang.

cs_bool Client_TeleportTo(Client *client, Vec *pos, Ang *ang);

Client_TeleportToSpawn

Телепортирует клиента на точку спавна того мира, в котором он находится в данный момент.

cs_bool Client_TeleportToSpawn(Client *client);

Client_CheckState

Проверяет, находится ли клиент в указанном состоянии.

cs_bool Client_CheckState(Client *client, EClientState state);

Client_IsClosed

Проверяет, было ли закрыто соединение с указанным клиентом.

Note

Если соединение с клиентом было закрыто, сервер перестанет пытаться отправить ему какие-либо пакеты и в скором времени удалит его объект из памяти, так что использование этого объекта в таком случае должно прекратиться!

cs_bool Client_IsClosed(Client *client);

Client_IsLocal

Проверяет, находится ли указанный клиент в локальной сети вместе с сервером.

cs_bool Client_IsLocal(Client *client);

Client_IsInSameWorld

Проверяет, находятся ли указанные клиенты в одном мире.

cs_bool Client_IsInSameWorld(Client *client, Client *other);

Client_IsInWorld

Проверяет, находятся ли клиент в указанном мире.

cs_bool Client_IsInWorld(Client *client, World *world);

Client_IsOP

cs_bool Client_IsOP(Client *client);

Client_IsSpawned

cs_bool Client_IsSpawned(Client *client);

Client_IsFirstSpawn

cs_bool Client_IsFirstSpawn(Client *client);

Client_SetDisplayName

cs_bool Client_SetDisplayName(Client *client, cs_str name);

Client_SetWeather

cs_bool Client_SetWeather(Client *client, cs_int8 type);

Client_SetInvOrder

cs_bool Client_SetInvOrder(Client *client, cs_byte order, BlockID block);

Client_SetServerIdent

cs_bool Client_SetServerIdent(Client *client, cs_str name, cs_str motd);

Client_SetEnvProperty

cs_bool Client_SetEnvProperty(Client *client, EProp property, cs_int32 value);

Client_SetEnvColor

cs_bool Client_SetEnvColor(Client *client, EColor type, Color3* color);

Client_SetTexturePack

cs_bool Client_SetTexturePack(Client *client, cs_str url);

Client_AddTextColor

cs_bool Client_AddTextColor(Client *client, Color4* color, cs_char code);

Client_SetBlock

void Client_SetBlock(Client *client, SVec *pos, BlockID id);

Client_SetModel

cs_bool Client_SetModel(Client *client, cs_int16 model);

Client_SetModelStr

cs_bool Client_SetModelStr(Client *client, cs_str model);

Client_SetBlockPerm

cs_bool Client_SetBlockPerm(Client *client, BlockID block, cs_bool allowPlace, cs_bool allowDestroy);

Client_SetHeldBlock

cs_bool Client_SetHeldBlock(Client *client, BlockID block, cs_bool preventChange);

Client_SetClickDistance

cs_bool Client_SetClickDistance(Client *client, cs_uint16 dist);

Client_SetHotkey

cs_bool Client_SetHotkey(Client *client, cs_str action, ELWJGLKey keycode, ELWJGLMod keymod);

Client_SetHotbar

cs_bool Client_SetHotbar(Client *client, cs_byte pos, BlockID block);

Client_SetSkin

cs_bool Client_SetSkin(Client *client, cs_str skin);

Client_SetSpawn

cs_bool Client_SetSpawn(Client *client, Vec *pos, Ang *ang);

Client_SetOP

cs_bool Client_SetOP(Client *client, cs_bool state);

Client_SetVelocity

cs_bool Client_SetVelocity(Client *client, Vec *velocity, cs_byte mode);

Client_SetProp

cs_bool Client_SetProp(Client *client, EEntProp prop, cs_int32 value);

Client_SetGroup

cs_bool Client_SetGroup(Client *client, cs_uintptr gid);

Client_SpawnParticle

cs_bool Client_SpawnParticle(Client *client, cs_byte id, Vec *pos, Vec *origin);

Client_SendPluginMessage

cs_bool Client_SendPluginMessage(Client *client, cs_byte channel, cs_str message);

Client_UndefineModel

cs_bool Client_UndefineModel(Client *client, cs_byte id);

Client_ExtTeleportTo

cs_bool Client_ExtTeleportTo(Client *client, cs_byte behavior, Vec *pos, Ang *ang);

Client_GetState

EClientState Client_GetState(Client *client);

Client_GetName

cs_str Client_GetName(Client *client);

Client_GetDisplayName

cs_str Client_GetDisplayName(Client *client);

Client_GetAppName

cs_str Client_GetAppName(Client *client);

Client_GetKey

cs_str Client_GetKey(Client *client);

Client_GetSkin

cs_str Client_GetSkin(Client *client);

Client_GetDisconnectReason

cs_str Client_GetDisconnectReason(Client *client);

Client_GetID

ClientID Client_GetID(Client *client);

Client_GetByID

Client *Client_GetByID(ClientID id);

Client_GetByName

Client *Client_GetByName(cs_str name);

Client_GetWorld

World *Client_GetWorld(Client *client);

Client_GetStandBlock

BlockID Client_GetStandBlock(Client *client);

Client_GetFluidLevel

cs_int8 Client_GetFluidLevel(Client *client, BlockID *fluid);

Client_GetModel

cs_int16 Client_GetModel(Client *client);

Client_GetHeldBlock

BlockID Client_GetHeldBlock(Client *client);

Client_GetClickDistance

cs_uint16 Client_GetClickDistance(Client *client);

Client_GetClickDistanceInBlocks

cs_float Client_GetClickDistanceInBlocks(Client *client);

Client_GetPosition

void Client_GetPosition(Client *client, Vec *pos, Ang *ang);

Client_GetExtVer

cs_int32 Client_GetExtVer(Client *client, cs_ulong exthash);

Client_GetAddr

cs_uint32 Client_GetAddr(Client *client);

Client_GetPing

cs_int32 Client_GetPing(Client *client);

Client_GetAvgPing

cs_float Client_GetAvgPing(Client *client);

Client_GetGroup

CGroup *Client_GetGroup(Client *client);

Client_GetGroupID

cs_uintptr Client_GetGroupID(Client *client);

Client_Spawn

cs_bool Client_Spawn(Client *client);

Client_Despawn

cs_bool Client_Despawn(Client *client);