|
//主要功能: 进行数据库操作与管理、定义所有的游戏功能
#include "afx.h"
#include "afxdb.h"
#include "UserInfo.h"
#include "ResInfo.h"
#include "VarInfo.h"
#include "MapInfo.h"
//常量定义
//数据库连接、表名、字段名定义,请根据实际情况修改
#define DB_CONN "DSN=数据源名" /*数据库连接*/
#define DB_TB_AUTH "UserAuth" /*用户验证表名*/
#define DB_FD_ID "uin" /*ID字段名*/
#define DB_FD_PWD "passwd" /*密码字段名*/
#define DB_FD_NICK "nick" /*名称字段名*/
#define DB_FD_GENDER "gender" /*性别字段名*/
#define DB_TB_DATA "pGameUser" /*用户游戏表名*/
#define DB_FD_NAME "sName" /*游戏名称字段名*/
#define DB_FD_SEX "nSex" /*性别字段名*/
#define DB_FD_LEVEL "nLevel" /*等级字段名*/
#define DB_FD_FERE "sFere" /*伴侣字段名*/
#define DB_FD_GROUP "sGroup" /*门派字段名*/
#define DB_FD_DEGREE "sDegree" /*门派中的身份*/
#define DB_FD_PIC "nPic" /*图片字段名*/
#define DB_FD_MAP "nMap" /*地图号字段名*/
#define DB_FD_TAG "nTag" /*标记字段名*/
#define DB_FD_TIMER "nTimer" /*在线的时间(经验)*/
#define DB_FD_LIFE "nLife" /*生命字段名*/
#define DB_FD_MONEY "nMoney" /*银子字段名*/
#define DB_FD_CHARQUI "nCharqui" /*肉干字段名*/
#define DB_FD_DRUG "nDrug" /*药材字段名*/
#define DB_FD_BEAN "nBean" /*神豆字段名*/
#define DB_FD_MEMBER "nMember" /*会员等级字段*/
#define DB_FD_LOGINTIME "nLoginTime" /*登录的时间*/
#define DB_FD_LOGINIP "sLoginIP" /*登录的IP*/
#define DB_TB_TIKU "pGameTiKu" /*题库表名*/
#define DB_FD_SUBJECT "sSubject" /*题目字段名*/
#define DB_FD_KEY "sKey" /*答案字段名*/
#define DB_FD_ANSWER "bAnswer" /*是否已经回答字段*/
//声音定义
#define SOUND_BOOT "Sound:wav/boot.wav\r\n" /*踢人*/
#define SOUND_HUNT1 "Sound:wav/hunt1.wav\r\n" /*狩猎男*/
#define SOUND_HUNT0 "Sound:wav/hunt0.wav\r\n" /*狩猎女*/
#define SOUND_CORPSE_DIE "Sound:wav/171.wav\r\n" /*僵尸倒下*/
#define SOUND_OX_DIE "Sound:wav/151.wav\r\n" /*公牛倒下*/
#define SOUND_OX_ATTACK_HUMAN "Sound:wav/201.wav\r\n" /*猎物攻击人*/
#define SOUND_BEAST_DIE "Sound:wav/1810-2.wav\r\n" /*其他猎物倒下*/
#define SOUND_BEAST_ATTACK_HUMAN "Sound:wav/1910-4.wav\r\n" /*其他猎物攻击人*/
#define SOUND_ERROR "Sound:wav/error.wav\r\n" /*错误*/
#define SOUND_EAT "Sound:wav/Click.wav\r\n" /*吃东西*/
#define SOUND_DIE1 "Sound:wav/die1.wav\r\n" /*倒下男*/
#define SOUND_DIE0 "Sound:wav/die0.wav\r\n" /*倒下女*/
#define SOUND_GET "Sound:wav/Click.wav\r\n" /*捡到东西*/
//定义其他
#define POWERADMIN "高级管理员" /*高管门派*/
#define ADMIN "管理员" /*管理员门派*/
#define MAXNUMBER 9999999 /*最大的数值*/
#define MGR_CMD_BOOT 1
#define MGR_CMD_GETIP 2
#define DllExport extern "C" __declspec(dllexport)
//---------------------------------------------------------------------------
//接口函数申明
DllExport int UserLogin(char* strUser, char* strPasswd, char* strIP, CUserInfo *UserInfo);
DllExport void UserExit(CUserInfo* UserInfo);
DllExport int UserCmds(char* strResult, int nSrcItem, char* strDesName, char* strParams, CUserInfo *Users, int nMaxUser, int* nResult, CResInfo *Ress, int* nResItem, CVarInfo* VarInfo, int nMap);
DllExport void InitVariant( CVarInfo* VarInfo);
DllExport int OnTimer( int nIDEvent, char* strResult, CUserInfo *Users, int nMaxUser, CResInfo* Ress, int* nResItem, CVarInfo* VarInfo, int nMap, CMapInfo* MapInfo);
//---------------------------------------------------------------------------
//内部函数申明
bool ExecSqlCmd( CString& strCmd );
bool ExecSqlCmd( CString& strCmd, CString& strCmd2 );
bool ExecSqlCmd( CString& strCmd, CString strFieldName, CString& strValue );
bool ExecSqlCmd( CString& strCmd, CString& strQuery, CString strFieldName, CString& strValue );
LRESULT SendDllCallMsg( HWND hWnd, CString str, int nMap, int nUserItem, int nSendType );
bool CheckName( CString strName );
bool IsCaptain( CString strDegree );
int FindUser(char*, CUserInfo*, int);
int FindRes(int nPos, CResInfo* Ress);
CString GetIP(CUserInfo* User, bool bAll);
inline void MakeSayCmd(char* strResult, char* strFromName, char* strToName, char* strSayBody, int nItem );
int PreCmdAct( char* strResult, char* strSrcName, char* strDesName, char* strActName, int nSrcItem );
int PreCmdHunt( char* strResult, CUserInfo* User, int nItem, CResInfo* Ress, int* nResItem, char* strParams, int nMap, HWND hWnd );
int PreCmdGet( char* strResult, CUserInfo* User, int nItem, CResInfo* Ress, int* nResItem, char* strParams );
//void PreCmdDeal( CResInfo* Ress, char* strParams, CUserInfo* User, int nSrcItem, HWND hWnd );
void PreCmdSave( char* strResult, CUserInfo* User, int nItem );
void PreCmdState( char* strResult, CUserInfo* User, int nUserItem, HWND hWnd );
void PreCmdLargess( int* nSendType, char* strResult, int nSrcItem, char* strDesName, char* strParams, CUserInfo* Users, int nMaxUser );
void PreCmdAdminCmd( UINT nCmdType, int* nSendType, char* strResult, int nSrcItem, char* strDesName, char* strParams, CUserInfo* Users, int nMaxUser, int* nResult, int nMap );
void PreCmdViewHuman( char* strResult, char* strName, char* strDesName, CUserInfo* Users, int nMaxUser );
void PreCmdViewRes( char* strResult, char* strParams, CResInfo* Ress, char* strName );
void PreCmdEat( char* strResult, char* strParams, CUserInfo* User, int nSrcItem, HWND hWnd );
void PreCmdAttack( int* nSendType, char* strResult, int nSrcItem, char* strDesName, char* strParams, CUserInfo* Users, int nMaxUser, int* nResult, int nMap );
void PreCmdRename( char* strResult, char* strParams, CUserInfo* User, int nSrcItem );
void PreCmdChangeFace( char* strResult, char* strParams, CUserInfo* User, int nSrcItem );
void PreCmdRequest( char* strResult, UINT nType, int nSrcItem, char* strDesName, int* nDesItem, CUserInfo* Users, int nMaxUser );
void PreCmdAgree( int* nSendType, char* strResult, char* strParams, int nSrcItem, char* strDesName, int* nDesItem, CUserInfo* Users, int nMaxUser);
void TiMu_AutoChuTi(char* strResult, CVarInfo* VarInfo);
int TiMu_Answer(char* strResult, char* strAnswer, char* strName, int nSrcItem, CVarInfo* VarInfo);
void PreTimerCountOnline( CVarInfo* VarInfo );
void PreTimerMakeRes( char* strResult, int* nResItem, CResInfo* Ress, CMapInfo* MapInfo, int nMap );
//---------------------------------------------------------------------------
//全局变量定义
//网站的标记,在线用户用
int nTag = 9999;
/*---------------------------------------------------------------------------
程序中对变量的使用备忘
VarInfo 用户控制变量
m_strVariant[0] 用于放玩家登录后马上要显示的内容
m_strVariant[1] 用于存放自动出题的题目答案
m_strVariant[2] 用于备份[0]的内容(出题时操作)
m_bVariant[1] 用于存放自动出题的题目ID
---------------------------------------------------------------------------*/
//---------------------------------------------------------------------------
//以下定义各类物品的数据
//(自己随便定义,注意程序中要一致,也可以放在数据库中定义,具体自己决定)
struct CResData{
UINT nResType; //资源类型
int nRand; //出现比例%
char strName[256]; //名称
char strImage[256]; //图片
char strMsg1[256]; //信息
char strMsg2[256]; //信息
int nOffsetX; //偏移
int nOffsetY;
int nFrame; //帧数
//参数作用 捡取类 猎物类 NPC类
int nVar1; //参数一, 银两/数量 生命 生命
int nVar2; //参数二, 杀伤力 杀伤力
int nVar3; //参数三, 得肉干
int nVar4; //参数四 得经验 得经验
int nVar5; //参数五 药材 药材 药材
int nVar6; // 银两 银两 银两
int nVar7; // 神豆 神豆 神豆
int nMaxLevel; // 限制修行 限制修行 限制修行
};
#define RES_NONE 0x00 //没有
#define RES_MONEY 0x01 //银两类
#define RES_DRUG 0x02 //药材类
#define RES_CHARQUI 0x03 //肉干类
#define RES_BEAN 0x04 //神豆类
#define RES_HUNT 0x10 //猎物类
#define RES_OGRE 0x20 //怪物类
#define RES_DEAL 0x90 //交易类
// 类型 概率 资源名称 图片 进入提示 操作提示 X Y 帧 生命 杀伤力 肉干 经验 药材 银子 神豆 修行限制
#define MAXRES 13
CResData ResData[MAXRES] = {
{ RES_MONEY, 100, "金元宝", "Res/jin.gif", "[传言]在这附近有人丢了一个金元宝。", "[捡起]%s捡到一个金元宝,兑换银子%ld两。", 4, 8, 2, 0, 0, 0, 0, 0, 100, 0, 0 },
{ RES_MONEY, 100, "元宝", "Res/yin.gif", "[传言]某人把一绽银子掉了,正在到处找。", "[捡起]%s捡到银子%ld两。", 4, 8, 2, 0, 0, 0, 0, 0, 10, 0, 0 },
{ RES_DRUG, 100, "药水", "Res/drug1.gif", "[消息]有人丢掉了一瓶的药水。", "[捡起]%s捡到一瓶药水,得到药材%ld个。", 12, 16, 1, 0, 0, 0, 0, 1, 0, 0, 0 },
{ RES_HUNT, 100, "野兔", "Res/rabbit.gif", "[消息]一只野兔蹦了出来,正在吃草。", "[狩猎]%s对野兔奋力一击,杀伤生命%ld点。%s", 20, 22, 8, 50, 5, 3, 0, 2, 1, 0, 100},
{ RES_HUNT, 50, "公牛", "Res/ox1.gif", "[消息]一只野公牛闯了出来。", "[狩猎]%s对公牛奋力一击,杀伤生命%ld点。%s", 80, 50, 3, 500, 500, 100, 10, 10, 100, 0, 2000 },
{ RES_OGRE, 10, "AN僵尸一", "Res/JiangShi.gif", "[僵尸]一具僵尸从……里跳了出来。", "", 20, 84, 8, 1000, 1000, 0, 100, 0, 200, 10, 99999999 },
{ RES_BEAN, 30, "神豆", "Res/bean1.gif", "[消息]这附近长出一颗神豆了,大家快去找。", "[采集]%s采集到%ld粒神豆。", 0, 0, 9, 0, 0, 0, 0, 0, 0, 1, 0 },
{ RES_CHARQUI, 100, "肉块", "Res/charqui1.gif", "[消息]有人掉了一大块的肉。", "[捡起]%s捡到一大块肉,得到肉干5个。", 12, 8, 1, 0, 0, 5, 0, 0, 0, 0, 0 },
{ RES_HUNT, 100, "野羊", "Res/sheep1.gif", "[消息]一只野羊跑了出来。", "[狩猎]%s对野羊奋力一击,杀伤生命%ld点。%s", 30, 30, 1, 200, 100, 25, 2, 2, 50, 0, 500 },
{ RES_HUNT, 100, "眼镜蛇", "Res/snake1.gif", "[消息]一只眼镜蛇盘在这附近。", "", 30, 38, 4, 200, 300, 10, 4, 5, 10, 0, 600 },
{ RES_HUNT, 100, "鹿", "Res/deer6.gif", "[消息]一只驯鹿正在这附近吃草,正是猎杀的好时机。", "", 40, 25, 6, 200, 100, 20, 2, 3, 60, 0, 400 },
{ RES_HUNT, 100, "野猪", "Res/boar1.gif", "[消息]一只野猪跑到这附近乱拱乱咬。", "", 30, 28, 6, 400, 400, 50, 10, 5, 50, 0, 2000 },
{ RES_HUNT, 10, "大象", "Res/xiang1.gif", "[消息]一只身材巨大的大象在这附近。", "", 60, 90, 9, 2000, 1000, 0, 200, 10, 1000, 0, 3000 }
};
|
|