Jump to content
  • 0

[Need] L2 OFF Devs!


Question

Posted

Hello, i was thinking about gathering some L2 OFF Devs that knows a little at least about L2 OFF Server side, also Client modders.

They don't need be professionals but some basics.

 

 

 

About me:

 

I'm working with L2 OFF for about 3 years and i'm really good in everything Server side/client side , still i have much to learn, but i'm alright. I look now at Lineage 2.. and see everything is starting to go really wrong! All are opening random servers, closing them... its just a big waste of time to play on them.

So if you want to team up, and get a big team together we could make something really nice together i'm sure about that!

 

So i'm inviting you to join a new project that we will decide together after gathering about 5 persons that are trustable.

 

PS: I will provide the FILES, and the BOX.

 

We need:

- A really good Client Modder

- A really good Web coder that knows alot about php, db connections, mssql stuff like that.

- A Server modder

- A good designer in Photoshop

- Forum modder

 

If you want to join just leave me a pm, or add me - qq-gaming@hotmail.com.

 

Remember we are a team! Best of luck, hope i see any actions.

 

~ We all want that old gameplay back, cheers!

 

................................................................

 

I will make a forum soon  - www.qq-gaming.net

5 answers to this question

Recommended Posts

  • 0
Posted

I was going to make quite a mean post regarding your 3 years experience with l2off, but instead I just have a question or 2... what can you actually do?

 

You say you are really good in everything server side... what does that entail?

 

Can you make extenders?

Can you write AI, and debug that AI in it's compiled form, not NASC?

Can you interpret LinError.txt properly and understand what is causing crashes?

Can you read logs correctly and determine how, for example, someone has used an exploit or come across a bug?

 

and finally, if you find yourself in need of a tool or application that doesn't exist for a certain task, what do you do?

A. Tell your player's it can't be done.

B. Pay someone to make it for you

C. Make it yourself

 

 

I understand that your topic is to recruit developers, which in itself shows that you are lacking in certain areas, but I am just trying to understand the level at which you are, given that you have been working with l2off for 3 years, and are "really good in everything Server side".

  • 0
Posted

Well, i can do alot of shit, not coding extenders, but the rest of it for sure. And ofc not paying someone to do it for me , anyways.. you don't need much knowledge in scripting you need alot of time to spend on it hours and hours, and alot of ppl dont have that time! so anyways, i'm interested in newbies that are knowing the basics, that wanna spend time on this shit, learning can be developed in time.  Peace out

  • 0
Posted

Well, i can do alot of shit, not coding extenders, but the rest of it for sure. And ofc not paying someone to do it for me , anyways.. you don't need much knowledge in scripting you need alot of time to spend on it hours and hours, and alot of ppl dont have that time! so anyways, i'm interested in newbies that are knowing the basics, that wanna spend time on this shit, learning can be developed in time.  Peace out

"but the rest of it for sure" so you can code AI and debug it in its compiled form?

If the answer to that is no, I'm afraid to break it to you, you can't do a lot of shit.

Scripts = changing numbers in text files, it aint rocket science...

Most people think you never need to know AI in it's compiled form as there are NASC-like compilers readily available, but go look in help sections of any l2off dev forum and you will find a large amount topics where the compilers have failed because of simple syntactical errors and end up compiling blank values to push_const instructions, not to mention none of the compilers support the full shared data structure as they should, and only support values which have already been used in the AI that came with the pack, which also means they can't support the relocated variables of dvampire.

 

It's not my intention (at least not directly) to belittle you for having less knowledge than me in this area, but it annoys the absolute shit out of me when "developers" claim they can do "pretty much everything" when in fact they can only change numbers in text files, when people do that it devalues the title of "developer" so much that people who actually spent years analysing and learning are grouped together with children who have no knowledge at all.

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
    • ZonePvPSpawnBossRadio=0 ZonePvPSpawnBossBarakiel=0 at the Customs.ini in L2Server folder. Im prety sure this is it because i had the same problem with you in cruma 1 floor for example and i couldn't fix it but i fixed it finally by changing these 2 lines
  • 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