Написать код команды !viptest

как будет выглядеть скрипт, в котором по команде “viptest”,“testvip” будет активироваться определенный товар (привелегия)?

local command = '!viptest'

file.CreateDir( 'viptest_promo' )

hook.Add( 'PlayerSay', 'SayVipGetVip', function( ply, text ) 

	text = string.lower( text )
	if text == command then
		if not file.Exists( 'viptest_promo/' .. ply:SteamID64() .. '.txt', 'DATA' ) then
			file.Write( 'viptest_promo/' .. ply:SteamID64() .. '.txt', 'DATA' )
			IGS.PlayerActivateItem(ply, "IGS_ITEM_ID", function() end) -- укажи вместо IGS_ITEM_ID свой ID випки
		else
			ply:SendLua( 'chat.AddText( Color( 220, 20, 60 ), "[VIP]", Color( 255, 255, 255 ), " Вы уже получили свою випку" ) ' )
		end
		return ''
	end

end)

addons/papka/lua/autorun/server

код что ты сделал - откровенное дерьмо, если помогаешь - то пиши нормально

Спасибо за высер критику :grin:
Твой комментарий очень нужен мне.
Напиши же свой код, в чем проблема? Человек сам тогда выберет что ему по душе.

высер?

автору желаю вместо того чтоб использовать код юного lua мастера, создать в донате привилегию VIP Test, и добавить команду которая будет активировать этот ITEM, и вместо того чтобы записывать куда-то, что игрок использовал VIP Test сделать проверку - купил ли игрок этот предмет (IGS/ut_sh.lua at f2a0b317610f7f818a946c68b212ea5112705fef · GM-DONATE/IGS · GitHub). это же уже есть в функционале GMD, зачем придумывать свое откровенное дерьмо? нотификацию можно сделать опять же через GMD (IGS/ut_sv.lua at main · GM-DONATE/IGS · GitHub)

Ты даже на готовые ресурсы не смог ссылки дать, не говоря уже о коде…
Человеку нужен скрипт, а не твои высеры советы. Покажи же мастер класс и напиши ему заветный годно скрипт :face_with_thermometer:

UPD. Твой мозг заточен лишь “обосрать”, поэтому для автора:

IGS("Тестовая VIP", "vip_test", 0)
	:SetDescription("Тестовая випка на 7 дней")
	:SetMaxPlayerPurchases(1)
	:SetTerm(7)

И да, SetMaxPlayerPurchases и так отвечает за проверку на максимальное количество покупок, джимии нейтрон с гулем на аве

Тебе не нравится, что используется sendlua? Хорошо, автор заменит на IGS.Notify, ты только подскажи ему.
Тебе не нравится запись в дату? Хорошо, давай эта команда будет абузиться и никак не ограничиваться по количеству использованных раз.

local test_item = IGS('VIP на 3 дня', 'testvip3d')
	:SetBAdminGroup('vip', 1) -- пропишите свою админ систему
	:SetPrice(0)
	:SetTerm(3)
	:SetDescription('Вы получите VIP на 3 дня!')
	:SetCategory('Группы')
	:SetHidden(true)

if SERVER then
	local cmds = {
		['viptest'] = true,
		['testvip'] = true
	}

	local item_id = test_item.uid
	local item_name = test_item.name
	function IGS.VIPTestCommand(pl, text)
		text = string.Trim(text)
		if (text[1] == '!') or (text[1] == '/') then
			text = string.sub(text, 2)
			if cmds[string.lower(text)] then
				local key = string.format('igs:purchases:%s:%s', pl:UniqueID(), item_id)
				if bib.getNum(key, 0) >= 1 then IGS.Notify(pl, 'Вы уже использовали тест ' .. item_name .. '!') return '' end

				IGS.PlayerActivateItem(pl, item_id, function()
					IGS.Notify(pl, 'Вы активировали тест ' .. item_name .. '!')
					bib.setNum(key, 1)
				end)

				return ''
			end
		end
	end
	hook.Add('PlayerSay', 'IGS.PlayerSay.VIPTestCommand', IGS.VIPTestCommand)
end

murda, мужик, ты по факту слит, можешь не высирать

Итоги?
работает и мое и твое
любишь позером быть? дело твое

Мой тебе совет: меньше слов - больше дела
Взял, написал код и скинул

1 лайк

работает то оба, но что работает лучше?)

+1 обсер, зачем SetMaxPlayerPurchases?) если автору требуется команда, а там можно просто сделать HasPurchase, ведь даже если оно вышло со срока SetTerm с покупок оно не удаляется =)

на счет HasPurchase - у меня код переделан, по этому SetMaxPlayerPurchases требуется, но в коде мы будем использовать bib.getNum - bib.setNum (это используется там)

и так сколько раз ты обосрался в коде - аж целых 4 раза!

  1. дата
  2. sendlua
  3. function() end в IGS.PlayerActivateItem, зачем? IGS/addons/igs-core/lua/igs/core_sv.lua at f2a0b317610f7f818a946c68b212ea5112705fef · GM-DONATE/IGS · GitHub
  4. SetMaxPlayerPurchases, так же - зачем? IGS/addons/igs-core/lua/igs/core_sv.lua at f2a0b317610f7f818a946c68b212ea5112705fef · GM-DONATE/IGS · GitHub

из-за таких как ты - появляются подобные ребята, которые вместо того чтобы учиться писать код, просто срут в него

да, лучше же промолчать когда рождается еще один говнокодер =)

спасибо

спасибо