Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта NetZONA.org: https://netzona.org/help/public-offer/
Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами использования Ваших файлов cookie на Проекте NetZONA.org: https://netzona.org/help/cookies/
Приветствуем на сайте, Гость! Обязательно ознакомьтесь с Политикой конфиденциальности Проекта NetZONA.org: https://netzona.org/pages/privacy-policy/
Ответы на основные вопросы: https://netzona.org/threads/populjarnye-voprosy-i-otvety-na-nix.6122/
Приветствуем на сайте, Гость! Приобрести (купить) Информационную услугу (в том числе группу "Проверенный") на Проекте NetZONA.org: https://netzona.org/account/upgrades
local immFactions = { -- иммунитет фракций
[FACTION_ADMIN] = true,
[FACTION_CITIZEN] = true,
}
local nxtThk = CurTime()
function PLUGIN:Think()
if (nxtThk < CurTime()) then
for k, v in ipairs(ents.FindByClass("npc_*")) do
if (v:IsNPC() and !IsValid(v:GetEnemy())) then
local target = NULL
local dist = 512
for _, ply in ipairs(player.GetHumans()) do
if (IsValid(ply) and ply:IsPlayer() and ply:Alive()) then
if (immFactions[nut.faction.indices[ply:Team()]]) then continue end
local dist2 = ply:GetPos():Distance(v:GetPos())
if dist2 < dist then
dist = dist2
target = ply
end
else
v:SetEnemy(NULL)
end
end
v:SetEnemy(target)
v:UpdateEnemyMemory(target, target:GetPos())
v:SetSaveValue("m_vecLastPosition", target:GetPos())
v:SetSchedule(SCHED_FORCED_GO)
end
end
nxtThk = CurTime() + 1
end
end
если тебе нужны какие то конкретно нпс то вот кодНо, я хотел отдельным нпс.
Я использую VJbase
local immFactions = { -- иммунитет фракций
[FACTION_ADMIN] = true,
[FACTION_CITIZEN] = true,
}
local npcs = {
["npc_zombie"] = true,
["npc_headcrab"] = true,
}
local nxtThk = CurTime()
function PLUGIN:Think()
if (nxtThk < CurTime()) then
for k, v in ipairs(ents.FindByClass("npc_*")) do
if (v:IsNPC() and npcs[v:GetClass()] and !IsValid(v:GetEnemy())) then
local target = NULL
local dist = 512
for _, ply in ipairs(player.GetHumans()) do
if (IsValid(ply) and ply:IsPlayer() and ply:Alive()) then
if (immFactions[nut.faction.indices[ply:Team()]]) then continue end
local dist2 = ply:GetPos():Distance(v:GetPos())
if dist2 < dist then
dist = dist2
target = ply
end
else
v:SetEnemy(NULL)
end
end
v:SetEnemy(target)
v:UpdateEnemyMemory(target, target:GetPos())
v:SetSaveValue("m_vecLastPosition", target:GetPos())
v:SetSchedule(SCHED_FORCED_GO)
end
end
nxtThk = CurTime() + 1
end
end
если тебе нужно настроить в самом vjbase то делай в функциях : function ENT:SelectSchedule() и function ENT:FindEnemy()Окей, а можно это в код нпс засунуть? Имею в виду. Взять какого-нибудь нпс из аддона VJ и сделать так, чтобы он всех атаковал, но засунуть туда код, который заставлял не атаковал нужные мне фракции NS.
Нет в нпс самом, не в базе, а в нпс.
Желательно бы полный код...
[doublepost=1513461317,1513461256][/doublepost]Я просто 100% криво напишу.
function ENT:SelectSchedule()
if self:GetEnemy() != nil then
if immFactions[nut.faction.indices[self:GetEnemy():Team()]] then
self:SetSchedule(SCHED_CHASE_ENEMY)
self:SetEnemy(NULL)
else
self:DoIdleAnimation()
end
end
end
function ENT:FindEnemy()
for k,v in pairs(EnemyTargets) do
if immFactions[nut.faction.indices[v:Team()]] then continue end
-- ниже код
end
end