Пример #1
0
//=============================================================================
//handles the financial side
//
void EntertainerManager::applyMoney(PlayerObject* customer,PlayerObject* designer,int32 amount)
{
    int32 amountcash;
    int32 amountbank;
    int8 sql[1024];
    amountcash = amount;
    amountbank = 0;
    Inventory* inventory = dynamic_cast<Inventory*>(customer->getEquipManager()->getEquippedObject(CreatureEquipSlot_Inventory));

    if(inventory && inventory->getCredits() < amount)
    {
        // cash alone isnt sufficient
        amountcash = inventory->getCredits();
        amountbank = (amount - amountcash);
    }

    EntertainerManagerAsyncContainer* asyncContainer = new EntertainerManagerAsyncContainer(EMQuery_IDFinances,0);
    Transaction* mTransaction = mDatabase->startTransaction(this,asyncContainer);

    asyncContainer->customer = customer;
    asyncContainer->performer = designer;
    asyncContainer->amountcash = amountcash;
    asyncContainer->amountbank = amountbank;


    sprintf(sql,"UPDATE inventories SET credits=credits-%i WHERE id=%"PRIu64"",amountcash, customer->getId()+1);
    mTransaction->addQuery(sql);
    sprintf(sql,"UPDATE banks SET credits=credits-%i WHERE id=%"PRIu64"",amountbank, customer->getId()+4);
    mTransaction->addQuery(sql);
    sprintf(sql,"UPDATE banks SET credits=credits+%i WHERE id=%"PRIu64"",amount, designer->getId()+4);
    mTransaction->addQuery(sql);

    mTransaction->execute();
    
}
Пример #2
0
//======================================================================================================================
//we confirmed that we are content with the surcharge and go on
//reuse the asynccontainer
void TreasuryManager::handleBankTipSurchargeConfirmed(TreasuryManagerAsyncContainer* asyncContainer)
{
    Transaction* mTransaction = mDatabase->startTransaction(this,asyncContainer);
    int8 sql[256];
    sprintf(sql,"UPDATE banks SET credits=credits-%i WHERE id=%"PRIu64"",(asyncContainer->amount + asyncContainer->surcharge), asyncContainer->player->getId() + 4);
    mTransaction->addQuery(sql);
    sprintf(sql,"UPDATE banks SET credits=credits+%i WHERE id=%"PRIu64"",asyncContainer->amount, asyncContainer->targetId + BANK_OFFSET);
    mTransaction->addQuery(sql);
    mTransaction->execute();
    

}