Need Help Finishing A Code...

All Helbreath Server Source Discussion here.
Post Reply
locobans
Outpost Junkie
Posts: 2264
Joined: Tue Jul 13, 2004 3:51 am
Location: Behind You
Contact:

Post by locobans »

Hello guys,

Problems
Is not working the way I want it to...of course it ain't lolz.

First, when DISABLED it doesn't remove anyone's armor...I think I'm missing the correct missinReleaseItemHandler parameters or something.

Secondly, when armor DISABLED and you go into an arena (fightzone) your armor doesn't strips off. I think I manage to fix...

And third, when armor DISABLED you can still equip it back...

Description
The code will remove everyone's armor equipped (not includes shield) when the commands is activated in an arena (fightzone) excepting the GM characters.

Can anyone check this up and tell me where are my mistakes at? :(

I ve also added...this in InitPlayerData so if player is teleported to the arena and the Armor on the map is DISABLED it should automatically release all equipment.
if ((m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_bIsFightZone == TRUE) && (m_pClientList[iClientH]->m_iAdminUserLevel == 0)) {

if (m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_bArmorAllowed == FALSE){
  if(m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_HEAD ] != -1){
  SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMRELEASED, DEF_EQUIPPOS_HEAD, m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_HEAD ], NULL, NULL);
  ReleaseItemHandler(iClientH, m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_HEAD ], FALSE);
  m_pClientList[iClientH]->m_bIsItemEquipped[m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_HEAD ]] = FALSE;
    }
    if(m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BODY ] != -1){
  SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMRELEASED, DEF_EQUIPPOS_BODY, m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BODY ], NULL, NULL);
  ReleaseItemHandler(iClientH, m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BODY ], FALSE);
  m_pClientList[iClientH]->m_bIsItemEquipped[m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BODY ]] = FALSE;
    }
    if(m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_ARMS ] != -1){
  SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMRELEASED, DEF_EQUIPPOS_ARMS, m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_ARMS ], NULL, NULL);
  ReleaseItemHandler(iClientH, m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_ARMS ], FALSE);
  m_pClientList[iClientH]->m_bIsItemEquipped[m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_ARMS ]] = FALSE;
    }
    if(m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_LEGGINGS ] != -1){
  SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMRELEASED, DEF_EQUIPPOS_LEGGINGS, m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_LEGGINGS ], NULL, NULL);
  ReleaseItemHandler(iClientH, m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_LEGGINGS ], FALSE);
  m_pClientList[iClientH]->m_bIsItemEquipped[m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_LEGGINGS ]] = FALSE;
    }
    if(m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_PANTS ] != -1){
  SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMRELEASED, DEF_EQUIPPOS_PANTS, m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_PANTS ], NULL, NULL);
  ReleaseItemHandler(iClientH, m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_PANTS ], FALSE);
  m_pClientList[iClientH]->m_bIsItemEquipped[m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_PANTS ]] = FALSE;
    }
    if(m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BACK ] != -1){
  SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMRELEASED, DEF_EQUIPPOS_BACK, m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BACK ], NULL, NULL);
  ReleaseItemHandler(iClientH, m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BACK ], FALSE);
  m_pClientList[iClientH]->m_bIsItemEquipped[m_pClientList[iClientH]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BACK ]] = FALSE;
    }
}
Here's the actual void I have...
void CGame::AdminOrder_EventArmor(int iClientH, char * pData, DWORD dwMsgSize)
{
BOOL m_bChanged = FALSE;
char   seps[] = "= \t\n";
char   * token, cBuff[256], cArmorMessage[256];
class  CStrTok * pStrTok;
int i, iAdminMap;

if ((dwMsgSize) <= 0) return;
if (m_pClientList[iClientH] == NULL) return;
iAdminMap = m_pClientList[iClientH]->m_cMapIndex;
if (m_pMapList[ iAdminMap ]->m_bIsFightZone == FALSE) return;
if (m_pClientList[iClientH]->m_iAdminUserLevel < 1) {
SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ADMINUSERLEVELLOW, NULL, NULL, NULL, NULL);
return;
}

ZeroMemory(cBuff, sizeof(cBuff));
memcpy(cBuff, pData, dwMsgSize);

pStrTok = new class CStrTok(cBuff, seps);
token = pStrTok->pGet();
token = pStrTok->pGet();

if (token != NULL) {
ZeroMemory(cArmorMessage, sizeof(cArmorMessage));
if (token[0] == '0') {
//if(m_pMapList[iAdminMap]->m_bArmorAllowed == TRUE){
  m_pMapList[iAdminMap]->m_bArmorAllowed = FALSE;
  wsprintf(G_cTxt, "(%s) Admin(%s) Order: Disabled armor in map %s", m_pClientList[iClientH]->m_cIPaddress, m_pClientList[iClientH]->m_cCharName, m_pClientList[iClientH]->m_cMapName);
  bSendMsgToLS(MSGID_GAMEMASTERLOG, iClientH, FALSE, G_cTxt);
  m_bChanged = TRUE;
  wsprintf(cArmorMessage, " Armor has been DISABLED in this map.");
//}
}
else if (token[0] == '1') {
//if(m_pMapList[iAdminMap]->m_bArmorAllowed == TRUE){
  m_pMapList[iAdminMap]->m_bArmorAllowed = FALSE; 
  wsprintf(G_cTxt, "(%s) Admin(%s) Order: Enabled armor in map %s", m_pClientList[iClientH]->m_cIPaddress, m_pClientList[iClientH]->m_cCharName, m_pClientList[iClientH]->m_cMapName);
  bSendMsgToLS(MSGID_GAMEMASTERLOG, iClientH, FALSE, G_cTxt);
  m_bChanged = TRUE;
  wsprintf(cArmorMessage, " Armor has been ENABLED in this map.");
//}

}
if(m_bChanged == TRUE){
for (i = 1; i < DEF_MAXCLIENTS; i++){
if ((m_pClientList != NULL) && (m_pClientList->m_bIsInitComplete == TRUE)) {
if (m_pClientList->m_cMapIndex == iAdminMap){
  if(m_pClientList->m_iAdminUserLevel < 1){
   if(m_pClientList->m_sItemEquipmentStatus[ DEF_EQUIPPOS_HEAD ] != -1){
    SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMRELEASED, DEF_EQUIPPOS_HEAD, m_pClientList->m_sItemEquipmentStatus[ DEF_EQUIPPOS_HEAD ], NULL, NULL);
    ReleaseItemHandler(i, m_pClientList->m_sItemEquipmentStatus[ DEF_EQUIPPOS_HEAD ], FALSE);
    m_pClientList->m_bIsItemEquipped[m_pClientList->m_sItemEquipmentStatus[ DEF_EQUIPPOS_HEAD ]] = FALSE;
   }
   if(m_pClientList->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BODY ] != -1){
    SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMRELEASED, DEF_EQUIPPOS_BODY, m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BODY ], NULL, NULL);
    ReleaseItemHandler(i, m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BODY ], FALSE);
m_pClientList[i]->m_bIsItemEquipped[m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BODY ]] = FALSE;
   }
   if(m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_ARMS ] != -1){
    SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMRELEASED, DEF_EQUIPPOS_ARMS, m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_ARMS ], NULL, NULL);
    ReleaseItemHandler(i, m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_ARMS ], FALSE);
