Karimdjanov95 10 Опубликовано 17 января, 2018 (изменено) Доброе утро/день/вечер/ночь ув.пользователи форума, смотря кто в какое время читает. Не подскажете как сделать маленький скрипт на автообмен предмета. Допустим, накопилось у меня 1к PC-очков. Нужно что бы система сразу его поменяла скажем на адены(или на любой другой предмет). • Хроники ИТ. • Сборка - не имеет значение ( смогу переписать сам под любую другую, главное основу взять ) Изменено 17 января, 2018 пользователем Karimdjanov95 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 17 января, 2018 (изменено) В коде, где идет присваивание очков, добавить автообмен. будет типо такого: point += 1; // добавляется очки // проверяем, набрплось ли 1к очков if (point >= 1000){ point = 0; // обнуляем очки player.addItem(ADENA, 1000000); // присваиваем адену player.updateInvetory(); // обновляем инвентарь } Так же, если исходников нету, можно юзануть ThreadPoolManager Изменено 17 января, 2018 пользователем zGosu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
†DeMoN†™ 156 Опубликовано 17 января, 2018 Самый простой вариант, учитывающий все события (обмен между игроками, поднятие дропа и и.д.) - идём в функцию выдачи игроку предмета, добавляем проверку на ид предмета (чтобы лишний раз не делать тонну обработок), если ид нужный нам, берём пспоинты из инвентаря юзера, складываем с выдаваемым значением, если больше тысячи, то удаляем из инвентаря количество = 1000-count. Выдаём адену, например, и прерываем дальнейшую выдачу ретёрном. Можно дополнить формулой и динамической обработкой, чтобы менять все количество, в случае получения их в большем количестве. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 17 января, 2018 (изменено) в инстал скрипта(запуск) пишет ThreadPoolManager.getInstance().scheldureAiAtFixRate(new yourName, initial long, delay long); само собой как это используется у вас либо ламбадой --> yourName также создаем класс private class yourName implements Runnable { run(){ for(L2ItemInstance item : activeChar.getInventory().getItems()){ if(item.getItemId()==id_pcBang && item.getCount =>1000){ player.destroyItem(item.getItemId(), 1000); player.addtem(id,count) } } } } Изменено 17 января, 2018 пользователем Demoncool Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
†DeMoN†™ 156 Опубликовано 17 января, 2018 10 часов назад, Demoncool сказал: в инстал скрипта(запуск) пишет ThreadPoolManager.getInstance().scheldureAiAtFixRate(new yourName, initial long, delay long); само собой как это используется у вас либо ламбадой --> yourName также создаем класс private class yourName implements Runnable { run(){ for(L2ItemInstance item : activeChar.getInventory().getItems()){ if(item.getItemId()==id_pcBang && item.getCount =>1000){ player.destroyItem(item.getItemId(), 1000); player.addtem(id,count) } } } } Тоже вариант, но, О - оптимизация Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 17 января, 2018 (изменено) тогда в onKill какого-то фарм монстра можно запихнуть) или онТалк гмшопа)) Изменено 17 января, 2018 пользователем Demoncool 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
†DeMoN†™ 156 Опубликовано 17 января, 2018 (изменено) 3 часа назад, Demoncool сказал: тогда в onKill какого-то фарм монстра можно запихнуть) или онТалк гмшопа)) Всё зависит от конкретной реализации. Если тупо фарм мобов - то да, в onKill будет наилучшим вариантом. Но, опять же, зависит от % дропа. Если маленький - то не особо вариант. Смысл обрабатывать каждого моба, если далеко не факт, что с него что-то упадёт. (Если реализация через обычный дроп). Если через скрипт - то да. Изменено 17 января, 2018 пользователем †DeMoN†™ Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Karimdjanov95 10 Опубликовано 30 января, 2018 Всем спасибо, всё получилось. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты