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

📄 mygameserver.cc

📁 多人走路RPG服务器 c++ socket
💻 CC
📖 第 1 页 / 共 2 页
字号:
#include "my_server.h"int dusts_id[Dust_Ran_MAX]={1488,1487,1486,1485,1491};MyGameServer::MyGameServer(void) {	GameServer::GameServer();	m_TimeFlag=true;}void MyGameServer::time_process(void) {								//定时器 1秒1次//	//printf("server %d time_process here\n",m_room_id);	char buf[4098],buf1[1024];	char newdust[1024];	int i,rand_num;	static int time1[10]={0};	static int time2=0;	static int time_SP = 0 ;	GoodsAtt att;	if( m_room_id==0 && time2>=30 ) {//		mysql.CheckConnect();		time2=0;	}	if(time1[m_room_id]==5){		time1[m_room_id]=0;		rand_num=rand();		if(rand_num%10==5){			rand_num=rand();			User_Goods_ST newdust;			newdust.SetGoods(dusts_id[rand_num%Dust_Ran_MAX],"","black",1,NONE,NONE,0,att);			Add_Dust_TO_MAP(newdust, 100+rand_num%850, 50+rand_num%900);			////printf("create dust goods %s in room:%d \n", newdust, m_room_id);		}	}	for(i=0;i<Dust_MAX;i++){		if(SceneDust[i].show_flag){			SceneDust[i].lifetime++;			if(SceneDust[i].lifetime>Dust_TimeLife){				sprintf(buf1, "%d|%d|%d", i, SceneDust[i].mapX, SceneDust[i].mapY);				send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_DUST_DROP,buf1);				send_all(buf,NONE);				SceneDust[i].init();			}		}	}//-------------		kbird	 ----------------------------------	if( m_room_id == 0 ){	//	//printf("\t\t\t\ttime_SP = %d \n",time_SP ) ;		if( time_SP == 60 ){			MyGamePlayer *ptmp=NULL;			for(i=0;i<400;i++) {				if( strcmp(m_GamePlayer[i]->m_name,"")!=0 ) {					ptmp = (MyGamePlayer *)m_GamePlayer[i] ;					ptmp->UserBody.time_SP ++ ;					if( ptmp->UserBody.time_SP == 15 ) {						ptmp->UserBody.time_SP = 0 ;						ptmp->UserBody.SP -= 20 ;						ptmp->GetHumanStates() ;						//printf("\t\t\t\tptmp->UserBody.SP = %d \n",ptmp->UserBody.SP) ;					}				}			}			time_SP = 0 ;//			//printf("\n\n");		}		time_SP ++ ;	}	time1[m_room_id]++;	time2++;}//---------------------个人资料void MyGameServer::GetHumanStates(int player_id,int target_id) {	char buf[4098],buf1[4098];	MyGamePlayer *me=NULL;	MyGamePlayer *you=NULL;	me=(MyGamePlayer *)m_GamePlayer[player_id];	you=(MyGamePlayer *)m_GamePlayer[target_id];//printf("\t send %s\n",you->UserBody.user_name);	sprintf(buf1, "%s|%s|%d|%d|%d|%d|%d|%d|%d|%d|%s", you->UserBody.user_name, you->UserBody.nick_name, you->UserBody.user_id, you->UserBody.HP, you->UserBody.MP, you->UserBody.SP, you->UserBody.Exp, you->UserBody.Level, you->UserBody.Money,you->UserBody.Vip_flag,you->UserBody.m_Sex);	send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_BODY_S,MSG_BODY_OTHER_STATE,buf1);	me->AddSocketBuf(buf);}//---------------------执垃圾bool MyGameServer::Take_Dust(int player_id,int dust_id,int mapx,int mapy) {	bool is_td;	int empty_id;	char buf[4098],buf1[1024];	is_td=false;	if( dust_id!=NONE ){		if( SceneDust[dust_id].show_flag ){			if( SceneDust[dust_id].mapX>mapx-20 && SceneDust[dust_id].mapX<mapx+20 && SceneDust[dust_id].mapY>mapy-20 && SceneDust[dust_id].mapY<mapy+20 ){				MyGamePlayer *u=NULL;				if( player_id!=NONE )	u=(MyGamePlayer *)m_GamePlayer[player_id];				empty_id=u->UserBody.Find_Empty_ST();////printf("\t body empty st:%d\n",empty_id);				if( empty_id!=NONE ){					u->UserBody.Move_Goods_TO_Site(SceneDust[dust_id].dust,empty_id);					u->UserBody.m_st[empty_id].Get_Goods_Full_ATT();////printf("\t take dust:%d,%s\n",empty_id, u->UserBody.m_st[empty_id].m_this_full_att);					sprintf(buf1, "%d%s", empty_id, u->UserBody.m_st[empty_id].m_this_full_att);					send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_BODY_SHOW,buf1);					u->AddSocketBuf(buf);					sprintf(buf1, "%d|%d|%d", dust_id, SceneDust[dust_id].mapX, SceneDust[dust_id].mapY);					send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_DUST_DROP,buf1);					send_all(buf,NONE);					SceneDust[dust_id].init();					is_td=true;				}			}		}	}	return is_td;}//---------------------放可播放MC到地下bool MyGameServer::Add_ExtMC_TO_MAP(int ext_id,int mapx,int mapy) {	char buf[4098],buf1[1024];	sprintf(buf1, "%d|%d|%d", ext_id, mapx, mapy);	send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_STREET_MC,buf1);	send_all(buf,NONE);	return true;}//---------------------随机垃圾或定位垃圾bool MyGameServer::Add_Dust_TO_MAP(User_Goods_ST dust,int mapx,int mapy) {	int rand_num,dust_id;	bool is_rd;	char buf[4098],buf1[1024];	is_rd=false;	dust_id=Find_Empty_Dust();	if( dust_id!=NONE ){		SceneDust[dust_id].init();		SceneDust[dust_id].show_flag=true;		SceneDust[dust_id].mapX=mapx;		SceneDust[dust_id].mapY=mapy;		SceneDust[dust_id].dust=dust;		////printf("create dust goods: %d|%d|%d \n", dust_id, SceneDust[dust_id].mapX, SceneDust[dust_id].mapY);		sprintf(buf1, "%d|%d|%d", dust_id, SceneDust[dust_id].mapX, SceneDust[dust_id].mapY);		send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_DUST_ADD,buf1);		send_all(buf,NONE);		is_rd=true;	}	return is_rd;}//------------------取得现场所有存在垃圾void MyGameServer::Get_Dust_All_Goods(int player_id) {  char buf[4096],buf1[4096];	int i;	MyGamePlayer *u=NULL;	if(player_id!=NONE)	u=(MyGamePlayer *)m_GamePlayer[player_id];	buf1[0]='\0';	for( i=0;i<Dust_MAX;i++ ){		if( SceneDust[i].show_flag ){			sprintf(buf1,"%d|%d|%d", i, SceneDust[i].mapX, SceneDust[i].mapY);			send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_DUST_SHOW,buf1);			u->AddSocketBuf(buf);		}	}	}//--------------------返回垃圾空位int MyGameServer::Find_Empty_Dust(void) {	int i;	for( i=0;i<Dust_MAX;i++ ) {		if( !SceneDust[i].show_flag ) {			break;		}	}	return i>=Goods_st_size ? NONE:i;}//----------------------物品交易 询问bool MyGameServer::MarketEvent_ASK(int player_id,int target_id) {	char buf[4098];	bool is_ask;	is_ask=false;	MyGamePlayer *me=(MyGamePlayer *)m_GamePlayer[player_id];	MyGamePlayer *you=(MyGamePlayer *)m_GamePlayer[target_id];	if( me->UserBody.MarketPlayer[0]=='\0' && you->UserBody.MarketPlayer[0]=='\0' ){		strcpy(me->UserBody.MarketPlayer,you->UserBody.user_name);		strcpy(you->UserBody.MarketPlayer,me->UserBody.user_name);		send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_MARKET_ASK,me->UserBody.user_name);		you->AddSocketBuf(buf);		is_ask=true;	}	//printf("\nMSG_GOODS_MARKET_ASK :: %s \n",buf ) ;	//printf("name :: %s\n",me->UserBody.user_name ) ;	return is_ask;}//----------------------物品交易bool MyGameServer::MarketEventS(int event,int player_id,int target_id,int body_st,int market_st,int money) {	char buf[4098],buf1[1024];	bool is_market;	is_market=false;	MyGamePlayer *me=(MyGamePlayer *)m_GamePlayer[player_id];	if(target_id!=NONE){		MyGamePlayer *you=(MyGamePlayer *)m_GamePlayer[target_id];		switch(event){			case MSG_GOODS_MARKET_CANCEL:		//取消				//printf("\t\t\tMSG :: MSG_GOODS_MARKET_CANCEL \n") ;				me->UserBody.MarketBoxInit();				you->UserBody.MarketBoxInit();				send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_MARKET_CANCEL,me->UserBody.user_name);				you->AddSocketBuf(buf);				break;			case MSG_GOODS_MARKET_OK:		//确应开始				//printf("\t\t\tMSG :: MSG_GOODS_MARKET_OK \n") ;				send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_MARKET_OK,me->UserBody.user_name);				you->AddSocketBuf(buf);				//printf("\nMSG_GOODS_MARKET_OK 确应开始 ::  \n" ) ;				break;			case MSG_GOODS_MARKET_NOTMOVE:	//固定交易物品列表				//printf("\t\t\tMSG :: MSG_GOODS_MARKET_NOTMOVE \n") ;				if( money<=me->UserBody.Money ){					if( me->UserBody.MarketOK ){						//设为没固定//						me->UserBody.MarketBOX[Market_st_size]=0;//						me->UserBody.MarketOK=false;//						strcpy(buf1, "0|0");					}else{						//设为固定						me->UserBody.MarketBOX[Market_st_size]=money;						me->UserBody.MarketOK=true;						sprintf(buf1, "1|%d", money);						send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_MARKET_NOTMOVE,buf1);						me->AddSocketBuf(buf);						send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_MARKET_OTHER_NOTMOVE,buf1);						you->AddSocketBuf(buf);					}				}else{					//金币不足					send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_MARKET_NOTMOVE,"NOMONEY");					me->AddSocketBuf(buf);				}				break;			case MSG_GOODS_MARKET_ADD:	//增加交易物品				//printf("\t\t\tMSG :: MSG_GOODS_MARKET_ADD \n") ;				sprintf(buf1, "0|%d|%d", body_st, market_st);				if( !me->UserBody.MarketOK ){					//没有固定交易物品					if( me->UserBody.MarketBOX[market_st]==NONE && me->UserBody.m_st[body_st].m_gid!=NONE ){//						me->UserBody.MarketBOX[market_st]=me->UserBody.m_st[body_st].m_gid;						me->UserBody.MarketBOX[market_st]=body_st;						//printf("-------------- me->UserBody.m_st[body_st].m_gid = %d \n", me->UserBody.m_st[body_st].m_gid ) ;						sprintf(buf1,"1|%d|%s", market_st, me->UserBody.m_st[body_st].m_this_full_att);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -