MeRDox 60 Опубликовано 26 августа, 2015 Кто знает, как в PWSoft сделать так, чтобы награду выдавало после использования какого-то скила? сейчас стоит после убийства. package ai; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.quest.jython.QuestJython; import net.sf.l2j.util.Rnd; public class godItem extends QuestJython { //Мобы private final static int[] Mob1 = {61010}; //ID итема private final static int god_item = 14070; //Включить или выключить дополнительный дроп private static boolean Bool = true; //ID фарм монет private final static int Farm_Coin = 10000; //Шанс дропа предмета private final static int chance = 100; //Сколько давать за убитого моба //От Drop_Count_Min до Drop_Count_Max private final static int Drop_Count_Min = 1; private final static int Drop_Count_Max = 1; public master(int questId, String name, String descr) { super(questId, name, descr, 1); for (int mobs : Mob1) addKillId(mobs); } @Override public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet) { int nagrada = Rnd.get(Drop_Count_Min,Drop_Count_Max); int npcId = npc.getNpcId(); int count = killer.getInventory().getInventoryItemCount(master1_item,0); for (int id : Mob1) if(npcId == id && count >= 0 && Bool == true && Rnd.get(100) < chance) { killer.giveItem(Farm_Coin,nagrada); } return null; } public static void main(String... arguments ) { new master(-1, "godItem", "godItem"); } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 26 августа, 2015 Нужно смотреть методы. Есть onAttack, но нужно искать onCast или типо того. в нем уже проверять ИД скилла и выдавать награду. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeRDox 60 Опубликовано 26 августа, 2015 (изменено) Нужно смотреть методы. Есть onAttack, но нужно искать onCast или типо того. в нем уже проверять ИД скилла и выдавать награду. спасибо, буду что-то пробовать) Изменено 26 августа, 2015 пользователем Merdox Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 26 августа, 2015 спасибо, будем пробовать, я бы не догадался) Самое простое это найти квест или скрипт с похожим действием и посмотреть, через какой метод сделано. На вскидку приходит только прокачка СА, посмотрите этот квест, может подойдет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeRDox 60 Опубликовано 26 августа, 2015 Самое простое это найти квест или скрипт с похожим действием и посмотреть, через какой метод сделано. На вскидку приходит только прокачка СА, посмотрите этот квест, может подойдет. уже пробовал, искал, ничего не мог найти) СА смотрел чуток не то получается Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
(D)uality 700 Опубликовано 26 августа, 2015 После простого юза скилла или после юза скилла на моба ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 26 августа, 2015 После простого юза скилла или после юза скилла на моба ? Я так понимаю, на моба должен кастоваться скилл и после этого выдаётся итем. Нету ПВ сборки, так бы глянул. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeRDox 60 Опубликовано 26 августа, 2015 После простого юза скилла или после юза скилла на моба ? После юза скила на моба. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CalypsoToolz 451 Опубликовано 26 августа, 2015 Глянул пв, нужно использовать onSkillUse: ... addSkillUseId(ид моба) // подключить обработчик ... @Override public String onSkillUse(L2NpcInstance npc, L2PcInstance caster, L2Skill skill) { //сам функционал } 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeRDox 60 Опубликовано 26 августа, 2015 (изменено) Глянул пв, нужно использовать onSkillUse: ... addSkillUseId(ид моба) // подключить обработчик ... @Override public String onSkillUse(L2NpcInstance npc, L2PcInstance caster, L2Skill skill) { //сам функционал } спасибо большое, сейчас буду пробовать реализовать хотя, было бы неплохо, если бы поподробней расписали, а то я боюсь запутаюсь...даже в двух соснах) Изменено 26 августа, 2015 пользователем Merdox Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CalypsoToolz 451 Опубликовано 26 августа, 2015 спасибо большое, сейчас буду пробовать реализовать хотя, было бы неплохо, если бы поподробней расписали, а то я боюсь запутаюсь...даже в двух соснах) За пример можно взять ивент с тыквами. 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeRDox 60 Опубликовано 26 августа, 2015 За пример можно взять ивент с тыквами. Спасибо, вроде бы разобрался, ну вот награду почему-то не дает. Ошибок в гс нету, кто его знает в чем проблема. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 26 августа, 2015 Спасибо, вроде бы разобрался, ну вот награду почему-то не дает. Ошибок в гс нету, кто его знает в чем проблема. Код хоть покажите. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeRDox 60 Опубликовано 26 августа, 2015 package ai; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.L2Skill; import net.sf.l2j.gameserver.model.quest.jython.QuestJython; import net.sf.l2j.util.Rnd; public class master extends QuestJython { //Мобы private final static int[] Mob1 = {61010}; private final static int[] Mob2 = {43919}; //ID Итема private final static int master1_item = 14070; //ID Скила private final static int Skill1 = 42; //Включить или выключить дополнительный дроп private static boolean Bool = true; //ID фарм монет private final static int Farm_Coin = 10000; private final static int Earth_Token = 12010; //Шанс дропа предмета private final static int chance = 100; private final static int chance1 = 100; //Сколько давать за убитого моба //От Drop_Count_Min до Drop_Count_Max private final static int Drop_Count_Min = 1; private final static int Drop_Count_Max = 1; public master(int questId, String name, String descr) { super(questId, name, descr, 1); for (int mobs : Mob1) addKillId(mobs); for (int mobs : Mob2) addSkillUseId(mobs); } //getIsSpoiledBy isSpoil @Override public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet) { int nagrada = Rnd.get(Drop_Count_Min,Drop_Count_Max); int npcId = npc.getNpcId(); int count = killer.getInventory().getInventoryItemCount(master1_item,0); for (int id : Mob1) if(npcId == id && count >= 0 && Bool == true && Rnd.get(100) < chance) { killer.giveItem(Farm_Coin,nagrada); } return null; } public String onSkillUse(L2NpcInstance npc, L2PcInstance caster, L2Skill skill) { int spoil1 = Rnd.get(Drop_Count_Min,Drop_Count_Max); int npcId = npc.getNpcId(); int count = caster.getInventory().getInventoryItemCount(master1_item,0); int SkillID = skill.getId(); for (int id : Mob2) if(npcId == id && count >= 0 && Bool == true && Rnd.get(100) < chance1 && SkillID == Skill1) { caster.giveItem(Earth_Token,spoil1); } return null; } public static void main(String... arguments ) { new master(-1, "master", "master"); } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 26 августа, 2015 Ужасно написано конечно, если время будет, то немного переделаю. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeRDox 60 Опубликовано 26 августа, 2015 Ужасно написано конечно, если время будет, то немного переделаю. я не спец в этом деле, все делаю по примеру, смотрю на похожие коды и переделываю) мне это не принципиально, найти бы в чем может быть проблема. Или же может не правильно все прописал? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 26 августа, 2015 я не спец в этом деле, все делаю по примеру, смотрю на похожие коды и переделываю) мне это не принципиально, найти бы в чем может быть проблема. Или же может не правильно все прописал? public String onSkillUse(L2NpcInstance npc, L2PcInstance caster, L2Skill skill) { if(Rnd.get(100) < chance1 && skill.getId() == Skill1) { caster.giveItem(Earth_Token, Rnd.get(Drop_Count_Min,Drop_Count_Max); } return null; } Этого достаточно, т.к. АИ отвечает только за этих мобов и метод вызывается, когда на зарегестрированного моба юзают скилл. Создавать лишние переменные тоже ни к чему. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeRDox 60 Опубликовано 27 августа, 2015 public String onSkillUse(L2NpcInstance npc, L2PcInstance caster, L2Skill skill) { if(Rnd.get(100) < chance1 && skill.getId() == Skill1) { caster.giveItem(Earth_Token, Rnd.get(Drop_Count_Min,Drop_Count_Max); } return null; } Этого достаточно, т.к. АИ отвечает только за этих мобов и метод вызывается, когда на зарегестрированного моба юзают скилл. Создавать лишние переменные тоже ни к чему. по прежнему не работает, какой бы скил не ставил. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 27 августа, 2015 тут на питоне, можно глянуть q20_BringUpWithLove\__init__.py 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DeluxeMD 73 Опубликовано 31 августа, 2015 сборка пв чистая не грузит скрипты в чем может быть проблема Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeRDox 60 Опубликовано 7 сентября, 2015 пропиши к ним путь в data/scripts.cfg Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты