Jump to content

Question

11 answers to this question

Recommended Posts

  • 0
Posted (edited)

Make sure you have Bridged networking installed when installing VBox.

 

Then, select "Bridged adapter":

74f41Xt.png

 

This will make sure VBox is able to attain it's own IP address in the current host machine's subnet (instead of being behind an emulated NAT).

Adjust the IPv4 config of the guest OS as desired (if you have a LAN with a DHCP server, no further config).

 

 

 

EDIT: this method allows both local and remote connections. Default config (NAT) allows connections to services in the VM on localhost, if I recall it right…

Edited by Zeeyo
  • 0
Posted (edited)

I have done this more do not know if are doing it right

very complicated

it is easier to win the lottery I hit the configuration

Anyone can make a small tutorial on how to do offline wheel

Edited by NaelsonMT
  • 0
Posted

Have a look though this:

http://catlingmindswipe.blogspot.com/2012/06/how-to-virtualbox-networking-part-two.html

(Also read part 1!)

 

Also:

In your L2.ini you are telling the client to connect to 127.0.0.1.

This is the loopback address for the OS that's running the client. This isn't going to work.

You are running the L2Server inside a VM. Yes it's on the same physical hardware, but it's a different machine.

 

Like Zeeyo said, you should use a "Bridged" network adapter.

 

This means that the VM / OS that runs the L2Server is BRIDGED to your local network and is connected to it like any other computer or device you have.

 

A good way to test if you have it configured correctly:

On your real computer that runs the client:

Start > Run > Cmd: Type ipconfig and note your IP Address.

It's probably something like 192.168.1.XXX

 

If bridged networking is working for your L2 Server VM and you do the same thing, you should see a similar address when running the ipconfig command.

 

You might need to restart the VM when you make network changes.

 

I don't personally use VirtualBox but between what Zeeyo and i have posted you should be able to get it working.

 

*** Don't forget to disable or allow L2 though Windows Firewall ***

 

 

  • 0
Posted (edited)

It only works if you have on a network?

my notbook I take to places where there is no internet  :okey:

I pulled the cord from the outlet wireless switch off and also serves  

cut connection to client

More anyway already help me a lot to get log just wanted to know if there is way without network cable or wireless

 

thanks tk422   Zeeyo  :D  :D

Edited by NaelsonMT
  • 0
Posted (edited)

Yes. The problem is that you created C4 lin2db tables, even though you are using Prelude (used by clients 336-555) AuthD. If you ACTUALLY use a modded C4 client with injected prelude auth DLL, then you should use the old lin2db tables from Prelude/C1 or their extended versions (C2/C3).

 

If you have a normal C4 client without custom code injection, then you should use the C4 AuthD (60215) with C4 AuthGateD.

 

P.S. I know that you already found a C5 system, PATCHED to use prelude Auth and to ignore GG. IF this system is from the same source, then YES, you must delete lin2db and execute queries from prelude/C1 lin2db SQL script.

Edited by Zeeyo
  • 0
Posted

Value friends

:D  :D

I do not know how I solved more and as you said I did a mixture of C4 files

but I believe the main error was the system protocol downloaded the system Run the l2 killer

jPwqdhS.png

  • 0
Posted (edited)

Make sure you have Bridged networking installed when installing VBox.

 

Then, select "Bridged adapter":

74f41Xt.png

 

This will make sure VBox is able to attain it's own IP address in the current host machine's subnet (instead of being behind an emulated NAT).

Adjust the IPv4 config of the guest OS as desired (if you have a LAN with a DHCP server, no further config).

 

 

 

EDIT: this method allows both local and remote connections. Default config (NAT) allows connections to services in the VM on localhost, if I recall it right…

Hi Zeeyo,

Can you share C4 authgated, I also tried with c4 60215 but could not log in.

I can only login with AuthD 4xxxx

Edited by ginji
  • 0
Posted (edited)

Hi Zeeyo,

Can you share C4 authgated, I also tried with c4 60215 but could not log in.

I can only login with AuthD 4xxxx

Well, from what I have seen (on C5), those AuthDs for C3, C4, C5, C6 require that you inject prelude auth code to client (either directly to L2.exe or Engine.dll, or just add an import to L2.exe and do that in DllMain, e.g. C5ex.dll). So if you use 40504 successfully on C3 557+, or any later chronicle, that means that you have a customized client system folder (in other words, it does not use the auth method it was using back in the day).

 

The sad thing about C4 AuthGateD is that it's simply useless today.

C4 and C5 clients have hardcoded checks for GG process all over their network code. If GG is not running, the client will not build any packets (and will not send any).

And the best part is, both C4 and C5 noGGs out in the public only disable modal GG dialogs in nwindow.dll. They do not remove the hardcoded checks. Which is most likely why you are using a custom system with prelude auth injected.

 

Now you might ask, why the hell can't we simply run a completely clean client on a legacy OS, for example Win XP x86, with a GG download server emulator to download old (C4/C5 dated) GG files (idk if anyone even has them).

The answer is that C4/C5 GG (Lineage2US.ini & other IDfiable content) is blacklisted @ nProtect. If you have no internet, you will always get a GG error, that's how it always was. But if you have internet, you will still get an error, as the game itself is blacklisted.

 

So unless someone has time and is willing to spend their effort on cleaning up GG from C4/C5 clients (or has already done so, and could share), all you will see is that with a clean client C4 AuthGateD sends a single packet and client does not respond. (e.g. it "doesn't" work). Not that the 40504/C4 works with a clean client either.

Edited by Zeeyo
  • 0
Posted

Well, from what I have seen (on C5), those AuthDs for C3, C4, C5, C6 require that you inject prelude auth code to client (either directly to L2.exe or Engine.dll, or just add an import to L2.exe and do that in DllMain, e.g. C5ex.dll). So if you use 40504 successfully on C3 557+, or any later chronicle, that means that you have a customized client system folder (in other words, it does not use the auth method it was using back in the day).

 

The sad thing about C4 AuthGateD is that it's simply useless today.

C4 and C5 clients have hardcoded checks for GG process all over their network code. If GG is not running, the client will not build any packets (and will not send any).

And the best part is, both C4 and C5 noGGs out in the public only disable modal GG dialogs in nwindow.dll. They do not remove the hardcoded checks. Which is most likely why you are using a custom system with prelude auth injected.

 

Now you might ask, why the hell can't we simply run a completely clean client on a legacy OS, for example Win XP x86, with a GG download server emulator to download old (C4/C5 dated) GG files (idk if anyone even has them).

The answer is that C4/C5 GG (Lineage2US.ini & other IDfiable content) is blacklisted @ nProtect. If you have no internet, you will always get a GG error, that's how it always was. But if you have internet, you will still get an error, as the game itself is blacklisted.

 

So unless someone has time and is willing to spend their effort on cleaning up GG from C4/C5 clients (or has already done so, and could share), all you will see is that with a clean client C4 AuthGateD sends a single packet and client does not respond. (e.g. it "doesn't" work). Not that the 40504/C4 works with a clean client either.

Thanks, very clear!

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
    • Siege Reward Start PM Msg Rework Config root BossDieAnnounce and BossDieSound in the L24Team.properties and Config.java files for global raid boss death notifications and sounds. Adds a new reward_list table to the DB.sql file to track castle rewards. Improves character creation logic for thread safety and validation. Adds extensive state checks to the RequestEnchantItem method to prevent enchantments during inappropriate player states. Fixed auto-attack animation bug (there was no attack animation, only damage animation) Clean Code Other fixes I forgot to list! Java 14 Fixed issue where deleting a character would prevent it from leaving the screen or being removed, or even after a delete CD (it would only exit when re-logging in or creating a new character). Added Premium System from the other C2 project (Needs testing and improvement). Added the "Improved" Community Board (incomplete).
  • 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