Hey list, I've got a problem I can't really figure out what's going on. I've created an online clan editor(for standard RoT 1.4 clan system) and it all worked fine i thought until i noticed that every time the mud boots and i create say 3 clans, the new clan will always overwrite all other clans created since the mud was booted, but just theyre who_name's as far as I can tell. if i reboot, and boot the mud, all the clans made last time still are whonamed like the last one, but now when i create more clans it happens again, but only with the ones create since the last reboot...ive posted an example of what happens during play, then included the create and delete code below, i use this create/delete method for my editors for classes, races, groups and skills and have no problems so i assume its something very small, i just cant find it. anyway, heres the stuff:


<100hp 100m 100mv> clan list
* = Pkill Clan
----------------------------------------------------------------------

<100hp 100m 100mv> cledit
  ---Editor---
Name    : loner
Who Name: Loner
Desc    : Unused
PK?     : Yes
Hall    : [3700]
Entrance: [3700]
Pit     : [3700]
   ---Info---
Members : 0
Leaders :
<100hp 100m 100mv> create clan1
  ---Editor---
Name    : clan1
Who Name: clan1
Desc    : No description
PK?     : No
Hall    : [0]
Entrance: [0]
Pit     : [0]
   ---Info---
Members : 0
Leaders :
<100hp 100m 100mv> list
[ #] Clan       WhoN       PK?  Hall   Pit    Entrance  Description
[ 0] loner      Loner       *   3700   3700   3700      Unused
[ 1] clan1      clan1           0      0      0         No description

<100hp 100m 100mv> create clan2
  ---Editor---
Name    : clan2
Who Name: clan2
Desc    : No description
PK?     : No
Hall    : [0]
Entrance: [0]
Pit     : [0]
   ---Info---
Members : 0
Leaders :
<100hp 100m 100mv> list
[ #] Clan       WhoN       PK?  Hall   Pit    Entrance  Description
[ 0] loner      Loner       *   3700   3700   3700      Unused
[ 1] clan1      clan2           0      0      0         No description
[ 2] clan2      clan2           0      0      0         No description

<100hp 100m 100mv> create clan3
  ---Editor---
Name    : clan3
Who Name: clan3
Desc    : No description
PK?     : No
Hall    : [0]
Entrance: [0]
Pit     : [0]
   ---Info---
Members : 0
Leaders :
<100hp 100m 100mv> clan list
* = Pkill Clan
----------------------------------------------------------------------
Name: Clan1
[  clan3   ]     Members: 0
Desc: No description
Leaders:
----------------------------------------------------------------------
Name: Clan2
[  clan3   ]     Members: 0
Desc: No description
Leaders:
----------------------------------------------------------------------
Name: Clan3
[  clan3   ]     Members: 0
Desc: No description
Leaders:
----------------------------------------------------------------------










CLEDIT( cledit_create )
{
        CLAN_DATA *pClan;
        struct clan_type *new_table;
        int l;

        if ( argument[0] == '\0' )
        {
                send_to_char("Syntax: create (clan name)\n\r",ch);
                return FALSE;
        }
        if( is_number(argument))
        {
                send_to_char("Alphabetical characters only please.\n\r",ch);
                return FALSE;
        }

        maxClan++;
        new_table = realloc (clan_table, sizeof(struct clan_type) * (maxClan ));

        clan_table = new_table;
        clan_table[maxClan - 1].name = str_dup(argument);
        clan_table[maxClan - 1].who_name = left(argument,10);
        clan_table[maxClan - 1].exname = str_dup("No description");
        clan_table[maxClan - 1].pkill = FALSE;
        clan_table[maxClan - 1].entrance = 0;
        clan_table[maxClan - 1].pit = 0;
        clan_table[maxClan - 1].hall = 0;
        clan_table[maxClan - 1].independent = FALSE;
        clan_table[maxClan - 1].flags = 0;
        clan_table[maxClan - 1].members = 0;
        for(l=0;l<5;l++)
                clan_table[maxClan - 1].leaders[l] = NULL;

        pClan = get_clan_data( maxClan-1 );
   ch->desc->pEdit = (void *)pClan;
        cledit_show(ch,"");
        save_clans();
        return TRUE;
}







CLEDIT( cledit_delete )
{
        int i,j;
        CLAN_DATA *pClan;
        char *FmtString;
        char buf[MSL];
        struct clan_type *new_table = malloc (sizeof(struct clan_type) * 
maxClan);

        EDIT_CLAN( ch, pClan) ;
        if( argument[0] != '\0' )
        {
                ptc(ch,"Deleted status removed.\n\r");
                REMOVE_BIT(pClan->flags, CLAN_DELETED );
                return TRUE;
        }
        if( pClan->independent )
        {
                ptc(ch,"%s cannot be deleted because it is for 
loners.\n\r",pClan->name);
                return FALSE;
        }
        if( !IS_SET(pClan->flags, CLAN_DELETED ))
        {
sprintf(buf,"{3--- Are you sure you want to delete %s? ---{x",pClan->name );
                FmtString = fsl(buf,53,ALIGN_CENTER);
                ptc( ch,"%s\n\r"
                        "{!Warning: {1this process is irreversible.{x\n\r"
                        "         {1are you certain you want to 
proceed?{x\n\n\r"
                        "  {3To confirm type '{1delete{3' again with no 
arguments{x\n\r"
                        "  {3otherwise type delete with an argument to 
reset.{x\n\r",
                                str_dup(FmtString) );
                        SET_BIT(pClan->flags, CLAN_DELETED );
                return TRUE;
        }
        if (!new_table)
        {
                send_to_char ("Memory allocation failed. Brace for 
impact...\n\r",ch);
                return FALSE;
        }

        for (i = 0, j = 0; i < maxClan+1; i++)
                if (i != clan_lookup(pClan->name))
                {
                        new_table[j] = clan_table[i];
                        j++;
                }
        free (clan_table);
        clan_table = new_table;

        maxClan--; /* Important :() */
        pClan = &clan_table[maxClan-1];
   ch->desc->pEdit = (void *)pClan;

        send_to_char ("Deleted.\n\r",ch);
        save_clans();
        return FALSE;
}


Reply via email to