Пример #1
0
void Logic_Announce::create_handsel_flowers_announce(const int32_t ann_id, const role_id_t role_id, const Chat_Item_Info& item) {
	make_announce(ANNOUNCE_DISTRICT_SYSTEM, ann_id);
	{
		Logic_Player* self = player_self();
		Role_Info role_info;
		role_info.career = career();
		role_info.gender = self->base_detail().gender;
		role_info.level  = level();
		role_info.role_id = player_self()->role_id();
		role_info.role_name = role_name();
		role_info.vip_level = self->vip();
		role_info.guild_name = self->base_detail().gang_name;
		announce_push_role( role_info );
	}
	{
		//announce_push_item(item);
	}
	{
		DB_View::ID_Player_View_Map::iterator iter = LOGIC_MONITOR->db_view()->id_player_view_map.find(role_id);
		if (iter == LOGIC_MONITOR->db_view()->id_player_view_map.end()) {
			MSG_USER("player(role_id=%ld) is not in db_view", role_id);
			return;
		}
		Role_Info role_info;
		role_info.career = iter->second->career;
		role_info.gender = iter->second->gender;
		role_info.level  = iter->second->level;
		role_info.role_id = iter->second->role_id;
		role_info.role_name = iter->second->role_name;
		role_info.vip_level = iter->second->vip();
		role_info.guild_name = iter->second->gang_name;
		announce_push_role( role_info );
	}
	announce_send();
}
Пример #2
0
void get_master_player_by_name(const FunctionCallbackInfo<Value>& args) {
	if (args.Length() != 1) {
		LOG_ERROR("get_master_player_by_name args error, length: %d\n", args.Length());
		args.GetReturnValue().SetNull();
		return;
	}

	String::Utf8Value str(args[0]);
	std::string role_name(ToCString(str));
	Master_Player *player = MASTER_MANAGER->find_role_name_master_player(role_name);
	if (player) {
		args.GetReturnValue().Set(wrap_master_player(args.GetIsolate(), player));
	} else {
		//设置对象为空
		args.GetReturnValue().SetNull();
	}
}
Пример #3
0
void Logic_Announce::create_gang_announce(int64_t gang_id, const std::string& gang_name) {
	make_announce(ANNOUNCE_DISTRICT_SYSTEM, ANNOUNCE_ID_CREATE_GANG);
	Logic_Player* self = player_self();
	Role_Info role_info;
	role_info.career = career();
	role_info.combat = self->fighter_detail().force;
	role_info.gender = self->base_detail().gender;
	role_info.level  = level();
	role_info.role_id = role_id();
	role_info.role_name = role_name();
	role_info.vip_level = self->vip();
	role_info.guild_name = gang_name;

	announce_push_role( role_info );
	announce_push_text( gang_name );
	announce_send();
}
Пример #4
0
void Logic_Announce::create_arena_rise_announce(const std::string& group_name){
	make_announce(ANNOUNCE_DISTRICT_SYSTEM, ANNOUNCE_ID_ARENA_RISE);
	Logic_Player* self = player_self();
	Role_Info role_info;
	role_info.career = career();
	// TODO fill combat value
	role_info.combat = 0;
	role_info.gender = self->base_detail().gender;
	role_info.level  = level();
	role_info.role_id = player_self()->role_id();
	role_info.role_name = role_name();
	role_info.vip_level = self->vip();
	role_info.guild_name = self->base_detail().gang_name;

	announce_push_role( role_info );
	announce_push_text( group_name );
	announce_send();
}
Пример #5
0
int Player_Monster::battle_appear_info(Block_Buffer &buf) {
    // size_t rd_idx = buf.get_read_idx();
    size_t wr_begin_idx = buf.get_write_idx();
    size_t wr_end_idx = 0;
    uint32_t len = 0;

    // fill head
    buf.make_message(ACTIVE_FIGHTER_APPEAR);

    MSG_81000008 msg;
    msg.fighter_info.role_id = role_id();
    msg.fighter_info.role_name = role_name();
    msg.fighter_info.career = career_;
    msg.fighter_info.gender = gender_;
    msg.fighter_info.position.val_1 = mover_detail().battle_position.pos;
    msg.fighter_info.position.val_2 = mover_detail().battle_position.idx;
    msg.fighter_info.hp_curr = blood_current();
    msg.fighter_info.hp_max = blood_max();
    msg.fighter_info.avatar = avatar_vec;
    boost::unordered_set<Property_Type> property_set;
    property_set.insert(PT_MORALE_CAPS);
    property_set.insert(PT_MORALE_CURRENT);

    for (boost::unordered_set<Property_Type>::iterator it = property_set.begin(); it != property_set.end(); ++it) {
        msg.fighter_info.init_props.push_back(Prop_Change(*it));
    }

    for (std::vector<Prop_Change>::iterator pc_it = msg.fighter_info.init_props.begin();
            pc_it != msg.fighter_info.init_props.end(); ++pc_it) {
        (*pc_it).current_val = fighter_detail().fetch_fight_property(Property_Type((*pc_it).prop_type));
    }

    msg.serialize(buf);

    // refill len in head
    wr_end_idx = buf.get_write_idx();
    len = wr_end_idx - wr_begin_idx - sizeof(uint32_t);
    buf.set_write_idx(wr_begin_idx);
    buf.write_uint32(len);
    buf.set_write_idx(wr_end_idx);

    return 0;
}
Пример #6
0
void Logic_Announce::create_vip_turntable_announce(const Chat_Item_Info& item) {
	make_announce(ANNOUNCE_DISTRICT_SYSTEM, ANN_ID_VIP_TURNTABLE);
	{
		Logic_Player* self = player_self();
		Role_Info role_info;
		role_info.career = career();
		role_info.gender = self->base_detail().gender;
		role_info.level  = level();
		role_info.role_id = player_self()->role_id();
		role_info.role_name = role_name();
		role_info.vip_level = self->vip();
		role_info.guild_name = self->base_detail().gang_name;
		announce_push_role( role_info );
	}
	{
		announce_push_item(item);
	}
	announce_send();
}