Problems with Dynamic Faction System
#1

Hey!

I'm using Darklom's Fort Carson Gamemode, and I can't seem to get the Faction System fixed.
The problem is, that, as soon as you restart the Server, every CREATED Faction gets moved up a slot.

Example:

New Faction created on Slot 8
-- Server Restart --
New Faction is on Slot 9, the Person that was set as Leader is still leader of Faction 8, and not 9.

Any ideas?
Reply
#2

What can we do without some code? Nothing.
Reply
#3

There we go.

Код:
public SaveFamilies()
{
    new idx;
    new File: file2;
    while (idx < sizeof(FamilyInfo))
    {
        new coordsstring[256];
        format(coordsstring, sizeof(coordsstring), "%s|%s|%f|%f|%f|%f|%f|%f|%s|%s|%s|%s|%s|%s|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d\n",
        FamilyInfo[idx][FamilyName],
        FamilyInfo[idx][FamilyMOTD],
        FamilyInfo[idx][FamilySpawn][0],
        FamilyInfo[idx][FamilySpawn][1],
        FamilyInfo[idx][FamilySpawn][2],
        FamilyInfo[idx][FamilyExit][0],
        FamilyInfo[idx][FamilyExit][1],
        FamilyInfo[idx][FamilyExit][2],
        FamilyInfo[idx][FamilyRank1],
        FamilyInfo[idx][FamilyRank2],
        FamilyInfo[idx][FamilyRank3],
        FamilyInfo[idx][FamilyRank4],
        FamilyInfo[idx][FamilyRank5],
        FamilyInfo[idx][FamilyRank6],
        FamilyInfo[idx][FamilySkin1],
        FamilyInfo[idx][FamilySkin2],
        FamilyInfo[idx][FamilySkin3],
        FamilyInfo[idx][FamilySkin4],
        FamilyInfo[idx][FamilySkin5],
        FamilyInfo[idx][FamilySkin6],
        FamilyInfo[idx][FamilyInterior],
        FamilyInfo[idx][FamilyDrugs],
        FamilyInfo[idx][FamilyMats],
        FamilyInfo[idx][FamilyMoney],
        FamilyInfo[idx][FamilyLocked],
        FamilyInfo[idx][FamilyGun][0],
        FamilyInfo[idx][FamilyGun][1],
        FamilyInfo[idx][FamilyGun][2],
        FamilyInfo[idx][FamilyGun][3],
        FamilyInfo[idx][FamilyAmmo][0],
        FamilyInfo[idx][FamilyAmmo][1],
        FamilyInfo[idx][FamilyAmmo][2],
        FamilyInfo[idx][FamilyAmmo][3],
        FamilyInfo[idx][FamilyUseable]);
        if(idx == 0)
        {
            file2 = fopen("families.cfg", io_write);
        }
        else
        {
            file2 = fopen("families.cfg", io_append);
        }
        fwrite(file2, coordsstring);
        idx++;
        fclose(file2);
    }
    return 1;
}
Reply
#4

The problem is, quickly looking trough your scripts, the index++;
This adds 1 everytime it runs and would explain the slot going up by 1 each time.

Try removing that and run it again.

Note: I'm not sure about this, it's just my first impression.
Reply
#5

Okay, I wanted to try that, but when I remove the idx++ line, the Server wont start up, cause for some reason YSI isnt loading as it usually does.
Reply
#6

Removing idx++ will create an infinite loop (freeze server). I think you don't want that

Show your loading function.
Reply
#7

pawn Код:
public LoadFamilies()
{
    new arrCoords[35][64];
    new strFromFile2[256];
    new File: file = fopen("cfgs/families.cfg", io_read);
    if (file) {
        new idx;
        while (idx < sizeof(FamilyInfo)) {
            fread(file, strFromFile2);
            split(strFromFile2, arrCoords, '|');
            strmid(FamilyInfo[idx][FamilyName], arrCoords[0], 0, strlen(arrCoords[0]), 255);
            strmid(FamilyInfo[idx][FamilyMOTD], arrCoords[1], 0, strlen(arrCoords[1]), 255);
            FamilyInfo[idx][FamilySpawn][0] = floatstr(arrCoords[2]);
            FamilyInfo[idx][FamilySpawn][1] = floatstr(arrCoords[3]);
            FamilyInfo[idx][FamilySpawn][2] = floatstr(arrCoords[4]);
            FamilyInfo[idx][FamilyExit][0] = floatstr(arrCoords[5]);
            FamilyInfo[idx][FamilyExit][1] = floatstr(arrCoords[6]);
            FamilyInfo[idx][FamilyExit][2] = floatstr(arrCoords[7]);
            strmid(FamilyInfo[idx][FamilyRank1], arrCoords[8], 0, strlen(arrCoords[8]), 255);
            strmid(FamilyInfo[idx][FamilyRank2], arrCoords[9], 0, strlen(arrCoords[9]), 255);
            strmid(FamilyInfo[idx][FamilyRank3], arrCoords[10], 0, strlen(arrCoords[10]), 255);
            strmid(FamilyInfo[idx][FamilyRank4], arrCoords[11], 0, strlen(arrCoords[11]), 255);
            strmid(FamilyInfo[idx][FamilyRank5], arrCoords[12], 0, strlen(arrCoords[12]), 255);
            strmid(FamilyInfo[idx][FamilyRank6], arrCoords[13], 0, strlen(arrCoords[13]), 255);
            FamilyInfo[idx][FamilySkin1] = strval(arrCoords[14]);
            FamilyInfo[idx][FamilySkin2] = strval(arrCoords[15]);
            FamilyInfo[idx][FamilySkin3] = strval(arrCoords[16]);
            FamilyInfo[idx][FamilySkin4] = strval(arrCoords[17]);
            FamilyInfo[idx][FamilySkin5] = strval(arrCoords[18]);
            FamilyInfo[idx][FamilySkin6] = strval(arrCoords[19]);
            FamilyInfo[idx][FamilyInterior] = strval(arrCoords[20]);
            FamilyInfo[idx][FamilyDrugs] = strval(arrCoords[21]);
            FamilyInfo[idx][FamilyMats] = strval(arrCoords[22]);
            FamilyInfo[idx][FamilyMoney] = strval(arrCoords[23]);
            FamilyInfo[idx][FamilyLocked] = strval(arrCoords[24]);
            FamilyInfo[idx][FamilyGun][0] = strval(arrCoords[25]);
            FamilyInfo[idx][FamilyGun][1] = strval(arrCoords[26]);
            FamilyInfo[idx][FamilyGun][2] = strval(arrCoords[27]);
            FamilyInfo[idx][FamilyGun][3] = strval(arrCoords[28]);
            FamilyInfo[idx][FamilyAmmo][0] = strval(arrCoords[29]);
            FamilyInfo[idx][FamilyAmmo][1] = strval(arrCoords[30]);
            FamilyInfo[idx][FamilyAmmo][2] = strval(arrCoords[31]);
            FamilyInfo[idx][FamilyAmmo][3] = strval(arrCoords[32]);
            FamilyInfo[idx][FamilyMembers] = strval(arrCoords[33]);
            FamilyInfo[idx][FamilyIden] = strval(arrCoords[34]);
            idx++;
        }
        fclose(file);
    }
    return 1;
}
Having same problem.
Reply
#8

Quote:
Originally Posted by MadeMan
Посмотреть сообщение
Removing idx++ will create an infinite loop (freeze server). I think you don't want that

Show your loading function.
I'm not such a good Scripter or anything, I dont really know what you mean.
Reply
#9

You showed SaveFamilies(), but show LoadFamilies() or something like that.
Reply
#10

Alright, here it is

Код:
public LoadFamilies()
{
	new arrCoords[34][64];
	new strFromFile2[256];
	new File: file = fopen("families.cfg", io_read);
	if (file)
	{
		new idx;
		while (idx < sizeof(FamilyInfo))
		{
			fread(file, strFromFile2);
			split(strFromFile2, arrCoords, '|');
			strmid(FamilyInfo[idx][FamilyName], arrCoords[0], 0, strlen(arrCoords[0]), 255);
			strmid(FamilyInfo[idx][FamilyMOTD], arrCoords[1], 0, strlen(arrCoords[1]), 255);
			FamilyInfo[idx][FamilySpawn][0] = floatstr(arrCoords[2]);
			FamilyInfo[idx][FamilySpawn][1] = floatstr(arrCoords[3]);
			FamilyInfo[idx][FamilySpawn][2] = floatstr(arrCoords[4]);
			FamilyInfo[idx][FamilyExit][0] = floatstr(arrCoords[5]);
			FamilyInfo[idx][FamilyExit][1] = floatstr(arrCoords[6]);
			FamilyInfo[idx][FamilyExit][2] = floatstr(arrCoords[7]);
			strmid(FamilyInfo[idx][FamilyRank1], arrCoords[8], 0, strlen(arrCoords[8]), 255);
			strmid(FamilyInfo[idx][FamilyRank2], arrCoords[9], 0, strlen(arrCoords[9]), 255);
			strmid(FamilyInfo[idx][FamilyRank3], arrCoords[10], 0, strlen(arrCoords[10]), 255);
			strmid(FamilyInfo[idx][FamilyRank4], arrCoords[11], 0, strlen(arrCoords[11]), 255);
			strmid(FamilyInfo[idx][FamilyRank5], arrCoords[12], 0, strlen(arrCoords[12]), 255);
			strmid(FamilyInfo[idx][FamilyRank6], arrCoords[13], 0, strlen(arrCoords[13]), 255);
			FamilyInfo[idx][FamilySkin1] = strval(arrCoords[14]);
			FamilyInfo[idx][FamilySkin2] = strval(arrCoords[15]);
			FamilyInfo[idx][FamilySkin3] = strval(arrCoords[16]);
			FamilyInfo[idx][FamilySkin4] = strval(arrCoords[17]);
			FamilyInfo[idx][FamilySkin5] = strval(arrCoords[18]);
			FamilyInfo[idx][FamilySkin6] = strval(arrCoords[19]);
			FamilyInfo[idx][FamilyInterior] = strval(arrCoords[20]);
			FamilyInfo[idx][FamilyDrugs] = strval(arrCoords[21]);
			FamilyInfo[idx][FamilyMats] = strval(arrCoords[22]);
			FamilyInfo[idx][FamilyMoney] = strval(arrCoords[23]);
			FamilyInfo[idx][FamilyLocked] = strval(arrCoords[24]);
			FamilyInfo[idx][FamilyGun][0] = strval(arrCoords[25]);
			FamilyInfo[idx][FamilyGun][1] = strval(arrCoords[26]);
			FamilyInfo[idx][FamilyGun][2] = strval(arrCoords[27]);
			FamilyInfo[idx][FamilyGun][3] = strval(arrCoords[28]);
			FamilyInfo[idx][FamilyAmmo][0] = strval(arrCoords[29]);
			FamilyInfo[idx][FamilyAmmo][1] = strval(arrCoords[30]);
			FamilyInfo[idx][FamilyAmmo][2] = strval(arrCoords[31]);
			FamilyInfo[idx][FamilyAmmo][3] = strval(arrCoords[32]);
			FamilyInfo[idx][FamilyUseable] = strval(arrCoords[33]);
			idx++;
		}
		fclose(file);
	}
	return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)