Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!
Rica Ederim Arkadaşlar
Sorun Yaşayan olursa Skyp Adresim : mimikkral001 her türlü yardımcı olurum tüm hata & sorunlarınızda
Sorun Yaşayan olursa Skyp Adresim : mimikkral001 her türlü yardımcı olurum tüm hata & sorunlarınızdaMerhaba Arkadaşlar Söz Verdiğim Gibi Sizlerle 6 taş sistemini paylaşacağım.Öncelikle 6 taş sistemini paylaşacağım Mantıklı Olarak Düşünüldüğünde Bu sistemi Kendinize Göre 4 taş 5 taş vs. Şeklinde Ayarlayabilirsiniz isterseniz 9 taşta yapabilirsiniz fakat 9 taşı ekledikten sonra item silinir çünkü mysql.player.item tablosunda socket0 dan başlar socket5 e kadardır yani 9 taş felan yapacaksanız burdaki socket sayısınıda arttırmanız gerekmektedir.
Şimdi Konumuza Geçelim.
DB > AuctionManager.cpp Açılır Ve Aratılır.
Değiştirilir;Kod:"SELECT id, owner_id, count, vnum, socket0, socket1, socket2,"
Aratılır :Kod:"SELECT id, owner_id, count, vnum, socket0, socket1, socket2, socket3, socket4, socket5"
Altına Eklenir.Kod:str_to_number(item.alSockets[2], row[cur++]);
Açılır Cache.cppKod:str_to_number(item.alSockets[3], row[cur++]); str_to_number(item.alSockets[4], row[cur++]); str_to_number(item.alSockets[5], row[cur++]);
Kod Bloğu Aratılır.
Kod:void CItemCache::OnFlush()Kod:[SIZE=2][FONT=arial black]{[/FONT][/SIZE] [SIZE=2][FONT=arial black] if (m_data.vnum == 0) // vnumÀÌ 0ÀÌ¸é »èÁ¦Ç϶ó°í Ç¥½ÃµÈ °ÍÀÌ´Ù.[/FONT][/SIZE] [SIZE=2][FONT=arial black] {[/FONT][/SIZE] [SIZE=2][FONT=arial black] char szQuery[QUERY_MAX_LEN];[/FONT][/SIZE] [SIZE=2][FONT=arial black] snprintf(szQuery, sizeof(szQuery), "DELETE FROM item%s WHERE id=%u", GetTablePostfix(), m_data.id);[/FONT][/SIZE] [SIZE=2][FONT=arial black] CDBManager::instance().ReturnQuery(szQuery, QID_ITEM_DESTROY, 0, NULL);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] if (g_test_server)[/FONT][/SIZE] [SIZE=2][FONT=arial black] sys_log(0, "ItemCache::Flush : DELETE %u %s", m_data.id, szQuery);[/FONT][/SIZE] [SIZE=2][FONT=arial black] }[/FONT][/SIZE] [SIZE=2][FONT=arial black] else[/FONT][/SIZE] [SIZE=2][FONT=arial black] {[/FONT][/SIZE] [SIZE=2][FONT=arial black] long alSockets[ITEM_SOCKET_MAX_NUM];[/FONT][/SIZE] [SIZE=2][FONT=arial black] TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];[/FONT][/SIZE] [SIZE=2][FONT=arial black] bool isSocket = false, isAttr = false;[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] memset(&alSockets, 0, sizeof(long) * ITEM_SOCKET_MAX_NUM);[/FONT][/SIZE] [SIZE=2][FONT=arial black] memset(&aAttr, 0, sizeof(TPlayerItemAttribute) * ITEM_ATTRIBUTE_MAX_NUM);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] TPlayerItem * p = &m_data;[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] if (memcmp(alSockets, p->alSockets, sizeof(long) * ITEM_SOCKET_MAX_NUM))[/FONT][/SIZE] [SIZE=2][FONT=arial black] isSocket = true;[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] if (memcmp(aAttr, p->aAttr, sizeof(TPlayerItemAttribute) * ITEM_ATTRIBUTE_MAX_NUM))[/FONT][/SIZE] [SIZE=2][FONT=arial black] isAttr = true;[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] char szColumns[QUERY_MAX_LEN];[/FONT][/SIZE] [SIZE=2][FONT=arial black] char szValues[QUERY_MAX_LEN];[/FONT][/SIZE] [SIZE=2][FONT=arial black] char szUpdate[QUERY_MAX_LEN];[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] int iLen = snprintf(szColumns, sizeof(szColumns), "id, owner_id, window, pos, count, vnum");[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] int iValueLen = snprintf(szValues, sizeof(szValues), "%u, %u, %d, %d, %u, %u",[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->id, p->owner, p->window, p->pos, p->count, p->vnum);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] int iUpdateLen = snprintf(szUpdate, sizeof(szUpdate), "owner_id=%u, window=%d, pos=%d, count=%u, vnum=%u",[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->owner, p->window, p->pos, p->count, p->vnum);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] if (isSocket)[/FONT][/SIZE] [SIZE=2][FONT=arial black] {[/FONT][/SIZE] [SIZE=2][FONT=arial black] iLen += snprintf(szColumns + iLen, sizeof(szColumns) - iLen, ", socket0, socket1, socket2");[/FONT][/SIZE] [SIZE=2][FONT=arial black] iValueLen += snprintf(szValues + iValueLen, sizeof(szValues) - iValueLen,[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", %lu, %lu, %lu", p->alSockets[0], p->alSockets[1], p->alSockets[2]);[/FONT][/SIZE] [SIZE=2][FONT=arial black] iUpdateLen += snprintf(szUpdate + iUpdateLen, sizeof(szUpdate) - iUpdateLen,[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", socket0=%lu, socket1=%lu, socket2=%lu", p->alSockets[0], p->alSockets[1], p->alSockets[2]);[/FONT][/SIZE] [SIZE=2][FONT=arial black] }[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] if (isAttr)[/FONT][/SIZE] [SIZE=2][FONT=arial black] {[/FONT][/SIZE] [SIZE=2][FONT=arial black] iLen += snprintf(szColumns + iLen, sizeof(szColumns) - iLen, [/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6");[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] iValueLen += snprintf(szValues + iValueLen, sizeof(szValues) - iValueLen,[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d",[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[0].bType, p->aAttr[0].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[1].bType, p->aAttr[1].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[2].bType, p->aAttr[2].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[3].bType, p->aAttr[3].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[4].bType, p->aAttr[4].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[5].bType, p->aAttr[5].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[6].bType, p->aAttr[6].sValue);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] iUpdateLen += snprintf(szUpdate + iUpdateLen, sizeof(szUpdate) - iUpdateLen,[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype0=%d, attrvalue0=%d"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype1=%d, attrvalue1=%d"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype2=%d, attrvalue2=%d"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype3=%d, attrvalue3=%d"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype4=%d, attrvalue4=%d"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype5=%d, attrvalue5=%d"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype6=%d, attrvalue6=%d",[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[0].bType, p->aAttr[0].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[1].bType, p->aAttr[1].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[2].bType, p->aAttr[2].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[3].bType, p->aAttr[3].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[4].bType, p->aAttr[4].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[5].bType, p->aAttr[5].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[6].bType, p->aAttr[6].sValue);[/FONT][/SIZE] [SIZE=2][FONT=arial black] }[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] char szItemQuery[QUERY_MAX_LEN + QUERY_MAX_LEN];[/FONT][/SIZE] [SIZE=2][FONT=arial black] snprintf(szItemQuery, sizeof(szItemQuery), "REPLACE INTO item%s (%s) VALUES(%s)", GetTablePostfix(), szColumns, szValues);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] if (g_test_server) [/FONT][/SIZE] [SIZE=2][FONT=arial black] sys_log(0, "ItemCache::Flush :REPLACE (%s)", szItemQuery);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] CDBManager::instance().ReturnQuery(szItemQuery, QID_ITEM_SAVE, 0, NULL);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] //g_item_info.Add(p->vnum);[/FONT][/SIZE] [SIZE=2][FONT=arial black] ++g_item_count;[/FONT][/SIZE] [SIZE=2][FONT=arial black] }[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] m_bNeedQuery = false;[/FONT][/SIZE] [FONT=arial black]}[/FONT]
Kod Bloğu Değiştirilir
Kod:void CItemCache::OnFlush()Kod:[SIZE=2][FONT=arial black]{[/FONT][/SIZE] [SIZE=2][FONT=arial black] if (m_data.vnum == 0) // vnumÀÌ 0ÀÌ¸é »èÁ¦Ç϶ó°í Ç¥½ÃµÈ °ÍÀÌ´Ù.[/FONT][/SIZE] [SIZE=2][FONT=arial black] {[/FONT][/SIZE] [SIZE=2][FONT=arial black] char szQuery[QUERY_MAX_LEN];[/FONT][/SIZE] [SIZE=2][FONT=arial black] snprintf(szQuery, sizeof(szQuery), "DELETE FROM item%s WHERE id=%u", GetTablePostfix(), m_data.id);[/FONT][/SIZE] [SIZE=2][FONT=arial black] CDBManager::instance().ReturnQuery(szQuery, QID_ITEM_DESTROY, 0, NULL);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] if (g_test_server)[/FONT][/SIZE] [SIZE=2][FONT=arial black] sys_log(0, "ItemCache::Flush : DELETE %u %s", m_data.id, szQuery);[/FONT][/SIZE] [SIZE=2][FONT=arial black] }[/FONT][/SIZE] [SIZE=2][FONT=arial black] else[/FONT][/SIZE] [SIZE=2][FONT=arial black] {[/FONT][/SIZE] [SIZE=2][FONT=arial black] long alSockets[ITEM_SOCKET_MAX_NUM];[/FONT][/SIZE] [SIZE=2][FONT=arial black] TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];[/FONT][/SIZE] [SIZE=2][FONT=arial black] bool isSocket = false, isAttr = false;[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] memset(&alSockets, 0, sizeof(long) * ITEM_SOCKET_MAX_NUM);[/FONT][/SIZE] [SIZE=2][FONT=arial black] memset(&aAttr, 0, sizeof(TPlayerItemAttribute) * ITEM_ATTRIBUTE_MAX_NUM);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] TPlayerItem * p = &m_data;[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] if (memcmp(alSockets, p->alSockets, sizeof(long) * ITEM_SOCKET_MAX_NUM))[/FONT][/SIZE] [SIZE=2][FONT=arial black] isSocket = true;[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] if (memcmp(aAttr, p->aAttr, sizeof(TPlayerItemAttribute) * ITEM_ATTRIBUTE_MAX_NUM))[/FONT][/SIZE] [SIZE=2][FONT=arial black] isAttr = true;[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] char szColumns[QUERY_MAX_LEN];[/FONT][/SIZE] [SIZE=2][FONT=arial black] char szValues[QUERY_MAX_LEN];[/FONT][/SIZE] [SIZE=2][FONT=arial black] char szUpdate[QUERY_MAX_LEN];[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] int iLen = snprintf(szColumns, sizeof(szColumns), "id, owner_id, window, pos, count, vnum");[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] int iValueLen = snprintf(szValues, sizeof(szValues), "%u, %u, %d, %d, %u, %u",[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->id, p->owner, p->window, p->pos, p->count, p->vnum);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] int iUpdateLen = snprintf(szUpdate, sizeof(szUpdate), "owner_id=%u, window=%d, pos=%d, count=%u, vnum=%u",[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->owner, p->window, p->pos, p->count, p->vnum);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] if (isSocket)[/FONT][/SIZE] [SIZE=2][FONT=arial black] {[/FONT][/SIZE] [SIZE=2][FONT=arial black] iLen += snprintf(szColumns + iLen, sizeof(szColumns) - iLen, ", socket0, socket1, socket2, socket3, socket4, socket5");[/FONT][/SIZE] [SIZE=2][FONT=arial black] iValueLen += snprintf(szValues + iValueLen, sizeof(szValues) - iValueLen,[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", %lu, %lu, %lu, %lu, %lu, %lu", p->alSockets[0], p->alSockets[1], p->alSockets[2], p->alSockets[3], p->alSockets[4], p->alSockets[5]);[/FONT][/SIZE] [SIZE=2][FONT=arial black] iUpdateLen += snprintf(szUpdate + iUpdateLen, sizeof(szUpdate) - iUpdateLen,[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", socket0=%lu, socket1=%lu, socket2=%lu, socket3=%lu, socket4=%lu, socket5=%lu", p->alSockets[0], p->alSockets[1], p->alSockets[2], p->alSockets[3], p->alSockets[4], p->alSockets[5]);[/FONT][/SIZE] [SIZE=2][FONT=arial black] }[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] if (isAttr)[/FONT][/SIZE] [SIZE=2][FONT=arial black] {[/FONT][/SIZE] [SIZE=2][FONT=arial black] iLen += snprintf(szColumns + iLen, sizeof(szColumns) - iLen, [/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6");[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] iValueLen += snprintf(szValues + iValueLen, sizeof(szValues) - iValueLen,[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d",[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[0].bType, p->aAttr[0].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[1].bType, p->aAttr[1].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[2].bType, p->aAttr[2].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[3].bType, p->aAttr[3].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[4].bType, p->aAttr[4].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[5].bType, p->aAttr[5].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[6].bType, p->aAttr[6].sValue);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] iUpdateLen += snprintf(szUpdate + iUpdateLen, sizeof(szUpdate) - iUpdateLen,[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype0=%d, attrvalue0=%d"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype1=%d, attrvalue1=%d"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype2=%d, attrvalue2=%d"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype3=%d, attrvalue3=%d"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype4=%d, attrvalue4=%d"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype5=%d, attrvalue5=%d"[/FONT][/SIZE] [SIZE=2][FONT=arial black] ", attrtype6=%d, attrvalue6=%d",[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[0].bType, p->aAttr[0].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[1].bType, p->aAttr[1].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[2].bType, p->aAttr[2].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[3].bType, p->aAttr[3].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[4].bType, p->aAttr[4].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[5].bType, p->aAttr[5].sValue,[/FONT][/SIZE] [SIZE=2][FONT=arial black] p->aAttr[6].bType, p->aAttr[6].sValue);[/FONT][/SIZE] [SIZE=2][FONT=arial black] }[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] char szItemQuery[QUERY_MAX_LEN + QUERY_MAX_LEN];[/FONT][/SIZE] [SIZE=2][FONT=arial black] snprintf(szItemQuery, sizeof(szItemQuery), "REPLACE INTO item%s (%s) VALUES(%s)", GetTablePostfix(), szColumns, szValues);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] if (g_test_server) [/FONT][/SIZE] [SIZE=2][FONT=arial black] sys_log(0, "ItemCache::Flush :REPLACE (%s)", szItemQuery);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] CDBManager::instance().ReturnQuery(szItemQuery, QID_ITEM_SAVE, 0, NULL);[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] //g_item_info.Add(p->vnum);[/FONT][/SIZE] [SIZE=2][FONT=arial black] ++g_item_count;[/FONT][/SIZE] [SIZE=2][FONT=arial black] }[/FONT][/SIZE] [SIZE=2][FONT=arial black] [/FONT][/SIZE] [SIZE=2][FONT=arial black] m_bNeedQuery = false;[/FONT][/SIZE] [FONT=arial black]}[/FONT]
Açılır ClientManager.cpp
öncelikle şu kod aratılır
yaklaşık 10 11 tane olacaktır hepsi değiştirilirKod:dwSocket2
aratılır.Kod:dwSocket5
DeğiştirilirKod:socket0, socket1, socket2,
Kod:socket0, socket1, socket2, socket3, socket4, socket5
aratılır
değiştirilirKod:socket0, socket1, socket2
Kod:socket0, socket1, socket2, socket3, socket4, socket5
arat
değiştirKod:"VALUES(%u, %u, '%s', %d, %u, %u, %u, %u, %u)",
aratKod:"VALUES(%u, %u, '%s', %d, %u, %u, %u, %u, %u, %u, %u, %u)",
değiştirKod:pItemAward->dwVnum, pItemAward->dwCount, pItemAward->dwSocket0, pItemAward->dwSocket1, dwSocket2);
aratKod:pItemAward->dwVnum, pItemAward->dwCount, pItemAward->dwSocket0, pItemAward->dwSocket1, pItemAward->dwSocket2, pItemAward->dwSocket3, pItemAward->dwSocket4, dwSocket5);
altına ekleKod:item.alSockets[2] = pItemAward->dwSocket2;
Kod:item.alSockets[3] = pItemAward->dwSocket3;Kod:[SIZE=2][FONT=arial black] item.alSockets[4] = pItemAward->dwSocket4;[/FONT][/SIZE] [FONT=arial black] item.alSockets[5] = dwSocket5;[/FONT]
arat
değiştirKod:"REPLACE INTO item%s (id, owner_id, window, pos, count, vnum, socket0, socket1, socket2, "
aratKod:"REPLACE INTO item%s (id, owner_id, window, pos, count, vnum, socket0, socket1, socket2, socket3, socket4, socket5, "
değiştirKod:"VALUES(%u, %u, %d, %d, %u, %u, %ld, %ld, %ld, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)",
Burda Depodan İtem Kaybolmayı engelliyoruzKod:"VALUES(%u, %u, %d, %d, %u, %u, %ld, %ld, %ld, %ld, %ld, %ld, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)",
arat
altına ekleKod:p->alSockets[2],
Kod:p->alSockets[3],Kod:[SIZE=2][FONT=arial black] p->alSockets[4],[/FONT][/SIZE] [FONT=arial black] p->alSockets[5],[/FONT]
ClientManagerPlayer.cpp açılır
aratılır
altına eklenirKod:str_to_number(item.alSockets[2], row[cur++]);
Kod:str_to_number(item.alSockets[3], row[cur++]);Kod:[SIZE=2][FONT=arial black] str_to_number(item.alSockets[4], row[cur++]);[/FONT][/SIZE] [FONT=arial black] str_to_number(item.alSockets[5], row[cur++]);[/FONT]
aratılır
yanına eklenirKod:socket0,socket1,socket2,
tekrar yukarıdaki işlem yapılır.Kod:socket3,socket4,socket5,
açılır ItemAwardManager.cpp
aratılır
yanına eklenirKod:socket0,socket1,socket2
aratılırKod:socket3,socket4,socket5
altına eklenirKod:str_to_number(kData->dwSocket2, row[col++]);
açılır ItemAwardManager.hKod:str_to_number(kData->dwSocket3, row[col++]); str_to_number(kData->dwSocket4, row[col++]); str_to_number(kData->dwSocket5, row[col++]);
aratılır
altına eklenirKod:DWORD dwSocket2;
DB ile işimiz BittiKod:DWORD dwSocket3; DWORD dwSocket4; DWORD dwSocket5;
common/item_lengt.h
açılır ve aratılır
item_socket_max_num
6 yapılır
Client/gametype.h
arat
ITEM_SOCKET_SLOT_MAX_NUM arat 3 ü 6 yap
Game/src/constants.cpp
aratılır
3, // WEAPON_SWORD,
WEAPON_DAGGER
WEAPON_BOW
WEAPON_TWO_HANDED
WEAPON_BELL
WEAPON_FAN
ARMOR_BODY
bunların yanındaki "3" Sayısı 6 olarak değiştirilir.
şimdi item proto'ya geçelim çoğu kişi yanlış anlatıyor sadece MySQL item_protoda örnek veriyorum runik kılıcı +9
6 taş yapacağınız itemlerin en sonuna gidin sağ tarafına orda socket_pct var o 3 tür onu 6 yapalım işlem bu kadar
NOT: Python item_proto ellemeyin yani ordaki socket_pct ellemeyin eğer orayla oynarsanız o itemin parlaması gidecektir!
Skype;mimikkral001
Yapamayan Herkese Yardımcı Olurum Yeterki Boş boş konuşmayın.
Kanıt ;
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Dipnot:Bu sistemi Kimseden alıntı yapmadım hiç bir forumdan ben ürettim diye bir şeyde demiyorum tamamen kendi mantığımla yaptım.
İtem Yansıtma Problemi fixi aşşağıda
root/uitooltip.py
açılır.
////////////////////////////////
defSetHyperlinkItem(self, tokens):
arat
def SetHyperlinkItem(self, tokens):
minTokenCount = 3 + player.METIN_SOCKET_MAX_NUM
maxTokenCount = minTokenCount + 2 * player.ATTRIBUTE_SLOT_MAX_NUM
if tokens and len(tokens) >= minTokenCount and len(tokens) <= maxTokenCount:
head, vnum, flag = tokens[:3]
itemVnum = int(vnum, 16)
metinSlot = [int(metin, 16) for metin in tokens[3:9]]
rests = tokens[9:]
if rests:
attrSlot = []
rests.reverse()
while rests:
key = int(rests.pop(), 16)
if rests:
val = int(rests.pop())
attrSlot.append((key, val))
attrSlot += [(0, 0)] * (player.ATTRIBUTE_SLOT_MAX_NUM - len(attrSlot))
else:
attrSlot = [(0, 0)] * player.ATTRIBUTE_SLOT_MAX_NUM
self.ClearToolTip()
self.AddItemData(itemVnum, metinSlot, attrSlot)
ItemToolTip.OnUpdate(self)
değiştir.
pythonchatmodule.cpp
açılır
//////////////////////////
PyObject * chatGetLinkFromHyperlink(PyObject * poSelf, PyObject * poArgs)
arat
PyObject * chatGetLinkFromHyperlink(PyObject * poSelf, PyObject * poArgs)
{
char * szHyperlink;
if (!PyTuple_GetString(poArgs, 0, &szHyperlink))
return Py_BuildException();
std::string stHyperlink(szHyperlink);
std::vector<std::string> results;
split_string(stHyperlink, ":", results, false);
// item:vnum:flag:socket0:socket1:socket2:socket3:socket4:socket5
if (0 == results[0].compare("item"))
{
if (results.size() < 9)
return Py_BuildValue("s", "");
CItemData * pItemData = NULL;
if (CItemManager::Instance().GetItemDataPointer(htoi(results[1].c_str()), &pItemData))
{
char buf[1024] = { 0 };
char itemlink[256];
int len;
bool isAttr = false;
len = snprintf(itemlink, sizeof(itemlink), "item:%x:%x:%x:%x:%x:%x:%x:%x",
htoi(results[1].c_str()),
htoi(results[2].c_str()),
htoi(results[3].c_str()),
htoi(results[4].c_str()),
htoi(results[5].c_str()),
htoi(results[6].c_str()),
htoi(results[7].c_str()),
htoi(results[8].c_str()));
if (results.size() >= 11)
{
for (int i = 9; i < results.size(); i += 2)
{
len += snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d",
htoi(results.c_str()),
atoi(results[i+1].c_str()));
isAttr = true;
}
}
if (isAttr)
//"item:¹øÈ£:Ç÷¡±×:¼ÒÄÏ0:¼ÒÄÏ1:¼ÒÄÏ2"
snprintf(buf, sizeof(buf), "|cffffc700|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
else
snprintf(buf, sizeof(buf), "|cfff1e6c0|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
return Py_BuildValue("s", buf);
}
}
return Py_BuildValue("s", "");
}
değiştir.
///////////////////////////////////////////////////////////////////
pythonplayermodule.cpp
PyObject * playerGetItemLink(PyObject * poSelf, PyObject * poArgs)
arat
///////////////////////////
PyObject * playerGetItemLink(PyObject * poSelf, PyObject * poArgs)
{
TItemPos Cell;
switch (PyTuple_Size(poArgs))
{
case 1:
if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell))
return Py_BuildException();
break;
case 2:
if (!PyTuple_GetByte(poArgs, 0, &Cell.window_type))
return Py_BuildException();
if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell))
return Py_BuildException();
break;
default:
return Py_BuildException();
}
const TItemData * pPlayerItem = CPythonPlayer::Instance().GetItemData(Cell);
CItemData * pItemData = NULL;
char buf[1024];
if (pPlayerItem && CItemManager::Instance().GetItemDataPointer(pPlayerItem->vnum, &pItemData))
{
char itemlink[256];
int len;
bool isAttr = false;
len = snprintf(itemlink, sizeof(itemlink), "item:%x:%x:%x:%x:%x:%x:%x:%x",
pPlayerItem->vnum, pPlayerItem->flags,
pPlayerItem->alSockets[0], pPlayerItem->alSockets[1], pPlayerItem->alSockets[2] , pPlayerItem->alSockets[3], pPlayerItem->alSockets[4], pPlayerItem->alSockets[5]);
for (int i = 0; i < ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++i)
if (pPlayerItem->aAttr.bType != 0)
{
len += snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d",
pPlayerItem->aAttr.bType, pPlayerItem->aAttr.sValue);
isAttr = true;
}
if( GetDefaultCodePage() == CP_ARABIC ) {
if (isAttr)
//"item:¹øÈ£:Ç÷¡±×:¼ÒÄÏ0:¼ÒÄÏ1:¼ÒÄÏ2"
snprintf(buf, sizeof(buf), " |h|r[%s]|cffffc700|H%s|h", pItemData->GetName(), itemlink);
else
snprintf(buf, sizeof(buf), " |h|r[%s]|cfff1e6c0|H%s|h", pItemData->GetName(), itemlink);
} else {
if (isAttr)
//"item:¹øÈ£:Ç÷¡±×:¼ÒÄÏ0:¼ÒÄÏ1:¼ÒÄÏ2"
snprintf(buf, sizeof(buf), "|cffffc700|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
else
snprintf(buf, sizeof(buf), "|cfff1e6c0|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
}
}
else
buf[0] = '\0';
return Py_BuildValue("s", buf);
}
değiştir.
Keyifli Forumlar...
konu için teşekkürler sourcesi olan arkadaşlar için iş görür bir konu
eline sağlık yabancı sitelerde görmüştüm bu bugların giderimlerini felan foruma kazandırdığın için teşekkürler 
Rica ederimkonu için teşekkürler sourcesi olan arkadaşlar için iş görür bir konueline sağlık yabancı sitelerde görmüştüm bu bugların giderimlerini felan foruma kazandırdığın için teşekkürler
![]()
socket arttırmak biraz mantık işi c++ mysql felan hata yapmicaksın yaptığın hatalarda olabilecek şeyleritem yansıtmama
depoya koyduğun zaman item ya kaybolur yada taşı silinir
depoya hiç item koyulmama
envanterden item kaybolma felan sorunlar getirebilir
o yüzden yapın build edin deneyin eğer sorun varsa ki olacağını sanmıyorum ona göre çözeriz sıkıntı yok

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 4
- Görüntüleme
- 276
- Cevaplar
- 11
- Görüntüleme
- 536
- Cevaplar
- 3
- Görüntüleme
- 165
- Cevaplar
- 14
- Görüntüleme
- 640