Unreal Tournament 469
-
- Godlike
- Posts: 6476
- Joined: Sun May 09, 2010 6:15 pm
- Location: On the roof.
Re: Unreal Tournament 469
ScriptedPawn do seems to have new bool functions, interesting stuff but... I don't know how do they work with old assets, perhaps net drivers are having some fine tuning and also garbage collector... I cannot speak without a document or without testing these intensive. At least mods which I've done years ago don't seems to have problems...
Okay, I must check that UTDMT myself - the one which I fixed, not that wreck spamming logs with junks...
Okay, I must check that UTDMT myself - the one which I fixed, not that wreck spamming logs with junks...
-
- Adept
- Posts: 391
- Joined: Mon Nov 11, 2013 7:56 am
- Personal rank: Average
- Location: India
Re: Unreal Tournament 469
Confirmed Team Monsters are not supported with new patch, works with 436, 451 & 451b.
I'm analyzing what happened in new patch!
Code: Select all
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold2 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold2 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold2 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold2 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_MercenaryEliteGold MM-Harobed.MM_MercenaryEliteGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_MercenaryEliteGold MM-Harobed.MM_MercenaryEliteGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_MercenaryEliteGold MM-Harobed.MM_MercenaryEliteGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_MercenaryEliteGold MM-Harobed.MM_MercenaryEliteGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_MercenaryEliteGold MM-Harobed.MM_MercenaryEliteGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold3 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_MercenaryEliteGold MM-Harobed.MM_MercenaryEliteGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_MercenaryEliteGold MM-Harobed.MM_MercenaryEliteGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_MercenaryEliteGold MM-Harobed.MM_MercenaryEliteGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_MercenaryEliteGold MM-Harobed.MM_MercenaryEliteGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_MercenaryEliteGold MM-Harobed.MM_MercenaryEliteGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_MercenaryEliteGold MM-Harobed.MM_MercenaryEliteGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_MercenaryEliteGold MM-Harobed.MM_MercenaryEliteGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold3 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_MercenaryEliteGold MM-Harobed.MM_MercenaryEliteGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold3 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold3 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold3 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliRabbitGold MM-Harobed.MM_NaliRabbitGold3 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_SkaarjBerserkerGold MM-Harobed.MM_SkaarjBerserkerGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_KrallGold MM-Harobed.MM_KrallGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliWarriorGold MM-Harobed.MM_NaliWarriorGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_SkaarjBerserkerGold MM-Harobed.MM_SkaarjBerserkerGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_PupaeGold MM-Harobed.MM_PupaeGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_PupaeGold MM-Harobed.MM_PupaeGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_PupaeGold MM-Harobed.MM_PupaeGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_NaliWarriorGold MM-Harobed.MM_NaliWarriorGold1 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_SkaarjBerserkerGold MM-Harobed.MM_SkaarjBerserkerGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
ScriptWarning: MM_PupaeGold MM-Harobed.MM_PupaeGold0 (Function MMG3.MM_Monsters.SetEnemy:04F6) Accessed None 'NewEnemy'
-
- Godlike
- Posts: 6476
- Joined: Sun May 09, 2010 6:15 pm
- Location: On the roof.
Re: Unreal Tournament 469
CTF-FaceTitans
Tested using my custom CTF and UTDMT (adjusted version).
No issues have been encountered.
So my paranoid codes don't need any update... good news for me
.
A single time a red Titan did not respawn, perhaps place was taken by a Team Bot.
No worries yet, not everything is cool at game-travel known as server-travel to the same map...
Tested using my custom CTF and UTDMT (adjusted version).
No issues have been encountered.
So my paranoid codes don't need any update... good news for me

A single time a red Titan did not respawn, perhaps place was taken by a Team Bot.
No worries yet, not everything is cool at game-travel known as server-travel to the same map...
You do not have the required permissions to view the files attached to this post.
Last edited by sektor2111 on Tue Jun 30, 2020 8:16 pm, edited 1 time in total.
-
- Adept
- Posts: 391
- Joined: Mon Nov 11, 2013 7:56 am
- Personal rank: Average
- Location: India
Re: Unreal Tournament 469
where you fixed? i can't able find that error, i'm getting tons of accessed nones errors
Code: Select all
function bool SetEnemy( Pawn NewEnemy )
{
local bool result;
local eAttitude newAttitude, oldAttitude;
local bool noOldEnemy;
local float newStrength;
if ( !IsAlivePawn(NewEnemy) ||
NewEnemy == self ||
NewEnemy.IsA('Spectator') ||
NewEnemy.IsA('FlockPawn') ||
NewEnemy.GetStateName() == 'PlayerWaiting' ||
(!bCanWalk && !bCanFly && !NewEnemy.FootRegion.Zone.bWaterZone) )
return false;
if ( PlayerReplicationInfo != None && NewEnemy.PlayerReplicationInfo != None && Level.Game.bTeamGame )
{
if ( NewEnemy.PlayerReplicationInfo.Team == 255 ||
PlayerReplicationInfo.Team == NewEnemy.PlayerReplicationInfo.Team )
return false;
}
noOldEnemy = (Enemy == None);
result = false;
newAttitude = AttitudeTo(NewEnemy);
if ( !noOldEnemy )
{
if (Enemy == NewEnemy)
return true;
else if ( NewEnemy.bIsPlayer && (AlarmTag != '') )
{
OldEnemy = Enemy;
Enemy = NewEnemy;
result = true;
}
else if ( newAttitude == ATTITUDE_Friendly )
{
if ( bIgnoreFriends || NewEnemy.Enemy == NewEnemy )
return false;
if ( (NewEnemy.Enemy != None) && (NewEnemy.Enemy.Health > 0) && NewEnemy.Enemy != NewEnemy )
{
if ( NewEnemy.Enemy.bIsPlayer && (NewEnemy.AttitudeToPlayer < AttitudeToPlayer) )
AttitudeToPlayer = NewEnemy.AttitudeToPlayer;
if ( AttitudeTo(NewEnemy.Enemy) < AttitudeTo(Enemy) )
{
OldEnemy = Enemy;
Enemy = NewEnemy.Enemy;
result = true;
}
}
}
else
{
oldAttitude = AttitudeTo(Enemy);
if ( (newAttitude < oldAttitude) ||
( (newAttitude == oldAttitude)
&& ((VSize(NewEnemy.Location - Location) < VSize(Enemy.Location - Location))
|| !LineOfSightTo(Enemy)) ) )
{
if ( bIsPlayer && Enemy.IsA('PlayerPawn') && !NewEnemy.IsA('PlayerPawn') )
{
newStrength = relativeStrength(NewEnemy);
if ( (newStrength < 0.2) && (relativeStrength(Enemy) < FMin(0, newStrength))
&& (IsInState('Hunting')) && (Level.TimeSeconds - HuntStartTime < 5) )
result = false;
else
{
result = true;
OldEnemy = Enemy;
Enemy = NewEnemy;
}
}
else
{
result = true;
OldEnemy = Enemy;
Enemy = NewEnemy;
}
}
}
}
else if ( newAttitude < ATTITUDE_Ignore )
{
result = true;
Enemy = NewEnemy;
}
else if ( newAttitude == ATTITUDE_Friendly )
{
if ( NewEnemy.bIsPlayer && (AlarmTag != '') )
{
Enemy = NewEnemy;
result = true;
}
if (bIgnoreFriends)
return false;
if ( (NewEnemy.Enemy != None) && (NewEnemy.Enemy.Health > 0) )
{
result = true;
Enemy = NewEnemy.Enemy;
if (Enemy.bIsPlayer)
AttitudeToPlayer = ScriptedPawn(NewEnemy).AttitudeToPlayer;
else if ( (ScriptedPawn(NewEnemy) != None) && (ScriptedPawn(NewEnemy).Hated == Enemy) )
Hated = Enemy;
}
}
if ( result )
{
LastSeenPos = Enemy.Location;
LastSeeingPos = Location;
EnemyAcquired();
if ( !bFirstHatePlayer && Enemy.bIsPlayer && (FirstHatePlayerEvent != '') )
TriggerFirstHate();
}
else if ( NewEnemy.bIsPlayer && (NewAttitude < ATTITUDE_Threaten) )
OldEnemy = NewEnemy;
return result;
}
function eAttitude AttitudeTo(Pawn Other)
{
if ( PlayerReplicationInfo != None && Other.PlayerReplicationInfo != None && Level.Game.bTeamGame )
{
if ( Other.PlayerReplicationInfo.Team == 255 ||
PlayerReplicationInfo.Team == Other.PlayerReplicationInfo.Team )
return ATTITUDE_Friendly;
}
return Super.AttitudeTo(Other);
}
-
- Godlike
- Posts: 3761
- Joined: Sat Sep 12, 2015 8:46 pm
Re: Unreal Tournament 469
So what's going to happen with existing custom 'monsters' subclassed from ScriptedPawn? Presumably, when using them in 469, the new ScriptedPawn class will be looking for those bool functions in the old 'monsters' and won't find them - or is that not the way it works?sektor2111 wrote: ↑Tue Jun 30, 2020 7:24 pm ScriptedPawn do seems to have new bool functions, interesting stuff but... I don't know how do they work with old assets,
-
- Adept
- Posts: 391
- Joined: Mon Nov 11, 2013 7:56 am
- Personal rank: Average
- Location: India
-
- Godlike
- Posts: 10326
- Joined: Thu Jun 30, 2011 8:12 pm
- Personal rank: God of Fudge
- Location: Palo Alto, CA
Re: Unreal Tournament 469
Makes sense, UTDMW & UTDMT don't work in MH. I tried numerous times to incorporate them but with no luck.
viewtopic.php?f=5&t=5035
· http://unreal-games.livejournal.com/
· https://unrealarchive.org/authors/evilgrins.html
· https://www.facebook.com/groups/UTcorps
· https://x.com/EvilGrinsIsBack
· https://unrealarchive.org/authors/evilgrins.html
· https://www.facebook.com/groups/UTcorps
· https://x.com/EvilGrinsIsBack

