AutoSpectate (UMOD)

Need some nice Mods? Here, you are right!
Post Reply
User avatar
Wises
Godlike
Posts: 1089
Joined: Sun Sep 07, 2008 10:59 am
Personal rank: ...

AutoSpectate (UMOD)

Post 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
Attachments
AutoSpectate.7z
AutoSpectate UMOD Compiled by Wises.
(3.49 KiB) Downloaded 257 times
User avatar
Dr.Flay
Godlike
Posts: 3347
Joined: Thu Aug 04, 2011 9:26 pm
Personal rank: Chaos Evangelist
Location: Kernow, UK
Contact:

Re: AutoSpectate (UMOD)

Post 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:
n1cc
Novice
Posts: 9
Joined: Fri Nov 02, 2018 4:18 am

Re: AutoSpectate (UMOD)

Post 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

}

SC]-[WARTZ_{HoF}
Adept
Posts: 426
Joined: Tue Feb 21, 2012 7:29 pm

Re: AutoSpectate (UMOD)

Post by SC]-[WARTZ_{HoF} »

Used UTPT instead of wotgrealexporter.
Image
Image
Image
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: AutoSpectate (UMOD)

Post 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.
n1cc
Novice
Posts: 9
Joined: Fri Nov 02, 2018 4:18 am

Re: AutoSpectate (UMOD)

Post by n1cc »

anyway if not answer some1 answer, i not ask his code, or better create same kind new post instead?
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: AutoSpectate (UMOD)

Post 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.
User avatar
OjitroC
Godlike
Posts: 3605
Joined: Sat Sep 12, 2015 8:46 pm

Re: AutoSpectate (UMOD)

Post 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.
Post Reply