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);

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);