Page 1 of 2

XC_Engine script patcher stuff

Posted: Sat Jan 13, 2018 12:45 am
by Higor
We'll use this topic to discuss and propose script patcher stuff, with occasinal test builds.

======
I'll start, for XC_Engine 20:
XC_Engine_ScriptUpdate_20.7z
(40.69 KiB) Downloaded 108 times
Adds an aditional option to XC_Engine.ini: bPatchUdpServerQuery
This option loads an additional package XC_IpServerFix that contains a an improved player listing function, plus a SecureValidate fix for unpatched servers.
When the server has 1 or more players, the list will display all players, spectators and bots on the list.
SecureValidate fix will deny any query string that isn't 6 characters long.

Re: XC_Engine script patcher stuff

Posted: Sat Jan 13, 2018 12:48 am
by SC]-[WARTZ_{HoF}
Nice work Higor. I will check it out.

Re: XC_Engine script patcher stuff

Posted: Sat Jan 13, 2018 3:05 pm
by RocketJedi
tested it out. I dont see bots in the player list. IS there another option that needs to be enabled? Or do I have to run a special / enhanced UT browser? I haven't tested specs just yet.

Re: XC_Engine script patcher stuff

Posted: Sat Jan 13, 2018 4:39 pm
by sektor2111
13th do seems a bad day for you...
[attachment=0]GamePlay.png[/attachment]

Nice work, Higor, you are The Man...

Re: XC_Engine script patcher stuff

Posted: Sun Jan 14, 2018 6:51 pm
by RocketJedi
sektor2111 wrote:13th do seems a bad day for you...
[attachment=0]GamePlay.png[/attachment]

Nice work, Higor, you are The Man...

Hmm Might work for you, but doesn't work on any of our servers. Is there anything I may have missed?

Image

Image

Re: XC_Engine script patcher stuff

Posted: Sun Jan 14, 2018 8:25 pm
by sektor2111
Step 1: Both U files provided by Higor should go into System including XC_IpServerFix.u
Step 2: Add new Boolean value bPatchUdpServerQuery=True into XC_Engine.ini else it will be probably false if doesn't exist

For the case with files which I recompiled
Step 1: Upload XC_IpServerFix.u file and new XC files.
Step 2: Open and edit XC_Engine.ini file with value bPatchUdpServerQuery=True somewhere through the rest of values.

Mention:
I was using SecureValidate stuff for server.

Re: XC_Engine script patcher stuff

Posted: Sun Jan 14, 2018 10:48 pm
by SC]-[WARTZ_{HoF}
I think most game server admins before xcge have been using this patched IpServer.u http://www.unrealadmin.org/forums/showt ... hp?t=15616 and most likely are still using. I would also assume that most use XServerQuery instead of SecureValidate viewtopic.php?f=34&t=6061

Re: XC_Engine script patcher stuff

Posted: Mon Jan 15, 2018 12:51 am
by sektor2111
SC]-[WARTZ_{HoF} wrote:I think most game server admins before xcge have been using this patched IpServer.u...
A few minutes ago I've installed that thing (I had to switch machines because I dropped Athlon in water in bathroom...), I see that IpServer works fine as well, I mean reporting All Player possible. Function in cause seems to have the same purpose so it should be compatible. I did not check XServerQuery.

Another note:
Higor wrote:We'll use this topic to discuss and propose script patcher stuff, with occasinal test builds.
If I'm not disturbing, I might have something to ask to do if you can. I would like to see a few words logged in Editor during building process. So far if Editor has a problem with a brush will say

Code: Select all

Warning: FPoly::Fix: Collapsed a point
Warning: FPoly::Fix: Collapsed a point
Warning: FPoly::SplitWithPlane: Ignored back sliver
Actually is hard to figure where is that "sick" brush because it doesn't log any brush-name as it does with bad actors in run-time, or hint me with some "nice console command" for building map.
A sample log I think should be:

Code: Select all

Warning: Brush452: FPoly::Fix: Collapsed a point
Warning: Brush453: FPoly::Fix: Collapsed a point
Warning: Brush450: FPoly::SplitWithPlane: Ignored back sliver
100 times more useful for debugging.

Re: XC_Engine script patcher stuff

Posted: Mon Jan 15, 2018 1:12 am
by Higor
The query stuff doesn't affect custom queries, like XServerQuery and maybe SecureValidate.
You'll either have to edit these or simple revert to UdpServerQuery

===
In ALL cases, securevalidate exploit should be patched.

Re: XC_Engine script patcher stuff

Posted: Mon Jan 15, 2018 1:30 am
by RocketJedi
sektor2111 wrote:Step 1: Both U files provided by Higor should go into System including XC_IpServerFix.u
Step 2: Add new Boolean value bPatchUdpServerQuery=True into XC_Engine.ini else it will be probably false if doesn't exist

For the case with files which I recompiled
Step 1: Upload XC_IpServerFix.u file and new XC files.
Step 2: Open and edit XC_Engine.ini file with value bPatchUdpServerQuery=True somewhere through the rest of values.

Mention:
I was using SecureValidate stuff for server.
Yup, The server has these files and entries yet still is not working. Thank you for confirming.
SC]-[WARTZ_{HoF} wrote:I think most game server admins before xcge have been using this patched IpServer.u http://www.unrealadmin.org/forums/showt ... hp?t=15616 and most likely are still using. I would also assume that most use XServerQuery instead of SecureValidate viewtopic.php?f=34&t=6061
yes this is what we use

Re: XC_Engine script patcher stuff

Posted: Sat Feb 03, 2018 9:57 pm
by Higor
One of my Linux servers also fails to display players too, gonna have to download the IpServer.u package it uses and examine it.
=======

Meanwhile, server created a 20mb logfile with spam coming from minigun2.RateSelf, so I decided to raplace and improve.
Basically, larger creatures are more likely to get alt-fired and tiny creatures make the bots not want to use it.
If ammo is below 50 the rating is linearly saled down.

These RateSelf could do a big deal at improving bot behaviour now that I think about it.

//**********************************************
// Minigun AI improvement + log spam fix on bots
// Creature size now a factor in alt-firing and weapon recommendation

Code: Select all

function float Minigun2_RateSelf( out int bUseAltMode )
{
	local float dist;
	local float scale;
	local Pawn Enemy;

	scale = 1;
	if ( AmmoType != None && AmmoType.AmmoAmount < 50 )
		scale = (scale * float(AmmoType.AmmoAmount)) * 0.02; //Same as X/50
	if ( scale <= 0 )
		return -2;

	Enemy = Pawn(Owner).Enemy;
	if ( Enemy == None )
		bUseAltMode = 0;
	else
	{
		dist = VSize(Enemy.Location - Owner.Location) * 19 / FMax(Enemy.CollisionRadius,5); //Larger enemy, more ALT
		scale *= FMin(Enemy.CollisionRadius,5) * 0.2; //Smaller enemy, dont recommend minigun
		bUseAltMode = int(dist <= 1700);
		AIRating *= FMin(Pawn(Owner).DamageScaling, 1.5);
		if ( dist > 1200 )
			AIRating += FMin(0.0001 * dist, 0.3); 
	}
	return AIRating * scale;
}

Re: XC_Engine script patcher stuff

Posted: Sun Feb 04, 2018 3:31 am
by sektor2111
I did not see more such things last time, but for other weaponry. I reduced using altmode at once with AIRating when ammo is missing or ammo is low - we have some funky tick here anyway... Majority of these "RateSelf" doesn't have Ammo checker. I think pawn attempt to "rateself" but nothing says: hey, you are out of ammo, weapon won't work not even in AltMode is not only a low rating, it should never try to fire gun when ammo is none. Or simply pawn is attacking too early when weapon is not loaded yet "GiveAmmo bla bla" immediately after picking up the gun - like that PostRender junkie - ammocount is a null thing because doesn't exist yet - probably not in first tick and even more in Net games. At monster is probably the same problem until I added a small "Sleep" in state attacking letting stuff to initialize before to mock with pawn's combat code.
Definitely for preventing A.I. in making troubles, a lot of stuff has to be reconsidered...

Re: XC_Engine script patcher stuff

Posted: Mon Feb 19, 2018 9:36 pm
by esnesi
Qwerty wrote: Yup, The server has these files and entries yet still is not working. Thank you for confirming.
Same issue confirmed here unfortunatly.
XCEngine 20/21 - Core 7b/8
XServerquery201

Something clientsided i assume.

Re: XC_Engine script patcher stuff

Posted: Tue Feb 20, 2018 7:37 am
by sektor2111
iSenSe wrote:Something clientsided i assume.
Nope...
Read above posts. This is about server reporting Players and Bots loaded which can be seen by any player. If server has "nice stuff", then problems are not something unexpected.
I've did a check to server set for public visibility with me connected and worked fine - as shown in pictures - using even MBot types. I cannot complain.

Re: XC_Engine script patcher stuff

Posted: Sat Apr 28, 2018 11:30 am
by sektor2111
Due to these sudden rateself borks toward weaponry and A.I., once again I got a confirmation. When load code forces a load like for enforcer, weapon the mostly goes screwed and not giving ammo or getting late for this task. Pawn does a query which will fail. The better code is Skaarj Code - you can have even a default message on screen without calling other messages for a bad load idea.
However, because Skaarj Code might fail in some cases (like I could figure with BioAmmo - falling by default), I did another small research in how to load pawns - and I got this operational without any RateSelf failure. I modified RandWeapon mutator which I did for XCGE environments and now I think I can breath relaxed. Snippet bellow:

Code: Select all

				Am = class<Ammo>( DynamicLoadObject(AnAmmo[i], class'Class', True) );
				if ( Am != None )
				{
					A = Spawn(Am,Other,,Other.Location,Other.Rotation);
					if ( A != None )
					{
						A.GoToState('Pickup');
						A.Enable('Touch');
						A.RespawnTime = 0.00;
						A.AmmoAmount *= AmmoScale;
						A.Touch(Other);
						A = None;
					}
				}
I set Owner by default, I'm forcing the state for picking up this item, and before to call the "Touch" I made sure that is enabled (I guess it was not that enabled since item was ignored at random). Now it do works clean and healthy. Pawn loads ammo, then weapon and doesn't mess with switching, leaving pawn to finish RateSelf correctly. And they do seems to be more bad-ass warriors if RateSelf works properly, because sanity checkers won't help at a good rating in this tiny moment.

History:
Before testing above code I went into "AddInventory" function for load. You don't wanna see what crap was spread in console and how many ammo have failed to get collected... because that code do seems to have another purpose than bunch-loading.