- 8,934
- 11,702
Всем хай, я тут решил начать писать доту в сампе с нуля. Если вы хотите помочь с разработкой / добавить что-то свое, то можете использовать мини апи для создания предметов!
(позже выложу в эту тему такое же "апи" для создания героев)
каждый предмет лежит в отдельном скрипте, например:
В этой теме вы можете выложить свои предметы и я вставлю их в скрипт.
Скрипт представляет из себя "мини модуль", который возвращает таблицу со следующими значениями:
Пример блинка:
Результат:
(позже выложу в эту тему такое же "апи" для создания героев)
каждый предмет лежит в отдельном скрипте, например:
moonloader/dota/item/dlink_dagger.lua
.В этой теме вы можете выложить свои предметы и я вставлю их в скрипт.
Скрипт представляет из себя "мини модуль", который возвращает таблицу со следующими значениями:
Lua:
---@enum ItemType
local ItemType = {
PASSIVE = 0,
VECTOR = 1,
TARGET_ENTITY = 2,
TARGET_ENEMY = 3,
TARGET_TEAM = 4,
TARGET_POINT = 5,
INSTANT = 6,
TOGGLEABLE = 7
};
---@enum PlayerStat
local PlayerStat = {
maxHealth = 0,
maxMana = 1,
healthRegen = 2,
manaRegen = 3,
damage = 4,
attackSpeed = 5,
speed = 6,
attackRange = 7,
}
---@class Item
---@field stats table<PlayerStat, number>? Статы которые дает предмет
---@field name string Название предмета
---@field manaRequired boolean? Мана, необходимая для использования предмета
---@field type ItemType | number Тип предмета
---@field targetRange number? Радиус применения
---@field toggled boolean? Включен ли предмет
---@field onWaitForTarget fun(...)? Функция выполняемая при ожидании выбора цели (только для ItemType.TARGET_*)
---@field category 'main' | 'upgrades' Категория предмета для магазина
---@field subCategory 'resources' | 'attributes' | 'gear' | 'other' | 'accessories' | 'support' | 'magic' | 'armour' | 'weapon' | 'artefact' подкатегоря в магазине
---@field iconBase85 string? Иконка в base85
---@field icon any Текстура для ImGui
---@field onUse fun(...): boolean? Функция выполняемая после выбора цели / переключения и т.д.. В качестве параметров передает: TARGET_POINT/VECTOR - положение курсора в 3д мире, TARGET_* - хендл выбранного игрока, при остальных типах передает nil
---@field onUseThread boolean? Вызывать функцию через lua_thread.create
---@field storage table? Локальные данные
---@field cooldown number? Время перезарядки
---@field lastUsed number?
Lua:
local Controls = require('dota.controls');
---@type Item
local blink_dagger = {
type = require('dota.types').ItemType.TARGET_POINT,
category = 'main',
subCategory = 'other',
name = 'Blink Dagger',
cooldown = 20,
targetRange = 10,
onUse = function(point)
if (point) then
setCharCoordinates(PLAYER_PED, point.x, point.y, point.z);
msg('teleported')
return true;
end
end
};
return blink_dagger;
Результат: