//创建角色 void create_character(rpacket_t rpk,player_t ply) { uint8_t avattype = rpk_read_uint8(rpk); const char *chaname = rpk_read_string(rpk); uint32_t agentsession = rpk_read_uint32(rpk); //合法性检测 }
void player_login(rpacket_t rpk,player_t ply) { uint32_t gateident = rpk_read_uint32(rpk); const char *actname = rpk_read_string(rpk); ply = find_player_by_actname(actname); if(ply){ //对象还未销毁 if(ply->_agentsession != 0){ //通知gate直接断掉连接 shortmsg2gate(CMD_GAME2GATE_INVID_CON,gateident); }else{ //重新绑定 } }else{ ply = create_player(actname,gateident); if(!ply){ //通知玩家系统繁忙 shortmsg2gate(CMD_GAME2GATE_BUSY,gateident); return; } if(0 != load_player_info(ply)){ shortmsg2gate(CMD_GAME2GATE_BUSY,gateident); remove_player(ply); } } }
void player_login(rpacket_t rpk) { string_t actname = rpk_read_string(rpk); uint32_t gateident = rpk_read_uint32(rpk); player_t ply = find_player_by_actname(actname); if(ply){ //对象还未销毁,重新绑定关系 }else{ create_player(actname,gateident); load_player_info(ply);//从数据库导入玩家信息 } }
void on_packet(connection_t c,packet_t p){ //printf("on_packet\n"); //stream_conn_send(c,p); //stream_conn_close(c); rpacket_t rpk = (rpacket_t)p; const char *str = rpk_read_string(rpk); if(strcmp(str,"hello") != 0) { printf("error\n"); exit(0); } ++packet_count; connection_send(c,(packet_t)make_writepacket(p),NULL,NULL); }