• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

[Release] Working GC Transactions

Skilled Illusionist
Joined
Apr 4, 2013
Messages
377
Reaction score
146
You should know where to place the following 4 files.

SQL functions:



API:



In WarZ.sln --> UserProfile.cpp


Under:
Code:
int CClientUserProfile::ApiFriendRemove(DWORD friendId)
{
    CWOBackendReq req(this, "api_Friends.aspx");
    req.AddParam("func", "remove");
    req.AddParam("FriendID", friendId);


    if(!req.Issue())
    {
        r3dOutToLog("ApiFriendRemove FAILED, code: %d\n", req.resultCode_);
        return req.resultCode_;
    }
    
    return 0;
}


Add:
Code:
int CClientUserProfile::ApiGetTransactions()
{
    CWOBackendReq req(this, "api_GetTransactions.aspx");
    req.AddParam("CustomerID", CustomerID);
    if(!req.Issue())
    {
        r3dOutToLog("ApiGetTransactions FAILED, code: %d\n", req.resultCode_);
        return req.resultCode_;
    }


    tscount = 0;
    m_tsData.reserve(1024*1024);
    m_tsData.clear();




    pugi::xml_document xmlFile;
    req.ParseXML(xmlFile);
    
    pugi::xml_node xml = xmlFile.child("trans");


    pugi::xml_node xmlItem = xml.first_child();
    while(!xmlItem.empty())
    {
        TSEntry_s ts;
        r3dscpy(ts.type, xmlItem.attribute("TId").value());
        r3dscpy(ts.time, xmlItem.attribute("Time").value());
        ts.itemID = xmlItem.attribute("ItemID").as_int();
        ts.amount = xmlItem.attribute("amount").as_float();
        ts.balance = xmlItem.attribute("bl").as_float();
        ts.id = xmlItem.attribute("id").as_int();
        m_tsData.push_back(ts);


        tscount++;
        xmlItem = xmlItem.next_sibling();
    }


    return 0;
}


int CClientUserProfile::ApiFriendGetStats(DWORD friendId)
{
    CWOBackendReq req(this, "api_Friends.aspx");
    req.AddParam("func", "stats");
    req.AddParam("FriendID", friendId);


    if(!req.Issue())
    {
        r3dOutToLog("ApiFriendGetStats FAILED, code: %d\n", req.resultCode_);
        return req.resultCode_;
    }
    
    pugi::xml_document xmlFile;
    req.ParseXML(xmlFile);
    friends->SetCurrentStats(xmlFile);
    
    return 0;
}


In WarZ.sln --> UserProfile.h


Under:
Code:
int        ApiGetItemsInfo();


Add:
Code:
int ApiGetTransactions();


In WarZ.sln --> FrontEndWarZ.cpp


Under:
Code:
gfxMovie.RegisterEventHandler("eventMyServerJoinServer", MAKE_CALLBACK(eventMyServerJoinServer));


Add:
Code:
gfxMovie.RegisterEventHandler("eventRequestGCTransactionData", MAKE_CALLBACK(eventRequestGCTransactionData));


Under:
Code:
void FrontendWarZ::eventRequestMyServerList(r3dScaleformMovie* pMovie, const Scaleform::GFx::Value* args, unsigned argCount)
{
    Scaleform::GFx::Value var[3];
    var[0].SetStringW(gLangMngr.getString("FetchingGamesListFromServer"));
    var[1].SetBoolean(false);
    var[2].SetString("");
    gfxMovie.Invoke("_root.api.showInfoMsg", var, 3);
    async_.StartAsyncOperation(this, &FrontendWarZ::as_BrowseGamesThread, &FrontendWarZ::OnMyServerListReceived);
}


Add:
Code:
void FrontendWarZ::eventRequestGCTransactionData(r3dScaleformMovie* pMovie, const Scaleform::GFx::Value* args, unsigned argCount)
{
    Scaleform::GFx::Value var[3];
    var[0].SetStringW(gLangMngr.getString("OneMomentPlease"));
    var[1].SetBoolean(false);
    var[2].SetString("");
    gfxMovie.Invoke("_root.api.showInfoMsg", var, 3);
    async_.StartAsyncOperation(this, &FrontendWarZ::as_TransactionsThread, &FrontendWarZ::OnTransactionsDataSuccess);
}


Under:
Code:
const char* FrontendWarZ::FindClanTagAndColorById(int id ,char* name,CUserClans* clan)
{
    if (id == 0) return name;
    //CUserClans* clan = new CUserClans();
    //clan->ApiClanGetLeaderboard();
    //const char* msg[512] = {0};
    for(std::list<CUserClans::ClanInfo_s>::iterator iter=clan->leaderboard_.begin(); iter!=clan->leaderboard_.end(); ++iter)
    {
        CUserClans::ClanInfo_s& clanInfo = *iter;
        //r3dOutToLog("id %d %s %d\n",id,name,clanInfo.ClanID);
        if (clanInfo.ClanID == id)
        {
            const char* tagColor = "#000000";
            switch(clanInfo.ClanTagColor)
            {
            case 1: tagColor = "#aa0000"; break;
            case 2: tagColor = "#a6780c"; break;
            case 3: tagColor = "#10a49e"; break;
            case 4: tagColor = "#20a414"; break;
            case 5: tagColor = "#104ea4"; break;
            case 6: tagColor = "#9610a4"; break;
            case 7: tagColor = "#444444"; break;
            case 8: tagColor = "#a4a4a4"; break;
            default:
                break;
            }
            char gamertag[512] = {0};
            sprintf(gamertag,"%s",name);
            sprintf(name,"<font color='%s'>[%s]</font>%s",tagColor,clanInfo.ClanTag,gamertag);
            break;
            //str = (const char*)msg;
            //return msg;
        }
    }
    //r3dOutToLog("%s\n");
    return name;
}


Add:
Code:
void FrontendWarZ::OnTransactionsDataSuccess()
{
    gfxMovie.Invoke("_root.api.hideInfoMsg", "");
    for(std::vector<CClientUserProfile::TSEntry_s>::iterator it = gUserProfile.m_tsData.begin(); it != gUserProfile.m_tsData.end(); ++it)
    {
        CClientUserProfile::TSEntry_s& tse = *it;


        char date[64] = {0};
        char name[64] = {0};
        char amount[64] = {0};
        char balance[64] = {0};
        sscanf(tse.time,"%s",&date);
        // TODO ADD LOGIC
        Scaleform::GFx::Value var[5];
        var[0].SetInt(tse.id);
        var[1].SetString(date); // date 


        const BaseItemConfig* cfg = g_pWeaponArmory->getConfig(tse.itemID);


        // transactions descriptions
        if (strcmp(tse.type, "INGAME")==0 && cfg) // buying in marketplace.
            sprintf(name,"Marketplace: %s",cfg->m_StoreName);
        else if (strcmp(tse.type, "EarlyRevive")==0)
            sprintf(name,"Early Revive");
        else if (strcmp(tse.type, "ConvertGCToGD")==0)
            sprintf(name,"Convert GC");
        else if (strcmp(tse.type, "Premium")==0)
            sprintf(name,"Premium Account");


        var[2].SetString(name); // name
        sprintf(amount,"-%.2f",tse.amount);
        var[3].SetString(amount); // amount
        sprintf(balance,"%.2f",tse.balance);
        var[4].SetString(balance); // balance
        if (name[0])
            gfxMovie.Invoke("_root.api.Main.Marketplace.addTransactionData", var, 5);
    }
    gfxMovie.Invoke("_root.api.Main.Marketplace.showTransactionsPopup", "");
}


unsigned int WINAPI FrontendWarZ::as_TransactionsThread(void* in_data)
{
    if (gUserProfile.ApiGetTransactions())
    {
        FrontendWarZ* This = (FrontendWarZ*)in_data;
        This->async_.SetAsyncError(0,L"Get Transactions Failed");
        return 1;
    }


    return 0;
}


In WarZ.sln --> FrontEndWarZ.h


Under:
Code:
static unsigned int WINAPI DrawThread(void* in_data);


Add:
Code:
static unsigned int WINAPI as_TransactionsThread(void* in_data);
    void OnTransactionsDataSuccess();


Under:
Code:
void eventRequestMyServerList(r3dScaleformMovie* pMovie, const Scaleform::GFx::Value* args, unsigned argCount);


Add:
Code:
void eventRequestGCTransactionData(r3dScaleformMovie* pMovie, const Scaleform::GFx::Value* args, unsigned argCount);
 
Newbie Spellweaver
Joined
Feb 7, 2014
Messages
16
Reaction score
2
When I run the Query gave this error:

KQjWqdX - [Release] Working GC Transactions - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Experienced Elementalist
Joined
Oct 23, 2013
Messages
289
Reaction score
29
Laenoar - [Release] Working GC Transactions - RaGEZONE Forums



Im getting some errors :/
How can I fix them ?
(Im working with the new DNC Release)

--- Merged ---

Help me please

[Err] 42S02 - [SQL Server]Invalid object name 'dbo.WZ_GetTransactions'.

 
Last edited by a moderator:
Master Summoner
Joined
Mar 30, 2013
Messages
543
Reaction score
72
Guess you've forgotten this, Laenoar:

Code:
struct TSEntry_s
    {
        char    type[256];
        char    time[256];
        int        itemID;
        float    amount;
        float    balance;
        int        id;
    };
 
Back
Top