Hikayeler

Reklam vermek için turkmmo@gmail.com

KADİM EFSUN SİSTEMİ ORTALAMAY DEĞİŞTİRME SORUNU

NEPRESPAN

Level 3
TM Üye
Üye
Katılım
19 Ara 2020
Konular
40
Mesajlar
204
Online süresi
29g 71331s
Reaksiyon Skoru
28
Altın Konu
0
Başarım Puanı
65
TM Yaşı
5 Yıl 4 Ay 2 Gün
MmoLira
1,114
DevLira
6

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

merhaba kadim efsun sistemini yükledim ortalamalı silaha kadim efsun atarken ortalama efsununu da bozuyor bu sorunu nasıl çözeblirim


item_attribute.cpp:
int CItem::AddNewStyleAttribute(BYTE* bValues)
{
    int iAttributeSet = GetAttributeSetIndex();

    if (iAttributeSet < 0)
        return 1;

    // 1 = unknown attribute
    // 2 = not enough attribute size
    // 3 = success

    bool have_addon = false;

    TItemTable const* pProto = GetProto();

    if (pProto && pProto->sAddonType)
        have_addon = true;

    for (int apply = 0; apply < MAX_APPLY_NUM; ++apply)
    {
        const TItemAttrTable& r = g_map_itemAttr[apply];

        for (int i = 0; i < (have_addon ? 3 : 5); ++i)
        {
            if (!r.bMaxLevelBySet[iAttributeSet] && (apply == bValues[i]))
            {
                sys_err("Trying to add unknown attribute to item: bValue: %d", bValues[i]);
                return 1;
            }
        }
    }
    std::vector<BYTE> vec_bTypes;

    for (int i = 0; i < (have_addon ? 3 : 5); ++i)
        vec_bTypes.push_back(bValues[i]);

    std::sort(vec_bTypes.begin(), vec_bTypes.end());
    vec_bTypes.erase(std::unique(vec_bTypes.begin(), vec_bTypes.end()), vec_bTypes.end());

    if (have_addon && vec_bTypes.size() == 3)
    {
        ClearAttribute(false);

        ApplyAddon(pProto->sAddonType);

        AddAttr(vec_bTypes[0], number(1, 5));
        AddAttr(vec_bTypes[1], number(1, 5));
        AddAttr(vec_bTypes[2], number(1, 5));

        sys_log(0, "CItem::AddNewStyleAttribute(vec_bTypes[0]: %d, vec_bTypes[1]: %d, vec_bTypes[2]: %d, vec_bTypes[3]: %d, vec_bTypes[4]: %d)", vec_bTypes[0], vec_bTypes[1], vec_bTypes[2], vec_bTypes[3], vec_bTypes[4]);

        return 3;
    }

    bool bNormSucc = false;

    if (vec_bTypes.size() == 5)
    {
        ClearAttribute(false);

        for (itertype(vec_bTypes) it = vec_bTypes.begin(); it != vec_bTypes.end(); ++it)
        {
            AddAttr(*it, number(1, 5));
        }

        sys_log(0, "CItem::AddNewStyleAttribute(vec_bTypes[0]: %d, vec_bTypes[1]: %d, vec_bTypes[2]: %d, vec_bTypes[3]: %d, vec_bTypes[4]: %d)", vec_bTypes[0], vec_bTypes[1], vec_bTypes[2], vec_bTypes[3], vec_bTypes[4]);

        bNormSucc = true;
    }
    else { return 2; }

    sys_log(0, "CItem::AddNewStyleAttribute(bNormSucc: %d", bNormSucc);

    if (bNormSucc)
        return 3;

    return 1;
}


