Jump to content

LoVe+

Members
  • Posts

    115
  • Credits

  • Joined

  • Last visited

  • Days Won

    1
  • Feedback

    0%

Posts posted by LoVe+

  1. final L2Character target = getAttackTarget();
                    if (target != null)
                    {
                        if (target.isMoving())
                        {
                            range -= 100;
                        }
                        // moveToPawn(target, Math.max(range, 5)); -- delete the "//"  

    "//" if is if front of a code line , the compiler wont use that line in your code. so you can try with movetopawn and it should work normal.
                        moveTo(target.getLocation());     --- delete this line at all
                    } 
                }

     

     

    ===============================================

    final L2Character target = getAttackTarget();
                    if (target != null)
                    {
                        if (target.isMoving())
                        {
                            range -= 100;
                        }

                        moveTo(target.getLocation());   

    if (!this.isInsideRadius(worldPosition.getX(), worldPosition.getY(), (int) (10+ target.getCollisionRadius()), false))
            {

                
                int x = target.getX();
                int y = target.getY();
                
                double dx = worldPosition.getX() - x;
                double dy = worldPosition.getY() - y;
                
                double dist = Math.sqrt(dx * dx + dy * dy);
                
                double sin = dy / dist;
                double cos = dx / dist;
                
                dist -= offset - 5;
                
                x += (int) (dist * cos);
                y += (int) (dist * sin);
                
                moveTo(x, y, worldPosition.getZ());
                
            }

                    } 
                }

     

    try this maybe is bullshit maybe works , you can check how a raidboss and minions not colide into eachother and addapt or maybe just use movetopawn best but probably someone added "//" bcs he know smth we don't.

    1. + private void broadcastPvPMorphUpdate(L2PcPolymorph npc, CharSelectSlot winnerPvPKillsInfo)
    2. + {
    3. + if (winnerPvPKillsInfo == null)
    4. + {
    5. + npc.setPolymorphInfo(null);
    6. + return;
    7. + }
    8. + npc.setVisibleTitle(Config.CKM_PVP_NPC_TITLE.replaceAll("%kills%", String.valueOf(_winnerPvPKillsCount)));
    9. + npc.setTitleColor(Config.CKM_PVP_NPC_TITLE_COLOR);
    10. + npc.setNameColor(Config.CKM_PVP_NPC_NAME_COLOR);
    11. + npc.setPolymorphInfo(winnerPvPKillsInfo);
    12. + npc.broadcastPacket(new SocialAction(npc, 16));'
    13.  ++ npc.setHeading(VALUE)
    14. + }
    15. +
    16. + private void broadcastPKMorphUpdate(L2PcPolymorph npc, CharSelectSlot winnerPKKillsInfo)
    17. + {
    18. + if (winnerPKKillsInfo == null)
    19. + {
    20. + npc.setPolymorphInfo(null);
    21. + return;
    22. + }
    23. + npc.setVisibleTitle(Config.CKM_PK_NPC_TITLE.replaceAll("%kills%", String.valueOf(_winnerPKKillsCount)));
    24. + npc.setTitleColor(Config.CKM_PK_NPC_TITLE_COLOR);
    25. + npc.setNameColor(Config.CKM_PK_NPC_NAME_COLOR);
    26. + npc.setPolymorphInfo(winnerPKKillsInfo);
    27. + npc.broadcastPacket(new SocialAction(npc, 16));
    28.  ++ npc.setHeading(VALUE)
    29. + }
    30. +
     
    1. + public void broadcastMorphUpdate()
    2. + {
    3. + final CharSelectSlot winnerPvPKillsInfo = getWinnerPvPKillsInfo();
    4. + for (L2PcPolymorph npc : pvpMorphListeners)
    5. + {
    6. + broadcastPvPMorphUpdate(npc, winnerPvPKillsInfo);
    7.  npc.setHeading(VALUE)
    8. + }
    9. +
    10. + final CharSelectSlot winnerPKKillsInfo = getWinnerPKKillsInfo();
    11. + for (L2PcPolymorph npc : pkMorphListeners)
    12. + {
    13. + broadcastPKMorphUpdate(npc, winnerPKKillsInfo);
    14.  npc.setHeading(VALUE)
    15. + }
    16. + }
    try this
  2. your condition is in this file: RequestAcquireSkill.java

     

    package net.sf.l2j.gameserver.network.clientpackets;

    import net.sf.l2j.Config;
    import net.sf.l2j.gameserver.datatables.SkillTable;
    import net.sf.l2j.gameserver.datatables.SkillTreeTable;
    import net.sf.l2j.gameserver.datatables.SpellbookTable;
    import net.sf.l2j.gameserver.model.L2PledgeSkillLearn;
    import net.sf.l2j.gameserver.model.L2ShortCut;
    import net.sf.l2j.gameserver.model.L2Skill;
    import net.sf.l2j.gameserver.model.L2SkillLearn;
    import net.sf.l2j.gameserver.model.actor.Npc;
    import net.sf.l2j.gameserver.model.actor.instance.Fisherman;
    import net.sf.l2j.gameserver.model.actor.instance.Folk;
    import net.sf.l2j.gameserver.model.actor.instance.Player;
    import net.sf.l2j.gameserver.model.actor.instance.VillageMaster;
    import net.sf.l2j.gameserver.network.SystemMessageId;
    import net.sf.l2j.gameserver.network.serverpackets.ExStorageMaxCount;
    import net.sf.l2j.gameserver.network.serverpackets.ShortCutRegister;
    import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;

    public class RequestAcquireSkill extends L2GameClientPacket
    {
        private int _skillId;
        private int _skillLevel;
        private int _skillType;
        
        @Override
        protected void readImpl()
        {
            _skillId = readD();
            _skillLevel = readD();
            _skillType = readD();
        }
        
        @Override
        protected void runImpl()
        {
            // Not valid skill data, return.
            if (_skillId <= 0 || _skillLevel <= 0)
                return;
            
            // Incorrect player, return.
            final Player activeChar = getClient().getActiveChar();
            if (activeChar == null)
                return;
            
            // Incorrect npc, return.
            final Npc trainer = activeChar.getCurrentFolkNPC();
            if (trainer == null)
                return;
            
            // Distance check for player <-> npc.
            if (!activeChar.isInsideRadius(trainer, Npc.INTERACTION_DISTANCE, false, false) && !activeChar.isGM())
                return;
            
            // Skill doesn't exist, return.
            final L2Skill skill = SkillTable.getInstance().getInfo(_skillId, _skillLevel);
            if (skill == null)
                return;
            

            // Set learn class.
            activeChar.setSkillLearningClassId(activeChar.getClassId());
            
            boolean exists = false;
            
            // Types.
            switch (_skillType)
            {
                case 0: // General skills.
                    // Player already has such skill with same or higher level.
                    int skillLvl = activeChar.getSkillLevel(_skillId);
                    if (skillLvl >= _skillLevel)
                        return;
                    
                    // Requested skill must be 1 level higher than existing skill.
                    if (Math.max(skillLvl, 0) + 1 != _skillLevel)
                        return;
                    
                    int spCost = 0;
                    
                    // Find skill information.
                    for (L2SkillLearn sl : SkillTreeTable.getInstance().getAvailableSkills(activeChar, activeChar.getSkillLearningClassId()))
                    {
                        // Skill found.
                        if (sl.getId() == _skillId && sl.getLevel() == _skillLevel)
                        {
                            exists = true;
                            spCost = sl.getSpCost();
                            break;
                        }
                    }
                    
                    // No skill found, return.
                    if (!exists)
                        return;
                    
                    // Not enought SP.
                    if (activeChar.getSp() < spCost)
                    {
                        activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_SP_TO_LEARN_SKILL);
                        Folk.showSkillList(activeChar, trainer, activeChar.getSkillLearningClassId());
                        return;
                    }
                    
                    // Get spellbook and try to consume it.
                    int spbId = SpellbookTable.getInstance().getBookForSkill(_skillId, _skillLevel);
                    if (spbId > 0)
                    {
                        if (!activeChar.destroyItemByItemId("SkillLearn", spbId, 1, trainer, true))
                        {
                            activeChar.sendPacket(SystemMessageId.ITEM_MISSING_TO_LEARN_SKILL);
                            Folk.showSkillList(activeChar, trainer, activeChar.getSkillLearningClassId());
                            return;
                        }
                    }
                    
                    // Consume SP.
                    activeChar.removeExpAndSp(0, spCost);
                    
                    // Add skill new skill.
                    activeChar.addSkill(skill, true);
                    activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.LEARNED_SKILL_S1).addSkillName(skill));
                    
                    // Update player and return.
                    updateShortCuts(activeChar);
                    activeChar.sendSkillList();
                    Folk.showSkillList(activeChar, trainer, activeChar.getSkillLearningClassId());
                    break;
                
                case 1: // Common skills.
                    skillLvl = activeChar.getSkillLevel(_skillId);
                    if (skillLvl >= _skillLevel)
                        return;
                    
                    if (Math.max(skillLvl, 0) + 1 != _skillLevel)
                        return;
                    
                    int costId = 0;
                    int costCount = 0;
                    
                    for (L2SkillLearn sl : SkillTreeTable.getInstance().getAvailableFishingDwarvenCraftSkills(activeChar))
                    {
                        if (sl.getId() == _skillId && sl.getLevel() == _skillLevel)
                        {
                            exists = true;
                            costId = sl.getIdCost();
                            costCount = sl.getCostCount();
                            break;
                        }
                    }
                    
                    if (!exists)
                        return;
                    
                    if (!activeChar.destroyItemByItemId("Consume", costId, costCount, trainer, true))
                    {
                        activeChar.sendPacket(SystemMessageId.ITEM_MISSING_TO_LEARN_SKILL);
                        Fisherman.showFishSkillList(activeChar);
                        return;
                    }
                    
                    activeChar.addSkill(skill, true);
                    activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.LEARNED_SKILL_S1).addSkillName(skill));
                    
                    if (_skillId >= 1368 && _skillId <= 1372)
                        activeChar.sendPacket(new ExStorageMaxCount(activeChar));
                    
                    updateShortCuts(activeChar);
                    activeChar.sendSkillList();
                    Fisherman.showFishSkillList(activeChar);
                    break;
                
                case 2: // Pledge skills.
                    if (!activeChar.isClanLeader())
                        return;
                    
                    int itemId = 0;
                    int repCost = 0;
                    
                    for (L2PledgeSkillLearn psl : SkillTreeTable.getInstance().getAvailablePledgeSkills(activeChar))
                    {
                        if (psl.getId() == _skillId && psl.getLevel() == _skillLevel)
                        {
                            exists = true;
                            itemId = psl.getItemId();
                            repCost = psl.getRepCost();
                            break;
                        }
                    }
                    
                    if (!exists)
                        return;
                    
                    if (activeChar.getClan().getReputationScore() < repCost)
                    {
                        activeChar.sendPacket(SystemMessageId.ACQUIRE_SKILL_FAILED_BAD_CLAN_REP_SCORE);
                        VillageMaster.showPledgeSkillList(activeChar);
                        return;
                    }
                    
                    if (Config.LIFE_CRYSTAL_NEEDED)
                    {
                        if (!activeChar.destroyItemByItemId("Consume", itemId, 1, trainer, true))
                        {
                            activeChar.sendPacket(SystemMessageId.ITEM_MISSING_TO_LEARN_SKILL);
                            VillageMaster.showPledgeSkillList(activeChar);
                            return;
                        }
                    }
                    
                    activeChar.getClan().takeReputationScore(repCost);
                    activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_DEDUCTED_FROM_CLAN_REP).addNumber(repCost));
                    
                    activeChar.getClan().addNewSkill(skill);
                    
                    VillageMaster.showPledgeSkillList(activeChar);
                    return;
            }
        }
        
        private void updateShortCuts(Player player)
        {
            if (_skillLevel > 1)
            {
                for (L2ShortCut sc : player.getAllShortCuts())
                {
                    if (sc.getId() == _skillId && sc.getType() == L2ShortCut.TYPE_SKILL)
                    {
                        L2ShortCut newsc = new L2ShortCut(sc.getSlot(), sc.getPage(), L2ShortCut.TYPE_SKILL, _skillId, _skillLevel, 1);
                        player.sendPacket(new ShortCutRegister(newsc));
                        player.registerShortCut(newsc);
                    }
                }
            }
        }
    }

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock