GameServer 1.00.90

Page 81 of 86 FirstFirst ... 31717374757677787980818283848586 LastLast
Results 2,001 to 2,025 of 2143
  1. #2001
    Apprentice jc97 is offline
    MemberRank
    Apr 2009 Join Date
    10Posts

    Re: GameServer 1.00.90

    Did you try with dataserver from season 6 files like encgames or titanstech? Because i have the same codes you have
    in a dll but it disconnects me and i didn´t try with dataserver.

  2. #2002
    C/C++,PHP,HTML,Java,ASM zasmqniq is offline
    MemberRank
    Jan 2009 Join Date
    BulgariaLocation
    435Posts

    Re: GameServer 1.00.90

    yeah same here!

  3. #2003
    Member access is offline
    MemberRank
    Jan 2009 Join Date
    86Posts

    Re: GameServer 1.00.90

    how to create charset for new wings?

  4. #2004
    Mulegend Server Mulegend is offline
    MemberRank
    May 2006 Join Date
    Montevideo - UruguayLocation
    461Posts

    Re: GameServer 1.00.90

    Acces, use search

  5. #2005
    Member access is offline
    MemberRank
    Jan 2009 Join Date
    86Posts

    Re: GameServer 1.00.90

    it didnt help me.

  6. #2006
    Enthusiast willerson is offline
    MemberRank
    Aug 2008 Join Date
    48Posts

    Re: GameServer 1.00.90

    to fix dataserver:

    create new call to create character on start in dataserver, and fix limit of class, thats it.

  7. #2007
    Everything is a joke. duracel is offline
    MemberRank
    Sep 2005 Join Date
    442Posts

    Re: GameServer 1.00.90

    Don't really know if its correct or not..its my 1st time trying to decompile something xD.Used as base deathways gs .18 src.
    JGPGetCharList from gs.90 and someother things added like miniwings and pets.

    PHP Code:
    void JGPGetCharList(unsigned char lpRecv
    {
        
    SDHP_CHARLISTCOUNT lpCount = (SDHP_CHARLISTCOUNT *)lpRecv;
        
    SDHP_CHARLIST lpCL;
        
    char szId[MAX_ACCOUNT_LEN+1];
        
    BYTE sendbuf[256];
        
    int lOfs 0;
        
    int lsOfs sizeof(SDHP_CHARLISTCOUNT);
        
    int aIndex lpCount->Number;
        
    BYTE index;
        
    PMSG_CHARLISTCOUNT pCLCount;    // Packet Char List Count
        
    PMSG_CHARLIST pCList;
        
    WORD TempInventory[12];

        
    pCLCount.h.0xC1;
        
    pCLCount.h.headcode 0xF3;
        
    pCLCount.subcode 0x00;
        
    pCLCount.Count lpCount->Count;

        
    szId[MAX_ACCOUNT_LEN] = 0;
        
    memcpy(szIdlpCount->AccountIdMAX_ACCOUNT_LEN);

      if ( ::
    gObjIsAccontConnect(aIndexszId) == FALSE )
      {

          
    LogAddC(2lMsg.Get(MSGGET(1165)), gObj[aIndex].AccountIDszId);
          
    CloseClient(aIndex);
          
    /*
          Log.outNormal("Requested character list doesn't match the user. (%s)%s", gObj[aIndex].AccountID, szId);
          CloseClient(aIndex);
          */
            
    return;
      }
        
    gObj[aIndex].Magumsa lpCount->Magumsa;
        
    pCLCount.MaxClass gObj[aIndex].Magumsa+3;
        
    pCLCount.MoveCnt lpCount->MoveCnt;

        
    memset(sendbuf0sizeof(sendbuf));
        
    lOfs += sizeof(PMSG_CHARLISTCOUNT);

        if ( 
    pCLCount.Count )
        {
          for ( 
    int i 0pCLCount.Count; ++)
          {
            
    memset(&pCList0sizeof(pCList));
            
    lpCL = (SDHP_CHARLIST *)&lpRecv[lsOfs];
            
    pCList.Index lpCL->Index;
            
    pCList.Level lpCL->Level;
            
    pCList.CtlCode lpCL->CtlCode;
            
    pCList.btGuildStatus lpCL->btGuildStatus;

            if ( 
    gObj[aIndex].m_cAccountItemBlock != )
                    
    pCList.CtlCode |= 0x10;    // Set Block Item

            
    memcpy(pCList.NamelpCL->NameMAX_ACCOUNT_LEN);
            
    pCList.CharSet[CS_CLASS] = CS_GET_CLASS(lpCL->Class);
            
    int changeup CS_GET_CHANGEUP(lpCL->Class);
            
    pCList.CharSet[CS_CLASS] |= CS_SET_CHANGEUP(changeup); //pCList.CharSet[CS_CLASS] |= 0x10 * v4 & 0x10; 
            
    pCList.CharSet[CS_CLASS] |= CS_GET_CLASS2(changeup); //Made up by me.


            
    pCList.CharSet[9] = 0;

            if ( 
    lpCL->DbVersion == //////////////////////////////DB Case 0///////////////////////////////////////////////////////////////////
            
    {
                    if ( 
    lpCL->dbInventory[0] != (BYTE)-)
                    {
                        
    WORD wItemCode lpCL->dbInventory[0] / MAX_TYPE_ITEMS MAX_SUBTYPE_ITEMS lpCL->dbInventory[0] % MAX_TYPE_ITEMS;
                        
    pCList.CharSet[1] = wItemCode;
                        
    pCList.CharSet[12] |= DBI_GET_TYPE(wItemCode);
                    }
                    else
                    {
                        
    pCList.CharSet[1] = -1;
                        
    pCList.CharSet[12] |= 0xF0;
                    }

                    if ( 
    lpCL->dbInventory[2] != (BYTE)-)
                    {
                        
    WORD wItemCode lpCL->dbInventory[2] / MAX_TYPE_ITEMS MAX_SUBTYPE_ITEMS lpCL->dbInventory[2] % MAX_TYPE_ITEMS;
                        
    pCList.CharSet[2] = wItemCode;
                        
    pCList.CharSet[13] |= DBI_GET_TYPE(wItemCode);
                    }
                    else
                    {
                        
    pCList.CharSet[2] = -1;
                        
    pCList.CharSet[13] |= 0xF0;
                    }

                    if ( 
    lpCL->dbInventory[4] == (BYTE)-)
                    {
                        
    index 0xF0;
                    }
                    else
                    {
                        
    index = (lpCL->dbInventory[4] & 0x0F) * MAX_TYPE_ITEMS;
                    }


                    if ( 
    lpCL->dbInventory[6] == (BYTE)-)
                    {
                        
    index |= 0x0F;
                    }
                    else
                    {
                        
    index |= (lpCL->dbInventory[6] & 0x0F);
                    }

                
    pCList.CharSet[3] = index;

                    if ( 
    lpCL->dbInventory[8] == (BYTE)-)
                    {
                        
    index 0xF0;
                    }
                    else
                    {
                        
    index = (lpCL->dbInventory[8] & 0x0F) * MAX_TYPE_ITEMS;
                    }

                    if ( 
    lpCL->dbInventory[10] == (BYTE)-)
                    {
                        
    index |= 0x0F;
                    }
                    else
                    {
                        
    index |= (lpCL->dbInventory[10] & 0x0F);
                    }

                
    pCList.CharSet[4] = index;

                    if ( 
    lpCL->dbInventory[12] == (BYTE)-)
                    {
                        
    index 0xF0;
                    }
                    else
                    {
                        
    index = (lpCL->dbInventory[12] & 0x0F) * MAX_TYPE_ITEMS;
                    }

                    if ( 
    lpCL->dbInventory[14] == (BYTE)-)
                    {
                        
    index |= 0x0C;
                    }
                    else
                    {
                        
    index |= ((lpCL->dbInventory[14] & 0x03) * );
                    }

                    if ( 
    lpCL->dbInventory[16] == (BYTE)-)
                    {
                        
    index |= 0x03;
                    }
                    else
                    {
                        
    index |= (lpCL->dbInventory[16] & 0x03);
                    }

                
    pCList.CharSet[5] = index;

                    if ( 
    lpCL->dbInventory[4] == (BYTE)-)
                        
    pCList.CharSet[9] = 0x80;

                    if ( 
    lpCL->dbInventory[6] == (BYTE)-)
                        
    pCList.CharSet[9] |= 0x40;

                    if ( 
    lpCL->dbInventory[8] == (BYTE)-)
                        
    pCList.CharSet[9] |= 0x20;

                    if ( 
    lpCL->dbInventory[10] == (BYTE)-)
                        
    pCList.CharSet[9] |= 0x10;

                    if ( 
    lpCL->dbInventory[12] == (BYTE)-)
                        
    pCList.CharSet[9] |= 0x08;


                    
    int levelindex LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[1]));
                    
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[3])) << 3;
                    
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[5])) << 6;
                    
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[7])) << 9;
                    
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[9])) << 12;
                    
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[11])) << 15;
                    
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[13])) << 18;
              
                    
    pCList.CharSet[6] = levelindex >> 16 0xFF;
                    
    pCList.CharSet[7] = (levelindex >> 8) & 0xFF;
                    
    pCList.CharSet[8] = (levelindex ) & 0xFF;
                    
    pCList.CharSet[10] = 0;
                    
    pCList.CharSet[11] = 0;

                    if ( 
    lpCL->dbInventory[4] == (BYTE)-)
                        
    pCList.CharSet[13] |= 0x0F;

                    if ( 
    lpCL->dbInventory[8] == (BYTE)-)
                        
    pCList.CharSet[14] |= 0xF0;

                    if ( 
    lpCL->dbInventory[10] == (BYTE)-)
                        
    pCList.CharSet[14] |= 0x0F;

                    if ( 
    lpCL->dbInventory[12] == (BYTE)-)
                        
    pCList.CharSet[15] |= 0xF0;

                    if ( 
    lpCL->dbInventory[14] == (BYTE)-)
                        
    pCList.CharSet[15] |= 0x0F;

                    
    pCList.CharSet[16] = 0;
                    
    pCList.CharSet[17] = 0;
            }
            else if ( 
    lpCL->DbVersion <= //////////////////////////////////////////////////////////DB Case less or = 2////////////////////////
            
    {
                    if ( 
    lpCL->dbInventory[0] != (BYTE)-)
                    {
                        
    TempInventory[0] = (lpCL->dbInventory[0] / 32) * MAX_SUBTYPE_ITEMS lpCL->dbInventory[0] % 32;
                    }
                    else
                    {
                        
    TempInventory[0] = -1;
                    }
                    
    // ---------------------------------------
                    
    if ( lpCL->dbInventory[3] != (BYTE)-)
                    {
                        
    TempInventory[1] = (lpCL->dbInventory[3] / 32) * MAX_SUBTYPE_ITEMS lpCL->dbInventory[3] % 32;
                    }
                    else
                    {
                        
    TempInventory[1] = -1;
                    }
                    
    // ---------------------------------------
                    
    if ( lpCL->dbInventory[6] == (BYTE)-&& (lpCL->dbInventory[8] & 0x80) == 0x80)
                    {
                        
    TempInventory[2] = -1;
                    }
                    else
                    {
                        
    TempInventory[2] = (lpCL->dbInventory[6] + ((lpCL->dbInventory[8] >> 7) <<  8) ) % 32;
                    }
                    
    // ---------------------------------------
                    
    if ( lpCL->dbInventory[9] == (BYTE)-&& (lpCL->dbInventory[11] & 0x80) == 0x80)
                    {
                        
    TempInventory[3] = -1;
                    }
                    else
                    {
                        
    TempInventory[3] = (lpCL->dbInventory[9] + ((lpCL->dbInventory[11] >> 7) <<  8) ) % 32;
                    }
                    
    // ---------------------------------------
                    
    if ( lpCL->dbInventory[12] == (BYTE)-&& (lpCL->dbInventory[14] & 0x80) == 0x80)
                    {
                        
    TempInventory[4] = 0x1F;
                    }
                    else
                    {
                        
    TempInventory[4] = (lpCL->dbInventory[12] + ((lpCL->dbInventory[14] >> 7) <<  8) ) % 32;
                    }
                    
    // ---------------------------------------
                    
    if ( lpCL->dbInventory[15] == (BYTE)-&& (lpCL->dbInventory[17] & 0x80) == 0x80)
                    {
                        
    TempInventory[5] = 0x1F;
                    }
                    else
                    {
                        
    TempInventory[5] = (lpCL->dbInventory[15] + ((lpCL->dbInventory[17] >> 7) <<  8) ) % 32;
                    }
                    
    // ---------------------------------------
                    
    if ( lpCL->dbInventory[18] == (BYTE)-&& (lpCL->dbInventory[20] & 0x80) == 0x80)
                    {
                        
    TempInventory[6] = 0x1F;
                    }
                    else
                    {
                        
    TempInventory[6] = (lpCL->dbInventory[18] + ((lpCL->dbInventory[20] >> 7) <<  8) ) % 32;
                    }
                    
    // ---------------------------------------
                    
    if ( lpCL->dbInventory[21] == (BYTE)-&& (lpCL->dbInventory[23] & 0x80) == 0x80)
                    {
                        
    TempInventory[7] = 0x1F;
                    }
                    else
                    {
                        
    TempInventory[7] = (lpCL->dbInventory[21] + ((lpCL->dbInventory[23] >> 7) <<  8) ) % 32;
                    }
                    
    // ---------------------------------------
                    
    if ( lpCL->dbInventory[24] == (BYTE)-&& (lpCL->dbInventory[26] & 0x80) == 0x80)
                    {
                        
    TempInventory[8] = 0x1F;
                    }
                    else
                    {
                        
    TempInventory[8] = (lpCL->dbInventory[24] + ((lpCL->dbInventory[26] >> 7) <<  8) ) % 32;
                    }
                    
    // ---------------------------------------
                    
    if ( TempInventory[0] != (WORD)-)
                    {
                        
    pCList.CharSet[1] = TempInventory[0];
                        
    pCList.CharSet[12] |= DBI_GET_TYPE(TempInventory[0]);
                    }
                    else
                    {
                        
    pCList.CharSet[1] = -1;
                        
    pCList.CharSet[12] |= 0xF0;
                    }

                    if ( 
    TempInventory[1] != (WORD)-)
                    {
                        
    pCList.CharSet[2] = TempInventory[1];
                        
    pCList.CharSet[13] |= DBI_GET_TYPE(TempInventory[1]);
                    }
                    else
                    {
                        
    pCList.CharSet[2] = -1;
                        
    pCList.CharSet[13] |= 0xF0;
                    }

                    
    pCList.CharSet[3] = TempInventory[2] % MAX_TYPE_ITEMS MAX_TYPE_ITEMS TempInventory[3] % MAX_TYPE_ITEMS;
                    
    pCList.CharSet[4] = TempInventory[4] % MAX_TYPE_ITEMS MAX_TYPE_ITEMS TempInventory[5] % MAX_TYPE_ITEMS;
                    
    index TempInventory[6] % MAX_TYPE_ITEMS MAX_TYPE_ITEMS;

                    if (
    TempInventory[7]== 0x1F )
                    {
                        
    index |= 0x0C;
                    }
                    else
                    {
                        
    index |= (TempInventory[7] & 0x03) * 4;
                    }

                    if ( (
    TempInventory[8] & 0x04) == )
                    {
                        if ( 
    TempInventory[8] == 0x1F )
                        {
                            
    index |= 0x03;
                        }
                        else
                        {
                            
    index |= TempInventory[8] & 0x03;
                        }
                    }
                    else
                    {
                        
    index |= 0x03;
                    }

                    
    pCList.CharSet[5] = index;
                    
    int levelindex 0;

                    if ( 
    TempInventory[0] != (WORD)-)
                    {
                        
    levelindex LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[1]));
                    }

                    if ( 
    TempInventory[1] != (WORD)-)
                    {
                        
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[4]))<<3;
                    }

                    if ( 
    TempInventory[2] < 0x1F )
                    {    
                        
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[7]))<<6;
                    }

                    if ( 
    TempInventory[3] < 0x1F )
                    {    
                        
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[10]))<<9;
                    }

                    if ( 
    TempInventory[4] < 0x1F )
                    {    
                        
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[13]))<<12;
                    }

                    if ( 
    TempInventory[5] < 0x1F )
                    {    
                        
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[16]))<<15;
                    }

                    if ( 
    TempInventory[6] < 0x1F )
                    {    
                        
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[19]))<<18;
                    }

                    
    pCList.CharSet[6] = ((int)levelindex>>16 ) & 0xFF;
                    
    pCList.CharSet[7] = ((int)levelindex>>) & 0xFF;
                    
    pCList.CharSet[8] = levelindex 0xFF;

                    if ( 
    TempInventory[2] > 0x0F )
                        
    pCList.CharSet[9] = 0x80;

                    if ( 
    TempInventory[3] > 0x0F )
                        
    pCList.CharSet[9] |= 0x40;

                    if ( 
    TempInventory[4] > 0x0F )
                        
    pCList.CharSet[9] |= 0x20;

                    if ( 
    TempInventory[5] > 0x0F )
                        
    pCList.CharSet[9] |= 0x10;

                    if ( 
    TempInventory[6] > 0x0F )
                        
    pCList.CharSet[9] |= 0x8;

                    if ( (
    TempInventory[7] >= && TempInventory[7] <= 6) || TempInventory[7] == 0x1E)
                    {
                        
    pCList.CharSet[5] |= 0x0C;
                        
                        if ( 
    TempInventory[7] == 0x1E )
                        {
                            
    pCList.CharSet[9] |= 0x05;
                        }
                        else
                        {
                            
    pCList.CharSet[9] |= (TempInventory[7]-2) & 0x07;
                        }
                    }

                    if ( 
    TempInventory[7] >= 0x24 && TempInventory[7] <= 0x28 || TempInventory[7] == 0x2B )
                    {
                        
    pCList.CharSet[5] |= 0x0C;
                        
    pCList.CharSet[16] |= * ((TempInventory[7] - 35) & 0x07);

                        if ( 
    TempInventory[7] == 0x2B )
                        {
                            
    pCList.CharSet[16] |= 0x18;
                        }
                    }

                    
    pCList.CharSet[10] = 0;

                    if ( (
    TempInventory[8] & 0x03) != && TempInventory[8] != 0x1F )
                        
    pCList.CharSet[10] |= 1;

                    
    pCList.CharSet[11] = 0;

                    if ( (
    TempInventory[8] & 0x04) != && TempInventory[8] != 0x1F )
                        
    pCList.CharSet[12] |= 1;

                    if ( 
    TempInventory[2] >= 0x1F pCList.CharSet[13] |= 0x0F;
                    if ( 
    TempInventory[3] >= 0x1F pCList.CharSet[14] |= 0xF0;
                    if ( 
    TempInventory[4] >= 0x1F pCList.CharSet[14] |= 0x0F;
                    if ( 
    TempInventory[5] >= 0x1F pCList.CharSet[15] |= 0xF0;
                    if ( 
    TempInventory[6] >= 0x1F pCList.CharSet[15] |= 0x0F;

                    
    pCList.CharSet[16] = 0;
                    
    pCList.CharSet[17] = 0;
            }
            else    
    /////////////////////////////////////////////////////////// Case DB 3/////////////////////////////////////////////////////////
            
    {
                    if ( 
    lpCL->dbInventory[0] == (BYTE)-&& (lpCL->dbInventory[2]& 0x80) == 0x80 && (lpCL->dbInventory[3]& 0xF0) == 0xF0  )
                    {
                        
    TempInventory[0] = -1;
                    }
                    else
                    {
                        
    TempInventory[0] = (lpCL->dbInventory[0] + (lpCL->dbInventory[2]&0x80)*2)+ (lpCL->dbInventory[3]&0xF0)*32;
                    }

                    if ( 
    lpCL->dbInventory[4] == (BYTE)-&& (lpCL->dbInventory[6]& 0x80) == 0x80 && (lpCL->dbInventory[7]& 0xF0) == 0xF0  )
                    {
                        
    TempInventory[1] = -1;
                    }
                    else
                    {
                        
    TempInventory[1] = (lpCL->dbInventory[4] + (lpCL->dbInventory[6]&0x80)*2)+ (lpCL->dbInventory[7]&0xF0)*32;
                    }

                    if ( 
    lpCL->dbInventory[8] == (BYTE)-&& (lpCL->dbInventory[10]& 0x80) == 0x80 && (lpCL->dbInventory[11]& 0xF0) == 0xF0  )
                    {
                        
    TempInventory[2] = 0x1FF;
                    }
                    else
                    {
                        
    TempInventory[2] = ((lpCL->dbInventory[8] + (lpCL->dbInventory[10]&0x80)*2)+ (lpCL->dbInventory[11]&0xF0)*32)%MAX_SUBTYPE_ITEMS;
                    }

                    if ( 
    lpCL->dbInventory[12] == (BYTE)-&& (lpCL->dbInventory[14]& 0x80) == 0x80 && (lpCL->dbInventory[15]& 0xF0) == 0xF0  )
                    {
                        
    TempInventory[3] = 0x1FF;
                    }
                    else
                    {
                        
    TempInventory[3] = ((lpCL->dbInventory[12] + (lpCL->dbInventory[14]&0x80)*2)+ (lpCL->dbInventory[15]&0xF0)*32)%MAX_SUBTYPE_ITEMS;
                    }

                    if ( 
    lpCL->dbInventory[16] == (BYTE)-&& (lpCL->dbInventory[18]& 0x80) == 0x80 && (lpCL->dbInventory[19]& 0xF0) == 0xF0  )
                    {
                        
    TempInventory[4] = 0x1FF;
                    }
                    else
                    {
                        
    TempInventory[4] = ((lpCL->dbInventory[16] + (lpCL->dbInventory[18]&0x80)*2)+ (lpCL->dbInventory[19]&0xF0)*32)%MAX_SUBTYPE_ITEMS;
                    }

                    if ( 
    lpCL->dbInventory[20] == (BYTE)-&& (lpCL->dbInventory[22]& 0x80) == 0x80 && (lpCL->dbInventory[23]& 0xF0) == 0xF0  )
                    {
                        
    TempInventory[5] = 0x1FF;
                    }
                    else
                    {
                        
    TempInventory[5] = ((lpCL->dbInventory[20] + (lpCL->dbInventory[22]&0x80)*2)+ (lpCL->dbInventory[23]&0xF0)*32)%MAX_SUBTYPE_ITEMS;
                    }

                    if ( 
    lpCL->dbInventory[24] == (BYTE)-&& (lpCL->dbInventory[26]& 0x80) == 0x80 && (lpCL->dbInventory[27]& 0xF0) == 0xF0  )
                    {
                        
    TempInventory[6] = 0x1FF;
                    }
                    else
                    {
                        
    TempInventory[6] = ((lpCL->dbInventory[24] + (lpCL->dbInventory[26]&0x80)*2)+ (lpCL->dbInventory[27]&0xF0)*32)%MAX_SUBTYPE_ITEMS;
                    }

                    if ( 
    lpCL->dbInventory[28] == (BYTE)-&& (lpCL->dbInventory[30]& 0x80) == 0x80 && (lpCL->dbInventory[31]& 0xF0) == 0xF0  )
                    {
                        
    TempInventory[7] = 0x1FF;
                    }
                    else
                    {
                        
    TempInventory[7] = ((lpCL->dbInventory[28] + (lpCL->dbInventory[30]&0x80)*2)+ (lpCL->dbInventory[31]&0xF0)*32)%MAX_SUBTYPE_ITEMS;
                    }

                    if ( 
    lpCL->dbInventory[32] == (BYTE)-&& (lpCL->dbInventory[34]& 0x80) == 0x80 && (lpCL->dbInventory[35]& 0xF0) == 0xF0  )
                    {
                        
    TempInventory[8] = 0x1FF;
                    }
                    else
                    {
                        
    TempInventory[8] = ((lpCL->dbInventory[32] + (lpCL->dbInventory[34]&0x80)*2)+ (lpCL->dbInventory[35]&0xF0)*32)%MAX_SUBTYPE_ITEMS;
                    }

                    
    pCList.CharSet[12] |= DBI_GET_TYPE(TempInventory[0]);
                    
    pCList.CharSet[1] = TempInventory[0] % 256;

                    
    pCList.CharSet[13] |= DBI_GET_TYPE(TempInventory[1]);
                    
    pCList.CharSet[2] = TempInventory[1] % 256;

                    
    pCList.CharSet[13] |= (int)(TempInventory[2] & 0x1E0) >> 5;
                    
    pCList.CharSet[9] |= (int)(TempInventory[2] & 0x10) << 3;
                    
    pCList.CharSet[3] |= (int)(TempInventory[2] & 0x0F) << 4;

                    
    pCList.CharSet[14] |= (int)(TempInventory[3] & 0x1E0) >> 1;
                    
    pCList.CharSet[9] |= (int)(TempInventory[3] & 0x10) << 2;
                    
    pCList.CharSet[3] |= (int)(TempInventory[3] & 0x0F);

                    
    pCList.CharSet[14] |= (int)(TempInventory[4] & 0x1E0) >> 5;
                    
    pCList.CharSet[9] |= (int)(TempInventory[4] & 0x10) << 1;
                    
    pCList.CharSet[4] |= (int)(TempInventory[4] & 0x0F) << 4;

                    
    pCList.CharSet[15] |= (int)(TempInventory[5] & 0x1E0) >> 1;
                    
    pCList.CharSet[9] |= (int)(TempInventory[5] & 0x10);
                    
    pCList.CharSet[4] |= (int)(TempInventory[5] & 0x0F);

                    
    pCList.CharSet[15] |= (int)(TempInventory[6] & 0x1E0) >> 5;
                    
    pCList.CharSet[9] |= (int)(TempInventory[6] & 0x10) >> 1;
                    
    pCList.CharSet[5] |= (int)(TempInventory[6] & 0x0F) << 4;

                    
    index 0;

                    if ( 
    TempInventory[7] == 0x1FF )
                    {
                        
    index |= 0x0C;
                    }
                    else
                    {
                        
    index |= (int)(TempInventory[7] & 0x03) << 2;
                    }

                    if ( (
    TempInventory[8] & 0x04) == )
                    {
                        if ( 
    TempInventory[8] == 0x1FF )
                        {
                            
    index |= 0x03;
                        }
                        else
                        {
                            
    index |= (TempInventory[8] ) & 0x03;
                        }
                    }
                    else
                    {
                        
    index |= 0x03;
                    }

                    
    pCList.CharSet[5] |= index;

                    
    int levelindex 0;

                    if ( 
    TempInventory[0] != (WORD)-)
                    {
                        
    levelindex LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[1]));
                    }

                    if ( 
    TempInventory[1] != (WORD)-)
                    {
                        
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[5])) << 3;
                    }

                    if ( 
    TempInventory[2] < 0x1FF )
                    {
                        
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[9])) << 6;
                    }

                    if ( 
    TempInventory[3] < 0x1FF )
                    {
                        
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[13])) << 9;
                    }

                    if ( 
    TempInventory[4] < 0x1FF )
                    {
                        
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[17])) << 12;
                    }

                    if ( 
    TempInventory[5] < 0x1FF )
                    {
                        
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[21])) << 15;
                    }

                    if ( 
    TempInventory[6] < 0x1FF )
                    {
                        
    levelindex |= (int)LevelSmallConvert(DBI_GET_LEVEL(lpCL->dbInventory[25])) << 18;
                    }

                    
    pCList.CharSet[6] = ((int)levelindex >> 0x10) & 0xFF;
                    
    pCList.CharSet[7] = ((int)levelindex >> 0x08) & 0xFF;
                    
    pCList.CharSet[8] = ((int)levelindex) & 0xFF;

                if ( 
    TempInventory[7] >= && TempInventory[7] <= || TempInventory[7] == 0x1E || TempInventory[7] == 0x29 || TempInventory[7] == 0x2A )
                {
                  
    pCList.CharSet[5] |= 0x0C;
                  switch ( 
    TempInventory[7] )
                  {
                    case 
    0x1E:
                      
    pCList.CharSet[9] |= 0x05;
                      break;
                    case 
    0x29:
                      
    pCList.CharSet[9] |= 0x06;
                      break;
                    case 
    0x2A:
                      
    pCList.CharSet[9] |= 0x07;
                      break;
                    default:
                      
    pCList.CharSet[9] |= (TempInventory[7] - 2) & 7;
                      break;
                  }
                }

                
    pCList.CharSet[10] = 0;

                if ( 
    TempInventory[8] & )
                {
                  if ( 
    TempInventory[8] != 0x1FF )
                    
    pCList.CharSet[10] |= 0x01;
                }
                
    pCList.CharSet[11] = 0;
                if ( 
    TempInventory[8] & )
                {
                  if ( 
    TempInventory[8] != 0x1FF )
                    
    pCList.CharSet[12] |= 0x01;
                }
                
    pCList.CharSet[16] = 0;
                
    pCList.CharSet[17] = 0;

                if ( 
    TempInventory[8] == 0x25 && TempInventory[8] != 0x1FF )
                {
                    
    pCList.CharSet[10] &= 0xFE;
                    
    pCList.CharSet[12] &= 0xFE;
                    
    pCList.CharSet[12] |= 0x04;
                    
    BYTE btExcellentOption lpCL->dbInventory[34] & 0x3F;

                    if ( (
    btExcellentOption 1) == )
                    {
                      
    pCList.CharSet[16] |= 0x01;
                    }
                    if ( (
    btExcellentOption 2) == )
                    {
                      
    pCList.CharSet[16] |= 0x02;
                    }
                    if ( (
    btExcellentOption 4) == )
                    {
                      
    pCList.CharSet[17] |= 0x01;
                    }
                  
                }
                if ( 
    TempInventory[7] >= 0x24 && TempInventory[7] <= 0x28 || TempInventory[7] == 0x2B )
                {
                  
    pCList.CharSet[5] |= 0x0C;
                  
    pCList.CharSet[16] |= * ((TempInventory[7] - 0x23) & 7);

                  if ( 
    TempInventory[7] == 0x2B )
                  {
                    
    pCList.CharSet[16] |= 0x18;
                  }
                }
                if ( !(
    TempInventory[8] & 4) )
                {
                  if ( 
    TempInventory[8] != 0x1FF )
                  {
                    
    register unsigned char PreviewPet 0//Don't know if its ok.
                    
    switch ( TempInventory[8] )
                    {
                      case 
    0x40:    //Demon v2
                        
    PreviewPet 0x20;
                        break;
                      case 
    0x41:    //Spirit v2
                        
    PreviewPet 0x40;
                        break;
                      case 
    0x43:    //Rudolph
                        
    PreviewPet 0x80;
                        break;
                      case 
    0x50:    //Panda
                        
    PreviewPet 0xE0;
                        break;
                      case 
    0x6A:    //Unicorn
                        
    PreviewPet 0xA0;
                        break;
                      case 
    0x7B:    //Dragon Skeleton
                        
    pCList.CharSet[5] -= 0x03;
                        
    PreviewPet 0x96// or 0x60.
                        
    break;
                    }
                    
    pCList.CharSet[16] |= PreviewPet;
                  }
                }
                
    //Miniwings (don't know if its ok)
                
    if ( TempInventory[7] == 0x82 || TempInventory[7] == 0x83 || TempInventory[7] == 0x84 || TempInventory[7] == 0x85 || TempInventory[7] == 0x86 )
                {
                    
    register unsigned char PreviewWing 0;
                    
    register unsigned char PreviewMiniWing 0;

                    switch ( 
    TempInventory[7] )
                    {
                    case 
    0x82:    //MiniCape DL
                        
    pCList.CharSet[5] += 0x04;
                        
    PreviewMiniWing 0x20;
                        break;
                    case 
    0x83:    //MiniWings SUM
                        
    PreviewMiniWing 0x40;
                        break;
                    case 
    0x84:    //MiniWings ELF
                        
    pCList.CharSet[5] += 0x0C;
                        
    PreviewMiniWing 0x60;
                        break;
                    case 
    0x85:    //MiniWings DW
                        
    pCList.CharSet[5] += 0x08;
                        
    PreviewMiniWing 0x80;
                        break;
                    case 
    0x86:    //MiniWings DK
                        
    pCList.CharSet[5] += 0x04;
                        
    PreviewMiniWing 0xA0;
                        break;
                    }
                    
    pCList.CharSet[16] = PreviewWing;
                    
    pCList.CharSet[17] = PreviewMiniWing;
                }
            }
                
    memcpy(&sendbuf[lOfs], &pCListsizeof(pCList));
                
    lsOfs += sizeof(SDHP_CHARLIST);
                
    lOfs += sizeof(pCList);
          }
        }
        
    pCLCount.h.size lOfs;
        
    memcpy(sendbuf, &pCLCountsizeof(PMSG_CHARLISTCOUNT));
        
    DataSend(aIndexsendbuflOfs);

    Code:
    #define CS_GET_CLASS2(x) ( (((x)>>1)<<3)&(0x08) ) //
    All missing identifiers can be found in deathways source.

    I'd really appreciate if those that already decompiled this can tell me if its good and show me hints where something is wrong.
    Thanks.
    Last edited by duracel; 17-05-11 at 09:40 AM.

  8. #2008
    Account Upgraded | Title Enabled! juajua123 is offline
    MemberRank
    Aug 2010 Join Date
    203Posts

    Re: GameServer 1.00.90

    Im getting massive disconnections under this error using .90 GS:
    (user) (playername) Time synchronization poorness caused connection blockage -7032 (number may variate)
    WSARecv() failed with error 10038

    its disconnecting ppl massivly and randomly, please does anybody have a solution?

  9. #2009
    Account Upgraded | Title Enabled! juajua123 is offline
    MemberRank
    Aug 2010 Join Date
    203Posts

    Re: GameServer 1.00.90

    Sorry for double posting, that was caused for because W1ndows didnt take 1000 ms (thanks Zemattana for telling me), now im getting this errors and then GS crashes:

    ¡Ú¡Ú¡Ú¡Ú InValid DurationTime Key = 17 ( Time : 204313152) [338628016][338628027]
    ¡Ú¡Ú¡Ú¡Ú InValid DurationTime Key = 17 ( Time : 204313152) [338628016][338628027]
    ¡Ú¡Ú¡Ú¡Ú InValid DurationTime Key = 17 ( Time : 204313152) [338628016][338628027]
    ¡Ú¡Ú¡Ú¡Ú InValid DurationTime Key = 17 ( Time : 204313152) [338628016][338628027]
    ¡Ú¡Ú¡Ú¡Ú InValid DurationTime Key = 17 ( Time : 204313152) [338628016][338628027]
    ¡Ú¡Ú¡Ú¡Ú InValid DurationTime Key = 17 ( Time : 204312122) [338558064][338558075]
    ¡Ú¡Ú¡Ú¡Ú InValid DurationTime Key = 17 ( Time : 204313152) [338628016][338628027]
    ¡Ú¡Ú¡Ú¡Ú InValid DurationTime Key = 17 ( Time : 204313152) [338628016][338628027]
    ¡Ú¡Ú¡Ú¡Ú InValid DurationTime Key = 17 ( Time : 204313152) [338628016][338628027]
    ¡Ú¡Ú¡Ú¡Ú InValid DurationTime Key = 17 ( Time : 204313152) [338628016][338628027]


    any ideas?, i cant find the DurationTime ASCII string in olly, im a noob, is there another way to find strings? thanks.

  10. #2010
    Proficient Member user_MU is offline
    MemberRank
    Nov 2008 Join Date
    152Posts

    Re: GameServer 1.00.90

    How to fix the party zen bug? (GS 1.00.87 1.00.90 analog)
    This problem has still not been resolved.
    The problem is very urgent. Lost the game balance.
    Help please.

  11. #2011
    Proficient Member Van_Bom is offline
    MemberRank
    May 2009 Join Date
    194Posts

    Re: GameServer 1.00.90

    GM can kill monsters but monsters don't see GM. I used GM with code = 32.

    how to fix ?
    thank all

  12. #2012
    Mulegend Server Mulegend is offline
    MemberRank
    May 2006 Join Date
    Montevideo - UruguayLocation
    461Posts

    Re: GameServer 1.00.90

    Use search

  13. #2013
    Proficient Member Van_Bom is offline
    MemberRank
    May 2009 Join Date
    194Posts

    Re: GameServer 1.00.90

    Quote Originally Posted by user_MU View Post
    How to fix the party zen bug? (GS 1.00.87 1.00.90 analog)
    This problem has still not been resolved.
    The problem is very urgent. Lost the game balance.
    Help please.
    this for you:

    //Fix Zen bug in party
    BYTE cFixPartyZen[31] = {0x8B,0x4D,0xE4,0x8B,0x55,0x0C,0x03,0xC9,0x03,0xC9,
    0x03,0xC9,0x03,0xC9,0x81,0xC1,0x00,0x24,0x00,0x00, 0x89,
    0x8A,0xD8,0x00,0x00,0x00,0xE9,0x83,0xFC,0xFF,0xFF} ;
    memcpy((int*)0x005174E7,cFixPartyZen,sizeof(cFixPartyZen));

    BYTE cFixPartyZen2[12] = {0xE9,0x65,0x03,0x00,0x00,0x90,0x90,0x90,0x90,0x90 ,0x90,0x90};
    memcpy((int*)0x0051717D,cFixPartyZen2,sizeof(cFixPartyZen2));



    //GM can kill, Enter (w7 fix)
    BYTE FixGMEnter[2] = { 0xEB, 0x42 };
    memcpy((int*)0x0050514B,FixGMEnter,sizeof(FixGMEnter));

    But Monsters can't see GM so Monsters can't kill GM.
    Last edited by Van_Bom; 17-06-11 at 10:13 PM.

  14. #2014
    Enthusiast Bryan Furry is offline
    MemberRank
    Apr 2011 Join Date
    In HomeLocation
    32Posts

    Re: GameServer 1.00.90

    I see many sources use many structures for commands, i mean:
    PHP Code:
    struct Post{
    ...
    int enabled;
    ...
    }
    struct Time{
    ...
    int enabled;
    ...

    but can define one global struct, allways for commands is the same, like
    PHP Code:
    if(enabled 1)
    {
    ....

    but we can use something like this:
    PHP Code:
    class GAME_COMMANDS
    {    
    //======================================================
    // STRUCTURES
    //======================================================
    private:    
        
    struct GAME_CHAT_COMMANDS
        
    {
            
    int Enabled;
            
    int OnlyVip;
            
    int OnlyGM;
            
    int Cost;
            
    int NeedResetCount;
            
    int MinLevel;
            
    int MaxLevel;
            
    charSyntax;
        };
    public:
    //======================================================
    // VARIABLES
    //======================================================
        
    char szBuff[200];
        
    //**************************************************
        // COMMAND LIST DEFINITIONS
        //**************************************************
        
    GAME_CHAT_COMMANDS COMMAND_POST;
        
    //**************************************************

    //======================================================
    // SOURCE
    //======================================================
    public:
        
    void getCommandReq(GAME_CHAT_COMMANDS cmdDWORD aIndex)
        {
            
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);

            if(
    cmd.Enabled == 0)
            {
                
    GCServerMsgStringSend("Command is Currently Inactive ... Try Again Later!",aIndex,1);
                return;
            }
            if(
    gObj->Level cmd.MinLevel)
            {
                
    wsprintf(szBuff"Need Level %d To Use This Command.",cmd.MinLevel);
                
    GCServerMsgStringSend(szBuff,aIndex,1);
                
    ZeroMemory(szBuff,sizeof(szBuff));
                return;
            }
            if(
    gObj->Level cmd.MaxLevel)
            {
                
    wsprintf(szBuff"You have exceeded max level %d To Use This Command.",cmd.MaxLevel);
                
    GCServerMsgStringSend(szBuff,aIndex,1);
                
    ZeroMemory(szBuff,sizeof(szBuff));
                return;
            }
            if(
    gObj->Money cmd.Cost)
            {
                
    wsprintf(szBuff"You dont have needed zen to use post! Need zen %d.",cmd.Cost);
                
    GCServerMsgStringSend(szBuff,aIndex,1);
                
    ZeroMemory(szBuff,sizeof(szBuff));
                return;
            }
            if(
    cmd.OnlyGM == && gObj->Authority != AUTHORITY_JPN_GM)
            {
                
    GCServerMsgStringSend("Command is Only available For GameMasters!",aIndex,1);
                return;
            }
            if(
    cmd.OnlyVip == && cMuOnlineDB.CheckIsVip(aIndex) == FALSE)
            {
                
    GCServerMsgStringSend("Command is Only available For VIP!",aIndex,1);
                return;
            }
            
    //if(cmd.NeedResetCount < cMuOnlineDB.getResetCount(aIndex))
            //{
            //    wsprintf(szBuff, "You dont have requeued resets. Need Resets",cmd.NeedResetCount);
            //    GCServerMsgStringSend(szBuff,aIndex,1);
            //    ZeroMemory(szBuff,sizeof(szBuff));
            //    return;
            //}

            
    gObj->Money gObj->Money cmd.Cost;
            
    GCMoneySend(aIndexObjTab[aIndex].Money);
        }
        
    void cmdPost(DWORD aIndex,charParametrs)
        {
            
    this->getCommandReq(COMMAND_POST,aIndex);
            
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(i);
            
    wsprintf(szBuff"[POST]%s:%s",gObj->Name,Parametrs);
            for(
    int i OBJECT_MINOBJECT_MAXi++)
            {
                    
    OBJECTSTRUCT *Obj = (OBJECTSTRUCT*)OBJECT_POINTER(i);
                    if(
    Obj->Connected == 3)
                        
    GCServerMsgStringSend(szBuff,i,1);
            }
            
    ZeroMemory(szBuff,sizeof(szBuff));
        }
        
    void initCommand(LPBYTE Protocol,DWORD aIndex)
        {
            if(!
    memcmp(&Protocol[13],COMMAND_POST.Syntax,strlen(COMMAND_POST.Syntax)))
            {
                
    this->cmdPost(aIndex,(char*)Protocol+13+strlen(COMMAND_POST.Syntax));
            }
        }

    maybe someone will find this usefull

    more info: Data Structures - C++ Documentation

  15. #2015
    Proficient Member phit666 is offline
    MemberRank
    Apr 2007 Join Date
    197Posts

    Re: GameServer 1.00.90

    To preserve Socket serial security, you can call this function whenever you want to return immediately without calling the original protocol core.
    Code:
    void SerialCheckEx(int aIndex,unsigned char Serial)
    {
    	__asm
    	{
    		PUSHAD
    		MOV AL,Serial
    		PUSH EAX
    		MOV ECX,aIndex
    #ifdef GS
    		LEA ECX,DWORD PTR DS:[ECX*0x8+0x7CC3F18]
    		MOV EDX,0x00404417
    #else if GSCS
    		LEA ECX,DWORD PTR DS:[ECX*0x8+0x40CECC0]
    		MOV EDX,0x004046E7
    #endif
    		CALL EDX //NSerialCheck::InCheck(unsigned char serial)
    		POPAD
    	}
    }

  16. #2016
    Member access is offline
    MemberRank
    Jan 2009 Join Date
    86Posts

    Re: GameServer 1.00.90

    case 0x8E:
    MoveC.Teleport(aIndex,aRecv[8]); return;
    break;
    This is season 5 warp fix.why this is not working?
    i have run it on debuger , set breakpoints in in MoveC.Teleport but debuger did not stop at breakpoint when i use warp..This is fake ? :D sorry for bad english
    Last edited by access; 29-06-11 at 04:02 PM.

  17. #2017
    Account Upgraded | Title Enabled! DesmondMiles is offline
    MemberRank
    Nov 2009 Join Date
    BulgariaLocation
    235Posts

    Re: GameServer 1.00.90

    Frop Apple Source


    SkillTree.cpp

    PHP Code:
    // ---------------------------------------------------------------- //
    // Project:    APplE - Season 4 Episode II & Season 5 Project            //
    // Coded by:    WolF & M.E.S                                        //
    // Files:        SkillTree.CPP :: SkillTree.H                        //
    // Hint:        Summoner Skill Tree System                            //
    // ---------------------------------------------------------------- //

    #include "StdAfx.H"


    CSkillTree cSkillTree;


    CSkillTree::CSkillTree()
    {
    }
    CSkillTree::~CSkillTree()
    {
    }

    void CSkillTree::AddDamage(int aIndex,int MinDmg,int MaxDmg)
    {
        
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);

        
    gObj->m_MagicDamageMin+=MinDmg;
        
    gObj->m_MagicDamageMax+=MaxDmg;
        
    gObj->m_AttackDamageMinLeft+=MinDmg;
        
    gObj->m_AttackDamageMinRight+=MinDmg;
        
    gObj->m_AttackDamageMaxLeft+=MaxDmg;
        
    gObj->m_AttackDamageMaxRight+=MaxDmg;
    }
    // -------------------------
    void CSkillTree::RemoveDamage(int aIndex,int MinDmg,int MaxDmg)
    {
        
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);

        
    gObj->m_MagicDamageMin-=MinDmg;
        
    gObj->m_MagicDamageMax-=MaxDmg;
        
    gObj->m_AttackDamageMinLeft-=MinDmg;
        
    gObj->m_AttackDamageMinRight-=MinDmg;
        
    gObj->m_AttackDamageMaxLeft-=MaxDmg;
        
    gObj->m_AttackDamageMaxRight-=MaxDmg;
    }
    // -------------------------
    void CSkillTree::Manager(BYTE protoNum,LPBYTE aRecv,DWORD aLen,short aIndex,DWORD Encrypt,int Serial)
    {
        
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
        
    int MinDmg=0;
        
    int MaxDmg=0;
        
    BOOL IsDmgSkillUsed FALSE;
        
    //======================================================================================================
        //-- Sleep Strengthener
        //======================================================================================================
        
    if (aRecv[3] == 0x02 && aRecv[4] == 0x17)        // Sleep Strengthener Lvl 1 {535} //100 Damage //125 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x18)    // Sleep Strengthener Lvl 2 {536} //100 Damage //125 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x19)    // Sleep Strengthener Lvl 3 {537} //100 Damage //125 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x1A)    // Sleep Strengthener Lvl 4 {538} //100 Damage //125 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x1B)    // Sleep Strengthener Lvl 5 {539} //100 Damage //125 Mana
        
    {
            goto Exit;
        }
        
    //======================================================================================================
        //-- Chain Lightning Strengthener
        //======================================================================================================
        
    if (aRecv[3] == 0x02 && aRecv[4] == 0x1C)        // Chain Lightning Strengthener Lvl 1 {540} //75 Damage //94 Mana
        
    {
            
    IsDmgSkillUsed TRUE;
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x1D)    // Chain Lightning Strengthener Lvl 2 {541} //80 Damage //103 Mana
        
    {
            
    IsDmgSkillUsed TRUE;
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x1E)    // Chain Lightning Strengthener Lvl 3 {542} //85 Damage //112 Mana
        
    {
            
    IsDmgSkillUsed TRUE;
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x1F)    // Chain Lightning Strengthener Lvl 4 {543} //90 Damage //121 Mana
        
    {
            
    IsDmgSkillUsed TRUE;
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x20)    // Chain Lightning Strengthener Lvl 5 {544} //95 Damage //130 Mana
        
    {
            
    IsDmgSkillUsed TRUE;
            goto Exit;
        }
        
    //======================================================================================================
        // Lightning Shock Strengthener
        //======================================================================================================
        
    if (aRecv[3] == 0x02 && aRecv[4] == 0x21// Lightning Shock Strengthener Lvl 1 {545} //100 Damage //125 Mana
        
    {
            
    aRecv[3] = 0x00;
            
    aRecv[4] = 0xE6;
            
            
    IsDmgSkillUsed TRUE;

            
    //Fix BP & Mana Usage
            
    gObj->Mana -= (float)(((545 5) +1) * 9);

            
    //Calculation Aditional "Defence & Attack"
            
    MinDmg = ((545 5) +1) * 70;
            
    MaxDmg = ((545 5) +1) * (70 5/2);

            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x22// Lightning Shock Strengthener Lvl 2 {546} //105 Damage //135 Mana
        
    {
            
    aRecv[3] = 0x00;
            
    aRecv[4] = 0xE6;

            
    IsDmgSkillUsed TRUE;

            
    //Fix BP and Mana Usage
            
    gObj->Mana -= (float)(((546 5) +1) * 9);

            
    //Calculation Aditional "Defence & Attack"
            
    MinDmg = ((546 5) + 1) * 70;
            
    MaxDmg = ((546 5) + 1) * (70 5/2);

            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x23// Lightning Shock Strengthener Lvl 3 {547} //110 Damage //145 Mana
        
    {
            
    aRecv[3] = 0x00;
            
    aRecv[4] = 0xE6;

            
    IsDmgSkillUsed TRUE;

            
    //Fix BP and Mana Usage
            
    gObj->Mana -= (float)(((547 5) + 1) * 9);

            
    //Calculation Aditional "Defence & Attack"
            
    MinDmg = ((547 5) + 1) * 70;
            
    MaxDmg = ((547 5) + 1) * (70 5/2);

            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x24// Lightning Shock Strengthener Lvl 4 {548} //115 Damage //155 Mana
        
    {
            
    aRecv[3] = 0x00;
            
    aRecv[4] = 0xE6;

            
    IsDmgSkillUsed TRUE;

            
    //Fix BP and Mana Usage
            
    gObj->Mana -= (float)(((548 5) +1) * 9);

            
    //Calculation Aditional "Defence & Attack"
            
    MinDmg =((548 5) +1) * 70;
            
    MaxDmg =((548 5) +1) * (70 5/2);

            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x25// Lightning Shock Strengthener Lvl 5 {549} //120 Damage //165 Mana
        
    {
            
    //Log.SkillTreeLog("-------------------------\n");
            //Log.SkillTreeLog("aRecv[3]=%d -- aRecv[4]=%d\n",aRecv[3],aRecv[4]);
            //Log.SkillTreeLog("New Skill: 549\n");
            
    aRecv[3] = 0x00;
            
    aRecv[4] = 0xE6;
            
    //Log.SkillTreeLog("aRecv[3]=%d -- aRecv[4]=%d\n",aRecv[3],aRecv[4]);
            //Log.SkillTreeLog("New Skill: Changed to 230\n");

            
    IsDmgSkillUsed TRUE;

            
    //Fix BP and Mana Usage
            
    gObj->Mana -= (float)(((549 5) +1) * 9);
            
    //Log.SkillTreeLog("New Skill: Mana Reduce\n");

            //Calculation Aditional "Defence & Attack"
            
    MinDmg = ((549 5) +1) * 70;
            
    MaxDmg = ((549 5) +1) * (70 5/2);

            

            goto Exit;
        }

        
    // -----------------------------------------------------------------------------------------------
        // Drain Life Strengthener
        // -----------------------------------------------------------------------------------------------
        
    if (aRecv[3] == 0x02 && aRecv[4] == 0x26//550 Drain Life Strengthener Lvl 1 //40 Dmg //57 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x27//551 Drain Life Strengthener Lvl 2 //45 Dmg //64 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x28//552 Drain Life Strengthener Lvl 3 //50 Dmg //71 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x29//553 Drain Life Strengthener Lvl 4 //55 Dmg //78 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x2A//554 Drain Life Strengthener Lvl 5 //60 Dmg //85 Mana
        
    {
            goto Exit;
        }

    Exit:
        if (
    IsDmgSkillUsed == TRUE)
            
    this->AddDamage(aIndex,MinDmg,MaxDmg);

        
    GCServerMsgStringSend("Added Damage",aIndex,1);

        
    DataRecv(protoNum,aRecv,aLen,aIndex);

        if (
    IsDmgSkillUsed == TRUE)
            
    this->RemoveDamage(aIndex,MinDmg,MaxDmg);

        
    GCServerMsgStringSend("Removed Damage",aIndex,1);

        return;


    can someone explain me where need to call this function,for fixing "damage/effect" of the Summoner Skilltree?
    Last edited by DesmondMiles; 03-07-11 at 11:07 AM.

  18. #2018
    Apprentice N3messys is offline
    MemberRank
    Jun 2010 Join Date
    11Posts

    Re: GameServer 1.00.90

    Can you tell me please if there is there any offset or anything like this to bypass/increase the monsters limit for MonstersSetBase ?

  19. #2019
    Proficient Member phit666 is offline
    MemberRank
    Apr 2007 Join Date
    197Posts

    Re: GameServer 1.00.90

    Question is not there is, its THERE ARE! You have to allocate a new memory allocation for that coz current struct is set to 7399 or 7400 if im not mistaken and then you have to update all references to that new memory address.

  20. #2020
    Valued Member mesosa is offline
    MemberRank
    Aug 2010 Join Date
    140Posts

    Re: GameServer 1.00.90

    Quote Originally Posted by DesmondMiles View Post
    Frop Apple Source


    SkillTree.cpp

    PHP Code:
    // ---------------------------------------------------------------- //
    // Project:    APplE - Season 4 Episode II & Season 5 Project            //
    // Coded by:    WolF & M.E.S                                        //
    // Files:        SkillTree.CPP :: SkillTree.H                        //
    // Hint:        Summoner Skill Tree System                            //
    // ---------------------------------------------------------------- //

    #include "StdAfx.H"


    CSkillTree cSkillTree;


    CSkillTree::CSkillTree()
    {
    }
    CSkillTree::~CSkillTree()
    {
    }

    void CSkillTree::AddDamage(int aIndex,int MinDmg,int MaxDmg)
    {
        
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);

        
    gObj->m_MagicDamageMin+=MinDmg;
        
    gObj->m_MagicDamageMax+=MaxDmg;
        
    gObj->m_AttackDamageMinLeft+=MinDmg;
        
    gObj->m_AttackDamageMinRight+=MinDmg;
        
    gObj->m_AttackDamageMaxLeft+=MaxDmg;
        
    gObj->m_AttackDamageMaxRight+=MaxDmg;
    }
    // -------------------------
    void CSkillTree::RemoveDamage(int aIndex,int MinDmg,int MaxDmg)
    {
        
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);

        
    gObj->m_MagicDamageMin-=MinDmg;
        
    gObj->m_MagicDamageMax-=MaxDmg;
        
    gObj->m_AttackDamageMinLeft-=MinDmg;
        
    gObj->m_AttackDamageMinRight-=MinDmg;
        
    gObj->m_AttackDamageMaxLeft-=MaxDmg;
        
    gObj->m_AttackDamageMaxRight-=MaxDmg;
    }
    // -------------------------
    void CSkillTree::Manager(BYTE protoNum,LPBYTE aRecv,DWORD aLen,short aIndex,DWORD Encrypt,int Serial)
    {
        
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
        
    int MinDmg=0;
        
    int MaxDmg=0;
        
    BOOL IsDmgSkillUsed FALSE;
        
    //======================================================================================================
        //-- Sleep Strengthener
        //======================================================================================================
        
    if (aRecv[3] == 0x02 && aRecv[4] == 0x17)        // Sleep Strengthener Lvl 1 {535} //100 Damage //125 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x18)    // Sleep Strengthener Lvl 2 {536} //100 Damage //125 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x19)    // Sleep Strengthener Lvl 3 {537} //100 Damage //125 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x1A)    // Sleep Strengthener Lvl 4 {538} //100 Damage //125 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x1B)    // Sleep Strengthener Lvl 5 {539} //100 Damage //125 Mana
        
    {
            goto Exit;
        }
        
    //======================================================================================================
        //-- Chain Lightning Strengthener
        //======================================================================================================
        
    if (aRecv[3] == 0x02 && aRecv[4] == 0x1C)        // Chain Lightning Strengthener Lvl 1 {540} //75 Damage //94 Mana
        
    {
            
    IsDmgSkillUsed TRUE;
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x1D)    // Chain Lightning Strengthener Lvl 2 {541} //80 Damage //103 Mana
        
    {
            
    IsDmgSkillUsed TRUE;
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x1E)    // Chain Lightning Strengthener Lvl 3 {542} //85 Damage //112 Mana
        
    {
            
    IsDmgSkillUsed TRUE;
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x1F)    // Chain Lightning Strengthener Lvl 4 {543} //90 Damage //121 Mana
        
    {
            
    IsDmgSkillUsed TRUE;
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x20)    // Chain Lightning Strengthener Lvl 5 {544} //95 Damage //130 Mana
        
    {
            
    IsDmgSkillUsed TRUE;
            goto Exit;
        }
        
    //======================================================================================================
        // Lightning Shock Strengthener
        //======================================================================================================
        
    if (aRecv[3] == 0x02 && aRecv[4] == 0x21// Lightning Shock Strengthener Lvl 1 {545} //100 Damage //125 Mana
        
    {
            
    aRecv[3] = 0x00;
            
    aRecv[4] = 0xE6;
            
            
    IsDmgSkillUsed TRUE;

            
    //Fix BP & Mana Usage
            
    gObj->Mana -= (float)(((545 5) +1) * 9);

            
    //Calculation Aditional "Defence & Attack"
            
    MinDmg = ((545 5) +1) * 70;
            
    MaxDmg = ((545 5) +1) * (70 5/2);

            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x22// Lightning Shock Strengthener Lvl 2 {546} //105 Damage //135 Mana
        
    {
            
    aRecv[3] = 0x00;
            
    aRecv[4] = 0xE6;

            
    IsDmgSkillUsed TRUE;

            
    //Fix BP and Mana Usage
            
    gObj->Mana -= (float)(((546 5) +1) * 9);

            
    //Calculation Aditional "Defence & Attack"
            
    MinDmg = ((546 5) + 1) * 70;
            
    MaxDmg = ((546 5) + 1) * (70 5/2);

            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x23// Lightning Shock Strengthener Lvl 3 {547} //110 Damage //145 Mana
        
    {
            
    aRecv[3] = 0x00;
            
    aRecv[4] = 0xE6;

            
    IsDmgSkillUsed TRUE;

            
    //Fix BP and Mana Usage
            
    gObj->Mana -= (float)(((547 5) + 1) * 9);

            
    //Calculation Aditional "Defence & Attack"
            
    MinDmg = ((547 5) + 1) * 70;
            
    MaxDmg = ((547 5) + 1) * (70 5/2);

            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x24// Lightning Shock Strengthener Lvl 4 {548} //115 Damage //155 Mana
        
    {
            
    aRecv[3] = 0x00;
            
    aRecv[4] = 0xE6;

            
    IsDmgSkillUsed TRUE;

            
    //Fix BP and Mana Usage
            
    gObj->Mana -= (float)(((548 5) +1) * 9);

            
    //Calculation Aditional "Defence & Attack"
            
    MinDmg =((548 5) +1) * 70;
            
    MaxDmg =((548 5) +1) * (70 5/2);

            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x25// Lightning Shock Strengthener Lvl 5 {549} //120 Damage //165 Mana
        
    {
            
    //Log.SkillTreeLog("-------------------------\n");
            //Log.SkillTreeLog("aRecv[3]=%d -- aRecv[4]=%d\n",aRecv[3],aRecv[4]);
            //Log.SkillTreeLog("New Skill: 549\n");
            
    aRecv[3] = 0x00;
            
    aRecv[4] = 0xE6;
            
    //Log.SkillTreeLog("aRecv[3]=%d -- aRecv[4]=%d\n",aRecv[3],aRecv[4]);
            //Log.SkillTreeLog("New Skill: Changed to 230\n");

            
    IsDmgSkillUsed TRUE;

            
    //Fix BP and Mana Usage
            
    gObj->Mana -= (float)(((549 5) +1) * 9);
            
    //Log.SkillTreeLog("New Skill: Mana Reduce\n");

            //Calculation Aditional "Defence & Attack"
            
    MinDmg = ((549 5) +1) * 70;
            
    MaxDmg = ((549 5) +1) * (70 5/2);

            

            goto Exit;
        }

        
    // -----------------------------------------------------------------------------------------------
        // Drain Life Strengthener
        // -----------------------------------------------------------------------------------------------
        
    if (aRecv[3] == 0x02 && aRecv[4] == 0x26//550 Drain Life Strengthener Lvl 1 //40 Dmg //57 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x27//551 Drain Life Strengthener Lvl 2 //45 Dmg //64 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x28//552 Drain Life Strengthener Lvl 3 //50 Dmg //71 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x29//553 Drain Life Strengthener Lvl 4 //55 Dmg //78 Mana
        
    {
            goto Exit;
        }
        else if (
    aRecv[3] == 0x02 && aRecv[4] == 0x2A//554 Drain Life Strengthener Lvl 5 //60 Dmg //85 Mana
        
    {
            goto Exit;
        }

    Exit:
        if (
    IsDmgSkillUsed == TRUE)
            
    this->AddDamage(aIndex,MinDmg,MaxDmg);

        
    GCServerMsgStringSend("Added Damage",aIndex,1);

        
    DataRecv(protoNum,aRecv,aLen,aIndex);

        if (
    IsDmgSkillUsed == TRUE)
            
    this->RemoveDamage(aIndex,MinDmg,MaxDmg);

        
    GCServerMsgStringSend("Removed Damage",aIndex,1);

        return;


    can someone explain me where need to call this function,for fixing "damage/effect" of the Summoner Skilltree?
    well, this is really old and was made for test.

    *to fix summoner skill tree, u need to read skills from Skills File.

    *then u have to enable that skills on a funcion in gs. ( i don't remember the offset)

    *and then u have to hook upgraded skills to original summoner skills.

    example:

    *Check Skill.bmd and add into Skill(xxx).txt

    *Enable the skills in some funcion in GameServer.

    *Hook New Skills Number to Not Upgraded Skill Funcion

    and i think that will work

  21. #2021
    Account Upgraded | Title Enabled! Dark_FearZz is offline
    MemberRank
    Aug 2005 Join Date
    Black RoadLocation
    265Posts

    Re: GameServer 1.00.90

    Is there anyone that can help me understanding 1.03A+ JPN CashShop Packets?

    [6600] [RECEIVE] Data:C11DD20178 00 00 00 00 00 00 14 40 00000000000000000000000000000000 // 5
    [6600] [RECEIVE] Data:C11DD20178 00 00 00 00 00 00 34 40 00000000000000000000000000000000 // 20
    [3860] [RECEIVE] Data:C11DD20178 00 00 00 00 00 00 3E 40 00000000000000000000000000000000 // 30
    [3860] [RECEIVE] Data:C11DD20178 00 00 00 00 00 00 44 40 00000000000000000000000000000000 // 40
    [3860] [RECEIVE] Data:C11DD20178 00 00 00 00 00 80 41 40 00000000000000000000000000000000 // 35

  22. #2022
    Member Regz is offline
    MemberRank
    Aug 2011 Join Date
    85Posts

    Re: GameServer 1.00.90

    Hi Ragezone,
    Im beginner of C++ and I Verry need the source code of Server Side Anti SpeedHack ( TickCount check), Skill Distance Check + Normal Atack Distance Check someone can help me ?

  23. #2023
    Novice BeginnerZ is offline
    MemberRank
    Aug 2011 Join Date
    1Posts

    Re: GameServer 1.00.90

    im trying to replace the Chain Lighting skill MasterSkillTree lvl 5 (544), with normal Chain Lighting skill(215)

    in my protocol:
    PHP Code:
            case 0x1E:
                {
                
                
    int Skill = (aRecv[3] * 256 aRecv[4]);        

                if (
    Skill >= 535 && Skill <= 554)
                {
                    
                    if (
    aRecv[3] == 0x02 && aRecv[4] == 0x20)    // Skill Tree Chain Lightning Strengthener Lvl 5 -- DEC: 544
                    
    {
                        
    cLog.ConsoleOutput("aRecv[3]=%d  aRecv[4]=%d",aRecv[3],aRecv[4]);
                        
    cLog.ConsoleOutput("Chain Lighting Lvl 5");

                        
    aRecv[3] = 0x00;
                        
    aRecv[4] = 0xD7// Dec: 215 <-- Skill Chain Lightning (normal Skill)
                    
    }
                    return 
    true;
                }
                }break; 
    but still not working, character "move" but don't see any dmg, and any skill effect.

    Code:
    CallSkillEffect(aIndex,0x48,0x01,aIndex,1)
    with this i call effect skill of "sleep" skill ... but, 0x48 -> 72 -> "Cancel Magic Skill"
    sleep magic stil number -> 219 -> 0xDB
    Last edited by BeginnerZ; 22-08-11 at 02:57 PM.

  24. #2024
    Proficient Member caothuphutho is offline
    MemberRank
    Dec 2007 Join Date
    0x00000000Location
    150Posts

    Re: GameServer 1.00.90

    offset Excilent Item Drop Rate 0041F0E1+1 not work :( . who can share how fix or enable ?

  25. #2025
    Proficient Member Van_Bom is offline
    MemberRank
    May 2009 Join Date
    194Posts

    Re: GameServer 1.00.90

    drop rate = 1/n

    if you set = 2000 -> Don't drop
    if you set = 2 -> drop rate = 50% -> Ex drop

    ---------- Post added at 03:01 PM ---------- Previous post was at 03:00 PM ----------

    drop rate = 1/n

    if you set = 2000 -> Don't drop
    if you set = 2 -> drop rate = 50% -> Ex drop



Advertisement