m_pClientList[i]->m_bIsItemEquipped[m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_ARMS ]] = FALSE;
   }
   if(m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_LEGGINGS ] != -1){
    SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMRELEASED, DEF_EQUIPPOS_LEGGINGS, m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_LEGGINGS ], NULL, NULL);
    ReleaseItemHandler(i, m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_LEGGINGS ], FALSE);
m_pClientList[i]->m_bIsItemEquipped[m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_LEGGINGS ]] = FALSE;
   }
   if(m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_PANTS ] != -1){
    SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMRELEASED, DEF_EQUIPPOS_PANTS, m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_PANTS ], NULL, NULL);
    ReleaseItemHandler(i, m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_PANTS ], FALSE);
m_pClientList[i]->m_bIsItemEquipped[m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_PANTS ]] = FALSE;
   }
   if(m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BACK ] != -1){
    SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMRELEASED, DEF_EQUIPPOS_BACK, m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BACK ], NULL, NULL);
    ReleaseItemHandler(i, m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BACK ], FALSE);
m_pClientList[i]->m_bIsItemEquipped[m_pClientList[i]->m_sItemEquipmentStatus[ DEF_EQUIPPOS_BACK ]] = FALSE;
   }
  }//If not admin
    SendNotifyMsg(NULL, i, DEF_NOTIFY_IPACCOUNTINFO, NULL, NULL, NULL, cArmorMessage);
}//If Client map = Admin map
    }//Client exsists
}//For each client
}//m_bChanged == TRUE
}//token != NULL

delete pStrTok;
}


And in bEquipItemHandler so if the Armor is DISABLED players cannot equip them back.
if ((cEquipPos == DEF_EQUIPPOS_BODY) || (cEquipPos == DEF_EQUIPPOS_LEGGINGS) ||
  (cEquipPos == DEF_EQUIPPOS_ARMS) || (cEquipPos == DEF_EQUIPPOS_HEAD) ||
  (cEquipPos == DEF_EQUIPPOS_BACK) || (cEquipPos == DEF_EQUIPPOS_PANTS)){
  if(m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_bArmorAllowed == FALSE) {
  return FALSE;
  }
}
QUOTE (ADDKiD @ Dec 1 2006, 4:01 PM) <br>You guys make me laugh alot, half the shit I say, is bullshit...<br><br><img src='http://img485.imageshack.us/img485/492/banssig1ng.gif' border='0' alt='user posted image' /><br><br><b>I see no changes at all, wake up in the morning and ask myself...<br>Is life worth living? Should I blast myself?</b><br><br><b><a href='http://2paclegacy.com' target='_blank'>2PacLegacy.com</a></b>
EvilHit
Loyal fan
Posts: 356
Joined: Sun Jan 16, 2005 3:20 am

Post by EvilHit »

im not meant to release this but im goin to

Code: Select all

goto void CGame::MsgProcess()
find 

  	case MSGID_REQUEST_INITPLAYER:
    RequestInitPlayerHandler(iClientH, pData, cKey);
    break;

  	case MSGID_REQUEST_INITDATA:
    RequestInitDataHandler(iClientH, pData, cKey);
    break;

  	case MSGID_COMMAND_CHECKCONNECTION:
    CheckConnectionHandler(iClientH, pData);
    break;

replace with 

  	case MSGID_REQUEST_INITPLAYER:
    RequestInitPlayerHandler(iClientH, pData, cKey);
    break;

  	case MSGID_REQUEST_INITDATA:
    RequestInitDataHandler(iClientH, pData, cKey, FALSE);
    break;

  	case MSGID_COMMAND_CHECKCONNECTION:
    CheckConnectionHandler(iClientH, pData);
    break;

also game.cpp

