Zifrius 0 Опубликовано 23 сентября, 2014 Всем здарова. В общем очень нужна помощь. Суть такая: Создал у себя на сервере свитки на уменьшение счетчика пк, за основу взял свиток SP, в клиент и сервер итемы добавил, все отлично отображается. Сейчас такая трабла, неясно как к новому итему привязать скил. Неясно даже как привязан скил на повешение сп по дефолту. И еще неясно как прописать скил чтоб снимало счетчик пк на определенный уровень. Жду помощи заранее спс. Skype: Zifrius, или на форуме. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Restore 102 Опубликовано 23 сентября, 2014 Автоматическое сообщение Эта тема была перемещена из "Java сервер" в "Форум для новичков". Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Zifrius 0 Опубликовано 27 сентября, 2014 (изменено) Неужели никто не подскажет? мне удалось понять как работает квест на снятие счетчика пк, по сути там скрипт. Итемы по клику в моей сборки не расположены как обычно в gameserver\data\stats\etcitem\ кагбы \etcitem\ нет каталога. Я распаковал ядро сборки, там нашел такую вещь: \libs\Исходники\pw_interlude\scripts\items\itemhandlers\ в ней пачка файлов: скриптов по категориям заинтересовал такой файл: Scrolls.class. Там собственно скрипт с указанием итема и соответствующего ему скила. Но как туда добавить мой итемы вообще неясно, да и если сделать вывод что итем в моем случае снижает пк счетчик то тут при нажатие должно будет вызываться действие, а конкретно запрос в бд. Ядро копать нет смысла кагбы наверняка можно все в 1м внешнем скрипте написать. Вот если кто в состояние помочь оплатил бы даже, в разумных пределах конечно. А так может у кого есть еще мысли? Изменено 27 сентября, 2014 пользователем Zifrius Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ImmortalPony 126 Опубликовано 27 сентября, 2014 воу воу а ответ же давали (возможно в похож ой теме). Берем шарную сборку ГОД++ и смотрим реализацию данного свитка (метода и все что с ним связано). Профит не хз* даже. (на подобии СП свитков или ститков снятия штрафа за смерть (меняете на свои задачи и готово)). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Bioboxioc 8 Опубликовано 27 сентября, 2014 Может стоит копать квкест на снятие пк. Найти там метод уменьшающий счетчик (это явно будет одна строчка, и если у вас норм сборка, с человеческим названием). Потом копать скилы и написать свой использующий данный метод. А уж потом окпать свитки и привязать к своему этот скил? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Zifrius 0 Опубликовано 27 сентября, 2014 (изменено) Да я написал все с чем столкнулся и что в данной сборке свой заморочки описанные выше, вот сейчас буду покупать последнею ревизию данной сборки у разрабов, п.с: в шаровых сборках God эти свитки не работают (нереализованны) Изменено 27 сентября, 2014 пользователем Zifrius Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ImmortalPony 126 Опубликовано 27 сентября, 2014 (изменено) у кого покупаешь? в шару мало кто дает нормально реализованный ДП (притом половина не знает что делает - лоси имхо) Изменено 27 сентября, 2014 пользователем MaJr Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Zifrius 0 Опубликовано 27 сентября, 2014 у кого покупаешь? в шару мало кто дает нормально реализованный ДП (притом половина не знает что делает - лоси имхо) PWsoft последнею рев. беру от разрабов, может еще они что подскажут хз. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ImmortalPony 126 Опубликовано 27 сентября, 2014 а я думал про команды что пилят ГОД++)))) эти свитки с полной реализацией есть в шаре (я забыл на каком портале). удачи. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Zifrius 0 Опубликовано 27 сентября, 2014 да вот качал даже годворлд линдвиор там тупо на этом итеме и завершено все, некто не делает их, не считая нужным, и тут не все так просто нету такого параметра для скила как рк-1 например, такой параметр есть только в скрипте, его видел в квесте на снятие пк счетчика. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Zifrius 0 Опубликовано 27 сентября, 2014 Перекачал все свежие шаровые ревизий включаю линдвиор и бамбук) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
VREDNbIi 145 Опубликовано 27 сентября, 2014 Варианта два, либо привязать к итему скилл новый с новым типом, что по факту бесполезно, можно сразу написать метод на снижение ПК и юзать этот метод с итемом, и все... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 27 сентября, 2014 сэмпл уменьшение количества пк: package l2p.gameserver.skills.skillclasses; import l2p.gameserver.model.Creature; import l2p.gameserver.model.Player; import l2p.gameserver.model.Skill; import l2p.gameserver.network.serverpackets.SystemMessage; import l2p.gameserver.network.serverpackets.components.SystemMsg; import l2p.gameserver.templates.StatsSet; import java.util.List; public class ReducePK extends Skill { public ReducePK(StatsSet set) { super(set); } @Override public boolean checkCondition(Creature activeChar, Creature target, boolean forceUse, boolean dontMove, boolean first) { if (!target.isPlayer()) { activeChar.sendPacket(SystemMsg.THAT_IS_AN_INCORRECT_TARGET); return false; } Player player = (Player) target; if (player.getPkKills() < 1 || player.isCursedWeaponEquipped()) { activeChar.sendPacket(new SystemMessage(SystemMsg.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS).addSkillName(this)); return false; } return super.checkCondition(activeChar, target, forceUse, dontMove, first); } @Override public void useSkill(Creature caster, List<Creature> targets) { for (Creature target : targets) if (target != null && target.isPlayer()) { ((Player) target).setPkKills((int) Math.max(((Player) target).getPkKills() - getPower(), 0)); ((Player) target).sendChanges(); } } } уменьшение количества кармы package l2p.gameserver.skills.skillclasses; import l2p.gameserver.model.Creature; import l2p.gameserver.model.Player; import l2p.gameserver.model.Skill; import l2p.gameserver.network.serverpackets.SystemMessage; import l2p.gameserver.network.serverpackets.components.SystemMsg; import l2p.gameserver.templates.StatsSet; import java.util.List; public class ReduceKarma extends Skill { public ReduceKarma(StatsSet set) { super(set); } @Override public boolean checkCondition(Creature activeChar, Creature target, boolean forceUse, boolean dontMove, boolean first) { if (!target.isPlayer()) { activeChar.sendPacket(SystemMsg.THAT_IS_AN_INCORRECT_TARGET); return false; } Player player = (Player) target; if (player.getKarma() >= 0 || player.isCursedWeaponEquipped()) { activeChar.sendPacket(new SystemMessage(SystemMsg.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS).addSkillName(this)); return false; } return super.checkCondition(activeChar, target, forceUse, dontMove, first); } @Override public void useSkill(Creature caster, List<Creature> targets) { for (Creature target : targets) if (target != null && target.isPlayer()) ((Player) target).increaseKarma((int) Math.min(-((Player) target).getKarma(), getPower())); } } 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Zifrius 0 Опубликовано 27 сентября, 2014 Ну просто нереальный сенк, завтра с утречка опробую. отпишу что как. постараюсь адоптировать под свою сборку) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Zifrius 0 Опубликовано 28 сентября, 2014 Вот собрал папочку: https://yadi.sk/d/f02Wz-kkbhae9 вроде бы все верно сделал грузить отказывается: Initializing QuestManager importing Skills data ... failed to import Skills : ReduceKarma failed to import Skills : ReducePK ... done importing quests ... ... done Кому несложно проверить?) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Zifrius 0 Опубликовано 28 сентября, 2014 Может надо компилировать в ..class? кто может подсказать там же получается файл .py основной а .class дамп? Или я вообще неверно рассуждаю? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Zifrius 0 Опубликовано 28 сентября, 2014 И отсюда вытекает интересная фишка- вот например скилл: <skill id="9903" levels="1" name="No PK scroll"> <!-- 9903 1 Scroll to reduce counter PK lvl1--> <set name="operateType" val="OP_ACTIVE" /> <set name="hitTime" val="2000" /> <set name="coolTime" val="200" /> <set name="reuseDelay" val="3000" /> <set name="target" val="TARGET_SELF" /> <set name="skillType" val="NOTDONE" /> <for> <mul stat="ReducePK" val="1" order="0x10"/> </for> </skill> Который буду привязывать к итему, сомневаюсь что верно прописал параметр:stat="ReducePK, ну пока неважно, суть в том что скиллы грузяться при старте сервера, а скрипты в самом конце, и даже если удалость загрузить эти новые скрипты, то параметр нового запроса будет указан после и скилл не сможет загрузиться... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ImmortalPony 126 Опубликовано 28 сентября, 2014 вы просматривали функционал "Пета на снятие ПК" ? возможно там можно изменить и под свиток запрос. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 28 сентября, 2014 И отсюда вытекает интересная фишка- вот например скилл: <skill id="9903" levels="1" name="No PK scroll"> <!-- 9903 1 Scroll to reduce counter PK lvl1--> <set name="operateType" val="OP_ACTIVE" /> <set name="hitTime" val="2000" /> <set name="coolTime" val="200" /> <set name="reuseDelay" val="3000" /> <set name="target" val="TARGET_SELF" /> <set name="skillType" val="NOTDONE" /> <for> <mul stat="ReducePK" val="1" order="0x10"/> </for> </skill> Который буду привязывать к итему, сомневаюсь что верно прописал параметр:stat="ReducePK, ну пока неважно, суть в том что скиллы грузяться при старте сервера, а скрипты в самом конце, и даже если удалость загрузить эти новые скрипты, то параметр нового запроса будет указан после и скилл не сможет загрузиться... в моем примере я показал классы-скилтайпы, т.е. в итоге сами скиллы будут типа таких <!-- Scroll: PK (Low-grade) / Свиток Возобновления (низкий уровень) --> <skill id="9504" levels="1" name="Scroll: PK (Low-grade)"> <set name="icon" val="icon.skill0000" /> <set name="hitTime" val="2000" /> <set name="coolTime" val="200" /> <set name="reuseDelay" val="3000" /> <set name="power" val="1" /> <set name="target" val="TARGET_SELF" /> <set name="skillType" val="REDUCE_PK" /> <set name="operateType" val="OP_ACTIVE" /> <set name="itemConsumeId" val="35741" /> <set name="itemConsumeCount" val="1" /> <set name="isHandler" val="true" /> <cond msg="Это можно использовать только во Флоране."> <or> <zone name="[floran_town_peace1]" /> <zone name="[floran_town_peace2]" /> <zone name="[floran_town_peace3]" /> </or> </cond> </skill> 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты