📄 mygameserver.cc
字号:
#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 + -