Saturday, 25-Nov-2017  00:00:00
Enhanced Coop  
[ New messages · Members · Forum rules · Search · RSS ]
Page 1 of 212»
Forum moderator: MrLoathsome 
Forum » Map Packs, Mods & Mutators » Mutators » UT2U1 - Must Have for all gametypes. (This fixes many issues, and makes the game run faster.)
UT2U1 - Must Have for all gametypes.
MrLoathsomeDate: Saturday, 08-Jun-2013, 1:53 PM | Message # 1
Colonel
Group: Moderators
Messages: 151
Awards: 0
Reputation: 0
Status: Offline
Need testers.

Wanted to be able to add U1 and UT items to games without screwing things up.

Problem.   UT class DMMutator and its horrible CheckReplacement routine.

They should have left that alone, or perhaps have made the replacements optional....

The ReadMe file:

Code
7:35 PM 6/13/2013

UT2U1 Mutator by MrLoathsome

This mutator only does 1 thing.   Attempts to totally bypass the UT code that replaces all Unreal
weapons/inventory with the UT99 counterparts.
Thus enabling ALL the classes to co-exist on the same map at the same time.

With this running you can just copy a Dm map from Unreal into your UT\maps directory
and then play the map with the original Unreal guns the author had placed there.

It would require a simple checkreplacement mutator to swap the default unreal
guns with their OLweapons counterparts for that to work online however.

The performance boost this gives things by eliminating a LOT of extra processing that
was happening for EVERY SINGLE ACTOR in your games is considerable.

Recommend using it even if you are NOT going to add any Unreal components to your games.

Install:

Place UT2U1.u and UT2U1.int in your UnrealTournament/System folder.

Select "Loathsomes UT Tweak" from your mutators list.   Be sure that it
is at the top of the mutators list.   Drag it there if it is not.

For servers add UT2U1.UT2U1 to your server startup line as the first mutator in
the mutators= section.    No need for uz file on redirect as this runs serverside
only.

Although this seems to be compatible with OldSkool for the most part, it does not function
with UT coop games based on the coopgame2 gametype.

This hijacks the BaseMutator position.  I have only tested this so far with it as the first
mutator in the list.  If it fails when in another position, let me know, then test again with
it first in the list.

Enjoy !



There is NO reason why you can't have Stingers and PulseGuns in the same game, other than that
horrible default CheckReplacement garbage.   (I think.  No problems or log file errors in testing so far.)

In testing this with the current development version of the SwarmSpawner, this SwarmSpawn.ini worked perfect:

Code
[SwarmSpawn.SS]
CheckRate=0.33
bDebugMode=True
bSpawnAtStart=False
bTrooperGunDrop=True
SwarmInfo[0]=(SwarmClass="UnrealI.SkaarjSniper",Qty=1,SSet0=(SName="WeaponType",SVal="Botpack.SniperRifle"))
SwarmInfo[1]=(SwarmClass="UnrealI.SkaarjSniper",Qty=1,SSet0=(SName="WeaponType",SVal="Botpack.warheadLauncher"))
SwarmInfo[2]=(SwarmClass="UnrealI.SkaarjTrooper",Qty=1,SSet0=(SName="WeaponType",SVal="Botpack.Minigun2"))
SwarmInfo[3]=(SwarmClass="CherryBomb.CherryBomb",Qty=0)
SwarmInfo[4]=(SwarmClass="UnrealI.SkaarjGunner",Qty=1,SSet0=(SName="WeaponType",SVal="CherryBomb.CherryBomb"))
SwarmInfo[5]=(SwarmClass="UnrealI.SkaarjInfantry",Qty=1,SSet0=(SName="WeaponType",SVal="UnrealShare.Stinger"))
SwarmInfo[6]=(SwarmClass="UnrealI.SkaarjInfantry",Qty=1,SSet0=(SName="WeaponType",SVal="Botpack.PulseGun"))
SwarmInfo[7]=(SwarmClass="UnrealI.SkaarjOfficer",Qty=1,SSet0=(SName="WeaponType",SVal="Botpack.ripper"))


The SkaarjSniper with the Redeemer only fired it sometimes, but I will look at that detail more later.

I have only tested this UT2U1 mutator in regards to the Trooper weapons, and only on a few maps.

Would be interested in any test results, particularly any done on maps that were originally U1 maps.

See downloads section for the RC2 release of this thing.


Moo

 
NelsonaDate: Saturday, 08-Jun-2013, 11:18 PM | Message # 2
Lieutenant colonel
Group: Checked
Messages: 122
Awards: 0
Reputation: 0
Status: Offline
Enough crazy. I tried to ruin MonsterBase (which is a base mutator too). Problems: Everything was nice simple the mostly Off-Line. On-Line, with mapvote loaded and all things was not the best ideea. Beside this, how are working those weapons collected by players ? Ehe ... My BaseMutator attached to NsCTF seems to not be easily convinced to stay away... Is a reworked DMMutator to increase monster relevancy and to fix small things.

This one works fine local without anything special, even weapons are working because is... LOCAL. On-Line must be aplied fast switching, Brute force (I won't check console ...)


Message edited by Nelsona - Sunday, 09-Jun-2013, 0:05 AM
 
NelsonaDate: Sunday, 09-Jun-2013, 9:29 AM | Message # 3
Lieutenant colonel
Group: Checked
Messages: 122
Awards: 0
Reputation: 0
Status: Offline
But... continuing crazy ideea, I'm thinking at other things. A small actor triggerer to complete missing codes from OLdWeapons. As I remember once I did some mutator with a tick triggering weapons to fire with any price.

I'm thinking at steps to do something different:
1) Actor is granted to player joined only (having even replication parameters ?);
2) Actor is using a local heavy tick to scan if player pressed Fire or AltFire;
3) Depending on weapon (yeah, not quadshot of course) weapon will Fire or AltFire (playing animation ?);
4) If player Owner of this actor is killed - actor will get vanished - a new one is granted at respawn (to not mess them stacking ?);

I don't know if this is crazy or not but deserve some try, at least I wanna see small results. Maybe I'll use this Actor to fix even other Weapons ruined.


Message edited by Nelsona - Sunday, 09-Jun-2013, 9:29 AM
 
MrLoathsomeDate: Sunday, 09-Jun-2013, 3:50 PM | Message # 4
Colonel
Group: Moderators
Messages: 151
Awards: 0
Reputation: 0
Status: Offline
Maybe not so crazy?   Test out current revision on TDM or MegaDomination servers.

Default UnrealI Troopers are using U1 weapons fine.

Players however, cannot shoot with them, and errors show up.   At the moment I have just disabled the Weapon Drop by the Troopers
as a temporary fix for that.

Try it.

Note, there is an Alpha version of the next SwarmSpawner running on the servers ATM, that includes the code that fixes the Troopers weapons.
The new version of that, will be able to spawn or modify Actor classes, not just Pawns.


Moo

 
NelsonaDate: Sunday, 09-Jun-2013, 5:48 PM | Message # 5
Lieutenant colonel
Group: Checked
Messages: 122
Awards: 0
Reputation: 0
Status: Offline
Both A.I. can use those weapons because they belongs to server and weapons too. Replication is not a very need for them. Good... assuming we want old weapons ON Line with any price I just did a crappy tool (with a few errors of course based on missing states for old weapons). Player CAN FIRE WEAPON - I tested Stinger and Eightball - original manure without net code can be used, even pretty wacky but works.

How more exactly ? Well, pressing rapidly fire at Eightball will spray a bunch of rockets and grenades being different from stinger wich can fire 1 projectile and next one can be fired after a small break not continuously. I have to implement separate sections to fix timings a bit (not sure if is not interesting even as they are). If I'll finish this tool properly I'll quit using replacements in any game (are going to be used only for small adjustments).

Maybe you have a more proper experience with such things so let me introduce a small hack oops, mutator. It contains 2 uc classes:

I called it WTriggerer but you can name it different. First class
Oldies.UC

Code
class Oldies expands Mutator;

var bool bInitialized;

event PostBeginPlay()
{
     Super.PostBeginPlay(); //First do call to other stuff
     if (bInitialized)
     {
        log ("Oldies - already loaded, ignoring...");
        return;
     }
     if (Level.NetMode != NM_Client)
     {
        log("In local environment any weapon works... No need WTriggerer. ");
        return;
     }
     bInitialized = True;
     log ("===== Oldies triggerer loaded =====");
}

function ModifyPlayer(Pawn Other)
{
     local Triggerator T;

     if (Other.IsA('TournamentPlayer'))
     {
        T = Spawn(class'Triggerator',Other,,Other.Location);
        T.SetOwner(Other);
        log ("A weapon triggerer has been assigned for "@Other.GetHumanName());
     }
     if (NextMutator != None)
        NextMutator.ModifyPlayer(Other);
}

defaultproperties
{
}


Next one is a client injection to be nice with server.
Triggerator.UC

Code
Class Triggerator expands Actor;

replication
{
     reliable if ( Role < ROLE_Authority)
        SetWeaponFire;
}

event PostBeginPlay()
{
      Super.PostBeginPlay();
}
/*
simulated event PostNetBeginPlay () // after internet play has started
{
          Super.PostBeginPlay(); // do other stuff first
}
*/
event Tick (float DeltaTime)
{
     local Weapon W;
     local TournamentPlayer P;
       
     P = TournamentPlayer(Owner);

     if (P == None || P.Health <= 0)
     {
        Destroy();
        return;
     }
// Let me see >:(
     if ( P.Weapon != None && !P.Weapon.IsA('TournamentWeapon') )
     {
        if ( P.bFire == 1 || P.bAltFire == 1 )
        {
           log ("Detected Firing Command ...");
           SetWeaponFire();
        }
     }
}

function SetWeaponFire()
{
     local Weapon W;
     local TournamentPlayer P;

     P = TournamentPlayer(Owner);
       
        if ( P.bFire == 1 )
        {
           log ("ClientFire");
           P.Weapon.Fire(1.0);
           P.Weapon.GotoState('NormalFire');

        }
        if ( P.bAltFire == 1 )
        {
           log("ClientAltFire");
           P.Weapon.AltFire(1.0);
           P.Weapon.GotoState('AltFiring');
        }
}

defaultproperties
{
       bHidden=True
       bOwnerNoSee=True
       NetPriority=10.000000
}


Toy as you want with NetPriority and/or different things, maybe is time to get rid of DMMutator and I was blind and I couldn't see this subject.
Anyway If you want such a crazy ideea let me be in your team :D.


Message edited by Nelsona - Sunday, 09-Jun-2013, 5:53 PM
 
NelsonaDate: Sunday, 09-Jun-2013, 8:45 PM | Message # 6
Lieutenant colonel
Group: Checked
Messages: 122
Awards: 0
Reputation: 0
Status: Offline
Update to previous post, class Triggerator.UC

Code
// Client side code.

Class Triggerator expands Actor;

var float FireRateFreq, AltFireRateFreq, LastFireTime, LastAltFireTime;

replication
{
    reliable if ( Role < ROLE_Authority)
       SetWeaponFire;
}

event PostBeginPlay()
{
     Super.PostBeginPlay();
}

event Tick (float DeltaTime)
{
    local Weapon W;
    local TournamentPlayer P;
     
    P = TournamentPlayer(Owner);

    if (P == None || P.Health <= 0)
    {
       Destroy();
       return;
    }
// Let me see >:(
    if ( P.Weapon != None && !P.Weapon.IsA('TournamentWeapon') )
    {
       if ( P.bFire == 1 || P.bAltFire == 1 )
       {
//         log ("Detected Firing Command ..."); Removed Log - Works for sure
          if ( P.Weapon.IsInState('Idle') && !P.Weapon.IsInState('NormalFire') && !P.Weapon.IsInState('AltFiring')); //Add a few
             SetWeaponFire();
       }
    }
}

function SetWeaponFire()
{
    local Weapon W;
    local TournamentPlayer P;

    P = TournamentPlayer(Owner);
/*
    FireRateFreq = P.Weapon.ReFireRate;
    if (FireRateFreq < 0.8)
       FireRateFreq = 0.8;
    AltFireRateFreq = P.Weapon.AltRefireRate;
    if (AltFireRateFreq < 0.8)
       AltFireRateFreq = 0.8;
*/    
       if ( P.bFire == 1 /*&& LastFireTime <= Level.TimeSeconds - FireRateFreq */)
       {
//         log ("ClientFire");
          P.Weapon.Fire(1.0);
//         P.Weapon.GotoState('NormalFire'); Removed... Let weapon to manage own code
//         if (P.Weapon.IsInState('Idle'));
//            LastFireTime = Level.TimeSeconds;
       }
       if ( P.bAltFire == 1 /*&& LastAltFireTime <= Level.TimeSeconds - AltFireRateFreq */)
       {
//         log("ClientAltFire");
          P.Weapon.AltFire(1.0);
//         P.Weapon.GotoState('AltFiring'); I think we have something right now... Keep checking...
//         if (P.Weapon.IsInState('Idle'));
//            LastAltFireTime = Level.TimeSeconds;
       }
}

defaultproperties
{
      bHidden=True
      bOwnerNoSee=True
      NetPriority=3.000000
}
 
MrLoathsomeDate: Tuesday, 11-Jun-2013, 1:32 AM | Message # 7
Colonel
Group: Moderators
Messages: 151
Awards: 0
Reputation: 0
Status: Offline
Good ideas there, but I don't think they will be needed.

At the moment, on the TDM test server, I have the Troopers using a mix
of Botpack, UnrealI and UnrealShare weapons with zero issues.
Currently they do not drop a weapon.

I also have the new SwarmSpawner adding a OLweapons.olstinger and a OLweapons.olminigun to the game.
Players can pick those up and use them fine.
SwarmSpawner is also adding some ammo pickups for the stinger and olminigun.

Note OldSkool itself is not even loaded on the server.
Only config needed was to add OLweapons to the ServerPackages.

No problems, errors or warnings at all.    (almost....No more than you might get occasionally with just the default UT guns)

Between turning off the horrible checkreplacement stuff in DMMutator and the fixes done by my new gametypes, I think a LOT
of other problems have been fixed.


Moo

 
gopostalDate: Tuesday, 11-Jun-2013, 4:23 AM | Message # 8
Private
Group: Checked
Messages: 19
Awards: 0
Reputation: 0
Status: Offline
Loath can I try this code on my coop server?
 
NelsonaDate: Tuesday, 11-Jun-2013, 7:32 AM | Message # 9
Lieutenant colonel
Group: Checked
Messages: 122
Awards: 0
Reputation: 0
Status: Offline
Gopo, I tried to create a functional tool to avoid any deal with replacements, I tend to get rid of too many timed things for MH (good for Coop as well), I writed this fast, can be improved (different logs). I don't know if won't cause small troubles at client, must be checked. If Loathe did that new DMMutator without replacements, I continued ideea because old weapons must be forced to play. Yeah, checking logs UT stuff is usable in Net Games but far from be perfect. They couldn't stay away from letting errors unfixed. At least OLd weapons forced won't spread so many errors like these Net-Ready weapons from Botpack.

Apart from subject but close to subject. Working this tool and looking at class Weapon.UC. I'm wander why the heck was necesary adding a crappy load of things in PlayerPawn because a simple deal with weaponry would be great, PlayerPawn could be done much better letting modders to deal with all kind of weaponry without to mess up Net codes. There are a bunch of such "weapons" without Netcodes  and I want to see them how are acting in original some of them don't have Net aliases.

I think I have to try a new NsCTF and other MH with simple BaseMutators replacing only really messed stuff (quadshot, craps from sinweapons, MB dumb trash, ect), letting more original things. Amplifier is done for ASMD and DispersionPistol, these weapons are checking if player have AMP aka amplifier and YOu won't see a real Dispersion powered up properly. You couldn't see errors yet because Amplifier not exist in Tournament maps, but exist in Coop. There is a stupid call in OLASMD to ASMD returning an error due to an unexistent ASMD and this is not fixed neither in Uweapons as other things. Those remakes are incorect done that's why I have a version of them without any UIWeapons class. Now I think I worked useless because I want to remove any replacement.


Message edited by Nelsona - Tuesday, 11-Jun-2013, 7:48 AM
 
MrLoathsomeDate: Tuesday, 11-Jun-2013, 11:32 AM | Message # 10
Colonel
Group: Moderators
Messages: 151
Awards: 0
Reputation: 0
Status: Offline
Quote (gopostal)
Loath can I try this code on my coop server?
Yes.  Please do.


Moo

 
MrLoathsomeDate: Tuesday, 11-Jun-2013, 11:47 AM | Message # 11
Colonel
Group: Moderators
Messages: 151
Awards: 0
Reputation: 0
Status: Offline
@Nelsona.

Look again closely at what exactly this does.   Consider it a prerequisite, required item before you look at anything else.

You will need to re-think all the problems you used to have with checkreplacement.  Those can now be done much easier, and you will
have more options, as long as this is running as the base mutator.    All the code you have that has been fighting against the UT engine
in regards to these issues will go away.   As long as you have this bit loaded first.    It does need to be a mutator.

I was able to put those skaarjtrooper weapon fixes in either a gametype or mutator and make them work fine, but this particular thing
needs to be in a mutator, and it needs to be first in the mutator list, and it shouldn't be trying to do any else other than what it does.

And what it does is NOTHING.  LOL.   It only removes some code that should never have been there in the first place.

Just to emphasis that point.   You should really not be trying to change or adjust BaseMutator at all.  Not for any other mutator/mod or
for any gametype.   The only thing that should happen in BaseMutator is this, which is nothing.  LOL.  (I like saying that.....)

The default DMMutator code was doing too much.  This just rips that extra bad stuff out, but makes absolutely no other
changes to the code or the game.

This bit needs to happen once, in the first mutator in the list, and it needs to do NOTHING else.
I can only think of one other way to make this work, and that involves recompiling Botpack.

I am not going to recompile Botpack.

Everything else that might need to be done, can be done either at the gametype level or with a regular mutator.

BaseMutator is NOT the place/time any of that stuff should happen.    Hopefully this thing proves that.


Moo

 
gopostalDate: Tuesday, 11-Jun-2013, 5:09 PM | Message # 12
Private
Group: Checked
Messages: 19
Awards: 0
Reputation: 0
Status: Offline
OK this is running on my coop server now. I have to leave for work but I'll try to catch you in chat tonight Loath and explain in greater detail.

In short it stopped the skaarj trooper weapon drops completely. However it breaks a lot of other stuff. That's not surprising though because of the massive checkreplacements in my coop code. Today I'm going to start removing them and adjust my server to account for this mod of yours. I expect the errors will diminish greatly once I expunge the useless code now.

How about a copy of that skaarj code too so I can fix them while I'm at it? wink
 
NelsonaDate: Tuesday, 11-Jun-2013, 7:35 PM | Message # 13
Lieutenant colonel
Group: Checked
Messages: 122
Awards: 0
Reputation: 0
Status: Offline
I'm not very against BaseMutator as concept. Using it, certain replacements might do a few fixes (not many related to monsters). A few things I prefer to do in a timer from whatever mutator.

1) Bad things - a high loaded timer leads in malfunctions of others which are using timer - I did not check why but is true as I've seen;
2) In MH exist some maps with bad mutators embeded - like PrecipitationGenerator and others - I'm extremely happy to ruin that timer because is an error spammer. Others ? Not very far. I prefer to make those MyLevel things to be destroyed, completely overrided. If is a bad thing leading in map out of order - removal is the solution.

Continuing UT2U1 thread, I put that in a game-server runing a version NsCTF modified by me (default kill messages for any pawn, A.I. great fight directly in controller, and others ... NONE) my BaseMutator aka NsDMMutator has a purpose to deal with movers (monsters can open doors in my games, also movers are closed if pawn is killed and they stay opened (I don't think if is recommended to throw everything in Game Core) - I have to setup a small mutator to redo lost things). Outside of these tunes I did or I attempted a call to ScriptedPawn to not mess monsters from maps - MH has this as DEFAULT RULE, and because I play with monsters I need to call such pawns and.... StationaryPawn as well, not the last thing, Replacements of bad Monsters - as I know so far, function CheckReplacement belongs to mutators not to any child of gameinfo (or must implement a lot of functions to recover lost things).
Also let me quote a few things recorded by me looking at GameInfo:

Code
// Mutator (for modifying actors as they enter the game)
var class<Mutator> MutatorClass;
var Mutator BaseMutator;
var Mutator DamageMutator;   // linked list of mutators which affect damage
var Mutator MessageMutator; // linked list of mutators which get localized message queries
......
function bool IsRelevant( actor Other )
{
    local byte bSuperRelevant;

    // let the mutators mutate the actor or choose to remove it
    if ( BaseMutator.AlwaysKeep(Other) )
       return true;
    if ( BaseMutator.IsRelevant(Other, bSuperRelevant) )
    {
       if ( bSuperRelevant == 1 ) // mutator wants to override any logic in here
          return true;
    }
....
event InitGame( string Options, out string Error )
{
..
    BaseMutator = spawn(MutatorClass);
    log("Base Mutator is "$BaseMutator);
    InOpt = ParseOption( Options, "Mutator");
...
BaseMutator.ModifyLogin(SpawnClass, Portal, Options);
...
WeapClass = BaseMutator.MutatedDefaultWeapon();
...
    BaseMutator.ModifyPlayer(PlayerPawn);
..
    BaseMutator.ScoreKill(Killer, Other);
..
    if ( BaseMutator.HandlePickupQuery(Other, item, bAllowPickup) )
       return (bAllowPickup == 1);

..
if( (Other.Weapon!=None) && (Other.Weapon.Class!=Level.Game.BaseMutator.MutatedDefaultWeapon())  
       && Other.Weapon.bCanThrow )


As I saw in GameInfo, mentioning examples here, I found this string BaseMutator in GameInfo called extremely often, I think in purpose to let people to debate many things.
First MH problem was: certain pawns and default tentacle won't be so visible if is not called in some game relevancy dance. In last Version 503 this issue has been fixed - appearing later in others again, LOL.
Adding an AlwaysKeep - problem is magically solved, even too solved - now they cannot be replaced. I had a small war with crappy stuff to get rid of it faster - CheckReplacement solved problem.

In end, now I play with UT2U1 as first mutator before everything - later MapVote will load WTriggerer and party starts. Problem ? Until this moment 0 crash at server, 0 crash at client - without any bad monster used, and ... player firing old weapons happy (slowly regenerated by a mutator which never gave me headaches). What can I say ? Maybe I have to start a kind of Coop due to new functionality of old stuff... I'll see what any other options are now opened.

Appologise if I bothered you too much... but I'm very very interested about your technical details. Now I go to redo mutator removing all UT replacements as you suggested in UT2U1 - I consider this "crazy" ideea as a gift...  smile
 
MrLoathsomeDate: Wednesday, 12-Jun-2013, 2:52 AM | Message # 14
Colonel
Group: Moderators
Messages: 151
Awards: 0
Reputation: 0
Status: Offline
Click this link for a summary of how I did the Troopers fix:    FUCK

Got the actual working code currently in the swarmspawner mutator.

Hoping to get an update for that ready to release soon.


Moo

 
gopostalDate: Wednesday, 12-Jun-2013, 4:07 AM | Message # 15
Private
Group: Checked
Messages: 19
Awards: 0
Reputation: 0
Status: Offline
Got it, I'm on this part next once I get the coop controller recoded. I think you reduced a 2500 line class to less than 1000 with the replacement cleanup lol.
 
gopostalDate: Wednesday, 12-Jun-2013, 6:11 AM | Message # 16
Private
Group: Checked
Messages: 19
Awards: 0
Reputation: 0
Status: Offline
OK, reporting back. You won't like it...

First I'll outline what I did then give the results. I converted my entire coop controller over, moving it to a very vanilla/no replacement mod. I removed all references to olweps, olweapons, olextras, and oldskool. Basically it's Unreal/UT weapons unless the map specifically called for them. I left the serverpackage lines. I added the UT2U1 mod to the server startup and also to the mapvote. It endless loop crashed if I only did one or the other.

The server started but there were pages of error lines generated by the UT2U1 mod. Eventually those end and the server fired up.

In the server it made a mess of my mutator class. Most stuff did not work, like any of the mutate commands for example. Some other stuff in mutator did work though like the health replenishment. It did not fix my HUD problems, it still messes up but now I'm thinking that is due to my HUD code itself. 

None of the U1 weapons would fire unless I did the hold-fire-down-and-switch-weapons trick. I could pick them up and switch but that was it.

Overall this was an interesting test and showed me a lot of interesting things. Yeah you can pinch U1 stuff into UT now but it's netcode is maybe-maybe not (at best).
 
MrLoathsomeDate: Wednesday, 12-Jun-2013, 7:20 AM | Message # 17
Colonel
Group: Moderators
Messages: 151
Awards: 0
Reputation: 0
Status: Offline
The U1 weapons will fail online.   While Troopers are able to use them online, players will have that no fire issue.
For online use, players should still use the OLweapons classes.

Not sure about the errors or the endless loop thing.    Did you save the log?

Yesterday when I put UT2U1 on both the Ecoop servers, I made zero other changes other than adding it as first mutator
in the list.   Zero errors from this thing or anything else really.   Been a day and a half now.    It does seem to be compatible with oldskool.

Only thought I am having is that perhaps something you took out is giving coopgame2 a problem.....


Moo

 
NelsonaDate: Wednesday, 12-Jun-2013, 7:29 AM | Message # 18
Lieutenant colonel
Group: Checked
Messages: 122
Awards: 0
Reputation: 0
Status: Offline
Hmmm, which means something is not the best in that Coop controller. How I tested ?... I put UT2U1 in start-line before MapVote, right in start. Yes, I had some mutator for MH in purpose to ruin MonsterBase, Worked and not worked, depending on configuration. To not mess up with pushing a BaseMutator like UT2U1 in server I just implemented it in mutator used by game - 0 replacements (only invisibility removal - I won't accept that fart in any of my recoded games - is my personal rule)

Last evening I think I lost 3 CTF matches. You know why ? I hunted all time Skaarj (I configured swarmSpawner with 3, 4 pieces from all classes), so after killing them I got all thos weapons: DispersionPistol, Rifle, Eightball, Stinger aaaand ... RazorJack. In end I have a madness for using their own weapons against them. How is possible ON-LINE ? Brutalizing weapon ... is not the best ever thing done by me but as I said, you can improve it as you consider.
Step 1) You have a mutator for game - BaseMutator
Implement ModifyPlayer function:

Code
function ModifyPlayer(Pawn Other)
{
    local Triggerator T;

    if ( Other.IsA('TournamentPlayer') )
    {
       T = Spawn(class'Triggerator',Other,,Other.Location);
       T.SetOwner(Other);
//      log ("A weapon triggerer has been assigned for "@Other.GetHumanName());
    }
    if (NextMutator != None)
       NextMutator.ModifyPlayer(Other);
}


Step 2)
Throw a UC class (pick your desired name) as described here:

Code
Class Triggerator expands Actor;

replication
{
    reliable if ( Role < ROLE_Authority)
       SetWeaponFire;
}

event PostBeginPlay()
{
     Super.PostBeginPlay();
}

event Tick (float DeltaTime)
{
    local Weapon W;
    local TournamentPlayer P;
     
    P = TournamentPlayer(Owner);

    if (P == None || P.Health <= 0)
    {
       Destroy();
       return;
    }
// Let me see >:(
    if ( P.Weapon != None && !P.Weapon.IsA('TournamentWeapon') )
    {
       if ( (P.bFire == 1 || P.bAltFire == 1) && !P.Weapon.IsInState('DownWeapon'))
          SetWeaponFire();
    }
}

function SetWeaponFire()
{
    local Weapon W;
    local TournamentPlayer P;

    P = TournamentPlayer(Owner);
    if ( P.bFire == 1 )
    {
       P.Weapon.Fire(1.0);
    }
    if ( P.bAltFire == 1 )
    {
       P.Weapon.AltFire(1.0);
    }
}

defaultproperties
{
      bHidden=True
      bOwnerNoSee=True
      NetPriority=3.000000
}


I simplified it (I often noticed simple things being better than high loaded things good  ). If you need to toy with it more, you can put it in other U file without to be in packages (no need to be in packages for sure). As you see, is not linked with game-type any, is an actor owned by player. Maybe find a solution to not spawn in Local games - need it only ON-LINE. Even can be in a separate mutator without packages. Nobody will know how the heck will fire an old crap with nothing special to be downloaded.
Step 3)
In CheckReplacement of this BaseMutator right before bSuperRelevant=1 you can add this:

Code
if ( Other.IsA('Inventory') )
    {
//      Pickup(Other).bAutoActivate = True;
       Inventory(Other).PickupMessageClass = Class'Botpack.PickupMessagePlus';
       return true;
    }


You now why ? Will see why.
 
MrLoathsomeDate: Wednesday, 12-Jun-2013, 9:35 AM | Message # 19
Colonel
Group: Moderators
Messages: 151
Awards: 0
Reputation: 0
Status: Offline
Nice.   But the next release of SwarmSpawner is sort of going to eliminate that issue.

It is going to allow you to set the class of the weapon that gets dropped when the Troopers are killed.
So you will just set that class to be one of the OLweapons.    Problem solved.

It will be so flexible you can have the Trooper using UnrealI.Rifle, and then when it gets killed, it will drop a OLweapons.olrifle


Moo

 
gopostalDate: Wednesday, 12-Jun-2013, 3:03 PM | Message # 20
Private
Group: Checked
Messages: 19
Awards: 0
Reputation: 0
Status: Offline
Here is the crash loop error:
Quote

Log: Log file open, 06/11/13 20:40:37
Init: Name subsystem initialized
Init: Detected: Microsoft Windows NT 5.1 (Build: 2600)
Init: Version: 436
Init: Compiled: Oct 24 2000 23:40:18
Init: Command line: GoposCoopHub.unr?game=GoCoopDev8a.coopgame2?difficulty=255?Mutator=MapVoteLAv2.BDBMapVote log=ucc.log
Init: Base directory: C:\UnrealTournament\System\
Init: Character set: Unicode
Log: Bound to Core.dll
Init: Object subsystem initialized
Init: Computer: MHSTECH009F9C7
Init: User: mhstech03
Init: Memory total: Phys=2095092K Pagef=3514968K Virt=2097024K
Init: Working set: 32000 / 159000
Init: CPU Speed=1992.617733 MHz
Init: CPU Page size=4096, Processors=1
Init: CPU Detected: Unknown processor (GenuineIntel)
Init: CPU Features: CMov FPU RDTSC PAE MMX KNI
Log: Bound to Engine.dll
Log: Executing Class Engine.ServerCommandlet
Init: Unreal engine initialized
Log: Browse: GoposCoopHub.unr?Name=Player?Class=Botpack.TMale2?team=0?skin=SoldierSkins.blkt?Face=SoldierSkins.Othello?game=GoCoopDev8a.coopgame2?difficu lty=255?Mutator=MapVoteLAv2.BDBMapVote
Log: LoadMap: GoposCoopHub.unr?Name=Player?Class=Botpack.TMale2?team=0?skin=SoldierSkins.blkt?Face=SoldierSkins.Othello?game=GoCoopDev8a.coopgame2?difficu lty=255?Mutator=MapVoteLAv2.BDBMapVote
Log: Bound to Fire.dll
Log: Collecting garbage
Log: Purging garbage
Log: Garbage: objects: 8257->8256; refs: 239054
Log: Bound to IpDrv.dll
Log: Bound to UWeb.dll
Log: Game class is 'coopgame2'
Init: WinSock: version 1.1 (2.2), MaxSocks=32767, MaxUdp=65467
Init: WinSock: Socket queue size left as default.
Init: WinSock: I am mhstech0-09f9c7 (192.168.0.12)
DevNet: TcpNetDriver on port 7777
Log: Server Package: SoldierSkins
Log: Server Package: CommandoSkins
Log: Server Package: FCommandoSkins
Log: Server Package: SGirlSkins
Log: Server Package: BossSkins
Log: Server Package: Botpack
Log: Server Package: MultiMesh
Log: Server Package: TCowMeshSkins
Log: Server Package: OldModels
Log: Server Package: Female1Skins
Log: Server Package: FCommandoSong
Log: Server Package: TNaliMeshSkins
Log: Server Package: TSkMSkins
Log: Server Package: MapvoteLAv2
Log: Server Package: OLweapons
Log: Server Package: oldskool
Log: Server Package: olroot
Log: Server Package: olextras
Log: Server Package: olweps
Log: Server Package: VAbeta2
Log: Server Package: SkeletalCharsFix313
Log: Server Package: PortalGunFTW
Log: Server Package: ccoophud
Log: Server Package: CoopMV
Log: Server Package: GoCoopDev8a
Log: Server Package: MoreBloodOS
Log: Server Package: MoreGore
Log: Server Package: NWUltraGoreSSE
Log: Spawning: IpDrv.UdpBeacon
Log: Spawning: IpServer.UdpServerQuery
Log: Spawning: IpServer.UdpServerUplink
Log: Spawning: IpServer.UdpServerUplink
Log: Spawning: IpServer.UdpServerUplink
Log: Spawning: UWeb.WebServer
Log: Spawning: VAbeta2.VAServer
Log: Spawning: ServerAdds.ServerAdds
Log: Level is Level GoposCoopHub.MyLevel
Log: Bringing Level GoposCoopHub.MyLevel up for play (20)...
ScriptLog: InitGame: ?Name=Player?Class=Botpack.TMale2?team=0?skin=SoldierSkins.blkt?Face=SoldierSkins.Othello?game=GoCoopDev8a.coopgame2?difficulty=255?Mutator= MapVoteLAv2.BDBMapVote
ScriptLog: Base Mutator is GoposCoopHub.spoldskool0
ScriptLog: Mutators MapVoteLAv2.BDBMapVote
ScriptLog: Add mutator MapVoteLAv2.BDBMapVote
MapVoteLA: StartMutator: UT2U1.UT2U1
MapVoteLA: StartMutator: MoreBloodOS.MB
ScriptLog: MaxBleeders = 1  BleedTime = 6.729087  BDLifeSpan = 49.643391  BDDrawScale = 0.678726  SpurtLevel = 77.594238
Critical: appError called:
Critical: UT2U1 GoposCoopHub.UT2U0 (Function Engine.Mutator.AddMutator:0000) Infinite script recursion (250 calls) detected
Exit: Executing UObject::StaticShutdownAfterError
Critical: FFrame::Serialize
Critical: UObject::ProcessEvent
Critical: (BDBMapVote GoposCoopHub.BDBMapVote0, Function MapvoteLAv2.BDBMapVote.PreBeginPlay)
Critical: ULevel::SpawnActor
Critical: (BDBMapVote)
Critical: UObject::ProcessEvent
Critical: (coopgame2 GoposCoopHub.coopgame0, Function Engine.GameInfo.InitGame)
Critical: BeginPlay
Critical: UGameEngine::LoadMap
Critical: LocalMapURL
Critical: UGameEngine::Browse
Critical: UGameEngine::Init
Critical: UServerCommandlet::Main
Exit: Exiting.
Uninitialized: Name subsystem shut down
Uninitialized: Log file closed, 06/11/13 20:40:40
 
gopostalDate: Wednesday, 12-Jun-2013, 3:05 PM | Message # 21
Private
Group: Checked
Messages: 19
Awards: 0
Reputation: 0
Status: Offline
Most of the game logs look just like this:
Quote

Log: Log file open, 06/11/13 07:43:44
Init: Name subsystem initialized
Init: Detected: Microsoft Windows NT 5.1 (Build: 2600)
Init: Version: 436
Init: Compiled: Oct 24 2000 23:40:18
Init: Command line: GoposCoopHub.unr?game=GoCoopDev8.coopgame2?difficulty=255?Mutator=UT2U1.UT2U1,MapVoteLAv2.BDBMapVote log=ucc.log
Init: Base directory: C:\UnrealTournament\System\
Init: Character set: Unicode
Log: Bound to Core.dll
Init: Object subsystem initialized
Init: Computer: MHSTECH009F9C7
Init: User: mhstech03
Init: Memory total: Phys=2095092K Pagef=3514968K Virt=2097024K
Init: Working set: 32000 / 159000
Init: CPU Speed=1992.615929 MHz
Init: CPU Page size=4096, Processors=1
Init: CPU Detected: Unknown processor (GenuineIntel)
Init: CPU Features: CMov FPU RDTSC PAE MMX KNI
Log: Bound to Engine.dll
Log: Executing Class Engine.ServerCommandlet
Init: Unreal engine initialized
Log: Browse: GoposCoopHub.unr?Name=Player?Class=Botpack.TMale2?team=0?skin=SoldierSkins.blkt?Face=SoldierSkins.Othello?game=GoCoopDev8.coopgame2?difficul ty=255?Mutator=UT2U1.UT2U1,MapVoteLAv2.BDBMapVote
Log: LoadMap: GoposCoopHub.unr?Name=Player?Class=Botpack.TMale2?team=0?skin=SoldierSkins.blkt?Face=SoldierSkins.Othello?game=GoCoopDev8.coopgame2?difficul ty=255?Mutator=UT2U1.UT2U1,MapVoteLAv2.BDBMapVote
Log: Bound to Fire.dll
Log: Collecting garbage
Log: Purging garbage
Log: Garbage: objects: 8257->8256; refs: 239054
Log: Bound to IpDrv.dll
Log: Bound to UWeb.dll
Log: Game class is 'coopgame2'
Init: WinSock: version 1.1 (2.2), MaxSocks=32767, MaxUdp=65467
Init: WinSock: Socket queue size left as default.
Init: WinSock: I am mhstech0-09f9c7 (192.168.0.12)
DevNet: TcpNetDriver on port 7777
Log: Server Package: SoldierSkins
Log: Server Package: CommandoSkins
Log: Server Package: FCommandoSkins
Log: Server Package: SGirlSkins
Log: Server Package: BossSkins
Log: Server Package: Botpack
Log: Server Package: MultiMesh
Log: Server Package: TCowMeshSkins
Log: Server Package: OldModels
Log: Server Package: Female1Skins
Log: Server Package: FCommandoSong
Log: Server Package: TNaliMeshSkins
Log: Server Package: TSkMSkins
Log: Server Package: MapvoteLAv2
Log: Server Package: OLweapons
Log: Server Package: oldskool
Log: Server Package: olroot
Log: Server Package: olextras
Log: Server Package: olweps
Log: Server Package: VAbeta2
Log: Server Package: SkeletalCharsFix313
Log: Server Package: PortalGunFTW
Log: Server Package: ccoophud
Log: Server Package: CoopMV
Log: Server Package: GoCoopDev8
Log: Server Package: MoreBloodOS
Log: Server Package: MoreGore
Log: Server Package: NWUltraGoreSSE
Log: Spawning: IpDrv.UdpBeacon
Log: Spawning: IpServer.UdpServerQuery
Log: Spawning: IpServer.UdpServerUplink
Log: Spawning: IpServer.UdpServerUplink
Log: Spawning: IpServer.UdpServerUplink
Log: Spawning: UWeb.WebServer
Log: Spawning: VAbeta2.VAServer
Log: Spawning: ServerAdds.ServerAdds
Log: Level is Level GoposCoopHub.MyLevel
Log: Bringing Level GoposCoopHub.MyLevel up for play (20)...
ScriptLog: InitGame: ?Name=Player?Class=Botpack.TMale2?team=0?skin=SoldierSkins.blkt?Face=SoldierSkins.Othello?game=GoCoopDev8.coopgame2?difficulty=255?Mutator=U T2U1.UT2U1,MapVoteLAv2.BDBMapVote
ScriptLog: Base Mutator is GoposCoopHub.spoldskool0
ScriptLog: Mutators UT2U1.UT2U1,MapVoteLAv2.BDBMapVote
ScriptLog: Add mutator UT2U1.UT2U1
ScriptLog: Add mutator MapVoteLAv2.BDBMapVote
MapVoteLA: StartMutator: UT2U1.UT2U1
MapVoteLA: Actor already spawned: UT2U1.UT2U1
MapVoteLA: StartMutator: MoreBloodOS.MB
ScriptLog: MaxBleeders = 5  BleedTime = 7.655385  BDLifeSpan = 28.525246  BDDrawScale = 0.812714  SpurtLevel = 27.530214
MapVoteLA: StartMutator: MoreGore.MoreGore
MapVoteLA: StartMutator: NWUltraGoreSSE.NWBloodyMess_UGSSE
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
ScriptWarning: UT2U1 GoposCoopHub.UT2U0 (Function UT2U1.UT2U1.CheckReplacement:0021) Accessed None
 
gopostalDate: Wednesday, 12-Jun-2013, 3:06 PM | Message # 22
Private
Group: Checked
Messages: 19
Awards: 0
Reputation: 0
Status: Offline
and the error lines go on for pages and pages for each map. I get these same error lines whether it was with my recoded coop or the one running on the server now.
 
NelsonaDate: Wednesday, 12-Jun-2013, 4:45 PM | Message # 23
Lieutenant colonel
Group: Checked
Messages: 122
Awards: 0
Reputation: 0
Status: Offline
Quote (gopostal)
MapVoteLA: StartMutator: UT2U1.UT2U1 MapVoteLA: Actor already spawned: UT2U1.UT2U1

You doubled it in Start-line and MapVote ? I think you need to remove it from MapVote if is added in Run-Line.


Message edited by Nelsona - Wednesday, 12-Jun-2013, 4:53 PM
 
gopostalDate: Thursday, 13-Jun-2013, 6:00 AM | Message # 24
Private
Group: Checked
Messages: 19
Awards: 0
Reputation: 0
Status: Offline
Quote (gopostal)
It endless loop crashed if I only did one or the other.
The first log is from no line in mapvote, only server startup.


Message edited by gopostal - Thursday, 13-Jun-2013, 6:01 AM
 
MrLoathsomeDate: Thursday, 13-Jun-2013, 6:33 AM | Message # 25
Colonel
Group: Moderators
Messages: 151
Awards: 0
Reputation: 0
Status: Offline
I think Nelsona is correct, it needs to be in the server startup script as first mutator before mapvote is even loaded.

Then within mapvote, have it as first mutator in the list there also.

Other possibility is that version of Mapvote. is doing something that is conflicting with what I did in
the UT2U1 thing.

On my coop servers, I am running the old bdbmapvote302.    On the moocow servers I am using x3dfxMapvote.

Only other thing that I noticed, is that the UT2U1 mutator is first in the mutators list for the client side logs, but is NOT
for the server.    Looks like the crash happens when the mapvote is attempting to load UT2U1 there.....
Which would make sense, as that indicates that mapvote has loaded first, and that just wont work with the way I did this.
Sort of confirms Nelsona's observation.

Let us know what you find out.

*Edit.

I just took a look thru the OldSkool source code, just to make sure it was not doing something that could cause your issues, and to
make sure OldSkool was not trying to do the same type of thing.   It is not.    If it was, my Coop servers would have just died soon
as I put this on them.
Closest thing OldSkool does is in the SinglePlayer2.uc class, where it forces some weapons overrides  in Event PlayerLogin.

This should make OldSkool run better, I think.    Servers seem fine so far.

(I have NOT been looking at ANY code other than Epics for almost 2 years now when working on the new gametypes and other things.....)


Moo

 
Forum » Map Packs, Mods & Mutators » Mutators » UT2U1 - Must Have for all gametypes. (This fixes many issues, and makes the game run faster.)
Page 1 of 212»
Search:

Copyright MyCorp © 2017
Powered by uCoz