Make a zone required party with minimum members for lucera.
package zones;
import java.util.Collection;
import java.util.Iterator;
import l2.gameserver.instancemanager.ReflectionManager;
import l2.gameserver.listener.zone.OnZoneEnterLeaveListener;
import l2.gameserver.model.Creature;
import l2.gameserver.model.Party;
import l2.gameserver.model.Player;
import l2.gameserver.model.Zone;
import l2.gameserver.network.l2.components.CustomMessage;
import l2.gameserver.network.l2.s2c.ExShowScreenMessage;
import l2.gameserver.scripts.ScriptFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PartyZone implements OnZoneEnterLeaveListener, ScriptFile {
private static final Logger bEb = LoggerFactory.getLogger(PartyZone.class);
private static final PartyZone bHe = new PartyZone();
private static final String bHf = "PartyZone";
private Object PartyInfo;
public PartyZone() {
}
public void onLoad() {
byte var1 = 0;
Collection var2 = ReflectionManager.DEFAULT.getZones();
Iterator var3 = var2.iterator();
while(var3.hasNext()) {
Zone var4 = (Zone)var3.next();
if (var4.getParams().getBool("PartyZone", false)) {
var4.addListener(bHe);
}
}
if (var1 > 0) {
bEb.info("PartyZone: added {} party zone(s).", Integer.valueOf(var1));
}
}
public void onReload() {
this.onShutdown();
this.onLoad();
}
public void onShutdown() {
Collection var1 = ReflectionManager.DEFAULT.getZones();
Iterator var2 = var1.iterator();
while(var2.hasNext()) {
Zone var3 = (Zone)var2.next();
if (var3.getParams().getBool("PartyZone", false)) {
var3.removeListener(bHe);
}
}
}
public void onZoneEnter(Zone var1, Creature var2) {
if (var2.isPlayer()) {
Player var3 = var2.getPlayer();
Party var4 = var3.getParty();
if (var4 == null) {
String var10 = (new CustomMessage("zone.services.PartyZone", var3, new Object[0])).toString();
var3.sendPacket(new ExShowScreenMessage(var10, 10000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, false));
var3.teleToClosestTown();
}
if (var3.getParty().getMemberCount() <= 4) {
String var10 = (new CustomMessage("zone.services.PartyZone", var3, new Object[0])).toString();
var3.sendPacket(new ExShowScreenMessage(var10, 10000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, false));
var3.teleToClosestTown();
}
}
}
public void onZoneLeave(Zone var1, Creature var2) {
}
}
Next you have to add this parameter in zone: <set name="PartyZone" val="true" />
For example:
<zone name="[primeval_peace1]" type="fun" >
<coords loc="10408 -27395 -4290 -1290" />
<coords loc="12065 -25334 -4290 -1290" />
<coords loc="12223 -23159 -4290 -1290" />
<coords loc="10424 -22340 -4290 -1290" />
<coords loc="9566 -23131 -4290 -1290" />
<coords loc="9290 -24261 -4290 -1290" />
</polygon>
</zone>
Make it like this:
<zone name="[primeval_peace1]" type="fun" >
<set name="PartyZone" val="true" />
<coords loc="10408 -27395 -4290 -1290" />
<coords loc="12065 -25334 -4290 -1290" />
<coords loc="12223 -23159 -4290 -1290" />
<coords loc="10424 -22340 -4290 -1290" />
<coords loc="9566 -23131 -4290 -1290" />
<coords loc="9290 -24261 -4290 -1290" />
</polygon>
</zone>
Then go to en string gameserver\data\string and add this line:
zone.services.PartyZone=You Are Not Currently In A Party With Minimum 5 Party Members So You Cannot Enter.
And this line to ru string gameserver\data\string:
zone.services.PartyZone=Вы не находитесь в партии с минимум 5 членами партии Так что вы не можете войти.
If you want to change the value of minimum players then you have to change the number 4 in this line in ext:
if (var3.getParty().getMemberCount() <= 4) {
DOWNLOAD EXT
This is a simple code i make it for my needs you can remake it as you want don't spam this topic.