#ifndef __CASH_SHOP_H
#define __CASH_SHOP_H
#ifdef __NPCCASHSHOP
typedef struct _CashItem
{
u_long nId; //資料庫里的id
u_long dwId; //道具id
int dwPrice; //道具價格,商城幣
unsigned short nNum; //道具數量
unsigned short nMax; //單次購買最多多少件
byte discount;//打折10為1折 50為5折 100為10折(也就是不打折)
unsigned short limit;//限量出售多少件.0為不限量
unsigned short remain; //限量時剩余多少件 默認為0
byte empty1; //備用
byte empty2; //備用
byte empty3; //備用
_CashItem()
{
nNum = 1; //初始道具數量為1
nMax = 1; //初始單次購買限制1件
discount = 100; //初始打折為不打折
limit = 0; //初始限量件數為無限制
remain = 0; //初始剩余為0
empty1 = empty2 = empty3 = 0;
}
}CashItem;
typedef struct _CashPage
{
unsigned short nCount; //總共有多少道具
bool bLoaded; //是否已讀取當前頁
char szName[61]; //當前頁名稱
int nType;//收費型別0為商城幣 1為飛飛幣
CashItem szItem[MAX_CASHSHOP_TAB_ITEM];
_CashPage()
{
bLoaded = false; //初始化是否已讀取為假
nType = 0;
}
}CashPage;
typedef struct _CashShop
{
unsigned short nItemCount; //總共多少個道具
bool bOpen; //商城是否開放
byte nPage; //總共有多少頁道具
int nCash; //玩家商城幣
CashPage szPage[MAX_CASHSHOP_TAB];
_CashShop()
{
bOpen = true; //初始化商城為開放
nCash = 0; //初始化角色商城幣為0
}
}CashShop;
class CCashShop
{
public:
CCashShop();
~CCashShop();
CashShop m_Shop;
#ifdef __CLIENT
CItemElem* m_CashItemElem[MAX_CASHSHOP_TAB * MAX_CASHSHOP_TAB_ITEM];
void Init(CAr & ar); //初始化資料
void LoadPage(CAr & ar); //載入某頁道具資料
//void LoadItem(CAr & ar); //載入道具資料
CItemElem* GetItem(DWORD dwItemId);
#endif //__CLIENT
void Clear(){memset((void*)&m_Shop,0,sizeof(CashShop));} //清空
bool IsOpen(){return m_Shop.bOpen;} //商城是否開放
#ifdef __SERVER
#ifndef __NEW_CASH_SYSTEM //新CASH系統
BOOL m_IsConnected;
CQuery m_Query;
BOOL ConnectDB();
int GetUserCash(DWORD UserId);
BOOL UpdateUserCash(DWORD UserId,int dwCash);
#endif //__NEW_CASH_SYSTEM //新CASH系統
BOOL Init(LPCTSTR lpszFileName); //從檔案初始化商城資料
int GetItemCash(DWORD dwItemId);
#endif // __SERVER
};
#endif //__NPCCASHSHOP
#ifdef __NEW_CASH_SYSTEM //新CASH系統
#ifdef __SERVER
#include "Public.h"
class CCashSystem : public Singleton<CCashSystem>
{
public:
CCashSystem();
~CCashSystem();
BOOL m_IsConnected;
CQuery m_Query; //這句說未知重寫說明符 我不知道如何解決,我已經包含了Query.h頭檔案、
BOOL ConnectDB();
int GetUserCash(DWORD UserId);
BOOL UpdateUserCash(DWORD UserId,int nCash);
};
#endif //__SERVER
#endif //__NEW_CASH_SYSTEM //新CASH系統
#endif //__CASH_SHOP_H
1>------ 已啟動全部重新生成: 專案: WorldServer, 配置: Release Win32 ------
1>StdAfx.cpp
1>e:\nuoyayuanshi\source\_common\consignment.h(110): error C3646: “m_Query”: 未知重寫說明符
1>e:\nuoyayuanshi\source\_common\consignment.h(110): error C4430: 缺少型別說明符 - 假定為 int。注意: C++ 不支持默認 int
1>e:\nuoyayuanshi\source\_common\cashshop.h(95): error C3646: “m_Query”: 未知重寫說明符
1>e:\nuoyayuanshi\source\_common\cashshop.h(95): error C4430: 缺少型別說明符 - 假定為 int。注意: C++ 不支持默認 int
1>已完成生成專案“WorldServer.vcxproj”的操作 - 失敗。
========== 全部重新生成: 成功 0 個,失敗 1 個,跳過 0 個 ==========
uj5u.com熱心網友回復:
樓主可以在#ifndef __CASH_SHOP_H
#define __CASH_SHOP_H
#ifdef __NPCCASHSHOP
后面加一句class CQuery;試試,當初CQuery這個類的宣告
uj5u.com熱心網友回復:
不行的, 這個已經宣告 在Query.h 中。
uj5u.com熱心網友回復:
#ifndef _QUERY_H_
#define _QUERY_H_
#include <sql.h>
#include <sqlext.h>
struct QUERY_BINDINFO
{
SQLSMALLINT targetType;
SQLPOINTER targetValue;
SQLINTEGER bufferLength;
SQLINTEGER* strLen_or_Ind;
};
class CQuery
{
public:
// char *DBName, *DBId, *DBPass;
char DBName[256];
char DBId[256];
char DBPass[256];
BOOL m_bEnableErrorLog;
// 彌措 拿煩薦, BLOB 澇免仿 竄困, NULL 鞘靛藹
enum { MAXCOL=256, BLOBBATCH=10000, CQUERYNULL=-100, CQUERYEOF=-101,
CQUERYNOCOL=-102, CQUERYERROR=-103 };
private:
SQLHENV hEnv; // 券版 勤甸
SQLHDBC hDbc; // 楷搬 勤甸
char* Col[MAXCOL]; // 官牢爹瞪 拿煩 瀝焊
int FindCol(char *name); // 拿煩狼 撈撫欄肺何磐 鍋齲甫 茫酒霖促.
public:
SQLHSTMT hStmt; // 疙飛 勤甸. 流立 葷儈且 薦檔 樂欄骨肺 public欄肺 瀝狼
SQLSMALLINT nCol; // 拿煩 俺薦
SQLCHAR ColName[MAXCOL][50]; // 拿煩狼 撈撫甸
SQLINTEGER lCol[MAXCOL]; // 拿煩狼 辨撈/惑怕 瀝焊
CQuery(); // 積己磊
~CQuery(); // 頗鮑磊:楷搬 勤甸闌 秦力茄促.
void PrintDiag( LPCTSTR szSQL, SQLSMALLINT type = SQL_HANDLE_DBC ); // 柳竄 瀝焊 免仿
BOOL Connect(int Type, char *ConStr, char *UID=NULL, const char *PWD=NULL); // 單撈磐 家膠俊 楷搬茄促.
void DisConnect(); // 單撈磐 家膠 楷搬闌 讒綽促
BOOL Exec(LPCTSTR szSQL); // SQL鞏闌 角青茄促.
BOOL Exec(LPCTSTR szSQL, int nCount, QUERY_BINDINFO info[]);
BOOL PrepareFetch();
BOOL Execute( LPCTSTR lpszFormat, ... );
int ExecGetInt(LPCTSTR szSQL); // SQL鞏闌 角青竅絆 霉鍋擄 拿煩狼 瀝薦 佬瀾
void ExecGetStr(LPCTSTR szSQL, char *buf); // SQL鞏闌 角青竅絆 霉鍋擄 拿煩狼 鞏磊凱 佬瀾
BOOL Fetch(); // 茄 青 啊廉坷扁
void Clear(); // 目輯 秦力 棺 攫 官牢爹
int GetInt(int nCol); // 瀝薦屈 拿煩 佬扁
int GetInt(char *sCol); // 瀝薦屈 拿煩 佬扁
__int64 GetInt64( int nCol );
__int64 GetInt64( char* sCol );
EXPINTEGER GetExpInteger( int nCol ) { return GetInt64( nCol ); }
EXPINTEGER GetExpInteger( char* sCol ) { return GetInt64( sCol ); }
SERIALNUMBER GetSerialNumber( int nCol )
{
return GetInt( nCol );
}
SERIALNUMBER GetSerialNumber( char* sCol )
{
return GetInt( sCol );
}
float GetFloat(int nCol); // 角薦屈 拿煩 佬扁
float GetFloat(char *sCol); // 角薦屈 拿煩 佬扁
char GetChar(int nCol); // 角薦屈 拿煩 佬扁
char GetChar(char *sCol); // 角薦屈 拿煩 佬扁
void GetStr(int nCol, char *buf); // 鞏磊凱屈 拿煩 佬扁
void GetStr(char *sCol, char *buf); // 鞏磊凱屈 拿煩 佬扁
int ReadBlob(LPCTSTR szSQL, void *buf);
void WriteBlob(LPCTSTR szSQL, void *buf, int size);
BOOL BindParameter(SQLUSMALLINT parameterNumber,
SQLSMALLINT inputOutputType,
SQLSMALLINT valueType,
SQLSMALLINT parameterType,
SQLUINTEGER columnSize,
SQLSMALLINT decimalDigits,
SQLPOINTER parameterValuePtr,
SQLINTEGER bufferLength,
SQLINTEGER *strLen_or_IndPtr);
BOOL MoreResults( void );
void WriteLogFile(char *strLog,...);
static BOOL EnableConnectionPooling();
};
// TODO: 葛碘 盒府
// 鞠齲拳等 配奴闌 秦刀秦輯 菩膠況靛肺 掘綽促.
// 抗: 配奴 - 3A08DB22
extern BOOL GetPWDFromToken( const char* szToken, char* szPWD );
#endif
uj5u.com熱心網友回復:
樓主可以在
#ifndef __CASH_SHOP_H
#define __CASH_SHOP_H
#ifdef __NPCCASHSHOP
后面加一句class CQuery;試試,當初CQuery這個類的宣告
不行的, 這個已經宣告 在Query.h 中。
放個demo上來看看吧,光這樣的描述,估計是沒啥人能夠解答了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/67776.html
標籤:C++ 語言
下一篇:puts(a)的輸出結果:
