Перейти к основному содержимому

Объекты

Объект игрока (и бота)

Доступ к объекту игрока осуществляется с помощью API.players[ID], где ID - ID игрока на сервере. Доступ к объекту возможен только когда игрок находится на сервере.

У объекта игрока есть базовые свойства, с которыми можно работать:

  • id (int) - ID игрока.
  • x (float) - координата на оси X.
  • y (float) - координата на оси Y.
ось 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) - направление, куда котик будет смотреть, когда стоит на месте (не бежит и не ходит).

Варианты значений v

1 - Вниз-вправо 2 - Вниз-влево 3 - Вверх-вправо 4 - Вверх-влево

  • hp (float) - текущее здоровье игрока.
  • maxhp (float) - максимальное здоровье игрока. Если hp игрока превышает maxhp, hp становится равным maxhp.
  • vis (int) - видимость игрока. Если .vis = 1, то игрока видят другие игроки. Если .vis = 0, то игрок становится невидим для других игроков (и для себя тоже). [возможно стоит добавить что если vis = -1 то игрок видит сам себя но другие его не видят].

Методы для взаимодействия с игроком

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) - референс на функцию для указания логики объекта.
Creator

Пример владельца игрока: {"p": pID}. Если игрок с указанным ID отключается, то объект будет автоматически удален.

Помимо просто ID, можно указать еще и свойства объекта игрока с определенным значением в массив playerConditions. Если значение поменяется, или свойство будет удалено, объект также будет удален.

Пример:

// Если pRef.name1 не существует, или он не равен "value1", созданный ниже объект будет сразу удален.

let _objectID = API.createObject("Object", {"p": pRef.id, "playerConditions": [{"property": "name1", "value": "value1"}]}, _x, _y);

Логика объекта - logicFunc

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

Для этого нужно создать функцию, после чего присвоить ее свойству .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 - Красный цвет.