📄 chrlog.cpp
字号:
#include "StdAfx.h"
#include "packed.h"
#include "servertable.h"
#include "MAIN.H"
#include "Scrp_exe.H"
#include "ID.h"
#include "SealStone.h"
#include "Debug.h"
#include "mainheader.h"
#include "monitor.h"
#include "Citem.h"
#include "Pay.h"
#include "network.h"
#define MAX_CHR_LOG_ 1000
typedef struct chr_log
{
int index;
char id[ NM_LENGTH];
char name[ NM_LENGTH];
char state;
char Level;
int fame_pk; // 010915 LTS //Fame_PK -> NWCharacter肺 背眉 DB俊绰 角力肺 NWCharacter狼 蔼捞 甸绢癌聪促.
NW_Character NWCharacter; // 010915 LTS
int Str;
int Con;
int Dex;
int Wis;
int Int;
int MoveP;
int Char;
int Endu;
int Moral;
int Luck;
int wsps;
int Tactics;
DWORD nation;
DWORD Money;
int HpMax ;
int ManaMax;
char MapName[ NM_LENGTH];
int HungryMax;
int Resis_Poison;
int Resis_Stone ;
int Resis_Magic ;
int Resis_Fire ;
int Resis_Ice ;
int Resis_Elect ;
int X, Y;
int reserved_point;
DWORD BankMoney;
DWORD Exp;
char Skill[ SIZE_OF_SKILL];
char skillexp[ SIZE_OF_SKILL_EXP];
char tac_skillEXP[ SIZE_OF_TAC_SKILL_EXP];
char equip[ SIZE_OF_EQUIP];
char quick[ SIZE_OF_QUICK];
char inv[ SIZE_OF_INV];
char bankitem[ SIZE_OF_BANKITEM];
struct chr_log *next;
struct chr_log *prev;
}t_chr_log;
t_chr_log *chr_log;
int Push_Chr_Log( t_chr_log *q )
{
t_chr_log *temp;
if( chr_log == NULL )
{
chr_log = q;
chr_log->next = NULL;
chr_log->prev = NULL;
return 1;
}
else
{
temp = chr_log;
chr_log = q;
chr_log->next = temp;
chr_log->prev = NULL;
temp->prev = chr_log;
return 1;
}
}
int Delete_Chr_Log( t_chr_log *q )
{
t_chr_log *temp;
if( chr_log == q )
{
temp = chr_log;
chr_log = temp;
chr_log->prev = NULL;
delete temp;
return 1;
}
else
{
temp = chr_log->next;
while( temp )
{
if( temp == q )
{
if( temp->next )
{
temp->next->prev = temp->prev;
temp->prev->next = temp->next;
}
else
{
temp->prev->next = NULL;
}
delete temp;
return 1;
}
temp = temp->next;
}
}
return 0;
}
t_chr_log *Find_Chr_Log( char *name )
{
t_chr_log *t = chr_log;
while( t )
{
if( strcmp( t->name, name ) == 0 ) return t;
t = t->next;
}
return NULL;
}
int PushCharData2ChrLogDB_Basic( t_chr_log *t )
{
char szQuerry[1024];
HSTMT hStmt = NULL;
RETCODE retCode;
SQLINTEGER cbskilllen, cbskillexplen,cbtacskillexplen, cbinvlen, cbquick, cbequip, cbbankitem;
SQLINTEGER cbInt[33] = {0, }; // int 屈篮 0
SQLINTEGER cbName, cbId, cbMapName; // 巩磊凯篮 SQL_NTS
cbName = cbId = cbMapName = SQL_NTS;
int s_IntOuput[33];
char szName[20], szId[20], szMapName[20];
SQLPOINTER pParamData;
int server_set_num;
SQLINTEGER server_set_num_int = 0;
struct tm *today;
time_t lTime;
time(&lTime);
today = localtime(&lTime);
g_year = today->tm_year + 1900;
g_mon = today->tm_mon;
g_yday = today->tm_yday + 1;
g_day = today->tm_mday;
g_hour = today->tm_hour;
g_min = today->tm_min;
g_sec = today->tm_sec;
server_set_num = g_pServerTable->GetServerSetNum();
// sprintf(szQuerry, "INSERT INTO ChrLog ( name, skill ) VALUES ( ? , ? ) " );
sprintf(szQuerry,
"INSERT INTO ChrLog_%04d%02d%02d "
"( server_set_num, id,name,state, Lev,fame_pk,Str,Con,Dex,Wis,Int,"
" MoveP,Char,Endu,Moral,Luck,wsps,Tactics,nation,Money,HpMax, "
" ManaMax,MapName,HungryMax,Resis_Poison,Resis_Stone,Resis_Magic,Resis_Fire,Resis_Ice,Resis_Elect,X, "
" Y,reserved_point,BankMoney,Exp, "
" skill, skill_exp, tac_skillEXP, inventory, equip, quick, bankitem )"
" VALUES "
" ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
" ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
" ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
" ?, ?, ?, ?, "
" ?, ?, ?, ?, ?, ?, ? ) ", g_year, g_mon+1, g_day );
SQLAllocStmt(hDBC_ChrLogDB, &hStmt);
retCode= SQLPrepare(hStmt, (UCHAR *)szQuerry, SQL_NTS);
if(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
{
WORD ct = 1;
SQLBindParameter(hStmt, ct, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &server_set_num, 0, &server_set_num_int); ct++;
SQLBindParameter(hStmt, ct, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 20, 0, &szId, 0, &cbId); ct++;
SQLBindParameter(hStmt, ct, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 20, 0, &szName, 0, &cbName); ct++;
for( int i=0; i<32; i++ )
{
if( i == 19 ) // because mapname field
{
SQLBindParameter(hStmt, ct, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 20, 0, &szMapName, 0, &cbMapName);
}
else
{
SQLBindParameter(hStmt, ct, SQL_PARAM_INPUT, SQL_C_LONG,SQL_INTEGER, 0, 0, &s_IntOuput[i], 0, &cbInt[i]);
}
ct++;
}
SQLBindParameter(hStmt, ct, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_SKILL, 0, t->Skill, 0, &cbskilllen); ct++;
SQLBindParameter(hStmt, ct, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_SKILL_EXP, 0, t->skillexp, 0, &cbskillexplen); ct++;
SQLBindParameter(hStmt, ct, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_TAC_SKILL_EXP, 0, t->tac_skillEXP, 0, &cbtacskillexplen); ct++;
SQLBindParameter(hStmt, ct, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_INV, 0, t->inv, 0, &cbinvlen); ct++;
SQLBindParameter(hStmt, ct, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_EQUIP, 0, t->equip, 0, &cbequip); ct++;
SQLBindParameter(hStmt, ct, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_QUICK, 0, t->quick, 0, &cbquick); ct++;
SQLBindParameter(hStmt, ct, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_BANKITEM, 0, t->bankitem, 0, &cbbankitem); ct++;
strcpy( szId, t->id );
strcpy( szName, t->name );
s_IntOuput[0] =t->state;
s_IntOuput[1] =t->Level;
//s_IntOuput[2] =t->fame_pk; // 010915 LTS //Fame_PK -> NWCharacter肺 背眉 DB俊绰 角力肺 NWCharacter狼 蔼捞 甸绢癌聪促.
memcpy(&s_IntOuput[2],&t->NWCharacter,sizeof(DWORD)); // 010915 LTS
s_IntOuput[3] =t->Str;
s_IntOuput[4] =t->Con;
s_IntOuput[5] =t->Dex;
s_IntOuput[6] =t->Wis;
s_IntOuput[7] =t->Int;
s_IntOuput[8] =t->MoveP;
s_IntOuput[9] =t->Char;
s_IntOuput[10] =t->Endu;
s_IntOuput[11] =t->Moral;
s_IntOuput[12] =t->Luck ;
s_IntOuput[13] =t->wsps ;
s_IntOuput[14] =t->Tactics ;
s_IntOuput[15] =t->nation ;
s_IntOuput[16] =t->Money ;
s_IntOuput[17] =t->HpMax ;
s_IntOuput[18] =t->ManaMax ;
strcpy( szMapName, t->MapName ); // 19
s_IntOuput[20] =t->HungryMax ;
s_IntOuput[21] =t->Resis_Poison ;
s_IntOuput[22] =t->Resis_Stone ;
s_IntOuput[23] =t->Resis_Magic ;
s_IntOuput[24] =t->Resis_Fire ;
s_IntOuput[25] =t->Resis_Ice ;
s_IntOuput[26] =t->Resis_Elect;
s_IntOuput[27] =t->X / 32;
s_IntOuput[28] =t->Y / 32;
s_IntOuput[29] =t->reserved_point;
s_IntOuput[30] =t->BankMoney;
s_IntOuput[31] =t->Exp;
cbskilllen = SQL_LEN_DATA_AT_EXEC(0);
cbskillexplen = SQL_LEN_DATA_AT_EXEC(0);
cbtacskillexplen= SQL_LEN_DATA_AT_EXEC(0);
cbinvlen = SQL_LEN_DATA_AT_EXEC(0);
cbequip = SQL_LEN_DATA_AT_EXEC(0);
cbquick = SQL_LEN_DATA_AT_EXEC(0);
cbbankitem = SQL_LEN_DATA_AT_EXEC(0);
retCode = SQLExecute(hStmt) ;
while(retCode == SQL_NEED_DATA)
{
retCode = SQLParamData(hStmt, &pParamData) ;
if(retCode == SQL_NEED_DATA)
{
if(pParamData == t->Skill) SQLPutData(hStmt, t->Skill, SIZE_OF_SKILL);
else if(pParamData == t->skillexp) SQLPutData(hStmt, t->skillexp, SIZE_OF_SKILL_EXP );
else if(pParamData == t->tac_skillEXP) SQLPutData(hStmt, t->tac_skillEXP, SIZE_OF_TAC_SKILL_EXP );
else if(pParamData == t->inv) SQLPutData(hStmt, t->inv, SIZE_OF_INV);
else if(pParamData == t->equip) SQLPutData(hStmt, t->equip, SIZE_OF_EQUIP);
else if(pParamData == t->quick) SQLPutData(hStmt, t->quick, SIZE_OF_QUICK );
else if(pParamData == t->bankitem ) SQLPutData(hStmt, t->bankitem, SIZE_OF_BANKITEM );
}
else break ;
}
retCode = SQLExecute(hStmt) ;
if(retCode == SQL_NEED_DATA)
{
SQLCancel(hStmt) ;
// SQLTransact(SQL_NULL_HENV, hDBC_ChrLogDB, SQL_COMMIT);
SQLFreeStmt(hStmt, SQL_DROP);
return 1;
}
else
{
SQLFreeStmt(hStmt, SQL_DROP);
return 0;
}
}
else
{
SQLFreeStmt(hStmt, SQL_DROP);
return 0; // fail....
}
}
int PushCharData2ChrLogDB_Binary( t_chr_log *t )
{
SQLINTEGER cbskilllen, cbskillexplen,cbtacskillexplen, cbinvlen, cbquick, cbequip, cbbankitem;
SQLRETURN retcode;
SQLHSTMT hstmt;
SQLPOINTER pParamData;
char query[256];
// sprintf(query, "Insert into ChrLog ( skill, skill_exp, tac_skillEXP, inventory, equip, quick, bankitem )"
// "values ( ?, ?, ?, ?, ?, ?, ? ) ");
sprintf(query, "Update ChrLog_%d%d%d SET skill=?, skill_exp=?, tac_skillEXP=?, inventory=?, equip=?, quick=?, bankitem=? WHERE index_ = %d", t->index );
SQLAllocStmt(hDBC_ChrLogDB, &hstmt);
retcode = SQLPrepare(hstmt, (UCHAR *)query, SQL_NTS);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode= SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_SKILL, 0, t->Skill, 0, &cbskilllen);
retcode= SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_SKILL_EXP, 0, t->skillexp, 0, &cbskillexplen);
retcode= SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_TAC_SKILL_EXP, 0, t->tac_skillEXP, 0, &cbtacskillexplen);
retcode= SQLBindParameter(hstmt, 4, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_INV, 0, t->inv, 0, &cbinvlen);
retcode= SQLBindParameter(hstmt, 5, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_EQUIP, 0, t->equip, 0, &cbequip);
retcode= SQLBindParameter(hstmt, 6, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_QUICK, 0, t->quick, 0, &cbquick);
retcode= SQLBindParameter(hstmt, 7, SQL_PARAM_INPUT, SQL_C_BINARY,SQL_LONGVARBINARY, SIZE_OF_BANKITEM, 0, t->bankitem, 0, &cbbankitem);
cbequip = SQL_LEN_DATA_AT_EXEC(0);
cbquick = SQL_LEN_DATA_AT_EXEC(0);
cbskilllen = SQL_LEN_DATA_AT_EXEC(0);
cbskillexplen = SQL_LEN_DATA_AT_EXEC(0);
cbtacskillexplen= SQL_LEN_DATA_AT_EXEC(0);
cbinvlen = SQL_LEN_DATA_AT_EXEC(0);
cbbankitem = SQL_LEN_DATA_AT_EXEC(0);
retcode = SQLExecute(hstmt) ;
while(retcode == SQL_NEED_DATA)
{
retcode = SQLParamData(hstmt, &pParamData) ;
if(retcode == SQL_NEED_DATA)
{
if(pParamData == t->Skill) SQLPutData(hstmt, t->Skill, SIZE_OF_SKILL);
else if(pParamData == t->skillexp) SQLPutData(hstmt, t->skillexp, SIZE_OF_SKILL_EXP );
else if(pParamData == t->tac_skillEXP) SQLPutData(hstmt, t->tac_skillEXP, SIZE_OF_TAC_SKILL_EXP );
else if(pParamData == t->inv) SQLPutData(hstmt, t->inv, SIZE_OF_INV);
else if(pParamData == t->equip) SQLPutData(hstmt, t->equip, SIZE_OF_EQUIP);
else if(pParamData == t->quick) SQLPutData(hstmt, t->quick, SIZE_OF_QUICK );
else if(pParamData == t->bankitem ) SQLPutData(hstmt, t->bankitem, SIZE_OF_BANKITEM );
}
else break ;
}
retcode = SQLExecute(hstmt);
if(retcode == SQL_NEED_DATA)
{
retcode= SQLCancel(hstmt);
// retcode= SQLTransact(SQL_NULL_HENV, hDBC_ChrLogDB, SQL_COMMIT);
if(retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
{
//printf("\n Transact commit Error");
}
retcode= SQLFreeStmt(hstmt, SQL_DROP );
return(1); // succeed
}
else
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -