OmniONSScoring

Discuss and provide feedback on Maps.
User avatar
captainsnarf
Posts: 2713
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: OmniONSScoring

Post by captainsnarf »

Unregs happened again last night on Pandemonium :cry: I'm really not sure why though. Maybe because there are so many nodes? The changes above seemed to fix it for most maps, but Pandemonium was definitely broken after the first round. This is a tough bug to squash.
User avatar
captainsnarf
Posts: 2713
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: OmniONSScoring

Post by captainsnarf »

I checked logs, it looks like that weird issue happened again after first round only

Code: Select all

Warning: MutOmniONSScoring ONS-Pandem)o(nium-V1.MutOmniONSScoring (Function OmniONSScoring.MutOmniONSScoring.MainCoreDestroyedOmniScoring:03C3) Accessed None 'PC'
Warning: MutOmniONSScoring ONS-Pandem)o(nium-V1.MutOmniONSScoring (Function OmniONSScoring.MutOmniONSScoring.MainCoreDestroyedOmniScoring:03CB) Accessed None
OmniONSScoring: C.RoundHasEnded called for 
Warning: MutOmniONSScoring ONS-Pandem)o(nium-V1.MutOmniONSScoring (Function OmniONSScoring.MutOmniONSScoring.MainCoreDestroyedOmniScoring:03F5) Accessed None 'C'
We did have some players rq after first round, I wonder if that did it
User avatar
pooty
Posts: 4535
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: OmniONSScoring

Post by pooty »

We did have some players rq after first round, I wonder if that did it
Possibly. That function is identical to the normal game function with the exception of two lines....where it sets the value for the score to a config value. All the logic around RoundhasEnded is exactly the same as the one here.

https://ericdives.com/UT2004-UnCodex/So ... tgame.html

Code: Select all

//round has ended
    for (C = Level.ControllerList; C != None; C = C.NextController)
    {
        PC = PlayerController(C);
        if (PC != None)
        {
            PC.ClientSetBehindView(true);
            PC.ClientSetViewTarget(PowerCores[FinalCore[T]]);
            PC.SetViewTarget(PowerCores[FinalCore[T]]);
            if (!bGameEnded)
                PC.ClientRoundEnded();
        }
        if (!bGameEnded)
            C.RoundHasEnded();
    }
All PC calls are in the if PC != None, and C shouldn't be none but if someone quits just right in middle of the loop...

They are just warnings though and usually it just skips the code if the object is none.


Now we do have the view not getting set right, which was working, but there was a change we made in UTComp that affected it. Doesn't seem to bother anything end of round when the view isn't right.. it doesn't crash (yay!) and next round starts..
User avatar
captainsnarf
Posts: 2713
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: OmniONSScoring

Post by captainsnarf »

New version! download here OmniONSScoring_1.2.zip

Changes
- Move MainCoreDestroyed to a state transition which ignores Tick.
- Call Level.Disable('Tick') and Level.Enable('Tick') before/after MainCoreDestroyed logic.

I tested it out and seems to work ok. Not sure if it fixes the problem. The idea is that maybe disabling Tick will keep the ControllerList from getting modified while inside that function by an external event.
User avatar
pooty
Posts: 4535
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: OmniONSScoring

Post by pooty »

Did you load it on the server?
User avatar
captainsnarf
Posts: 2713
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: OmniONSScoring

Post by captainsnarf »

nope I didn't have time this morning
User avatar
pooty
Posts: 4535
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: OmniONSScoring

Post by pooty »

Loaded on the server.
Post Reply