Yardım Great OfflineShop Pazarı Kuran Oyuncunun ismi Lv. 1 %s olarak görünüyor

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

okan4141

Üye
Üye
Mesaj
58
Çözümler
2
Beğeni
21
Puan
449
Ticaret Puanı
0
34343.png


Yardımlarınızı bekliyorum :)
 
locale_string.txt ye şöyle bir eklenmesi gerekiyor. Ekledin mi ?

Kod:
"SHOP_NAME";
"#PLAYER_NAME# Marketi";
 
Tamamdır market izmi düzeldi. Peki 100 level olmama ragmen yanında Lv 1 bir hata mı yoksa herkeste mi öyle
Bir yerde küçük bir yanlışlık yapmışsın sanırım. Normalde "Yeniceri Marketi" gibi görünmesi lazım.
Hangi greati ekledin bilmiyorum ama SHOP_NAME bunu anlatım dosyalarında ara(büyük-küçük harf duyarlı olarak)
Daha sonra çıkan sonuçları kontrol et.

shop_manager.cpp de şurayı kontrol edebilirsin:
C++:
bool CShopManager::StartOfflineShop(DWORD id, bool onboot)
 
heeeee kanka ben şurayı eklememiştim


#if defined(SHOP_HIDE_NAME) && defined(OFFLINE_SHOP)
if (IsPC() || GetRaceNum() != 30000 && !IsPrivShop())
#endif
strlcpy(addPacket.name, GetName(), sizeof(addPacket.name));

void CHARACTER::EncodeInsertPacket (LPENTITY entity) :

içinde.


kanka doğru buradaki great offlineshop ekledim güncel olan zip ismi şu şekilde
Great Offline Shop Güncel.zip

Lv. 1 yazmasının sebebi filesta npc levellerini gösteren sistem var. ondan pazarda bi npc olduğu için onunda levelini gösteriyor. sanırım

6.sıra level stunu
30000 °³ÀλóÁ¡ KNIGHT NPC MELEE 1

aynen ondan Lv. 1 yazıyor.

6.sıra level stunu

30000 °³ÀλóÁ¡ KNIGHT NPC MELEE 1

aynen ondan Lv. 1 yazıyor.
 
En son bir moderatör tarafından düzenlenmiş:
NPC nin levelinin görünüyor olması bildiğim kadarıyla bir sistem değil, bir problem demektir.
InstanceBaseEffect.cpp dosyasındaki void CInstanceBase::UpdateTextTailLevel(DWORD level) fonksiyonunu ekler misin?
 
NPC nin levelinin görünüyor olması bildiğim kadarıyla bir sistem değil, bir problem demektir.
InstanceBaseEffect.cpp dosyasındaki void CInstanceBase::UpdateTextTailLevel(DWORD level) fonksiyonunu ekler misin?
C++:
void CInstanceBase::UpdateTextTailLevel(DWORD level)
{
    //static D3DXCOLOR s_kLevelColor = D3DXCOLOR(119.0f/255.0f, 246.0f/255.0f, 168.0f/255.0f, 1.0f);
    static D3DXCOLOR s_kLevelColor = D3DXCOLOR(152.0f / 255.0f, 255.0f / 255.0f, 51.0f / 255.0f, 1.0f);

    char szText[256];
    sprintf(szText, "Lv %d ", level);
    CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor);
}
 
Bu fonksiyonu komple şu şekilde değiştirip dene

C++:
void CInstanceBase::UpdateTextTailLevel(DWORD level)
{
    if (IsPC())
    {
        //static D3DXCOLOR s_kLevelColor = D3DXCOLOR(119.0f/255.0f, 246.0f/255.0f, 168.0f/255.0f, 1.0f);
        static D3DXCOLOR s_kLevelColor = D3DXCOLOR(152.0f / 255.0f, 255.0f / 255.0f, 51.0f / 255.0f, 1.0f);

        char szText[256];
        sprintf(szText, "Lv %d ", level);
        CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor);
    }
}
 
Bu fonksiyonu komple şu şekilde değiştirip dene

C++:
void CInstanceBase::UpdateTextTailLevel(DWORD level)
{
    if (IsPC())
    {
        //static D3DXCOLOR s_kLevelColor = D3DXCOLOR(119.0f/255.0f, 246.0f/255.0f, 168.0f/255.0f, 1.0f);
        static D3DXCOLOR s_kLevelColor = D3DXCOLOR(152.0f / 255.0f, 255.0f / 255.0f, 51.0f / 255.0f, 1.0f);

        char szText[256];
        sprintf(szText, "Lv %d ", level);
        CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor);
    }
}
Eyvallah kanka cansın. Şimdi 2 sorunum kaldı. 1.cisi pazardan item satın almak istediğimde satın almak istiyor musun dediğin evet dediğimde oyundan atıyor.(syserr yok) 2.cisi bu arama camını bu offlineshop'a nasıl uyarlayabilirim başka birşeyde kalmıyor. shop.cpp'deki buy fonksiyonunu mu kullanıyor satın almak istediğimde(oyundan atması için diyorum)
 
Kod:
#ifdef OFFLINE_SHOP
#if defined(BL_PRIVATESHOP_SEARCH_SYSTEM)
int CShop::Buy(LPCHARACTER ch, BYTE pos, bool bIsShopSearch)
#else
int CShop::Buy(LPCHARACTER ch, BYTE pos)
#endif
{
    if (IsLocked())
        return SHOP_SUBHEADER_GC_END;

    if (pos >= m_itemVector.size())
    {
        sys_log(0, "Shop::Buy : invalid position %d : %s", pos, ch->GetName());
        return SHOP_SUBHEADER_GC_INVALID_POS;
    }

    sys_log(0, "Shop::Buy : name %s pos %d", ch->GetName(), pos);

    GuestMapType::iterator it = m_map_guest.find(ch);

#if defined(BL_PRIVATESHOP_SEARCH_SYSTEM)
    if (bIsShopSearch == false && it == m_map_guest.end())
        return SHOP_SUBHEADER_GC_END;
#else
    if (it == m_map_guest.end())
        return SHOP_SUBHEADER_GC_END;
#endif

    SHOP_ITEM& r_item = m_itemVector[pos];

    if (r_item.price < 0)//@turkmmo58
    {
        LogManager::instance().HackLog("SHOP_BUY_GOLD_OVERFLOW", ch);
        return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY;
    }

    LPITEM pkSelectedItem = ITEM_MANAGER::instance().Find(r_item.itemid);

    if (IsPCShop())
    {
        if (!pkSelectedItem)
        {
#if defined(BL_PRIVATESHOP_SEARCH_SYSTEM)
            if (bIsShopSearch == true)
                return SHOP_SUBHEADER_GC_SOLD_OUT;
#endif
            sys_log(0, "Shop::Buy : Critical: This user seems to be a hacker : invalid pcshop item : BuyerPID:%d SellerPID:%d",
                    ch->GetPlayerID(),
                    m_pkPC->GetPlayerID());
            return false;
        }
        if ((pkSelectedItem->GetOwner() != m_pkPC))
        {
#if defined(BL_PRIVATESHOP_SEARCH_SYSTEM)
            if (bIsShopSearch == true)
                return SHOP_SUBHEADER_GC_SOLD_OUT;
#endif
            sys_log(0, "Shop::Buy : Critical: This user seems to be a hacker : invalid pcshop item : BuyerPID:%d SellerPID:%d",
                    ch->GetPlayerID(),
                    m_pkPC->GetPlayerID());
            return false;
        }
    }

    DWORD dwPrice = r_item.price;

#if defined(BL_PRIVATESHOP_SEARCH_SYSTEM)
    if (bIsShopSearch == false && it->second)    // if other empire, price is triple
        dwPrice *= 3;
#else
    if (it->second)    // if other empire, price is triple
        dwPrice *= 3;
#endif

    if (ch->GetGold() < r_item.price)
    {
        sys_log(1, "Shop::Buy : Not enough money : %s has %d, price %d", ch->GetName(), ch->GetGold(), dwPrice);
        return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY;
    }

    LPITEM item;

    if (m_pkPC)
        item = r_item.pkItem;
    else {
        item = ITEM_MANAGER::instance().CreateItem(r_item.vnum, r_item.count);
    }
    if (!item)
        return SHOP_SUBHEADER_GC_SOLD_OUT;

#ifdef ENABLE_SHOP_BLACKLIST
    if (!m_pkPC)
    {
        if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 0)
        {
            if (item->GetVnum() == 70024 || item->GetVnum() == 70035)
            {
                return SHOP_SUBHEADER_GC_END;
            }
        }
    }
#endif

    int iEmptyPos;
    if (item->IsDragonSoul())
        iEmptyPos = ch->GetEmptyDragonSoulInventory(item);
#ifdef ENABLE_SPECIAL_STORAGE
    else if (item->IsUpgradeItem())
        iEmptyPos = ch->GetEmptyUpgradeInventory(item);
    else if (item->IsBook())
        iEmptyPos = ch->GetEmptyBookInventory(item);
    else if (item->IsStone())
        iEmptyPos = ch->GetEmptyStoneInventory(item);
#endif
    else
        iEmptyPos = ch->GetEmptyInventory(item->GetSize());

    if (iEmptyPos < 0)
    {
        if (m_pkPC)
        {
            sys_log(1, "Shop::Buy at PC Shop : Inventory full : %s size %d", ch->GetName(), item->GetSize());
            return SHOP_SUBHEADER_GC_INVENTORY_FULL;
        }
        else
        {
            sys_log(1, "Shop::Buy : Inventory full : %s size %d", ch->GetName(), item->GetSize());
            M2_DESTROY_ITEM(item);
            return SHOP_SUBHEADER_GC_INVENTORY_FULL;
        }
    }

    ch->PointChange(POINT_GOLD, -dwPrice, false);

    DWORD dwTax = 0;
    int iVal = 0;

    {
        iVal = quest::CQuestManager::instance().GetEventFlag("personal_shop");

        if (0 < iVal)
        {
            if (iVal > 100)
                iVal = 100;

            dwTax = dwPrice * iVal / 100;
            dwPrice = dwPrice - dwTax;
        }
        else
        {
            iVal = 0;
            dwTax = 0;
        }
    }

    if (!m_pkPC)
    {
        CMonarch::instance().SendtoDBAddMoney(dwTax, ch->GetEmpire(), ch);
    }

    if (m_pkPC)
    {
        if (!m_pkPC->IsPrivShop())
            m_pkPC->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);

        DWORD mpid = (m_pkPC->IsPrivShop() ? m_pkPC->GetPrivShopOwner() : m_pkPC->GetPlayerID());
        char buf[512];

        if (item->GetVnum() >= 80003 && item->GetVnum() <= 80007)
        {
            snprintf(buf, sizeof(buf), "%s FROM: %u TO: %u PRICE: %u", item->GetName(), ch->GetPlayerID(), mpid, dwPrice);
            LogManager::instance().GoldBarLog(ch->GetPlayerID(), item->GetID(), SHOP_BUY, buf);
            LogManager::instance().GoldBarLog(mpid, item->GetID(), SHOP_SELL, buf);
        }
        LPITEM pkNewItem = ITEM_MANAGER::instance().CreateItem(r_item.vnum, r_item.count);

        if (pkNewItem)
        {
            for (int i = 0; i < ITEM_SOCKET_MAX_NUM; i++)
            {
                pkNewItem->SetSocket(i, item->GetSocket(i));
            }
            item->CopyAttributeTo(pkNewItem);

            if (pkNewItem->IsDragonSoul())
                pkNewItem->AddToCharacter(ch, TItemPos(DRAGON_SOUL_INVENTORY, iEmptyPos));
#ifdef ENABLE_SPECIAL_STORAGE
            else if (pkNewItem->IsUpgradeItem())
                pkNewItem->AddToCharacter(ch, TItemPos(UPGRADE_INVENTORY, iEmptyPos));
            else if (pkNewItem->IsBook())
                pkNewItem->AddToCharacter(ch, TItemPos(BOOK_INVENTORY, iEmptyPos));
            else if (pkNewItem->IsStone())
                pkNewItem->AddToCharacter(ch, TItemPos(STONE_INVENTORY, iEmptyPos));
#endif
            else
                pkNewItem->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));

            item->RemoveFromCharacter();
            M2_DESTROY_ITEM(item);
            ITEM_MANAGER::instance().FlushDelayedSave(pkNewItem);

            std::string szBuy("SHOP_BUY");
            std::string szSell("SHOP_SELL");

            if (m_pkPC->IsPrivShop())
            {
                std::string temp("OFFLINE_");
                szBuy = temp + szBuy;
                szSell = temp + szSell;
            }
            snprintf(buf, sizeof(buf), "%s %u(%s) %u %u", pkNewItem->GetName(), mpid, m_pkPC->GetName(), dwPrice, pkNewItem->GetCount());
            LogManager::instance().ItemLog(ch, pkNewItem, szBuy.c_str(), buf);
            snprintf(buf, sizeof(buf), "%s %u(%s) %u %u", pkNewItem->GetName(), ch->GetPlayerID(), ch->GetName(), dwPrice, pkNewItem->GetCount());
            LogManager::instance().ItemLog(m_pkPC, pkNewItem, szSell.c_str(), buf);

            r_item.pkItem = NULL;
            BroadcastUpdateItem(pos);

            if (m_pkPC->IsPrivShop()) {
                LPCHARACTER owner = CHARACTER_MANAGER::instance().FindByPID(m_pkPC->GetPrivShopOwner());

                    std::unique_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("UPDATE player.player_shop SET gold=gold + '%u' WHERE id='%d';", dwPrice, m_pkPC->GetPrivShop()));
                DBManager::instance().DirectQuery("DELETE FROM player_shop_items WHERE shop_id=%d and id = %d", m_pkPC->GetPrivShop(), r_item.itemid);

                if (owner)
                {
                    owner->LoadPrivShops();
                    if (owner->GetGiftPages() > 0)
                        owner->ChatPacket(CHAT_TYPE_COMMAND, "gift_info %d", owner->GetGiftPages());
                }
            }
            else
            {
                m_pkPC->PointChange(POINT_GOLD, dwPrice, false);

                if (iVal > 0)
                {
                    m_pkPC->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ÆǸűݾ×ÀÇ %d %% °¡ ¼¼±İÀ¸·Î ³ª°¡°ÔµË´Ï´Ù"), iVal);
                }
            }
            item = pkNewItem;
        }
        else {
            return SHOP_SUBHEADER_GC_INVALID_POS;
        }
    }
    else
    {
        if (item->IsDragonSoul())
            item->AddToCharacter(ch, TItemPos(DRAGON_SOUL_INVENTORY, iEmptyPos));
#ifdef ENABLE_SPECIAL_STORAGE
        else if (item->IsUpgradeItem())
            item->AddToCharacter(ch, TItemPos(UPGRADE_INVENTORY, iEmptyPos));
        else if (item->IsBook())
            item->AddToCharacter(ch, TItemPos(BOOK_INVENTORY, iEmptyPos));
        else if (item->IsStone())
            item->AddToCharacter(ch, TItemPos(STONE_INVENTORY, iEmptyPos));
#endif
        else
            item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
        ITEM_MANAGER::instance().FlushDelayedSave(item);        LogManager::instance().ItemLog(ch, item, "BUY", item->GetName());
        if (item->GetVnum() >= 80003 && item->GetVnum() <= 80007)
        {
            LogManager::instance().GoldBarLog(ch->GetPlayerID(), item->GetID(), PERSONAL_SHOP_BUY, "");
        }

        // DBManager::instance().SendMoneyLog(MONEY_LOG_SHOP, item->GetVnum(), -dwPrice);
    }

    if (item)
        sys_log(0, "SHOP: BUY: name %s %s(x %d):%u price %u", ch->GetName(), item->GetName(), item->GetCount(), item->GetID(), dwPrice);
    ch->Save();
#if defined(SHOP_AUTO_CLOSE) && defined(OFFLINE_SHOP)
    if (m_pkPC && m_pkPC->IsPrivShop())
    {
        if (GetItemCount()<=0)
            m_pkPC->DeleteMyShop();
    }
#endif
    return (SHOP_SUBHEADER_GC_OK);
}
 
Geri
Üst