Victor Kolinko Posted July 1, 2014 Posted July 1, 2014 I can not start the server with COEP extender 66\61 ver.I'm using 746 protocol for interlude. When connecting to a game server, server crashes with error A:I:S:E:PE:DI:DE:BO=1.000000:1.000000:1.000000:1.000000:1.000000:0:0:1 L:Y:X:H=0:0:0:0:0 Crashed Thread[6]. Server Up Time : Mon Jun 30 04:26:21 2014 Current Time : Mon Jun 30 04:27:16 2014 Elapsed Time : 0 days 0 hours 0 minutes 55 seconds IOBufferPool - 49994 / 50000, PendingWrite 7 bytes [0] =============== object report user[0/0], npc[0/0], item[0/0], usersocket[1] =============== npc server connection log no connect [(2596) 2014/06/30 04:27:16]: ======================= an Access Violation in module ntdll.dll at 0033:770c08c5. start at 2014/6/30 04:26:20 Read from location ffffffff caused an access violation. Registers: EAX=a56aefa8 CS=0033 EIP=770c08c5 EFLGS=00010202 EBX=00000002 SS=002b ESP=a56aef98 EBP=ed96dc40 ECX=a56af078 DS=002b ESI=00000020 FS=0053 EDX=a56aefe8 ES=002b EDI=00000000 GS=002b Bytes at CS:EIP: 0f ae 81 00 01 00 00 0f 29 81 a0 01 00 00 0f 29 Stack dump: a56aef98: 00000202 00000000 7707b219 00000000 fffa4000 000007ff 00000001 00000000 a56aefb8: 770c7000 00000001 000002ed 00000000 00000000 00000000 a56a007f 00000000 a56aefd8: a96bb0b0 00000000 a96bb0c0 00000000 a56b0000 00000000 a56ad000 00000000 a56aeff8: 7707a968 00000000 01f15409 00000000 a56af0e0 00000000 00000015 00000000 a56af018: d17c0fba 00000000 00000003 00000000 1afe0158 00000000 a56af430 00000000 a56af038: ffffffff ffffffff a96bb0b0 00000000 00000008 00000000 1afe0158 00000000 a56af058: 770c6486 00000000 00000050 00000000 a56afa50 00000000 000002ed 00000000 a56af078: 0000067c 00000000 a56af091 00000000 00000204 00000000 a56a0001 00000000 a56af098: 00440042 00000000 a56afa50 00000000 000003ff 00000020 002b0033 0053002b a56af0b8: 002b002b 00000000 000a0008 00000000 77187540 00000000 003a0045 0053005c ver = Dec 16 2005_22:03:13 GuardInfo : IOThread [0][0] (good): void IOThread_common(void *arglist) Lock Stack : IOThread [1][15] (good): void IOThread_common(void *arglist) Lock Stack : IOThread [2][0] (good): void IOThread_common(void *arglist) Lock Stack : IOThread [3][15] (good): void IOThread_common(void *arglist) Lock Stack : IOThread [4][0] (good): void IOThread_common(void *arglist) Lock Stack : IOThread [5][15] (good): void IOThread_common(void *arglist) Lock Stack : IOThread [6][47] (ahehe): void IOThread_common(void *arglist) -> static bool LoadCharacterPacket(CDBSocket *socket, const unsigned char *packet) -> void CSocket::Send(const char* format, ...) -> CPacketSent::SendData Lock Stack : IOThread [7][16] (good): void IOThread_common(void *arglist) Lock Stack : ListenThread [13][31] (good): void ListenThread_common() -> unsigned __stdcall WaitThread(void *) Lock Stack : MainThread [12][858] (good): Lock Stack : GuardInfo end [(2596) 2014/06/30 04:27:16]: *.\ioc.cpp:648(Tue Dec 13 02:52:40 2005) exception
mcbigmac Posted July 2, 2014 Posted July 2, 2014 ...well It's not for interlude. So there's that - and if you downgraded already you'd probably able to easily debug this error. Sooooo...
Victor Kolinko Posted July 2, 2014 Author Posted July 2, 2014 (edited) // delete Edited July 2, 2014 by Victor Kolinko
Victor Kolinko Posted July 2, 2014 Author Posted July 2, 2014 #include "CSentPackets.h" #include "L2ServerFunctions.h" extern "C" int nRevision; // C4 per player : SdSddddddddddffdddddddddd dddddddddd dddddddddd dddddddddd dddddddd ff INT32 nLoadCharacters = 0; void CSentPackets::LoadCharacters(CSocket *pSocket, const char *format, va_list va) { L2SERVER_SHARED_GUARD(nLoadCharacters); TLS_TRACE_BEGIN; char *charSelectFormat = (char*)0x9D9270; // Character Selection Info (Character Screen) va_list vl = va; UINT8 packetid = va_arg(vl, UINT8); UINT32 chars = va_arg(vl, UINT32); UINT32 buffersize = va_arg(vl, UINT32); CSPacket InPacket(va_arg(vl, CHAR *), buffersize, buffersize); CSPacket OutPacket; OutPacket.set(8192); OutPacket << packetid; OutPacket << chars; if(nRevision > 746) { OutPacket << (INT32)0x07; OutPacket << (BYTE)0x00; int pos = 0; for ( UINT32 a = 0 ; a < chars ; a++ ) { UINT32 lastpos = pos; UINT32 cnsize = (InPacket.GetWString(pos).size()+1)*2; // Character Name Size 32 Bytes UINT32 ansize = (InPacket.GetWString(pos+cnsize+4).size()+1)*2; // Account Size 28 Bytes UINT32 psize = 285 + cnsize + ansize; UINT32 exppos = 64 + cnsize + ansize; OutPacket.Write(InPacket.GetBytes(pos),exppos); pos += exppos; OutPacket.Write((INT64)InPacket.GetQWord(pos)); pos += 8; OutPacket.Write(InPacket.GetBytes(pos), 44); pos += 44 + 64; OutPacket.Write(InPacket.GetBytes(pos), 64); pos += 64; OutPacket.Write(InPacket.GetDWord(lastpos+exppos+168)); OutPacket.Write((INT32)0x00); OutPacket.Write((INT32)0x00); OutPacket.Write((INT32)0x00); OutPacket.Write((INT32)0x00); OutPacket.Write((INT32)0x00); OutPacket.Write((INT32)0x00); OutPacket.Write((INT32)0x00); OutPacket.Write((INT32)0x00); OutPacket.Write(InPacket.GetBytes(pos),(psize-(pos-lastpos))); pos += (psize-(pos-lastpos)); OutPacket.Write((INT16)0x00); OutPacket.Write((INT16)0x00); OutPacket.Write((INT32)0x00); } } else { // IL Packet SdSddddddddddffdQddddddddddddddddddddddddddddddddddddddddddddddddffdddchh int pos = 0; for ( UINT32 a = 0 ; a < chars ; a++ ) { UINT32 cnsize = (InPacket.GetWString(pos).size()+1)*2; // Character Name Size 32 Bytes UINT32 ansize = (InPacket.GetWString(pos+cnsize+4).size()+1)*2; // Account Size 28 Bytes UINT32 exppos = 64 + cnsize + ansize; OutPacket.Write(InPacket.GetBytes(pos),exppos); pos += exppos; OutPacket.Write((INT64)InPacket.GetQWord(pos)); pos += 8; OutPacket.Write(InPacket.GetBytes(pos), 108); pos += 108; OutPacket.Write((INT32)0x00); OutPacket.Write(InPacket.GetBytes(pos), 64); pos += 64; OutPacket.Write((INT32)0x00); OutPacket.Write(InPacket.GetBytes(pos), 12); pos += 12; OutPacket.Write(InPacket.GetBytes(pos), 16); pos += 16; OutPacket.Write(InPacket.GetBytes(pos), 13); pos += 13; OutPacket.Write((INT32)0x00); } } pSocket->Send(&OutPacket); TLS_TRACE_END; } INT32 nLoadSelectedCharacter = 0; void CSentPackets::LoadSelectedCharacter(CSocket *pSocket, char *pFormat, ...) { L2SERVER_SHARED_GUARD(nLoadSelectedCharacter); TLS_TRACE_BEGIN; va_list tag; va_start(tag, pFormat); CSPacket Packet; Packet.set(350); BYTE nPacketID = va_arg(tag, BYTE); // PACKET ID Packet << (wstring)va_arg(tag, WCHAR *); // Character Name Packet << va_arg(tag, DWORD); // Character Object ID Packet << (wstring)va_arg(tag, WCHAR *); // Character Title Packet << va_arg(tag, DWORD); // Session ID Packet << va_arg(tag, DWORD); // Pledge ID Packet << va_arg(tag, DWORD); // Builder Packet << va_arg(tag, DWORD); // Sex Packet << va_arg(tag, DWORD); // Race INT32 nClassID = va_arg(tag, DWORD); // Class ID Packet << nClassID; // Class Packet << va_arg(tag, DWORD); // WorldId Packet << va_arg(tag, DWORD); // X Packet << va_arg(tag, DWORD); // Y Packet << va_arg(tag, DWORD); // Z Packet << va_arg(tag, DOUBLE); // Current HP Packet << va_arg(tag, DOUBLE); // Current MP Packet << va_arg(tag, DWORD); // SP va_arg(tag, DWORD); Packet << pSocket->user->SD->nExp64; // EXP Packet << va_arg(tag, DWORD); // Level Packet << va_arg(tag, DWORD); // Align Packet << va_arg(tag, DWORD); // Karma Packet << va_arg(tag, DWORD); // INT Packet << va_arg(tag, DWORD); // STR Packet << va_arg(tag, DWORD); // MEN Packet << va_arg(tag, DWORD); // DEX Packet << va_arg(tag, DWORD); // WIT Packet << (INT32)0x00; Packet << (INT32)0x00; Packet << nClassID; for (int i=0; i<20; i++) { Packet << (INT32)0x00; } va_end(tag); // Sending UserInfo pSocket->Send("cb", nPacketID, Packet.size(), Packet.buffer(false)); TLS_TRACE_END;
Recommended Posts