Перейти к содержанию

drakola

Постоялец
  • Публикаций

    244
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1
  • Отзывы

    0%

Весь контент drakola

  1. а как же double part = attacker.getStatus().getCurrentHp() / attacker.getMaxHp(); ?
  2. это понятно что надо менять цифры. менял если ставить за место 0.577 ( менять на 0) то дамаг идет по 2 начинаешь сливать хп все равно по 2 Походу дело не формуле. потому что в L2CODE тоже самое } double power = skill.getPower(attacker); if (skill.getSkillType() == L2SkillType.DEATHLINK) { double part = attacker.getStatus().getCurrentHp() / attacker.getMaxHp(); power *= Math.pow(1.7165 - part, 2.0) * 0.577; }
  3. лазил и не нашел. дело не формуле! дело походу в L2Character.java и тут кто и сможет помочь это ncsSpawN он один тут знает как исправить. а остальные тут набивают только сообщения не больше
  4. Что тут не так ? // Получаем мощность скила double power = skill.getPower(attacker); // Если скил КДЛ, то применяем форумулу КДЛА if (skill.getSkillType() == L2SkillType.DEATHLINK) { double part = attacker.getStatus().getCurrentHp() / attacker.getMaxHp(); power *= (Math.pow(1.7165 - part, 2) * 0.577); } byte reflect = SKILL_REFLECT_FAILED; // check for non-reflected skilltypes, need additional retail check switch (skill.getSkillType()) { case BUFF: case REFLECT: case HEAL_PERCENT: case MANAHEAL_PERCENT: case HOT: case CPHOT: case MPHOT: case UNDEAD_DEFENSE: case AGGDEBUFF: case CONT: return SKILL_REFLECT_FAILED; // these skill types can deal damage case PDAM: case BLOW: case MDAM: case DEATHLINK: case CHARGEDAM: final Stats stat = skill.isMagic() ? Stats.VENGEANCE_SKILL_MAGIC_DAMAGE : Stats.VENGEANCE_SKILL_PHYSICAL_DAMAGE; final double venganceChance = target.getStat().calcStat(stat, 0, target, skill); if (venganceChance > Rnd.get(100)) { reflect |= SKILL_REFLECT_VENGEANCE; } break; } final double reflectChance = target.calcStat(skill.isMagic() ? Stats.REFLECT_SKILL_MAGIC : Stats.REFLECT_SKILL_PHYSIC, 0, null, skill); if (Rnd.get(100) < reflectChance) { reflect |= SKILL_REFLECT_SUCCEED; } return reflect; }
  5. <skill id="1159" levels="22" name="Curse Death Link" enchantLevels1="30" enchantLevels2="30"> <table name="#enchantMagicLvl"> 76 76 76 77 77 77 78 78 78 79 79 79 80 80 80 81 81 81 82 82 82 82 83 83 83 84 84 85 85 85 </table> <enchant1 name="magicLvl" val="#enchantMagicLvl"/> <enchant2 name="magicLvl" val="#enchantMagicLvl"/> <table name="#ench2MpConsume"> 54 53 52 51 51 52 49 48 48 47 46 45 44 44 43 42 41 41 40 39 38 38 37 36 35 34 34 33 32 31 </table> <table name="#ench2MpConsume_Init"> 13 13 13 12 12 12 12 12 12 11 11 11 11 11 10 10 10 10 10 9 9 9 9 9 8 8 8 8 8 7 </table> <table name="#mpConsume_Init"> 9 10 10 11 11 11 11 11 12 12 12 12 12 13 13 13 13 13 14 14 14 14 </table> <table name="#mpConsume"> 36 38 39 41 42 43 44 44 45 46 47 48 48 49 50 51 51 52 53 53 54 55 </table> <table name="#magicLvl"> 50 52 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 </table> <table name="#power"> 68 72 75 78 80 82 84 85 87 89 90 92 94 96 97 99 100 102 104 105 107 108 </table> <table name="#ench1Power"> 109 109 110 111 111 112 113 113 114 115 115 116 116 117 118 118 119 120 120 121 122 122 123 124 124 125 125 126 127 127 </table> <set name="mpInitialConsume" val="#mpConsume_Init"/> <set name="mpConsume" val="#mpConsume"/> <set name="magicLvl" val="#magicLvl"/> <set name="power" val="#power"/> <set name="target" val="TARGET_ONE"/> <set name="element" val="5"/> <!-- Dark --> <set name="elementPower" val="20"/> <set name="reuseDelay" val="6000"/> <set name="hitTime" val="4000"/> <set name="skillType" val="DEATHLINK"/> <set name="isMagic" val="true"/> <set name="operateType" val="OP_ACTIVE"/> <set name="castRange" val="900"/> <set name="effectRange" val="1400"/> <enchant1 name="power" val="#ench1Power"/> <enchant2 name="mpConsume" val="#ench2MpConsume"/> <enchant2 name="mpInitialConsume" val="#ench2MpConsume_Init"/> </skill> где тут <effect name="DeathLink" /> ?
  6. Привет всем. проблема такая Curse Death Link & Fatal Counter должен дамажить 0 при полном ХП а у меня все на оборот. как мне исправить и где ? исходники it.su
  7. drakola

    .acp как соулшоты

    Тут есть скрипт
  8. велоцерапторов. вот в этом нет проблем. что бы их было 3 это я уже сделал. за фикс спс все работает. ты как всегда красавчик помогаешь.
  9. дела не в этом классе SailrenManager где то другая проблема
  10. не хотите помогать не чего тут набивать сообщения могли б просто молча пройти мимо. вас умников полно но не кто не знает как исправить.
  11. где именно добавить в каком месте и что ?
  12. да но только он один. проходит 40 мин и выкидывает из логова ( а должно 3 быть и потом рб а после смерти рб должен появляться телепорт из логова как на бае и т.д.п
  13. /* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package ru.catssoftware.gameserver.instancemanager.grandbosses; import java.util.List; import java.util.concurrent.ScheduledFuture; import ru.catssoftware.Config; import ru.catssoftware.Message; import ru.catssoftware.config.L2Properties; import ru.catssoftware.gameserver.ThreadPoolManager; import ru.catssoftware.gameserver.ai.CtrlIntention; import ru.catssoftware.gameserver.datatables.NpcTable; import ru.catssoftware.gameserver.model.L2Attackable; import ru.catssoftware.gameserver.model.L2Boss; import ru.catssoftware.gameserver.model.L2CharPosition; import ru.catssoftware.gameserver.model.L2Character; import ru.catssoftware.gameserver.model.L2Spawn; import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.entity.GrandBossState; import ru.catssoftware.gameserver.model.entity.GrandBossState.StateEnum; import ru.catssoftware.gameserver.model.mapregion.TeleportWhereType; import ru.catssoftware.gameserver.model.quest.pack.ai.Sailren; import ru.catssoftware.gameserver.network.serverpackets.SocialAction; import ru.catssoftware.gameserver.templates.chars.L2NpcTemplate; import ru.catssoftware.gameserver.util.Util; import ru.catssoftware.tools.random.Rnd; import javolution.util.FastList; /** * * This class ... * Management for fight with sailren. * @version $Revision: $ $Date: $ * @[member='Authority'] L2J_JP SANDMAN */ public class SailrenManager extends BossLair { private static SailrenManager _instance; // teleport cube location. protected L2Spawn _sailrenCubeSpawn; protected L2NpcInstance _sailrenCube; // spawn data of monsters protected L2Spawn _velociraptorSpawn; // Velociraptor protected L2Spawn _pterosaurSpawn; // Pterosaur protected L2Spawn _tyrannoSpawn; // Tyrannosaurus protected L2Spawn _sailrenSapwn; // Sailren // Instance of monsters public L2NpcInstance _activeMob; // Velociraptor protected L2Boss _sailren; // Sailren // Tasks protected ScheduledFuture<?> _cubeSpawnTask = null; protected ScheduledFuture<?> _sailrenSpawnTask = null; protected ScheduledFuture<?> _intervalEndTask = null; protected ScheduledFuture<?> _activityTimeEndTask = null; protected ScheduledFuture<?> _onPartyAnnihilatedTask = null; protected ScheduledFuture<?> _socialTask = null; public static long MIN_RESPAWN; public static long MAX_RESPAWN; public static boolean ENABLE_SINGLE; public static long INTERVAL_OF_MONSTER; public static long ACTIVITY_TIME; private boolean ENABLED; // State of sailren's lair. protected boolean _isAlreadyEnteredOtherParty = false; public static SailrenManager getInstance() { if (_instance == null) _instance = new SailrenManager(); return _instance; } private SailrenManager() { super(); try { L2Properties p = new L2Properties("./config/main/events/bosses.properties"); ENABLED = Boolean.parseBoolean(p.getProperty("SailrenEnabled","true")); if(!ENABLED) return; MIN_RESPAWN = Integer.parseInt(p.getProperty("SailrenMinRespawn","1440")); MAX_RESPAWN = Integer.parseInt(p.getProperty("SailrenMaxRespawn","2880")); INTERVAL_OF_MONSTER = Integer.parseInt(p.getProperty("SailrenIntervalOfMonsters","5")); ENABLE_SINGLE = Boolean.parseBoolean(p.getProperty("SailrenEnableSinglePlayer","false")); ACTIVITY_TIME = Integer.parseInt(p.getProperty("SailrenActivityTime","50")); } catch(Exception e) { _log.error("SailrenManager: Error while reading config",e); return; } _state = new GrandBossState(29065); _state.load(); } // init. @[member='override'] public void init() { // init state. if(!ENABLED) return; _isAlreadyEnteredOtherParty = false; try { L2NpcTemplate template1; // Velociraptor template1 = NpcTable.getInstance().getTemplate(22218); //Velociraptor _velociraptorSpawn = new L2Spawn(template1); _velociraptorSpawn.setLocx(27852); _velociraptorSpawn.setLocy(-5536); _velociraptorSpawn.setLocz(-1983); _velociraptorSpawn.setHeading(44732); _velociraptorSpawn.setAmount(1); // Pterosaur template1 = NpcTable.getInstance().getTemplate(22199); //Pterosaur _pterosaurSpawn = new L2Spawn(template1); _pterosaurSpawn.setLocx(27852); _pterosaurSpawn.setLocy(-5536); _pterosaurSpawn.setLocz(-1983); _pterosaurSpawn.setHeading(44732); _pterosaurSpawn.setAmount(1); // Tyrannosaurus template1 = NpcTable.getInstance().getTemplate(22217); //Tyrannosaurus _tyrannoSpawn = new L2Spawn(template1); _tyrannoSpawn.setLocx(27852); _tyrannoSpawn.setLocy(-5536); _tyrannoSpawn.setLocz(-1983); _tyrannoSpawn.setHeading(44732); _tyrannoSpawn.setAmount(1); // Sailren template1 = NpcTable.getInstance().getTemplate(29065); //Sailren _sailrenSapwn = new L2Spawn(template1); _sailrenSapwn.setLocx(27810); _sailrenSapwn.setLocy(-5655); _sailrenSapwn.setLocz(-1983); _sailrenSapwn.setHeading(44732); _sailrenSapwn.setAmount(1); _bossSpawn = _sailrenSapwn; } catch (Exception e) { _log.warn(e.getMessage()); } new Sailren(); _questName = Sailren.QUEST; try { L2NpcTemplate cube = NpcTable.getInstance().getTemplate(32107); _sailrenCubeSpawn = new L2Spawn(cube); _sailrenCubeSpawn.setLocx(27734); _sailrenCubeSpawn.setLocy(-6838); _sailrenCubeSpawn.setLocz(-1982); } catch (Exception e) { _log.warn(e.getMessage()); } switch (_state.getState()) { case DEAD: _state.setRespawnDate(Rnd.get(MIN_RESPAWN, MAX_RESPAWN)*60000); _state.setState(StateEnum.INTERVAL); case SLEEP: case INTERVAL: setIntervalEndTask(); break; case UNKNOWN: case ALIVE: _state.setState(StateEnum.NOTSPAWN); } _log.info("SailrenManager: State of Sailren is " + _state.getState() + "."); } // whether it is permitted to enter the sailren's lair is confirmed. public int canIntoSailrenLair(L2PcInstance pc) { if (_state.getState().equals(GrandBossState.StateEnum.DEAD)) return 1; else if (_isAlreadyEnteredOtherParty) return 2; else if (_state.getState().equals(GrandBossState.StateEnum.INTERVAL)) return 3; else if (!ENABLE_SINGLE && (pc.getParty() == null)) return 4; else if (_state.getState().equals(GrandBossState.StateEnum.NOTSPAWN)) return 0; return 0; } // set sailren spawn task. public void setSailrenSpawnTask(int npcId) { _activeMob = null; if (_sailrenSpawnTask == null) _sailrenSpawnTask = ThreadPoolManager.getInstance().scheduleGeneral(new SailrenSpawn(npcId), INTERVAL_OF_MONSTER * 60000); } // teleporting player to sailren's lair. public void entryToSailrenLair(L2PcInstance pc) { int driftx; int drifty; if (canIntoSailrenLair(pc) != 0) { pc.sendMessage(Message.getMessage(pc, Message.MessageId.MSG_BAD_CONDITIONS)); _isAlreadyEnteredOtherParty = false; return; } if (pc.getParty() == null) { driftx = Rnd.get(-80, 80); drifty = Rnd.get(-80, 80); pc.teleToLocation(27734 + driftx, -6938 + drifty, -1982); } else { List<L2PcInstance> members = new FastList<L2PcInstance>(); // list of member of teleport candidate. for (L2PcInstance mem : pc.getParty().getPartyMembers()) { // teleporting it within alive and the range of recognition of the leader of the party. if (!mem.isDead() && Util.checkIfInRange(700, pc, mem, true)) members.add(mem); } for (L2PcInstance mem : members) { driftx = Rnd.get(-80, 80); drifty = Rnd.get(-80, 80); mem.teleToLocation(27734 + driftx, -6938 + drifty, -1982); } } _isAlreadyEnteredOtherParty = true; setSailrenSpawnTask(Sailren.VELOCIRAPTOR); } // clean up sailren's lair. @[member='override'] public void setUnspawn() { if(_state.getState()!=StateEnum.DEAD) { _state.setState(GrandBossState.StateEnum.NOTSPAWN); } else { _state.setState(StateEnum.INTERVAL); long respawn = Rnd.get(MIN_RESPAWN, MAX_RESPAWN)*60000; _state.setRespawnDate(respawn); } _state.update(); setIntervalEndTask(); if(_sailrenSpawnTask!=null) { _sailrenSpawnTask.cancel(true); _sailrenSpawnTask = null; } if(_sailrenCube!=null) { _sailrenCube.deleteMe(); _sailrenCube = null; } if(_activeMob!=null) { _activeMob.deleteMe(); _activeMob = null; } clearLair(); _isAlreadyEnteredOtherParty = false; _activityTimeEndTask = null; } // spawn teleport cube. private void spawnCube() { _sailrenCube = _sailrenCubeSpawn.doSpawn(); } // task of teleport cube spawn. public void setCubeSpawn() { _activeMob = null; _state.setState(StateEnum.DEAD); _state.update(); _cubeSpawnTask = ThreadPoolManager.getInstance().scheduleGeneral(new CubeSpawn(), 10000); } // task of interval of sailren spawn. public void setIntervalEndTask() { ThreadPoolManager.getInstance().schedule(new IntervalEnd(), _state.getInterval()); } // spawn monster. private class SailrenSpawn implements Runnable { private int _npcId; private L2CharPosition _pos = new L2CharPosition(27628, -6109, -1982, 44732); public SailrenSpawn(int npcId) { _npcId = npcId; } public void run() { if (_activityTimeEndTask == null) _activityTimeEndTask = ThreadPoolManager.getInstance().scheduleGeneral(new ActivityTimeEnd(), ACTIVITY_TIME * 60000); switch (_npcId) { case 22218: // Velociraptor _activeMob = _velociraptorSpawn.doSpawn(); _activeMob.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, _pos); if (_socialTask != null) { _socialTask.cancel(true); _socialTask = null; } _socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new Social(_activeMob, 2), 6000); break; case 22199: // Pterosaur _activeMob = _pterosaurSpawn.doSpawn(); _activeMob.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, _pos); if (_socialTask != null) { _socialTask.cancel(true); _socialTask = null; } _socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new Social(_activeMob, 2), 6000); break; case 22217: // Tyrannosaurus _activeMob = _tyrannoSpawn.doSpawn(); _activeMob.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, _pos); if (_socialTask != null) { _socialTask.cancel(true); _socialTask = null; } _socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new Social(_activeMob, 2), 6000); break; case 29065: // Sailren _sailren = (L2Boss)_sailrenSapwn.doSpawn(); _activeMob = _sailren; _state.setState(GrandBossState.StateEnum.ALIVE); _state.update(); _sailren.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, _pos); if (_socialTask != null) { _socialTask.cancel(true); _socialTask = null; } _socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new Social(_sailren, 2), 6000); break; } if(_activeMob!=null) ((L2Attackable)_activeMob).setCanReturnToSpawnPoint(false); _sailrenSpawnTask = null; } } // spawn teleport cube. private class CubeSpawn implements Runnable { public void run() { spawnCube(); } } // limit of time coming. private class ActivityTimeEnd implements Runnable { public ActivityTimeEnd() { } public void run() { setUnspawn(); _activityTimeEndTask = null; } } // interval end. private class IntervalEnd implements Runnable { public void run() { _state.setState(GrandBossState.StateEnum.NOTSPAWN); _state.update(); } } // social. private class Social implements Runnable { private int _action; private L2NpcInstance _npc; public Social(L2NpcInstance npc, int actionId) { _npc = npc; _action = actionId; } public void run() { SocialAction sa = new SocialAction(_npc.getObjectId(), _action); _npc.broadcastPacket(sa); } } @[member='override'] public void setRespawn() { } @[member='override'] public void onEnter(L2Character cha) { L2PcInstance pc = cha.getActingPlayer(); if(pc!=null && !pc.isGM() && Config.EPIC_REQUIRE_QUEST) { if(pc.getQuestState(_questName)==null) { if(pc.getParty()!=null && pc.getParty().getLeader().getQuestState(_questName)!=null) return; } else return; pc.teleToLocation(TeleportWhereType.Town); } } }
  14. да ладно ) блин как мне сделать? (
  15. а что у вас за сборка ? и у ловели тоже не работает.
  16. и как мне его сделать если там класса не хватает ? у меня сборка it.su
×
×
  • Создать...