⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mygameserver.cc

📁 多人走路RPG服务器 c++ socket
💻 CC
📖 第 1 页 / 共 2 页
字号:
						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 + -