Объекты
Объект игрока (и бота)
Доступ к объекту игрока осуществляется с помощью 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 - Красный цвет.