Fethi Polat 1
Fethi Polat
xranzei 1
xranzei
Bvural41 1
Bvural41
kralhakan2009 1
kralhakan2009
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Vahsi Uzman 1
Vahsi Uzman
Cannn6161 1
Cannn6161
B 1
berione65
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com
Kaynak ikonu

Battle Zone System By Zenu 1

indirmek için izniniz yok

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Hey Turkmmo!

Kod:
/*
 * PLAYER LOAD
 */
void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoadPacket * packet)
{
    CPlayerTableCache * c;
    TPlayerTable * pTab;
    
    //
    // 한 계정에 속한 모든 캐릭터들 캐쉬처리
    //
    CLoginData * pLoginData = GetLoginDataByAID(packet->account_id);

    if (pLoginData)
    {
        for (int n = 0; n < PLAYER_PER_ACCOUNT; ++n)
            if (pLoginData->GetAccountRef().players[n].dwID != 0)
                DeleteLogoutPlayer(pLoginData->GetAccountRef().players[n].dwID);
    }

    //----------------------------------------------------------------
    // 1. 유저정보가 DBCache 에 존재 : DBCache에서
    // 2. 유저정보가 DBCache 에 없음 : DB에서
    // ---------------------------------------------------------------
    
    //----------------------------------
    // 1. 유저정보가 DBCache 에 존재 : DBCache에서
    //----------------------------------
    if ((c = GetPlayerCache(packet->player_id)))
    {
        CLoginData * pkLD = GetLoginDataByAID(packet->account_id);

        if (!pkLD || pkLD->IsPlay())
        {
            sys_log(0, "PLAYER_LOAD_ERROR: LoginData %p IsPlay %d", pkLD, pkLD ? pkLD->IsPlay() : 0);
            peer->EncodeHeader(HEADER_DG_PLAYER_LOAD_FAILED, dwHandle, 0);
            return;
        }

        pTab = c->Get();

        pkLD->SetPlay(true);
        SendLoginToBilling(pkLD, true);
        thecore_memcpy(pTab->aiPremiumTimes, pkLD->GetPremiumPtr(), sizeof(pTab->aiPremiumTimes));

        peer->EncodeHeader(HEADER_DG_PLAYER_LOAD_SUCCESS, dwHandle, sizeof(TPlayerTable));
        peer->Encode(pTab, sizeof(TPlayerTable));

        if (packet->player_id != pkLD->GetLastPlayerID())
        {
            TPacketNeedLoginLogInfo logInfo;
            logInfo.dwPlayerID = packet->player_id;

            pkLD->SetLastPlayerID( packet->player_id );

            peer->EncodeHeader( HEADER_DG_NEED_LOGIN_LOG, dwHandle, sizeof(TPacketNeedLoginLogInfo) );
            peer->Encode( &logInfo, sizeof(TPacketNeedLoginLogInfo) );
        }

        char szQuery[1024] = { 0, };

        TItemCacheSet * pSet = GetItemCacheSet(pTab->id);

        sys_log(0, "[PLAYER_LOAD] ID %s pid %d gold %d ", pTab->name, pTab->id, pTab->gold);

        //--------------------------------------------
        // 아이템 & AFFECT & QUEST 로딩 :
        //--------------------------------------------
        // 1) 아이템이 DBCache 에 존재 : DBCache 에서 가져옴
        // 2) 아이템이 DBCache 에 없음 : DB 에서 가져옴

        /////////////////////////////////////////////
        // 1) 아이템이 DBCache 에 존재 : DBCache 에서 가져옴
        /////////////////////////////////////////////
        if (pSet)
        {
            static std::vector<TPlayerItem> s_items;
            s_items.resize(pSet->size());

            DWORD dwCount = 0;
            TItemCacheSet::iterator it = pSet->begin();

            while (it != pSet->end())
            {
                CItemCache * c = *it++;
                TPlayerItem * p = c->Get();

                if (p->vnum) // vnum이 없으면 삭제된 아이템이다.
                    thecore_memcpy(&s_items[dwCount++], p, sizeof(TPlayerItem));
            }

            if (g_test_server)
                sys_log(0, "ITEM_CACHE: HIT! %s count: %u", pTab->name, dwCount);

            peer->EncodeHeader(HEADER_DG_ITEM_LOAD, dwHandle, sizeof(DWORD) + sizeof(TPlayerItem) * dwCount);
            peer->EncodeDWORD(dwCount);

            if (dwCount)
                peer->Encode(&s_items[0], sizeof(TPlayerItem) * dwCount);

            // Quest
            snprintf(szQuery, sizeof(szQuery),
                    "SELECT dwPID,szName,szState,lValue FROM quest%s WHERE dwPID=%d AND lValue<>0",
                    GetTablePostfix(), pTab->id);
            
            CDBManager::instance().ReturnQuery(szQuery, QID_QUEST, peer->GetHandle(), new ClientHandleInfo(dwHandle,0,packet->account_id));

            // Affect
            snprintf(szQuery, sizeof(szQuery),
                    "SELECT dwPID,bType,bApplyOn,lApplyValue,dwFlag,lDuration,lSPCost FROM affect%s WHERE dwPID=%d",
                    GetTablePostfix(), pTab->id);
            CDBManager::instance().ReturnQuery(szQuery, QID_AFFECT, peer->GetHandle(), new ClientHandleInfo(dwHandle));
        }
        /////////////////////////////////////////////
        // 2) 아이템이 DBCache 에 없음 : DB 에서 가져옴
        /////////////////////////////////////////////
        else
        {
            snprintf(szQuery, sizeof(szQuery),
                    "SELECT id,window+0,pos,count,vnum,transmutation,bind,socket0,socket1,socket2,attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6 "
                    "FROM item%s WHERE owner_id=%d AND (window < %d or window = %d)",
                    GetTablePostfix(), pTab->id, SAFEBOX, DRAGON_SOUL_INVENTORY);

            CDBManager::instance().ReturnQuery(szQuery,
                    QID_ITEM,
                    peer->GetHandle(),
                    new ClientHandleInfo(dwHandle, pTab->id));
            snprintf(szQuery, sizeof(szQuery),
                    "SELECT dwPID, szName, szState, lValue FROM quest%s WHERE dwPID=%d",
                    GetTablePostfix(), pTab->id);

            CDBManager::instance().ReturnQuery(szQuery,
                    QID_QUEST,
                    peer->GetHandle(),
                    new ClientHandleInfo(dwHandle, pTab->id));
            snprintf(szQuery, sizeof(szQuery),
                    "SELECT dwPID, bType, bApplyOn, lApplyValue, dwFlag, lDuration, lSPCost FROM affect%s WHERE dwPID=%d",
                    GetTablePostfix(), pTab->id);

            CDBManager::instance().ReturnQuery(szQuery,
                    QID_AFFECT,
                    peer->GetHandle(),
                    new ClientHandleInfo(dwHandle, pTab->id));
        }
        //ljw
        //return;
    }
    //----------------------------------
    // 2. 유저정보가 DBCache 에 없음 : DB에서
    //----------------------------------
    else
    {
        sys_log(0, "[PLAYER_LOAD] Load from PlayerDB pid[%d]", packet->player_id);

        char queryStr[QUERY_MAX_LEN];

        //--------------------------------------------------------------
        // 캐릭터 정보 얻어오기 : 무조건 DB에서
        //--------------------------------------------------------------
        snprintf(queryStr, sizeof(queryStr),
                                                "SELECT "
                                                "id, "
                                                "name, "
                                                "job, "
                                                "voice, "
                                                "dir, "
                                                "x, "
                                                "y, "
                                                "z, "
                                                "map_index, "
                                                "exit_x, "
                                                "exit_y, "
                                                "exit_map_index, "
                                                "hp, "
                                                "mp, "
                                                "stamina, "
                                                "random_hp, "
                                                "random_sp, "
                                                "playtime, "
                                                "gold, "
                                                "level, "
                                                "level_step, "
                                                "st, "
                                                "ht, "
                                                "dx, "
                                                "iq, "
                                                "exp, "
                                                "stat_point, "
                                                "skill_point, "
                                                "sub_skill_point, "
                                                "stat_reset_count, "
                                                "part_base, "
                                                "part_hair, "
#ifdef __SASH_SYSTEM__
                                                "part_sash, "
#endif
                                                "skill_level, "
                                                "quickslot, "
                                                "skill_group, "
                                                "alignment, "
                                                "mobile, "
                                                "horse_level, "
                                                "horse_riding, "
                                                "horse_hp, "
                                                "horse_hp_droptime, "
                                                "horse_stamina, "
                                                "horse_skill_point, "
                                                "UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(last_play), "
#ifdef __GAYA__
                                                "gaya, "
#endif
#ifdef ENABLE_CHEQUE_SYSTEM
                                                "cheque, "
#endif
#ifdef ENABLE_EXTEND_INVEN_SYSTEM
                                                "envanter, "
#endif
#ifdef __ENABLE_BATTLE_FIELD__
                                                "battle_points, "
#endif
                                                "FROM player%s WHERE id=%d"
                                                ,
                                                GetTablePostfix(),
                                                packet->player_id
                );

        ClientHandleInfo * pkInfo = new ClientHandleInfo(dwHandle, packet->player_id);
        pkInfo->account_id = packet->account_id;
        CDBManager::instance().ReturnQuery(queryStr, QID_PLAYER, peer->GetHandle(), pkInfo);

        //--------------------------------------------------------------
        // 아이템 가져오기
        //--------------------------------------------------------------
        snprintf(queryStr, sizeof(queryStr),
                "SELECT id,window+0,pos,count,vnum,transmutation,bind,socket0,socket1,socket2,attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6 "
                "FROM item%s WHERE owner_id=%d AND (window < %d or window = %d)",
                GetTablePostfix(), packet->player_id, SAFEBOX, DRAGON_SOUL_INVENTORY);
        CDBManager::instance().ReturnQuery(queryStr, QID_ITEM, peer->GetHandle(), new ClientHandleInfo(dwHandle, packet->player_id));

        //--------------------------------------------------------------
        // QUEST 가져오기
        //--------------------------------------------------------------
        snprintf(queryStr, sizeof(queryStr),
                "SELECT dwPID,szName,szState,lValue FROM quest%s WHERE dwPID=%d",
                GetTablePostfix(), packet->player_id);
        CDBManager::instance().ReturnQuery(queryStr, QID_QUEST, peer->GetHandle(), new ClientHandleInfo(dwHandle, packet->player_id,packet->account_id));
        //독일 선물 기능에서 item_award테이블에서 login 정보를 얻기위해 account id도 넘겨준다
        //--------------------------------------------------------------
        // AFFECT 가져오기
        //--------------------------------------------------------------
        snprintf(queryStr, sizeof(queryStr),
                "SELECT dwPID,bType,bApplyOn,lApplyValue,dwFlag,lDuration,lSPCost FROM affect%s WHERE dwPID=%d",
                GetTablePostfix(), packet->player_id);
        CDBManager::instance().ReturnQuery(queryStr, QID_AFFECT, peer->GetHandle(), new ClientHandleInfo(dwHandle, packet->player_id));
    }
    
    
}

