Loadout quantity limit?

  • Two Factor Authentication is now available on BeyondUnreal Forums. To configure it, visit your Profile and look for the "Two Step Verification" option on the left side. We can send codes via email (may be slower) or you can set up any TOTP Authenticator app on your phone (Authy, Google Authenticator, etc) to deliver codes. It is highly recommended that you configure this to keep your account safe.

Kueltag

New Member
Jan 31, 2008
53
0
0
Hi

You can put only a certain amount of stuff in a loadout, after that, it starts leaving out things. This is only likely to happen with the Microbulk mutator, the limit is of course not small.

My question: what is it limited by, and at what value exactly?
 

geogob

Koohii o nomimasu ka?
Hi

You can put only a certain amount of stuff in a loadout, after that, it starts leaving out things. This is only likely to happen with the Microbulk mutator, the limit is of course not small.

My question: what is it limited by, and at what value exactly?

Not too sure. What its limited by (haven't looked at the code in a long time, especially not the loadout code), but it's most likely limitation caused by the implementation that has no work around (except with a mutator updating the code).
 

Snakeye

Mk82HD
Jan 28, 2000
1,966
0
36
46
Klagenfurt, Carinthia, Austria
Visit site
Okay, this is only a pretty wild guess from my side, but I assume, since I came across this on a few testing occasions, that the limit lies within the length of the loadout string - when I start "losing" things because I add too much different items, it's always the items last in the string that go. Strange enough the string in the ini seems to be alright, but not processed completely when the items are "handed out" to the player.

I'm not sure which mechanism exactly is at work here, since strings should have a length of 1023 according to UnrealWiki, but it might be possible the loadout string is converted/assigned to a type, which supports less length - I think I counted the numbers of characters in a affected string once and if I recall correctly the first affected item was at a 128ish (or 256ish?) length, which does seem like a plausible limit (plausible as in: it's a 2^n value ;)).

I know I'm doing a bit too much guess work here to be helping, perhaps I'll have a closer look at the topic once I have my environment working again - my laptop deceased at the age of only 25 months from a sudden GFX card failure.

So young, soo damn young, WHY!!! :shake:

I still have to get the data from its harddrive..
 

Kueltag

New Member
Jan 31, 2008
53
0
0
Poor laptop, R.I.P. :( :)

I did a few tests: I checked the length of the text in Loadouts.ini and Loadoutmanager.ini, and it's not that (242 characters - everything's there, 199 characters - missing stuff). Also it's not how many different things you take with yourself (weapons, extras, ammo) (28 different things - everything's there, 24 different things - missing stuff). It's also not how many pieces of stuff you have, I tried thousands of clips in loadouts, nothing was missing. It's interesting though that once you have started playing, you can pick up tons of things, nothing will disappear (I started with a huge loadout, and picked up everything in the training level).

Now where can I find that string you mentioned, if I understood correctly you didn't talk about the Loadout.ini string.
 

Snakeye

Mk82HD
Jan 28, 2000
1,966
0
36
46
Klagenfurt, Carinthia, Austria
Visit site
Actually I was referring to the string in the loadout.ini. Guess I'll have to conduct further research. Would you mind posting the loadout strings you mentioned, the ones which were missing stuff?

Also my mood did go up a bit today, when I found out my new lappie went out for delivery today and is arriving at least 4 days ahead of schedule (sadly on a monday and I won't be able to pick it up until friday..). I still have hope they make it tomorrow perhaps - I mean Lodz is not too far away..
 

Kueltag

New Member
Jan 31, 2008
53
0
0
Would you mind posting the loadout strings you mentioned, the ones which were missing stuff?

Good one:
Mk23-1,#Mk23SUP-1,#Mk23LAM-1,*Mk23-10,DE50-1,*DE50-10,DE50AE-1,
#DE50AESC-1,*DE50AE-10,M92F-1,*M92F-10,M93R-1,*M93R-10,1911-1,
*1911-10,FSVEN-1,*FSVEN-10,UDAR-1,*UDAR-10,M1S90-1,*M1S90-10,M3-1,
*M3-10,MAG7-1,*MAG7-10,+M67-10,*M7290-10,AT4-1,
that's 28 different things, and 238 characters.

A wrong one:
Mk23-1,*Mk23-10,DE50-1,*DE50-10,DE50AE-1,*DE50AE-10,M92F-1,
*M92F-10,M93R-1,*M93R-10,1911-1,*1911-10,FSVEN-1,*FSVEN-10,UDAR-1,
*UDAR-10,M1S90-1,*M1S90-10,M3-1,*M3-10,MAG7-1,*MAG7-10,
AKMSU-1,*AKMSUD-10,
that's 24 different things, and 199 characters. The AKMSU drums were missing.

There are those longer names, like INF_Core.INFc_FSVEN, maybe where these names are stored lies the problem.

Edit: I made a monster-loadout, this:
1911-1,*1911-1,Mk23-1,*Mk23-1,DE50-1,*DE50-1,DE50AE-1,*DE50AE-1,M92F-1,*M92F-1,M93R-1,
*M93R-1,FSVEN-1,*FSVEN-1,M1S90-1,*M1S90-1,M3-1,*M3-1,M82A1-1,*M82A1-1,RC50-1,*RC50-1,
PSG-1,*PSG-1,M14-1,*M14-1,VSSV-1,*VSSV-1,G36K-1,*G36K-1,XM8-1,*XM8-1,MP5K-1,*MP5K-1,
MP5A2-1,*MP5A2-1,MP540-1,*MP540-1,M16A4-1,*M16A4-1,M16-1,*M16-1,FAMAS-1,*FAMAS-1,
M4A1-1,*M4A1-1,SIG551-1,*SIG551-1,AKM-1,*AKM-1,*AKMdrum-1,HK416-1,*HK416-1,AKMSU-1,
BAKMSU-1,*AKMSUM-1,*AKMSUD-1,MicroUzi-1,*MicroUzi_sm-1,*MicroUzi_lm-1,MINIUZI-1,*MINIUZI-1,
P90-1,*P90-1,+M67-20,IMODNV-1,IMODBNCS-1,
and as you said, it kept the stuff that is at the front of the row. It had everything up until the MP5K, where it only had the weapon, but no ammo. Nothing from there on, no M67, no nightvision, no binocs. It kept 33 different things, the * character in the *MP5K-1 is the 248th in the string. Even the comma after the MP5K ammo is the 255th, I would think this should be in. But as I wrote above, loadouts with just 199 characters were missing stuff, so the limit should be elsewhere.
 
Last edited:

Carpetsmoker

Nexus-6
Jan 20, 2008
227
0
16
38
Netherlands
arp242.net
You can have a maximum of 100 items, look at INF_Core.INFc_LoadoutConfig.uc ... Loadout items are stored in:
var() class<INFc_LoadoutItemInfo> ItemClasses[100];

Mk23-1,#Mk23SUP-1,#Mk23LAM-1,*Mk23-10,DE50-1,*DE50-10,DE50AE-1,
#DE50AESC-1,*DE50AE-10,M92F-1,*M92F-10,M93R-1,*M93R-10,1911-1,
*1911-10,FSVEN-1,*FSVEN-10,UDAR-1,*UDAR-10,M1S90-1,*M1S90-10,M3-1,
*M3-10,MAG7-1,*MAG7-10,+M67-10,*M7290-10,AT4-1,
that's 28 different things, and 238 characters.

Things like "*DE50AE-10" count for 10, not 1 ...
 

Snakeye

Mk82HD
Jan 28, 2000
1,966
0
36
46
Klagenfurt, Carinthia, Austria
Visit site
You can have a maximum of 100 items, look at INF_Core.INFc_LoadoutConfig.uc ... Loadout items are stored in:
var() class<INFc_LoadoutItemInfo> ItemClasses[100];
...
Things like "*DE50AE-10" count for 10, not 1 ...

Sorry, but it seems to me this can't be correct. I used to have COOP loadouts with definetly more than 100 items. To give one of my worst examples:
FN FAL (1)
FN FAL Ammo (30)
Uzi (1)
Uzi Ammo (20)
M9 (1)
M9 Ammo (20)
M67 (8)
Red Smoke (20)
Yelllow Smoke (10)
Green Smoke (10)
Purple Smoke (10)
Claymore (4) [not sure, could've been 8 too]
Breaching Charges (8)
Boonie Hat (1)
NVG (1)
Lvl3 Armor (1)
Total 146 items, all of them present, and don't get me started about that AKM and VOG25P loadout where I carried an additional 45 40mm nades..

Also the name "itemclasses" would actually indicate that only the classes count - though names are not always descriptive. In any case this should be actually easily testable by making a loadout with one weapon and 99 mags for it, then adding any other item. If the item doesn't show up it's most probably correct. Too bad I won't have any Inf until Sunday :(
 

Kueltag

New Member
Jan 31, 2008
53
0
0
Correct, I've made test loadouts with 1000 clips for 3 or 4 weapons to test if it can take this amount. (Result: all original Inf ammo like M67 or FAMAS clip is limited to 99, all other gave 1000 like flash-bang or M16A4 clip, so if you want over 99 clips for your PSG1, take G3A3 clips instead. No workaround for some weapons like RC50, DE.357, Five-seveN etc. .)
 

Snakeye

Mk82HD
Jan 28, 2000
1,966
0
36
46
Klagenfurt, Carinthia, Austria
Visit site
Correct, I've made test loadouts with 1000 mags for 3 or 4 weapons to test if it can take this amount. (Result: all original Inf ammo like M67 or FAMAS mag is limited to 99, all other gave 1000 like flash-bang or M16A4 mag, so if you want over 99 mags for your PSG1, take G3A3 mags instead. No workaround for some weapons like RC50, DE.357, Five-seveN etc. .)
Corrected ;)

Call me a me stupid nitpicky gun-nut, but I remember times where using inapropriate terms for weapon parts was punished on these forums by page long flame posts - and yes, I do find it somewhat strange the Inf-code actually uses the term clip everywhere. It somehow settles into ones mind when one hangs around here too long - I still shrug everytime I see the term "silencer" used instead of "supressor"..

And just for clarification: a clip is used to load a mag, a mag is used to load a weapon - internal (i.e. non removeable) mags are still mags..
 

Snakeye

Mk82HD
Jan 28, 2000
1,966
0
36
46
Klagenfurt, Carinthia, Austria
Visit site
Okay, I forgot I copied my Inf to my weekend PC (no, it's not able to play Inf properly, but it does have my Dev environment) and here we go, straight from INFc_SMaleBase, inside the PreBeginPlay function:
PlayerLoadout = class'INFc_LoadoutConfig'.default.ItemString[class'INFc_LoadoutConfig'.default.PlayerLoadout];
PlayerLoadout = Left(PlayerLoadout,255); // shorten due to replication problems!

According to UnrealWiki the Left function strips anything after the character number passed in argument 2.

Well, I guess that positively identifies a 255 character limit on loadout strings during gameplay - it doesn't explain what Kueltag experiences though.

Edit:
Just tried this loadout on my rig:

A wrong one:
Mk23-1,*Mk23-10,DE50-1,*DE50-10,DE50AE-1,*DE50AE-10,M92F-1,
*M92F-10,M93R-1,*M93R-10,1911-1,*1911-10,FSVEN-1,*FSVEN-10,UDAR-1,
*UDAR-10,M1S90-1,*M1S90-10,M3-1,*M3-10,MAG7-1,*MAG7-10,
AKMSU-1,*AKMSUD-10,
I have to say it works for me. All guns were there and the AKMSU had its drum. Do you have some absurdly long name for that loadout? As far as I would guess the name and the "//" between name and actual loadout does count to the loadout string.
 
Last edited:

Carpetsmoker

Nexus-6
Jan 20, 2008
227
0
16
38
Netherlands
arp242.net
Sorry, but it seems to me this can't be correct. I used to have COOP loadouts with definetly more than 100 items. To give one of my worst examples:
[...]
Total 146 items, all of them present, and don't get me started about that AKM and VOG25P loadout where I carried an additional 45 40mm nades..

Also the name "itemclasses" would actually indicate that only the classes count - though names are not always descriptive. In any case this should be actually easily testable by making a loadout with one weapon and 99 mags for it, then adding any other item. If the item doesn't show up it's most probably correct. Too bad I won't have any Inf until Sunday :(

Right, it was late :/
 

Kueltag

New Member
Jan 31, 2008
53
0
0
Do you have some absurdly long name for that loadout? As far as I would guess the name and the "//" between name and actual loadout does count to the loadout string.[/I]

No, I usually have reasonable names, like TEST or something. But you are right, the name might count as well. I will make some further tests.
 

Kueltag

New Member
Jan 31, 2008
53
0
0
Okay, the tests are done, here is the result.

What counts is the string name in INF_Loadouts.ini (and Loadoutmanager.ini). If a string's name is
ItemString[8]=xyz//+M67-3,etc-etc-etc,M16A4-1,
then the number of characters from "x" to "1" (including these two) cannot be more than 256. It can, but it will ignore what's after the 256th character.

An example:

ItemString[0]=123456789//M16-1,#M16203-1,*M16-21,*M203-41,*M203M433-40,
M4A1-1,#M4A1sup-1,#M4A1RX-1,#M4A1FL-1,*M4A1-41,HK416-1,#HK416sup-1,
#HK416ADOG-1,*HK416-41,Mk23-1,#Mk23SUP-1,#Mk23LAM-1,*Mk23-11,+M67-20,
AVL3A-1,KHELM-1,BALACBL-1,IMODNV-1,IMODBNCS-1,MINIUZI-1,M16A4-1,
ItemString[1]=1234567890//M16-1,#M16203-1,*M16-21,*M203-41,*M203M433-40,
M4A1-1,#M4A1sup-1,#M4A1RX-1,#M4A1FL-1,*M4A1-41,HK416-1,#HK416sup-1,
#HK416ADOG-1,*HK416-41,Mk23-1,#Mk23SUP-1,#Mk23LAM-1,*Mk23-11,+M67-20,
AVL3A-1,KHELM-1,BALACBL-1,IMODNV-1,IMODBNCS-1,MINIUZI-1,M16A4-1,
ItemString[2]=1234567890//M16-1,#M16203-1,*M16-21,*M203-41,*M203M433-40,
M4A1-1,#M4A1sup-1,#M4A1RX-1,#M4A1FL-1,*M4A1-41,HK416-1,#HK416sup-1,
#HK416ADOG-1,*HK416-41,Mk23-1,#Mk23SUP-1,#Mk23LAM-1,*Mk23-11,+M67-20,
AVL3A-1,KHELM-1,BALACBL-1,IMODNV-1,IMODBNCS-1,MINIUZI-1,M16A4-1

(The equipment is exactly the same, but the 2nd ones name is longer by 1 character, and the whole 3rd one is the same as the 2nd, but the very last comma is missing.)

Loadout 0 is okay, because from the first character of the name to the last character of the list is exactly 256. Loadout 1 will miss the M16A4, as the number describing its quantity (1) is the 257th character. Loadout 2 will also be without the M16A4, because removing the comma from the very end of it does not solve the problem of loadout 1.

Edit: If the last item in the list is say 25 pcs of PSG mags (no, not clips ;) ) in a way that "25" is the 256th and 257th character, then it won't have 25 pcs of it, not even 2, it will be missing.

That's it. Post if you have any comments.
 
Last edited: