*bone_ff.lua – Требует _findmeta.lua
bone_ff.lua (1,1 КБ)
добавляет 2 мета функции
- id (int) ,model (string) ← Entity:FF_FindBone(имя кости)
ищет кость у сущности по не полному названию, после чего кэширует по моделе и названию, из за чего в постоянном использовании будет эффективней чем постоянное использование перебора:
for i = 0, entity:GetBoneCount() - 1 do
if entity:GetBoneName( i ) == name then return i end
end
-- или
entity:LookupBone(name)
local PL=Entity(1)
local id,mdl=PL:FF_findbone('HEad')--head,HEAD и т.д
-- хоть полное название может быть ValveBiped.Bip01_Head1
-- id это id кости, mdl это модель сущности, мало ли нужно будет дальше в коде.
- Vector,Angle ← Entity:FF_GetBonePosition(id кости)
замена GetBonePosition, так как она привязана к Тику SV части, из за чего если частота игрока выше чем у сервера, то при использовании GetBonePosition будут видны разрывы
*_findmeta.lua
_findmeta.lua (473 байта)
добавляет 4 функции
- metaTable ← FF_meta(название мета таблицы, ключ таблицы)
использует FindMetaTable
local met = 'Entity'
local GetModel = FF_meta(met, 'GetModel') -- вернёт функцию Entity:GetModel()
local FF_meta(met) -- вернёт Мета Таблицу Entity
- metaTable ← FF_AddBindMeta(название ключа,название мета таблицы, ключ таблицы)
Позволяет кэшить нужную мета таблицу или её ключ.
-- так же возвращает указанный ключ/мета таблицу.
local get_model =FF_AddBindMeta('ent_m','Entity','GetModel')
- metaTable ← FF_BindMeta (название ключа)
нужен для получения кэшированной мета таблицы
local get_model =FF_BindMeta('ent_m')
4)FF_AddMeta (название мета таблицы, ключ таблицы, функция)
нужна что бы вставлять в кэшированную мета таблицу новую функцию
Кэшированная мета таблица то же самое что и обычная
FF_AddMeta('Entity', 'RetrunHeal', function(self)
return self:Heal()
end)
-- это то же самое что и
local ENT=FindMetaTable('Entity')
ENT.RetrunHeal=function(self)
return self:Heal()
end
-- или
function ENT:RetrunHeal()
return self:Heal()
end
-- но не будет кэшится в каждом файле (Мета таблица)