Mello 31 Report post Posted May 14, 2022 (edited) Всем привет Были проблемы со скриптами которые на форуме есть/ с наградами за проведенное время в игре. Вот с нашего проекта рабочий - мб кому пригодиться. if IsPlayer(role) == 1 then --Город в котором считает if GetChaMapName ( role ) == "AUST" then --Функция новичка, выдаем приз каждые newbie_now_tick минут local newbie_now_tick = 1 --Конвертируем "Минуты" в с "Секунды" local newbie_now_min = newbie_now_tick * 3600 -- конвертация в секундах,собственно 3600 секунд - 1 час if math.mod(now_tick + 1, newbie_now_min) == 0 then --Если игрок ниже 180 уровня или 180 уровень, то выдаем призы if Lv( role ) >= 180 then if GetChaFreeBagGridNum ( role ) >= 1 then GiveItemX ( role , 0 , 7705, math.random( 1, 1 ) , 1 ) --Айтем 7705 (от 1 до 2 шт.) у нас стоит 1 из 1 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") end end end end end Основа взята с форума Edited May 14, 2022 by Artstyle 1 1 Quote .ru Share this post Link to post Share on other sites
Graf 209 Report post Posted May 14, 2022 (edited) Возможно я что-то забыл, но: --Конвертируем "Минуты" в с "Секунды" local newbie_now_min = newbie_now_tick * 3600 Минута - это 60 секунд, а не 3600. Поправь, пожалуйста. Edited May 14, 2022 by Graf 1 Quote Share this post Link to post Share on other sites
Mello 31 Report post Posted May 14, 2022 15 минут назад, Graf сказал: Возможно я что-то забыл, но: --Конвертируем "Минуты" в с "Секунды" local newbie_now_min = newbie_now_tick * 3600 Минута - это 60 секунд, а не 3600. Поправь, пожалуйста. Изменил, конвертация идет в секундах собственно 3600 идет за час. Спасибо подметил ,многим пригодится! Quote .ru Share this post Link to post Share on other sites
V3ct0r 2,116 Report post Posted May 14, 2022 Привет, @Artstyle! 1) Как скрипт себя поведет, если игрок сменит карту или перейдет на другой GameServer.exe? 2) Настройки скрипта очень сильно "зашиты" в код, пользователю сложно его модифицировать под себя. Карты, на которых работает скрипт, необходимое время в игре, уровень персонажа, список наград и так далее, то есть настройки скрипта, можно вынести в переменную, а код абстрагировать от конкретных значений его параметров. 3) Насколько я помню, функция GetChaFreeBagGridNum() возвращает число свободных ячеек в основном инвентаре персонажа, а функция GiveItemX() выдает предметы во временный мешок. Соответственно, следующий код вызывает вопросы: if GetChaFreeBagGridNum ( role ) >= 1 then GiveItemX ( role , 0 , 7705, math.random( 1, 1 ) , 1 ) --Айтем 7705 (от 1 до 2 шт.) у нас стоит 1 из 1 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") end Если у персонажа есть свободные ячейки в основном инвентаре, то выдать предмет во временный мешок. А если у персонажа нет свободного места в инвентаре, но есть во временном мешке? Также в сообщении об отсутствии места в инвентаре упоминается 4 слота, а фактически нужен всего 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
Mello 31 Report post Posted May 15, 2022 18 часов назад, V3ct0r сказал: Привет, @Artstyle! 1) Как скрипт себя поведет, если игрок сменит карту или перейдет на другой GameServer.exe? 2) Настройки скрипта очень сильно "зашиты" в код, пользователю сложно его модифицировать под себя. Карты, на которых работает скрипт, необходимое время в игре, уровень персонажа, список наград и так далее, то есть настройки скрипта, можно вынести в переменную, а код абстрагировать от конкретных значений его параметров. 3) Насколько я помню, функция GetChaFreeBagGridNum() возвращает число свободных ячеек в основном инвентаре персонажа, а функция GiveItemX() выдает предметы во временный мешок. Соответственно, следующий код вызывает вопросы: if GetChaFreeBagGridNum ( role ) >= 1 then GiveItemX ( role , 0 , 7705, math.random( 1, 1 ) , 1 ) --Айтем 7705 (от 1 до 2 шт.) у нас стоит 1 из 1 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") end Если у персонажа есть свободные ячейки в основном инвентаре, то выдать предмет во временный мешок. А если у персонажа нет свободного места в инвентаре, но есть во временном мешке? Также в сообщении об отсутствии места в инвентаре упоминается 4 слота, а фактически нужен всего 1. должно все хорошо адаптироваться!Да выдается не инвентарь а во временный мешок. Quote .ru Share this post Link to post Share on other sites
V3ct0r 2,116 Report post Posted May 15, 2022 @Artstyle, Думаю что функцию GetChaFreeBagGridNum() можно заменить на GetChaFreeTempBagGridNum(): if GetChaFreeTempBagGridNum ( role ) >= 1 then GiveItemX ( role , 0 , 7705, math.random( 1, 1 ) , 1 ) --Айтем 7705 (от 1 до 2 шт.) у нас стоит 1 из 1 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") end Иначе сейчас такая логика, что если у персонажа нет свободной ячейки в основном инвентаре, то предмет не будет выдан во временный, даже если во временном мешке есть свободное место. 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
Mello 31 Report post Posted May 15, 2022 (edited) 7 минут назад, V3ct0r сказал: @Artstyle, Думаю что функцию GetChaFreeBagGridNum() можно заменить на GetChaFreeTempBagGridNum(): if GetChaFreeTempBagGridNum ( role ) >= 1 then GiveItemX ( role , 0 , 7705, math.random( 1, 1 ) , 1 ) --Айтем 7705 (от 1 до 2 шт.) у нас стоит 1 из 1 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") end Иначе сейчас такая логика, что если у персонажа нет свободной ячейки в основном инвентаре, то предмет не будет выдан во временный, даже если во временном мешке есть свободное место. Спасибо,у людей будет выбор - как лучше сделать) будет альтернатива. Edited May 15, 2022 by Artstyle Quote .ru Share this post Link to post Share on other sites
Mello 31 Report post Posted May 15, 2022 2 часа назад, V3ct0r сказал: @Artstyle, Думаю что функцию GetChaFreeBagGridNum() можно заменить на GetChaFreeTempBagGridNum(): if GetChaFreeTempBagGridNum ( role ) >= 1 then GiveItemX ( role , 0 , 7705, math.random( 1, 1 ) , 1 ) --Айтем 7705 (от 1 до 2 шт.) у нас стоит 1 из 1 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") end Иначе сейчас такая логика, что если у персонажа нет свободной ячейки в основном инвентаре, то предмет не будет выдан во временный, даже если во временном мешке есть свободное место. только заметил как поведет скрипт он анулируется,тобишь мы получаем награду на самой карте и счетчик идет там Quote .ru Share this post Link to post Share on other sites