📄 mygameplayer.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 + -