Jump to content

AccessDenied

Banned
  • Posts

    2,105
  • Credits

  • Joined

  • Last visited

  • Days Won

    8
  • Feedback

    100%

Posts posted by AccessDenied

  1. Hello again -.- sorry i bother you all the time i am used to develop Aion no L2j (im learning)

    so i dig into lineage 2 and so far i understood pretty much many things by reading the source at the same time

    btw i work on Freya

     

    So i want make a custom Summon-pet  like Wolf collar

     

    things i did

     

    1) Made a L2Pet  in custom_npc (done)

    2) Make a custom item in Customitems.xml  that is using SummonHandler  (bypass) (done)

    3) Made the skill for the item (1 level) (done)

    4) Wrote the  itemId, summonId, duration into the summon_data.scv file

    5) Insert the item - skill  into system (etcitem.grp, itemname,grp)

     

    Inside game i click on item and nothing happen BUT when i use normal wolf 

    and i click on my item it says "You already have a pet" which mean it works (it use the handler)

     

    Anything i miss?

     

    Ps the SummonHandler i read it all (this is how i knew what to do) 

    like these lines

     

    final int npcId = sitem.getNpcId();
    if (npcId == 0)
    return;
     
    final L2NpcTemplate npcTemplate = NpcTable.getInstance().getTemplate(npcId);
    if (npcTemplate == null)
    return;
    but i dont know what else i miss :O
  2. What pet are you testing? With strider its working fine. Also, which is your 738 line?

    Im testing with wolf (the little one)

    Wolf collar 

    also my 738 line in L2Character is

    if (EventEngine.areTogether(getObjectId(), getTarget().getObjectId()))
    sendPacket(ActionFailed.STATIC_PACKET);
     
    which is a check for an event engine but i dont get why since event engine is off or they dont participate..
  3. hasAi() check too, even if there is no reason you don't have AI anymore. And as I said, you miss all checks so don't expect it works fine for particular cases.

    I know i miss many checks but i just want to test first.. i really dont get why this error 

     

    java.lang.NullPointerException
            at com.l2jserver.gameserver.model.actor.L2Character.doAttack(L2Character
    .java:738)
            at com.l2jserver.gameserver.model.actor.L2Character$AIAccessor.doAttack(
    L2Character.java:3747)
            at com.l2jserver.gameserver.ai.L2SummonAI.thinkAttack(L2SummonAI.java:93
    )
            at com.l2jserver.gameserver.ai.L2SummonAI.onEvtThink(L2SummonAI.java:144
    )
            at com.l2jserver.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.
    java:706)
            at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:45
    9)
            at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:34
    6)
            at com.l2jserver.gameserver.GameTimeController$MovingObjectArrived.run(G
    ameTimeController.java:209)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
  4.  

    I'm taking your sister, period.

        @Override
        public void doAttack(L2Character target)
        {
            final L2Summon pet = getPet();
            
            if (pet != null)
                pet.getAI().setIntention(CtrlIntention.ATTACK, target);
            
            super.doAttack(target);
            clearRecentFakeDeath();
        }
    

    Yeap this is what i wrote in the first place and it give error 

     

    java.lang.NullPointerException
            at com.l2jserver.gameserver.model.actor.L2Character.doAttack(L2Character
    .java:738)
            at com.l2jserver.gameserver.model.actor.L2Character$AIAccessor.doAttack(
    L2Character.java:3747)
            at com.l2jserver.gameserver.ai.L2SummonAI.thinkAttack(L2SummonAI.java:93
    )
            at com.l2jserver.gameserver.ai.L2SummonAI.onEvtThink(L2SummonAI.java:144
    )
            at com.l2jserver.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.
    java:706)
            at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:45
    9)
            at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:34
    6)
            at com.l2jserver.gameserver.GameTimeController$MovingObjectArrived.run(G
    ameTimeController.java:209)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
  5. Not only checks, read better. If it was only checks, then the attack button from summon panel couldn't work. That entire code is the button from client. As you can see, your 2 lines will probably work, but wouldn't handle all regular conditions. The case 22 is the whole pet attack behavior, no matter the summon (siege summons and sin eaters included).

     

    If you read more deeply, you can see

    pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);

    About the lollipop, I will consider the offer depending the original taste, if you or your sister already used it, if your sister is cute and is willing to go out with me if she is aged 20+, or if you rolled it in a dog poo. The lollipop, not the sister.

    Alright yes i saw that line afcourse 

     

    i saw this 

     

    if (pet.isAttackingDisabled())

                            if (pet.getAttackEndTime() > GameTimeController.getGameTicks())

                                pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);

                            else

                                return;

     

     

    but this must go right into L2PcInstance.java       into the @override doAttack 

    so it will happen when you attack another player and also make a 

    final L2Summon pet = this.getPet();

     

    but still i get an error.. i dont really understand both are really helpful (You and SweetS) but you keep showing me

    where i can get the line from which is not what im asking i know the line i dont need even copy it..

     whats problem is that when attack it give the error that i show you.

     

    And now that i added this line 

    16kri2p.png

    now it doesnt even attack at all .. and no pet is not null or the target is not null either..

     

    really thank you both and sorry if i waste your time ..

     

    Ps. she is hot and she is 22, i can tell her to lick it slowly and ill deliver it to you :3

     

    (Error below)

    java.lang.NullPointerException
            at com.l2jserver.gameserver.model.actor.L2Character.doAttack(L2Character
    .java:738)
            at com.l2jserver.gameserver.model.actor.L2Character$AIAccessor.doAttack(
    L2Character.java:3747)
            at com.l2jserver.gameserver.ai.L2SummonAI.thinkAttack(L2SummonAI.java:93
    )
            at com.l2jserver.gameserver.ai.L2SummonAI.onEvtThink(L2SummonAI.java:144
    )
            at com.l2jserver.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.
    java:706)
            at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:45
    9)
            at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:34
    6)
            at com.l2jserver.gameserver.GameTimeController$MovingObjectArrived.run(G
    ameTimeController.java:209)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
  6. Nooo, RequestActonUse.java file case 16 and 22. Check the file, you will figure it out.

    Yes thank you sir for answer i did check afcourse the case 22 cause the 16 is empty

    so in the case 22 it just has some check such as

    case 22: // Attack (pet attack)
    				
    				if (target != null && pet != null && pet != target && activeChar != target && !pet.isBetrayed())
    				{
    					if (pet.isAttackingDisabled())
    						if (pet.getAttackEndTime() > GameTimeController.getGameTicks())
    							pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
    						else
    							return;
    					
    					if (pet instanceof L2PetInstance && pet.getLevel() - activeChar.getLevel() > 20)
    					{
    						activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.PET_TOO_HIGH_TO_CONTROL));
    						return;
    					}
    					
    					if (activeChar.isInOlympiadMode() && !activeChar.isOlympiadStart())
    					{
    						// if L2PcInstance is in Olympia and the match isn't already start, send a Server->Client packet ActionFailed
    						activeChar.sendPacket(ActionFailed.STATIC_PACKET);
    						return;
    					}
    					
    					if (target.getActingPlayer() != null && pet.getOwner().getSiegeState() > 0 && pet.getOwner().isInsideZone(L2Character.ZONE_SIEGE) && target.getActingPlayer().getSiegeState() == pet.getOwner().getSiegeState() && target.getActingPlayer() != pet.getOwner() && target.getActingPlayer().getSiegeSide() == pet.getOwner().getSiegeSide())
    					{
    						//
    						if (TerritoryWarManager.getInstance().isTWInProgress())
    							sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_CANNOT_ATTACK_A_MEMBER_OF_THE_SAME_TERRITORY));
    						else
    							sendPacket(SystemMessage.getSystemMessage(SystemMessageId.FORCED_ATTACK_IS_IMPOSSIBLE_AGAINST_SIEGE_SIDE_TEMPORARY_ALLIED_MEMBERS));
    						sendPacket(ActionFailed.STATIC_PACKET);
    						return;
    					}
    					
    					if (!activeChar.getAccessLevel().allowPeaceAttack() && activeChar.isInsidePeaceZone(pet, target))
    					{
    						activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.TARGET_IN_PEACEZONE));
    						return;
    					}
    					if (pet.getNpcId() == 12564 || pet.getNpcId() == 12621)
    					{
    						// sin eater and wyvern can't attack with attack button
    						activeChar.sendPacket(ActionFailed.STATIC_PACKET);
    						return;
    					}
    					
    					if (pet.isLockedTarget())
    					{
    						pet.getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.FAILED_CHANGE_TARGET));
    						return;
    					}
    					
    					pet.setTarget(target);
    					if (target.isAutoAttackable(activeChar) || _ctrlPressed)
    					{
    						if (target instanceof L2DoorInstance)
    						{
    							if (((L2DoorInstance) target).isAttackable(activeChar) && pet.getNpcId() != L2SiegeSummonInstance.SWOOP_CANNON_ID)
    								pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
    						}
    						// siege golem AI doesn't support attacking other than doors at the moment
    						else if (pet.getNpcId() != L2SiegeSummonInstance.SIEGE_GOLEM_ID)
    							pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
    					}
    					else
    					{
    						pet.setFollowStatus(false);
    						pet.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, target);
    					}
    				}
    				break;
    

    those are just check.. exept the first part right?

  7. So you mean something like this

     

    L2PcInstance.java 

     

    @Override
    public void doAttack(final L2Character target)
    {
     
    final L2Summon pet = getPet();
     
    if (target != null && pet != null)
    {
    if (pet.isAttackingDisabled())
    {
    if (pet.getAttackEndTime() > GameTimeController.getGameTicks())
    pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
    }
    else
    {
    return;
    }
    }
  8. I hardly can do better version than previous version. I gave names of classes, what to copy and where to copy. I can also use Paint and draw it with arrows and print screens because I'm gifted, but you will probably sell my valuable art.

    awwww you so cute <3 well i know you're gifted no need to tell me and yes i would sell your valuable art to my sister for 1 lolipop.

    She is willing to buy it tho.. well let me try again.. 

    Thanks by the way 

  9. Put RequestActionUse cases 16/22 (pet attack action) after existing content of L2PcInstance.doAttack( - filters the useless checks if necessary.

    case 16:

    case 22: // Attack (pet attack)

     

    maybe i should write the code in there?

     

    like

     

    if (target != null && pet != null && pet != target && activeChar != target && !pet.isBetrayed())
    {
    activeChar.getPet().getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
    }
  10. if (pet != null)
    	pet.getAi().getIntention(CTRL.INTENTION.DOAttack. target);
    

    Yes this i wrote it manually here no copy paste thats why the mistakes thats exactly what i wrote in eclipse before i erase it

    but when i try hit with my char the other char the wolf walking next ot me and suddedly stop and the gameserver spammed with errors about AI

     

    Ps. thats my code

     

    if (pet != null)
    if (target instanceof L2Character)
    pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
  11. Hello recently i played star wars old republic and i got inspired an idea of the pet / summon

    that it auto-attack the target that you attack.

     

    Tried to do a code in L2Character (btw use F & High5)

    like

    final L2Summon pet = this.getPet();

     

    doAttack(L2Character target)

    {

     

    if (!(pet == null))

    {

      pet.getAi().getIntention(CTRL.INTENTION.DOAttack. target)

    }

     

     

    something like this but it give error 

    any way on how to control attack of our summon / pet to attack the enemy even if is L2MonsterInstance or L2PcInstance object?

    Thanks a lot

     

     

    Ps. i'm not starter in java so speak freely, any answer i would appreciate it i just stuck.

     

    2h8dedl.png

×
×
  • Create New...