emirhanHCL 1
emirhanHCL
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
farkmt2official 1
farkmt2official
mannaxxx 1
mannaxxx
Bvural41 1
Bvural41
Agora Metin2 1
Agora Metin2
Hikaye Ekle

[C++]6 Taş Sistemi Sorunlar Fixed

merhaba 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.
Kod:
"select id,    owner_id, count, vnum, socket0, socket1, socket2,"
değiştirilir;
Kod:
"select id,    owner_id, count, vnum, socket0, socket1, socket2, socket3, socket4, socket5"
aratılır :
Kod:
str_to_number(item.alsockets[2], row[cur++]);
altına eklenir.
Kod:
str_to_number(item.alsockets[3], row[cur++]);
str_to_number(item.alsockets[4], row[cur++]);
str_to_number(item.alsockets[5], row[cur++]);
açılır cache.cpp
kod bloğu aratılır.
Kod:
void cıtemcache::onflush()
Kod:
[sıze=2]{[/sıze]
[sıze=2]    if (m_data.vnum == 0) // vnumàì 0àì¸é »èá¦çï¶ó°í 祽ãµè °íàì´ù.[/sıze]
[sıze=2]    {[/sıze]
[sıze=2]        char szquery[query_max_len];[/sıze]
[sıze=2]        snprintf(szquery, sizeof(szquery), "delete from item%s where id=%u", gettablepostfix(), m_data.id);[/sıze]
[sıze=2]        cdbmanager::instance().returnquery(szquery, qıd_ıtem_destroy, 0, null);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        if (g_test_server)[/sıze]
[sıze=2]            sys_log(0, "ıtemcache::flush : Delete %u %s", m_data.id, szquery);[/sıze]
[sıze=2]    }[/sıze]
[sıze=2]    else[/sıze]
[sıze=2]    {[/sıze]
[sıze=2]        long alsockets[ıtem_socket_max_num];[/sıze]
[sıze=2]        tplayerıtemattribute aattr[ıtem_attrıbute_max_num];[/sıze]
[sıze=2]        bool issocket = false, isattr = false;[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        memset(&alsockets, 0, sizeof(long) * ıtem_socket_max_num);[/sıze]
[sıze=2]        memset(&aattr, 0, sizeof(tplayerıtemattribute) * ıtem_attrıbute_max_num);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        tplayerıtem * p = &m_data;[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        if (memcmp(alsockets, p->alsockets, sizeof(long) * ıtem_socket_max_num))[/sıze]
[sıze=2]            issocket = true;[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        if (memcmp(aattr, p->aattr, sizeof(tplayerıtemattribute) * ıtem_attrıbute_max_num))[/sıze]
[sıze=2]            isattr = true;[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        char szcolumns[query_max_len];[/sıze]
[sıze=2]        char szvalues[query_max_len];[/sıze]
[sıze=2]        char szupdate[query_max_len];[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        int ilen = snprintf(szcolumns, sizeof(szcolumns), "id, owner_id, window, pos, count, vnum");[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        int ivaluelen = snprintf(szvalues, sizeof(szvalues), "%u, %u, %d, %d, %u, %u",[/sıze]
[sıze=2]                p->id, p->owner, p->window, p->pos, p->count, p->vnum);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        int iupdatelen = snprintf(szupdate, sizeof(szupdate), "owner_id=%u, window=%d, pos=%d, count=%u, vnum=%u",[/sıze]
[sıze=2]                p->owner, p->window, p->pos, p->count, p->vnum);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        if (issocket)[/sıze]
[sıze=2]        {[/sıze]
[sıze=2]            ilen += snprintf(szcolumns + ilen, sizeof(szcolumns) - ilen, ", socket0, socket1, socket2");[/sıze]
[sıze=2]            ivaluelen += snprintf(szvalues + ivaluelen, sizeof(szvalues) - ivaluelen,[/sıze]
[sıze=2]                    ", %lu, %lu, %lu", p->alsockets[0], p->alsockets[1], p->alsockets[2]);[/sıze]
[sıze=2]            iupdatelen += snprintf(szupdate + iupdatelen, sizeof(szupdate) - iupdatelen,[/sıze]
[sıze=2]                    ", socket0=%lu, socket1=%lu, socket2=%lu", p->alsockets[0], p->alsockets[1], p->alsockets[2]);[/sıze]
[sıze=2]        }[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        if (isattr)[/sıze]
[sıze=2]        {[/sıze]
[sıze=2]            ilen += snprintf(szcolumns + ilen, sizeof(szcolumns) - ilen, [/sıze]
[sıze=2]                    ", attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3"[/sıze]
[sıze=2]                    ", attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6");[/sıze]
[sıze=2]
[/sıze]
[sıze=2]            ivaluelen += snprintf(szvalues + ivaluelen, sizeof(szvalues) - ivaluelen,[/sıze]
[sıze=2]                    ", %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d",[/sıze]
[sıze=2]                    p->aattr[0].btype, p->aattr[0].svalue,[/sıze]
[sıze=2]                    p->aattr[1].btype, p->aattr[1].svalue,[/sıze]
[sıze=2]                    p->aattr[2].btype, p->aattr[2].svalue,[/sıze]
[sıze=2]                    p->aattr[3].btype, p->aattr[3].svalue,[/sıze]
[sıze=2]                    p->aattr[4].btype, p->aattr[4].svalue,[/sıze]
[sıze=2]                    p->aattr[5].btype, p->aattr[5].svalue,[/sıze]
[sıze=2]                    p->aattr[6].btype, p->aattr[6].svalue);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]            iupdatelen += snprintf(szupdate + iupdatelen, sizeof(szupdate) - iupdatelen,[/sıze]
[sıze=2]                    ", attrtype0=%d, attrvalue0=%d"[/sıze]
[sıze=2]                    ", attrtype1=%d, attrvalue1=%d"[/sıze]
[sıze=2]                    ", attrtype2=%d, attrvalue2=%d"[/sıze]
[sıze=2]                    ", attrtype3=%d, attrvalue3=%d"[/sıze]
[sıze=2]                    ", attrtype4=%d, attrvalue4=%d"[/sıze]
[sıze=2]                    ", attrtype5=%d, attrvalue5=%d"[/sıze]
[sıze=2]                    ", attrtype6=%d, attrvalue6=%d",[/sıze]
[sıze=2]                    p->aattr[0].btype, p->aattr[0].svalue,[/sıze]
[sıze=2]                    p->aattr[1].btype, p->aattr[1].svalue,[/sıze]
[sıze=2]                    p->aattr[2].btype, p->aattr[2].svalue,[/sıze]
[sıze=2]                    p->aattr[3].btype, p->aattr[3].svalue,[/sıze]
[sıze=2]                    p->aattr[4].btype, p->aattr[4].svalue,[/sıze]
[sıze=2]                    p->aattr[5].btype, p->aattr[5].svalue,[/sıze]
[sıze=2]                    p->aattr[6].btype, p->aattr[6].svalue);[/sıze]
[sıze=2]        }[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        char szıtemquery[query_max_len + query_max_len];[/sıze]
[sıze=2]        snprintf(szıtemquery, sizeof(szıtemquery), "replace ınto item%s (%s) values(%s)", gettablepostfix(), szcolumns, szvalues);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        if (g_test_server)    [/sıze]
[sıze=2]            sys_log(0, "ıtemcache::flush :replace  (%s)", szıtemquery);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        cdbmanager::instance().returnquery(szıtemquery, qıd_ıtem_save, 0, null);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        //g_item_info.add(p->vnum);[/sıze]
[sıze=2]        ++g_item_count;[/sıze]
[sıze=2]    }[/sıze]
[sıze=2]
[/sıze]
[sıze=2]    m_bneedquery = false;[/sıze]
}
kod bloğu değiştirilir
Kod:
void cıtemcache::onflush()
Kod:
[sıze=2]{[/sıze]
[sıze=2]    if (m_data.vnum == 0) // vnumàì 0àì¸é »èá¦çï¶ó°í 祽ãµè °íàì´ù.[/sıze]
[sıze=2]    {[/sıze]
[sıze=2]        char szquery[query_max_len];[/sıze]
[sıze=2]        snprintf(szquery, sizeof(szquery), "delete from item%s where id=%u", gettablepostfix(), m_data.id);[/sıze]
[sıze=2]        cdbmanager::instance().returnquery(szquery, qıd_ıtem_destroy, 0, null);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        if (g_test_server)[/sıze]
[sıze=2]            sys_log(0, "ıtemcache::flush : Delete %u %s", m_data.id, szquery);[/sıze]
[sıze=2]    }[/sıze]
[sıze=2]    else[/sıze]
[sıze=2]    {[/sıze]
[sıze=2]        long alsockets[ıtem_socket_max_num];[/sıze]
[sıze=2]        tplayerıtemattribute aattr[ıtem_attrıbute_max_num];[/sıze]
[sıze=2]        bool issocket = false, isattr = false;[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        memset(&alsockets, 0, sizeof(long) * ıtem_socket_max_num);[/sıze]
[sıze=2]        memset(&aattr, 0, sizeof(tplayerıtemattribute) * ıtem_attrıbute_max_num);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        tplayerıtem * p = &m_data;[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        if (memcmp(alsockets, p->alsockets, sizeof(long) * ıtem_socket_max_num))[/sıze]
[sıze=2]            issocket = true;[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        if (memcmp(aattr, p->aattr, sizeof(tplayerıtemattribute) * ıtem_attrıbute_max_num))[/sıze]
[sıze=2]            isattr = true;[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        char szcolumns[query_max_len];[/sıze]
[sıze=2]        char szvalues[query_max_len];[/sıze]
[sıze=2]        char szupdate[query_max_len];[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        int ilen = snprintf(szcolumns, sizeof(szcolumns), "id, owner_id, window, pos, count, vnum");[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        int ivaluelen = snprintf(szvalues, sizeof(szvalues), "%u, %u, %d, %d, %u, %u",[/sıze]
[sıze=2]                p->id, p->owner, p->window, p->pos, p->count, p->vnum);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        int iupdatelen = snprintf(szupdate, sizeof(szupdate), "owner_id=%u, window=%d, pos=%d, count=%u, vnum=%u",[/sıze]
[sıze=2]                p->owner, p->window, p->pos, p->count, p->vnum);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        if (issocket)[/sıze]
[sıze=2]        {[/sıze]
[sıze=2]            ilen += snprintf(szcolumns + ilen, sizeof(szcolumns) - ilen, ", socket0, socket1, socket2, socket3, socket4, socket5");[/sıze]
[sıze=2]            ivaluelen += snprintf(szvalues + ivaluelen, sizeof(szvalues) - ivaluelen,[/sıze]
[sıze=2]                    ", %lu, %lu, %lu, %lu, %lu, %lu", p->alsockets[0], p->alsockets[1], p->alsockets[2], p->alsockets[3], p->alsockets[4], p->alsockets[5]);[/sıze]
[sıze=2]            iupdatelen += snprintf(szupdate + iupdatelen, sizeof(szupdate) - iupdatelen,[/sıze]
[sıze=2]                    ", 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]);[/sıze]
[sıze=2]        }[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        if (isattr)[/sıze]
[sıze=2]        {[/sıze]
[sıze=2]            ilen += snprintf(szcolumns + ilen, sizeof(szcolumns) - ilen, [/sıze]
[sıze=2]                    ", attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3"[/sıze]
[sıze=2]                    ", attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6");[/sıze]
[sıze=2]
[/sıze]
[sıze=2]            ivaluelen += snprintf(szvalues + ivaluelen, sizeof(szvalues) - ivaluelen,[/sıze]
[sıze=2]                    ", %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d",[/sıze]
[sıze=2]                    p->aattr[0].btype, p->aattr[0].svalue,[/sıze]
[sıze=2]                    p->aattr[1].btype, p->aattr[1].svalue,[/sıze]
[sıze=2]                    p->aattr[2].btype, p->aattr[2].svalue,[/sıze]
[sıze=2]                    p->aattr[3].btype, p->aattr[3].svalue,[/sıze]
[sıze=2]                    p->aattr[4].btype, p->aattr[4].svalue,[/sıze]
[sıze=2]                    p->aattr[5].btype, p->aattr[5].svalue,[/sıze]
[sıze=2]                    p->aattr[6].btype, p->aattr[6].svalue);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]            iupdatelen += snprintf(szupdate + iupdatelen, sizeof(szupdate) - iupdatelen,[/sıze]
[sıze=2]                    ", attrtype0=%d, attrvalue0=%d"[/sıze]
[sıze=2]                    ", attrtype1=%d, attrvalue1=%d"[/sıze]
[sıze=2]                    ", attrtype2=%d, attrvalue2=%d"[/sıze]
[sıze=2]                    ", attrtype3=%d, attrvalue3=%d"[/sıze]
[sıze=2]                    ", attrtype4=%d, attrvalue4=%d"[/sıze]
[sıze=2]                    ", attrtype5=%d, attrvalue5=%d"[/sıze]
[sıze=2]                    ", attrtype6=%d, attrvalue6=%d",[/sıze]
[sıze=2]                    p->aattr[0].btype, p->aattr[0].svalue,[/sıze]
[sıze=2]                    p->aattr[1].btype, p->aattr[1].svalue,[/sıze]
[sıze=2]                    p->aattr[2].btype, p->aattr[2].svalue,[/sıze]
[sıze=2]                    p->aattr[3].btype, p->aattr[3].svalue,[/sıze]
[sıze=2]                    p->aattr[4].btype, p->aattr[4].svalue,[/sıze]
[sıze=2]                    p->aattr[5].btype, p->aattr[5].svalue,[/sıze]
[sıze=2]                    p->aattr[6].btype, p->aattr[6].svalue);[/sıze]
[sıze=2]        }[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        char szıtemquery[query_max_len + query_max_len];[/sıze]
[sıze=2]        snprintf(szıtemquery, sizeof(szıtemquery), "replace ınto item%s (%s) values(%s)", gettablepostfix(), szcolumns, szvalues);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        if (g_test_server)    [/sıze]
[sıze=2]            sys_log(0, "ıtemcache::flush :replace  (%s)", szıtemquery);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        cdbmanager::instance().returnquery(szıtemquery, qıd_ıtem_save, 0, null);[/sıze]
[sıze=2]
[/sıze]
[sıze=2]        //g_item_info.add(p->vnum);[/sıze]
[sıze=2]        ++g_item_count;[/sıze]
[sıze=2]    }[/sıze]
[sıze=2]
[/sıze]
[sıze=2]    m_bneedquery = false;[/sıze]
}

açılır clientmanager.cpp
öncelikle şu kod aratılır
Kod:
dwsocket2
yaklaşık 10 11 tane olacaktır hepsi değiştirilir
Kod:
dwsocket5
aratılır.
Kod:
socket0, socket1, socket2,
değiştirilir
Kod:
socket0, socket1, socket2, socket3, socket4, socket5

aratılır
Kod:
socket0, socket1, socket2
değiştirilir
Kod:
socket0, socket1, socket2, socket3, socket4, socket5

arat
Kod:
"values(%u, %u, '%s', %d, %u, %u, %u, %u, %u)",
değiştir
Kod:
"values(%u, %u, '%s', %d, %u, %u, %u, %u, %u, %u, %u, %u)",
arat
Kod:
pıtemaward->dwvnum, pıtemaward->dwcount, pıtemaward->dwsocket0, pıtemaward->dwsocket1, dwsocket2);
değiştir
Kod:
pıtemaward->dwvnum, pıtemaward->dwcount, pıtemaward->dwsocket0, pıtemaward->dwsocket1, pıtemaward->dwsocket2, pıtemaward->dwsocket3, pıtemaward->dwsocket4, dwsocket5);
arat
Kod:
item.alsockets[2] = pıtemaward->dwsocket2;
altına ekle
Kod:
                    item.alsockets[3] = pıtemaward->dwsocket3;
Kod:
[sıze=2]                    item.alsockets[4] = pıtemaward->dwsocket4;[/sıze]
                    item.alsockets[5] = dwsocket5;
arat
Kod:
"replace ınto item%s (id, owner_id, window, pos, count, vnum, socket0, socket1, socket2, "
değiştir
Kod:
"replace ınto item%s (id, owner_id, window, pos, count, vnum, socket0, socket1, socket2, socket3, socket4, socket5, "
arat
Kod:
"values(%u, %u, %d, %d, %u, %u, %ld, %ld, %ld, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)",
değiştir
Kod:
"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)",
burda depodan item kaybolmayı engelliyoruz :)
arat
Kod:
p->alsockets[2],
altına ekle
Kod:
            p->alsockets[3],
Kod:
[sıze=2]            p->alsockets[4],[/sıze]
            p->alsockets[5],
clientmanagerplayer.cpp açılır

aratılır
Kod:
str_to_number(item.alsockets[2], row[cur++]);
altına eklenir
Kod:
        str_to_number(item.alsockets[3], row[cur++]);
Kod:
[sıze=2]        str_to_number(item.alsockets[4], row[cur++]);[/sıze]
        str_to_number(item.alsockets[5], row[cur++]);
aratılır
Kod:
socket0,socket1,socket2,
yanına eklenir
Kod:
socket3,socket4,socket5,
tekrar yukarıdaki işlem yapılır.
Açılır ıtemawardmanager.cpp
aratılır
Kod:
socket0,socket1,socket2
yanına eklenir
Kod:
socket3,socket4,socket5
aratılır
Kod:
str_to_number(kdata->dwsocket2, row[col++]);
altına eklenir
Kod:
str_to_number(kdata->dwsocket3, row[col++]);
str_to_number(kdata->dwsocket4, row[col++]);
str_to_number(kdata->dwsocket5, row[col++]);
açılır ıtemawardmanager.h
aratılır
Kod:
dword    dwsocket2;
altına eklenir
Kod:
dword    dwsocket3;
dword    dwsocket4;
dword    dwsocket5;
db ile işimiz bitti
common/item_lengt.h
açılır ve aratılır
item_socket_max_num
6 yapılır
client/gametype.h
arat
ıtem_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 ;



dipnot:bu sistemi kimseden alıntı yapmadım hiç bir forumdan ben ürettim diye bir şeyde demiyorum tamamen kendi mantığımla yaptım.
Item yansıtma problemi fixi aşşağıda :)
root/uitooltip.py
arat değiştir
Kod:
[font=arial black]    def sethyperlinkıtem(self, tokens):[/font]
[font=arial black]        mintokencount = 3 + player.metın_socket_max_num[/font]
[font=arial black]        maxtokencount = mintokencount + 2 * player.attrıbute_slot_max_num[/font]
[font=arial black]        if tokens and len(tokens) >= mintokencount and len(tokens) <= maxtokencount:[/font]
[font=arial black]            head, vnum, flag = tokens[:3][/font]
[font=arial black]            itemvnum = int(vnum, 16)[/font]
[font=arial black]            metinslot = [int(metin, 16) for metin in tokens[3:9]][/font]
[font=arial black]
[/font]
[font=arial black]            rests = tokens[9:][/font]
[font=arial black]            if rests:[/font]
[font=arial black]                attrslot = [][/font]
[font=arial black]
[/font]
[font=arial black]                rests.reverse()[/font]
[font=arial black]                while rests:[/font]
[font=arial black]                    key = int(rests.pop(), 16)[/font]
[font=arial black]                    if rests:[/font]
[font=arial black]                        val = int(rests.pop())[/font]
[font=arial black]                        attrslot.append((key, val))[/font]
[font=arial black]
[/font]
[font=arial black]                attrslot += [(0, 0)] * (player.attrıbute_slot_max_num - len(attrslot))[/font]
[font=arial black]            else:[/font]
[font=arial black]                attrslot = [(0, 0)] * player.attrıbute_slot_max_num[/font]
[font=arial black]
[/font]
[font=arial black]            self.cleartooltip()[/font]
[font=arial black]            self.addıtemdata(itemvnum, metinslot, attrslot)[/font]
[font=arial black]
[/font]
[font=arial black]            ıtemtooltip.onupdate(self)[/font]
////////////////////////////////


pythonchatmodule.cpp




açılır




//////////////////////////




pyobject * chatgetlinkfromhyperlink(pyobject * poself, pyobject * poargs)




arat


Kod:
pyobject * chatgetlinkfromhyperlink(pyobject * poself, pyobject * poargs)
Kod:
[font=arial black]{[/font]
[font=arial black]    char * szhyperlink;[/font]

[font=arial black]    if (!pytuple_getstring(poargs, 0, &szhyperlink))[/font]
[font=arial black]        return py_buildexception();[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]    std::string sthyperlink(szhyperlink);[/font]
[font=arial black]    std::vector<std::string> results;[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]    split_string(sthyperlink, ":", results, false);[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]    // item:vnum:flag:socket0:socket1:socket2:socket3:socket4:socket5[/font]
[font=arial black]    if (0 == results[0].compare("item"))[/font]
[font=arial black]    {[/font]
[font=arial black]        if (results.size() < 9)[/font]
[font=arial black]            return py_buildvalue("s", "");[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]        cıtemdata * pıtemdata = null;[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]        if (cıtemmanager::ınstance().getıtemdatapointer(htoi(results[1].c_str()), &pıtemdata))[/font]
[font=arial black]        {[/font]
[font=arial black]            char buf[1024] = { 0 };[/font]
[font=arial black]            char itemlink[256];[/font]
[font=arial black]            int len;[/font]
[font=arial black]            bool isattr = false;[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]            len = snprintf(itemlink, sizeof(itemlink), "item:%x:%x:%x:%x:%x:%x:%x:%x", [/font]
[font=arial black]                    htoi(results[1].c_str()),[/font]
[font=arial black]                    htoi(results[2].c_str()),[/font]
[font=arial black]                    htoi(results[3].c_str()),[/font]
[font=arial black]                    htoi(results[4].c_str()),[/font]
[font=arial black]                    htoi(results[5].c_str()),[/font]
[font=arial black]                    htoi(results[6].c_str()),[/font]
[font=arial black]                    htoi(results[7].c_str()),[/font]
[font=arial black]                    htoi(results[8].c_str()));[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]            if (results.size() >= 11)[/font]
[font=arial black]            {[/font]
[font=arial black]                for (int i = 9; i < results.size(); i += 2)[/font]
[font=arial black]                {[/font]
[font=arial black]                    len += snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d", [/font]
[font=arial black]                            htoi(results[i].c_str()),[/font]
[font=arial black]                            atoi(results[i+1].c_str()));[/font]
[font=arial black]                    isattr = true;[/font]
[font=arial black]                }[/font]
[font=arial black]            }[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]            if (isattr)[/font]
[font=arial black]                //"item:¹øè£:çã·¡±×:¼òäï0:¼òäï1:¼òäï2"[/font]
[font=arial black]                snprintf(buf, sizeof(buf), "|cffffc700|h%s|h[%s]|h|r", itemlink, pıtemdata->getname());[/font]
[font=arial black]            else[/font]
[font=arial black]                snprintf(buf, sizeof(buf), "|cfff1e6c0|h%s|h[%s]|h|r", itemlink, pıtemdata->getname());[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]            return py_buildvalue("s", buf);[/font]
[font=arial black]        }[/font]
[font=arial black]    }[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]    return py_buildvalue("s", "");[/font]
[font=arial black]}[/font]




değiştir.


///////////////////////////////////////////////////////////////////


pythonplayermodule.cpp
arat
Kod:
pyobject * playergetıtemlink(pyobject * poself, pyobject * poargs)[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]///////////////////////////[/font]
[font=arial black]
[/font]
[font=arial black][code]pyobject * playergetıtemlink(pyobject * poself, pyobject * poargs)
Kod:
[font=arial black]{[/font]
[font=arial black]    tıtempos cell;[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]    switch (pytuple_size(poargs))[/font]
[font=arial black]    {[/font]
[font=arial black]    case 1:    [/font]
[font=arial black]        if (!pytuple_getınteger(poargs, 0, &cell.cell))[/font]
[font=arial black]            return py_buildexception();[/font]
[font=arial black]        break;[/font]
[font=arial black]    case 2:[/font]
[font=arial black]        if (!pytuple_getbyte(poargs, 0, &cell.window_type))[/font]
[font=arial black]            return py_buildexception();[/font]
[font=arial black]        if (!pytuple_getınteger(poargs, 1, &cell.cell))[/font]
[font=arial black]            return py_buildexception();[/font]
[font=arial black]        break;[/font]
[font=arial black]    default:[/font]
[font=arial black]        return py_buildexception();[/font]
[font=arial black]    }[/font]
[font=arial black]    const tıtemdata * pplayerıtem = cpythonplayer::ınstance().getıtemdata(cell);[/font]
[font=arial black]    cıtemdata * pıtemdata = null;[/font]
[font=arial black]    char buf[1024];[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]    if (pplayerıtem && cıtemmanager::ınstance().getıtemdatapointer(pplayerıtem->vnum, &pıtemdata))[/font]
[font=arial black]    {[/font]
[font=arial black]        char itemlink[256];[/font]
[font=arial black]        int len;[/font]
[font=arial black]        bool isattr = false;[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]        len = snprintf(itemlink, sizeof(itemlink), "item:%x:%x:%x:%x:%x:%x:%x:%x", [/font]
[font=arial black]                pplayerıtem->vnum, pplayerıtem->flags,[/font]
[font=arial black]                pplayerıtem->alsockets[0], pplayerıtem->alsockets[1], pplayerıtem->alsockets[2] , pplayerıtem->alsockets[3], pplayerıtem->alsockets[4], pplayerıtem->alsockets[5]);[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]        for (int i = 0; i < ıtem_attrıbute_slot_max_num; ++i)[/font]
[font=arial black]            if (pplayerıtem->aattr[i].btype != 0)[/font]
[font=arial black]            {[/font]
[font=arial black]                len += snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d", [/font]
[font=arial black]                        pplayerıtem->aattr[i].btype, pplayerıtem->aattr[i].svalue);[/font]
[font=arial black]                isattr = true;[/font]
[font=arial black]            }[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]        if( getdefaultcodepage() == cp_arabıc ) {[/font]
[font=arial black]            if (isattr)[/font]
[font=arial black]                //"item:¹øè£:çã·¡±×:¼òäï0:¼òäï1:¼òäï2"[/font]
[font=arial black]                snprintf(buf, sizeof(buf), " |h|r[%s]|cffffc700|h%s|h", pıtemdata->getname(), itemlink);[/font]
[font=arial black]            else[/font]
[font=arial black]                snprintf(buf, sizeof(buf), " |h|r[%s]|cfff1e6c0|h%s|h", pıtemdata->getname(), itemlink);[/font]
[font=arial black]        } else {[/font]
[font=arial black]            if (isattr)[/font]
[font=arial black]                //"item:¹øè£:çã·¡±×:¼òäï0:¼òäï1:¼òäï2"[/font]
[font=arial black]                snprintf(buf, sizeof(buf), "|cffffc700|h%s|h[%s]|h|r", itemlink, pıtemdata->getname());[/font]
[font=arial black]            else[/font]
[font=arial black]                snprintf(buf, sizeof(buf), "|cfff1e6c0|h%s|h[%s]|h|r", itemlink, pıtemdata->getname());[/font]
[font=arial black]        }[/font]
[font=arial black]    }[/font]
[font=arial black]    else[/font]
[font=arial black]        buf[0] = '\0';[/font]
[font=arial black]
[/font]
[font=arial black]
[/font]
[font=arial black]    return py_buildvalue("s", buf);[/font]
[font=arial black]}[/font]


değiştir.


keyifli forumlar...


itemi depoya atınca efsun değişiyordu oncekinlerde bundada varmı sorun :)
 

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

Geri
Üst