Gail + Angels

Discussion about Helbreath Server Files.
Post Reply
draco86
Regular
Posts: 57
Joined: Wed Jul 05, 2006 8:14 pm

Post by draco86 »

I have problem with recieve Angels from Gail. When I try get item --> lost
In HG "recieved unknow message... 0x0FC9421E", I used code from Snoopy . In source i have:

Code: Select all

#define DEF_REQUEST_ANGEL	0x0FC9421E
 and 

case DEF_REQUEST_ANGEL: // Angels by Snoopy...
       m_pClientList[iClientH]->m_cMsgCount[1] +=1;
       GetAngelHandler(iClientH, pData, dwMsgSize);
       break;
what else i need?
draco86
Regular
Posts: 57
Joined: Wed Jul 05, 2006 8:14 pm

Post by draco86 »

FIXED!

Now I have another problem. When I recieve Angelic my Majestic Point dont decrease :(

And Angels Should be avabile only for max lvl's

Code: Select all

void CGame::GetAngelHandler(int iClientH, char * pData, DWORD dwMsgSize)
{
char  *cp, cData[256], cTmpName[21];
int   iAngel, iItemNbe;
class CItem * pItem;
int   iRet, iEraseReq;
short * sp;
WORD  * wp;
int   * ip;
DWORD * dwp;
if (m_pClientList[iClientH] == NULL)      return;
if (m_pClientList[iClientH]->m_bIsInitComplete == FALSE) return;
if (_iGetItemSpaceLeft(iClientH) == 0)
{ SendItemNotifyMsg(iClientH, DEF_NOTIFY_CANNOTCARRYMOREITEM, NULL, NULL);
 return;
}
if (m_pClientList[iClientH]->m_iGizonItemUpgradeLeft <= 20)
   { SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_CANNOTCARRYMOREITEM, NULL, NULL, NULL);
    return;
   }
cp = (char *)(pData + DEF_INDEX2_MSGTYPE + 2);
ZeroMemory(cTmpName, sizeof(cTmpName));
strcpy(cTmpName, cp);
cp += 20;
ip = (int *)cp;
iAngel = (int) *ip; // 0x00 l a i
cp += 2;
wsprintf(G_cTxt, "PC(%s) obtained an Angel (%d).   %s(%d %d)"
  , m_pClientList[iClientH]->m_cCharName
  , iAngel
  , m_pClientList[iClientH]->m_cMapName
  , m_pClientList[iClientH]->m_sX
  , m_pClientList[iClientH]->m_sY);
PutLogList(G_cTxt);
switch (iAngel) {
case 1: // STR
 iItemNbe = 908;
 break;
case 2: // DEX
 iItemNbe = 909;
 break;
case 3: // INT
 iItemNbe = 910;
 break;
case 4: // MAG
 iItemNbe = 911;
 break;
default:
 PutLogList("Gail asked to create a wrong item!");
 break;
}
pItem = NULL;
pItem = new class CItem;
if (pItem == NULL) return;
if ((_bInitItemAttr(pItem, iItemNbe) == TRUE))
{ pItem->m_sTouchEffectType = DEF_ITET_UNIQUE_OWNER;
 pItem->m_sTouchEffectValue1 = m_pClientList[iClientH]->m_sCharIDnum1;
 pItem->m_sTouchEffectValue2 = m_pClientList[iClientH]->m_sCharIDnum2;
 pItem->m_sTouchEffectValue3 = m_pClientList[iClientH]->m_sCharIDnum3;
 if (_bAddClientItemList(iClientH, pItem, &iEraseReq) == TRUE)
 { ZeroMemory(cData, sizeof(cData));
  dwp  = (DWORD *)(cData + DEF_INDEX4_MSGID);
  *dwp = MSGID_NOTIFY;
  wp   = (WORD *)(cData + DEF_INDEX2_MSGTYPE);
  *wp  = DEF_NOTIFY_ITEMOBTAINED;    
  cp = (char *)(cData + DEF_INDEX2_MSGTYPE + 2);    
  *cp = 1;
  cp++;    
  memcpy(cp, pItem->m_cName, 20);
  cp += 20;    
  dwp  = (DWORD *)cp;
  *dwp = pItem->m_dwCount;
  cp += 4;    
  *cp = pItem->m_cItemType;
  cp++;    
  *cp = pItem->m_cEquipPos;
  cp++;    
  *cp = (char)0;
  cp++;    
  sp  = (short *)cp;
  *sp = pItem->m_sLevelLimit;
  cp += 2;    
  *cp = pItem->m_cGenderLimit;
  cp++;    
  wp = (WORD *)cp;
  *wp = pItem->m_wCurLifeSpan;
  cp += 2;    
  wp = (WORD *)cp;
  *wp = pItem->m_wWeight;
  cp += 2;    
  sp  = (short *)cp;
  *sp = pItem->m_sSprite;
  cp += 2;    
  sp  = (short *)cp;
  *sp = pItem->m_sSpriteFrame;
  cp += 2;
  *cp = pItem->m_cItemColor;
  cp++;
  *cp = (char)pItem->m_sItemSpecEffectValue2; // v1.41
  cp++;    
  dwp = (DWORD *)cp;
  *dwp = pItem->m_dwAttribute;
  cp += 4;
  if (iEraseReq == 1) delete pItem;    
  iRet = m_pClientList[iClientH]->m_pXSock->iSendMsg(cData, 53);
  switch (iRet) {
  case DEF_XSOCKEVENT_QUENEFULL:
  case DEF_XSOCKEVENT_SOCKETERROR:
  case DEF_XSOCKEVENT_CRITICALERROR:
  case DEF_XSOCKEVENT_SOCKETCLOSED:
   DeleteClient(iClientH, TRUE, TRUE);
   break;
  }
 }else
 { m_pMapList[ m_pClientList[iClientH]->m_cMapIndex ]->bSetItem(m_pClientList[iClientH]->m_sX,
                                                            m_pClientList[iClientH]->m_sY, pItem);  
  SendEventToNearClient_TypeB(MSGID_EVENT_COMMON, DEF_COMMONTYPE_ITEMDROP, m_pClientList[iClientH]->m_cMapIndex,
                           m_pClientList[iClientH]->m_sX, m_pClientList[iClientH]->m_sY,  
                           pItem->m_sSprite, pItem->m_sSpriteFrame, pItem->m_cItemColor); // v1.4  
  dwp  = (DWORD *)(cData + DEF_INDEX4_MSGID);
  *dwp = MSGID_NOTIFY;
  wp   = (WORD *)(cData + DEF_INDEX2_MSGTYPE);
  *wp  = DEF_NOTIFY_CANNOTCARRYMOREITEM;    
  iRet = m_pClientList[iClientH]->m_pXSock->iSendMsg(cData, 6);
  switch (iRet) {
  case DEF_XSOCKEVENT_QUENEFULL:
  case DEF_XSOCKEVENT_SOCKETERROR:
  case DEF_XSOCKEVENT_CRITICALERROR:
  case DEF_XSOCKEVENT_SOCKETCLOSED:
   DeleteClient(iClientH, TRUE, TRUE);
   break;
 } }
}else
{ delete pItem;
 pItem = NULL;
} }

draco86
Regular
Posts: 57
Joined: Wed Jul 05, 2006 8:14 pm

Post by draco86 »

Now all working, but Angel no shining :( FU*CK C++
Crossfade
Loyal fan
Posts: 354
Joined: Sun Mar 20, 2005 5:55 pm

Post by Crossfade »

draco86 wrote: Now all working, but Angel no shining :( FU*CK C++
there is a code for the shining released on forums somewhere, find it
draco86
Regular
Posts: 57
Joined: Wed Jul 05, 2006 8:14 pm

Post by draco86 »

Yeah I know. 1st time when added angels all worked, but i had problems and all my work gone to trash. Now Angels dont shining :(
Post Reply