Kod:
SYSERR: Dec 29 17:54:54.725868 :: ChildLoop: AsyncSQL: query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id=1' at line 1 (query: SELECT id, name, job, voice, dir, x, y, z, map_index, exit_x, exit_y, exit_map_index, hp, mp, stamina, random_hp, random_sp, playtime, gold, level, level_step, st, ht, dx, iq, exp, stat_point, skill_point, sub_skill_point, stat_reset_count, part_base, part_hair, part_sash, skill_level, quickslot, skill_group, alignment, mobile, horse_level, horse_riding, horse_hp, horse_hp_droptime, horse_stamina, horse_skill_point, UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(last_play), gaya, cheque, envanter, battle_pointsFROM player WHERE id=1 errno: 1064)
SYSERR: Dec 29 17:54:54.825500 :: RESULT_COMPOSITE_PLAYER: null MYSQL_RES QID 0

pls help mee thanx
 
köszi a segitséget.....
 
Teşekkürler
 
I have a simple problem

Kod:
SYSERR: Jul  2 07:18:40 :: ChildLoop: AsyncSQL: query failed: Unknown column 'battle_points' in 'field list' (query: SELECT id, name, job, voice, dir, x, y, z, map_index, exit_x, exit_y, exit_map_index, hp, mp, stamina, random_hp, random_sp, playtime, gold, battle_points,cheque, level, level_step, st, ht, dx, iq, exp, stat_point, skill_point, sub_skill_point, stat_reset_count, part_base, part_hair, part_sash, skill_level, quickslot, skill_group, alignment, mobile, horse_level, horse_riding, horse_hp, horse_hp_droptime, horse_stamina, UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(last_play), horse_skill_point ,gaya ,envanter FROM player WHERE id=19 errno: 1054)
SYSERR: Jul  2 07:18:40 :: RESULT_COMPOSITE_PLAYER: null MYSQL_RES QID 0

 
I have a simple problem

Kod:
SYSERR: Jul  2 07:18:40 :: ChildLoop: AsyncSQL: query failed: Unknown column 'battle_points' in 'field list' (query: SELECT id, name, job, voice, dir, x, y, z, map_index, exit_x, exit_y, exit_map_index, hp, mp, stamina, random_hp, random_sp, playtime, gold, battle_points,cheque, level, level_step, st, ht, dx, iq, exp, stat_point, skill_point, sub_skill_point, stat_reset_count, part_base, part_hair, part_sash, skill_level, quickslot, skill_group, alignment, mobile, horse_level, horse_riding, horse_hp, horse_hp_droptime, horse_stamina, UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(last_play), horse_skill_point ,gaya ,envanter FROM player WHERE id=19 errno: 1054)
SYSERR: Jul  2 07:18:40 :: RESULT_COMPOSITE_PLAYER: null MYSQL_RES QID 0

probably you made a mistake at clientmanagerplayer.cpp. you forgot to add "battle_points" field i guess.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst