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
berkmenoo 1
berkmenoo
Hikaye Ekle

Cevaplanmadı Tc offlineshop banka sorunu

  • Konuyu başlatan Konuyu başlatan onurcan2212
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 8
  • Görüntüleme Görüntüleme 813
Merhaba tc offine shop kurdum fakat envanterde 1t varken bankadan 2t çektiğimiz zaman para boşa gidiyor nasıl çözebilirim?
Kullandığım off shop https://forum.turkmmo.com/konu/3655506-finchwork-offline-shop-mt2-tc-son-surum/
offlineshop_manager.cpp açıyosun

bunu arat:
bool COfflineShopManager::WithdrawAllMoney(LPCHARACTER ch)
{

altına ekle:

unsigned int maxGold = 2147483647
if(ch->GetGold() + llMoneyToGet > maxGold){
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bankadan çekilen tutar yang limitini geçiyor!"));
return false;
}


tc de bankadan yang ve won çekme fonksiyonunun adı böylemiydi emin değilim ama mantığını anladığını düşünüyorum
 
offlineshop_manager.cpp açıyosun

bunu arat:
bool COfflineShopManager::WithdrawAllMoney(LPCHARACTER ch)
{

altına ekle:

unsigned int maxGold = 2147483647
if(ch->GetGold() + llMoneyToGet > maxGold){
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bankadan çekilen tutar yang limitini geçiyor!"));
return false;
}


tc de bankadan yang ve won çekme fonksiyonunun adı böylemiydi emin değilim ama mantığını anladığını düşünüyorum
olmadı maalesef 'llMoneyToGet' was not declared in this scope böyle bi hata alıyorum eklediğim kod satırı bu şekilde

C++:
bool COfflineShopManager::WithdrawAllMoney(LPCHARACTER ch)
{

    unsigned int maxGold = 2147483647;
    if(ch->GetGold() + llMoneyToGet > maxGold)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bankadan çekilen tutar yang limitini geçiyor!"));
        return false;
    }

    if (!ch)
        return false;

    std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT gold_offlineshop FROM player.player WHERE id = %u", ch->GetPlayerID()));

    if (pMsg->Get()->uiNumRows == 0)
        return false;

    // BEGIN_MAX_YANG
    int llBankMoney = 0, llMoneyToGet = 0;
    // END_OF_MAX_YANG
    bool bGiveLittleMoney = false; // for prevent bug GOLD_MAX in the bank

    MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult);
    str_to_number(llBankMoney, row[0]);

    if (llBankMoney <= 0)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bank is empty!"));
        return false;
    }

    if (llBankMoney > GOLD_MAX)
    {
        bGiveLittleMoney = true;
        llMoneyToGet = 100000000;
    }
    else
        llMoneyToGet = llBankMoney;

    bool isOverFlow = ch->GetGold() + llMoneyToGet > GOLD_MAX - 1 ? true : false;

    if (isOverFlow)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You carry a lot of money."));
        return false;
    }

    ch->SetMyOfflineShopTime();

    ch->PointChange(POINT_GOLD, llMoneyToGet, false);
    DBManager::instance().DirectQuery("UPDATE player.player SET gold_offlineshop = gold_offlineshop - %d WHERE id = %u", llMoneyToGet, ch->GetPlayerID());

    if (bGiveLittleMoney)
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Some money was withdrawn."));

    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bank %d money."), llMoneyToGet);

    char pszConv[32];
    sprintf(pszConv, "%d", llMoneyToGet);

    LogManager::instance().OfflineShopLog(ch->GetDesc()->GetAccountTable().id, pszConv, "FETCH_MONEY");

    return true;
}
 
Buyrun birde clientteki long long fonksiyonlarından kaynaklanıyor olabilir mi bu sorun
bool COfflineShopManager::WithdrawAllMoney(LPCHARACTER ch)
bu kod blogunun temiz halini kopyalar mısın buraya
C++:
bool COfflineShopManager::WithdrawAllMoney(LPCHARACTER ch)
{
    if (!ch)
        return false;

    std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT gold_offlineshop FROM player.player WHERE id = %u", ch->GetPlayerID()));

    if (pMsg->Get()->uiNumRows == 0)
        return false;

    // BEGIN_MAX_YANG
    int llBankMoney = 0, llMoneyToGet = 0;
    // END_OF_MAX_YANG
    bool bGiveLittleMoney = false; // for prevent bug GOLD_MAX in the bank

    MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult);
    str_to_number(llBankMoney, row[0]);

    if (llBankMoney <= 0)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bank is empty!"));
        return false;
    }

    if (llBankMoney > GOLD_MAX)
    {
        bGiveLittleMoney = true;
        llMoneyToGet = 100000000;
    }
    else
        llMoneyToGet = llBankMoney;

    bool isOverFlow = ch->GetGold() + llMoneyToGet > GOLD_MAX - 1 ? true : false;

    if (isOverFlow)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You carry a lot of money."));
        return false;
    }

    ch->SetMyOfflineShopTime();

    ch->PointChange(POINT_GOLD, llMoneyToGet, false);
    DBManager::instance().DirectQuery("UPDATE player.player SET gold_offlineshop = gold_offlineshop - %d WHERE id = %u", llMoneyToGet, ch->GetPlayerID());

    if (bGiveLittleMoney)
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Some money was withdrawn."));

    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bank %d money."), llMoneyToGet);

    char pszConv[32];
    sprintf(pszConv, "%d", llMoneyToGet);

    LogManager::instance().OfflineShopLog(ch->GetDesc()->GetAccountTable().id, pszConv, "FETCH_MONEY");

    return true;
}
 

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

Geri
Üst