Page 1 of 2

Custom Map Fixes

Posted: Mon Apr 27, 2009 8:29 pm
by Shivaxi
I am currently working on a new server side mutator that will be fixing most, if not all of the custom map packs out there, for online play.  I'd like anyone who knows a map pack with a coop bug to tell me in this topic here, and I will fix it.  Tell me map pack, name of map, where and what needs to be fixed and why.

Maps currently fixed:

From The Tower of Shrakith'a:

Shrak1.unr:

- The door closing when you kill Nali (Fixed)
- The barn doors not opening when you kill Nali (Fixed) (Now activated by Player Bump)

From Attacked!

Attacked_3-1.unr:

- Door blocking the Titan room when a person goes in until Titan is killed (Fixed)

From Strange World:

Strange5.unr:

- Doors having to be opened from button behind wall (Fixed) (Now triggered by Player Bump.  This may not necessarily be needed, but people like myself have weapons being replaced in their server, so everyone may not have some homing missile weapons  :P)

From: The Episode Maps (Don't believe there was ever a title):

Episode3.unr:

- New PlayerStart spawns at beginning so people do not get stuck under elevator (This is only for the gametype xCoop so far, however I will be making compat for JCoopZ1, dCoop, and maybe others as well)

From Tentacle Hunter's Maps:

TheSwamp.unr:

- Door closing at end blocking end teleporter (Fixed)



All credit can not go to me however.  Special thanx to Dots for providing the base code.  Special thanx to Giygas for fixing the playerstart spawn code.


Re: Custom Map Fixes

Posted: Mon Apr 27, 2009 8:57 pm
by [§Ŕ] ŤhěxĐâŕkśîđěŕ
DasaCellars, at the place where there are lots of Kraal coming from the holes in the ceiling or the wall near the ceiling: there is a Behemoth behind a metal gate, and he blocks the gate if he comes near it. And if the gate doesn't open at the moment you kill the last Kraal you need to kill, the gate will remain blocked until an admin switches the map. The last Kraal should trigger the mover to be "On".

Re: Custom Map Fixes

Posted: Mon Apr 27, 2009 9:22 pm
by Zombie
TheDarkSider, I'll point out that DasaCellars is not a custom map. Besides, there is an existing fix for that and just about all original coop map block problems in DZMapM. If DZMapM contains more than you need just disable every option but 'bPreventLevelBlocks'.

Shivaxi, you can get a list of custom maps to fix and short descriptions by checking the readme file in CMapFixM (Custom Map Fix Mutator). ;)
CMapFixMv0.1


-Zombie

Re: Custom Map Fixes

Posted: Mon Apr 27, 2009 11:20 pm
by Jâçkrâßßit
I made some mutator like this that fixed the Duke4Now map pack (which I think is freaking awesome and pretty underrated). If you want I can send you the source which fixes the entire pack online and offline *there were ALOT of bugs in this one*

Re: Custom Map Fixes

Posted: Mon Apr 27, 2009 11:20 pm
by Leo T_C_K
On UT servers, the custom map fixing mutators were rather normal...even I made one....
3's server uses hell a lot of fixes including the maps you mentioned shivaxi...

Re: Custom Map Fixes

Posted: Tue Apr 28, 2009 12:29 am
by Shivaxi
TheDarkSider, I'll point out that DasaCellars is not a custom map. Besides, there is an existing fix for that and just about all original coop map block problems in DZMapM. If DZMapM contains more than you need just disable every option but 'bPreventLevelBlocks'.

Shivaxi, you can get a list of custom maps to fix and short descriptions by checking the readme file in CMapFixM (Custom Map Fix Mutator). ;)
CMapFixMv0.1


-Zombie

OMGWTFBBQPIE??!?! :o

When was somebody going to tell me this existed??

D*mn....everything I had (besides the Episode level) was already fixed....thanx Zombie ;D

This thread is useless now....ignore :P

Re: Custom Map Fixes

Posted: Tue Apr 28, 2009 1:56 am
by Jâçkrâßßit
yeah... but you can still use a mutator to do crazy stuff that doesn't normally happen in the map.... that can be a pretty WTF moment if done right..

Re: Custom Map Fixes

Posted: Wed Apr 29, 2009 7:12 pm
by Shivaxi
Oh, I did forget to mention: There is a serious bug in The Beta Maps converted by Dots that i guess he missed. It's in the map UB-Soledad. The part when you walk into the room, door closes behind you, and the Krall drop the spikey roof upon you...

That door doesn't re-open all the time for some odd reason, not sure what that is. It gets people stuck on my server all the time. So I'm changing the door to be TriggeredOnlyOnce as to not close again :P

Re: Custom Map Fixes

Posted: Wed Apr 29, 2009 7:59 pm
by GreatEmerald
Yea, when I played the map, I had to ghost through the door to continue...

Anyway, how do you make fixes for all the different maps? Don't servers need to have them first? Won't they get a "class not found" error or something of the likes?

Re: Custom Map Fixes

Posted: Wed Apr 29, 2009 8:25 pm
by [§Ŕ] ŤhěxĐâŕkśîđěŕ
TheDarkSider, I'll point out that DasaCellars is not a custom map. Besides, there is an existing fix for that and just about all original coop map block problems in DZMapM. If DZMapM contains more than you need just disable every option but 'bPreventLevelBlocks'.
Oh, I'm so stupid...

Re: Custom Map Fixes

Posted: Wed Apr 29, 2009 8:57 pm
by Zombie
Anyway, how do you make fixes for all the different maps? Don't servers need to have them first? Won't they get a "class not found" error or something of the likes?
Check for each map by Level.Title and/or filename (sometimes both necessary) to keep fixes specific. The fixes will have no dependancies to the maps if done correctly. Just be sure that no code directly references some custom class placed into a map. Most of the time that's easy because the problems are generally with existing Unreal class actors placed in maps (Mover, Trigger, Dispatcher, Teleporter) which only forms a dependancy to Unreal. If there is a custom class that needs to be accessed then one must use special means.


-Zombie

Re: Custom Map Fixes

Posted: Wed Apr 29, 2009 11:44 pm
by Shivaxi
The code I used originally by Dots in his BFix mutator looks like this:

Code: Select all

//=============================================================================
// CustomMapFixes.
//=============================================================================
class CustomMapFixes expands Mutator;

var vector NewVect;

function PostBeginPlay()
{
      SetTimer(0.1,False);
}
function Timer()
{
      local string S;
      local PlayerStart P;
      local xPlayerStart XP;
      local Mover M;

      S = GetURLMap();
      if( InStr(S,".")==-1 )
            S = S$".unr";
      if( S~="UB-Soledad.unr" )
      {
            M = Mover(DynamicLoadObject("UB-Soledad.Mover119",Class'Mover'));
            if( M!=None )
                  M.bTriggerOnceOnly = True;
                  M.GoToState('TriggerOpenTimed');
            M = Mover(DynamicLoadObject("UB-Soledad.Mover120",Class'Mover'));
            if( M!=None )
                  M.bTriggerOnceOnly = True;
                  M.GoToState('TriggerOpenTimed');
      }

      if( S~="episode3.unr" )
      {
            P = PlayerStart(DynamicLoadObject("episode3.PlayerStart1",Class'xPlayerStart'));
            if( P!=None )
                  P.bCoopStart = False;
                  P.bEnabled = False;
                  P.bSinglePlayerStart = False;

            NewVect.X=3834;
            NewVect.Y=2621;
            NewVect.Z=836;
            
            XP = Spawn(class'xCoop.xPlayerStart',,'',NewVect,rot(0,-16384,0));
      }
}

Re: Custom Map Fixes

Posted: Thu Apr 30, 2009 1:56 am
by Shivaxi
I just found another bug actually while playing on my server. In UB-Foundry, there's a big lift, a little bit after you overload the pressure in the pipes. For some reason, the 2 levers that trigger the lift are set to bTriggerOnceOnly = True.

So if you die when you go up, everyone else on the bottom is screwed.

Fix:

Code: Select all

      if( S~="UB-Foundry.unr" )
      {
            M = Mover(DynamicLoadObject("UB-Foundry.Mover9",Class'Mover'));
            if( M!=None )
                  M.bTriggerOnceOnly = False;
            M = Mover(DynamicLoadObject("UB-Foundry.Mover21",Class'Mover'));
            if( M!=None )
                  M.bTriggerOnceOnly = False;
      }

Re: Custom Map Fixes

Posted: Thu Apr 30, 2009 1:49 pm
by GreatEmerald
Hmm, interesting... So if I want to make an actor spawn only on a certain gametype, I can just check the game name, which is a string. Great, thanks!

Re: Custom Map Fixes

Posted: Thu Apr 30, 2009 2:52 pm
by Bane
Hmm, interesting... So if I want to make an actor spawn only on a certain gametype, I can just check the game name, which is a string. Great, thanks!
Only do that for custom game types. If you only want an actor to exist in deathmatch, check level.game to see if it is a deathmatchgame (if you want any type of deathmatch, including KoTH, Teamgame, and custom gametypes, do IsA. For vanilla only, compare level.game.class to class'deathmatchgame'). The only reason to use string comparison is to avoid dependencies on other packages. Checking strings usually isn't the best idea, partially because there is nothing stopping a custom gametype from using any string they want; for example, I believe every single variant of coop is called "Coop Game"

Re: Custom Map Fixes

Posted: Fri May 01, 2009 12:11 am
by Shivaxi
I just noticed that the CMapFix mutator only fixes the single player version of Attacked...not the Coop version :-/

Where did the coop version come from anyway? because most ppl I know have never heard of the coop version...but its here on Oldunreal :P

Re: Custom Map Fixes

Posted: Fri May 01, 2009 2:06 am
by Leo T_C_K
The coop version came from PHX clan.

Anyway these strings, the method .:..: uses is not my preferred one, I used a bit different method for my UT server...but the effect is same in the end..it doesn't have to be S something, it just can be simple "" string.

Re: Custom Map Fixes

Posted: Fri May 01, 2009 9:21 am
by GreatEmerald
Only do that for custom game types. If you only want an actor to exist in deathmatch, check level.game to see if it is a deathmatchgame (if you want any type of deathmatch, including KoTH, Teamgame, and custom gametypes, do IsA. For vanilla only, compare level.game.class to class'deathmatchgame'). The only reason to use string comparison is to avoid dependencies on other packages. Checking strings usually isn't the best idea, partially because there is nothing stopping a custom gametype from using any string they want; for example, I believe every single variant of coop is called "Coop Game"
I'm planning to use it for third party gametypes, and in UT3 only, and you can't have two gametypes named the same there.

Re: Custom Map Fixes

Posted: Fri May 01, 2009 9:45 am
by .:..:
Anyway these strings, the method .:..: uses is not my preferred one, I used a bit different method for my UT server...but the effect is same in the end..it doesn't have to be S something, it just can be simple "" string.
Indeed, nowdays I prefer eighter:

Code: Select all

S = string(Outer.Name);
if( S~="Nyleve" )
...
Or then:

Code: Select all

switch( Outer.Name )
{
case 'NyLeve':
      do some changes here...
      break;
case 'Dig':
      etc...
      break;
}

Re: Custom Map Fixes

Posted: Fri May 01, 2009 8:41 pm
by GreatEmerald
Hmm, interesting, but why Break? It would do the same without it too, right?

Re: Custom Map Fixes

Posted: Fri May 01, 2009 8:48 pm
by Bane
Hmm, interesting, but why Break? It would do the same without it too, right?
If you don't break out of each case, you will fall down to the next and execute those as well. So if the name was 'NyLeve', you would do NyLeve's stuff and then do Dig's stuff. That's usually not what you want.

Re: Custom Map Fixes

Posted: Fri May 01, 2009 9:14 pm
by Leo T_C_K
The case functions are rarely used, I used it only once or so and yes you ahve to use break after each of that, it is not classic function, well it is classic in uscript but not widely used.

Re: Custom Map Fixes

Posted: Fri May 01, 2009 10:52 pm
by Gizzy
Slightly off-topic

You can also use case for weapons with multiple modes too :P

EDIT:

On Attacked_1-2 (First Proper Level), If you enable the Emergency Power System, then go into the cannon control room (B1 I believe) that kills you if you enable the turrets, both doors become locked (B1 and B2), stating that the EPS needs to be activated (When you did it already)

Can also be annoying if the server gives players a large amount of starting health because if they survive the blast, they are stuck.

Re: Custom Map Fixes

Posted: Sun May 03, 2009 3:57 am
by Shivaxi
Ok well I think I'm going to release my converted Attacked maps for 225...since both Attacked and Attacked Coop were made with the UGold editor and have Upak binded to them....it's really annoying.

What the hell should I call it though....since Attacked Coop is already taken....maybe just Attacked 225 :P

Re: Custom Map Fixes

Posted: Sun May 03, 2009 3:28 pm
by Leo T_C_K
Ok well I think I'm going to release my converted Attacked maps for 225...since both Attacked and Attacked Coop were made with the UGold editor and have Upak binded to them....it's really annoying.

What the hell should I call it though....since Attacked Coop is already taken....maybe just Attacked 225 :P
They don't use upak and you can simply use zora's map converter and it won't cause mismatches.