Nekratech Screen ~ Zanaveth's Screen Component

Discussions about Coding and Scripting
Post Reply
User avatar
Saya-chan
Adept
Posts: 446
Joined: Mon Jun 02, 2008 10:46 am
Personal rank: Former UT99 modder
Location: Vigo, Galicia
Contact:

Nekratech Screen ~ Zanaveth's Screen Component

Post by Saya-chan »

Here's a very interesting script I made for use on maps:

http://www.mediafire.com/?nnj2dzmozkz

I don't have much time to explain, so make sure you read the readme files.

Basically, It's a totally original scripted screen made from scratch in an entire week or so.
You can use it on any map, but please give credit...
Image
  ~♥~ Bless the Cute Emperor ~♥~
User avatar
GenMoKai
Godlike
Posts: 2896
Joined: Tue Mar 18, 2008 9:39 pm
Personal rank: Mapper
Location: Netherlands, the land of cheese and weed!

Re: Nekratech Screen ~ Zanaveth's Screen Component

Post by GenMoKai »

Maybe its handy to give some information... you could put your ReadMe file here... its 3 seconds of work onlu
Image
EAT THOSE FRIGGIN BANANAS !!!!!
1000 MPH Studios MAY NOT play any ut99.org community mappack 2 map without George W. Bush explicit permission
User avatar
Saya-chan
Adept
Posts: 446
Joined: Mon Jun 02, 2008 10:46 am
Personal rank: Former UT99 modder
Location: Vigo, Galicia
Contact:

Re: Nekratech Screen ~ Zanaveth's Screen Component

Post by Saya-chan »

Here it is:

Code: Select all

How to use
----------

Each screen has:

base texture
8 individual scripted textures
dummy texture

On the map, place any of the scripted textures you like
on a surface. You can use the 'dummy' texture to correctly
adjust panning and scaling on the surface.

After the texture is placed, add a X_AdvScriptedTexture actor,
preferably as near as possible to the surface. Configure it and
it'll be ready to go.

For a list of supported colors, check the 8bit_ubxmasterized.png palette.

How to configure
----------------

Here's the tricky part...
Note: Some special techniques and other stuff aren't explained here. You should check the scripts to learn 'em.

Elements -> 32-element array of screen elements

 -bAddColor -> Should this element have colored text?
 -bCentered -> Center the entire element at the selected coords? (Disabled for progress bars)
 -bCountZ -> For map elements, should player marks be scaled according to height of player?
 -bDrawStatsOnMap -> For map elements, should the name and location of each player be included in addition to the coords?
 -bMasked -> Should the element texture be masked?
 -bOverrideTxt -> For meta-texts, should the text be overriden automatically with a predefined stats format?
 -bScroll -> Should the element be scrolled? (Disabled for maps and progress bars. Also, who would scroll a map?)
 -bScrollV -> Scroll vertically instead of horizontally?
 -bShowDeaths -> If bOverrideTxt is true, draw times player died
 -bShowHealth -> " "                 " ", draw player health
 -bShowName -> " "                 " ", draw player's name
 -bShowScore -> " "                 " ", draw player's score
 -bShowTeam -> " "                 " ", draw player's team (if on a team game)
 -bShowWeapon -> " "                 " ", draw player's currently selected weapon
 -bUseMe -> Should this element be used?
 -CenterZ -> Z height at which the players on map should be drawn at normal size
 -ColorAdd -> Text color (Check the 8bit_ubxmasterized.png palette)
 -ExtentsXn -> Negative x extents of the map
 -ExtentsXp -> Positive x extents of the map
 -ExtentsYn -> Negative y...
 -ExtentsYp -> Positive y...
 -FontSize -> Tricky name. Write the full class name of the font (for example "Engine.SmallFont")
 -Img -> Texture used for the element
 -PosX -> Position in texture X coords
 -PosX -> Position in texture Y coords
 -ScaleAddZ -> Multiplier for scaling of players on a map according to their height (never use 0 or less)
 -ScrollRate -> Rate in texels per tick the element scrolls at. (for ignorants: texels are texture pixels)
 -SizeX -> Size multiplier for the element image in X axis
 -SizeY -> Size multiplier for the element image in Y axis
 -Source -> Source for metatext/metaimage (Names are pretty self-explanatory)
 -TeamIcons (5 textures) -> Textures used for each team on map (the last one is used if no team is specified for a player)
 -Text (50 lines) -> You can write as many lines as you want. If you want to add some separation between lines, you'll have to leave some lines blank between 'em.
 -Type -> Element type (Names are self-explanatory)
 Recent additions:
 -bInscroll -> Scroll the texture inside its drawing area? (Disabled for progress bars and maps)
 -bTile -> Should the texture be tiled?
 -InscrollU, InscrollV -> Scroll rates inside texture area in texels.
 -ProgressType -> Progress bar type. (Self-explanatory names) (Note: Textures will be mirrored in U and/or V depending on the type)
 -Source2 -> Source for progress bars. (Self-explanatory, too)
 -TileSizeX, TileSizeY -> divisors for tile sizes. The higher the numbers, the smaller the tiles.

MaxDetectionRange -> Max range at which this screen (the actor, not the surface) will look for the nearest player.
ScriptedTexture (In 'ClientScriptedTexture') -> Scripted texture used for the screen (you may use any of the predefined ones, if you want to make one, read below...)
UpdateRate -> Delay in ticks at which information updates. Put a 0 to update constantly, causing a major slowdown when watching the screen. Higher values, like 40 or 100 should be good unless you need faster updates (for example, on a scrolling message). (1 tick equals approximately 0.01 or 0.001 seconds depending on your current FPS)

Randomizer variables (Use the defaults as a reference):

 -AmplitudeFloat -> Base amplitude of randomizer variation.
 -AmplitudeInt -> The same.
 -AmplitudePct1 -> The same...
 -AmplitudePct2 -> ...
 -AmplitudePct3 -> ...
 -AmplitudeSin1 -> ...
 -AmplitudeSin2 -> ...
 -AmplitudeSin3 -> ..
 -AverageFloat -> Average value for random decimal number.
 -AverageInt -> ""                    "" integer number.
 -AveragePct1 -> ""                    "" 2-pass percentage.
 -AveragePct2 -> ""                    "" 4-pass percentage.
 -AveragePct3 -> ""                    "" 6-pass percentage.
 -AverageSin1 -> ""                    "" 2-pass sinusoidal fluctuation.
 -AverageSin2 -> ""                    "" 4-pass sinusoidal fluctuation.
 -AverageSin3 -> ""                    "" 8-pass sinusoidal fluctuation.
 -bUseRandomizer -> Enable if you're going to use any of the randomized numbers on your screen. (This option was added to speed up some screens)
 -bUse11 -> Enable random float 1
 -bUse12 -> Enable random float 2
 -bUse13 -> Enable random float 3
 -bUse14 -> Enable random float 4
 -bUse21 -> Enable sin fluct 2-pass 1
 -bUse22 -> Enable sin fluct 2-pass 2
 -bUse23 -> Enable sin fluct 2-pass 3
 -bUse24 -> Enable sin fluct 2-pass 4
 -bUse31 -> Enable sin fluct 4-pass 1
 -bUse32 -> Enable sin fluct 4-pass 2
 -bUse33 -> Enable sin fluct 4-pass 3
 -bUse34 -> Enable sin fluct 4-pass 4
 -bUse41 -> Enable sin fluct 8-pass 1
 -bUse42 -> Enable sin fluct 8-pass 2
 -bUse43 -> Enable sin fluct 8-pass 3
 -bUse44 -> Enable sin fluct 8-pass 4
 -bUse51 -> Enable random int 1
 -bUse52 -> Enable random int 2
 -bUse53 -> Enable random int 3
 -bUse54 -> Enable random int 4
 -bUse61 -> Enable percent fluct 2-pass 1
 -bUse62 -> Enable percent fluct 2-pass 2
 -bUse63 -> Enable percent fluct 2-pass 3
 -bUse64 -> Enable percent fluct 2-pass 4
 -bUse71 -> Enable percent fluct 4-pass 1
 -bUse72 -> Enable percent fluct 4-pass 2
 -bUse73 -> Enable percent fluct 4-pass 3
 -bUse74 -> Enable percent fluct 4-pass 4
 -bUse81 -> Enable percent fluct 8-pass 1
 -bUse82 -> Enable percent fluct 8-pass 2
 -bUse83 -> Enable percent fluct 8-pass 3
 -bUse84 -> Enable percent fluct 8-pass 4
 -FreqPct1 -> Average frequency for 2-pass percentage.
 -FreqPct2 -> Average frequency for 4-pass percentage...
 -FreqPct3 -> ...
 -FreqSin1 -> ...
 -FreqSin2 -> ...
 -FreqSin3 -> ...

Text replacement
----------------

You can use some special wildcards on your texts, which will be replaced when messages are shown, these are:

-Global:

 - %% -> the '%' symbol.

 - %am -> Server admin
 - %ah -> his/her (admin)
 - %lp -> Local player (You)
 - %lh -> his/her (local player)
 - %st -> Player in lead
 - %sh -> ...
 - %nd -> Second in lead
 - %nh -> ...
 - %rd -> Third
 - %rh -> ...
 - %fs -> Last player
 - %fh -> ...
 - %th -> Current hour (local)
 - %tm -> Minute
 - %ts -> Second
 - %dd -> Day
 - %do -> Day (+ordinal (st,nd,rd,th))
 - %dm -> Month
 - %dy -> Year
 - %dw -> Day of week
 - %gt -> Gametype
 - %ln -> Map name
 - %la -> Map author
 - %svn -> Server name
 - %pls -> Players on map
 - %fps -> Estimated FPS
 - %timestamp -> Full timestamp (mm/dd/yy hh:mm:ss)
 - %offline -> puts a "(offline)" if server is ofline, else it's left blank

-Meta-texts only:
 
 - %wn -> source player name
 - %wg -> his/her
 - %wj -> him/her
 - %ww -> current weapon
 - %ws -> score
 - %wd -> deaths
 - %wh -> health
 - %wt -> team

-Randomizer (Explained more deeply below):

 - %zrndfloat1 -> random float number 1
 - %zrndfloat1 -> random float number 2
 - %zrndfloat1 -> random float number 3
 - %zrndfloat1 -> random float number 4
 - %zsinflctA1 -> fluctuant sin number (2-pass) 1
 - %zsinflctA1 -> fluctuant sin number (2-pass) 2
 - %zsinflctA1 -> fluctuant sin number (2-pass) 3
 - %zsinflctA1 -> fluctuant sin number (2-pass) 4
 - %zsinflctB1 -> fluctuant sin number (4-pass) 1
 - %zsinflctB1 -> fluctuant sin number (4-pass) 2
 - %zsinflctB1 -> fluctuant sin number (4-pass) 3
 - %zsinflctB1 -> fluctuant sin number (4-pass) 4
 - %zsinflctC1 -> fluctuant sin number (8-pass) 1
 - %zsinflctC1 -> fluctuant sin number (8-pass) 2
 - %zsinflctC1 -> fluctuant sin number (8-pass) 3
 - %zsinflctC1 -> fluctuant sin number (8-pass) 4
 - %zrndint1 -> random integer 1
 - %zrndint1 -> random integer 2
 - %zrndint1 -> random integer 3
 - %zrndint1 -> random integer 4
 - %zpctflctA1 -> fluctuant sin percentage (2-pass) 1
 - %zpctflctA1 -> fluctuant sin percentage (2-pass) 2
 - %zpctflctA1 -> fluctuant sin percentage (2-pass) 3
 - %zpctflctA1 -> fluctuant sin percentage (2-pass) 4
 - %zpctflctB1 -> fluctuant sin percentage (4-pass) 1
 - %zpctflctB1 -> fluctuant sin percentage (4-pass) 2
 - %zpctflctB1 -> fluctuant sin percentage (4-pass) 3
 - %zpctflctB1 -> fluctuant sin percentage (4-pass) 4
 - %zpctflctC1 -> fluctuant sin percentage (8-pass) 1
 - %zpctflctC1 -> fluctuant sin percentage (8-pass) 2
 - %zpctflctC1 -> fluctuant sin percentage (8-pass) 3
 - %zpctflctC1 -> fluctuant sin percentage (8-pass) 4

Other stuff
-----------

Create your texture:

(If you don't have The GIMP, I also have included a PAL version of the palette for use in Paint Shop Pro and similar)

1.Open The GIMP.
2.Create a totally black texture, dimensions must be any of these powers of two (2,4,8,16,32,64,128,256,512,1024,2048,4096) in any combination.
3.Import the palette '8bit_ubxmasterized.gpl' that comes with the package.
4.Go to Image->Mode->Indexed, select 'use custom palette' and choose the 8bit_ubxmasterized palette. Uncheck 'remove unused colors' and accept.
5.Save the image as pcx, for later identification you should name it "<Somename>_Base<Big,Small,Wide,Tall,etc>Screen".
6.Create another image same color and same size.
7.Identify the borders, dimensions, etc. like I did on my textures.
8.Go to Image->Mode->Indexed, select 'generate palette' and accept.
9.Save as pcx, with same name as base, but with 'Dummy' instead of 'Base'.
10.Close The GIMP.
11.Open UnrealED.
12.On the texture browser, go to file->import and import your textures, give'em a package and group.

Now, there are two ways:

- - - - - - Multiple textures at a time

13.Open Metapad, Notepad++ or, if you don't have any of these, plain notepad.
14.Write a line with: TEXTURE NEW class=ScriptedTexture name=<Same name as base and dummy, but with neither base nor dummy on the name> package=<package> group<group> usize=<X size> vsize=<Y size>
15.Make lots of duplicates of this line, and append a number to the end of the texture names (2,3,4...).
16.If you have Metapad or Notepad++, you should know the almighty powers of the 'Replace' tool. Make more copies of this, with a different name and dimensions. (Check the txx.txt file, which I used personally)
17.Save your file. (Make sure there aren't any spaces in the full path of the file or in its name)
17.Open the console (view->log) and type: exec <Full path of the text file, plus name and extension>
18.Press enter, and check your package for the new textures.
19.Follow the same steps as below starting from step 14, but for each single texture.
20.Save, and you're done.

- - - - - - A single texture

13.Open the console (view->log) and type: TEXTURE NEW class=ScriptedTexture name=<Same name as base and dummy, but with neither base nor dummy on the name> package=<package> group<group> usize=<X size> vsize=<Y size>
14.Right click on the new texture and open the 'properties' dialog.
15.Expand 'ScriptedTexture' and now select the corresponding base texture you imported.
16.Click on the 'Use' button in the SourceTexture line. If the base texture name doesn't appear there, something's wrong.
17.Save the package, and you're done.

Standard UT fonts:

"UWindowFonts.Tahoma10" -> good for a small text
"UWindowFonts.TahomaB10"
"UWindowFonts.Tahoma20" -> medium sized text
"UWindowFonts.TahomaB20"
"UWindowFonts.Tahoma30" -> big stuff
"UWindowFonts.TahomaB30"
"UWindowFonts.UTFont12" -> very readable
"UWindowFonts.UTFont24" -> big
"UWindowFonts.UTFont40" -> you must be blind if you can't read it
"UnrealShare.WhiteFont" -> small, but not much
"Engine.SmallFont" -> good for tiny font
"Engine.MedFont" -> same as WhiteFont, but in green shades
"Engine.BigFont" -> medium font
"Engine.LargeFont" -> classic Unreal
"ScreenFonts.Small4" -> unreadable
"ScreenFonts.Small6" -> unreadable
"ScreenFonts.Small8" -> may be too small
"ScreenFonts.Tahoma10" -> duplicate
"ScreenFonts.TahomaB10" -> duplicate
"ScreenFonts.Tahoma20" -> duplicate
"ScreenFonts.TahomaB20" -> duplicate
"ScreenFonts.Condensed30" -> allows many words in a single line
"ScreenFonts.Condensed40" -> same, but bigger text

Write everything in uppercase for this one:

"Scripted.CondemnedFont" -> The one used on those scrolling thingies on DM-Morpheus and DOM-Condemned

The following ones support only numbers:

"Botpack.Ammocount.LEDFont" -> LED numbers
"Botpack.Ammocount.LEDFont2" -> Smaller LED numbers
"Botpack.TinyFont" -> Small gray nums
"Botpack.TinyRedFont" -> red
"Botpack.TinyWhiteFont" -> white
"UnrealShare.TinyFont" -> duplicate
"UnrealShare.TinyRedFont" -> duplicate
"UnrealShare.TinyWhiteFont" -> duplicate
"UnrealShare.LargeRedFont" -> same as Engine.LargeFont, but only red numbers.

Randomizer
----------

This is going to be long. Disable word wrap before reading these functions:

function UpdateRandoms()
{
	if ( bUse11 )
		RandFloat1 = AverageFloat + (1-FRand()*2)*AmplitudeFloat;
	if ( bUse12 )
		RandFloat2 = AverageFloat + (1-FRand()*2)*AmplitudeFloat;
	if ( bUse13 )
		RandFloat3 = AverageFloat + (1-FRand()*2)*AmplitudeFloat;
	if ( bUse14 )
		RandFloat4 = AverageFloat + (1-FRand()*2)*AmplitudeFloat;
	if ( bUse21 )
		RandInt1 = AverageInt + ((100-FRand()*200)*AmplitudeInt)/100;
	if ( bUse22 )
		RandInt2 = AverageInt + ((100-FRand()*200)*AmplitudeInt)/100;
	if ( bUse23 )
		RandInt3 = AverageInt + ((100-FRand()*200)*AmplitudeInt)/100;
	if ( bUse24 )
		RandInt4 = AverageInt + ((100-FRand()*200)*AmplitudeInt)/100;
	if ( bUse31 )
		SinFluct11 = AverageSin1 + (sin(Level.TimeSeconds*seeds[0]*FreqSin1)*0.5 + sin(Level.TimeSeconds*seeds[1]*FreqSin1)*0.5)*AmplitudeSin1;
	if ( bUse32 )
		SinFluct12 = AverageSin1 + (sin(Level.TimeSeconds*seeds[28]*FreqSin1)*0.5 + sin(Level.TimeSeconds*seeds[29]*FreqSin1)*0.5)*AmplitudeSin1;
	if ( bUse33 )
		SinFluct13 = AverageSin1 + (sin(Level.TimeSeconds*seeds[56]*FreqSin1)*0.5 + sin(Level.TimeSeconds*seeds[57]*FreqSin1)*0.5)*AmplitudeSin1;
	if ( bUse34 )
		SinFluct14 = AverageSin1 + (sin(Level.TimeSeconds*seeds[84]*FreqSin1)*0.5 + sin(Level.TimeSeconds*seeds[85]*FreqSin1)*0.5)*AmplitudeSin1;
	if ( bUse41 )
		SinFluct21 = AverageSin2 + (sin(Level.TimeSeconds*seeds[2]*FreqSin2)*0.25 + sin(Level.TimeSeconds*seeds[3]*FreqSin2)*0.25 + sin(Level.TimeSeconds*seeds[4]*FreqSin2)*0.25 + sin(Level.TimeSeconds*seeds[5]*FreqSin2)*0.25)*AmplitudeSin2;
	if ( bUse42 )
		SinFluct22 = AverageSin2 + (sin(Level.TimeSeconds*seeds[30]*FreqSin2)*0.25 + sin(Level.TimeSeconds*seeds[31]*FreqSin2)*0.25 + sin(Level.TimeSeconds*seeds[32]*FreqSin2)*0.25 + sin(Level.TimeSeconds*seeds[33]*FreqSin2)*0.25)*AmplitudeSin2;
	if ( bUse43 )
		SinFluct23 = AverageSin2 + (sin(Level.TimeSeconds*seeds[58]*FreqSin2)*0.25 + sin(Level.TimeSeconds*seeds[59]*FreqSin2)*0.25 + sin(Level.TimeSeconds*seeds[60]*FreqSin2)*0.25 + sin(Level.TimeSeconds*seeds[61]*FreqSin2)*0.25)*AmplitudeSin2;
	if ( bUse44 )
		SinFluct24 = AverageSin2 + (sin(Level.TimeSeconds*seeds[86]*FreqSin2)*0.25 + sin(Level.TimeSeconds*seeds[87]*FreqSin2)*0.25 + sin(Level.TimeSeconds*seeds[88]*FreqSin2)*0.25 + sin(Level.TimeSeconds*seeds[89]*FreqSin2)*0.25)*AmplitudeSin2;
	if ( bUse51 )
		SinFluct31 = AverageSin3 + (sin(Level.TimeSeconds*seeds[6]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[7]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[8]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[9]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[10]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[11]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[12]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[13]*FreqSin3)*0.125)*AmplitudeSin3;
	if ( bUse52 )
		SinFluct32 = AverageSin3 + (sin(Level.TimeSeconds*seeds[34]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[35]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[36]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[37]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[38]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[39]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[40]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[41]*FreqSin3)*0.125)*AmplitudeSin3;
	if ( bUse53 )
		SinFluct33 = AverageSin3 + (sin(Level.TimeSeconds*seeds[62]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[63]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[64]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[65]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[66]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[67]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[68]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[69]*FreqSin3)*0.125)*AmplitudeSin3;
	if ( bUse54 )
		SinFluct34 = AverageSin3 + (sin(Level.TimeSeconds*seeds[90]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[91]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[92]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[93]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[94]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[95]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[96]*FreqSin3)*0.125 + sin(Level.TimeSeconds*seeds[97]*FreqSin3)*0.125)*AmplitudeSin3;
	if ( bUse61 )
		PercentFluct11 = Clamp(AveragePct1 + int((sin(Level.TimeSeconds*seeds[14]*FreqPct1)*0.5 + sin(Level.TimeSeconds*seeds[15]*FreqPct1)*0.5)*float(AmplitudePct1)), 0, 100);
	if ( bUse62 )
		PercentFluct12 = Clamp(AveragePct1 + int((sin(Level.TimeSeconds*seeds[42]*FreqPct1)*0.5 + sin(Level.TimeSeconds*seeds[43]*FreqPct1)*0.5)*float(AmplitudePct1)), 0, 100);
	if ( bUse63 )
		PercentFluct13 = Clamp(AveragePct1 + int((sin(Level.TimeSeconds*seeds[70]*FreqPct1)*0.5 + sin(Level.TimeSeconds*seeds[71]*FreqPct1)*0.5)*float(AmplitudePct1)), 0, 100);
	if ( bUse64 )
		PercentFluct14 = Clamp(AveragePct1 + int((sin(Level.TimeSeconds*seeds[98]*FreqPct1)*0.5 + sin(Level.TimeSeconds*seeds[99]*FreqPct1)*0.5)*float(AmplitudePct1)), 0, 100);
	if ( bUse71 )
		PercentFluct21 = Clamp(AveragePct2 + int((sin(Level.TimeSeconds*seeds[16]*FreqPct2)*0.25 + sin(Level.TimeSeconds*seeds[17]*FreqPct2)*0.25 + sin(Level.TimeSeconds*seeds[18]*FreqPct2)*0.25 + sin(Level.TimeSeconds*seeds[19]*FreqPct2)*0.25)*float(AmplitudePct2)), 0, 100);
	if ( bUse72 )
		PercentFluct22 = Clamp(AveragePct2 + int((sin(Level.TimeSeconds*seeds[44]*FreqPct2)*0.25 + sin(Level.TimeSeconds*seeds[45]*FreqPct2)*0.25 + sin(Level.TimeSeconds*seeds[46]*FreqPct2)*0.25 + sin(Level.TimeSeconds*seeds[47]*FreqPct2)*0.25)*float(AmplitudePct2)), 0, 100);
	if ( bUse73 )
		PercentFluct23 = Clamp(AveragePct2 + int((sin(Level.TimeSeconds*seeds[72]*FreqPct2)*0.25 + sin(Level.TimeSeconds*seeds[73]*FreqPct2)*0.25 + sin(Level.TimeSeconds*seeds[74]*FreqPct2)*0.25 + sin(Level.TimeSeconds*seeds[75]*FreqPct2)*0.25)*float(AmplitudePct2)), 0, 100);
	if ( bUse74 )
		PercentFluct24 = Clamp(AveragePct2 + int((sin(Level.TimeSeconds*seeds[100]*FreqPct2)*0.25 + sin(Level.TimeSeconds*seeds[101]*FreqPct2)*0.25 + sin(Level.TimeSeconds*seeds[192]*FreqPct2)*0.25 + sin(Level.TimeSeconds*seeds[103]*FreqPct2)*0.25)*float(AmplitudePct2)), 0, 100);
	if ( bUse81 )
		PercentFluct31 = Clamp(AveragePct3 + int((sin(Level.TimeSeconds*seeds[20]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[21]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[22]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[23]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[24]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[25]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[26]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[27]*FreqPct3)*0.125)*float(AmplitudePct3)), 0, 100);
	if ( bUse82 )
		PercentFluct32 = Clamp(AveragePct3 + int((sin(Level.TimeSeconds*seeds[48]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[49]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[50]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[51]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[52]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[53]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[54]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[55]*FreqPct3)*0.125)*float(AmplitudePct3)), 0, 100);
	if ( bUse83 )
		PercentFluct33 = Clamp(AveragePct3 + int((sin(Level.TimeSeconds*seeds[76]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[77]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[78]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[79]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[80]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[81]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[82]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[83]*FreqPct3)*0.125)*float(AmplitudePct3)), 0, 100);
	if ( bUse84 )
		PercentFluct34 = Clamp(AveragePct3 + int((sin(Level.TimeSeconds*seeds[104]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[105]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[106]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[107]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[108]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[109]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[110]*FreqPct3)*0.125 + sin(Level.TimeSeconds*seeds[111]*FreqPct3)*0.125)*float(AmplitudePct3)), 0, 100);
}
Image
  ~♥~ Bless the Cute Emperor ~♥~
User avatar
-Feint-
Skilled
Posts: 175
Joined: Sat Mar 08, 2008 1:39 pm
Personal rank: Amateur Mapper
Location: UK - Leeds

Re: Nekratech Screen ~ Zanaveth's Screen Component

Post by -Feint- »

Testaccount wrote:Just had a quick scan through...

Is this basically .... (finding way to explain) ... a TV in UT of the lead player? Or a adaptable scoreboard display in game a bit like an american football screen?
DanomanUK@i4games-Forum wrote:Nah, people bitch one way or another.
You cant win as a mapper ;)
User avatar
Saya-chan
Adept
Posts: 446
Joined: Mon Jun 02, 2008 10:46 am
Personal rank: Former UT99 modder
Location: Vigo, Galicia
Contact:

Re: Nekratech Screen ~ Zanaveth's Screen Component

Post by Saya-chan »

much like the second. but can do even more.

you can write lists, scrolling texts and even entire paragraphs; maps (not tested though), tiled backgrounds, progress bars and similar, and has a very complex (as you may see) wildcard-based meta-text replacement.
Image
  ~♥~ Bless the Cute Emperor ~♥~
Post Reply