DEV Release: INF DecalStay

  • 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.

Khutan

Always in a vicious circle....
Jul 25, 2001
417
0
0
42
Merseyside, UK
www.planetunreal.com
IMPORTANT
This is a Development version (DEV), this means that it is work in progress, it may or may not be reliable/fully featured/worth the 3 seconds it takes to download it. I plan to update this even for minor changes, so if you really can't wait for a proper release (on the main site), then you can try out this version - but don't expect it to be bug-free or anywhere near complete, it wouldn't be a Dev-version if it was :p. This version will literally be the latest build that I have (i.e. very little testing), and there will be little/no documentation (you can always ask though). You have been warned :p

This is: INF DecalStay v3.94-DEV

Last Update: 18th Jan 2002

NOTES:
The default setup is for everything permanent for a match (but with "drop if low Frame rate"), save 200 decals/shells and 10 mags for cross-match. There is no Menu ATM, and setup via .ini is definately not user-friendly, so if you really want to alter something, tell me what, and I'll tell you what to change :) The Cross-Match data and most of the settings are stored in Entry.ini, the basic enable/disable, CrossMatch amount setup is in K_INF_DecalStay.ini ;) This thread has a pretty up to date feature list (actually that was v3.93, lol - I got distracted again :))

To Do (in order):
1. Fix the slow saving to disk (you won't notice until your save-file is huge :p)
2. Need to change the chunk size for maps etc back to something that's reasonable :p (I set it small ages ago, for testing purposes, now my file is ~3MB, and I need it for disk-saving speed testing ;) )
3. Customisable max num limit for each decal/shell/mag
4. Menu code (configuration for all the detected decals etc)


History:
v3.94 * Fixed a bug with the ResetEveryRound code, where it didn't remove shells/mags
v3.94 * Altered ini setup, moved some options from Infiltration.ini to K_INF_DecalStay.ini
v3.01-DEV -> v3.93-DEV * A LOT of stuff, including Cross-Match decal/shell/mag saving, shell casings/mags stay, works with any decal (try RealImpact) alternate decal detection modes, always show bullet holes, dropIfLowFPS settings for shells/mags.....yada yada :)
v3.0 * Last proper release
 
Last edited:

shadowkil

New Member
Oct 19, 2000
423
0
0
45
Camp Lejeune, NC, USA
dev releases

Just curious, what are you looking for when posting these dev releases? Are you interested in having people beta test and give feedback, perhaps help with the debugging/coding, or just being a nice guy and giving us an early peek at the new features? =)
 

Khutan

Always in a vicious circle....
Jul 25, 2001
417
0
0
42
Merseyside, UK
www.planetunreal.com
hehe, well, feedback and bug testing would be nice :) (and I should add a list of "Known Bugs") But the main reason I put these up, is that everything is taking so long - people are waiting for me to do things...but I'm a bit of a perfectionist and won't do a proper release unless it's something major/has lots of new stuff etc. This way, if someone is waiting for something specific (such as the tie-code in RTS), or they don't mind a few small bugs and they'd rather just try it now (AnyMapDOM), then they can try the Dev version :) Or there is the situation DecalStay is in, even though it's probably the most technically accomplished INF-related code I have written (and the largest piece of code by far), I am fully expecting the entire X-Match side of it to be permanently broken by 2.87's anti-cheat code....which is a shame, because I think it adds a lot to the atmosphere :( That's also the reason other mutators have been getting priority over it....
 

shadowkil

New Member
Oct 19, 2000
423
0
0
45
Camp Lejeune, NC, USA
how to reset?

how do i set when decals are cleaned up? i.e. if i want it end of round, or to last throughout a single match, or back to permanent (the default?) will it clean up based on frame rate by default?

edit: I definitely like the fact that a decal is placed for each shot (i.e. robar at 500m [or is it yards?] on the shooting range), but after several rounds, performance drops quite a bit. FYI I'm running on a dual Athlon MP 1.2 system with 512 megs of pc2100 registered ddr with a geforce 3, win2k sp2. Sometime when I'm less lazy I'll grab the nvidia dri patch for xfree 4 and see how it runs in linux =) Anyhow, I do like the effect it gives - makes the level look a little less "clean" and more like a combat zone.
 
Last edited:

Khutan

Always in a vicious circle....
Jul 25, 2001
417
0
0
42
Merseyside, UK
www.planetunreal.com
Ah, crap :) I have the config set to be loaded from Iniltration.ini, but there are no defaults there :rolleyes: Gimme half an hour or so, and I'll fix it (I'll move all the static configs back to a K_INF_DecalStay.ini).

Btw, it won't remove stuff if your frame rate drops by default, you can set it to though :) At the moment, there is a general option for shells, one for mags, and an individual one for each type of decal...but the shells and mags settings have no defaults either :rolleyes: lol. You can change the decals settings right now though (yay, something I didn't forget about).

Open up Entry.ini, and search for the word "settings", until you get the section "[K_INF_DecalStay_DecalSettings0]", which contains the settings for the first 20 decals that have been used. In this section, if it has the same index, then it refers to the same decal ;) So, for example:

Code:
LT[0]=0
DS[0]=0.190000
F[0]=112
D[0]=
CN[0]=Botpack.Pock
These are the settings for the "Pock" decal. The names are so cryptic because it saves space ;) Anyway:

CN[] = ClassName, for example Botpack.Pock or INFRealImpact.INFPock etc, this is how you know which decal this index is for..
D[] = Description, it's not used yet, it's intended to be used with the menu code.
LT[] = LifeTime, the lifetime, in seconds, that this decal will last for.
DS[] = DrawScale, the size the decal will be drawn at, you aren't really meant to be changing this (it's for internal use) but you can if you want to. You can make things look very gory with this :D
F[] = Flags, this is the complicated one, it's one number that represents a few settings, here they are:
FLAG_SaveXMatch=16; //Whether or not this decal will be carried though to the next match
FLAG_EnableReplace=32; //Set to false to *completely* ignore this type of decal, ie do not make it stay, or anything
FLAG_AlignVertical=64; //used for bullet holes etc, to align them vertically (!)
FLAG_DropIfLowFPS=128; //this is the one you want
MASK_MultiDecalLevel=15; //Lower 4 bits = MultiDecalLevel
So, what you do is, add together the numbers of the things you want (don't alter the MultiDecalLevel bit though), and then set F[x]=That Number. So, for example, 112 (the default setting for Pock) is AlignVertical, EnableReplace, and SaveXMatch. If you wanted these to be removed if your frame rate drops, then set it to 240 (112 + 128). Basically, just add the value if you want it to be true, and remove it if you want it to be false (this will preserve the other settings).

Now you know why I said .ini setup isn't user-friendly :)
 

shadowkil

New Member
Oct 19, 2000
423
0
0
45
Camp Lejeune, NC, USA
config documentation

Thanks a bunch, Khutan. It actually makes quite a bit of sense to me (I've done a little coding in perl and C). Of course, I am lazy (aren't all perl hackers?), so of course I look forward to v4.0 with GUI setup ;)

edit: what about mags and casings? didn't see the flags array there (e.g. "F[0]=112")

On a mostly unrelated note - I've a desire to really get into the coding (I'm a sysadmin, getting somewhat bored with that and the head of engineering at my company says I can switch to his department if I show enough proficiency). Would you suggest playing with uscript, or would that probably be more of a waste of time right now (i.e. would I be better off sticking with C/C++ for this purpose). I've heard uscript is quite a bit like C++, and so it might be useful as a learning tool simply because it may be more likely to keep my interest and give me goals that are a bit more fun ;) Of course I could just get off my lazy duff, hit the books, and then go hit sourceforge and look for something neat hehe.

shad
 
Last edited:

Khutan

Always in a vicious circle....
Jul 25, 2001
417
0
0
42
Merseyside, UK
www.planetunreal.com
I'm doing it right now, I'm setting it so that all decals/mags/shells default to infinite life, DropIfLowFPS, and saveXMatch, so when I post it, you won't have to set them all ;)

Mags and casings have a class-level setup for bDropIfLowFPS and lifetime (ie not for individual types of shell etc, it seemed a bit over the top, even for me :p) They are (when I post it) in K_INF_DecalStay.ini, as:
[K_INF_DecalStay.K_INF_DecalStay_INFShellCase]
Lifetime=0
bDropIfLowFPS=True

[K_INF_DecalStay.K_INF_DecalStay_EmptyClip]
Lifetime=0
bDropIfLowFPS=True
There is also a section (the one I forgot to setup defaults for):
[K_INF_DecalStay.K_INF_DecalStay_EntrySpawner]
bResetEveryRound=False
bEnableShellStay=True //includes mags
bCrossMatchDecals=True
bCrossMatchShells=True //includes mags
bAlternateDetection=True //when true, it checks every tick, and gets things spawned by mutators (such as RealImpact), when false it uses a notify, but this doesn't pickup the decals used in mutators such as RealImpact (nothing I can do about it).
Just in case you are wondering why the setup is like this, it's because I use one type of decal, and assign the features to it, this means that it works for *any* decal, similarly for shells and mags (but only for INF shells/mags).
I just spotted another bug too, my EveryRound resetting code doesn't remove shells :) BaH!

Anyway, yeah, UScript is quite similar to C++, and I think it's quite a good language to learn as it does keep you interested, and you can achieve fun results quickly. You'd probably need to do some serious stuff in C++ to get yourself transfered though ;) So, maybe spend a few weeks doing UScript, and then switch over to C++, then, if that starts to get on your nerves, you can go back to UScript for a bit to keep your spirits up :) (UScript skills should still be useful for quite a while too, with UT2 etc coming out soon).

btw, you edit your posts as much as I do, lol :)

EDIT: All programmers are lazy! :p
EDIT2: If you're wondering why it takes me so long to reply, read my avatar text - that's what I mean ;)
 
Last edited:

shadowkil

New Member
Oct 19, 2000
423
0
0
45
Camp Lejeune, NC, USA
possible crashing with network play?

i was hosting a lan game last night with my roommate, and he was unable to join until i disabled the mutator - i'll look at this a bit more in depth today, but i think ut was actually crashing when he tried to join.

performance - it still seems to get a wee bit kludgy at times, but it's much better than before.

all in all, i'm having great fun with it, can't wait for 4.0 =)
 

Khutan

Always in a vicious circle....
Jul 25, 2001
417
0
0
42
Merseyside, UK
www.planetunreal.com
Ah, yes, it might have problems if it is run on a server (it's completely untested :p), I *think* it might have something to do with using the Entry level for storing stuff (the map that's always loaded in the background), as I heard that you can't access Entry on a client from the server, and it may be trying to do that or something, I dunno though, that may not even be true (I've never tried it). I'll have to add it to my huge list of things to do/look at, thanks for telling me ;)
 

Saving Private Raptor

What The ^%&;*$!!!
Dec 5, 2000
168
0
0
42
Wollongong, NSW, Australia
To my astonishment when I started up Inf, the shell casings from my previous bot match was still there!! Your mod works a little to well me thinks ;)

Anyhow when I edit K_INF_DecalStay.ini and did what you told me to do, the shell casings, decals and mags were still there!

Anything else I could try?
 

Khutan

Always in a vicious circle....
Jul 25, 2001
417
0
0
42
Merseyside, UK
www.planetunreal.com
To my astonishment when I started up Inf, the shell casings from my previous bot match was still there!! Your mod works a little to well me thinks
hehe, when I say permanent, I mean it :D I haven't played on an un-battle-scarred map for about 3 months, I love it :)

Anyhow when I edit K_INF_DecalStay.ini and did what you told me to do, the shell casings, decals and mags were still there!

Anything else I could try?
You just need to play a round, things are removed when a round >ends< (incidentally, they won't reset for flag captures etc, I haven't put that in yet). If you are having problems with your frame rate, then I suggest you just turn up the "Min desired Framerate" setting in the VID menu ;) If the ResetEveryRound option still doesn't work properly, (ie clear at the >end< of a round), then did you make any other changes? maybe you should send me your Entry.ini and K_INF_DecalStay.ini. It should be working :p
 

Saving Private Raptor

What The ^%&;*$!!!
Dec 5, 2000
168
0
0
42
Wollongong, NSW, Australia
Well I was finally able to get the stuff to disappear, I think that I might have spelt "True" wrong :rolleyes:

Anyway when it did work, after 1 to 2 min Infiltration just froze!
At first I thought it might have been my computer overheating, so I switched of the computer for 2 hours, watched some tv then started my system again, and straight to Infiltration, again same deal 1 to 2min Inf froze.

So I enabled for all the decals and casings to stay (default) and everything is ok!

There might be a bug when you enable "reset every round".
 

Khutan

Always in a vicious circle....
Jul 25, 2001
417
0
0
42
Merseyside, UK
www.planetunreal.com
Holy crap!! :hmm: Hmmm, on first instinct, I think it might be the "alternate detection" code I put in, so, try changing to (in K_INF_DecalStay.ini):
[K_INF_DecalStay.K_INF_DecalStay_EntrySpawner]
bAlternateDetection=False
that's f-a-l-s-e :lol: j/k

Then again, thinking a little more, and looking at the grenade-spoon (that's what it's called) code again, I realise that there's server->client stuff in there (for some reason it's handled differently to pins/clips/shells) so it may be that the server is re-creating it when it is replaced (and destroyed - gah!)....I think I've thought of a workaround for it, if it is that :) btw, I may have also thought of a way of getting V4 to work in 2.87, keep your fingers crossed :)
 

Saving Private Raptor

What The ^%&;*$!!!
Dec 5, 2000
168
0
0
42
Wollongong, NSW, Australia
Originally posted by Khutan
Holy crap!! :hmm: Hmmm, on first instinct, I think it might be the "alternate detection" code I put in, so, try changing to (in K_INF_DecalStay.ini):

Did that and it fixed that problem, but now I dont get any grenade blast marks!! :(


that's f-a-l-s-e :lol: j/k

hmmmmm :rolleyes: , your never gona forget that are you :D

This is the only thing I have changed in the K_INF_DecalStay file:

[K_INF_DecalStay.K_INF_DecalStay_EntrySpawner]
bResetEveryRound=False
bEnableShellStay=True
bCrossMatchDecals=False
bCrossMatchShells=False
bAlternateDetection=True


I really like how everything stays until the match is won!! Great mod Khutan! Really hope you can get this to work with 2.87!