Page 1 of 1

AutoSpectate (UMOD)

Posted: Fri May 03, 2013 11:55 am
by Wises
Well .. I stumbled across this little puppy which seems to have been around forever .. and thought.
thats pretty cool .. up/until recently I was not a fan of Umods.
readme wrote: ---------------------------------------------------------------
AutoSpectate by {PiN}Kev - August, 2004
Contact Info: {PiN}Hai-Ping on http://www.prounreal.com/forums
---------------------------------------------------------------

Instructions for the mods:


1. Unzip the files into UT's system folder

2. Join a server as a spec

3. click the mod item and watch some one.



AutoSpectate Features:

- Automatically turns with the player so you don't have to turn mouse

- Automatically goes to FC when some one picks up flag

- If 2 ppl have flags, and the FC you're watching dies, it will automatically go to the other.


Commands: * These are case sensitive and must be typed into console

mutate AFCOFF to turn off Auto FC feature. (For example if you wanted to watch ur buddy all map.)

mutate AFCON to turn Auto FC feature back on.


* Limitation: If a server is on linux and a player has box characters, the Auto FC feature will not work on him.
but because not everyone is a fanatic like moire.. I figured that I would compile it into a UMOD and link it to the servers for players to download and install easily?

Anyways.. here it is;

Mediafire -> AutoSpectate.UMOD

Re: AutoSpectate (UMOD)

Posted: Sun May 05, 2013 7:04 am
by Dr.Flay
Good to get the practice in with making UMODs, but Linux and Mac owners will hate you :pfff:

The advantages are it can be cleanly un-installed by running the UT "setup.exe" and any required lines can be added to the INI file.
If there are no lines to add, then you don't gain much.

Remember to always put the docs in a "help" folder, and try NOT to have a file just called "readme.txt" put in the main UT or Help folders, as it will over-write the UT readme.

I opt for including the raw files and the UMOD, when it is small, so people have the choice.
I always use the UMOD for models or skins, as it is quicker to get rid of them if I don't like it.

This may get a bit of use during testing. Nice find :tu:

Re: AutoSpectate (UMOD)

Posted: Wed Nov 28, 2018 12:29 am
by n1cc
thanks WotgrealExporter tool.

possible somehow get original names? not unknown, that cyphered?

Code: Select all

//================================================================================
// AutoSpectate.
//================================================================================

class AutoSpectate extends Info;

var PlayerPawn P;
var Rotator targRot;
var Rotator myRot;
var Rotator prevRot;
var bool bfoundflag;
var bool bviewingFC;
var string blueFC;
var string redFC;
var bool bautoFC;
var bool bAFCOFFmsg;
var bool bAFCONmsg;
var private bool ;
var private int ;
var private int ;
var int ydelta;
var int pdelta;
var private int ;
var private int ;
var int Offset;

function int  (int X, int Y, out int diff)
{
	local int newdiff;

	diff = UnknownFunction147(X,Y);
	newdiff = diff;
	if ( UnknownFunction132(UnknownFunction151(newdiff,20000),UnknownFunction150(newdiff,-20000)) )
	{
		newdiff = 20000;
	}
	return UnknownFunction145(UnknownFunction144(newdiff,newdiff),500000);
}

event Tick (float Delta)
{
	if ( UnknownFunction129(P.PlayerReplicationInfo.bIsSpectator) )
	{
		return;
	}
	if ( UnknownFunction119(P.ViewTarget,None) )
	{
		if ( UnknownFunction119(Pawn(P.ViewTarget),None) )
		{
			targRot = Pawn(P.ViewTarget).ViewRotation;
			myRot = P.ViewRotation;
			ydelta = (targRot.Yaw,myRot.Yaw,);
			pdelta = (targRot.Pitch,myRot.Pitch,);
			if ( UnknownFunction154(ydelta,-9999) )
			{
				();
				 = True;
			}
			if ( UnknownFunction151(Pawn(P.ViewTarget).Health,0) )
			{
				if ( UnknownFunction132(UnknownFunction130(UnknownFunction151(,0),UnknownFunction150(,33650)),UnknownFunction150(,-33650)) )
				{
					if ( UnknownFunction151(UnknownFunction146(ydelta,P.ViewRotation.Yaw),65536) )
					{
						P.ViewRotation.Yaw = 0;
						return;
					}
					UnknownFunction161(P.ViewRotation.Yaw,ydelta);
				} else {
					if ( UnknownFunction132(UnknownFunction130(UnknownFunction150(,0),UnknownFunction151(,-33650)),UnknownFunction151(,33650)) )
					{
						if ( UnknownFunction150(UnknownFunction147(P.ViewRotation.Yaw,ydelta),0) )
						{
							P.ViewRotation.Yaw = 65536;
							return;
						}
						UnknownFunction162(P.ViewRotation.Yaw,ydelta);
					}
				}
				if ( UnknownFunction132(UnknownFunction130(UnknownFunction151(,0),UnknownFunction150(,33650)),UnknownFunction150(,-33650)) )
				{
					UnknownFunction161(P.ViewRotation.Pitch,pdelta);
				} else {
					if ( UnknownFunction132(UnknownFunction130(UnknownFunction150(,0),UnknownFunction151(,-33650)),UnknownFunction151(,33650)) )
					{
						UnknownFunction162(P.ViewRotation.Pitch,pdelta);
					}
				}
				if ( UnknownFunction155(P.ViewRotation.Roll,0) )
				{
					P.ViewRotation.Roll = 0;
				}
			}
		}
	}
	Offset = UnknownFunction126(P.Player.Console.MsgText[P.Player.Console.TopLine],"mutate AFCOFF");
	if ( UnknownFunction130(UnknownFunction155(Offset,-1),UnknownFunction129(bAFCOFFmsg)) )
	{
		bautoFC = False;
		P.ClientMessage("Auto FC feature off");
		bAFCOFFmsg = True;
		bAFCONmsg = False;
	}
	Offset = UnknownFunction126(P.Player.Console.MsgText[P.Player.Console.TopLine],"mutate AFCON");
	if ( UnknownFunction130(UnknownFunction155(Offset,-1),UnknownFunction129(bAFCONmsg)) )
	{
		bautoFC = True;
		P.ClientMessage("Auto FC feature on");
		bAFCOFFmsg = False;
		bAFCONmsg = True;
	}
	if ( UnknownFunction130(bautoFC,UnknownFunction129()) )
	{
		Offset = UnknownFunction126(P.Player.Console.MsgText[P.Player.Console.TopLine],"captured the red flag!");
		if ( UnknownFunction155(Offset,-1) )
		{
			return;
		}
		Offset = UnknownFunction126(P.Player.Console.MsgText[P.Player.Console.TopLine],"captured the blue flag!");
		if ( UnknownFunction155(Offset,-1) )
		{
			return;
		}
		Offset = UnknownFunction126(P.Player.Console.MsgText[P.Player.Console.TopLine],"has the red flag!");
		if ( UnknownFunction155(Offset,-1) )
		{
			redFC = UnknownFunction128(P.Player.Console.MsgText[P.Player.Console.TopLine],UnknownFunction147(Offset,1));
		}
		Offset = UnknownFunction126(P.Player.Console.MsgText[P.Player.Console.TopLine],"has the blue flag!");
		if ( UnknownFunction155(Offset,-1) )
		{
			redFC = UnknownFunction128(P.Player.Console.MsgText[P.Player.Console.TopLine],UnknownFunction147(Offset,1));
		}
		Offset = UnknownFunction126(P.Player.Console.MsgText[P.Player.Console.TopLine],"Failed to change view");
		if ( UnknownFunction155(Offset,-1) )
		{
			redFC = "";
			blueFC = "";
		}
		if ( UnknownFunction129(bviewingFC) )
		{
			if ( UnknownFunction114(P.ViewTarget,None) )
			{
				if ( UnknownFunction123(redFC,"") )
				{
					();
				} else {
					if ( UnknownFunction123(blueFC,"") )
					{
						();
					}
				}
			} else {
				if ( UnknownFunction114(Pawn(P.ViewTarget),None) )
				{
					if ( UnknownFunction123(redFC,"") )
					{
						();
					} else {
						if ( UnknownFunction123(blueFC,"") )
						{
							();
						}
					}
				} else {
					if ( UnknownFunction114(Pawn(P.ViewTarget).PlayerReplicationInfo.HasFlag,None) )
					{
						if ( UnknownFunction122(redFC,Pawn(P.ViewTarget).PlayerReplicationInfo.PlayerName) )
						{
							redFC = "";
						} else {
							if ( (redFC) )
							{
								();
							} else {
								if ( UnknownFunction122(blueFC,Pawn(P.ViewTarget).PlayerReplicationInfo.PlayerName) )
								{
									blueFC = "";
								} else {
									if ( (blueFC) )
									{
										();
									}
								}
							}
						}
					}
				}
			}
			UnknownFunction280(0.31,False);
			bviewingFC = True;
		}
	}
}

function bool  (string S)
{
	local int i;
	local TournamentGameReplicationInfo ptgri;

	ptgri = TournamentGameReplicationInfo(P.GameReplicationInfo);
	i = 0;
	if ( UnknownFunction150(i,32) )
	{
		if ( UnknownFunction114(ptgri.PRIArray[i],None) )
		{
			goto JL00C8;
		}
		if ( ptgri.PRIArray[i].bIsSpectator )
		{
			goto JL00BE;
		}
		if ( UnknownFunction119(ptgri.PRIArray[i].HasFlag,None) )
		{
			if ( UnknownFunction122(ptgri.PRIArray[i].PlayerName,S) )
			{
				return True;
			} else {
				return False;
			}
		}
		UnknownFunction165(i);
		goto JL0020;
	}
	return False;
}

function  ()
{
	P.ViewPlayer(redFC);
	P.ViewRotation = Pawn(P.ViewTarget).ViewRotation;
}

function  ()
{
	P.ViewPlayer(blueFC);
	P.ViewRotation = Pawn(P.ViewTarget).ViewRotation;
}

function  ()
{
	P.ClientMessage("-----------------------------------------");
	P.ClientMessage("MAC Addresses don't match.");
	P.ClientMessage("AutoSpec will cease to function.");
	P.ClientMessage("-----------------------------------------");
}

function Timer ()
{
	bviewingFC = False;
}

function setpawn (PlayerPawn o)
{
	P = o;
}

defaultproperties
{
    bautoFC=True

}


Re: AutoSpectate (UMOD)

Posted: Wed Nov 28, 2018 12:44 am
by SC]-[WARTZ_{HoF}
Used UTPT instead of wotgrealexporter.

Re: AutoSpectate (UMOD)

Posted: Wed Nov 28, 2018 1:12 am
by papercoffee
n1cc wrote:thanks WotgrealExporter tool.
Last post was Sun May 05, 2013 ... please look at the date of the post and consider the possibility that the thread starter won't read your answer.
No Necrobumps please.

Re: AutoSpectate (UMOD)

Posted: Wed Nov 28, 2018 9:38 am
by n1cc
anyway if not answer some1 answer, i not ask his code, or better create same kind new post instead?

Re: AutoSpectate (UMOD)

Posted: Wed Nov 28, 2018 1:04 pm
by papercoffee
Well, to be true ...I didn't understand what's the purpose of your post.
If it's additional informations to solve the issue that's some kind of OK. Even so it's useless because the thread starter won't read it if he is no longer active.

So, that's why I said, consider if it's useful.

Better would be, to start a new thread and refer and link to this old thread.

Re: AutoSpectate (UMOD)

Posted: Wed Nov 28, 2018 8:02 pm
by OjitroC
papercoffee wrote:Well, to be true ...I didn't understand what's the purpose of your post.
n1cc is asking if anyone knows what the functions are in AutoSpectate because the name are obfuscated - UTPT gives a little more info than wotgealexporter but not a lot more. A new thread would, of course, be much better.