All pastes #993796 Raw Edit

Etwas

public cpp v1 · immutable
#993796 ·published 2008-04-22 21:20 UTC
rendered paste body
			//TODO: Call a function here later, when redesigning			/*			new "SdSddddddddddffdQddddddddddddddddddddddddddddddddddddddddddddddffdddchhd"		count));						//if we have chars on the account							//create a new packet and memset				//fix opcode				*pNewPacket = 0x09;				pNewPacket +=1;				pOldPacketData +=1;				iNewPacketLen +=1;				//chars on account				*(int*)pNewPacket = iCharsOnAccount;				pNewPacket +=4;				pOldPacketData +=4;				iNewPacketLen +=4;				//set the "cancreatecharsflag"				*(int*)pNewPacket = 0x07;				pNewPacket +=4;				iNewPacketLen +=4;				//set another unknown byte				*(BYTE *)pNewPacket = 0x00;				pNewPacket +=1;				iNewPacketLen +=1;				//loop through the chars and fix only the changed / additional stuff				//counter for loop				int iForLoop = 0;				while ( iForLoop < iCharsOnAccount )	{					//now fix the data, getting the data of the oldpacket and write to new.					//we write the whole buffer at the end by using memcpy					////copy data until the next fix "SdS"					int iTmp = 0;					iTmp += (lstrlenW((LPCWSTR)(pOldPacketData))+1)*2; //name					iTmp +=4;					iTmp += (lstrlenW((LPCWSTR)(pOldPacketData + iTmp))+1)*2; //account name					memcpy(pNewPacket, pOldPacketData, iTmp);					pNewPacket+=iTmp;					pOldPacketData+=iTmp;					iNewPacketLen+=iTmp;					//copy data until the next fix "ddddddddddffd"					iTmp = 10*4 + 2*8 + 4;					memcpy(pNewPacket, pOldPacketData, iTmp);					pNewPacket+=iTmp;					pOldPacketData+=iTmp;					iNewPacketLen += iTmp;					//fix the EXP ->> changed from d to Q  (but Q is f)					//exp lower byte					iTmp = 4;					memcpy(pNewPacket, pOldPacketData, iTmp);					pNewPacket += iTmp;					pOldPacketData += iTmp;					//exp higher byte					*(int *)pNewPacket = 0;					pNewPacket += 4;					iNewPacketLen +=8;					//copy data until the next fix "ddddddddddddddddddddddddddddddddddddffdddc"					iTmp = 46*4 + 2*8 + 3*4 + 1;					memcpy(pNewPacket, pOldPacketData, iTmp);					pNewPacket += iTmp;					pOldPacketData += iTmp;					iNewPacketLen += iTmp;					//add the new data to the end "hhd"					*(int *)pNewPacket = 0;	//augumentation effect has been added for IL					pNewPacket += 4;					iNewPacketLen += 4;					*(int *)pNewPacket = 0; //augumentation effect has been added for IL					pNewPacket += 4;					iNewPacketLen += 4;					*(int *)pNewPacket = 0;   //transformation ID has been added for CT1					pNewPacket += 4;					iNewPacketLen += 4;					iForLoop++;				}				memcpy(pPacket, pNewPacket-iNewPacketLen, iNewPacketLen);				//rewind				pNewPacket-=iNewPacketLen;				// delete the allocated buffer				delete [] pNewPacket;			}			else {				//empty account				char *pNewPacket = new char[10];				memset(pNewPacket, 0, 10);						*pNewPacket = 0x09;				pNewPacket += 1;				iNewPacketLen +=1;				*(int *)pNewPacket = 0;				pNewPacket +=4;				iNewPacketLen +=4;				*(int *)pNewPacket = 0x07; //allow to create chars, if 0 we prevent new/empty accounts from creating chars				pNewPacket +=4;				iNewPacketLen +=4;				*(BYTE *)pNewPacket = 0x00;				pNewPacket +=1;				iNewPacketLen +=1;				//fix data				memcpy(pPacket, pNewPacket-iNewPacketLen, iNewPacketLen);				//rewind				pNewPacket-=iNewPacketLen;				// delete the allocated buffer				delete [] pNewPacket;			}			//set the new packet len (2 places ( packet -2 and packet + 0x1FFE ) )			*(u16*)(pPacket - 2) = iNewPacketLen+2;			*(u16*)(pPacket + 0x1FFE) = iNewPacketLen+2;		}