BETEP/macs509 87 Report post Posted August 31, 2018 Наверное все слышали о таком баге, что игроки выкидывают морской мануфак с суши и подбирают его в трюм корабля. Он становится бесконечным, пока вы не сойдете на сушу. Вот сам фикс: Ищем все _Begin и _End функции мануфака. Из _Begin удаляем:Код (C (Unknown Language)): local item_count = CheckBagItem(atk_role, _ид_предмета_данного_мануфака_) if item_count <= 0 then SkillUnable(atk_role) SystemNotice(atk_role, "Does not possess required item to use skill") end local a = DelBagItem(atk_role, _ид_предмета_данного_мануфака_, 1) Дописываем в каждую _End функцию после проверки на KitbagLock: local atk_role = TurnToCha(ATKER) local item_count = CheckBagItem(atk_role, _ид_предмета_данного_мануфака_) if item_count <= 0 then SkillUnable(atk_role) SystemNotice(atk_role, "Does not possess required item to use skill") return 0 end DelBagItem(atk_role, _ид_предмета_данного_мануфака_, 1) Вот и весь фикс. ©Insider Quote Share this post Link to post Share on other sites
Knight 15 Report post Posted September 1, 2018 А теперь тупой вопрос - как подобрать итем в трюм корабля?) Quote Share this post Link to post Share on other sites
BETEP/macs509 87 Report post Posted September 1, 2018 Один игрок с пристани выкидывает, другой на корабле максимально близко к суше его подбирает Quote Share this post Link to post Share on other sites
V3ct0r 2,117 Report post Posted September 2, 2018 Чтобы не редактировать каждую функцию, так как их может быть много, можно перехватывать каждую begin- и end-функцию и подставлять наш исправленный код. В папке GameServer\resource\script\calculate создаем скрипт manufacture_fix.lua со следующим содержимым: print("Loading file manufacture_fix.lua") -- Таблица функций мануфактуры -- которые необходимо исправить local manufacture_fix_table = { --[[ [ID предмета] = { func_beg = "begin-функция", func_end = "end-функция" }, ]]-- [1136] = { func_beg = "Skill_ShanGD1_Begin", func_end = "Skill_ShanGD1_End" }, [1137] = { func_beg = "Skill_FuShe1_Begin", func_end = "Skill_FuShe1_End", } } -- Begin - функция function manufacture_fix_begin_func(role, sklv) local NocLock = KitbagLock(role, 0) if NocLock == LUA_FALSE then SystemNotice( role , "Inventory has been binded") return 0 end end -- End - функция function manufacture_fix_end_func(ATKER, DEFER, sklv, item_id) -- Наш код local atk_role = TurnToCha(ATKER) local item_count = CheckBagItem(atk_role, item_id) if item_count <= 0 then SkillUnable(atk_role) SystemNotice(atk_role, "Does not possess required item to use skill") return 0 end DelBagItem(atk_role, item_id, 1) -- Вызываем оригинальную функцию _G[manufacture_fix_table[item_id].func_end .. "_original"](ATKER, DEFER, sklv) end -- Связать end - функцию с ID предмета function bind_func(item_id) return function(ATKER, DEFER, sklv) return manufacture_fix_end_func(ATKER, DEFER, sklv, item_id) end end -- Перехватываем функции мануфактуры for item_id, data in pairs(manufacture_fix_table) do _G[data.func_beg] = manufacture_fix_begin_func _G[data.func_end .. "_original"] = _G[data.func_end] _G[data.func_end] = bind_func(item_id) end Заполняем таблицу manufacture_fix_table и подключаем скрипт manufacture_fix.lua в конце файла skilleffect.lua dofile(GetResPath("script\\calculate\\manufacture_fix.lua")) В результате скрипт автоматически исправит баг с мануфаком и вам не придется вручную редактировать каждую функцию. P.S. Не тестировал, но должно работать 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
Fomin 53 Report post Posted September 3, 2018 2 часа назад, Stinger сказал: Предлагаю более радикальный вариант. function SkillUnable(player) local pkt = GetPacket() WriteCmd(pkt, 1505) SendPacket(player,pkt) end Просто добавляем эту функцию и не нужно ничего исправлять, накосячил - распишись. Можно таким же методом реализовать защиту от анти-анимации? Запускать КД на 1 сек всех навыков после использования одного? Quote Share this post Link to post Share on other sites
Knight 15 Report post Posted September 3, 2018 10 минут назад, Fomin сказал: Можно таким же методом реализовать защиту от анти-анимации? Запускать КД на 1 сек всех навыков после использования одного? бестолку, думаю можно не объяснять почему. Проще увеличь КД у скилов четко по длине анимации Quote Share this post Link to post Share on other sites
Fomin 53 Report post Posted September 3, 2018 Только что, Knight сказал: бестолку, думаю можно не объяснять почему. Проще увеличь КД у скилов четко по длине анимации Нет, маленько не понял. Смотри, ставя анти-анимацию, игрок может прожать за 1 секунду несколько скиллов. А без анти-анимации, клиент этого не позволит, нужно будет дождаться окончания анимации на персонаже. Quote Share this post Link to post Share on other sites
FapFap 13 Report post Posted September 3, 2018 (edited) function SkillUnable ( player ) local pkt = GetPacket () WriteCmd ( pkt , 1505 ) SendPacket ( player , pkt ) end Where to put this function? @Stinger Edited September 3, 2018 by FapFap Quote Share this post Link to post Share on other sites
Fomin 53 Report post Posted September 3, 2018 К слову, в 2.0 защита вшита. ВСЕ скиллы отправляются на КД после прожатия любого навыка. Quote Share this post Link to post Share on other sites
Fomin 53 Report post Posted September 3, 2018 38 минут назад, Stinger сказал: Это будет не эффективно , допустим если мне нужно использовать только тело феи моментально , я использую и все , мне достаточно , секунда вовсе не проблема. Так же в 2.0, иногда достаточно 1 го Скилла без анимации, нужно копать глубже . А вообще можно , создавать переменную и записывать время + 1 секунду , но суть в том , что скилл уйдёт в откат , да он конечно не сработает , в своё время я так решил проблему когда сделали оглушение от метеоритного дождя и зажигательных пуль , игроки быстро меняли оружие и стан выходил бесконечный, это решило проблему, правда я просто отключал стан у второго навыка а не отключал игрока )) Можно реализовать таким образом , при отключении , вешать скилл который блокирует навыки на пару секунд , предварительно убрав анимацию )) Можно ли как то прописать эффект сразу ко всем навыкам, не прописывая к каждому?) "Нажал любой скилл - эффект на анти-навыки наложился." Quote Share this post Link to post Share on other sites
Panda 11 Report post Posted September 8, 2018 В 05.09.2018 в 05:52, Stinger сказал: Как я понял, тут не принято помогать друг другу просто так, кто успел скачать - наздоровье. Можно поинтересоваться, почему вы так решили? Quote Share this post Link to post Share on other sites
V3ct0r 2,117 Report post Posted September 9, 2018 On 9/4/2018 at 10:52 PM, Stinger said: Как я понял, тут не принято помогать друг другу просто так Ничего подобного. В данном случае, помогать просто так не хочешь именно ты, и при этом проецируешь свое странное поведение на весь форум. Напиши пару статей, выложи разработанные тобой программы или скрипты, внеси вклад в наш форум, и все будут тебе рады. Понятное дело, это гораздо сложнее, чем писать глупые комментарии. 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