Smilies · https://ut99.org/viewtopic.php?f=8&t=13758medor wrote:Replace Skaarj with EvilGrins
-
- Godlike
- Posts: 6476
- Joined: Sun May 09, 2010 6:15 pm
- Location: On the roof.
Re: Unreal Tournament 469
@Deepu
I did not fix anything anywhere but I'm assuming this SetEnemy gets called at your pawns for some reason and.... NewEnemy it's None. If I well recall, I think I wrote my own SetEnemy in that UTDMT and then... it runs my code not 469 code...
The thing is you might need to rewrite this SetEnemy based on your needs.
Top wrapping might be as I do in all my Bool
If I'm looking at this call
For me if NewEnemy is equal with a NONE it will sound like
And then I might expect a None access. What do you think ?
And now the big questions: Who does this SetEnemy call and/or how is this enemy removed or none ?
I did not fix anything anywhere but I'm assuming this SetEnemy gets called at your pawns for some reason and.... NewEnemy it's None. If I well recall, I think I wrote my own SetEnemy in that UTDMT and then... it runs my code not 469 code...
The thing is you might need to rewrite this SetEnemy based on your needs.
Top wrapping might be as I do in all my Bool
Code: Select all
if (NewEnemy == None)
return False;
Code: Select all
if (!IsAlivePawn(NewEnemy).........
Code: Select all
if (!IsAlivePawn(None)......... //Accessed None
And now the big questions: Who does this SetEnemy call and/or how is this enemy removed or none ?
-
- Adept
- Posts: 391
- Joined: Mon Nov 11, 2013 7:56 am
- Personal rank: Average
- Location: India
Re: Unreal Tournament 469
I discovered the bug,
before i used this, this function is calling to super for scriptedpawn's function eAttitude AttitudeTo(Pawn Other)
Now i changed to whole function eAttitude AttitudeTo(Pawn Other)
Problem resolved!!!
before i used this, this function is calling to super for scriptedpawn's function eAttitude AttitudeTo(Pawn Other)
Code: Select all
function eAttitude AttitudeTo(Pawn Other)
{
if ( PlayerReplicationInfo != None && Other.PlayerReplicationInfo != None && Level.Game.bTeamGame )
{
if ( Other.PlayerReplicationInfo.Team == 255 ||
PlayerReplicationInfo.Team == Other.PlayerReplicationInfo.Team )
return ATTITUDE_Friendly;
}
return Super.AttitudeTo(Other);
}
Code: Select all
function eAttitude AttitudeTo(Pawn Other)
{
if ( PlayerReplicationInfo != None && Other.PlayerReplicationInfo != None && Level.Game.bTeamGame )
{
if ( Other.PlayerReplicationInfo.Team == 255 ||
PlayerReplicationInfo.Team == Other.PlayerReplicationInfo.Team )
return ATTITUDE_Friendly;
}
if ( Other == None )
return ATTITUDE_Ignore;
if (Other.bIsPlayer)
{
if ( bIsPlayer && Level.Game.bTeamGame && (Other.PlayerReplicationInfo != none) && (Team == Other.PlayerReplicationInfo.Team) )
return ATTITUDE_Friendly;
else if ( (Intelligence > BRAINS_None) &&
((AttitudeToPlayer == ATTITUDE_Hate) || (AttitudeToPlayer == ATTITUDE_Threaten)
|| (AttitudeToPlayer == ATTITUDE_Fear)) )
{
if (RelativeStrength(Other) > Aggressiveness)
AttitudeToPlayer = AttitudeWithFear();
else if (AttitudeToPlayer == ATTITUDE_Fear)
AttitudeToPlayer = ATTITUDE_Hate;
}
return AttitudeToPlayer;
}
else if (Hated == Other)
{
if (RelativeStrength(Other) >= Aggressiveness)
return AttitudeWithFear();
else
return ATTITUDE_Hate;
}
else if ( (TeamTag != '') && (ScriptedPawn(Other) != None) && (TeamTag == ScriptedPawn(Other).TeamTag) )
return ATTITUDE_Friendly;
else
return AttitudeToCreature(Other);
}
-
- Godlike
- Posts: 3267
- Joined: Sat Mar 21, 2020 5:32 am
Re: Unreal Tournament 469
I have few suggestion/wishes for new patch.
1. Make possibility store bot patches separate from map. Great example is DM-Deck-16][ and teleport to Redemeer. Bots can not use this, because teleport outside from map. So this navigation point outside net of bot patches.
It is very easy to fix, but you can not do this without package mismatch. But this thing (bot pathes) need only on server. it is not need for clients.
So can be good if this can be fixed without some hack stuff (like mutator which fix patches on level load).
Maybe good if this part of map can be override from some file named similar but with different extension. And this file created by some new option in UnrealEd, like "build patches and store in separate file".
2. Make UnrealEd proper search for Tag and Event. At least for prebuild classes like Dispatcher and RoundRobin. You can not find this Actors by their internal Events on current search in UnrealEd 2.0.
Possible make interface for searcher for custom classes.
Also will be good if engine draw lines between Dispatcher and target Actors too with same manner. Currently it is not happen because used not Event property.
1. Make possibility store bot patches separate from map. Great example is DM-Deck-16][ and teleport to Redemeer. Bots can not use this, because teleport outside from map. So this navigation point outside net of bot patches.
It is very easy to fix, but you can not do this without package mismatch. But this thing (bot pathes) need only on server. it is not need for clients.
So can be good if this can be fixed without some hack stuff (like mutator which fix patches on level load).
Maybe good if this part of map can be override from some file named similar but with different extension. And this file created by some new option in UnrealEd, like "build patches and store in separate file".
2. Make UnrealEd proper search for Tag and Event. At least for prebuild classes like Dispatcher and RoundRobin. You can not find this Actors by their internal Events on current search in UnrealEd 2.0.
Possible make interface for searcher for custom classes.
Also will be good if engine draw lines between Dispatcher and target Actors too with same manner. Currently it is not happen because used not Event property.
-
- Godlike
- Posts: 6476
- Joined: Sun May 09, 2010 6:15 pm
- Location: On the roof.
Re: Unreal Tournament 469
Totally agree here. Some stuff can be doable as XC extension at server level and even for Editor as a builder-plugin - client can have other deals...
Don't forget StochasticTrigger...
-
- Adept
- Posts: 257
- Joined: Thu May 13, 2010 2:23 am
Re: Unreal Tournament 469
It is/was not our intention to change the intended behavior of any bots/scripted pawns. If the behavior of team scripted pawns changed, then you should report this as a bug so we can fix it.
@sektor: When exactly does this crash trigger? Can you report the bug at oldunreal please? I often overlook bugs that are reported here.
@sektor: When exactly does this crash trigger? Can you report the bug at oldunreal please? I often overlook bugs that are reported here.
-
- Godlike
- Posts: 3267
- Joined: Sat Mar 21, 2020 5:32 am
Re: Unreal Tournament 469
1. No one talks about changing behavior. It's about dividing (or make part loadable with override) the map into parts so that you can rebuild the path without getting the difference of the packets.
On the other hand, if the problem of packet mismatch is resolved (and it will be resolved, as previously reported), then the question is not so urgent.
Especially in light of the fact that you can set the normal speed for downloading packages.
2. This is a bug. Actors search does not find some features by Tag or Event, if they are not specified in the standard fields.
On the other hand, if the problem of packet mismatch is resolved (and it will be resolved, as previously reported), then the question is not so urgent.
Especially in light of the fact that you can set the normal speed for downloading packages.
2. This is a bug. Actors search does not find some features by Tag or Event, if they are not specified in the standard fields.
Last edited by Buggie on Wed Jul 01, 2020 11:53 am, edited 1 time in total.
-
- Godlike
- Posts: 6476
- Joined: Sun May 09, 2010 6:15 pm
- Location: On the roof.
Re: Unreal Tournament 469
Miss-understanding. Buggie said about finding some specified Events, what actor does these, it's not a crash problem. Dispatcher uses a list of events not shown - it's harder to debug a map this way. These are aren't shown as arrows pointing a future trigger action. He wants showing all Red-Arrows heading to Tags for a game specified trigger action. Also such actors causing events in other way known to me are StochasticTriggers and RoundRobin. Their internal Events aren't showing where triggering is taking action, what actors are targeted in these internal Events. Editor shows only arrows Event -> Tag.
If you ask me about picture above, it's a crash happening at playing the same map again in a practice session - I often see this and I had to restart UT for still playing the same map - testing a map requires playing it multiple times.
Next:
You don't need to head Pawn to a closer Navigation Node (ANY NODE) if this has ExtraCost = 100,000,000 - If node has that thing modified there are reasons for that - this node should not be reachable until has a normal navigable ExtraCost and then unlocking path - this sounds more logic to me. If this node is a searching goal, I understand to find it (from a closer point like any actor) but not taking it as RouteCache[0] followed by next paths when this has a locked ExtraCost.
-
- Godlike
- Posts: 3267
- Joined: Sat Mar 21, 2020 5:32 am
Re: Unreal Tournament 469
Another notice: In UnrealEd 2.0 search dialog in code do not handle Enter as press "Find" button.