Как сделать профессию за время или игровую валюту?

Нужна профессия которая будет доступна только по истечению времени или после покупки ее через деньги. Анти-РДМ.

Вот самый простой пример не требующий дополнительных библиотек и прочего:

TEAM_MOB = DarkRP.createJob("Mob boss", {
    color = Color(25, 25, 25, 255),
    model = "models/player/gman_high.mdl",
    description = [[The Mob boss is the boss of the criminals in the city.
        With his power he coordinates the gangsters and forms an efficient crime organization.
        He has the ability to break into houses by using a lockpick.
        The Mob boss posesses the ability to unarrest you.]],
    weapons = {"lockpick", "unarrest_stick"},
    command = "mobboss",
    max = 1,
    salary = GAMEMODE.Config.normalsalary * 1.34,
    admin = 0,
    vote = false,
    hasLicense = false,
    category = "Gangsters",
    customCheck = function(ply)
        if not ply:GetPData("MobBoss", false) then
                if ply:canAfford(5000) == false then
                        ply:ChatPrint("Вы не можете себе позволить покупку этой профессии за 5000$")
                        return false
                end

                ply:addMoney(-5000)
                ply:SetPData("MobBoss", "1")
        end
    
})

В качестве более совершенной альтернативы могу предложить: Job System | Job Employer NPCs · gmodstore
Он имеет поддержку покупки профессий за внутриигровую валюту и разблокирование профессий за время - из коробки.

customCheck = function(ply)
    if ply:GetUTimeTotalTime() >= 18000 then
        return true
            if CLIENT then
                return true
            else
                return false
            end
        end
    else
        return false
    end
end,
CustomCheckFailMsg = "Тебе нужно отыграть 5 часов на сервере что-бы зайти за эту проффесию"

насчет кода не уверен но попробуй если не сработает напиши

Если все еще нужен ответ:

  • Добавляешь на сервер Utime
  • Добавляешь к любой профессии эти строчки
  • Радуешься жизни
customCheck = function(ply) return CLIENT or ply:GetUTimeTotalTime() >= ВРЕМЯ_В_СЕКУНДАХ end,
CustomCheckFailMsg = Нужно наиграть X часов на сервере, чтобы взять эту работу!,

Пример на профе мэра:

TEAM_MAYOR = DarkRP.createJob("Мэр", {
	color = Color(255, 36, 0, 255),
	model = { 
		"models/player/breen.mdl", "models/player/breen.mdl",
	},
	description = [[Будучи мэром данного городка, вам придется трудиться не покладая рук, дабы в городе все процветало, а у вас появлялись поклонники, а не враги..]],
	weapons = {},
	command = "mayor",
	max = 1,
	salary = 1000,
	admin = 0,
	vote = true,
	hasLicense = true,
	mayor = true,
	hasRadio = true,
	category = "Государственная власть",
	sortOrder = 40,
	customCheck = function(ply) return CLIENT or ply:GetUTimeTotalTime() >= 43200 end,
	CustomCheckFailMsg = "Нужно наиграть 12 часов на сервере, чтобы взять эту работу",
	PlayerDeath = function(ply, weapon, killer)
   		if( ply:Team() == TEAM_MAYOR ) then
    		ply:changeTeam( GAMEMODE.DefaultTeam, true )
    	for k,v in pairs( player.GetAll() ) do
    		v:PrintMessage( HUD_PRINTCENTER, "Мэр был убит!" )
    		end
    	end
    end
})