Web Shop

11/02/2014 21:26 Shinji-MRT#61
Icon Problem -

Code:
szCommand
steht in der DB

In den PHP steht es mit
Code:
szComment
Wer den Error bekommt:
Code:
ERROR: The Account Information does not match!
stellt in der config dass

Code:
define( "MSSQL_TRUS", false );						// Trusting connection ( Localhost => true, Remote => false )
auf FALSE.


Problem des Item erstellens steht jedoch noch aus
11/02/2014 21:28 Sedrika#62
Quote:
Originally Posted by Sedrika View Post
Ich werde so ca gegen 21 Uhr mal ein update hier machen, danach kann man den schon auch über Web nutzen statt nur ingame.
Tut mir leid, konnte ich noch nicht aufbringen da ich noch ein paar Tests machen muss aber zu morgen kommt das ganze und dann sollte wieder mehr laufen.
11/04/2014 19:01 Sedrika#63
v1.1
- Added a feature to login via webbrowser.

Download on first page.
11/05/2014 10:19 Shinji-MRT#64
Hab nun nochmal alles Clean gemacht und es komplett auf der 1.1 eingefügt.
Soweit läuft erstmal die Verbindung wieder,


Außerdem sobald ich auf Bestätigen vom Kauf Klicke, kommt garnichts mehr, der shop wird leicht dunkler und das wars. Kein Failed oder ähnliches, ich muss danach den Shop neu laden.
Er hängt sich eben auf oder wartet auf ne Antwort oder sowas...

Woran könnte das liegen?


#EDIT

Hat sich erledigt, Funktioniert, muss mich jedoch zum kaufen mit dem Char auf dem ich das Item haben will, ausloggen und im Web kaufen. -> Gift Option funktioniert wunderbar.

~Shinji
11/05/2014 14:44 Kiseku#65
Quote:
Originally Posted by Shinji-MRT View Post
Hab nun nochmal alles Clean gemacht und es komplett auf der 1.1 eingefügt.
Soweit läuft erstmal die Verbindung wieder,


Außerdem sobald ich auf Bestätigen vom Kauf Klicke, kommt garnichts mehr, der shop wird leicht dunkler und das wars. Kein Failed oder ähnliches, ich muss danach den Shop neu laden.
Er hängt sich eben auf oder wartet auf ne Antwort oder sowas...

Woran könnte das liegen?


#EDIT

Hat sich erledigt, Funktioniert, muss mich jedoch zum kaufen mit dem Char auf dem ich das Item haben will, ausloggen und im Web kaufen. -> Gift Option funktioniert wunderbar.

~Shinji
Bei mir genauso :D bei mir werden auch keine Logs erstellt wenn ich das Item kaufe :D
11/05/2014 16:15 Sedrika#66
Ich werde den Shop nocheinmal etwas überarbeiten und dann releasen. Etwas Geduld bitte :D
11/06/2014 06:38 bknoob88#67
Warning: odbc_connect(): SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'sa'., SQL state 28000 in SQLConnect in C:\xampp\htdocs\shop\include\class\class.odbc.php on line 35
Could Not Connect to ODBC Database!
11/18/2014 15:49 LokiTheTrickster#68
Really lost right now, anyone have any clue? I went through the files about 10 times. Can't figure it out.
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]


Edit: Fixed

New problem; Buying items doesn't work, gives me an error. "Confirmation Failed", but it still uses up the Donation Points. Any one have a clue?
11/29/2014 12:18 raventh1984#69
Nice release.

However i dont think its complete. Cause when ever i am using the webshop in game. I dont get the item.

However when i log off and use [Only registered and activated users can see links. Click Here To Register...] and buy the item from there i am getting the item. The item is send to ITEM_SEND_TBL that is normal cause i aint logged in.

But when i log in. Both ways are not giving me the item directly its reducing the dpoints non the less. When i relogg the items are still not there.

Any one got tip for it?

EDIT:

Problem solved by editing the source and the Api Class.
It can know give the item directly to inventory while logged in.
12/01/2014 07:23 Gabriel1943#70
Warning: odbc_exec(): in C:\xampp\htdocs\shop\include\class\class.odbc.php on line 36

Warning: odbc_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\shop\include\class\class.odbc.php on line 44
Anyone idea?
12/02/2014 20:20 raventh1984#71
After making some changes to the files Source and Php i have it all working now.

I asked Sedrika if i could release the fixed website and Source snippets and it was Ok.

So Here it is Web Version 1.1.1 All Credits to their respectfull owners.

[Only registered and activated users can see links. Click Here To Register...]

Images
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Source Snippets

DPSrvr.cpp
Code:
void CDPSrvr::OnBuyingInfo( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
{
	BUYING_INFO2 bi2;
	ar.Read( (void*)&bi2, sizeof(BUYING_INFO2) );

	CWorld* pWorld;
	CUser* pUser	= g_UserMng.GetUser( dpidCache, dpidUser );

	/*
		100 - Save Player
		101 - Create Item
	*/
    
    if( IsValidObj( pUser )  && ( pWorld = pUser->GetWorld() ) )
    {
		if( bi2.dwParam4 != 0000000 || bi2.dwParam5 != 0000000 )
				return;
		if( bi2.dwCommand == 100 ) // Save Player
		{
			g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() );
		}
		else if( bi2.dwCommand == 101 ) // Create Item
		{
			SERIALNUMBER iSerialNumber	= 0;
			CItemElem itemElem;
			itemElem.m_dwItemId			= bi2.dwItemId;
			itemElem.m_nItemNum			= (short)bi2.dwItemNum;
			itemElem.m_bCharged        = TRUE;
			BYTE nId;
			bi2.dwParam3    = pUser->CreateItem( &itemElem, &nId );
			if( bi2.dwParam3 )
			{
				CItemElem* pItemElem    = pUser->m_Inventory.GetAtId( nId );
				if( pItemElem )
				{
					iSerialNumber    = pItemElem->GetSerialNumber();
					pItemElem->m_bCharged    = TRUE;
					if( bi2.dwTargetId > 0 )
						pUser->AddDefinedText( TID_EVE_GIFT, "\"%s\" \"%s\"", itemElem.GetName(), pUser->GetName() );
				}
			}
			else
			{
				LogItemInfo aLogItem;
				aLogItem.Action = "S";
				aLogItem.SendName = pUser->GetName();
				aLogItem.WorldId = pUser->GetWorld()->GetID();
				aLogItem.Gold = aLogItem.Gold2 = pUser->GetGold();

				g_dpDBClient.SendQueryPostMail( pUser->m_idPlayer, 0, itemElem, 0, "WebShop", "" );
				aLogItem.RecvName = "HOMEPAGE_SHOP";
				g_DPSrvr.OnLogItem( aLogItem, &itemElem, itemElem.m_nItemNum );
			}
			g_dpDBClient.SendBuyingInfo( &bi2, iSerialNumber );
			g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() );
		}
	}
}
Buyinginfo.h

Code:
#ifndef __CHARGEDITEM_H__
#define	__CHARGEDITEM_H__

typedef struct _BUYING_INFO
{
	DWORD	dwServerIndex;
	DWORD	dwPlayerId;
	DWORD	dwTargetId;
	DWORD	dwItemId;
	DWORD	dwItemNum;
	DWORD	dwCommand;
	DWORD	dwParam3;
	DWORD	dwParam4;
	DWORD	dwParam5;

	_BUYING_INFO()
	{
		dwServerIndex	= 0;
		dwPlayerId		= 0;
		dwTargetId		= 0;
		dwItemId		= 0;
		dwItemNum		= 0;
		dwCommand		= 0;
		dwParam3		= 0;
		dwParam4		= 0;
		dwParam5		= 0;
	}
}
BUYING_INFO, *PBUYING_INFO;

typedef struct _BUYING_INFO2: public _BUYING_INFO
{
	DWORD	dpid;
	DWORD	dwKey;
	_BUYING_INFO2() : _BUYING_INFO()
		{
			dpid	= 0xFFFFFFFF;
			dwKey	= 0;
		}
}
BUYING_INFO2, *PBUYING_INFO2;

typedef struct _BUYING_INFO3: public _BUYING_INFO2
{
	DWORD	dwTickCount;
	_BUYING_INFO3() : _BUYING_INFO2()
		{
//			dwTickCount		= GetTickCount();
		}
}
BUYING_INFO3, *PBUYING_INFO3;

#endif	// __CHARGEDITEM_H__
dpadbill.h

