Esempio n. 1
0
void send_char_details(int actor_node, const char *char_name){

    /** public function - see header */

    int socket=clients.client[actor_node].socket;

    //get the id for the char
    int char_id=get_db_char_id(char_name);

    //check that the char id is valid
    if(char_id==0){

        send_text(socket, CHAT_SERVER, "%c%s", c_red3+127, "character does not exist");
        return;
    }

    //if the char id is valid then load the char data from the database
    get_db_char_data(char_id);

    send_text(socket, CHAT_SERVER, "%cCharacter    :%s", c_green3+127, character.char_name);

    int race_id=character_types.character_type[character.char_type].race_id;
    send_text(socket, CHAT_SERVER, "%cRace         :%s", c_green3+127, races.race[race_id].race_name);

    int gender_id=character_types.character_type[character.char_type].gender_id;
    send_text(socket, CHAT_SERVER, "%cGender       :%s", c_green3+127, genders.gender[gender_id].gender_name);

    char time_stamp_str[9]="";
    char date_stamp_str[11]="";
    get_time_stamp_str(character.char_created, time_stamp_str);
    get_date_stamp_str(character.char_created, date_stamp_str);

    send_text(socket, CHAT_SERVER, "%cDate Created :%s %s", c_green3+127, date_stamp_str, time_stamp_str);

    send_text(socket, CHAT_SERVER, "%cCharacter Age:%i", c_green3+127, char_age(actor_node));

    if(character.guild_id==0){

        send_text(socket, CHAT_SERVER, "%cGuild        :guildless player", c_green3+127);
        send_text(socket, CHAT_SERVER, "%cRank         :n/a", c_green3+127);
        send_text(socket, CHAT_SERVER, "%cJoined       :n/a", c_green3+127);
    }
    else {

        int guild_id=character.guild_id;

        send_text(socket, CHAT_SERVER, "%cGuild        :%s", c_green3+127, guilds.guild[guild_id].guild_name);
        send_text(socket, CHAT_SERVER, "%cGuild tag    :%s", c_green3+127, guilds.guild[guild_id].guild_tag );

        send_text(socket, CHAT_SERVER, "%cRank         :%i", c_green3+127, character.guild_rank);

        get_time_stamp_str(character.joined_guild, time_stamp_str);
        get_date_stamp_str(character.joined_guild, date_stamp_str);

        send_text(socket, CHAT_SERVER, "%cJoined       :%s %s", c_green3+127, date_stamp_str, time_stamp_str);
    }
}
Esempio n. 2
0
void check_new_character(int connection, unsigned char *packet){

    int packet_length=packet[1] + (packet[2] * 256) + 2;

    //create a union so we can convert the packet array into easily accessible individual data elements
    union {

        unsigned char buf[packet_length];

        struct {
            unsigned char protocol;
            unsigned char lsb;
            unsigned char msb;
            char name_and_password[packet_length-10];
            unsigned char skin;
            unsigned char hair;
            unsigned char shirt;
            unsigned char pants;
            unsigned char boots;
            unsigned char type;
            unsigned char head;
        }output;

    }convert;

    //copy the packet into the union
    memcpy(convert.buf, packet, packet_length);

    //extract the character name from the union
    char char_name[80]="";
    get_str_island(convert.output.name_and_password, char_name, 1);

    //check if the character name already exists
    if(get_db_char_data(char_name)==FOUND){

        //if the char name exists, abort character creation and send warning to client
        char text_out[1024]="";
        sprintf(text_out, "%cSorry, but that character name already exists", c_red1+127);
        send_raw_text(connection, CHAT_SERVER, text_out);

        send_create_char_not_ok(connection);

        log_event(EVENT_SESSION, "Attempt to create new char with existing char name [%s]", char_name);

        return;
    }
    else {

        //if char name does not exist, tell idle buffer to create a new character with that name
        db_push_buffer("", connection, IDLE_BUFFER_PROCESS_ADD_NEWCHAR, packet);
    }
}