/// @param result /// 0 (0x718): An unknown error has occurred. /// 1: none/success /// 3 (0x719): A database error occurred. /// 4 (0x71a): To delete a character you must withdraw from the guild. /// 5 (0x71b): To delete a character you must withdraw from the party. /// Any (0x718): An unknown error has occurred. /// HC: <0828>.W <char id>.L <Msg:0-5>.L <deleteDate>.L void chclif_char_delete2_ack(int fd, uint32 char_id, uint32 result, time_t delete_date) { WFIFOHEAD(fd,14); WFIFOW(fd,0) = 0x828; WFIFOL(fd,2) = char_id; WFIFOL(fd,6) = result; #if PACKETVER_CHAR_DELETEDATE WFIFOL(fd,10) = TOL(delete_date-time(NULL)); #else WFIFOL(fd,10) = TOL(delete_date); #endif WFIFOSET(fd,14); }
void CharServer::delete2_ack( tcp_connection::pointer cl, int char_id, int result, time_t deltime ) { WFIFOHEAD(cl,14); WFIFOW(cl,0) = HEADER_HC_DEL_REQUEST_ACK; WFIFOL(cl,2) = char_id; WFIFOL(cl,6) = result; WFIFOL(cl,10) = TOL(deltime); cl->send_buffer(14); }
/*! * \brief Char to Buffer * \details Makes the character cache * \author Fimbulwinter Development Team * \author GreenBox * \date 08/12/11 * **/ void CharServer::char_to_buf(struct CHARACTER_INFO *charinfo, CharData *p) { if( charinfo == NULL || p == NULL ) return; charinfo->char_id = p->char_id; charinfo->base_exp = min<unsigned int>(p->base_exp, INT32_MAX); charinfo->zeny = p->zeny; charinfo->job_exp = min<unsigned int>(p->job_exp, INT32_MAX); charinfo->job_level = p->job_level; charinfo->bodystate = 0; charinfo->healthstate = 0; charinfo->effectstate = p->option; charinfo->virtue = p->karma; charinfo->honor = p->manner; charinfo->status_points = min<unsigned short>(p->status_point, INT16_MAX); #if PACKETVER > 20081217 charinfo->hp = p->hp; charinfo->max_hp = p->max_hp; #else charinfo->hp = min<unsigned short>(p->hp, INT16_MAX); charinfo->max_hp = min<unsigned short>(p->max_hp, INT16_MAX); #endif charinfo->sp = min<unsigned short>(p->sp, INT16_MAX); charinfo->max_sp = min<unsigned short>(p->max_sp, INT16_MAX); charinfo->speed = DEFAULT_WALK_SPEED; // p->speed; charinfo->class_ = p->class_; charinfo->head_style = p->hair; charinfo->weapon = p->option&0x7E80020 ? 0 : p->weapon; //When the weapon is sent and your option is riding, the client crashes on login!? charinfo->base_level = p->base_level; charinfo->skill_points = min<unsigned short>(p->skill_point, INT16_MAX); charinfo->head_bottom = p->head_bottom; charinfo->shield = p->shield; charinfo->head_top = p->head_top; charinfo->head_mid = p->head_mid; charinfo->head_color = p->hair_color; charinfo->body_color = p->clothes_color; memcpy(charinfo->name, p->name, NAME_LENGTH); charinfo->str = (unsigned char)min<unsigned short>(p->str, UINT8_MAX); charinfo->agi = (unsigned char)min<unsigned short>(p->agi, UINT8_MAX); charinfo->vit = (unsigned char)min<unsigned short>(p->vit, UINT8_MAX); charinfo->int_ = (unsigned char)min<unsigned short>(p->int_, UINT8_MAX); charinfo->dex = (unsigned char)min<unsigned short>(p->dex, UINT8_MAX); charinfo->luk = (unsigned char)min<unsigned short>(p->luk, UINT8_MAX); charinfo->char_slot = p->slot; charinfo->hair_color = 0; //Should we send it? It doesn't seem to affect anything. #if PACKETVER >= 20061023 charinfo->can_rename = ( p->rename > 0 ) ? 0 : 1; #endif #if (PACKETVER >= 20100720 && PACKETVER <= 20100727) || PACKETVER >= 20100803 maps.copy_map_name_ext(charinfo->map_name, p->last_point.map); #endif #if PACKETVER >= 20100803 charinfo->delete_date = TOL(p->delete_date); #endif #if PACKETVER >= 20110111 charinfo->robe = p->robe; #endif #if PACKETVER >= 20110928 charinfo->can_changeslot = 0; // change slot feature (0 = disabled, otherwise enabled) #endif return; }