e1mer 102 Report post Posted December 9, 2016 Выдернул с зеста, может у кого-то есть в этом необходимость. Суть: Каждые N минут, персонажу которое провел в игре N-ое количество времени, начисляем бонусы. Вместо XXXX указываем название карты, на которой необходимо провести игровое время для выдачи. В принципе все строки прокомментированы, по этому вопросов должно быть по минимуму. Функция cha_timer(), файл functions.lua. -- Награждение персонажей за проведенное время в игре (на определенном уровне разные призы) -- функция cha_timer (resource/script/calculate/functions.lua) --Награда за проведенное время в игре, если персонаж на карте GetChaMapName(role) if GetChaMapName ( role ) == "XXXX" then --Функция новичка, выдаем приз каждые newbie_now_tick минут local newbie_now_tick = 30 --Конвертируем "Минуты" в с "Секунды" local newbie_now_min = newbie_now_tick * 60 if math.mod(now_tick, newbie_now_min) == 0 then --Если игрок ниже 25 уровня или 25 уровень, то выдаем призы if Lv( role ) <= 25 then local newbie_radom_prize = math.random ( 1, 8 ) if newbie_radom_prize == 1 then if GetChaFreeBagGridNum ( role ) >= 4 then GiveItemX ( role , 0 , 3844 , math.random( 1, 2 ) , 4 ) --Небесная ягода (от 1 до 2 шт.) GiveItemX ( role , 0 , 3845 , math.random( 1, 2 ) , 4 ) --Зачарованная ягода (от 1 до 2 шт.) GiveItemX ( role , 0 , 0227 , math.random( 5, 10 ) , 4 ) --Питание феи (от 5 до 10 шт.) GiveItemX ( role , 0 , 0578 , math.random( 1, 4 ) , 4 ) --Фрукт роста (от 1 до 4 шт.) AddMoney ( role , 0 , math.random( 15000, 30000 )) --Призовое золото PlayEffect (role, 275 ) else BickerNotice(role, "\199\224 \253\242\232 30 \236\232\237\243\242 \239\240\232\231\251 \237\229 \237\224\247\232\241\235\232\237\251. \206\241\226\238\225\238\228\232\242\229 4 \241\235\238\242\224 \226\238 \226\240\229\236\229\237\237\238\236 \236\229\248\234\229") --BickerNotice(role, "За эти 30 минут призы не начислины. Освободите 4 слота во временном мешке") end end end end end Quote Share this post Link to post Share on other sites
josenieto 1 Report post Posted December 21, 2016 local newbie_now_tick = 30 тоесть это только newbie, а если убрать и оставить только now_tick = 30 то всем игрокам? Quote Share this post Link to post Share on other sites
Guest Report post Posted December 21, 2016 1 hour ago, josenieto said: local newbie_now_tick = 30 тоесть это только newbie, а если убрать и оставить только now_tick = 30 то всем игрокам? Нет, newbie_now_tick - просто название переменной. Quote Share this post Link to post Share on other sites
Zmurik 1 Report post Posted October 21, 2017 (edited) Очень странно выдает он награждение, поставил таймер на одну минуту и что бы он, что то выдал нужно выйти с персонажа и опять за него зайти. Edited October 21, 2017 by Zmurik Quote Share this post Link to post Share on other sites
WVWMK 121 Report post Posted October 21, 2017 3 часа назад, Zmurik сказал: Очень странно выдает он награждение, поставил таймер на одну минуту и что бы он, что то выдал нужно выйти с персонажа и опять за него зайти. Код покажите, Скорей всего вы где то ошиблись или у вас что то не так с серверной машиной. Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites
V3ct0r 2,122 Report post Posted October 21, 2017 12 часа назад, Zmurik сказал: Очень странно выдает он награждение, поставил таймер на одну минуту и что бы он, что то выдал нужно выйти с персонажа и опять за него зайти. Тут еще так сделано, что он выдает приз только персонажам ниже 26 уровня, которые находятся на определенной карте, и с вероятностью 12,5%. Так же игрок не должен покидать карту (телепортироваться), умирать и выходить из игры 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
Zmurik 1 Report post Posted October 21, 2017 --Награда за проведенное время в игре, если персонаж на карте GetChaMapName(role) if GetChaMapName ( role ) == "garner" then --Функция новичка, выдаем приз каждые newbie_now_tick минут local newbie_now_tick = 5 --Конвертируем "Минуты" в с "Секунды" local newbie_now_min = newbie_now_tick * 60 if math.mod(now_tick, newbie_now_min) == 0 then --Если игрок ниже 55 уровня или 55 уровень, то выдаем призы if Lv( role ) <= 55 then local newbie_radom_prize = math.random ( 1, 8 ) if newbie_radom_prize == 1 then if GetChaFreeBagGridNum ( role ) >= 4 then GiveItemX ( role , 0 , 3844 , math.random( 1, 2 ) , 4 ) --Небесная ягода (от 1 до 2 шт.) GiveItemX ( role , 0 , 3845 , math.random( 1, 2 ) , 4 ) --Зачарованная ягода (от 1 до 2 шт.) GiveItemX ( role , 0 , 0227 , math.random( 2, 5 ) , 4 ) --Питание феи (от 5 до 10 шт.) GiveItemX ( role , 0 , 0578 , math.random( 1, 2 ) , 4 ) --Фрукт роста (от 1 до 4 шт.) AddMoney ( role , 0 , math.random( 15000, 30000 )) --Призовое золото PlayEffect (role, 275 ) else BickerNotice(role, "\199\224 \253\242\232 30 \236\232\237\243\242 \239\240\232\231\251 \237\229 \237\224\247\232\241\235\232\237\251. \206\241\226\238\225\238\228\232\242\229 4 \241\235\238\242\224 \226\238 \226\240\229\236\229\237\237\238\236 \236\229\248\234\229") --BickerNotice(role, "За эти 30 минут призы не начислины. Освободите 4 слота во временном мешке") end end end end end Quote Share this post Link to post Share on other sites
WVWMK 121 Report post Posted October 22, 2017 local newbie_radom_prize = math.random ( 1, 8 ) if newbie_radom_prize == 1 then end убери вот эти строчки и проверь, код рабочий. тут вероятность 0,125 на то что дальнейший скрипт сработает: if GetChaFreeBagGridNum ( role ) >= 4 then GiveItemX ( role , 0 , 3844 , math.random( 1, 2 ) , 4 ) --Небесная ягода (от 1 до 2 шт.) GiveItemX ( role , 0 , 3845 , math.random( 1, 2 ) , 4 ) --Зачарованная ягода (от 1 до 2 шт.) GiveItemX ( role , 0 , 0227 , math.random( 2, 5 ) , 4 ) --Питание феи (от 5 до 10 шт.) GiveItemX ( role , 0 , 0578 , math.random( 1, 2 ) , 4 ) --Фрукт роста (от 1 до 4 шт.) AddMoney ( role , 0 , math.random( 15000, 30000 )) --Призовое золото PlayEffect (role, 275 ) else BickerNotice(role, "\199\224 \253\242\232 30 \236\232\237\243\242 \239\240\232\231\251 \237\229 \237\224\247\232\241\235\232\237\251. \206\241\226\238\225\238\228\232\242\229 4 \241\235\238\242\224 \226\238 \226\240\229\236\229\237\237\238\236 \236\229\248\234\229") --BickerNotice(role, "За эти 30 минут призы не начислины. Освободите 4 слота во временном мешке") end 1 Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites
Zmurik 1 Report post Posted October 24, 2017 Скрипт стал работать, выдавать по времени, но не понятное рандомное кол-во предметов и если выйти с персонажа и опять зайти, он выдаст предметы еще раз и так можно до бесконечности. Quote Share this post Link to post Share on other sites
V3ct0r 2,122 Report post Posted October 24, 2017 1 час назад, Zmurik сказал: Скрипт стал работать, выдавать по времени, но не понятное рандомное кол-во предметов и если выйти с персонажа и опять зайти, он выдаст предметы еще раз и так можно до бесконечности. Попробуй заменить строку if math.mod(now_tick, newbie_now_min) == 0 then На if math.mod(now_tick + 1, newbie_now_min) == 0 then Дело в том, что в начальный момент времени (персонаж зашел в игру) now_tick равно 0 и условие срабатывает 2 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
Zmurik 1 Report post Posted October 25, 2017 ---------------------------------------------------------------------------------------------------- -- Награждение персонажей за проведенное время в игре (на определенном уровне разные призы) - -- функция cha_timer (resource/script/calculate/functions.lua) - ---------------------------------------------------------------------------------------------------- --Награда за проведенное время в игре, если персонаж на карте GetChaMapName(role) if GetChaMapName ( role ) == "garner" then --Функция новичка, выдаем приз каждые newbie_now_tick минут local newbie_now_tick = 2 --Конвертируем "Минуты" в с "Секунды" local newbie_now_min = newbie_now_tick * 60 if math.mod(now_tick + 1, newbie_now_min) == 0 then --Если игрок ниже 41 уровня или 41 уровень, то выдаем призы if Lv( role ) <= 41 then if GetChaFreeBagGridNum ( role ) >= 4 then GiveItemX ( role , 0 , 3844 , math.random( 1, 2 ) , 4 ) --Небесная ягода (от 1 до 2 шт.) GiveItemX ( role , 0 , 3845 , math.random( 1, 2 ) , 4 ) --Зачарованная ягода (от 1 до 2 шт.) GiveItemX ( role , 0 , 0227 , math.random( 5, 10 ) , 4 ) --Питание феи (от 5 до 10 шт.) GiveItemX ( role , 0 , 0578 , math.random( 1, 4 ) , 4 ) --Фрукт роста (от 1 до 4 шт.) AddMoney ( role , 0 , math.random( 15000, 30000 )) --Призовое золото PlayEffect (role, 275 ) else BickerNotice(role, "\199\224 \253\242\232 30 \236\232\237\243\242 \239\240\232\231\251 \237\229 \237\224\247\232\241\235\232\237\251. \206\241\226\238\225\238\228\232\242\229 4 \241\235\238\242\224 \226\238 \226\240\229\236\229\237\237\238\236 \236\229\248\234\229") --BickerNotice(role, "За эти 30 минут призы не начислины. Освободите 4 слота во временном мешке") end end end end Спасибо большое за помощь, вот что получилось, у меня все работает. 1 Quote Share this post Link to post Share on other sites