📄 network6.cpp
字号:
fclose(fp);
result = FALSE;
}
return result;
}
t_EventItem EventItem[MAX_EVENT_ITEM];
int LoadEventRareItem()
{
memset(EventItem,sizeof(EVENTITEM)*MAX_EVENT_ITEM,0);//努府绢
HSTMT hStmt = NULL;
RETCODE retCode;
SDWORD cbValue;
SQLAllocStmt(hDBC, &hStmt);
retCode = SQLExecDirect(hStmt, (UCHAR *)"Select * from EventRareItem order by IndexNo", SQL_NTS);
if(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
{
int i = 0;
retCode = SQLFetch(hStmt);
while( retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
{
if(i >= MAX_EVENT_ITEM)
{
SQLFreeStmt(hStmt, SQL_DROP);
return 0;
}
retCode = SQLGetData(hStmt, 1, SQL_C_LONG, &EventItem[i].iIndex , 0, &cbValue);
retCode = SQLGetData(hStmt, 2, SQL_C_LONG, &EventItem[i].iEvevntType , 0, &cbValue);
retCode = SQLGetData(hStmt, 3, SQL_C_LONG, &EventItem[i].iItemNo , 0, &cbValue);
retCode = SQLGetData(hStmt, 4, SQL_C_LONG, &EventItem[i].iRareKind1 , 0, &cbValue);
retCode = SQLGetData(hStmt, 5, SQL_C_LONG, &EventItem[i].iRareKind2 , 0, &cbValue);
retCode = SQLGetData(hStmt, 6, SQL_C_LONG, &EventItem[i].iRareKind3 , 0, &cbValue);
retCode = SQLGetData(hStmt, 7, SQL_C_LONG, &EventItem[i].iGrade , 0, &cbValue);
retCode = SQLGetData(hStmt, 8, SQL_C_LONG, &EventItem[i].isDynamic , 0, &cbValue);
retCode = SQLGetData(hStmt, 9, SQL_C_LONG, &EventItem[i].iHighRare , 0, &cbValue);
i++;
retCode = SQLFetch(hStmt);
if(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
{
}
else if( retCode == SQL_NO_DATA )
{
break;
}
else
{
SQLFreeStmt(hStmt, SQL_DROP);
return 0;
}
}
}
SQLFreeStmt(hStmt, SQL_DROP); // 0308 YGI
return(1);
}
bool MakeRareAttr( unsigned int &attr3 ,const int iNowGrade,
const int iSokSung1,const int iSokSung2,const int iSokSung3,
const int iHighLevel,const bool bIsDynamicRare)
{
attr3 = 0;
if( iNowGrade >15 || iNowGrade <= 0 ) { return false;}
if( iSokSung1 >UCHAR_MAX || iSokSung1 <= 0 ) { return false;}
if( iSokSung2 >UCHAR_MAX || iSokSung2 < 0 ) { return false;}
if( iSokSung3 >UCHAR_MAX || iSokSung3 < 0 ) { return false;}
if( iHighLevel >7 || iHighLevel < 0 ) { return false;}
((LPRareMain)&attr3)->grade = iNowGrade ;
((LPRareMain)&attr3)->soksung1 = iSokSung1 ;
((LPRareMain)&attr3)->soksung2 = iSokSung2 ;
((LPRareMain)&attr3)->soksung3 = iSokSung3 ;
((LPRareMain)&attr3)->iHighLevel = iHighLevel;
((LPRareMain)&attr3)->IsDynamicRare = bIsDynamicRare;
return true;
}
int MakeDefaultRareItem( ItemAttr *item, const int iItemNo, const int iSok1, const int iGrade, const int iTryMulti)
{
int iHighLv = 0;
bool bIsDynamic = false;
*item = GenerateItem( iItemNo );
if( !item->item_no ){ return -1;} // 酒捞袍 锅龋啊 捞惑窍促.
CItem *t = ItemUnit( *item );
if( !t ) { return -1; }
if( iSok1 >= 100 )
{
iHighLv = H_LV_HIGH_ITEM;
}
else
{
if( t->GetRbutton() == USE_ITEM ) // 促捞唱雇 酒捞袍...
{
bIsDynamic = true;
}
}
int iSok2=0, iSok3=0;
if(iSok1)
{
switch( iTryMulti )
{
case 0 :
case 1 :
{
}break;
case 2:
{
iSok2 = iSok1;
}break;
case 3 :
{
iSok3 = iSok2 = iSok1;
}break;
}
if( 1 == iHighLv){ iSok3 = iSok2 =0;}
return (MakeRareAttr( item->attr[IATTR_RARE_MAIN], iGrade, iSok1, iSok2, iSok3, iHighLv, bIsDynamic )?1:0);
}
return 1;
}
int SetEventItemEmpty( CHARLIST *ch, const int iIndex, ItemAttr &GiveItem ) // 后 牢亥配府俊 酒捞袍阑 积己秦辑 笼绢 持绰促. //1215
{
bool bIsGiveAble = true;//iIndex2 蔼捞 0 捞搁 例措 救邓聪促.
for(int i = 0; MAX_EVENT_ITEM>i;i++)
{
if(iIndex == EventItem[i].iIndex )//牢郸胶啊 鞍栏搁
{
LPEVENTITEM pEI = &EventItem[i];
if( !pEI->iItemNo){return 0;}//抛捞喉 磊眉俊 蔼捞 绝匙..
GiveItem = GenerateItem( pEI->iItemNo );//酒捞袍阑 父甸绢 林绊
if( !GiveItem.item_no){return 0;}//酒捞袍 逞滚啊 绝匙? ぱぱ;;
if(pEI->iRareKind1)//1锅掳 加己捞 乐绰 巴捞扼搁////饭绢扼搁 饭绢甫 林绊
{//饭绢甫 积己秦 夯促
bIsGiveAble = MakeRareAttr(GiveItem.attr[IATTR_RARE_MAIN],
pEI->iGrade,pEI->iRareKind1,pEI->iRareKind2,pEI->iRareKind3,
pEI->iHighRare,pEI->isDynamic);
}
ItemAttr *item = SearchInv( ch );
if( bIsGiveAble && item )
{
*item = GiveItem;
return 1;
}
else //后磊府啊 绝促搁
{
if(bIsGiveAble)
{
MyLog(0,"EventRareItemSetting Fault. ReCheck Plz" );
}
if(!item)
{
MyLog(0,"EventUser Inventory is Full [%s]",ch->Name );
}
return 0;
}
break;
}
}
MyLog(0,"EventRareitem Same IndexNo Not Found : Name:[%s] - index:[%d]", ch->Name, iIndex );
return 0;
}
//<! BBD 040308 逞绢柯 牢郸胶俊 秦寸登绰 酒捞袍阑 父甸绢 霖促
ItemAttr MakeEventItem(int nIndex)
{
ItemAttr item;
memset(&item, 0L, sizeof(ItemAttr));
if(!nIndex) // 牢郸胶啊 0捞搁 郴侩绝绰 酒捞袍捞 府畔
{
return item;
}
if(nIndex != EventItem[nIndex-1].iIndex) // EventRareItem 抛捞喉狼 牢郸胶啊 肋给 沥纺登绢乐促
{
// 咯扁辑 抛捞喉捞 肋给登菌促绰 肺弊甫 巢败林磊
MyLog(0,"EventRareItem Table is WRONG!!! Check plz");
return item; // 开矫 后 酒捞袍 府畔
}
LPEVENTITEM pEI = &EventItem[nIndex-1];
if( !pEI->iItemNo)
{
return item;
}//抛捞喉 磊眉俊 蔼捞 绝匙..
item = GenerateItem( pEI->iItemNo );//酒捞袍阑 父甸绢 林绊
if( !item.item_no)
{
return item;
}//酒捞袍 逞滚啊 绝匙? ぱぱ;;
if(pEI->iRareKind1)//1锅掳 加己捞 乐绰 巴捞扼搁////饭绢扼搁 饭绢甫 林绊
{//饭绢甫 积己秦 夯促
MakeRareAttr(item.attr[IATTR_RARE_MAIN],pEI->iGrade,pEI->iRareKind1,pEI->iRareKind2,pEI->iRareKind3,
pEI->iHighRare,pEI->isDynamic);
}
// 酒捞袍捞 肯己登菌促
return item;
}
//> BBD 040308 逞绢柯 牢郸胶俊 秦寸登绰 酒捞袍阑 父甸绢 霖促
int HaveAbilityResetList(char *szName,const bool bIsDayCheck)//020822 lsw
{
HSTMT hStmt = NULL;
RETCODE retCode;
SDWORD cbValue;
SQLAllocStmt(hDBC, &hStmt);
char szQuerry[255] = {0,};
if(bIsDayCheck)//孽府啊 朝楼 眉农 茄促
{
if(LocalMgr.IsAbleNation(KOREA))//021007 lsw
{
sprintf(szQuerry, "Select [name] from AbilityResetDate where [name] = '%s' AND [date] < (getdate()-30)", szName);//30老 捞傈俊辑 府胶飘啊 乐蠢衬
}
else //茄惫篮 30老 唱赣瘤 惫啊绰 90老 付促 茄锅究
{
sprintf(szQuerry, "Select [name] from AbilityResetDate where [name] = '%s' AND [date] < (getdate()-90)", szName);//30老 捞傈俊辑 府胶飘啊 乐蠢衬
}
}
else//孽府啊 捞抚父 乐绰瘤 夯促
{
sprintf(szQuerry, "Select [name] from AbilityResetDate where [name] = '%s'", szName);//府胶飘啊 乐蠢衬
}
retCode = SQLExecDirect(hStmt, (UCHAR *)szQuerry, SQL_NTS);
int bIsListed = 0;
if(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
{
retCode = SQLFetch(hStmt);
char szTempName[21] ={0,};
if( retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
{
retCode = SQLGetData(hStmt, 1, SQL_C_CHAR, szTempName, 20, &cbValue);
if(szTempName[0]){bIsListed = 1;}
}
}
SQLFreeStmt(hStmt, SQL_DROP);
return bIsListed;
}
int UpdateAbilityResetList(char *szName, const bool bIsUpdate)
{
HSTMT hStmt = NULL;
RETCODE retCode;
SQLAllocStmt(hDBC, &hStmt);
char szQuerry[255] = {0,};
if(bIsUpdate)//孽府啊 Update... 绢录绊
{
sprintf(szQuerry, "update AbilityResetDate set [date] = getdate() where name = '%s'",szName);
}
else//孽府啊 Insert... 绢录绊
{
sprintf(szQuerry, "insert into AbilityResetDate ([name]) values ('%s')",szName);
}
retCode = SQLExecDirect(hStmt, (UCHAR *)szQuerry, SQL_NTS);
int bIsSuccess = 0;
if(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
{
bIsSuccess = 1;
}
SQLFreeStmt(hStmt, SQL_DROP);
return bIsSuccess;
}
void RecvCMD_COMFORM_RESET_ABILITY(const int cn, t_packet &p)//020821-2 lsw
{
char szName[21] = {0,};
memcpy(szName, p.u.ComformResetAbililty.szName,20);
bool bIsAbility = 0;
//孽府 //捞 捞抚栏肺 等 仇狼 扁废捞 乐绰啊. (1)
if(HaveAbilityResetList(szName,false))//乐促搁
{ //瘤陛何磐 茄崔傈 焊促 苞芭狼 朝楼狼 捞抚栏肺 八祸窍咯 (2)
if(HaveAbilityResetList(szName,true))
{//捞锅俊档 扁废 八祸捞 登搁 绢呼府萍 犁盒硅啊 啊瓷窍促.
if(UpdateAbilityResetList(szName,true))//诀单捞飘啊 己傍 窍搁
{//犁盒硅 菩哦 焊郴绰 敲贰弊 On
bIsAbility = 1;
}
else
{
MyLog(0,"AbilityResetList Update Error");
}
}
else
{
MyLog(0,"AbilityResetList Time Too Short");
}
}
else//绝促搁
{ //Insert 矫虐绊
//绢呼府萍 犁盒硅啊 啊瓷窍促.//犁盒硅 菩哦 焊郴绰 敲贰弊 On
if(UpdateAbilityResetList(szName,false))
{//犁盒硅 菩哦 焊郴绰 敲贰弊 On
bIsAbility = 1;
}
else
{
MyLog(0,"!Warning! Insert AbilityResetList Failed");
}
}
p.u.ComformResetAbililty.iIsAble = bIsAbility;//敲贰弊 历厘 窍绊
QueuePacket(connections,cn,&p,1);//甘辑滚肺 倒妨焊辰促
}
bool CheckRookieServerAble(const int iLv)
{
const int iRookieLv = LocalMgr.GetRookieLv();
if( iRookieLv
&& iRookieLv < iLv)
{//汲沥茄 饭骇 焊促 臭扁 锭巩俊 甸绢 哎 荐 绝促.
return false;
}
return true;
}
void RecvCMD_SELECTED_CHAR_RESULT_CLIENT_BOTH_DB_DEMON(t_connection c[], DWORD cn, t_packet &p)
{
const int iMyLv = p.u.Hwoa.rang.SelectedCharResult.iLv;
if(!CheckRookieServerAble(iMyLv))
{//檬焊辑滚 肪 力茄 吧覆.
p.u.Hwoa.rang.SelectedCharResult.iKey = 0;
}
else
{
p.u.Hwoa.rang.SelectedCharResult.iKey = 1;
}
::QueuePacket(c,cn,&p,1);
}
int HandleCommand2(t_connection c[], DWORD dwIndex, t_packet *packet, DWORD dwUserID, int cn)
{
const int itype = packet->h.header.type;
switch(itype)
{
case CMD_CONFORM_SADONIX:
{
RecvCMD_CONFORM_SADONIX(cn,*packet);
}break;
case CMD_SADONIX_COUNT_UPDATE://020505 lsw
{
if(!RefreshNowSadonixCount(packet->u.SadonixCountUpdate.nSadTime))
{
MyLog(0,"----------------------");
MyLog(0,"SadonixRefreshFailed!!");
MyLog(0,"----------------------");
}
}break;
case CMD_COMFORM_RESET_ABILILTY://020815-2 lsw
{
RecvCMD_COMFORM_RESET_ABILITY(cn,*packet);
}break;
case CMD_MERCHANT_BUY_ITEM_SEARCH_SERVER:
{
Auction.RecvCMD_MERCHANT_BUY_LIST_REQUEST(cn,*packet);
}break;
case CMD_MERCHANT_ITEM_BUY_COMFORM://COMFORM 罐疽扁 锭巩俊 is end 眉农甫 秦 林档废
{//甘栏肺 何磐 罐绰促
Auction.RecvCMD_MERCHANT_ITEM_BUY_COMFORM(cn,*packet);
}break;
case CMD_MERCHANT_ITEM_BUY_COMFORM_RESULT://涝陛捞 甸绢吭促
{//捣阑 化疽栏聪 IsEnd甫 肋 眉农 窍磊
Auction.RecvCMD_MERCHANT_ITEM_BUY_COMFORM_RESULT(cn,*packet);
}break;
case CMD_MERCHANT_SELL_ITEM_REGISTER_COMFORM://殿废 啊瓷 肮荐甫 眉农茄促
{
Auction.RecvCMD_MERCHANT_SELL_ITEM_REGISTER_COMFORM(cn,*packet);//殿废 啊瓷 肮荐甫 眉农茄促
}break;
case CMD_MERCHANT_SELL_ITEM_REGISTER_COMFORM_RESULT://殿废 啊瓷 肮荐甫 眉农茄促
{
Auction.RecvCMD_MERCHANT_SELL_ITEM_REGISTER_COMFORM_RESULT(cn,*packet);//殿废 啊瓷 肮荐甫 眉农茄促
}break;
//昏力 窍扁
case CMD_MERCHANT_SELL_ITEM_DELETE_COMFORM://叼厚肺 何磐 魄概秒家 啊瓷茄瘤 罐绰促
{
Auction.RecvCMD_MERCHANT_SELL_ITEM_DELETE_COMFORM(cn,*packet);
}break;
case CMD_MERCHANT_SELL_ITEM_DELETE_COMFORM_RESULT://叼厚肺 何磐 魄概秒家茄 搬苞甫 罐绰促
{
Auction.RecvCMD_MERCHANT_SELL_ITEM_DELETE_COMFORM_RESULT(cn,*packet);
}break;
case CMD_MERCHANT_RESULT_LIST_REQUEST:
{
Auction.RecvCMD_MERCHANT_RESULT_LIST_REQUEST(cn,*packet);
}break;
case CMD_MERCHANT_RESULT_TAKE_COMFORM:
{
Auction.RecvCMD_MERCHANT_RESULT_TAKE_COMFORM(cn,*packet);
}break;
case CMD_MERCHANT_RESULT_TAKE_COMFORM_RESULT:
{
Auction.RecvCMD_MERCHANT_RESULT_TAKE_COMFORM_RESULT(cn,*packet);
}break;
//<! BBD 040226 魄概 秒家肺 饭内靛 昏力 夸没
case CMD_MERCHANT_RECORD_DEL_CANCLE:
{
Auction.RecvCMD_MERCHANT_RECORD_DEL_CANCLE(cn, *packet);
}break;
//> BBD 040226 魄概 秒家肺 饭内靛 昏力 夸没
//<! BBD 040226 芭贰 辆丰肺 饭内靛 昏力 夸没
case CMD_MERCHANT_RECORD_DEL_COMPLETE:
{
Auction.RecvCMD_MERCHANT_RECORD_DEL_COMPLETE(cn, *packet);
}break;
//> BBD 040226 芭贰 辆丰肺 饭内靛 昏力 夸没
//<! BBD 040303 赣玫飘 归诀抛捞喉狼 酒捞袍 府胶飘 夸没
case CMD_MERCHANT_BACKUP_LIST_REQUEST:
{
Auction.RecvCMD_MERCHANT_BACKUP_LIST_REQUEST(cn,*packet);
}break;
//> BBD 040303 赣玫飘 归诀抛捞喉狼 酒捞袍 府胶飘 夸没
//<! BBD 040303 赣玫飘 氦诀抛捞喉狼 酒捞袍 瘤鞭 夸没
case CMD_MERCHANT_BACKUP_TAKE_REQUEST:
{
Auction.RecvCMD_MERCHANT_BACKUP_TAKE_REQUEST(cn, *packet);
}break;
//> BBD 040303 赣玫飘 氦诀抛捞喉狼 酒捞袍 瘤鞭 夸没
//<! BBD 040303 甘辑滚肺何磐 罐篮 赣玫飘 归诀抛捞喉狼 酒捞袍瘤鞭 己傍咯何
case CMD_MERCHANT_BACKUP_TAKE_RESPONSE:
{
Auction.RecvCMD_MERCHANT_BACKUP_TAKE_RESPONSE(cn, *packet);
}break;
//> BBD 040303 甘辑滚肺何磐 罐篮 赣玫飘 归诀抛捞喉狼 酒捞袍瘤鞭 己傍咯何
//<! BBD 040308 甘栏肺何磐 捞亥飘酒捞袍 瘤鞭犬牢 夸没
case CMD_EVENTRAREITEM_REQ:
{
PutEventItemByMapReq(cn, *packet);
break;
}
//> BBD 040308 甘栏肺何磐 捞亥飘酒捞袍 瘤鞭犬牢 夸没
case CMD_MERCHANT_SELL_ITEM_INFO_REQUEST://甘栏肺 何磐 夸没阑 罐绰促
{
Auction.RecvCMD_MERCHANT_SELL_LIST_REQUEST(cn,*packet);
}break;
case CMD_MERCHANT_DIRECT_EXCHANGE_LIST_REQUSET:
{
Auction.RecvCMD_MERCHANT_DIRECT_EXCHANGE_LIST_REQUEST(cn,*packet);
}break;
case CMD_SELECTED_CHAR_RESULT_CLIENT_BOTH_DB_DEMON:
{
RecvCMD_SELECTED_CHAR_RESULT_CLIENT_BOTH_DB_DEMON(c, cn,*packet);
}break;
case CMD_MAIL_REQUEST_LIST://皋老 府胶飘甫 夸没 罐疽促
{
g_MailMgr.RecvReqMailList(cn,packet);
}break;
case CMD_MAIL_SEND:
{
g_MailMgr.Recv(cn,packet);
}break;
case CMD_MAIL_DELETE:
{
g_MailMgr.RecvDelete(cn,packet);
}break;
case CMD_MAIL_REPAIR:
{
g_MailMgr.RecvRepair(cn,packet);
}break;
case CMD_MAIL_REQ_BODY:
{
g_MailMgr.RecvRequestBody(cn,packet);
}break;
case CMD_START_GAME_MAIL :
{
g_MailMgr.IsExistNotRead(cn,packet);
}break;
default:
{
return 0;
}break;
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -