ReplaceFunction
"? It would better if 469e would include it.ReplaceFunction
is a game changer for MH fixes.ReplaceFunction
"? It would better if 469e would include it.ReplaceFunction
is a game changer for MH fixes.Would you consider contributing such fixes to MH itself via Pull Requests, thereby negating the need for monkey patching, and improving it for everyone?
Ohh, you just reminded me of one old experimente of mine: https://github.com/CacoFFF/MonsterHunt-RebuildShrimp wrote: ↑Sun Jan 21, 2024 3:46 amWould you consider contributing such fixes to MH itself via Pull Requests, thereby negating the need for monkey patching, and improving it for everyone?
https://github.com/shrimpza/monsterhunt
It did have a bunch of other QoL improvements as well: hud, AI, etc. Event logger was definitely nice.Higor wrote: ↑Sun Jan 21, 2024 4:17 am Ohh, you just reminded me of one old experimente of mine: https://github.com/CacoFFF/MonsterHunt-Rebuild
A rebuild from scratch with network compatibility, maybe some things from this can be applied on the real MH
Yes, I do... As I told already about a map-scaling - flawless addition... Full Respect for that feature... I would like to see more options but...
Found the bug with this, it starts happening when you get more than 1500 collidables in a level.Mar wrote: ↑Wed Aug 30, 2023 5:55 pm Currently I have the following error when CollisionGrid is activated on XC_Engine on some maps.You can test this with map MH-(_@_)_MJD_lite_v1Code: Select all
NSC: [ EVENT ] you has started the game. NSC: [ EVENT ] The game has started. Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Repeats until server crash or someone changes map. When sever travel occurs sometimes it crash also.
Just start the map and wait some seconds.
Server gets 100% of CPU when this happens. Map become laggy with ping up to 600ms+
My setup is 469c with XC_Engine 25c on Ubuntu 22.04 (Docker Container), also tested on a local Windows server and also happens.
Any idea?
If you want help testing, let us know. We can test on our MH server.Higor wrote: ↑Fri Feb 02, 2024 9:12 pmFound the bug with this, it starts happening when you get more than 1500 collidables in a level.Mar wrote: ↑Wed Aug 30, 2023 5:55 pm Currently I have the following error when CollisionGrid is activated on XC_Engine on some maps.You can test this with map MH-(_@_)_MJD_lite_v1Code: Select all
NSC: [ EVENT ] you has started the game. NSC: [ EVENT ] The game has started. Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] Allocating extra element holder for ActorInfo Log: [CG] Allocated element holder for ActorInfo with 1500 entries Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Log: [CG] ActorInfo::IsValid -> Using invalid object Repeats until server crash or someone changes map. When sever travel occurs sometimes it crash also.
Just start the map and wait some seconds.
Server gets 100% of CPU when this happens. Map become laggy with ping up to 600ms+
My setup is 469c with XC_Engine 25c on Ubuntu 22.04 (Docker Container), also tested on a local Windows server and also happens.
Any idea?
Took a couple hours of logging everything and going thru 30mb logs
Code: Select all
LostData: ________________________________________________________________
LostData: ReachSpecs missing from PrunedPaths[0-15] = 4356.
FixedWithSuccess: ReachSpecs successfully attached = 4356.
FixFailures: ReachSpecs attaching failures - probably no place = 0.
LostData: ________________________________________________________________
SpecTest: Testing and fixing specs took:
0.616735 seconds.
Code: Select all
// Check scripts.
if( GEditor && !GEditor->CheckScripts( GWarn, UObject::StaticClass(), *Results ) )
{
Results->Logf( TEXT("\r\nError: Scripts need to be rebuilt!\r\n") );
return 1;
}
Code: Select all
class DynInventorySpot expands InventorySpot;
/*
Dynamic InventorySpot is a class that needs a manual placement in map.
It has internal items Configurable which are added in run-time randomly.
Items spawns with MyMarker integrated as being this Navigation Actor.
Strategy it's aiming dynamic items in maps not plain hard-coded weaponry.
In case that item is a weapon, several specific ammo is also added nearby.
At mapping paths this is taken in account. If you are rebuilding, removing paths
this will get lost because it's an InventorySpot after all.
*/
var() class<Inventory> MyInventory[9];
var int NumItems;
var() float KeepTime;
event PreBeginPlay()
{
InitialState = 'DeployRandom';
AcquireConfiguration();
CreateMarkedItem();
}
function AcquireConfiguration()
{
local Inventory Inv;
local int I;
for (i = 0; i < 9; i++)
{
if ( MyInventory[i] != None )
NumItems++;
}
log(Self.Name@"has found"@NumItems@"defined.",'DynInventorySpot');
if ( NumItems == 0 )
{
log (Self.Name@"will cause appearance of random stock items from BotPack.",'DynInventorySpot');
MyInventory[0] = class 'Enforcer';
MyInventory[1] = class 'ut_biorifle';
MyInventory[2] = class 'ShockRifle';
MyInventory[3] = class 'PulseGun';
MyInventory[4] = class 'ripper';
MyInventory[5] = class 'Minigun2';
MyInventory[6] = class 'UT_FlakCannon';
MyInventory[7] = class 'UT_Eightball';
MyInventory[8] = class 'SniperRifle';
}
}
function CreateMarkedItem()
{
local int NumInv, RandItem;
local Inventory Ispw;
local class<Ammo> A;
local Ammo Am;
if ( NumItems > 0 )
NumInv = NumItems;
else
NumInv = 9;
RandItem = Rand(NumInv);
Ispw = Spawn( MyInventory[RandItem],,'DynItem',Location+vect(0,0,-10));
if ( Ispw != None )
{
Ispw.MyMarker = Self;
MarkedItem = Ispw;
if (Ispw.Physics == PHYS_Falling)
{
Ispw.SetPhysics(PHYS_None);
Ispw.Enable('Touch');
}
if (Ispw.IsA('Weapon') && Weapon(Ispw).AmmoName != None )
{
A = class<Ammo>(dynamicloadobject(string(Weapon(Ispw).AmmoName),class'class'));
// log (Self.Name@"will use"@Ispw.Name@" as MarkedItem.",'DynInventorySpot');
if ( FRand() > 0.5 )
{
Am = Spawn(A,,'DynItem',Location+vect(50,0,-10));
if( Am != None )
{
if ( Am.Physics == PHYS_Falling )
{
Am.SetPhysics(PHYS_None);
Am.Enable('Touch');
}
Am = None;
}
Am = Spawn(A,,'DynItem',Location+vect(-50,0,-10));
if( Am != None )
{
if ( Am.Physics == PHYS_Falling )
{
Am.SetPhysics(PHYS_None);
Am.Enable('Touch');
}
Am = None;
}
}
else
{
Am = Spawn(Weapon(Ispw).AmmoName,,'DynItem',Location+vect(0,50,-10));
if( Am != None )
{
if ( Am.Physics == PHYS_Falling )
{
Am.SetPhysics(PHYS_None);
Am.Enable('Touch');
}
Am = None;
}
Am = Spawn(Weapon(Ispw).AmmoName,,'DynItem',Location+vect(0,-50,-10));
if( Am != None )
{
if ( Am.Physics == PHYS_Falling )
{
Am.SetPhysics(PHYS_None);
Am.Enable('Touch');
}
Am = None;
}
}
}
PlaySound(Sound'RespawnSound2',,2.5);
}
else
{
log (Self.Name@":: Bork :: couldn't add configured item - perhaps it was quickly removed/replaced or the spawn place is bugged.");
}
}
function DoRemovals()
{
local Inventory I;
foreach RadiusActors(class'Inventory',I,60,Location)
{
if ( I.Tag == 'DynItem' && I.Owner == None )
I.Destroy();
}
}
state() DeployRandom
{
Begin:
Sleep(1.0);
Loop:
Sleep(KeepTime+RandRange(0.5,1.5));
DoRemovals();
Sleep(0.3);
MarkedItem = None;
if ( Level.Game != None )
if ( (Level.Game).bGameEnded )
GoTo('End');
CreateMarkedItem();
GoTo('Loop');
End:
GoToState('');
Stop;
}
defaultproperties
{
bStatic=False
bNoDelete=True
bHiddenEd=False
Style=STY_Translucent
Texture=Texture'S_Inventory'
DrawScale=0.7
}