Jump to content
Dedicated GameServer Hosting

How to Create A Server Menu for Your Wolf ET Server

Recommended Posts

Many ET servers download a file when you connect that overwrites your standard ET menu with a custom menu. This custom menu has extra buttons that reconnect players to the server it came from. Some custom menus have many extra features, like forum links or config editors. These menus are controversial, but widely used.


In this tutorial I will give you bare-bones directions on how to make a one-button pk3 menu for your server. There are two ways to do this - take one from another server and convert it to your server name and IP address, or make your own from scratch. I will show you how to make your own from scratch. It only requires that you make two files, and save them into two folders, and them compress it as a .pk3 file.


You can use winzip, winrar, or Pakscape to create a pk3 file. A "pk3" is a type of compressed file used by ET and other quake 3 games. I will show you how to use Pakscape because it is a commonly used free program.


You can download Pakscape here: http://www.gamefront...es/10423976��


or just google "download pakscape" to see many other links.



Open Pakscape and click File -> New. Then right click in the white space under "Name" and select Object -> New Directory. Name this directory "scripts". Repeat this step and create another folder called "ui". See below:










Now, go to your desktop or wherever you like to work on your computer, and create a file called my.campaign with a text editor (Notepad is fine). The file type must be ".campaign" not .txt or .doc.


You can name it whatever you like, but it must be a .campaign file.


Inside this file, paste this text:



name "original maps"

shortname "cmpgn_test"

description "The most popular ET maps."

maps "battery;fueldump;goldrush;oasis"

mapTC 374 374

type "wolfmp"



Don't worry about what maps are in here, this is just a way to embed a campaign file within your pk3 file so that ET will distribute it to your players. You don't want to add any non-original maps here or it will force your players to download them whether they need them or not, and just add to the volume of files they have to wait to download when they connect.



Now, go back to your Pakscape file and open the scripts folder, then right click in the open space under the word "Name" and select Object -> Import File... then select your my.campaign file that you just made above.






Now there is one file that needs to go into the "ui" folder. You need to make it outside of Pakscape, on your desktop or wherever you like to work. You cannot make or modify a file within Pakscape. You can open a file and see the contents, but any changes you make will not be saved. You must export a file first before you can save it. If you open a file within pakscape and modify it and hit save, it will appear as though you have modified it, but your changes will not be saved.


The file name you need to create and import into the "ui" folder is always called "main.menu"


Here are the contents of "main.menu". Copy the text below and save it as "main.menu". Change the "YOUR SERVER NAME" to whatever you want in the button, and then change the IP address and port to your IP address and port. You can add more buttons by following the pattern below.




#include "ui/menudef.h"


// Defines //


#define WINDOW_X 16

#define WINDOW_Y 16

#define WINDOW_WIDTH 608

#define WINDOW_HEIGHT 448

#define GROUP_NAME "grpMain"


// Macros //


#include "ui/menumacros.h"


// Opener //



menuDef {

name "main_opener"

visible 0

fullscreen 0



onOpen {

open fadebox_black ;

open background_1 ;

setmenuitemcolor fadebox_black fadebox backcolor 0 0 0 1 ;

fadeoutmenu fadebox_black ;

open main ;

clearcvar ui_profile_create_error ;

exec "set cl_noprint 1;exec forum.cfg;set cl_noprint 0" ;

close main_opener




// Main Menu //


menuDef {

name "main"

visible 0

fullscreen 0




onOpen {

conditionalscript cl_profile 1

( "clearFocus" )

( "close main ; open profile_create_initial_opener" )


// ydnar

conditionalscript ROldModeCheck 2

( "clearFocus ; open vid_confirm" )

( "clearFocus" )


conditionalscript cl_autoupdate 1

( "checkautoupdate" )

( "clearFocus" )



onEsc {

clearFocus ;

close main

open quit



// Background //


itemDef {



backcolor 0 0 0 0


bordercolor 0 0 0 0

bordersize 0

visible 0




BUTTON( 6, WINDOW_HEIGHT-448, .22*(WINDOW_WIDTH-24), 16, "YOUR SERVERNAME", .2, 12, close main; exec "connect" )

BUTTON( 6, WINDOW_HEIGHT-472, .22*(WINDOW_WIDTH-24), 16, "^7PLAY ONLINE", .2, 12, close main ; /*close backgroundmusic ; open backgroundmusic_server ;*/ uiScript UpdateFilter ; uiScript ServerSortDown 4 ; open playonline )

BUTTON( 6, WINDOW_HEIGHT-496, .22*(WINDOW_WIDTH-24), 16, "^7HOST GAME", .2, 12, close main ; /*close backgroundmusic ; open backgroundmusic_server ;*/ uiScript loadArenas ; uiScript initHostGameFeatures ; open hostgame )

BUTTON( 6, WINDOW_HEIGHT-520, .22*(WINDOW_WIDTH-24), 16, "^7REPLAYS", .2, 12, close main ; open viewreplay )

BUTTON( 6, WINDOW_HEIGHT-544, .22*(WINDOW_WIDTH-24), 16, "^7MODS", .2, 12, close main ; open mods )

BUTTON( 6, WINDOW_HEIGHT-568, .22*(WINDOW_WIDTH-24), 16, "^7OPTIONS", .2, 12, close main ; open options )

BUTTON( 6, WINDOW_HEIGHT-592, .22*(WINDOW_WIDTH-24), 16, "^7PROFILE", .2, 12, close main ; open profile )

BUTTON( 6, WINDOW_HEIGHT-616, .22*(WINDOW_WIDTH-24), 16, "^7EXIT GAME", .2, 12, clearFocus ; uiScript Quit )








Now, go back to Pakscape, and import "main.menu" into the "ui" folder. Then save the whole file as something like ~~~~~whatever_001.pk3


The tildas (~~~~) put it at the end of the files that get loaded when ET starts, causing it to overwrite the earlier files that have been loaded on the player's computer, so that you menu appears instead of the standard server menu, or someone else's menu. Some admins create very long names like ~~~~~~~~~~~~~~~~~~~~whatever.pk3, but this can cause problems if there are too many characters in the name.


The numbers should be used as a way to increment your changes to the menu, so that you can use 001, 002, 003 etc each time you modify something. This way the 002 will be loaded on the player's computer after the 001 version has been loaded, allowing the newer menu to overwrite the older one. This helps you manage change control, so you can tell when you are looking at your files which version you are distributing.


Whenever you make a change to a pk3 file, always change the name so you do not different versions of the same file name out there. Having numbers at the end makes this easy to change.






Now, in your server config file, within your mod, you must specify the name of the campaign file so it knows what file to download. In jaymod use this:


set g_campaignFile "my.campaign" (must be the same as the name of your campaign file within the "scripts" folder in your pk3 file)


In silent mod use this:


set g_campaignFile "/yourfolderpath/silent/my.campaign"


other mods are very similar.


Also, you must place a copy of the pk3 file into your etmain folder on your server, and also put a copy of the same file in the etmain folder on your redirect server (the storage server used to download maps faster).

  • Like 1

Share this post

Link to post
Share on other sites

i have one already but i have a bug

when on the server i click to the T to can sent message it is not working at all

can i later sent u our menu pk3 to see what can be missed up ?

Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...