Jump to content
  • 0

Question

Posted

Hello all..i have created a party zone for 5+ players...and i set a check if a player leaves pt or die and pressed go to village and the party goes <5 then all going back to spawn.

but when a player leaves party he isn't teleported back to Town.. party also stay inside party zone with less than 5 players..  only if the player restart will be teleported back to town.any suggestions>?

https://pastebin.com/THVrji14 

13 answers to this question

Recommended Posts

  • 0
Posted

Check the L2Party or something like this the methods where player leaving from party or party disband. And add there check for zone and teleport out from zone.

  • 0
Posted
15 hours ago, Rootware said:

Check the L2Party or something like this the methods where player leaving from party or party disband. And add there check for zone and teleport out from zone.

        {
        }
    if (player.isInsideZone(ZoneId.PVP))
    {
        if (getMemberCount() < 5)
        {
            getPartyMembers().forEach(s -> s.teleToLocation(MapRegionTable.TeleportWhereType.Town));
        }
    }
    }

 

i added this one under this part of code on L2Party.java

 

    /**
     * Remove player from party Overloaded method that takes player's name as parameter
     * @param name
     */
    public void removePartyMember(final String name)
    {
        final L2PcInstance player = getPlayerByName(name);
        
        if (player != null)
            removePartyMember(player);

 

but i am getting an error on (ZoneId.PVP)

 

 

  • 0
Posted

Most likely bcs you remove player from party and then loop party, which doesn't exists anymore for that player.

 

Move it above, first do check for members count and teleport them ALL and then remove player from party.

 

Also, this is funny

 

  1. public boolean isInsidePartyZone()
  2. {
  3. return isInsidePartyZone();
  4. }
  • 0
Posted
On 10/16/2020 at 1:07 AM, SweeTs said:

Most likely bcs you remove player from party and then loop party, which doesn't exists anymore for that player.

 

Move it above, first do check for members count and teleport them ALL and then remove player from party.

 

Also, this is funny

 

  1. public boolean isInsidePartyZone()
  2. {
  3. return isInsidePartyZone();
  4. }

i manage to do it work for the player whos leaving the Party Inside party zone. but the rest party stays inside even if they are <5 ..here is the code i added on L2Party.java

    /**
     * Remove player from party
     * @param player
     */
    public void removePartyMember(final L2PcInstance player)
    {
        removePartyMember(player, true);
        {
            if (!player.isInsideZone(L2Character.ZONE_PARTYZONE))
            {
                if (player.getPartyMembers() < 5)
            {                
                    player.sendMessage("You can't stay inside party zone without party!");
                    {
                        player.teleToLocation(MapRegionTable.TeleportWhereType.Town);
                        return;
                }
                    }
    }
        }
    }

  • 0
Posted
1 hour ago, Rootware said:

You need use 2 checks:

1. For leaving player.

2. For patry after player kick.

Hello Rootware...you mean something like that under the code i placed?
    /**
     * Remove Party From PartyZone
     * @param Party
     */
    
    public void removeParty(final L2PcInstance Party)
    {
        removePartyMember(Party, true);
        {
            if (!Party.isInsideZone(L2Character.ZONE_PARTYZONE))
            {
             if (Party.getPartyMembers() < 5)
            {                
                    Party.sendMessage("You can't stay inside party zone with less than 5 players party!");
                    {
                        getPartyMembers.teleToLocation(MapRegionTable.TeleportWhereType.Town);
                        return;
                }
            }
            }
        }
    }
 

  • 0
Posted

No. Inside L2PartyZone you need manages only 2 events: enter or exit from zone. All other cases with Party you need manage inside L2Party.java class with checking all actions for location in this zone.

  • 0
Posted
2 hours ago, Rootware said:

No. Inside L2PartyZone you need manages only 2 events: enter or exit from zone. All other cases with Party you need manage inside L2Party.java class with checking all actions for location in this zone.

even this one is not working.. 

 

 

    public void removePartyMember(final L2PcInstance player)
    {
        removePartyMember(player, true);
        {
            if (player.isInsideZone(L2Character.ZONE_PARTYZONE) && (player.isInParty() && player.getPartyMembers() < 5 ))
            {            
                    player.sendMessage("You can't stay inside party zone without party!");
                    {
                        getPartyMembers().forEach(s -> s.teleToLocation(MapRegionTable.TeleportWhereType.Town));
                        return;
                }
            }
            }
        }

  • 0
Posted (edited)

When you do Party#removePartyMember, it does what it says ; therefore all additional checks about Player's Party will return false, since he is ALREADY OUT OF THE PARTY. Interrogating Player#getParty() will therefore return ALWAYS NULL, which is PERFECTLY LOGICAL.

 

If you want to code such thing, you have to either :

  • In case of a second method using Party#removePartyMember (what you currently do) RETAIN the Party of the Player into a variable, and reuse it just after Party#removePartyMember if != null (Party can be disband by default in removePartyMember)
  • In case of Party#removePartyMember method edit : write directly in the method whatever check (there are already such checks for Duel and Dimensional Rift, DuelManager/DimensionalRiftManager#onPartyEdit - in L2J, EVERYTHING ALREADY EXISTS).

The good approach is the SECOND approach, since some vars are already validated inside the method (notably, player != null and Party#contains)

Edited by Tryskell
  • 0
Posted
On 10/18/2020 at 11:49 AM, MoNsT3ReN4RgY said:

i manage to do it work for the player whos leaving the Party Inside party zone. but the rest party stays inside even if they are <5

I already told you what to do. Not my fault you don't listen.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • 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