Как сделать ивент с комбайнами

Как сделать ивент с убийством комбайнов или вертолора что б у него было много хп и было сложно убить.
В награду давали донат валута

и как сделать аддон на систему скинов оружия гмод.
!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)

а как активировать зомби ивент?

я дал код по большей части для разработчиков. Его нельзя просто взять и установить к себе, но с минимальными знаниями в программировании любой может подстроить его под себя и сделать рабочим так, как ему нужно