/*********************************************************************************************************************
*  void CGame::RequestInitDataHandler                  	
*  DESCRIPTION  	:: manages player data/variables on enter zone          	
*  LAST_UPDATED  	:: 8/27/2005 11;26 PM EvilHit            	
*  RETURN_VALUE  	:: void                    	
*  NOTES    ::	- added bIsResurrected to save process time          	
*        - expanded DeleteClient to include TRUE(4)          	
*        - missing <4> cp++                	
*        - added temporary position list to stop items from scrambling on enter zone  	
*        - added checks to _iGetArrowItemIndex, and CalcTotalItemEffect      
*        
*	MODIFICATION  :: none                    	
**********************************************************************************************************************/
void CGame::RequestInitDataHandler(int iClientH, char * pData, char cKey, BOOL bIsResurrected)
{
	char  * pBuffer = NULL;
	short * sp, sSummonPoints; //CDW added sSummonPoints;
	DWORD * dwp;
	WORD  * wp;
	char  * cp, cPlayerName[11], cTxt[120], cPoints = 0;
	int   * ip, i, iTotalItemA, iTotalItemB, iSize, iRet;
	SYSTEMTIME SysTime;
	BOOL bIsItemListNull;
	POINT TempItemPosList[DEF_MAXITEMS];
	int iStats;

	if (m_pClientList[iClientH] == NULL) return;
	pBuffer = new char [DEF_MSGBUFFERSIZE+1];
	ZeroMemory(pBuffer, DEF_MSGBUFFERSIZE+1);

	// new - check to save time process time when resurrecting
	if (bIsResurrected == FALSE) {
	cp = (char *)(pData + DEF_INDEX2_MSGTYPE + 2);
	ZeroMemory(cPlayerName, sizeof(cPlayerName));
	memcpy(cPlayerName, cp, 10);

	ZeroMemory(cTxt, sizeof(cTxt)); // v1.4
	memcpy(cTxt, cPlayerName, 10);
	m_Misc.bDecode(cKey, cTxt);
	ZeroMemory(cPlayerName, sizeof(cPlayerName));
	memcpy(cPlayerName, cTxt, 10);

	if (memcmp(m_pClientList[iClientH]->m_cCharName, cPlayerName, 10) != 0) {
  DeleteClient(iClientH, FALSE, TRUE, TRUE, FALSE);// added TRUE to 4
  return;
	}

	dwp  = (DWORD *)(pBuffer + DEF_INDEX4_MSGID);
	*dwp = MSGID_PLAYERCHARACTERCONTENTS; // 0x0Fm_cHeldenianVictoryType000 = 262406144
	wp   = (WORD *) (pBuffer + DEF_INDEX2_MSGTYPE);
	*wp  = DEF_MSGTYPE_CONFIRM;

	cp = (char *)(pBuffer + DEF_INDEX2_MSGTYPE + 2);

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iHP;
	cp  += 4;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iMP;
	cp  += 4;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iSP;
	cp  += 4;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iDefenseRatio;
	cp  += 4;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iHitRatio;
	cp  += 4;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iLevel;
	cp  += 4;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iStr;  
	cp  += 4;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iInt;    	
	cp  += 4;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iVit;        
	cp  += 4;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iDex;  	
	cp  += 4;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iMag;      
	cp  += 4;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iCharisma;
	cp  += 4;

	iStats = (m_pClientList[iClientH]->m_iStr + m_pClientList[iClientH]->m_iDex + m_pClientList[iClientH]->m_iVit +  
  m_pClientList[iClientH]->m_iInt + m_pClientList[iClientH]->m_iMag + m_pClientList[iClientH]->m_iCharisma); 

	m_pClientList[iClientH]->m_iLU_Pool =  m_pClientList[iClientH]->m_iLevel*3 - (iStats - 70);
	wp = (WORD *)cp; 
	*wp = m_pClientList[iClientH]->m_iLU_Pool;
	cp += 2;

	*cp = m_pClientList[iClientH]->m_cVar;
	cp++;

	*cp = 0;
	cp++;

	*cp = 0;
	cp++;

	*cp = 0;
	cp++;

	*cp = 0;
	cp++;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iExp;
	cp  += 4;

	ip = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iEnemyKillCount;
	cp  += 4;

	ip = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iPKCount;
	cp  += 4;

	ip = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iRewardGold;
	cp  += 4;

	memcpy(cp, m_pClientList[iClientH]->m_cLocation, 10);
	cp  += 10;

	memcpy(cp, m_pClientList[iClientH]->m_cGuildName, 20);
	cp  += 20;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iGuildRank;
	cp  += 4;

	// v1.4311
	*cp = (char)m_pClientList[iClientH]->m_iSuperAttackLeft;
	cp++;

	ip   = (int *)cp;
	*ip  = m_pClientList[iClientH]->m_iFightzoneNumber;
	cp  += 4;

	m_pClientList[iClientH]->isForceSet = FALSE;
	m_pClientList[iClientH]->m_iPartyID = NULL;
	m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
	m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;


	iRet = m_pClientList[iClientH]->m_pXSock->iSendMsg(pBuffer, 116);// Original : 118
	switch (iRet) {
	case DEF_XSOCKEVENT_QUENEFULL:
	case DEF_XSOCKEVENT_SOCKETERROR:
	case DEF_XSOCKEVENT_CRITICALERROR:
	case DEF_XSOCKEVENT_SOCKETCLOSED:
  DeleteClient(iClientH, TRUE, TRUE, TRUE, FALSE);// added TRUE (4)
  if(pBuffer != NULL) delete pBuffer;
  return;
	}

	dwp  = (DWORD *)(pBuffer + DEF_INDEX4_MSGID);
	*dwp = MSGID_PLAYERITEMLISTCONTENTS;
	wp   = (WORD *) (pBuffer + DEF_INDEX2_MSGTYPE);
	*wp  = DEF_MSGTYPE_CONFIRM;

	iTotalItemA = 0;
	for (i = 0; i < DEF_MAXITEMS; i++)
  if (m_pClientList[iClientH]->m_pItemList[i] != NULL) 
  	iTotalItemA++;
	// new
	bIsItemListNull = FALSE;
	if (!bIsItemListNull) {
  bIsItemListNull = TRUE;
  for (i = 0; i < DEF_MAXITEMS-1; i++) {
  	if ((m_pClientList[iClientH]->m_pItemList[i] == NULL) && (m_pClientList[iClientH] != NULL)) {
    m_pClientList[iClientH]->m_ItemPosList[i].x = TempItemPosList[i].x; 
    m_pClientList[iClientH]->m_ItemPosList[i].y = TempItemPosList[i].y;
    bIsItemListNull = FALSE;
  	}
  }
	}
	m_pClientList[iClientH]->m_cArrowIndex = _iGetArrowItemIndex(iClientH); // new
	CalcTotalItemEffect(iClientH, -1, FALSE); // new

	cp = (char *)(pBuffer + DEF_INDEX2_MSGTYPE + 2);
	*cp = iTotalItemA;
	cp++;

	for (i = 0; i < iTotalItemA; i++) {
  if (m_pClientList[iClientH]->m_pItemList[i] == NULL) {
  	wsprintf(G_cTxt, "RequestInitDataHandler error: Client(%s) Item(%d)", m_pClientList[iClientH]->m_cCharName, i);
  	PutLogFileList(G_cTxt);

  	DeleteClient(iClientH, FALSE, TRUE, TRUE, FALSE);// added TRUE (4)
  	if(pBuffer != NULL) delete pBuffer;
  	return;
  }
  memcpy(cp, m_pClientList[iClientH]->m_pItemList[i]->m_cName, 20);
  cp += 20;
  dwp  = (DWORD *)cp;
  *dwp = m_pClientList[iClientH]->m_pItemList[i]->m_dwCount;
  cp += 4;
  *cp = m_pClientList[iClientH]->m_pItemList[i]->m_cItemType;
  cp++;
  *cp = m_pClientList[iClientH]->m_pItemList[i]->m_cEquipPos;
  cp++;
  *cp = (char)m_pClientList[iClientH]->m_bIsItemEquipped[i];
  cp++;
  sp  = (short *)cp;
  *sp = m_pClientList[iClientH]->m_pItemList[i]->m_sLevelLimit;
  cp += 2;
  *cp = m_pClientList[iClientH]->m_pItemList[i]->m_cGenderLimit;
  cp++;
  wp = (WORD *)cp;
  *wp = m_pClientList[iClientH]->m_pItemList[i]->m_wCurLifeSpan;
  cp += 2;
  wp = (WORD *)cp;
  *wp = m_pClientList[iClientH]->m_pItemList[i]->m_wWeight;
  cp += 2;
  sp  = (short *)cp;
  *sp = m_pClientList[iClientH]->m_pItemList[i]->m_sSprite;
  cp += 2;
  sp  = (short *)cp;
  *sp = m_pClientList[iClientH]->m_pItemList[i]->m_sSpriteFrame;
  cp += 2;
  *cp = m_pClientList[iClientH]->m_pItemList[i]->m_cItemColor; // v1.4
  cp++;
  *cp = (char)m_pClientList[iClientH]->m_pItemList[i]->m_sItemSpecEffectValue2; // v1.41 
  cp++;
  dwp =(DWORD *)cp;
  *dwp = m_pClientList[iClientH]->m_pItemList[i]->m_dwAttribute;
  cp += 4;
	}
	iTotalItemB = 0;
	for (i = 0; i < DEF_MAXBANKITEMS; i++)
  if (m_pClientList[iClientH]->m_pItemInBankList[i] != NULL) 
  	iTotalItemB++;

	*cp = iTotalItemB;
	cp++;

	for (i = 0; i < iTotalItemB; i++) {
  if (m_pClientList[iClientH]->m_pItemInBankList[i] == NULL) {
  	wsprintf(G_cTxt, "RequestInitDataHandler error: Client(%s) Bank-Item(%d)", m_pClientList[iClientH]->m_cCharName, i);
  	PutLogFileList(G_cTxt);

  	DeleteClient(iClientH, FALSE, TRUE, TRUE, FALSE);// added TRUE (4)
  	if(pBuffer != NULL) delete pBuffer;
  	return;
  }
  memcpy(cp, m_pClientList[iClientH]->m_pItemInBankList[i]->m_cName, 20);
  cp += 20;
  dwp  = (DWORD *)cp;
  *dwp = m_pClientList[iClientH]->m_pItemInBankList[i]->m_dwCount;
  cp += 4;
  *cp = m_pClientList[iClientH]->m_pItemInBankList[i]->m_cItemType;
  cp++;
  *cp = m_pClientList[iClientH]->m_pItemInBankList[i]->m_cEquipPos;
  cp++;
  sp  = (short *)cp;
  *sp = m_pClientList[iClientH]->m_pItemInBankList[i]->m_sLevelLimit;
  cp += 2;
  *cp = m_pClientList[iClientH]->m_pItemInBankList[i]->m_cGenderLimit;
  cp++;
  wp = (WORD *)cp;
  *wp = m_pClientList[iClientH]->m_pItemInBankList[i]->m_wCurLifeSpan;
  cp += 2;
  wp = (WORD *)cp;
  *wp = m_pClientList[iClientH]->m_pItemInBankList[i]->m_wWeight;
  cp += 2;
  sp  = (short *)cp;
  *sp = m_pClientList[iClientH]->m_pItemInBankList[i]->m_sSprite;
  cp += 2;
  sp  = (short *)cp;
  *sp = m_pClientList[iClientH]->m_pItemInBankList[i]->m_sSpriteFrame;
  cp += 2;
  *cp = m_pClientList[iClientH]->m_pItemInBankList[i]->m_cItemColor; // v1.4
  cp++;
  *cp = (char)m_pClientList[iClientH]->m_pItemInBankList[i]->m_sItemSpecEffectValue2; // v1.41 
  cp++;
  dwp =(DWORD *)cp;
  *dwp = m_pClientList[iClientH]->m_pItemInBankList[i]->m_dwAttribute;
  cp += 4;
	}

	for (i = 0; i < DEF_MAXMAGICTYPE; i++) {
  *cp = m_pClientList[iClientH]->m_cMagicMastery[i];
  cp++;
	}

	for (i = 0; i < DEF_MAXSKILLTYPE; i++) {
  *cp = m_pClientList[iClientH]->m_cSkillMastery[i];
  cp++;
	}

	iRet = m_pClientList[iClientH]->m_pXSock->iSendMsg(pBuffer, 6 + 1 + iTotalItemA*44 + iTotalItemB*43 + DEF_MAXMAGICTYPE + DEF_MAXSKILLTYPE);
	switch (iRet) {
	case DEF_XSOCKEVENT_QUENEFULL:
	case DEF_XSOCKEVENT_SOCKETERROR:
	case DEF_XSOCKEVENT_CRITICALERROR:
	case DEF_XSOCKEVENT_SOCKETCLOSED:
  DeleteClient(iClientH, TRUE, TRUE, TRUE, FALSE);// added TRUE (4)
  if(pBuffer != NULL) delete pBuffer;
  return;
	}

	dwp  = (DWORD *)(pBuffer + DEF_INDEX4_MSGID);
	*dwp = MSGID_RESPONSE_INITDATA;
	wp   = (WORD *)(pBuffer + DEF_INDEX2_MSGTYPE);
	*wp  = DEF_MSGTYPE_CONFIRM;

	cp = (char *)(pBuffer + DEF_INDEX2_MSGTYPE + 2);

	if (m_pClientList[iClientH]->m_bIsObserverMode == FALSE)
  bGetEmptyPosition(&m_pClientList[iClientH]->m_sX, &m_pClientList[iClientH]->m_sY, m_pClientList[iClientH]->m_cMapIndex);
	else GetMapInitialPoint(m_pClientList[iClientH]->m_cMapIndex, &m_pClientList[iClientH]->m_sX, &m_pClientList[iClientH]->m_sY);

	// ObjectID
	wp  = (WORD *)cp;
	*wp = iClientH;
	cp += 2;

	sp  = (short *)cp;
	*sp = m_pClientList[iClientH]->m_sX - 14 - 5;
	cp += 2;

	sp  = (short *)cp;
	*sp = m_pClientList[iClientH]->m_sY - 12 - 5;
	cp += 2;

	sp  = (short *)cp;
	*sp = m_pClientList[iClientH]->m_sType;
	cp += 2;

	sp  = (short *)cp;
	*sp = m_pClientList[iClientH]->m_sAppr1;
	cp += 2;

	sp  = (short *)cp;
	*sp = m_pClientList[iClientH]->m_sAppr2;
	cp += 2;

	sp  = (short *)cp;
	*sp = m_pClientList[iClientH]->m_sAppr3;
	cp += 2;

	sp  = (short *)cp;
	*sp = m_pClientList[iClientH]->m_sAppr4;
	cp += 2;

	ip  = (int *)cp; // v1.4
	*ip = m_pClientList[iClientH]->m_iApprColor;
	cp += 4;

	ip  = (int *)cp;
	*ip = m_pClientList[iClientH]->m_iStatus;
	cp += 4;// Original : 2

	memcpy(cp, m_pClientList[iClientH]->m_cMapName, 10);
	cp += 10;

	memcpy(cp, m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_cLocationName, 10);
	cp += 10;

	if (m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_bIsFixedDayMode == TRUE) 
  *cp = 1;
	else *cp = m_cDayOrNight;
	cp++;

	if (m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_bIsFixedDayMode == TRUE) 
  *cp = NULL;
	else *cp = m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_cWhetherStatus;
	cp++;

	// v1.4 Contribution
	ip = (int *)cp;
	*ip = m_pClientList[iClientH]->m_iContribution;
	cp += 4;

	if (m_pClientList[iClientH]->m_bIsObserverMode == FALSE) {
  m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->SetOwner(iClientH, DEF_OWNERTYPE_PLAYER, m_pClientList[iClientH]->m_sX, m_pClientList[iClientH]->m_sY);
	}

	// v1.41
	*cp = (char)m_pClientList[iClientH]->m_bIsObserverMode;
	cp++;
	// catches debug on player load up

	// v1.41 
	ip = (int *)cp;
	*ip = m_pClientList[iClientH]->m_iRating;
	cp += 4;

	// v1.44
	ip = (int *)cp;
	*ip = m_pClientList[iClientH]->m_iHP;
	cp += 4;

	*cp = cPoints;
	cp++;

	iSize = iComposeInitMapData(m_pClientList[iClientH]->m_sX - 10, m_pClientList[iClientH]->m_sY - 7, iClientH, cp );
	iRet = m_pClientList[iClientH]->m_pXSock->iSendMsg(pBuffer, 46 + iSize +4 +4 +1 +4 +4+3); // Zabuza fix
	switch (iRet) {
	case DEF_XSOCKEVENT_QUENEFULL:
	case DEF_XSOCKEVENT_SOCKETERROR:
	case DEF_XSOCKEVENT_CRITICALERROR:
	case DEF_XSOCKEVENT_SOCKETCLOSED:
  DeleteClient(iClientH, TRUE, TRUE, TRUE, FALSE);// added TRUE (4)
  if(pBuffer != NULL) delete pBuffer;
  return;
	}

	if(pBuffer != NULL) delete pBuffer;
	SendEventToNearClient_TypeA(iClientH, DEF_OWNERTYPE_PLAYER, MSGID_EVENT_LOG, DEF_MSGTYPE_CONFIRM, NULL, NULL, NULL);

	if ( (memcmp(m_pClientList[iClientH]->m_cLocation, "are", 3) == 0) && 
   (memcmp(m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_cLocationName, "elvine", 6) == 0)
   && (m_pClientList[iClientH]->m_iAdminUserLevel == 0) ) {
  
  m_pClientList[iClientH]->m_dwWarBeginTime = timeGetTime();
  m_pClientList[iClientH]->m_bIsWarLocation = TRUE;
  SetForceRecallTime(iClientH);
	}
	else if ( (memcmp(m_pClientList[iClientH]->m_cLocation, "elv", 3) == 0) && 
   (memcmp(m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_cLocationName, "aresden", 7) == 0)
   && (m_pClientList[iClientH]->m_iAdminUserLevel == 0)) {
  
  m_pClientList[iClientH]->m_dwWarBeginTime = timeGetTime();
  m_pClientList[iClientH]->m_bIsWarLocation = TRUE;

  SetForceRecallTime(iClientH);
	}
	else if (((memcmp(m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_cLocationName, "arejail", 7) == 0) || 
     (memcmp(m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_cLocationName, "elvjail", 7) == 0))
        && (m_pClientList[iClientH]->m_iAdminUserLevel == 0)) { 
  m_pClientList[iClientH]->m_bIsWarLocation = TRUE;
  m_pClientList[iClientH]->m_dwWarBeginTime = timeGetTime();

  if (m_pClientList[iClientH]->m_iTimeLeft_ForceRecall == 0) {
  	m_pClientList[iClientH]->m_iTimeLeft_ForceRecall = 20*5; 
  } else if (m_pClientList[iClientH]->m_iTimeLeft_ForceRecall > 20*5) {
  	m_pClientList[iClientH]->m_iTimeLeft_ForceRecall = 20*5;  // 5ºÐ
  }

	}
	else if ((m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_bIsFightZone == TRUE) &&
       (m_iFightzoneNoForceRecall == 0) && (m_pClientList[iClientH]->m_iAdminUserLevel == 0)) { 
  m_pClientList[iClientH]->m_dwWarBeginTime = timeGetTime();
  m_pClientList[iClientH]->m_bIsWarLocation = TRUE;
  GetLocalTime(&SysTime);
  m_pClientList[iClientH]->m_iTimeLeft_ForceRecall = 2*60*20 - ((SysTime.wHour%2)*20*60 + SysTime.wMinute*20) - 2*20; 
	}
	else
	{
  m_pClientList[iClientH]->m_bIsWarLocation = FALSE;	
  // v1.42
  m_pClientList[iClientH]->m_iTimeLeft_ForceRecall = 0;
  // 06/11/2004
  SetForceRecallTime(iClientH);
	}

	if ((m_pClientList[iClientH]->m_iTimeLeft_ForceRecall > 0) && (m_pClientList[iClientH]->m_bIsWarLocation == TRUE) && IsEnemyZone(iClientH)) {
  SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_FORCERECALLTIME,  m_pClientList[iClientH]->m_iTimeLeft_ForceRecall , NULL, NULL, NULL);
  //wsprintf(G_cTxt,"(!) Game Server Force Recall Time  %d (%d)min", m_pClientList[iClientH]->m_iTimeLeft_ForceRecall, m_pClientList[iClientH]->m_iTimeLeft_ForceRecall/20);
  //PutLogList(G_cTxt);
	}

	// No entering enemy shops
	int iMapside, iMapside2;

  	iMapside = iGetMapLocationSide(m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_cName);
  	if (iMapside > 3) iMapside2 = iMapside - 2;
  	else iMapside2 = iMapside;
  	m_pClientList[iClientH]->m_bIsInsideOwnTown = FALSE;
  	if ((m_pClientList[iClientH]->m_cSide != iMapside2) && (iMapside != 0)) {
    if ((iMapside <= 2) && (m_pClientList[iClientH]->m_iAdminUserLevel < 1)) {
    	if (m_pClientList[iClientH]->m_cSide != 0) {
      m_pClientList[iClientH]->m_dwWarBeginTime = timeGetTime();
      m_pClientList[iClientH]->m_bIsWarLocation = TRUE;
      m_pClientList[iClientH]->m_iTimeLeft_ForceRecall = 1;
      m_pClientList[iClientH]->m_bIsInsideOwnTown = TRUE;
    	}
    }
  	}
  	else{
    if (m_pMapList[ m_pClientList[iClientH]->m_cMapIndex ]->m_bIsFightZone == TRUE &&
    	m_iFightzoneNoForceRecall == FALSE && 
    	m_pClientList[iClientH]->m_iAdminUserLevel == 0) {
      m_pClientList[iClientH]->m_dwWarBeginTime = timeGetTime();
      m_pClientList[iClientH]->m_bIsWarLocation = TRUE;
      GetLocalTime(&SysTime);
      m_pClientList[iClientH]->m_iTimeLeft_ForceRecall = 2*60*20 - ((SysTime.wHour%2)*20*60 + SysTime.wMinute*20) - 2*20;
    	}
    else{
    	if (memcmp(m_pMapList[ m_pClientList[iClientH]->m_cMapIndex ]->m_cLocationName, "arejail", 7) == 0 ||
      memcmp(m_pMapList[ m_pClientList[iClientH]->m_cMapIndex ]->m_cLocationName, "elvjail", 7) == 0) {
      	if (m_pClientList[iClientH]->m_iAdminUserLevel == 0) {
        m_pClientList[iClientH]->m_bIsWarLocation = TRUE;
        m_pClientList[iClientH]->m_dwWarBeginTime = timeGetTime();
        if (m_pClientList[iClientH]->m_iTimeLeft_ForceRecall == 0)
        	m_pClientList[iClientH]->m_iTimeLeft_ForceRecall = 100;
        else if(m_pClientList[iClientH]->m_iTimeLeft_ForceRecall > 100)
        	m_pClientList[iClientH]->m_iTimeLeft_ForceRecall = 100;
      	}
      }
    }
  	}

  	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_SAFEATTACKMODE, NULL, NULL, NULL, NULL);
  	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_DOWNSKILLINDEXSET, m_pClientList[iClientH]->m_iDownSkillIndex, NULL, NULL, NULL);
  	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMPOSLIST, NULL, NULL, NULL, NULL);
  	
  	_SendQuestContents(iClientH);
  	_CheckQuestEnvironment(iClientH);

  	// v1.432
  	if (m_pClientList[iClientH]->m_iSpecialAbilityTime == 0) {
    SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_SPECIALABILITYENABLED, NULL, NULL, NULL, NULL);
  	}

  	if (m_bIsCrusadeMode == TRUE) {
    if (m_pClientList[iClientH]->m_dwCrusadeGUID == 0) {
    	m_pClientList[iClientH]->m_iCrusadeDuty = 0;
    	m_pClientList[iClientH]->m_iConstructionPoint = 0;
    	m_pClientList[iClientH]->m_dwCrusadeGUID = m_dwCrusadeGUID;
    }
    else if (m_pClientList[iClientH]->m_dwCrusadeGUID != m_dwCrusadeGUID) {
    	m_pClientList[iClientH]->m_iCrusadeDuty       = 0;
    	m_pClientList[iClientH]->m_iConstructionPoint = 0;
    	m_pClientList[iClientH]->m_iWarContribution   = 0;
    	m_pClientList[iClientH]->m_dwCrusadeGUID = m_dwCrusadeGUID;
    	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_CRUSADE, (DWORD)m_bIsCrusadeMode, NULL, 0, NULL, -1);  
    }
    m_pClientList[iClientH]->m_cVar = 1;
    SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_CRUSADE, (DWORD)m_bIsCrusadeMode, m_pClientList[iClientH]->m_iCrusadeDuty, NULL, NULL);
  	}
  	else if (m_bIsHeldenianMode == TRUE) {
    sSummonPoints = m_pClientList[iClientH]->m_iCharisma*300;
    if (sSummonPoints > DEF_MAXSUMMONPOINTS) sSummonPoints = DEF_MAXSUMMONPOINTS;
    if (m_pClientList[iClientH]->m_dwHeldenianGUID == NULL) {
    	m_pClientList[iClientH]->m_dwHeldenianGUID = m_dwHeldenianGUID;
    	m_pClientList[iClientH]->m_iConstructionPoint = sSummonPoints;
    }
    else if (m_pClientList[iClientH]->m_dwHeldenianGUID != m_dwHeldenianGUID) {
    	m_pClientList[iClientH]->m_iConstructionPoint = sSummonPoints;
    	m_pClientList[iClientH]->m_iWarContribution = 0;
    	m_pClientList[iClientH]->m_dwHeldenianGUID = m_dwHeldenianGUID;
    }
    m_pClientList[iClientH]->m_cVar = 2;
    if (m_bIsHeldenianMode == TRUE) {
    	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_CRUSADE, NULL, NULL, NULL, NULL);
    	if (m_bHeldenianInitiated == FALSE) {
      SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_HELDENIANSTART, NULL, NULL, NULL, NULL);
    	}
    	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_CONSTRUCTIONPOINT, m_pClientList[iClientH]->m_iConstructionPoint, m_pClientList[iClientH]->m_iWarContribution, NULL, NULL);
    	UpdateHeldenianStatus();
    }
  	}
  	else if ((m_pClientList[iClientH]->m_cVar == 1) && (m_pClientList[iClientH]->m_dwCrusadeGUID == m_dwCrusadeGUID)) {
    m_pClientList[iClientH]->m_iCrusadeDuty = 0;
    m_pClientList[iClientH]->m_iConstructionPoint = 0;
  	}
  	else {
    if (m_pClientList[iClientH]->m_dwCrusadeGUID == m_dwCrusadeGUID) {
    	if (m_pClientList[iClientH]->m_cVar == 1) {
      SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_CRUSADE, (DWORD)m_bIsCrusadeMode, NULL, NULL, NULL, -1);
    	}
    }
    else {
    	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_CRUSADE, (DWORD)m_bIsCrusadeMode, NULL, 0, NULL, -1);  
    	m_pClientList[iClientH]->m_dwCrusadeGUID = 0;
    	m_pClientList[iClientH]->m_iWarContribution   = 0;
    	m_pClientList[iClientH]->m_dwCrusadeGUID = 0;
    }
  	}

  	// v1.42
  	if (memcmp(m_pClientList[iClientH]->m_cMapName, "fightzone", 9) == 0) {
    wsprintf(G_cTxt, "Char(%s)-Enter(%s) Observer(%d)", m_pClientList[iClientH]->m_cCharName, m_pClientList[iClientH]->m_cMapName, m_pClientList[iClientH]->m_bIsObserverMode);
    PutLogEventFileList(G_cTxt);
  	}

  	if (m_bIsHeldenianMode == TRUE) SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_HELDENIANTELEPORT, NULL, NULL, NULL, NULL, NULL);  
  	if (m_bHeldenianInitiated == TRUE) SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_HELDENIANSTART, NULL, NULL, NULL, NULL, NULL);  

  	// Crusade
  	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_CONSTRUCTIONPOINT, m_pClientList[iClientH]->m_iConstructionPoint, m_pClientList[iClientH]->m_iWarContribution, 1, NULL);
  	//Fix Sprite Bug
  	//  	SendEventToNearClient_TypeA(iClientH, DEF_OWNERTYPE_PLAYER, MSGID_EVENT_MOTION, DEF_OBJECTNULLACTION, NULL, NULL, NULL);
  	//Gizon point lefT???
  	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_GIZONITEMUPGRADELEFT, m_pClientList[iClientH]->m_iGizonItemUpgradeLeft, NULL, NULL, NULL);

  	if ((m_bIsApocalypseMode == TRUE) && (m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_bIsApocalypseMap == TRUE)) {
    RequestTeleportHandler(iClientH, "1   ");
  	}

  	if (m_bIsApocalypseMode == TRUE) {
    SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_APOCGATESTARTMSG, NULL, NULL, NULL, NULL, NULL);
  	}
  }
	}

Code: Select all

In game.h


	void RequestInitDataHandler(int iClientH, char * pData, char cKey, BOOL bIsResurrected);




Code: Select all

/*********************************************************************************************************************
*  void CGame::RequestInitPlayerHandler(int iClientH, char * pData, char cKey)        	
*  DESCRIPTION  	:: player login varifier                
*  LAST_UPDATED  	:: 8/27/2005 10;46 PM EvilHit            	
*  RETURN_VALUE  	:: void                    	
*  NOTES    ::	- expanded DeleteClient and bSendMsgToLS          	
*  MODIFICATION  	:: none                    	
**********************************************************************************************************************/
void CGame::RequestInitPlayerHandler(int iClientH, char * pData, char cKey)
{
 register int i;
 char * cp, cCharName[11], cAccountName[11], cAccountPassword[11], cTxt[120];
 BOOL bIsObserverMode;
	
	if (m_pClientList[iClientH] == NULL) return;
	if (m_pClientList[iClientH]->m_bIsInitComplete == TRUE) return;

	ZeroMemory(cCharName, sizeof(cCharName));
	ZeroMemory(cAccountName, sizeof(cAccountName));
	ZeroMemory(cAccountPassword, sizeof(cAccountPassword));
	ZeroMemory(m_pClientList[iClientH]->m_cCharName, sizeof(m_pClientList[iClientH]->m_cCharName));
	ZeroMemory(m_pClientList[iClientH]->m_cAccountName, sizeof(m_pClientList[iClientH]->m_cAccountName));
	ZeroMemory(m_pClientList[iClientH]->m_cAccountPassword, sizeof(m_pClientList[iClientH]->m_cAccountPassword));

	cp = (char *)(pData + DEF_INDEX2_MSGTYPE + 2);

	memcpy(cCharName, cp, 10);
	cp += 10;

	ZeroMemory(cTxt, sizeof(cTxt)); // v1.4
	memcpy(cTxt, cCharName, 10);
	m_Misc.bDecode(cKey, cTxt);
	ZeroMemory(cCharName, sizeof(cCharName));
	memcpy(cCharName, cTxt, 10);

	if (strlen(cTxt) == 0) PutLogList("RIPH - cTxt: Char NULL!");

	memcpy(cAccountName, cp, 10);
	cp += 10;
	
	ZeroMemory(cTxt, sizeof(cTxt)); 
	memcpy(cTxt, cAccountName, 10);
	m_Misc.bDecode(cKey, cTxt);
	ZeroMemory(cAccountName, sizeof(cAccountName));
	memcpy(cAccountName, cTxt, 10);

	memcpy(cAccountPassword, cp, 10);
	cp += 10;

	ZeroMemory(cTxt, sizeof(cTxt));
	memcpy(cTxt, cAccountPassword, 10);
	m_Misc.bDecode(cKey, cTxt);
	ZeroMemory(cAccountPassword, sizeof(cAccountPassword));
	memcpy(cAccountPassword, cTxt, 10);
	
	bIsObserverMode = (BOOL)*cp;
	cp++;

	for (i = 1; i < DEF_MAXCLIENTS; i++)
	if ((m_pClientList[i] != NULL) && (iClientH != i) && (memcmp(m_pClientList[i]->m_cAccountName, cAccountName, 10) == 0)) {
  if (memcmp(m_pClientList[i]->m_cAccountPassword, cAccountPassword, 10) == 0) { 
  	wsprintf(G_cTxt, "<%d> Duplicate account player! Deleted with data save : CharName(%s) AccntName(%s) IP(%s)", i, m_pClientList[i]->m_cCharName, m_pClientList[i]->m_cAccountName, m_pClientList[i]->m_cIPaddress);
  	PutLogList(G_cTxt);
  	DeleteClient(i, TRUE, TRUE, FALSE);
  }
  else {
  	memcpy(m_pClientList[iClientH]->m_cCharName, cCharName, 10);
  	memcpy(m_pClientList[iClientH]->m_cAccountName, cAccountName, 10);
  	memcpy(m_pClientList[iClientH]->m_cAccountPassword, cAccountPassword, 10);
  	DeleteClient(iClientH, FALSE, FALSE, FALSE);
  	return;
  }
	}	
	
	for (i = 1; i < DEF_MAXCLIENTS; i++)
	if ((m_pClientList[i] != NULL) && (iClientH != i) && (memcmp(m_pClientList[i]->m_cCharName, cCharName, 10) == 0)) {
  if (memcmp(m_pClientList[i]->m_cAccountPassword, cAccountPassword, 10) == 0) { 
  	wsprintf(G_cTxt, "<%d> Duplicate player! Deleted with data save : CharName(%s) IP(%s)", i, m_pClientList[i]->m_cCharName, m_pClientList[i]->m_cIPaddress);
  	PutLogList(G_cTxt);
  	DeleteClient(i, TRUE, TRUE, FALSE);	
  }
  else {
  	memcpy(m_pClientList[iClientH]->m_cCharName, cCharName, 10);
  	memcpy(m_pClientList[iClientH]->m_cAccountName, cAccountName, 10);
  	memcpy(m_pClientList[iClientH]->m_cAccountPassword, cAccountPassword, 10);
  	DeleteClient(iClientH, FALSE, FALSE, TRUE, FALSE);
  	return;
  }
	}

	memcpy(m_pClientList[iClientH]->m_cCharName, cCharName, 10);
	memcpy(m_pClientList[iClientH]->m_cAccountName, cAccountName, 10);
	memcpy(m_pClientList[iClientH]->m_cAccountPassword, cAccountPassword, 10);
	m_pClientList[iClientH]->m_bIsObserverMode = bIsObserverMode;
	bSendMsgToLS(MSGID_REQUEST_PLAYERDATA, iClientH, TRUE);
}
locobans
Outpost Junkie
Posts: 2264
Joined: Tue Jul 13, 2004 3:51 am
Location: Behind You
Contact:

Post by locobans »

I don't understand...what this modified RequestInitDataHandler function do...is erm...

added temporary position list to stop items from scrambling on enter zone
added bIsResurrected to save process time

And few others check...but does that have anything to do with my problem? :unsure:

Between thanks for the bold text fix.
QUOTE (ADDKiD @ Dec 1 2006, 4:01 PM) <br>You guys make me laugh alot, half the shit I say, is bullshit...<br><br><img src='http://img485.imageshack.us/img485/492/banssig1ng.gif' border='0' alt='user posted image' /><br><br><b>I see no changes at all, wake up in the morning and ask myself...<br>Is life worth living? Should I blast myself?</b><br><br><b><a href='http://2paclegacy.com' target='_blank'>2PacLegacy.com</a></b>
EvilHit
Loyal fan
Posts: 356
Joined: Sun Jan 16, 2005 3:20 am

Post by EvilHit »

i donno it could
Jensen
Loyal fan
Posts: 300
Joined: Tue Aug 02, 2005 7:40 am
Location: Illinois, USA
Contact:

Post by Jensen »

this snippet just strips most parts, you can edit it easily enough for your purpose

Code: Select all

else if(memcmp(token, "noarmor", 7) == 0)
  	{
    m_pMapList[cMapIndex]->m_bOptNoArmor = TRUE;
 
    // remove armor from all
    for (i = 0; i < DEF_MAXCLIENTS; i++) 
    	if ((m_pClientList[i] != NULL) && (m_pClientList[i]->m_cMapIndex == cMapIndex) && (m_pClientList[i]->m_iAdminUserLevel == 0))
      for (iStripPos=1; iStripPos<6; iStripPos++) {
      	m_pClientList[i]->m_sItemEquipmentStatus[iStripPos];
      	iStrippedItem = m_pClientList[i]->m_sItemEquipmentStatus[iStripPos];
      	if(iStrippedItem != -1) {
        SendNotifyMsg(NULL, i, DEF_NOTIFY_ITEMRELEASED, iStripPos, iStrippedItem, NULL, NULL);
        ReleaseItemHandler(i, iStrippedItem, TRUE);
      	}
      }
  	}
