Объекты
Объект игрока (и бота)
Доступ к объекту игрока осуществляется с помощью API.players[ID]
, где ID
- ID игрока на сервере.
Доступ к объекту возможен только когда игрок находится на сервере.
ID ботов отрицательные. Так можно определить, что конкретный объект игрока является ботом (ID < 0).
У объекта игрока есть базовые свойства, с которыми можно работать:
id
(int) - ID игрока.x
(float) - координата на оси X.y
(float) - координата на оси Y.
Нужно учитывать, что на клиенте координата игрока по оси Y делится на 1.5
от той позиции Y, на которой этот игрок находится на сервере.
Это сделано для создания иллюзии трехмерного пространства, в котором движение вверх и вниз происходит медленнее, чем вправо и влево. Камера клиента как бы "повернута под углом". Это нужно для создания иллюзии изометрического пространства. Позиции объектов и игроков на клиенте как бы "сжаты", хотя расстояние между ними на сервере все еще полноценное.
Таким образом, на клиенте игрок визуально бежит медленнее вверх и вниз, нежели влево и вправо.
Эту систему можно отключить с помощью модификации свойства scaleY
в config.js
. Если установить значение "scaleY": 1.5,
на "scaleY": 1,
то персонаж игрока будет бежать одинаково быстро во все стороны.
-
cameraDistance
(float) - отдаление камеры клиента от персонажа (по-умолчанию:7
). -
rank
(int) - отображаемый ранг игрока. -
name
(string) - отображаемый никнейм игрока. -
speed
(float) - скорость передвижения игрока. Значание по-умолчанию:0.425
. -
v
(int) - направление, куда котик будет смотреть, когда стоит на месте (не бежит и не ходит).
1
- Вниз-вправо
2
- Вниз-влево
3
- Вверх-вправо
4
- Вверх-влево
-
hp
(float) - текущее здоровье игрока. -
maxhp
(float) - максимальное здоровье игрока. Еслиhp
игрока превышаетmaxhp
,hp
становится равнымmaxhp
. -
vis
(int) - видимость игрока. Если.vis = 1
, то игрока видят другие игроки. Если.vis = 0
, то игрок становится невидим для других игроков (и для себя тоже). -
objs.sV
(int) - окрас котика (от 0 до 11 включительно, например черезMath.floor(Math.random()*12)
). Это значение автоматически заполняется актуальным окрасом игрока в Kotiki Online. -
objs.pV
(int) - тип паттерна шерсти котика (от 0 до 3 включительно, например черезMath.floor(Math.random()*3)
). Это значение автоматически заполняется актуальным окрасом игрока в Kotiki Online.
Методы для взаимодействия с игроком
API.showStatus(pRef, colorType, status)
pRef
(object) - референс к объекту игрока.colorType
(int) - тип цвета (число от 0 до 5) сообщения.status
(string) - отображаемое сообщение.
Метод отображает сообщение status
рядом с персонажем. Сообщение "вылетает" из персонажа и быстро исчезает. Этот метод обычно используется для отображения полученного урона на персонаже.
Варианты colorType
:
0
- Белый цвет.
1
- Желтый цвет.
2
- Синий цвет.
3
- Зеленый цвет.
4
- Красный цвет.
Нельзя использовать эти символы в теле status
:
"
, '
, :
, ;
, ,
.
Объект объекта
id
(int) - ID объекта.type
(string) - тип объекта.creator
(object) - владелец объекта. Если владелец объекта удаляется (отключившийся игрок-владелец, или удаленный объект-владелец), то и этот дочерний объект тоже удаляется.x
(float) - координата на оси X.y
(float) - координата на оси Y.d
(int) - находится ли объект в очереди на удаление.1
если да,0
если нет.logicFunc
(function) - референс на функцию для указания логики объекта.
Пример владельца игрока: {"p": pID}
. Если игрок с указанным ID отключается, то объект будет автоматически удален.
Помимо просто ID, можно указать еще и свойства объекта игрока с определенным значением в массив playerConditions. Если значение поменяется, или свойство будет удалено, объект также будет удален.
Пример:
// Если pRef.name1 не существует, или он не равен "value1", созданный ниже объект будет сразу удален.
let _objectID = API.createObject("Object", {"p": pRef.id, "playerConditions": [{"property": "name1", "value": "value1"}]}, _x, _y);
Объекту можно присвоить логику, которая будет исполняться для него каждый тик сервера.
Для этого нужно создать функцию, после чего присвоить ее свойству .logicFunc
у объекта.
Пример функции логики, которая будет каждый тик сервера отображать сообщение "Hello!"
из объекта:
function DemoPrefabLogic(oID, objRef){
API.showStatus(objRef, 0, "Hello!");
}
И чтобы выставить эту логику объекту:
let objectID = 1;
let oRef = API.objects[objectID];
if (oRef !== undefined){
oRef.logicFunc = DemoPrefabLogic;
}
Обратите внимание, что мы указываем именно на DemoPrefabLogic
без скобок ()
, так как при использовании скобок функция бы просто выз валась, а не установилась бы в качестве референса.
Когда KotikiServer вызывает функции логики объектов, он автоматически передает в такие функции аргументы oID
и objRef
.
Первый аргумент это ID объекта, а второй аргумент это референс на объект.
Методы для взаимодействия с объектом
API.showStatus(oRef, colorType, status)
oRef
(object) - референс к объекту.colorType
(int) - тип цвета (число от 0 до 5) сообщения.status
(string) - отображаемое сообщение.
Метод отображает сообщение status
рядом с объектом. Сообщение "вылетает" из объекта и быстро исчезает. Этот метод обычно используется для отображения полученного урона на персонаже.
Варианты colorType
:
0
- Белый цвет.
1
- Желтый цвет.
2
- Синий цвет.
3
- Зеленый цвет.
4
- Красный цвет.