Code:
void	Process( void )
{
	DWORD dwTickCount	= GetTickCount();
//	static DWORD adwKey[1024];
	vector<DWORD>	adwKey;
			
	int nSize	= 0;
			
	m_AddRemoveLock.Enter();
	for( map<DWORD, PBUYING_INFO3>::iterator i = m_mapPbi3.begin(); i != m_mapPbi3.end(); ++i )
	{
		PBUYING_INFO3 pbi3	= i->second;
		if( dwTickCount - pbi3->dwTickCount > SEC( 3 ) )
		{
			CDPAdbill::GetInstance()->Send( pbi3, sizeof(BUYING_INFO), pbi3->dpid );
//			adwKey[nSize++]	= pbi3->dwKey;
			adwKey.push_back( pbi3->dwKey );
		}
	}
			
//	Remove
//	for( int j = 0; j < nSize; j++ )
	for( DWORD j = 0; j < adwKey.size(); j++ )
	{
//		PBUYING_INFO3 ptr	= CBuyingInfoMng::GetInstance()->Get( adwKey[j] );
		PBUYING_INFO3 ptr	= CBuyingInfoMng::GetInstance()->Get( adwKey[j] );
		if( ptr )
		{
			BUYING_INFO2	bi2;
			DWORD sn = 0;

			bi2.dwServerIndex	= ptr->dwServerIndex;
			bi2.dwPlayerId		= ptr->dwPlayerId;
			bi2.dwTargetId		= ptr->dwTargetId;
			bi2.dwItemId		= ptr->dwItemId;
			bi2.dwItemNum		= ptr->dwItemNum;
			bi2.dwCommand		= ptr->dwCommand;
			bi2.dwParam3		= ptr->dwParam3;
			bi2.dwParam4		= ptr->dwParam4;
			bi2.dwParam5		= ptr->dwParam5;

			CAr ar;
			ar.Write( (void*)&bi2, sizeof(BUYING_INFO2) );
			ar << sn;

			int nBufSize;
			LPBYTE lpData	= ar.GetBuffer( &nBufSize );
			LPDB_OVERLAPPED_PLUS lpDbOverlappedPlus		= g_DbManager.m_pDbIOData->Alloc();
			memcpy( lpDbOverlappedPlus->lpBuf, lpData, nBufSize );
			lpDbOverlappedPlus->uBufSize	= nBufSize;
			lpDbOverlappedPlus->nQueryMode	= LOG_SM_ITEM;
			PostQueuedCompletionStatus( g_DbManager.m_hDbCompletionPort, 1, NULL, &lpDbOverlappedPlus->Overlapped );
		}
		Remove( adwKey[j] );
		SAFE_DELETE( ptr );
	}

	m_AddRemoveLock.Leave();

	adwKey.clear();
}

If you encounter any problems feel free to ask.

Enjoy it.

Little Update

Atm only the first Character on your account is aible to get the items.
If you whant it for the char that you log in to then you need to change this

Login.php
Code:
$Query = "SELECT [m_idPlayer] FROM [CHARACTER_01_DBF].[dbo].[CHARACTER_TBL] WHERE [account] = %s AND [isblock] = 'F'";
				$_SESSION['m_idPlayer'] = $SQL->Exec( $Query, $_SESSION['user_id'] ) ? (int)$SQL->fetch[0]['m_idPlayer'] : false;
To this
Code:
$Query = "SELECT [m_idPlayer] FROM [CHARACTER_01_DBF].[dbo].[CHARACTER_TBL] WHERE [m_szName] = %s AND [isblock] = 'F'";
				$_SESSION['m_idPlayer'] = $SQL->Exec( $Query, $_SESSION['m_idPlayer'] ) ? $SQL->fetch[0]['m_idPlayer'] : false;
Also make sure that Character field cant be empty
Thus change this

login.php
Code:
if( !empty( $_SESSION['user_id'] ) )
To
Code:
if( !empty( $_SESSION['user_id'] ) || !empty( $_SESSION['m_idPlayer'] ) )
02/13/2015 22:26 wanyen#72
[Only registered and activated users can see links. Click Here To Register...]

Use iFlyff Source.I want to fix. Thankyou.
02/20/2015 19:28 sebariio#73
we have 2 problems:

[Only registered and activated users can see links. Click Here To Register...]
and the button "BUY" in game is not showed but in website it's showed
03/02/2015 08:18 romzik#74
Ja, gut gemacht! Aber kann ich einfach nicht anmelden...
Und noch frage, soll ich im Spiel sich anmelden?
03/02/2015 08:23 -Venom'#75
Quote:
Originally Posted by romzik View Post
Ja, gut gemacht! Aber kann ich einfach nicht anmelden...
Und noch frage, soll ich im Spiel sich anmelden?
Wenn man es richtig eingestellt hat und es richtig funktioniert dann musst du dich nicht einloggen dann ist dort ein Auto login drinne.