Exemplo n.º 1
0
/// @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);
}
Exemplo n.º 2
0
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);
}
Exemplo n.º 3
0
/*! 
 *  \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;
}