📄 mygameserver.cc
字号:
send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_MARKET_OTHER_ADD,buf1); you->AddSocketBuf(buf); //printf("\t\t\t\t增加物品 :: %s\n",buf) ; sprintf(buf1, "1|%d|%d", body_st, market_st); } }else{ //printf("\t\t\t增加物品失败\n") ; } send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_MARKET_ADD,buf1); me->AddSocketBuf(buf); break; case MSG_GOODS_MARKET_DROP: //减少交易物品 //printf("\t\t\tMSG :: MSG_GOODS_MARKET_DROP \n") ; sprintf(buf1, "0|%d", market_st); if( !me->UserBody.MarketOK ){ //没有固定交易物品 //printf("\t\t\tme->UserBody.MarketBOX[%d] = %d\n",me->UserBody.MarketBOX[market_st],market_st) ; if( me->UserBody.MarketBOX[market_st]!=NONE ){ me->UserBody.MarketBOX[market_st]=NONE; sprintf(buf1, "1|%d", market_st); send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_MARKET_OTHER_DROP,buf1); you->AddSocketBuf(buf); //printf("\t\t\t删除物品:: %s\n",buf ) ; sprintf(buf1, "1|%d", market_st); } }else{ //printf("\t\t\t删除物品失败\n") ; } send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_MARKET_DROP,buf1); me->AddSocketBuf(buf); break; case MSG_GOODS_MARKET_SWAP: //交易物品 me->UserBody.SwapOK = true ; //printf("\t\t\tMSG :: MSG_GOODS_MARKET_SWAP \n") ; if( you->UserBody.SwapOK ){ if( me->UserBody.MarketOK && you->UserBody.MarketOK ){ //printf("\t\t\t交易完成 :: %s\n", buf ) ; if( MarketHumanGoods(&me->UserBody,&you->UserBody) ){ me->UserBody.MarketBoxInit(); you->UserBody.MarketBoxInit(); me->GetHumanStates(); you->GetHumanStates(); strcpy(buf1, "1"); }else{ strcpy(buf1, "0"); } send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_MARKET_SWAP,buf1); me->AddSocketBuf(buf); you->AddSocketBuf(buf);//--------- 重新发送所有物品 you->GetBodyAllGoods(); you->GetBodyAllArm(); me->GetBodyAllGoods(); me->GetBodyAllArm(); } } break; } is_market=true; }else{ //--------对方意外退出 me->UserBody.MarketBoxInit(); send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_MARKET_CANCEL,"1"); me->AddSocketBuf(buf); } return is_market;}//----------------------物品交易bool MyGameServer::MarketHumanGoods(User_BOX *me,User_BOX *you) { bool is_market; is_market=false; User_Goods_ST tmpST1[8],tmpST2[8]; int Count1,Count2; int Empty1,Empty2; int i; Count1=Count2=0; if( me->MarketBOX[Market_st_size]<=me->Money && you->MarketBOX[Market_st_size]<=you->Money ){ for(i=0;i<Market_st_size;i++){ //物品较验 复制物品到tmpst if( me->MarketBOX[i]!=NONE ){ tmpST1[Count1]=me->m_st[me->MarketBOX[i]];// //printf("\t\t\t\ttmpST1[%d] = %d\n",i,tmpST1[i].m_gid) ; //printf("\t\t\t\tme->m_st[me->MarketBOX[%d]] = %d\n",i,me->m_st[me->MarketBOX[i]].m_gid) ; Count1++; } if( you->MarketBOX[i]!=NONE ){ tmpST2[Count2]=you->m_st[you->MarketBOX[i]];// //printf("\t\t\t\ttmpST2[%d] = %d\n",i,tmpST2[i].m_gid) ; //printf("\t\t\t\tme->m_st[me->MarketBOX[%d]] = %d\n",i,you->m_st[you->MarketBOX[i]].m_gid) ; Count2++; } } //取得身上物品-交易物品的空格数 Empty1=me->Empty_ST_Count()+Count1; Empty2=you->Empty_ST_Count()+Count2; //printf("E1:%d E2:%d C1:%d C2:%d \n\n",Empty1,Empty2,Count1,Count2); if( Empty1>=Count2 && Empty2>=Count1 ){ //清空物品格 for( i=0;i<Market_st_size;i++ ) { if( me->MarketBOX[i] != NONE ) { //printf("me->m_st[me->MarketBOX[i]].m_gid = %d\n",me->m_st[me->MarketBOX[i]].m_gid ) ; me->m_st[me->MarketBOX[i]].init(); //printf("me->m_st[me->MarketBOX[i]].m_gid = %d\n",me->m_st[me->MarketBOX[i]].m_gid ) ; } } for( i=0;i<Market_st_size;i++ ){ if( you->MarketBOX[i] != NONE ) { //printf("you->m_st[%d].m_gid = %d\n",me->MarketBOX[i],you->m_st[you->MarketBOX[i]].m_gid ) ; you->m_st[you->MarketBOX[i]].init(); //printf("you->m_st[%d].m_gid = %d\n",you->MarketBOX[i],you->m_st[you->MarketBOX[i]].m_gid ) ; } } //金币交易 me->MoneyOperate(you->MarketBOX[Market_st_size]-me->MarketBOX[Market_st_size]); you->MoneyOperate(me->MarketBOX[Market_st_size]-you->MarketBOX[Market_st_size]); //物品交易 for( i=0;i<Count1;i++ ){ you->Move_Goods_TO_Empty(tmpST1[i]); } for( i=0;i<Count2;i++ ){ me->Move_Goods_TO_Empty(tmpST2[i]); } is_market=true; } } return is_market;}// kbird -----------------------------------------------------------------------------CMessage::CMessage(){ m_Interval = 0 ; m_Count = 0 ; m_TimeCount = 0 ; m_SendCount = 0 ;}CMessage::CMessage( int tt, int cc,char *msg ) { SetTime( tt,cc,msg ) ;}bool CMessage::SetTime( int tt,int cc, char *msg ) { m_Interval = tt ; m_Count = cc ; m_TimeCount = tt ; m_SendCount = 0 ; strcpy( m_Msg,msg ); //printf("\t\t\t\t\tm_Msg = %s\n",m_Msg ) ; return true ;}bool CMessage::GetMsg( char *str ) { strcpy( str,m_Msg ) ; return true ;}bool CMessage::CheckTime(){ m_TimeCount ++ ; if( m_TimeCount >= m_Interval ) { m_TimeCount = 0 ; m_SendCount ++ ; return true ; }else{ return false ; }}bool CMessage::CheckCount(){ if( m_SendCount < m_Count ){ return true ; }else { return false ; }}// kbird ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//------------宠物类//家明C_UserPet::C_UserPet() { int i; for( i=0; i<10; i++ ) { exp_table[i] = i*100; }};C_UserPet::~C_UserPet() {};bool C_UserPet::AddAttribPoint(int r_str, int r_vit, int r_agi, int r_dex, int r_int) { int tmp; tmp = (m_level - 1)/10 + 2; tmp = (r_str+r_vit+r_agi+r_dex+r_int) * tmp; if( tmp>m_skill_point ) { return false; } if( r_str>0 ) { m_str += r_str; m_str_attach += ( r_str * m_lv_status ); } if( r_vit>0 ) { tmp = (m_vit%2 + r_vit)/2; m_vit += r_str; m_hp += ( 8 * r_str * m_lv_status ); //每升两点r_vit m_str_recovery += ( 2 * tmp * m_lv_status ); m_int_recovery += ( 2 * tmp * m_lv_status ); } if( r_agi>0 ) { m_agi += r_agi; m_parry += ( 3 * r_agi * m_lv_status ); } if( r_dex>0 ) { m_dex += r_dex; m_hit += ( r_dex * m_lv_status ); } if( r_int>0 ) { tmp = (m_int%5 + r_int) / 5; m_int += r_int; m_int_attach += ( r_int * m_lv_status ); m_int_recovery += ( 2 * r_int * m_lv_status ); //每升5点r_int m_mp += ( 5 * tmp * m_lv_status ); } return true;};//增加经验,返回增加级别int C_UserPet::ExpOpt(int exp) { if( m_exp+exp>=0 ) m_exp += exp; //级别操作 if( m_exp > exp_table[m_level] ) { m_level += 1; m_skill_point += 24; m_exp -= exp_table[m_level]; return 1; } return 0;};//家明//----------end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -