Interest in map patcher mutator?

Search, find and discuss about Mutators!
User avatar
Barbie
Godlike
Posts: 2792
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: Interest in map patcher mutator?

Post by Barbie »

Aldebaran wrote:For example some map names are missing in UT Server Browser (look screenshot).
I've found that in the UT script sources (UdpServerQuery.uc):

Code: Select all

// Return a string of important system information.
function string GetInfo() {
	local string ResultSet;
[...]
	// The map/level title
	ResultSet = ResultSet$"\\maptitle\\"$Level.Title;
	// Map name
	ResultSet = ResultSet$"\\mapname\\"$Left(string(Level), InStr(string(Level), "."));
[...]
This means if a ListFactory server is asking an UT server for its information, the UT server is sending back "string(Level)" until the first dot in it as a map name. Example: if I run the map "MH-!!![Alien-Wars]V1", string(Level) results in "MH-!!![Alien-Wars]V1.LevelInfo0". Because the map name is a file name and therefore it can contain any character (except some depending on operation system), some "bad" characters may find their way into the answer string of the UT server. "Bad" characters are all those who have a special meaning, for example the backslash. The ListFactory server is then responsible for processing this answer string. Maybe the ListFactory server uses just "LevelInfo.Title" which might be an empty string.
(I've found some information concerning "GameSpy Uplink Specification" on oldunreal Wiki.)
Aldebaran wrote:But also some names there are wrong, for example when playing map MH-Lordz-beta in the browser tab you find "MH-Breathe" as map name at this server position.
The ListFactory server you are using at this moment has taken "LevelInfo.Title" instead of the file name:
MH-Lordz-beta.jpg
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Interest in map patcher mutator?

Post by sektor2111 »

UT has the feature "Title" because file-name must follow some OS rules for preventing troubles. Tile in exchange can be a bit more... developed. Some map-makers are unable to edit default Level properties and even they add new LevelInfo-s for more stupid content added. Whoever makes a map - that map has a TITLE regarding to file name which can be even something like "DM-4343dfg.unr". If map has no title defined, something should deliver a minimal info rather that a stupid empty space. I must agree that such a patcher mutator might have a very common feature/checker to add some Title if nothing is there causing player to gain some info in browser rather than a Nothing. Even I prefer even a custom config for giving even a lousy name if author did not bother to setup things properly.
User avatar
Gadavre
Skilled
Posts: 169
Joined: Sun Jan 18, 2015 7:55 am

Re: Interest in map patcher mutator?

Post by Gadavre »

i think it would be better, If mutator would fix bsp errors. Many classic maps have this errors(bsp holes, transparent textures).
The 2016th year, but nobody has tried to fix errors of this great game
Attachments
deck16.jpg
User avatar
Barbie
Godlike
Posts: 2792
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: Interest in map patcher mutator?

Post by Barbie »

Gadavre wrote:i think it would be better, If mutator would fix bsp errors.
Impossible, AFAIK. The geometry is created while building the map and then stored in the map. It cannot be changed on the fly.
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Interest in map patcher mutator?

Post by sektor2111 »

This sounds to me like: Let's make a map doesn't matter how because coders will fix our dumb trash.

For tiny corrections like I said I can do a mutator modulated. The problem and question stays: WHY ? Will only trigger mappers to never learn the right way. Small common mistakes and "other options" might have a deal but not private corrections. Seriously until this moment I don't need "fixes" in Levels which I did. The only patcher needed is "mapper patcher" in order to read tutorials and doing things properly rather than forcing a "clean-team" to wipe floor for them. By writing pages of scripts and checks, it takes probably twice of time spent for building a broken Level.

Aside: If Game-Engine can do what Editor-Engine can do this means everything goes down-hill - several things are not supposed to get a fix in run-time. That's why Editor is a Level Editor and Server is just a Server serving Level for players.
User avatar
papercoffee
Godlike
Posts: 10443
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

Re: Interest in map patcher mutator?

Post by papercoffee »

sektor2111 wrote:This sounds to me like: Let's make a map doesn't matter how because coders will fix our dumb trash.
:loool:
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Interest in map patcher mutator?

Post by sektor2111 »

And now getting over such "smarty" requests, I have a question toward fixing an UScripted buggy thing.

Imagine a TriggerControl door - as it do works pretty nice for players, but set for any Pawn.
Scenario: gasbag, manta (fliers more often) if are killed in Trigger area - door will get rammed remaining open and some Accessed None comes to fill the happiness. Some half of job is being solved in MH2 which I'm probing and using a map done on purpose for this test. TriggerOpenTimed some times are bugging A.I., else I have to figure right timings with mover.
I'm saying half of job because it's still happening and I'm really confused why these pawns flying are doing that mess. Gasbag has even a "bCanOpenDoors" if memory doesn't cheat me so they are supposed to operate some jobs.

Secondary view - probably I have to rewrite trigger and not mover - Pawn killed during PHS_Flying seems to bug Mover VIA trigger at this point.

Third View - Spawning an "assistant" when mover is being open and... trying an UnTrigger thing, or just closing it... or testing mover range for instigator and aggressively check if pawn dies to call UnTrigger. I think Function Untrigger is not called automatically for these pawns killed in Trigger radius.

Mover has UScript code, Trigger the same - I believe the solution is doable. Any thoughts ?
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Interest in map patcher mutator?

Post by sektor2111 »

Um... bump regarding to bugs which nobody ask fixes. I don't want to say that I did a fix but, at this moment it looks good.
TriggerControl doors for all pawns. Purpose trying to discard Accessed Nones from mover and doing operations in other actor owned by Mover with is hooking mover job when gets triggered. It's probably a solution for multiple Levels as I could see so far
We have the mutator calling stuff:

Code: Select all

event PreBeginPlay()
{
...
	SolveTriggerControl();
...
}

function SolveTriggerControl()
{
	local Mover M;

	foreach AllActors( class'Mover',M )
	{
		if ( M.InitialState == 'TriggerControl' && !M.bTriggerOnceOnly ) //Check movers non-critical in first stage
		{
			Spawn(class'MDummy',M,M.Tag,M.Location ); //Attach a Server-Only Actor and leave it to initialize itself
		}
	}
}
MDummy can be let's say our Mover doing a half of Mover job. It's a "little" stuff so I put that in spoiler.
Spoiler

Code: Select all

class MDummy expands Actor;

var bool bIsOpen; //Controll me if Open - even if mover has such
var Actor Owi, Instigated; //vars half used - might be wise Mover instead of Actor

event PreBeginPlay() //No relevance check = nothing to do here
{
}

event PostBeginPlay()
{
	local Actor A; //We have to see other "smarty" setup by checking several actors
	local bool bIsDefaultRammed; //Tweak not applicable - mover fixed externally or... setup is being fixed , etc.
	local int I; //Dispatcher things

	log (Self.Name@ perform setup...);
	Disable('Trigger'); //first disable everything and let alone mover for a while
	Disable('UnTrigger');
	if ( Mover(Owner) != None )
	{
		foreach AllActors ( class 'Actor',A )
		if ( A != Self && A != Mover(Owner) && A.Event == Mover(Owner).Tag )
		{
			if ( Pawn(A) != None ) //Pawn having this Event ? Wrong Mover ! - monster dies opening door and DONE.
			{
				Mover(Owner).InitialState = 'TriggerOpenTimed'; //This is TriggerOpenTimed
				Mover(Owner).MoverEncroachType = ME_IgnoreWhenEncroach; //No return...
				Mover(Owner).bTriggerOnceOnly = True; //And a single time...
				bIsDefaultRammed = True; //Won't capture this one
				break; //End of story
			}
			if ( Trigger(A) != None )
			{
				if ( Trigger(A).bTriggerOnceOnly ) //If a trigger looks "smarty"
				{
					Mover(Owner).InitialState = 'TriggerOpenTimed'; //The same setup
					Mover(Owner).MoverEncroachType = ME_IgnoreWhenEncroach;
					Mover(Owner).bTriggerOnceOnly = True;
					bIsDefaultRammed = True; //The same as above
					break;
				}
				else
				{
					log (Self.Name@Found a Trigger for@Mover(Owner)$"..." ); //Else it looks a good one
					break;
				}
			}
			if ( Dispatcher(A) != None )
			{
				for (i=0;i<8;i++)
				{
					if ( Dispatcher(A).OutEvents[i] == Mover(Owner).Tag  ) //Dispatcher is not pawn anyway - bad setup
					{
						log ("Mover "$Mover(Owner)$" is just shit with "$Mover(Owner).InitialState$". Will attack InitialState and Encroaching method to avoid other error.");
						log ("Being triggered by "$Dispatcher(A)$" having event OutEvents["$i$"]: "$Dispatcher(A).OutEvents[i]$", without to mind console, will be properly set.");
						Mover(Owner).InitialState = 'TriggerOpenTimed';
						Mover(Owner).MoverEncroachType = ME_IgnoreWhenEncroach;
						Mover(Owner).bTriggerOnceOnly = True;
						bIsDefaultRammed = True; //Also Nasty
						break;
					}
				}
			}
			if ( Counter(A) != None )
			{
				log ("Mover "$Mover(Owner)$" is just shit with "$Mover(Owner).InitialState$". Will attack InitialState and Encroaching method to avoid other error.");
				log ("Being triggered by "$Counter(A)$" with Event "$Counter(A).Event$", will be properly set.");
				Mover(Owner).InitialState = 'TriggerOpenTimed';
				Mover(Owner).MoverEncroachType = ME_IgnoreWhenEncroach;
				Mover(Owner).bTriggerOnceOnly = True;
				bIsDefaultRammed = True; //Also Nasty - and probably very nasty
				break;
			}
		}
		if ( !bIsDefaultRammed )
		{
			if ( Tag != Owner.Tag )
				Tag = Owner.Tag;
			log (Self.Name@hooking Mover@Owner.Name@with Tag >@Tag);
			Owi = Mover(Owner);
		}
		else
			log(Self.Name@Quiting > Mover in cause doesn't look like a normal door, so it has been screwed...);
	}
}

function Trigger ( Actor Other, Pawn EventInstigator ) //Available soon
{
	if ( Other != None )
		Instigated = Other;
	if ( Bot(EventInstigator) != None )
		Bot(EventInstigator).SpecialPause = Mover(Owner).DelayTime + Mover(Owner).MoveTime;
	if ( Mover(Owner).bOpening )
		GoTo AlreadyOpen;
	GoToState ('MovTracking','Opening'); //Just Open Mover Natively without using its trigger - I am the trigger
AlreadyOpen:
}

function UnTrigger ( Actor Other, Pawn EventInstigator ) //the same
{
	if ( Instigated != None )
	{
		if ( Instigated != Other )
			GoTo WontClose;
		if ( Instigated == Other )
			Instigated = None;
	}
	if ( !Mover(Owner).bOpening )
		GoTo WontClose;
	GoToState('MovTracking','CheckingStatus');
WontClose:
}

Auto State MovTracking
{
Begin:
	Sleep(4.00); //sleeping a bit
	if ( Owi != None )
	{
		if ( Owi.InitialState != 'TriggerControl' ) //If during this time a tweak changed it
			GoTo('NoDeal'); //Will discard any deal
		Owi.Tag = Self.Name; //Put a bad Tag to mover to not react at trigger
		Enable('Trigger'); //Enable me
		Enable('UnTrigger');
	}
	else
		GoTo('NoDeal'); //Else hold
	GoTo ('Pausing'); //Now stay Latent

Checking:
	if ( Instigated == None || ( Instigated != None && VSize( Instigated.Location-Location) > 200 ) ) //No Actor or actor is pretty far ?
	{
		Instigated = None; //Null it anyway
		Owi.GoToState( 'TriggerControl','Close' ); //Close this Mover
		if ( bIsOpen )
			bIsOpen = False; //Is not open anymore
		GoTo('Pausing'); //Take a break again
	}
	GoTo ('CheckingStatus'); //Else watch it

Opening:
	Mover(Owner).SavedTrigger = Self; //Put me as a saved Trigger
	Owi.GoToState ('TriggerControl','Open'); //Open it
	bIsOpen = True; //Opened
	Sleep(Mover(Owner).DelayTime + Mover(Owner).MoveTime + 1.00); //Wait in here

CheckingStatus:
	Sleep (0.5); //Being not in a rush
	if ( bIsOpen || Mover(Owner).bOpening ) //If it's still open loop checking - else stay
		GoTo('Checking');

Pausing: 
	Stop;

NoDeal:
	Disable('Trigger');
	Disable('UnTrigger');
	Stop;
}

defaultproperties
{
	bHidden=True //This is hidden
	RemoteRole=ROLE_None //Not for player
	CollisionHeight=0 //small
	CollisionRadius=1 //circle
	bMovable=False //Not gonna move
}
Since Owner exist, I did not write many sanity checkers because I don't recall a mover being removed...
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: Interest in map patcher mutator?

Post by Higor »

XCGE Script patcher + dynamic arrays (or script hashbins) will work wonders for these doors.
Shall I do it?
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Interest in map patcher mutator?

Post by sektor2111 »

Yes ! Because On-Line randomly a left-open door does still occur, not that often but still... something is not in timing.

Edit:
I've modified solution above because of some Crappy level as MH-The-Ancients whatever. A bumpOpenTimed unreachable button will hit an OnceOnly RoundRobin. This RobinHood which is not pawn opens a door which Won't close due to default Mover Bug - by luck map works somehow. All the rest are stupidly set like that. I think I will hook Movers linked with a default Trigger else other such "smarty"-shite setups will make a break if mover reacts correctly "UnTriggered". As matter of fact it looks like these movers which are not triggered normally as doors can be set "OnceOnly" and TriggerOpenTimed without a problem and cleaning console as well.

Post note: I'll screw map in cause not because of Movers as much as for stupidity in creating 32000+ useless ReachSpecs (based on history about wrapping actors) and NOT A SINGLE pathetic red PATH to end - poor cube drawer, how desperate has build paths over and over and over, and Bot won't end that map in the way how it was set. I believe I need a revision in those files UNR containing word MonsterWayPoint because probably 50% of them are properly bugged by guessing not mapping. If I'm having an English problem these dudes were having not Only English problems in reading tutorials, but they were enough ignorant at some stuff already done and which could be an example in how to not mooing at console...

Edit:
Yes, from 641.817 bytes I've got by cleaning the mess 405.000 bytes and redirect in LZMA format takes 88.046 bytes. Pretty sure can be even smaller still having too many PathNodes...
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Interest in map patcher mutator?

Post by sektor2111 »

Bumping ball here a bit.
Due to what I did last time, I cannot call that small mutator a pathing toy as long as is doable more than some fixing around paths, even some tweaks are doable - so this is probably a MAP-PATCHER a la sektor. Before to show something in public, I might be interested about a few private opinions if anyone wants to hit a try - so to speak, other testers - stuff uses XC_Engine of course. In my environment I could run this thing not a single time. I gotta admit I did not use any Nexgen in testing stage. I will use it when it will go fixed because I do not intend to work 6 months for dodging away from Nexgen plonks.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Interest in map patcher mutator?

Post by sektor2111 »

I went to download (around 12 hours) for some "maps" suitable for patcher modules, yes, download was slow related to MH stuff having 9 GB. It's a server there so to speak, if any of you is annoyed by that download taking ages (Medor is hosting it) I will give you a link to my GDrive - probably way faster. Link is not public... I don't need other copyright debates even if that stuff is mainly by community 90%. Given that it is a COPY of UT after all which can be used as player, link is not subject for public or I have to remove all executables leaving only custom stuff there (MH and maps).
Post Reply