Maxo 4 Опубликовано 11 января, 2015 В комнате с жаровнями НПЦ Sumiel меняет потухший факел на зажённый, етим факелом надо зажеть по очереди жаровни, чтоб закончить задание, прблемма состоит в том что не риализован скилл у факула, чтоб зажечь огонь, соотвественно нечего не происходит вот предмет <etcitem id="15485" name="Torch"> <set name="class" value="OTHER"/> <set name="crystal_type" value="NONE"/> <set name="destroyable" value="false"/> <set name="dropable" value="false"/> <set name="icon" value="icon.etc_torchlight_i00"/> <set name="tradeable" value="false"/> <set name="type" value="OTHER"/> <cond msgId="1508"> <player olympiad="false"/> </cond> <skills> <skill id="9059" level="1"/> </skills> </etcitem> а вот сам скилл )) <skill id="9059" levels="1" name="Torch Light"> <!-- Lights the Torch --> <set name="icon" val="icon.skill0000" /> <set name="reuseDelay" val="2000" /> <set name="magicLevel" val="1" /> <set name="hitTime" val="2000" /> <set name="target" val="TARGET_NONE" /> <set name="skillType" val="NOTDONE" /> <set name="operateType" val="OP_PASSIVE" /> </skill> где не искал этот скилл везьде NOTDONE, но через сам скрипт ивента жаровни загораются, когда нужно запомнить поочерёдность. Может кто видел его реализацию?, или как можно ришить такого рода проблему другим способом (на пример скриптом итем-скила) сборка ФТ - Hi5 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AlexZr 95 Опубликовано 11 января, 2015 у меня реализовано, только не через скилы, а в скриптах Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Maxo 4 Опубликовано 11 января, 2015 (изменено) сделал через скрипт, чтоб юзал скил, создал отдельную зону где можно применять итем private boolean use15485(Player player, boolean ctrl) { if(!player.isInZone(SumielInstance.getZone())) { player.sendPacket(new SystemMessage(SystemMessage.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS).addItemName(15485)); return false; } player.doCast(SkillTable.getInstance().getInfo(9059, 1), player, false); return true; } но, если делать так то загоряются все жаровни одновременно Алекс, посмотрел у вас, но так и не понял, как у вас это работает, после начала отсчёта времени ивента, не возмржно даже выделить жаровнью, и при юзание итема, пишет что не верная цель Изменено 11 января, 2015 пользователем Maxo Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AlexZr 95 Опубликовано 11 января, 2015 (изменено) сделал через скрипт, чтоб юзал скил, создал отдельную зону где можно применять итем private boolean use15485(Player player, boolean ctrl) { if(!player.isInZone(SumielInstance.getZone())) { player.sendPacket(new SystemMessage(SystemMessage.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS).addItemName(15485)); return false; } player.doCast(SkillTable.getInstance().getInfo(9059, 1), player, false); return true; } но, если делать так то загоряются все жаровни одновременно Алекс, посмотрел у вас, но так и не понял, как у вас это работает, после начала отсчёта времени ивента, не возмржно даже выделить жаровнью, и при юзание итема, пишет что не верная цель что то ты старое пробовал, на новой шаре выделяется Изменено 11 января, 2015 пользователем AlexZr Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BlackDream 321 Опубликовано 11 января, 2015 ид нпц сделай разные Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Maxo 4 Опубликовано 11 января, 2015 ид нпц сделай разные не вариант, так как там не позволяет движок ивента, там должен быть 1 ИД у жаровни Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 7 февраля, 2015 а в чем проблема то? там банально меняется npc state у жаровен при юзании на них скилла с определенным ид т.е. тупо 9059 скиллом с таргетом TARGET_ONE и типом BUFF (ну и еще активным, т.е. OP_ACTIVE). а в аи жаровен проверяем что за скилл на них кастуется, если 9059 и все остальные условия тоже подходят - меняем у данной жаровни стейт - setNpcState(x). вот тебе офовское поведение жаровен - по ним можешь и на яве аи для них написать /*************************************************************************** * Script Decompiled by SauDecompiler build 102306.2 ***************************************************************************/ class ai_monastery_minigame_burner : citizen { parameter: int POT_NUMBER = 0; int OFF_TIMER = 5567; int off_time = 2; handler: EventHandler CREATED() { myself::ChangeStatus(2); } EventHandler ATTACKED(attacker, skill_name_id) { if( skill_name_id == 593690625 ) { myself::ChangeNPCState(myself.sm, 1); myself::ChangeStatus(2); myself::AddUseSkillDesire(attacker, 337117185, 0, 0, 1000000); myself::BroadcastScriptEvent(2114005, POT_NUMBER, 1000); myself::AddTimerEx(OFF_TIMER, off_time * 1000); myself::ChangeStatus(3); } } EventHandler SCRIPT_EVENT(script_event_arg1, script_event_arg2) { if( script_event_arg1 == 2114001 ) { myself::ChangeStatus(2); if( script_event_arg2 == POT_NUMBER ) { myself::ChangeNPCState(myself.sm, 1); myself::AddTimerEx(OFF_TIMER, off_time * 1000); } } else if( script_event_arg1 == 2114002 ) { myself::ChangeStatus(2); myself::ChangeNPCState(myself.sm, 1); myself::AddTimerEx(OFF_TIMER, off_time * 1000); } else if( script_event_arg1 == 2114003 ) { myself::ChangeNPCState(myself.sm, 1); myself::AddTimerEx(OFF_TIMER, off_time * 1000); myself::ChangeStatus(2); } else if( script_event_arg1 == 2114004 ) { myself::ChangeStatus(2); myself::ChangeNPCState(myself.sm, 1); myself::AddTimerEx(OFF_TIMER, off_time * 1000); } else if( script_event_arg1 == 21140015 ) { myself::ChangeNPCState(myself.sm, 1); myself::AddTimerEx(OFF_TIMER, off_time * 1000); myself::ChangeStatus(3); } } EventHandler TIMER_FIRED_EX(timer_id) { if( timer_id == OFF_TIMER ) { myself::ChangeNPCState(myself.sm, 2); } } } 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты