Автоматическая раздача купонов

Скрипт, который раз в 30-60 мин будет генерировать промо-код и постить его в чат сервера.

image

Польза:

  1. Сообщает игрокам о наличии /donate меню
  2. Мотивирует играть дольше, чтобы ловить больше кодов
  3. Тем, кто собрал несколько купонов и хотел что-то купить может захотеться получить желаемую услугу быстрее и они, наконец, решатся задонатить

Код

Поместить в созданный файл addons/igs-modification/lua/autorun/server/autocoupons.lua

local col_red = Color(250,30,90)
local function publishCoupon(iSumIgs, code)
	IGS.NotifyAll("*** ВНИМАНИЕ! ****")
	IGS.NotifyAll("Промокод на " .. PL_MONEY(iSumIgs))
	IGS.NotifyAll("", col_red, code) -- "" костыль для оверрайда цвета
	IGS.NotifyAll("Активируй первым в /donate!")
end

local function generateAndPublishCoupon(iSumIgs)
	IGS.CreateCoupon(iSumIgs, 1, "generated_on_server", function(code)
		publishCoupon(iSumIgs, code)
	end)
end

local function giveaway(iSumIgs)
	if #player.GetAll() >= 5 then
		generateAndPublishCoupon(iSumIgs)
	end
end

timer.Create("ChatCouponsGenerator", 60 * 30, 0, function()
	giveaway(10)
end)

Раздача валюты за игру

Подобный скрипт, может также быть полезен

Альтернативная реализация от @Shapka

local col_lime  = Color(100,210,40)
local col_light = Color(228,228,228)
local col_red   = Color(250,30,90)

// Сумма и последний купон.
local sum, last_cupon = 54, nil
local contine = true

timer.Create("CopountsGenerator", 10, 0, function ()
	if last_cupon != nil and contine == false then
		IGS.GetCoupon(tostring(last_cupon), function (c, expired, used)
			if expired or used then
				contine = true
			end
		end)
	end

	if contine then
		IGS.CreateCoupon(sum, 1, "autogenerated_on_server_cupons", function (code) 
			last_cupon = code 
			contine = false
			IGS.NotifyAll("*** ВНИМАНИЕ! ****")
			IGS.NotifyAll("Промокод на "..tonumber(sum).." рублей!")
			// Лень было делать функцию. 
			// Просто делаем метод GM-Donate
			chat.AddTextSV(
				col_lime,"[IGS] ",
				col_red,tostring(code)
			)
			IGS.NotifyAll("Активируй первым в /donate!")
		end)
	else
		IGS.NotifyAll("*** ВНИМАНИЕ! ****")
		IGS.NotifyAll("Промокод на "..tonumber(sum).." рублей так никто и не активировал!")
		chat.AddTextSV(
			col_lime,"[IGS]",
			col_red," > ",
			col_light, "А я напоминаю его : ",
			col_red,tostring(last_cupon)
		)
		IGS.NotifyAll("Активируй его первым в /donate!")
	end
end)

Код обновлен. Всем, кто использует тоже обновиться

PL_IGS везде заменить на PL_MONEY. Через несколько версий PL_IGS может быть удален