char_item.cpp:
bool CHARACTER::UseItemNewAttribute(TItemPos source_pos, TItemPos target_pos, BYTE* bValues)
{
    LPITEM item;
    LPITEM item_target;

    for (int i = 0; i < 5; ++i)
    {
        if (bValues[i] < 0 || bValues[i] > 255)
            return false;
    }

    if (!CanHandleItem())
        return false;

    if (!IsValidItemPosition(source_pos) || !(item = GetItem(source_pos)))
        return false;

    if (!IsValidItemPosition(target_pos) || !(item_target = GetItem(target_pos)))
        return false;

    if (item->GetVnum() != 71051)
        return false;

    if (item->IsExchanging())
        return false;

    if (item_target->IsExchanging())
        return false;

    if (item_target->IsEquipped())
        return false;

    if (ITEM_COSTUME == item_target->GetType())
        return false;

    if (item_target->GetVnum() == 50201 || item_target->GetVnum() == 50202 || item_target->GetVnum() == 11901 || item_target->GetVnum() == 11902 || item_target->GetVnum() == 11903 || item_target->GetVnum() == 11904 || item_target->GetVnum() == 11911 || item_target->GetVnum() == 11912 || item_target->GetVnum() == 11913 || item_target->GetVnum() == 11914)
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't apply this attribute on this item."));
        return false;
    }
    int processNewAttr = item_target->AddNewStyleAttribute(bValues);

    if (processNewAttr == 1)
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't apply this attribute on this item."));
        return false;
    }
    else if (processNewAttr == 2)
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't apply an attribute twice."));
        return false;
    }
    else if (processNewAttr == 3)
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Attributes has been added successfully!"));
        item->SetCount(item->GetCount() - 1);
        return true;
    }

    //sys_log(0, "%s: UseItemNewAttribute %s (inven %d, cell: %d)", GetName(), item->GetName(), window_type, wCell);

    return false;
}
 
Son düzenleme:
şöyle diyim c++ kodlayacak bilgim olmadığı için müdahale edemiyorum

genel warezdeki kodda şöyle bir blok var nasıl ekleyeceğim bilmiyorum

if (item->GetAttributeType(1) != 71){
if (item->GetAttributeType(0) != 72){
item->SetForceAttribute(0, 72, 13);
item->SetForceAttribute(1, 71, 1);
}
else
item->SetForceAttribute(1, 71, -1);
}
char_item.cpp aç

bool CHARACTER::UseItemNewAttribute(TItemPos source_pos, TItemPos target_pos, BYTE* bValues)
{

arat

if (!CanHandleItem())
return false;

Bloğun içerisinde arat

if (item->GetAttributeType(1) != 71){
if (item->GetAttributeType(0) != 72){
item->SetForceAttribute(0, 72, 13);
item->SetForceAttribute(1, 71, 1);
}
else
item->SetForceAttribute(1, 71, -1);
}

Üstüne ekle bu şekilde ekleyebilirsin hocam
 
char_item.cpp aç

bool CHARACTER::UseItemNewAttribute(TItemPos source_pos, TItemPos target_pos, BYTE* bValues)
{

arat

if (!CanHandleItem())
return false;

Bloğun içerisinde arat

if (item->GetAttributeType(1) != 71){
if (item->GetAttributeType(0) != 72){
item->SetForceAttribute(0, 72, 13);
item->SetForceAttribute(1, 71, 1);
}
else
item->SetForceAttribute(1, 71, -1);
}

Üstüne ekle bu şekilde ekleyebilirsin hocam

öneri için teşekkürler yalnız denedim de yanlız şöyle bir sorun var

Makefile:
In file included from fishing.h:4,
                 from char_item.cpp:23:
item.h: In member function 'bool CHARACTER::UseItemNewAttribute(TItemPos, TItemPos, BYTE*)':
item.h:120:53: warning: 'item' may be used uninitialized in this function [-Wmaybe-uninitialized]
  120 |   BYTE  GetAttributeType(int i) { return m_aAttr[i].bType; }
      |                                                     ^~~~~
char_item.cpp:7885:9: note: 'item' was declared here
 7885 |  LPITEM item;
 
öneri için teşekkürler yalnız denedim de yanlız şöyle bir sorun var

Makefile:
In file included from fishing.h:4,
                 from char_item.cpp:23:
item.h: In member function 'bool CHARACTER::UseItemNewAttribute(TItemPos, TItemPos, BYTE*)':
item.h:120:53: warning: 'item' may be used uninitialized in this function [-Wmaybe-uninitialized]
  120 |   BYTE  GetAttributeType(int i) { return m_aAttr[i].bType; }
      |                                                     ^~~~~
char_item.cpp:7885:9: note: 'item' was declared here
 7885 |  LPITEM item;
Skype: live:.cid.e8b765b1f3a12327 ekleyebilir misin? hocam yardımcı olmaya çalışayım.
 
sorun devam ediyor
 

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

Geri
Üst