Jump to content

Recommended Posts

Posted

Quote from Michele's Post on L2Jserver.com

 

Rather than continue to resurect the GM Tools thread, I saw the note to make a new one, and did so.

I have been working on a little PHP tool for a couple of months now which might be of use to some people. Primarily aimed at Linux servers, the majority of it should work on Windows servers with the exception of the chat "watch" functions (they require Linux commands to tail and grep the output) Windows users have to make do with the whole file when they watch it.

A few people in the datapack side have been using it for a little while and seem to like it.

The PHP source and the SQL commands are here and are freely available - http://msknight.com/index.php?page=196 - and there is a feature list in there as well. Watch out on the SQL commands, as the first table needs to go with the logon servers tables, so if you're running one logon server for multiple game servers, change the USE statements apropriately before running the SQL. Also, if you're running multiple gameservers from one logon server, make sure you take a look at the account safe variable ... but that is all in the documentation.

The program also contains documentation which discusses some installation issues and gets GM's familiar with the system. It also has a newbie guide and a quick FAQ readily built in for guests. There is a live copy of the documentation here - http://195.7.255.202/documentation/index.htm for those who want to have a nose at what it can do both for the GM's, the admins and the everyday users.

There is already a map for C5 included, but I've got to wait for the datapack to catch up with the changes before I can work on getting the icons to match with C5.

People familiar with PHP, HTML and CSS are able to change the skin.

Hope it helps.

Michelle.

 

 

 

For ALL :

 

More Info : http://msknight.com/index.php?page=196

Source (Download with Eclipse) : http://l2jdropcalc.svn.sourceforge.net/svnroot/l2jdropcalc/

GUIDE about HOW TO CONFIGURE IT ! : http://195.7.255.202/documentation/index.htm

 

I can Say only : IS THE BEST TOOL I EVER SEEN !

 

you can Just use it AS a Entire Website for your Server cuz It have ALL !

 

Account manager ? Yes!

Top PvP/PK , Castles , ClanHalls , etc etc !

Also, ALL is configurable (Siege date + Hour too) from the Admin Pannel, You can Change EVERYTHING from that Pannel (face, sex , name of any char in game, also all functions like kick, jail , ban , give items , give skills, change class, and MUCH MORE !)

 

Give a TRY ! ;D

 

p.s. I suggest to download it from the source (with eclipse) cuz the version proposed at the site is KINDA old ;D

 

Have FUN !

 

Yours, A-Style !

 

REGISTER AND TEST IT : http://l2underworld.no-ip.org

Posted

Nice but isnt this the same as this .. ? http://www.maxcheaters.com/forum/index.php?topic=21903.0

 

if not i apologise :)

 

It Is, But you dont Give the Source Repository, and you Just Copy/Pasted it from L2Jserver.com (tell me If Im Wrong).

 

Also, I have tried it Personally, and Im Gonna Use it for my future server.

Posted

 

Hope it helps.

 

Michelle.

 

Source : L2JServer.com

 

isnt this the source...??

 

anyway ... nice share ...

Posted

read better My topic, then Reply.

 

I have posted the SOURCE REPOSITORY OF THE DROPCALCULATOR => http://l2jdropcalc.svn.sourceforge.net/svnroot/l2jdropcalc/

 

You have posted the source where you copy/pasted it, Is KINDA different !

Posted

very nice pack

 

Pack ?

 

Its a GM/ADMIN tool !

 

