For direct access use https://forums.oldunreal.com
It's been quite a while since oldunreal had an overhaul, but we are moving to another server which require some updates and changes. The biggest change is the migration of our old reliable YaBB forum to phpBB. This system expects you to login with your username and old password known from YaBB.
If you experience any problems there is also the usual "password forgotten" function. Don't forget to clear your browser cache!
If you have any further concerns feel free to contact me: Smirftsch@oldunreal.com

227j Mod Questions

Report bugs, read about fixes, new features and ask questions about the Unreal 227 patch here. Place comments and commit suggestions.
Post Reply
User avatar
Matrix224
OldUnreal Member
Posts: 740
Joined: Wed Feb 20, 2008 7:41 pm

227j Mod Questions

Post by Matrix224 »

Hey,

I had been back on a bit of an Unreal binge with some friends recently, and we had decided to update to 227j this time around. It's been pretty smooth so far and we're enjoying it a lot, but there's a few random things we'd been seeing in the server with various mods. Most of it is client-side script errors (which I see get printed right to our consoles now and is fantastic), which I can address just fine. But some others are a bit questionable and I'm unsure of why they're doing what they're doing.

  • For Pawns, if a menuname is not explicitly set, it always used to put the class name itself in its place, and based on the code, it looks like it still does this in PreBeginPlay() of Pawn. For any subclasses I have though, it seems like it's not working as I would've expected. e.g. a class that extends Krall and is named MyKrall and has no menuname explicitly defined just shows up with a menuname of Krall, not MyKrall. Krall itself doesn't have a menuname defined, so it's not just pulling from there as far as I'm aware. Am I just forgetting how UScript works and since PreBeginPlay() is not redefined in the child, it's executing it "in the parent" so to speak, and is using the parent's class name? I know for a fact this used to work as I expected though (and for the record this isn't hard to go and fix by just setting the menuname, it's more of just a curiosity of why it's doing this).
  • Some sounds are looping now when using PlaySound. I know that the sounds are imported with a flag that tells them to loop and they always have had it, but they didn't used to loop when just using PlaySound. I assume this is an intended fix, but if that's the case, is there any way to change the code to play it only once instead of having to modify and re-import all of the affected sounds?
  • MonsterSpawn seems to throw a few warnings in the console every so often:

    Code: Select all

    Warning: Could not spawn ActorChannel object Class MonsterSpawnX.xxMSEffects!
    
    . From the code it looks like it spawns that xxMSEffects class on every current player's Location on a timer. Would this be because it's spawning e.g. in the ground or something and can't be loaded when the ActorChannel becomes relevant?
  • Did something change with death message parsing somewhere? I'm still using an older, modified version of xCoop, so that on its own is probably half my problem. But the custom messages it has all seem to be missing a space after the victim name, and the killer seems to have an extra space before it (e.g. "Matrixwas killed by a Manta"). It didn't used to be like that

Also this isn't 227j specific, just a general question because it's been a long time and I've forgotten:
When you call Spawn, if you don't supply a SpawnOwner or SpawnInstigator field, are they defaulted to the calling actor or are they just None?
User avatar
.:..:
OldUnreal Member
Posts: 1635
Joined: Tue Aug 16, 2005 4:35 am

Re: 227j Mod Questions

Post by .:..: »

Well to go through some of those points...
Matrix224 wrote: Wed Mar 20, 2024 12:28 pmFor Pawns, if a menuname is not explicitly set, it always used to put the class name itself in its place, and based on the code, it looks like it still does this in PreBeginPlay() of Pawn. For any subclasses I have though, it seems like it's not working as I would've expected. e.g. a class that extends Krall and is named MyKrall and has no menuname explicitly defined just shows up with a menuname of Krall, not MyKrall. Krall itself doesn't have a menuname defined, so it's not just pulling from there as far as I'm aware. Am I just forgetting how UScript works and since PreBeginPlay() is not redefined in the child, it's executing it "in the parent" so to speak, and is using the parent's class name? I know for a fact this used to work as I expected though (and for the record this isn't hard to go and fix by just setting the menuname, it's more of just a curiosity of why it's doing this).
Strange oddities like that typically happen if you create a class in UnrealEd and don't compile code, which leaves the new class in an odd state of hybrid old and new class.
Some sounds are looping now when using PlaySound. I know that the sounds are imported with a flag that tells them to loop and they always have had it, but they didn't used to loop when just using PlaySound. I assume this is an intended fix, but if that's the case, is there any way to change the code to play it only once instead of having to modify and re-import all of the affected sounds?
Unfortunately there isn't enough interface or parameters for sound effects to futher separate that. I wanted to implement something like SoundChannels (like in UE3) for that, but it'll have to wait until next 227 version.
MonsterSpawn seems to throw a few warnings in the console every so often:

