Graf 211 Report post Posted February 2, 2017 Снова все привет) Появился новый вопрос. Как написать функцию выдачи денег раз в час? Допустим персонаж, выше 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 Quote Share this post Link to post Share on other sites
V3ct0r 2,117 Report post Posted February 2, 2017 Привет @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 время выдачи золота для всех персонажей сбросится. Если критично, то можно использовать файлы для хранения данных о последнем времени выдачи золота. Скрипт не тестировал. 1 Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites
Graf 211 Report post Posted February 2, 2017 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 время выдачи золота для всех персонажей сбросится. Если критично, то можно использовать файлы для хранения данных о последнем времени выдачи золота. Скрипт не тестировал. Спасибо, работает) Quote Share this post Link to post Share on other sites