User banned for 2 days for spamming.

  • 2 weeks later...

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


  • Posts

    • what pack you use  send me on discord for it
    • package custom.events.RandomZoneEvent; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.ScheduledFuture; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.time.TimeUtil; import org.l2jmobius.commons.util.IXmlReader; import org.l2jmobius.gameserver.managers.ZoneManager; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.quest.Event; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.model.zone.type.RandomZone; import org.l2jmobius.gameserver.util.Broadcast; /** * Random Zone Event - Activates one random PvP zone temporarily. No modifica la clase de la zona: usa flags PvP en runtime. * @author Juan */ public class RandomZoneEvent extends Event { private static final String CONFIG_FILE = "data/scripts/custom/events/RandomZoneEvent/config.xml"; private static int EVENT_DURATION_MINUTES = 15; private static boolean _isActive = false; private ScheduledFuture<?> _eventTask = null; private final List<ZoneType> _availableZones = new ArrayList<>(); private ZoneType _activeZone = null; public RandomZoneEvent() { loadConfig(); loadZones(); registerZoneListeners(); } /** * Registra listeners a TODAS LAS ZONAS random */ private void registerZoneListeners() { for (ZoneType zone : _availableZones) { addEnterZoneId(zone.getId()); addExitZoneId(zone.getId()); LOGGER.info("[RandomZoneEvent] Registered listener for zone: " + zone.getName()); } } private void loadConfig() { new IXmlReader() { @Override public void load() { parseDatapackFile(CONFIG_FILE); } @Override public void parseDocument(Document doc, File file) { forEach(doc, "event", eventNode -> { final StatSet att = new StatSet(parseAttributes(eventNode)); final String name = att.getString("name"); for (Node node = eventNode.getFirstChild(); node != null; node = node.getNextSibling()) { if ("schedule".equals(node.getNodeName())) { final StatSet attributes = new StatSet(parseAttributes(node)); final String pattern = attributes.getString("pattern"); final SchedulingPattern schedulingPattern = new SchedulingPattern(pattern); final StatSet params = new StatSet(); params.set("Name", name); params.set("SchedulingPattern", pattern); final long delay = schedulingPattern.getDelayToNextFromNow(); getTimers().addTimer("Schedule_" + name, params, delay + 5000, null, null); LOGGER.info("[RandomZoneEvent] Event " + name + " scheduled at " + TimeUtil.getDateTimeString(System.currentTimeMillis() + delay)); } } }); } }.load(); } private void loadZones() { for (ZoneType zone : ZoneManager.getInstance().getAllZones(RandomZone.class)) { if ((zone.getName() != null) && zone.getName().toLowerCase().startsWith("random_zone")) { _availableZones.add(zone); LOGGER.info("[RandomZoneEvent] Loaded zone: " + zone.getName() + " (id=" + zone.getId() + ")"); } } LOGGER.info("[RandomZoneEvent] Total random zones loaded: " + _availableZones.size()); } @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { if (event.startsWith("Schedule_")) { eventStart(null); final SchedulingPattern schedulingPattern = new SchedulingPattern(params.getString("SchedulingPattern")); final long delay = schedulingPattern.getDelayToNextFromNow(); getTimers().addTimer(event, params, delay + 5000, null, null); LOGGER.info("[RandomZoneEvent] Rescheduled for " + TimeUtil.getDateTimeString(System.currentTimeMillis() + delay)); } } @Override public boolean eventStart(Player eventMaker) { if (_isActive) { if (eventMaker != null) { eventMaker.sendMessage("RandomZoneEvent already active."); } return false; } if (_availableZones.isEmpty()) { Broadcast.toAllOnlinePlayers("[RandomZoneEvent] No zones configured."); return false; } _isActive = true; Broadcast.toAllOnlinePlayers("⚔️ Random Zone Event has started!"); _eventTask = ThreadPool.schedule(this::activateRandomZone, 5_000); return true; } private void activateRandomZone() { _activeZone = _availableZones.get(new Random().nextInt(_availableZones.size())); _activeZone.setEnabled(true); Broadcast.toAllOnlinePlayers("🔥 Random Zone Event: " + _activeZone.getName() + " is now PvP for " + EVENT_DURATION_MINUTES + " minutes!"); _eventTask = ThreadPool.schedule(this::eventStop, EVENT_DURATION_MINUTES * 60 * 1000L); } @Override public boolean eventStop() { if (!_isActive) { return false; } _isActive = false; if (_eventTask != null) { _eventTask.cancel(true); _eventTask = null; } if (_activeZone != null) { _activeZone.setEnabled(false); Broadcast.toAllOnlinePlayers("🏁 Random Zone Event ended. " + _activeZone.getName() + " is back to normal."); _activeZone = null; } else { Broadcast.toAllOnlinePlayers("🏁 Random Zone Event ended."); } return true; } @Override public void onEnterZone(Creature creature, ZoneType zone) { if (!_isActive || (_activeZone == null)) { return; } if ((zone == _activeZone) && creature.isPlayable()) { creature.setInsideZone(ZoneId.PVP, true); if (creature.isPlayer()) { creature.sendMessage("Esta zona está en modo PvP temporalmente."); } } } @Override public void onExitZone(Creature creature, ZoneType zone) { if (!_isActive || (_activeZone == null)) { return; } if ((zone == _activeZone) && creature.isPlayable()) { creature.setInsideZone(ZoneId.PVP, false); if (creature.isPlayer()) { creature.sendMessage("Abandonaste la zona PvP temporal."); } } } @Override public boolean eventBypass(Player player, String bypass) { return true; } @Override public String onEvent(String event, Npc npc, Player player) { return super.onEvent(event, npc, player); } @Override public String onFirstTalk(Npc npc, Player player) { return null; } public static void main(String[] args) { new RandomZoneEvent(); } } i have this but its not working
  • Topics

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