Code: Select all

Warning: Could not spawn ActorChannel object Class MonsterSpawnX.xxMSEffects!
From the code it looks like it spawns that xxMSEffects class on every current player's Location on a timer. Would this be because it's spawning e.g. in the ground or something and can't be loaded when the ActorChannel becomes relevant?
Warning like that happens if actor destroys itself during Post/PreBeginPlay events on clientside.
Did something change with death message parsing somewhere? I'm still using an older, modified version of xCoop, so that on its own is probably half my problem. But the custom messages it has all seem to be missing a space after the victim name, and the killer seems to have an extra space before it (e.g. "Matrixwas killed by a Manta"). It didn't used to be like that
Probably missing a space bar in int file, you can manually correct that (UnrealShare.int, DeathVerb=" was ").
When you call Spawn, if you don't supply a SpawnOwner or SpawnInstigator field, are they defaulted to the calling actor or are they just None?
SpawnOwner defaults to None, SpawnInstigator defaults to spawner actors Instigator value.
User avatar
Matrix224
OldUnreal Member
Posts: 740
Joined: Wed Feb 20, 2008 7:41 pm

Re: 227j Mod Questions

Post by Matrix224 »

Hey, thanks for getting back to me on this!
Strange oddities like that typically happen if you create a class in UnrealEd and don't compile code, which leaves the new class in an odd state of hybrid old and new class.
So I did recompile a few mods in UED where I saw this happening (recompiled individual classes and also hit Recompile All to be safe) and saved them, and still saw the issues.
To try and simplify this down, I made a small mod in 227j outside of UED and compiled it with UCC.
This is the code for it:

Code: Select all

class TestPawn extends Krall;

function PreBeginPlay() {
	super.PreBeginPlay();
	Log("PRE: MENUNAME="$MenuName$", CLASS="$string(Class.Name));
}

function BeginPlay() {
	super.BeginPlay();
	Log("BEG: MENUNAME="$MenuName$", CLASS="$string(Class.Name));
}

function PostBeginPlay() {
	super.PostBeginPlay();
	Log("POST: MENUNAME="$MenuName$", CLASS="$string(Class.Name));
}
There are no default properties set, so MenuName should be empty by default (it's empty in Krall, ScriptedPawn, and Pawn) and as per PreBeginPlay() in Pawn, I would assume it sets it to Class.Name. This is what I see in the log though:

Code: Select all

ScriptLog: PRE: MENUNAME=Krall, CLASS=testpawn
ScriptLog: BEG: MENUNAME=Krall, CLASS=testpawn
ScriptLog: POST: MENUNAME=Krall, CLASS=testpawn
If I take that same code and compile it in 227i though and then summon it, I see this:

Code: Select all

ScriptLog: PRE: MENUNAME=testpawn, CLASS=testpawn
ScriptLog: BEG: MENUNAME=testpawn, CLASS=testpawn
ScriptLog: POST: MENUNAME=testpawn, CLASS=testpawn
Again this is something easy for me to fix by setting the MenuName, but I'm more just curious as to why it's behaving this way.

Unfortunately there isn't enough interface or parameters for sound effects to futher separate that. I wanted to implement something like SoundChannels (like in UE3) for that, but it'll have to wait until next 227 version.
Got it, I'll just change the sounds or take some time to reimport everything properly then when I track it all down.
Warning like that happens if actor destroys itself during Post/PreBeginPlay events on clientside.
Alright, I'll go look around and play with that code a bit more later then
Probably missing a space bar in int file, you can manually correct that (UnrealShare.int, DeathVerb=" was ").
For xCoop it's mostly defined in the .ini for it. The verbs in UnrealShare.int have the expected spaces though, and I don't believe xCoop redefines the verbs. It definitely used to display it fine in 227i, but it's not a big issue; I can easily just regex a space into all of the xCoop mesasges.
SpawnOwner defaults to None, SpawnInstigator defaults to spawner actors Instigator value.
Got it, thank you!
Post Reply

Return to “Unreal 227”