Jump to content

Recommended Posts

Posted (edited)

L2Server extend part

IlExt.dll

invoke CNpcSpeedLoad::Initialize() in dllmain

Spoiler

NpcSpeedLoad.h


#pragma once

class CNpcSpeedLoad {
public:

	static void Initialize() {
		g_HookManager.WriteMemoryBYTE(0x6F1E28, 0xFF);
		g_HookManager.WriteMemoryDWORD(0x6F1F74, 100);
	}

};

 

 

L2Npc Extend part

NpcExt.dll

invoke CNpcSpeedLoad::Initialize() in dllmain

Spoiler

NpcSpeedLoad.h


#pragma once

//C - class name
//M - method name
//A - address
//RT - return type
//... - method signature
#define mdef(C, M, A, CC, RT, ...)\
	const uintptr_t M_##C##__##M = (uintptr_t) A;\
	typedef RT ( CC * M_##C##__##M##_T ) (C*, __VA_ARGS__);

//C - class name
//M - method name
//This - pointer to C
//... method parameters
#define invoke(C, M, This, ...)\
	( M_##C##__##M##_T ( M_##C##__##M ) ) (This, __VA_ARGS__)

class CNpcMakerDB;
class CNpcSpeedLoad;
class CNpcEx;

mdef(CNpcMakerDB, ProcessOneNpcMaker, 0x5517D0, __fastcall, bool)
mdef(CNpcMakerDB, ProcessOneNpcMakerEx, 0x551BF0, __fastcall, bool)
mdef(CNpcMakerDB, AddTimer, 0x47F0D0, __fastcall, bool, int, int)
mdef(CNpcMakerDB, TimerExpired, 0x551A10, __fastcall, void, int)

mdef(CNpcEx, AddTimer, 0x47F0D0, __fastcall, bool, int, int);

class CNpcSpeedLoad {
public:

	static void Initialize();

};


class CNpcEx {
public:
	bool AddTimer(int delay, int id) {
		return invoke(CNpcEx, AddTimer, this, delay, id);
	}

	static bool EnterWorld__AddTimer(CNpcEx* This, int delay, int id) {
		return This->AddTimer(0, id);
	}
};

class CNpcMakerDB {
public:

	bool ProcessOneNpcMaker() {
		return invoke(CNpcMakerDB, ProcessOneNpcMaker, this);
	}

	bool ProcessOneNpcMakerEx() {
		return invoke(CNpcMakerDB, ProcessOneNpcMakerEx, this);
	}

	bool AddTimer(int delay, int id) {
		return invoke(CNpcMakerDB, AddTimer, this, delay, id);
	}
	
	void TimerExpired(int id) {
		return invoke(CNpcMakerDB, TimerExpired, this, id);
	}

	static void TimerExpiredHook(CNpcMakerDB* This, int id);
};

 

NpcSpeedLoad.cpp


#include "StdAfx.h"
#include "NpcSpeedLoad.h"
#include "Utils.h"

void CNpcSpeedLoad::Initialize() {
	//define hooks
	//hook vtable CNpcMakerDB::TimerExpired
	WriteQWORD(0x6B8E80, uintptr_t(CNpcMakerDB::TimerExpiredHook));
	//CNpc::EnterWorld -> AddTimer
	WriteCall(0x4D1BBB, CNpcEx::EnterWorld__AddTimer);
}

void CNpcMakerDB::TimerExpiredHook(CNpcMakerDB* This, int id) {
	try {
		if(id == 1) {
			bool result = true;
			for(int i = 0 ; i < 256 && (result = This->ProcessOneNpcMaker()) ; i++);
			if(!result) {
				((int*) This)[180] = 0;//boolean tell if loading CNpcMaker
				g_Log.Add(LogBlue, "ProcessOneNpcMaker processing finish!");
				This->AddTimer(100, 2);
			} else
				This->AddTimer(100, 1);
		} else if(id == 2) {
			bool result = true;
			for(int i = 0 ; i < 256 && (result = This->ProcessOneNpcMakerEx()) ; i++);
			if(result)
				This->AddTimer(100, 2);
			else
				g_Log.Add(LogBlue, "ProcessOneNpcMakerEx processing finish!");
		}
	} catch(...) {
		g_Log.Add(LogError, L"%s error", __FUNCTIONW__);
	}
}

 

Edited by gattsuicu
  • Thanks 1
  • 1 month later...
  • 6 months later...
Posted (edited)

Hi! good guide, but.. i have a question.

 

how to add this? 

 

in first part i create the NpcSpeedLoad.h and copy the content...

 

in 2th part i create the NpcSpeedLoad.h and .cpp and copy the content... but.

 

i have a quiestion about: 

"invoke CNpcSpeedLoad::Initialize() in dllmain"

 

i added CNpcSpeedLoad::Initialize() 
in a dllmain.h (in IlExt)

 

but the second part say same invoke CNpcSpeedLoad::Initialize() in dllmain but... in a NPCExt doesn't have a dllmain.h

Edited by katia666
  • 1 year later...
Posted

On Npc.cpp add

 

#include "NpcSpeedLoad.h" 

and CNpcSpeedLoad::Initialize(); under

 

        CSharedFactory::Init();
        CNPC::ExtInit();
        CNPCEventFactory::Init();
        CPostLoad::Init();
        CBaseAction::Init();
        CTimer::Init();
        CScriptAccessible::Init();

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

    • State-of-the-art сryptocurrency mixer 💰 Our service does not "mix transactions," but immediately issues CLEAN cryptocurrency with low AML. The principle is simple: you give us your coins, we return our clean coins to you, without any traces or unnecessary procedures. ✔ Complete confidentiality. No "pseudo-mixers" — at the exit, a transaction without traces. ✔ Flexible commission. From 2% to 6%, depending on the destination and amount. ✔ Popular currencies: LTC, BTC, ETH, USDT, BNB, XRP, XMR, TRX. Others available upon request.   ✔ Ready accounts ✔   Business accounts ✅ Account Qonto Business 🗂️ 2 in stock ✅ Account Finom Business 🗂️ 1 in stock ✅ Account PayPal Business 🗂️ 1 in stock ✅ Account Wallester Business 🗂️ 1 in stock ✅ Account Stripe Business 🗂️ 1 in stock ✅ Account Wittix Business 🗂️ 2 in stock ✅ Account Ebay com Seller US|EU, new 🗂️ 2 in stock ✅ Account Blackcatcard Business 🗂️ 2 in stock ✅ Account Mistertango Business 🗂️ 1 in stock ✅ Account Payset Business 🗂️ 1 in stock ✅ Account Wise Business 🗂️ 1 in stock ✅ Account Revolut Business 🗂️ 2 in stock   Payments-system / Crypto-Exchange ✅ Account AlchemyPay 🗂️ 1 in stock ✅ Account Astropay 🗂️ 1 in stock ✅ Account 4x4 io 🗂️ 1 in stock ✅ Account Bunq 🗂️ 2 in stock ✅ Account Bilderlings 🗂️ 1 in stock ✅ Account BitPay 🗂️ 1 in stock ✅ Account Bitinvestor / swapped 🗂️ 1 in stock ✅ Account Bitmex 🗂️ 1 in stock ✅ Account Bitsa 🗂️ 3 in stock ✅ Account Blackcatcard 🗂️ 1 in stock ✅ Account Btcdirect 🗂️ 1 in stock ✅ Account BBVA 🗂️ 1 in stock ✅ Account Binance 🗂️ 2 in stock ✅ Account Bitget 🗂️ 1 in stock ✅ Account Blackwell Global 🗂️ 1 in stock ✅ Account Brighty app 🗂️ 4 in stock ✅ Account Bankera 🗂️ 1 in stock ✅ Account Coinbase card 🗂️ 1 in stock ✅ Account Coinfinity 🗂️ 1 in stock ✅ Account Capitalist 🗂️ 2 in stock ✅ Account CoinW 🗂️ 1 in stock ✅ Account Coinmetro 🗂️ 1 in stock ✅ Account Coinpayments 🗂️ 1 in stock ✅ Account Cryptomus 🗂️ 1 in stock ✅ Account Curve 🗂️ 3 in stock ✅ Account Cryptopay 🗂️ 1 in stock ✅ Account Egera 🗂️ 1 in stock ✅ Account e PN 🗂️ 1 in stock ✅ Account FasterPay 🗂️ 1 in stock ✅ Account Finci 🗂️ 1 in stock ✅ Account fillit eu 🗂️ 1 in stock ✅ Account Gate 🗂️ 3 in stock ✅ Account Grey 🗂️ 1 in stock ✅ Account HTX (Huobi) 🗂️ 1 in stock ✅ Account IN1 🗂️ 1 in stock ✅ Account Imagenpay 🗂️ 1 in stock ✅ Account ICard 🗂️ 1 in stock ✅ Account IPRoyal 🗂️ 1 in stock ✅ Account Kraken 🗂️ 3 in stock ✅ Account Kucoin 🗂️ 1 in stock ✅ Account Kauri Finance 🗂️ 1 in stock ✅ Account Kriptomat 🗂️ 1 in stock ✅ Account Luno 🗂️ 1 in stock ✅ Account LuxonPay 🗂️ 1 in stock ✅ Account MEXC 🗂️ 1 in stock ✅ Account MyBrocard 🗂️ 1 in stock ✅ Account Moonpay 🗂️ 2 in stock ✅ Account Monzo 🗂️ 1 in stock ✅ Account moneyjar world 🗂️ 1 in stock ✅ Account Naga Pay 🗂️ 1 in stock ✅ Account Nash 🗂️ 1 in stock ✅ Account Nebeus 🗂️ 1 in stock ✅ Account Nexo 🗂️ 1 in stock ✅ Account Nearpay 🗂️ 2 in stock ✅ Account Neteller 🗂️ 1 in stock ✅ Account N26 🗂️ 1 in stock ✅ Account OKX 🗂️ 1 in stock ✅ Account PayDo 🗂️ 1 in stock ✅ Account Paypal 🗂️ 3 in stock ✅ Account Paysera 🗂️ 1 in stock ✅ Account PST 🗂️ 1 in stock ✅ Account Paybis 🗂️ 1 in stock ✅ Account Payoneer 🗂️ 1 in stock ✅ Account Paysafecard 🗂️ 2 in stock ✅ Account Paytend 🗂️ 1 in stock ✅ Account Quppy 🗂️ 1 in stock ✅ Account RedotPay 🗂️ 1 in stock ✅ Account Ramp 🗂️ 1 in stock ✅ Account Revolut 🗂️ 1 in stock ✅ Account Santander 🗂️ 1 in stock ✅ Account Spendl 🗂️ 1 in stock ✅ Account Skrill 🗂️ 1 in stock ✅ Account Swapin 🗂️ 3 in stock ✅ Account Trustee Plus 🗂️ 1 in stock ✅ Account Valora 🗂️ 1 in stock ✅ Account Volet 🗂️ 1 in stock ✅ Account W1TTY 🗂️ 1 in stock ✅ Account Wallet Telegram 🗂️ 1 in stock ✅ Account Weststein 🗂️ 1 in stock ✅ Account Wirex 🗂️ 1 in stock ✅ Account Wise 🗂️ 4 in stock ✅ Account Whitebit 🗂️ 1 in stock ✅ Account Wittix 🗂️ 1 in stock ✅ Account XGo 🗂️ 1 in stock
    • Boss is not working on HF, because npcgrt is formatted for Interluder
    • Good luck with your project!
    • Hola Fissban , che queria preguntarte algo estoy tratando de hacer que el testserver ande pro que cuando logeo y voy a elejir el servidor no aparece y he estado con la ia incluso buscando que puede ser pero no e logrado decifrarlo me darias una mano o alguien ?  
    • The Return of L2Elixir – A Legacy Reborn in 2025 Read more features: https://l2elixir.org/features/ It’s time to relive the magic. Many of you remember L2Elixir, first launched in 2008 – a server that brought players together, created friendships, rivalries, and unforgettable memories. For two+ incredible years, until its closure in 2010, Elixir was more than just a server… it was home. In 2018, a fake project borrowed the name and damaged that legacy, but the true memories of L2Elixir never died. Today, in 2025, we are proud to announce that a new dedicated team has taken up the mantle to bring L2Elixir back to life – with respect for the past and a fresh vision for the future.   What to Expect We’re not here to be “just another server.” Our mission is to bring back nostalgia with innovation, offering a unique progression experience: Interlude-Like start, capturing that classic old-school feeling. A natural evolution into Gracia Final. Followed by Gracia Epilogue, keeping the journey alive without losing balance. This is not a copy-paste server – it’s a carefully crafted world designed to honor the spirit of Lineage II while introducing fresh ideas to keep the gameplay alive and rewarding. Why L2Elixir? A balanced environment where community comes first. A project built with passion, not profit. A server that values longevity, fairness, and nostalgia.   📅 Launch Date & Details Closed Beta: Online. Open Beta & Rewards: November 15 & 21:00 UTC +2 Launch: November 28 & 21:00 UTC +2   🔗 Join the Community Be part of history once again. Follow our Discord, join the discussion, and prepare to step back into the world where legends were made.   https://l2elixir.org/ https://discord.gg/5ydPHvhbxs L2Elixir 2025 – Honoring the Past. Building the Future.
  • 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