this is the part that keeps them from re-equiping it, i know there are more elegant ways to write it but this works

Code: Select all

BOOL CGame::bEquipItemHandler(int iClientH, short sItemIndex, BOOL bNotify)
find and insert, the code on both sides is just reference to where i have it

Code: Select all

	if (iGetItemWeight(m_pClientList[iClientH]->m_pItemList[sItemIndex], 1) > m_pClientList[iClientH]->m_iStr*100) return FALSE;

	cEquipPos = m_pClientList[iClientH]->m_pItemList[sItemIndex]->m_cEquipPos;

	if ((cEquipPos == DEF_EQUIPPOS_BODY) || (cEquipPos == DEF_EQUIPPOS_LEGGINGS) ||
  (cEquipPos == DEF_EQUIPPOS_ARMS) || (cEquipPos == DEF_EQUIPPOS_HEAD) ||
  (cEquipPos == DEF_EQUIPPOS_PANTS) || (cEquipPos == DEF_EQUIPPOS_BACK)) {
  if (bCheckMapOptions(iClientH, DEF_MAPOPTION_NOARMOR) == FALSE) {
  	SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_ITEMRELEASED, m_pClientList[iClientH]->m_pItemList[sItemIndex]->m_cEquipPos, sItemIndex, NULL, NULL);
  	ReleaseItemHandler(iClientH, m_pClientList[iClientH]->m_sItemEquipmentStatus[ cEquipPos ], TRUE);
  	return FALSE;
  }
  	switch (m_pClientList[iClientH]->m_pItemList[sItemIndex]->m_sItemEffectValue4) {


part of my rules code
credit for this one goes to Hyper, to bad i havnt seen him around hb anymore.

seeing as how i didnt write it and he didnt leave any copyright comments or anything i can share it still

hope this helps you out
-><-
locobans
Outpost Junkie
Posts: 2264
Joined: Tue Jul 13, 2004 3:51 am
Location: Behind You
Contact:

Post by locobans »

Thanks a lot Jensen I'll take this as reference B)
QUOTE (ADDKiD @ Dec 1 2006, 4:01 PM) <br>You guys make me laugh alot, half the shit I say, is bullshit...<br><br><img src='http://img485.imageshack.us/img485/492/banssig1ng.gif' border='0' alt='user posted image' /><br><br><b>I see no changes at all, wake up in the morning and ask myself...<br>Is life worth living? Should I blast myself?</b><br><br><b><a href='http://2paclegacy.com' target='_blank'>2PacLegacy.com</a></b>
Post Reply