Esempio n. 1
0
//创建角色
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);
	//合法性检测
}
Esempio n. 2
0
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);
		}
	}
}
Esempio n. 3
0
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);//从数据库导入玩家信息
	}
}
Esempio n. 4
0
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);	
}