Как сделать ивент с убийством комбайнов или вертолора что б у него было много хп и было сложно убить.
В награду давали донат валута
и как сделать аддон на систему скинов оружия гмод.
!skin и там можно на м9к оружия делать всякие скины
Ивент.
Сбособ вызова какой:
Автомат( статичное время , либо случайное ), Админ(Root), Донат
Какие Цели должны быть достигнуты(На сервере 20 игроков и т.д)
в рандомное время там от 3-12 часов появляется босс вертолет с много хп.
Игроки его убивать и после кто в топ 3 нанес много хп дается по донатке.
1 - 250р
2- 100р
3 -50р
Когда-то на своем сервере я делал ивент “зомби”. На сервере спавнилось куча зомби и людям давался дробаш, чтобы их убивать. За каждого зомби выдавалась игровая валюта.
Можете посмотреть код, если интересно, но запустить без навыков программирования у вас его не получится. Если будет интересно – смогу за доплату сделать, чтобы он работал у вас.
Путь был: addons/addonname/lua/darkrp_modules/events_misc/sv_npcrage.lua
-- https://trello.com/c/N0ai0J3W/
-- Звук или эффект при спавне и удалении НПС
-- Звук при убийстве NPC
-- Музыка на время ивента
local WEAPON -- fas2_m3s90 or swb_m3super90
local NPCLASS = "npc_zombie"
local function IsFAS()
return weapons.GetStored("fas2_ak47") ~= nil
end
local function GetRandomPosUnderSky()
local random
repeat
random = VectorRand() * 16000
until util.IsInWorld(random) and random:IsOutside()
return random
end
local top = {}
local function RewardWinners()
local i = 0
for pl,kills in SortedPairsByValue(top,true) do
i = i + 1
if i > 3 then break end
chat.event(i .. " место: " .. pl:Nick() .. " (" .. kills .. " зомби)")
pl:addMoney(30 * kills,"NPC Rage #" .. i .. " place")
end
table.Empty(top)
end
local function IncrementKillsCounter(pl) -- вызывается после убийства NPC
top[pl] = (top[pl] or 0) + 1 -- increment counter
end
--[[-------------------------------------------------------------------------
ХУКИ
---------------------------------------------------------------------------]]
local function StopThinking() -- отключение хуков проверки убийств
hook.Remove("OnNPCKilled","EVENT.NPC")
hook.Remove("PlayerTakeDamage","EVENT.NPC")
hook.Remove("canDropWeapon","EVENT.NPC")
hook.Remove("PlayerDeath","EVENT.NPC")
end
local function StartThinking() -- активация хуков проверки убийств NPC
hook.Add("OnNPCKilled","EVENT.NPC",function(npc,pl)
-- упал с высоты, убил другой НПС, взрыв. Хз
if !pl:IsPlayer() or npc:GetClass() ~= NPCLASS then return end
local wep = pl:GetActiveWeapon()
if wep:GetClass() == WEAPON then
IncrementKillsCounter(pl)
else
notif(pl,"Для получения награды NPC нужно убивать из выданного оружия - " .. WEAPON,NRED)
end
end)
local last_notif = 0
hook.Add("PlayerTakeDamage","EVENT.NPC",function(pl, _, _, _, dmg)
if !dmg:IsBulletDamage() then return end
if last_notif + 5 < CurTime() then
chat.event("Урон по игрокам на время ивента отключен")
last_notif = CurTime()
end
return true -- prevent damage
end)
hook.Add("canDropWeapon","EVENT.NPC",function(pl,wep)
if wep.FOR_EVENT then
return false
end
end)
hook.Add("PlayerDeath","EVENT.NPC",function(pl)
notif(pl,"Теперь вам нечем обороняться. Прячьтесь")
end)
end
--[[-------------------------------------------------------------------------
NPC
---------------------------------------------------------------------------]]
local function SpawnNPC(pos)
local npc = ents.Create("npc_zombie")
npc:SetPos(pos)
-- npc:SetAngles(ang) -- сделать рандомным
npc:Spawn()
npc:Activate()
npc:SetBloodColor(BLOOD_COLOR_ZOMBIE)
return npc
end
local npcs = {}
local function SpawnNPCs(iAm) -- расстановка НПС (Рандомные точки под небом)
local pls = player.GetAll()
for i = 1,iAm do
local pos = GetRandomPosUnderSky()
local npc = SpawnNPC(pos)
-- https://trello.com/c/uYyeBsl8/923-eventsmisc-npcragesvlua110
if !IsValid(npc) then continue end
local pl = pls[math.random(#pls)]
npc:AddEntityRelationship(pl, D_HT, 99 ) -- Hate random pl
table.insert(npcs,npc)
end
end
local function RemoveNPCs()
for i,npc in ipairs(npcs) do
npcs[i] = nil
if IsValid(npc) then
npc:Remove()
end
end
end
--[[-------------------------------------------------------------------------
Оружие
---------------------------------------------------------------------------]]
local function GiveWeapons()
if !WEAPON then
WEAPON = IsFAS() and "fas2_m3s90" or "swb_m3super90"
end
for _,pl in ipairs( player.GetAll() ) do
if pl:HasWeapon(WEAPON) then
notif(pl,"Убивайте зомби при помощи вашего " .. WEAPON)
continue
end
local wep = pl:Give(WEAPON)
pl:SetAmmo(666,wep:GetPrimaryAmmoType())
pl:SetActiveWeapon(wep)
wep.FOR_EVENT = true
notif(pl,"Вам выдано оружие для убийства NPC")
end
end
local function TakeWeapons()
for _,pl in ipairs( player.GetAll() ) do
local wep = pl:GetWeapon(WEAPON)
if IsValid(wep) and wep.FOR_EVENT then
wep:Remove()
end
end
end
--[[-------------------------------------------------------------------------
Лаунчеры
---------------------------------------------------------------------------]]
local function Stop()
RewardWinners()
RemoveNPCs()
TakeWeapons()
StopThinking()
chat.event("Ивент закончен. Всем спасибо")
end
local function Start()
if timer.Exists("EVENT.NPC") then
chat.event("Ивент в процессе")
return
end
chat.event("Убивайте NPC, чтобы получить награду!")
GiveWeapons()
SpawnNPCs(100)
StartThinking()
timer.Create("EVENT.NPC",60 * 2,1,Stop)
end
-- Start()
-- eventer.Register("Нашествие NPC",Start,1,true)