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

📄 mygameplayer.cc

📁 多人走路RPG服务器 c++ socket
💻 CC
字号:
#include "my_server.h"MyGamePlayer::MyGamePlayer(void) {	GamePlayer::GamePlayer();}//------------------购买商店物品bool MyGamePlayer::Buy_Shop_Goods(int shop_id,char *goodslist) {	bool is_buy;	char buf[4098],buf1[4098];	int gid[11]={0};	int num[11];	int i,counts,money,empty_st;	i=counts=money=empty_st=0;	is_buy=false;	GoodsAtt att;	sscanf(goodslist, "%d,%d|%d,%d|%d,%d|%d,%d|%d,%d|%d,%d|%d,%d|%d,%d|%d,%d|%d,%d", &gid[0], &num[0], &gid[1], &num[1], &gid[2], &num[2], &gid[3], &num[3], &gid[4], &num[4], &gid[5], &num[5], &gid[6], &num[6], &gid[7], &num[7], &gid[8], &num[8], &gid[9], &num[9]);	for(i=0;i<11;i++){		if(gid[i]!=0){			counts++;			money+=GoodsDB[gid[i]].m_money*num[i];		}	}	if(counts<=UserBody.Empty_ST_Count() && UserBody.Money>=money){		UserBody.Money-=money;		for(i=0;i<counts;i++){			empty_st=UserBody.Find_Empty_ST();			UserBody.Add_Goods(gid[i],"",num[i],"black",NONE,NONE,0,att);			sprintf(buf1, "%d%s", empty_st, UserBody.m_st[empty_st].m_this_full_att);//printf("\t buy goods:%s",buf1);			send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_BODY_SHOW,buf1);			AddSocketBuf(buf);		}		GetHumanStates();		is_buy=true;	}		return is_buy;}//------------------银行操作int MyGamePlayer::AIMEventS(int event,int money) {	int havemoney=0;	char sql[1024],buf1[1024],buf[4098];	sprintf(sql, "select m from user where name='%s'", UserBody.user_name);	if(mysql.Query(sql)!=-1){		if(mysql.num_rows){			mysql.GetData();			havemoney=atoi(mysql.row[0]);		}		mysql.FreeResult();	}	switch(event){		case MSG_AIM_SHOW_MONEY:	//显示存款			sprintf(buf1, "%d", havemoney);			send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_AIM_S,MSG_AIM_SHOW_MONEY,buf1);			AddSocketBuf(buf);			break;		case MSG_AIM_TAKE_MONEY:	//提款			strcpy(buf1, "0");			if(money<=havemoney && money<=10000){				sprintf(sql, "update user set m=m-%d where name='%s'", money, UserBody.user_name);								if(mysql.DoQuery(sql)!=-1){					strcpy(buf1, "1");					UserBody.MoneyOperate(money);					GetHumanStates();					sprintf(sql, "update city_online set money=money+%d where user_name='%s'", money, UserBody.user_name);					mysql.DoQuery(sql) ;				}							}			send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_AIM_S,MSG_AIM_TAKE_MONEY,buf1);			AddSocketBuf(buf);			break;		case MSG_AIM_SAVE_MONEY:	//存款			strcpy(buf1, "0");			if(money<=havemoney && money<=10000){				sprintf(sql, "update user set m=m+%d where name='%s'", money, UserBody.user_name);								if(mysql.DoQuery(sql)!=-1){					strcpy(buf1, "1");					UserBody.MoneyOperate(0-money);					sprintf(sql, "update city_online set money=money-%d where user_name='%s'", money, UserBody.user_name);					mysql.DoQuery(sql) ;					GetHumanStates();				}							}			send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_AIM_S,MSG_AIM_TAKE_MONEY,buf1);			AddSocketBuf(buf);			break;	}	return havemoney;}//------------------返回商店物品列表void MyGamePlayer::Get_Shop_Goods(int shop_id) {	char buf[4098],buf1[4098];	char cutstr[1024];	int index=0,len=0;	int gid=0;//printf("\t goods:%d %s\n",shop_id,GoodsShopS[shop_id].m_GoodsList);	if(shop_id>0 && shop_id<Shop_MAX){		if(GoodsShopS[shop_id].m_GoodsList[0]!='\0'){			int len=strlen(GoodsShopS[shop_id].m_GoodsList);			while( index<len ){				sscanf(GoodsShopS[shop_id].m_GoodsList+index,"%[^,],",cutstr) ;				index += strlen(cutstr) + 1 ;								gid=atoi(cutstr);				if( gid>0 && gid<Goods_MAX ){					if(GoodsDB[gid].m_gid!=NONE){						sprintf(buf1,"%d|%d|%s", gid, GoodsDB[gid].m_money, GoodsDB[gid].m_name);//printf("\t goods list: %d money:%d name:%s",gid, GoodsDB[gid].m_money, GoodsDB[gid].m_name);						send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_SHOP_S,MSG_SHOP_SHOW_LIST,buf1);						AddSocketBuf(buf);					}				}			}		}	}	send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_SHOP_S,MSG_SHOP_SHOW_LIST,"FINISH");	AddSocketBuf(buf);}//------------------人物初始void MyGamePlayer::init(unsigned int id,char *p_name) {	GamePlayer::init(id,p_name);	GoodsAtt att;	bool vip_flag=false;	int user_id=0;	char nickname[User_name_size+1];	char sex[5] ;	char user_level[20] ;	char ext_name[User_name_size+1];	char sql[4098],sql2[4098];	sprintf(sql, "select id,nickname,vip_flag,sex,level from user where name='%s'", p_name);	//					  0,     1  ,    2   , 3 ,  4	if(mysql.Query(sql)!=-1){		if(mysql.num_rows>0){			mysql.GetData();			strncpy(nickname, mysql.row[1], User_name_size);			user_id=atoi(mysql.row[0]);			vip_flag= strcmp(mysql.row[2],"yes")==0 ? true : false;			strcpy( sex,mysql.row[3] ) ;			strcpy( UserLevel,mysql.row[3] ) ;//sex:boy,girl			sprintf(sql2, "select money,level,exp,hp,mp,sp,body_goods,box_goods,TO_DAYS(NOW())-TO_DAYS(login_time) as today_flag from city_online where user_name='%s'", p_name);			if(mysql.Query(sql2)!=-1){//				printf("\t rows:%d",mysql.num_rows);				if(mysql.num_rows>0){					mysql.GetData();					UserBody.init(id, user_id, p_name, nickname, vip_flag,sex, mysql.row);					Define_Goods_Lib(mysql.row[6],UserBody.m_st,Goods_MAX);				}else{					sprintf(sql, "insert into city_online set money=100,user_name='%s',box_goods='0;1485;-;0;1;-1;-1;0;0,0,0,0,0,0|1;1491;-;0;1;-1;-1;0;0,0,0,0,0,0|2;1485;-;0;1;-1;-1;0;0,0,0,0,0,0|3;1491;-;0;1;-1;-1;0;0,0,0,0,0,0|4;1485;-;0;1;-1;-1;0;0,0,0,0,0,0|5;1491;-;0;1;-1;-1;0;0,0,0,0,0,0|6;1485;-;0;1;-1;-1;0;0,0,0,0,0,0|7;1491;-;0;1;-1;-1;0;0,0,0,0,0,0|8;1485;-;0;1;-1;-1;0;0,0,0,0,0,0|9;1491;-;0;1;-1;-1;0;0,0,0,0,0,0|10;1498;-;0;1;-1;-1;0;0,0,0,0,0,0|11;1498;-;0;1;-1;-1;0;0,0,0,0,0,0|12;1498;-;0;1;-1;-1;0;0,0,0,0,0,0|13;1500;-;0;1;-1;-1;0;0,0,0,0,0,0|14;1500;-;0;1;-1;-1;0;0,0,0,0,0,0|15;1500;-;0;1;-1;-1;0;0,0,0,0,0,0',body_goods='',login_time='2003-1-1'", p_name);//					printf("\t sql:%s",sql);					mysql.DoQuery(sql);					if(mysql.Query(sql2)!=-1){						mysql.GetData();						UserBody.init(id, user_id, p_name, p_name, vip_flag, sex, mysql.row);					}				}			}			sprintf(sql, "update city_online set login_time=now() where user_name='%s'", p_name);			mysql.DoQuery(sql);			sprintf(sql, "select goods from user_box where user_id=%d", user_id);			if(mysql.Query(sql)!=-1){				if(mysql.num_rows>0){					mysql.GetData();					Define_OLD_Body_Goods_Lib(mysql.row[0],UserBody.m_body);				}			}		}	}//printf("check user end\n");	mysql.FreeResult();}//--------------------得到身上所有物品void MyGamePlayer::GetBodyAllGoods(void) {  char buf[4096],buf1[4096];	int i;	buf1[0]='\0';	for( i=0;i<Goods_st_size;i++ ){		if( UserBody.m_st[i].m_gid!=NONE ){			sprintf(buf1,"%d%s", i, UserBody.m_st[i].m_this_full_att);			send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_BODY_SHOW,buf1);			AddSocketBuf(buf);		}	}}//-------------------得到身上装备void MyGamePlayer::GetBodyAllArm(void) {  char buf[4096],buf1[4096];	int i;	buf1[0]='\0';	for( i=0;i<Body_st_size;i++ ){		if( UserBody.m_body[i].m_gid!=NONE ){			sprintf(buf1,"%d%s", i+100, UserBody.m_body[i].m_this_full_att);			send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_BODY_SHOW,buf1);			AddSocketBuf(buf);		}	}}//-------------------使用身上物品bool MyGamePlayer::UseBodyGoods(int st,int gid) {	char buf[4096],buf1[4096];	bool is_use;	is_use=false;	if( st!=NONE ){		if( UserBody.m_st[st].m_gid==gid ) is_use=UserBody.Use_Goods(st);		if( is_use ){			sprintf(buf1,"%d|%d", st, gid);			send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_BODY_USE,buf1);			AddSocketBuf(buf);		}	}	return is_use;}//--------------------丢身上物品bool MyGamePlayer::DropBodyGoods(int st,int gid) {	bool is_drop;  char buf[4096],buf1[4096];	buf1[0]='\0';	is_drop=false;	if( st!=NONE ){		if( UserBody.m_st[st].m_gid==gid ){			is_drop=UserBody.Drop_Goods(st);			if( is_drop ){				send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_BODY_DROP,"1");			}else{				send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_BODY_DROP,"0");			}			AddSocketBuf(buf);		}	}	return is_drop;}//--------------------交换身上物品位置bool MyGamePlayer::SwapBodyGoods(int st1,int st2,int gid1,int gid2) {	bool is_swap;	is_swap=false;	if(st1!=NONE && st2!=NONE){		if( UserBody.m_st[st1].m_gid==gid1 && UserBody.m_st[st2].m_gid==gid2 ) is_swap=UserBody.Swap_Goods(st1,st2);	}	return is_swap;}//---------------------取得人物状态void MyGamePlayer::GetHumanStates(void) {	char buf[4098],buf1[4098];	sprintf(buf1, "%d|%d|%d|%d|%d|%d|%d|%d|%s", UserBody.HP, UserBody.MP, UserBody.SP, UserBody.Exp, UserBody.Level, UserBody.Money, UserBody.user_id,UserBody.Vip_flag,UserBody.m_Sex);	send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_BODY_S,MSG_BODY_MY_STATE,buf1);	AddSocketBuf(buf);}//---------------------卖身上物品int MyGamePlayer::Sale_Body_Goods(char *goodslist) {	char buf[4098];	int st[10]={NONE,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NONE};	int money,i;	money=0;	sscanf(goodslist, "%d|%d|%d|%d|%d|%d|%d|%d|%d|%d", &st[0], &st[1], &st[2], &st[3], &st[4], &st[5], &st[6], &st[7], &st[8], &st[9]);	for(i=0;i<10;i++){		if(st[0]!=NONE){			money+=GoodsDB[UserBody.m_st[st[i]].m_gid].m_money/2*UserBody.m_st[st[i]].m_lag;			UserBody.m_st[st[i]].init();		}	}	if(money>0){		send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_BODY_SALE,"1");	}else{		send_cmd_msg(buf,V_MSG_USERLEVEL,MSG_GOODS,MSG_GOODS_BODY_SALE,"0");	}	AddSocketBuf(buf);	return money;}/*void MyGamePlayer::SetData(unsigned int fd,char *ext) {	GamePlayer::SetData(fd,ext);  sscanf(ext,"%d|%d|%d|%d",&m_pos_x,&m_pos_y,&m_sex,&m_FaceID);}*///-------------------------------------------

⌨️ 快捷键说明

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