Hello, I am trying to write one of these but I am having problems. I was able to
write one in Dev C++ doing the same thing as what I can tell, in my MUD. It
works fine in Dev C++ but it doesn't seem to be working correctly in the game.

Here is what I have in Dev C++:
#include <stdio.h>
#include <stdlib.h>

void fill_table();

#define MAX_SIZE = 3

struct type
{
        char *name;
        int length;
};

struct type *table_type;

struct type *table_type =
{
};

int main(int argc, char *argv[])
{
        int i;
        fill_table();

        printf("Name: %s. Length: %d\n\r", table_type[0].name,
table_type[0].length);
        printf("Name: %s. Length: %d\n\r", table_type[1].name,
table_type[1].length);
        printf("Name: %s. Length: %d\n\r", table_type[2].name,
table_type[2].length);


        return 0;
}

void fill_table()
{
        table_type = malloc(sizeof(struct type) * 3);
        table_type[0].name = "TEST";
        table_type[0].length = 10;
        table_type[1].name = "TEST2";
        table_type[1].length = 102;
        table_type[2].name = "TEST3";
        table_type[2].length = 103;
}

This works just fine when I execute it.
Here is the output:
Name: TEST. Length: 10
Name: TEST2. Length: 102
Name: TEST3. Length: 103
This is what I have in my game:
Merc.h:
struct  spells_type
{
    char *      name;
    sh_int      length;
};
struct  spells_type     *spells_table;

Const.c:
struct          spells_type             *spells_table =
{
};

db.c:
fill_table();

act_wiz.c:
(These will be moved after I get it working and is only for testing)
void do_test(CHAR_DATA *ch, char *argument)
{


        //spells_table[0].name = "TEST";
        //spells_table[0].length = 10;



        sc(ch, "Spell 1: Name: %s. Delay: %d.\n\r", spells_table[0].name,
spells_table[0].length);
        sc(ch, "Spell 2: Name: %s. Delay: %d.\n\r", spells_table[1].name,
spells_table[1].length);
        sc(ch, "Spell 3: Name: %s. Delay: %d.\n\r", spells_table[2].name,
spells_table[2].length);
        sc(ch, "Size of the table: %d\n\r", sizeof(struct spells_type));
}

void fill_table()
{
        int num = 3;
        spells_table = malloc(sizeof(struct spells_type) * num );

        spells_table[0].name = "TEST";
        spells_table[0].length = 10;
        spells_table[1].name = "TEST2";
        spells_table[1].length = 102;
        spells_table[2].name = "TEST3";
        spells_table[2].length = 103;

}

I do a clean compile and then copyover, then, I type do_test:
>test
Spell 1: Name: (null). Delay: 0.
Spell 2: Name: (null). Delay: 0.
Spell 3: Name: (null). Delay: 0.
Size of the table: 8

However, when I uncomment the few lines of code in do_test, this happens:
>test
Spell 1: Name: TEST. Delay: 10.
Spell 2: Name: (null). Delay: 0.
Spell 3: Name: (null). Delay: 0.
Size of the table: 8


I am not entirely sure what is wrong since I am doing the same exact thing, from
what I can tell, and it doesn't work.
I have no idea what is wrong and why this isn't working.
It looks like the assigning of the data in the table isn't working correctly. Do
I have to do something else since it is spread out amongest many files?

Thank you for any help that you can provide!
James

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.

Reply via email to