Jump to content
Sign in to follow this  
Graf

НПС Выдача раз в 1 час

Recommended Posts

Снова все привет) Появился новый вопрос. Как написать функцию выдачи денег раз в час?

Допустим персонаж, выше 50уровня можно подойти к НПС и взять 500к.

Допустим

НПС

function t_money () 
InitTrigger() 
TriggerAction( 1, PeremenMoney ) 
Start( GetMultiTrigger(),1 ) 
end

Дальше прописывать в NpcSdk

elseif item.func == PeremenMoney then
			return PeremenMoney(character)

А вот функция.. Помогите с ней, пожалуйста)

function PeremenMoney( role )
	local money = HasMoney(role , 500000) --Это проверка денег(что знаю =))
	if ....
	else
	BickerNotice( role ," Вы уже забрали свой приз ")		--вывод красных букв на экран(что знаю=))
end

 

Share this post


Link to post
Share on other sites

Привет @Graf!

 

variable.lua

money_given = {}

 

Функция PeremenMoney()

function PeremenMoney(role)
		
	if (Lv(role) < 50) then
		BickerNotice(role, "Вы должны быть не менее 50 уровня, чтобы получить золото.")
		return 0
	end
	
	local cha_id = GetRoleID(role)
	if (money_given[cha_id] ~= nil) then
		local now_time = os.time()
		if ( (now_time - money_given[cha_id]) < 3600) then
			BickerNotice(role, "Вы уже забрали свой приз! Возвращайтесь через час.")
			return 0
		end
	end
	
	-- Выдать деньги
	-- AddMoney(...)
	money_given[cha_id] = os.time()
	
	return 1
end

 

В variable.lua создаем массив money_given:

money_given[ID_персонажа] = Время выдачи золота

Затем в функции выдачи золота мы проверяем есть ли персонаж в этом массиве, если есть и прошло менее 3600 секунд (1 час), то золото не выдаем. Иначе выдаем золото и заносим персонажа в массив.

 

При использовании GM-команды &updateall время выдачи золота для всех персонажей сбросится. Если критично, то можно использовать файлы для хранения данных о последнем времени выдачи золота.

 

Скрипт не тестировал.

  • Like 1

Share this post


Link to post
Share on other sites
34 минуты назад, V3ct0r сказал:

Привет @Graf!

 

variable.lua


money_given = {}

 

Функция PeremenMoney()


function PeremenMoney(role)
		
	if (Lv(role) < 50) then
		BickerNotice(role, "Вы должны быть не менее 50 уровня, чтобы получить золото.")
		return 0
	end
	
	local cha_id = GetRoleID(role)
	if (money_given[cha_id] ~= nil) then
		local now_time = os.time()
		if ( (now_time - money_given[cha_id]) < 3600) then
			BickerNotice(role, "Вы уже забрали свой приз! Возвращайтесь через час.")
			return 0
		end
	end
	
	-- Выдать деньги
	-- AddMoney(...)
	money_given[cha_id] = os.time()
	
	return 1
end

 

В variable.lua создаем массив money_given:


money_given[ID_персонажа] = Время выдачи золота

Затем в функции выдачи золота мы проверяем есть ли персонаж в этом массиве, если есть и прошло менее 3600 секунд (1 час), то золото не выдаем. Иначе выдаем золото и заносим персонажа в массив.

 

При использовании GM-команды &updateall время выдачи золота для всех персонажей сбросится. Если критично, то можно использовать файлы для хранения данных о последнем времени выдачи золота.

 

Скрипт не тестировал.

Спасибо, работает)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...