-
Posts
534 -
Credits
0 -
Joined
-
Last visited
-
Days Won
8 -
Feedback
0%
Content Type
Articles
Profiles
Forums
Store
Everything posted by eressea
-
Trick How to fool low skilled Adms/Gms.
eressea replied to HarryHoudini's topic in Hacks & Cheats [English]
Also every sane admin will require only instructions how to reproduce the bug - definitely not testing it in wild by changing some char's level (and it could be considered supporting a player that wants to delevel quickly) :D -
Trick How to fool low skilled Adms/Gms.
eressea replied to HarryHoudini's topic in Hacks & Cheats [English]
You're right, there's no such command (at least in leaked Gracia Final) -
How do you mean that? You need NPC with multisell with all S grade recipes? If so, make a list of recpies you need there (you can find names in item_pch.txt), create your own multisell (in multisell.txt, give it ID 1000+), create some npc (copy existing npc that is merchant in npcdata.txt and npc_pch.txt), create AI class for it (can be just empty class derived from citizen) or set it's class to be just citizen and create html for it that will contain <a action="bypass -h menu_select?ask=-303&reply=YOURMULTISELLID">Buy recipes</a>
-
Discussion L2Mid SkyLord GM exposed
eressea replied to Liuss's topic in General Discussion [English]
Nice servers we have in 2017 :D -
It's 3 different instances, you select which one you want before you enter. I also haven't play official but there's Freya leak and it's visible there <html> <head></head> <body> Pathfinder Worker:<br> Pirate King Zaken once lived here. But it's been said that he may have allied himself with the invaders from the Dream World, which is why adventurers seeking to challenge him now cannot find him.<br> We believe that he has now created a giant Dream Dimension by drawing on the power of night.<br> Because of that, Zaken was separated into two individuals, a corporeal one during the day and the other one during the night. He is more powerful now than ever, and he has been attacking the real world from the Dream Dimension.<br> <a action="link zaken_enter002.htm">Ask how to fight Nighttime Zaken.</a><br> <a action="link zaken_enter002a.htm">Ask how to fight Daytime Zaken.</a><br> <a action="link zaken_enter002b.htm">Ask how to fight Daytime Zaken (Difficult).</a> </body> </html> There's no leak for Epilogue but it's generally known that there was no level 83 Zaken ("Daytime Zaken Difficult") and it was added on Freya. Also thanks for the offer but I even don't have java installed on the server :D
-
On Gracia Final there was just one Zaken and wasn't instanced (so it was same as on C4). On Gracia Epilogue it was made an instance and you can pick Daytime Zaken which is relatively easy, but drops Zaken Earring with just 0.09 % chance or Night Zaken which is designed for whole command channel, where the chance of dropping epic jewel is much greater (I think 85 %). On Freya there's also Day Zaken level 83 but there's low chance (0.09 %) too. From H5 on I don't know...
-
Discussion How check srv is l2off or l2j
eressea replied to kierownik's topic in Server Development Discussion [L2OFF]
Probably not 100% accurate: Kill gremlin, wait when it respawns, kill it again, if it respawns always on the same spot, it's probably l2j -
Help How to remove "Server is powered by AdvExt"?
eressea replied to LineageLover's question in Request Server Development Help [L2OFF]
Open GeneralSettings.ini and set DISABLE_ADVEXT_AD=true -
I'd say it's way too custom to call it so, also it seems it's java emulator
-
1172 online now, usually around 1500 during evening bit better than my server - but we'll see in 2018 :)
-
Ofc, where do you play atm? Just ignore this wyzard
-
What's the purpose of the forum? It's for your server players? Or who? Btw phpbb default skin, srsly?
-
gracia final texture bug
eressea replied to martynasr08's question in Request Server Development Help [L2OFF]
Did you try using updated system with protocol 87? Unfortunately I don't have link -
Hi, I've found a nice way to get better GPF crash reports from the client: It's simple, there are just few things that must be done to get it working. 1. Create buffer for register and modules dump and function that fills it: wchar_t MyExceptionBuffer[0x1000]; LONG WINAPI MyUnhandledExceptionFilter(_In_ struct _EXCEPTION_POINTERS *ExceptionInfo) { if (ExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION) { wsprintf( MyExceptionBuffer, L"EAX=0x%08X CS=0x%04X EIP=0x%08X EFLGS=0x%08X\r\n" L"EBX=0x%08X SS=0x%04X ESP=0x%08X EBP=0x%08X\r\n" L"ECX=0x%08X DS=0x%04X ESI=0x%08X FS=0x%04X\r\n" L"EDX=0x%08X ES=0x%04X EDI=0x%08X GS=0x%04X\r\n" L"\r\n" L"l2.exe: 0x%08X\r\n" L"core.dll: 0x%08X\r\n" L"engine.dll: 0x%08X\r\n" L"nwindow.dll: 0x%08X\r\n", ExceptionInfo->ContextRecord->Eax, ExceptionInfo->ContextRecord->SegCs, ExceptionInfo->ContextRecord->Eip, ExceptionInfo->ContextRecord->EFlags, ExceptionInfo->ContextRecord->Ebx, ExceptionInfo->ContextRecord->SegSs, ExceptionInfo->ContextRecord->Esp, ExceptionInfo->ContextRecord->Ebp, ExceptionInfo->ContextRecord->Ecx, ExceptionInfo->ContextRecord->SegDs, ExceptionInfo->ContextRecord->Esi, ExceptionInfo->ContextRecord->SegFs, ExceptionInfo->ContextRecord->Edx, ExceptionInfo->ContextRecord->SegEs, ExceptionInfo->ContextRecord->Edi, ExceptionInfo->ContextRecord->SegGs, GetModuleHandleA("l2.exe"), GetModuleHandleA("core.dll"), GetModuleHandleA("engine.dll"), GetModuleHandleA("nwindow.dll")); } return 0; } 2. Call AddVectoredExceptionHandler: AddVectoredExceptionHandler(1, MyUnhandledExceptionFilter); 3. Don't forget to initialize the buffer MyExceptionBuffer[0] = 0; 4. Now if it crashes, MyExceptionBuffer will be filled with register dump - now we have to hack it so it will be shown. Create function that wraps appStrncat: wchar_t* appStrncatWrapper(wchar_t *destination, const wchar_t *source, int maxCount) { if (std::wstring(L"MainLoop") != source || !MyExceptionBuffer[0]) { return wcsncat(destination, source, maxCount); } std::wstring data(source); data += L"\r\n\r\n"; data += MyExceptionBuffer; return wcsncat(destination, data.c_str(), maxCount); } 5. Hook our appStrncatWrapper function to the right place - this example is for interlude, for other clients you have to use IDA and find the same code: WriteInstructionCall(reinterpret_cast<UINT32>(GetModuleHandle(L"core.dll")) + 0x52287, reinterpret_cast<UINT32>(appStrncatWrapper)); Now when the client crashes with GPF error (access violation) and the code is called from MainLoop, you'll see nice crash info with details :) Enjoy!