e1mer 102 Report post Posted November 30, 2016 Для чего это нужно? Собсна для совершенно разных целей, можно например реализовать подобную функцию: Разберем по порядку, что нам нужно? Записать время в глобальную переменную когда было использован предмет, я использую os.time() При использовании, добавить к записанному времени необходимое время на которое нужно заблокировать предмет, время вычислять необходимо в секундах Прибавляем к записанному времени (п.1) наше необходимое время (п.2) по формуле: текущее время + необходимое Парсим наши полученные данные функцией os.date() Выводим результат в систему Это из разряда "как сделать предмет на время", принцип схож. Все просто, готовых примеров давать не буду, вроде и так все доступно описал, если есть вопросы, спрашивайте. Quote Share this post Link to post Share on other sites
V3ct0r 2,117 Report post Posted November 30, 2016 Привет @e1mer! Все-таки хочется увидеть реализацию 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
e1mer 102 Report post Posted November 30, 2016 1 минуту назад, V3ct0r сказал: Привет @e1mer! Все-таки хочется увидеть реализацию Давай посмотрим, реализует ли кто? А потом и я готов выложить готовый пример реализации, если интересно, могу в скайпе описать и показать. Quote Share this post Link to post Share on other sites
BETEP/macs509 87 Report post Posted November 30, 2016 Если следовать инструкции, то после релога персонажа действие небесной ягоды спадет, а таймер не обнулится. Quote Share this post Link to post Share on other sites
BETEP/macs509 87 Report post Posted November 30, 2016 Парсим наши полученные данные функцией os.date() Вот получаю я local cooldown = DropEXP[name].UsedTime - os.time() if cooldown > 0 then SystemNotice(role,"Небесная ягода уже активна, повторно активировать можно через "..cooldown.." сек.!") Каким образом отобразить os.time в минутах и секундах через os.date. В секундах всё нормально, а как конвертировать время непонятно Quote Share this post Link to post Share on other sites
e1mer 102 Report post Posted November 30, 2016 Неверно, после релога персонажа эффект от усилителя спадает, и таймер обнуляется, я протестировал. Время записанное с помощью os.time () в секундах, получится что-то типо 906000490. Парсим данные с помощью функции os.date(), например: os.date("%M:%S", 906000490). Quote Share this post Link to post Share on other sites
BETEP/macs509 87 Report post Posted November 30, 2016 @e1mer спасибо, возьму на заметку, но мы не ищем легких путей local cooldown = DropEXP[name].UsedTime - os.time() local cooldown2 = math.floor(cooldown/60) local cooldown1 = (cooldown - math.floor(cooldown/60)*60) Quote Share this post Link to post Share on other sites
BETEP/macs509 87 Report post Posted November 30, 2016 function ItemUse_MoreExpGz( role , Item ) local statelv = 1 local ChaStateLv = GetChaStateLv ( role , STATE_SBJYGZ ) local name = GetChaDefaultName(role) if DropEXP[name] == nil then DropEXP[name] = { UsedTime = os.time() } end if ChaStateLv > statelv then --если уровень этого фрукта меньше уже работающего SystemNotice ( role , "Более мощный усилитель опыта еще не окончился " ) UseItemFailed ( role ) return end local cooldown = DropEXP[name].UsedTime - os.time() if ChaStateLv == statelv then if cooldown > 0 then local cooldown2 = math.floor(cooldown/60) local cooldown1 = (cooldown - math.floor(cooldown/60)*60) SystemNotice(role,"Небесная ягода уже активна, повторно активировать можно через "..cooldown2.." минут "..cooldown1.." сек.!") UseItemFailed ( role ) return end end local statetime = 900 local Cha_Boat = 0 Cha_Boat = GetCtrlBoat ( role ) if Cha_Boat == nil then AddState( role , role , STATE_SBJYGZ , statelv , statetime ) else AddState( Cha_Boat , Cha_Boat , STATE_SBJYGZ , statelv , statetime ) end DropEXP[name].UsedTime = os.time()+900 SystemNotice ( role ,"Небесная ягода активирована " ) end Quote Share this post Link to post Share on other sites
e1mer 102 Report post Posted November 30, 2016 А нет, я допустил ошибку, возможен баг с тем что переменная действительно не обнуляется, и может забагаться фрукт у других игроков, но это тоже можно пофиксить. Quote Share this post Link to post Share on other sites
WVWMK 121 Report post Posted November 30, 2016 @e1mer Спасибо, что натолкнул на правильные мысли. Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites
BotPRO 12 Report post Posted November 30, 2016 (edited) Да это же элементарно , могу написать функцию полноценную, если кого либо интересует , с релогом перса и остановкой счетчика и тд ) Edited November 30, 2016 by BotPRO Quote Share this post Link to post Share on other sites
WVWMK 121 Report post Posted November 30, 2016 8 минут назад, BotPRO сказал: Да это же элементарно , могу написать функцию полноценную, если кого либо интересует , с релогом перса и остановкой счетчика и тд ) сверху есть функция уже, вроде как без багов) Покажи свою. Как бы в этом и была задумка, аля напиши сам. Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites
e1mer 102 Report post Posted December 3, 2016 В 01.12.2016 в 02:28, BotPRO сказал: Да это же элементарно , могу написать функцию полноценную, если кого либо интересует , с релогом перса и остановкой счетчика и тд ) На словах я лев толстой, или как там дальше, не помню. Напиши, выложи, не нужно просто кидать вульгарные фразы о том что ты можешь, и не таких балаболов свет видал. Суть подобных топиков в том, чтобы научить население, чтобы они пытались что-то написать своими руками, а не тупо копипастить с форумов. В 01.12.2016 в 02:37, NMS3RR сказал: Как бы в этом и была задумка, аля напиши сам. Quote Share this post Link to post Share on other sites
WVWMK 121 Report post Posted December 3, 2016 В 01.12.2016 в 00:05, e1mer сказал: А нет, я допустил ошибку, возможен баг с тем что переменная действительно не обнуляется, и может забагаться фрукт у других игроков, но это тоже можно пофиксить. тот код, что сверху полностью рабочий, багов мы не заметили. метод вывода конечно отличается от того который используешь ты, но мы старались) у тебя под каждый предмет своя константа или ты каким то образом юзаешь одну? Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites
BotPRO 12 Report post Posted December 4, 2016 (edited) 11 hours ago, e1mer said: На словах я лев толстой, или как там дальше, не помню. Напиши, выложи, не нужно просто кидать вульгарные фразы о том что ты можешь, и не таких балаболов свет видал. Суть подобных топиков в том, чтобы научить население, чтобы они пытались что-то написать своими руками, а не тупо копипастить с форумов. К чему ты это написал ? Твоя самооценка мне понятна, твоего варианта реализации я к сожалению не увидел! А теперь держи мой, и впредь веди себя по проще, а то залетел тут с наездом, "разработчик от бога" блин. cha_timer в самое начало. CoolDown(role) function в самый конец. function CoolDown(role) local servertime = os.time() local cha_name = GetChaDefaultName(role) if COOL_DOWNS[cha_name] < servertime then COOL_DOWNS[cha_name] = 0 end end varieble в самое начало. COOL_DOWNS = {} ItemEffect в самый конец. --Свиток Баффа function ItemUse_Buff(role) local server_time = os.time() + 100 -- Время в секундах local cha_name = GetChaDefaultName(role) if COOL_DOWNS[cha_name] == nil then COOL_DOWNS[cha_name] = 0 return end if (COOL_DOWNS[cha_name] >= 1) then finish = COOL_DOWNS[cha_name] - os.time() UseItemFailed ( role ) datetime = os.date("!*t", finish ) SystemNotice(role, "Что бы использовать предмет, нужно подожать: осталось подождать ".. tostring(datetime.min) .. " минут(а, ы), ".. tostring(datetime.sec) .. " секунд(ы, у). ") elseif (COOL_DOWNS[cha_name] == 0) then AddState (role, role, STATE_XLZH, 10, 1800) AddState (role, role, STATE_SHPF, 10, 1800) AddState (role, role, STATE_MLCH, 10, 1800) AddState (role, role, STATE_FZLZ, 10, 1800) AddState (role, role, STATE_TSHD, 10, 1800) SystemNotice (role, "Вам предоставлены все бафы 10 уровня на 30 минут , приятного фарма! ") COOL_DOWNS[cha_name] = server_time end end Вот и всё, и не нужно тут никого унижать, ты тут не основной тип, просто не каждому это барахло надо, что бы время на него тратить, Лев Толстой ... Edited December 4, 2016 by BotPRO 1 Quote Share this post Link to post Share on other sites
WVWMK 121 Report post Posted December 4, 2016 @e1mer и @BotPRO давайте без взаимных оскорблений и измерения длинны кода у каждого из вас. Спасибо заранее за благоразумие. Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites
BotPRO 12 Report post Posted December 4, 2016 38 minutes ago, NMS3RR said: @e1mer и @BotPRO давайте без взаимных оскорблений и измерения длинны кода у каждого из вас. Спасибо заранее за благоразумие. Причём тут длинна кода, это работает ? - Работает, при желании можно сократить, тратить на это время - мне не интересно, и не я заявил всякую чушь изначально, мои намерения миролюбивые, просто кому то стоит себя по проще вести. Quote Share this post Link to post Share on other sites
WVWMK 121 Report post Posted December 4, 2016 Только что, BotPRO сказал: Причём тут длинна кода, это работает ? - Работает, при желании можно сократить, тратить на это время - мне не интересно, и не я заявил всякую чушь изначально, мои намерения миролюбивые, просто кому то стоит себя по проще вести. Длинна кода - это замена другому слову. Вы как в детском саду. По факту все правильно написали, если хочешь - предложи свою разработку или задай вопросы чтоб тебе помогли(для новичков) Бездумное копирование готовых скриптов это дело не очень хорошее., не помогает начинающему разработчику. А вот твое заявление "Да это же элементарно , могу написать функцию полноценную, если кого либо интересует , с релогом перса и остановкой счетчика и тд )" - слегка не в тему, так что понятное дело почему началась агрессия. Тут люди делятся своими алгоритмами, а не выставляют на показ что это ИЗИ. PS тот вариант что у нас работает без багов, так что можно не делать проверку в cha_timer Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites
BotPRO 12 Report post Posted December 4, 2016 Just now, NMS3RR said: Длинна кода - это замена другому слову. Вы как в детском саду. По факту все правильно написали, если хочешь - предложи свою разработку или задай вопросы чтоб тебе помогли(для новичков) Бездумное копирование готовых скриптов это дело не очень хорошее., не помогает начинающему разработчику. А вот твое заявление "Да это же элементарно , могу написать функцию полноценную, если кого либо интересует , с релогом перса и остановкой счетчика и тд )" - слегка не в тему, так что понятное дело почему началась агрессия. Тут люди делятся своими алгоритмами, а не выставляют на показ что это ИЗИ. PS тот вариант что у нас работает без багов, так что можно не делать проверку в cha_timer cha_timer - обнуляет код, без этого будут проблемы, я просто сказал, что если людям интересно, я могу сделать, а агрессия тут была лишней. Quote Share this post Link to post Share on other sites
e1mer 102 Report post Posted December 4, 2016 С самооценкой все в порядке, да не основной тип, ко всем отношусь с уважением, кроме таких выскочек которые везде пишут "это элементарно", не нужно этого было писать, нужно было сразу показать свою реализацию для сравнения, тогда я бы может и не заметил что ты этот код просто выдернул со своего сервера. остальной диалог продолжим позже, я в другом городе сейчас, и с телефона. Quote Share this post Link to post Share on other sites
BotPRO 12 Report post Posted December 4, 2016 (edited) Just now, e1mer said: С самооценкой все в порядке, да не основной тип, ко всем отношусь с уважением, кроме таких выскочек которые везде пишут "это элементарно", не нужно этого было писать, нужно было сразу показать свою реализацию для сравнения, тогда я бы может и не заметил что ты этот код просто выдернул со своего сервера. остальной диалог продолжим позже, я в другом городе сейчас, и с телефона. Каких выскочек ? я тебе предоставил реализацию, ни откуда я не вытаскивал эту функцию, а именно написал её ! Или ты мне обратное хочешь доказать ? В отличии от тебя я реализацию выложил, а ведешь себя агрессивно настроено именно ты. Не нужно себя ставить выше других, тут все равны. Или ты лично видел, как я выдёргивал ? Мне не нужно ничего выдёргивать я сам в состоянии это всё реализовать, заметил он . Продолжим ? А что продолжать ? Хочешь свою обиду на меня вылить ? Мне это не интересно, будь проще и мир к тебе потянется. Edited December 4, 2016 by BotPRO Quote Share this post Link to post Share on other sites
e1mer 102 Report post Posted December 4, 2016 Судя по этому куску понятно что писал ты это не для сие топика как утверждаешь ты. забей, закрой вкладку с этой темой, не обращай внимания на меня. Quote Share this post Link to post Share on other sites
BotPRO 12 Report post Posted December 4, 2016 Картинка битая, судя по чему ? Писал всё именно для этого топика, на моём сервере нету и близко таких функций ибо не вижу надобности в этом. Quote Share this post Link to post Share on other sites
BotPRO 12 Report post Posted December 4, 2016 (edited) local zaderjka = GetChaStateLv ( role , 5 ) local statelv = 1 local statetime = 5 if zaderjka == 0 then AddState ( role, role, 5, statelv, statetime ) Я не заморачиваюсь такими функциями, у меня всё банально реализовано и гораздо проще, да нету по секундам вывода, а нужно ли оно ? Думаю нет, это лишь моё мнение. Edited December 4, 2016 by BotPRO Quote Share this post Link to post Share on other sites
e1mer 102 Report post Posted December 4, 2016 2 часа назад, BotPRO сказал: Картинка битая, судя по чему ? Писал всё именно для этого топика, на моём сервере нету и близко таких функций ибо не вижу надобности в этом. См. Скрин выше 2 часа назад, BotPRO сказал: local zaderjka = GetChaStateLv ( role , 5 ) local statelv = 1 local statetime = 5 if zaderjka == 0 then AddState ( role, role, 5, statelv, statetime ) Я не заморачиваюсь такими функциями, у меня всё банально реализовано и гораздо проще, да нету по секундам вывода, а нужно ли оно ? Думаю нет, это лишь моё мнение. Нужно, это удобно игрокам, бывают такие ситуации когда необходимо знать точное время. Quote Share this post Link to post Share on other sites