UGX-Mods Login

or login with an authentication provider below
Sign In with Google
Sign In with Twitter
Sign In with Discord
Sign In with Steam
Sign In with Facebook
Sign In with Twitch

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - AllMoDs

 
this is going to be same as waw one but way better with way more stuff if it works out the way i want
like
beam struggle
full hand to hand combat
grappling and more
full universe 11 roster : bosses / thinking of adding a unlock system for them to be players if you beat them on hard
full universe 8 roster : player
 
it is public on steam workshop updeted 6/9/2023
 
and after 2 years i fixed a game breaking bug so now time to port every thing from waw and add the new
 
 

 
 
this is going to be fun to remake on bo3
 
 
 
 

 
 kamehameha anim with fx

10 months ago
this is a itemDef to use your keyboard input in any menu and save the input
 
in your menu where onopen is put this
Code Snippet
Plaintext
execondvarintvalue allmods_cfg 0 "exec allmods/allmods";
in your raw folder make a new folder named allmods in that folder make a new cfg name it allmods put this in that
Code Snippet
Plaintext
seta allmods_keybord_input_saved "";
seta allmods_cfg "1";
this will make it so the keybord input will save and can be loaded back up every time the mod loads
allmods_keybord_input_saved is what will be loaded on mod start and the dvarString you need to show typed text else where
 
with this
Code Snippet
Plaintext
exp text        (dvarString("allmods_keybord_input_saved"))
add this to mod csv
Code Snippet
Plaintext
rawfile,allmods/allmods.cfg

Code Snippet
Plaintext
// pick one 
//visible when    (dvarInt("????") == 1);
//visible    1
//                       240 23 = background "black" size of black bar behind text from keybord
//rect            0 -400 240 23 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM
//background        "black" // can be a image
itemDef
{
    name            expert
    type            ITEM_TYPE_EDITFIELD                    
    background        "black"
    text            "" // leave like this ""
    dvar            "allmods_keybord_input"
    rect            0 -400 240 23 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM
    textalign        ITEM_ALIGN_MIDDLE_LEFT
    textalignx        0
    textscale        0.5
    textstyle        ITEM_TEXTSTYLE_SHADOWEDMORE
    style            WINDOW_STYLE_SHADER
    forecolor        1 1 1 1
    //visible when    (dvarInt("????") == ???);
    //visible    1
    maxChars        15
    maxpaintchars    15
    accept
    {
        seta allmods_keybord_input_saved dvarString( allmods_keybord_input );
        setdvar allmods_keybord_input_saved dvarString( allmods_keybord_input );
        setdvar allmods_keybord_input "";
    }
}

 
 
 
this is just a image button i did since there was not one in the game
Code Snippet
Plaintext
// pick one 
//    background        "black"  
//exp material    (dvarString("????"))
// pick one
//visible when    (dvarInt("????") == 1);
//visible    1
//                          60 60 = image size
//rect            -250 -285 60 60 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM

itemDef                                                                        
{                                                                            
    name            "AllMoDs_Menu_1_pic"
    type            ITEM_TYPE_BUTTON
    rect            -250 -285 60 60 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM
    forecolor        1 1 1 1                                         //ALLMoDs\\
    style            WINDOW_STYLE_SHADER
    //background        "black"
    //exp material    (dvarString("????"))
    //visible when    (dvarInt("????") == 1);
    //visible    1
    action
    {
        play "mouse_click";
        setdvar dvar_1 "1";
    }
    mouseEnter
    {
        play "mouse_over";
        setdvar dvar_1 "2";
    }
    mouseexit        
    {
        setdvar dvar_1 "0";
    }
}

you can use exp material and set the pic from gsc and chang it when ever you want
or just use  background for a single pic
can use
Code Snippet
Plaintext
scriptMenuResponse "????";
on any action , mouseEnter and mouseexit for pick up in gsc
can also set dvar on a player
 setdvar dvar_1 "1";
change them to what you want
 
or you can do like i did and have the pic change on mouse enter and exit
 
onopen set main pic
 
Code Snippet
cpp
onOpen
{
    setdvar goku_switch "goku_icon";
}
then
 
Code Snippet
cpp
itemDef                                                                        
{                                                                            
    name            "goku"  
    type            ITEM_TYPE_BUTTON
    rect            -220 -285 120 200 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM
    forecolor        1 1 1 1                                         //ALLMoDs\\
    style            WINDOW_STYLE_SHADER
    exp material    (dvarString("goku_switch"))
    visible 1
    action
    {
        scriptMenuResponse "picked_goku";
        setdvar you_got_it "0";
        close self;
    }
    mouseEnter
    {
        setdvar goku_switch "goku_icon_ssj";
        scriptMenuResponse "sound_goku";
    }
    mouseexit        
    {
            setdvar goku_switch "goku_icon";
    }
}
the pic switches and when clicked munu will send a scriptMenuResponse for that  close menu and on mouseEnter will play a sound
all this is set up in gsc  like this
Code Snippet
Plaintext
ipicked()
{
    self endon("disconnect");
    for(;;)
    {
        self waittill("menuresponse",menu,response);
        {
            if(response == "picked_goku")
            {
                level notify( "1st_picked" );
                self TakeAllWeapons();
                self thread goku_setup();
                self CloseInGameMenu("allmodsingamechar");
            }
            else if(response == "sound_goku")
            {
                self StopSounds();
                wait 0.05;
                self playsound("gokuintro");
            }
        }
        wait 0.05;
    }        
}            

that is sound and what to do when clicked
1 year ago
Merry Christmas UGXMODS

 
                                                                           if you downloaded this before 12/25/2022 10:44  central redownload it
www.mediafire.com

 
drive.google.com

 
 
4 years in the makeing of dragon ball super map dragon
ball z map hit a memory limit to all my testers over the
years could not have done it without the consent coop testing
big thanks
 
i had 5 ingame cutscene but can't keep but 3 kales transformation is gon and you win
will do 2nd ver with them in and others out
 
credits
always there to help scripting menu anima models
OFFtheWALL__
BluntStuffy
HitmanVere
redspace200
 
testers
WyeOnline
ZProject115
Lightning132
MLGBLOKE
Captain-Drix
MajorPwnege1
if i did not add your credits pm me
 
 
 
 
warning do not play with 4 players it's possible
but with the amount of stuff going on has risk of problems
 
 
its simple beat the bosses before the pillar reaches the floor or game over
you don't spectate you go to the bleachers instead until next round
there are 4 perks in all three are custom
don't fall off the map or get thrown out by a boss
and yes they can grab you and pick you up the player not a model
go to dragon ball settings and set buttons or you can't use a custom perk
 
 
instant transmission perk
set a location with the button you set in dragon ball settings
press it again to go back to the firts spot it was presed
same image in perk shader will show on you hud when you set a spot and
goway after use no limit of uses

 
 
 
ki cola
increase ki charge rate by 50%

 
 
50% off of ki usedge

 
you need over 1000 ki to go ultra instinct
no wall gus DPS increases with super saiyan level
 

key pad codes
 
4126
fov slider
 
2378
3dfx
 

if you find others you will not be able to use its contents
its is for the testers who helped and dev stuff for me
if you helped me test and do not have your codes pm me here or discord #AllMoDs0800
to all who have a code they will only work for you they are coded in the menu not gsc csc or cfg
 
report any bugs will fix next update
 
1 year ago
I need a maper for thats good at clipping I have some rock models that need clipping I do it myself but when I try to adjust the size of the clip when it's at a angle it messes up bad this is the last big thing I have to do before I can release my Tournament of power map  if you like to help pm me  
5 years ago
unlock my dragonball Tournament of power work-in-progress thread I'm still working on both my projects I'm almost done with this one 
5 years ago
wasn't paying attention where I posted the tutorial can you move to its appropriate place thank you
6 years ago

your game will show on lan and net i was runing every thing frome same folder here in vid
so that means that your game will be broadcast over the internet and anyone you give the consol link to can join your sever
and if you do everything correctly and they don't have your mod they can download it directly just from joining your server you do not have to send them a download link
how many people you can host and how fast the clients download speed depends on your internet
for best results run this on a whole nother computer you're not going to play the game on and make sure you have a lan connection not Wi-Fi
one thing I did not cover there's too many routers out there for me to

warning warning
for people to connect to you going to have to give your main router's IP address for them to put in their console in waw setup a VPN or setup a static IP on your main router
google info specific to your router for this info you will use the VPN IP address or the static IP address for the stuff below that does not specify your PC's IP if you cannot do either one of these do not and I repeat do not give that Ip that you have to use to people you do not trust a hundred percent and I mean a hundred percent if you cannot do one of the top two suggestions my advice pay for the cheapest VPN you can forward suggested ports according to VPNs ip
and I would not follow this tutorial any further if you continue with this tutorial and you cannot do one of the 2 tgings you will endanger all of your Internet devices in anything connected which runs the risk of losing personal data if the wrong person gets the IP address
and if you can or if you can't do the top two things never post the IP stuff on any website links or anything give it to the person directly and by directly I mean by text message  private messages or any other source were no one else but you and then are going to see it
so I will say this again if you cannot do one of the top two things I suggested do not continue if you do it's at your own risk


things you will need to do



#1: a 2nd drive on your pc to get best out of your sever  must be big enough for you to copy your steam Call of Duty World at War
note: if you install mod Tools in your steam directory of World at War drag the whole world at war folder to your desktop redownload waw to your Steam folder after its dun move to 2nd drive in a folder named cod5 go in your steam settings and enable a secondary location for your games so it reads the new location directed to the folder you just made move your original copy back where in steam folder.  cod5  folder will have all exe and so on in it dont make a folder in cod5  folder to put stuff in  so in cod5 folder will be fresh steam copy of waw

#2: make new folder in drive with cod5 folder  named sever_mods inside this folder make 2 new folders named mods 2nd folder usermaps what ever mod your are runing in mp put in both folders the appdata copy of the mod

make a new folder in same drive as cod5 foler name it servers make 2 new folder in that foler.  name 1 main , 2nd  mods and  go to cod5 folder copy pb folder past in servers folder
note: every mod you are running must be same in all folders same copy but dont put a mod in this mod foler this is just for consal log files & server log files will make text files with info

make a new folder in same drive as cod5 foler name it server go to cod5 folder copy pb and main folder past in server folder go in main folder deleate video folder do same in cod5 folder
not sever and severs folder and not same folder
pb folder runs punkbuster on your sever if its set to 1
and sever.gsc that runs on the sever gos in main folder I had you put another location so you have a backup
#3: forward these ports in your router
28900 to 28970 - TCP and UDP
20500 to 20510 - TCP and UDP
20600 to 20610 - TCP and UDP
27900 - TCP and UDP
local port is 28960
forward two pc's IP server is running on port 28960 is master port for control and admin port rcon login
#4: make a new gsc name it  servers note the ip part with your ip only put in your appdata copy  and sever_mods folder  and in main folder
past this in
sever.gdc
    set dedicated "2" // 0 = Listen, 1 = LAN, 2 = Internet

    //set fs_localAppData "C:\Program Files (x86)\Steam\steamapps\common\Call of Duty World at War"
    wait
    // MasterServers    seta sv_gamespy "1"
   seta sv_master1 "codmaster.activision.com"
   seta sv_master2 ""
   seta sv_master3 ""
   seta sv_master4 ""
   seta sv_master5 ""
    //pb_sv_enable
    set sv_allowdownload "1"
    seta sv_wwwDownload "1"
    seta sv_wwwBaseURL "link you get from ngrok "
    seta sv_wwwDlDisconnected "0"
    // Server name
    set sv_hostname "mod name to show on sever "
    set logfile "1"           // 0 = NO log, 1 = log file enabled.
    set g_log "games_mp.log"  // Name of log file, default is games_mp.log.
    set g_logsync "2"         // 0 = No log, 1 = buffered, 2 = continuous, 3 = append.
    set sv_log_damage "1"    // Network options.
    set net_ip 000.000.0.000             // Set your servers IP address. go to Google serch what's my IP
    set net_port "28960"         // Set your port number, (default 28960).
    set com_hunkMegs "1024"
    set net_noipx "1"              // Allow ONLY tcp/ip protocol, player/server communications.

    // Server Network Mode.
    // 0 = Listen, 1 = LAN, 2 = Internet.
    set loc_warnings "0"
    // Server password
    set g_password "" // blank means NO password    // Rconpassword
    set rcon_password "1234" // set for admin controll    // Maximum Clients
    //set sv_privateclients ""
    set sv_maxclients "32"
    // Drop inactive players.
    set sv_timeout "30"
    set g_inactivity "0"
    set g_inactivityspectator "0"
    set sv_reconnectlimit "3"    set sv_pure "1"
    set g_banIPs ""
    set g_no_script_spam "1"
    // Max Ping
    set sv_maxping "350"
    set sv_allowAnonymous "0"
    set g_antilag "1"
    set g_smoothClients "1"
    set g_compassShowEnemies "0"
    set scr_drawfriend "1"
    // Rate
    set sv_maxRate "25000"    // Automatic Team Balance
    set scr_teambalance "0"    // In-Game Voice Chat
    set sv_voice "0"
    set voice_global "0"
    set g_voiceChatTalkingDuration "500"
    set voice_deadChat "0"
    set sv_voiceQuality "3"
    set voice_localEcho "0"    // Dead players chat with the living?
    set g_deadChat "0"    // Who dead people can spectate
    set scr_game_spectatetype "1"    // Gravity
    set g_gravity "800"    // Base Move Speed
    set g_speed "190"    // Number of dropped weapons before recycling
    set g_maxDroppedWeapons "16"    // Hardcore
    set scr_hardcore "0"    // OldSchool
    set scr_oldschool "0"    // Friendly Fire?
    set scr_team_fftype "0"    // Red Crosshairs while over enemy
    set g_redCrosshairs "1"       
    // Draw Friends
    set scr_drawfriend "1"    // Revive players
    set scr_player_allowrevive "1"
    set g_revive "0"
    set revive_time_taken "2"    // Announcer
    set scr_allowannouncer "1"    // TDM
    set scr_tdm_globalbattlechatterprobability "0"
    set scr_tdm_numlives "0"
    set scr_tdm_playerrespawndelay "0"
    set scr_tdm_roundlimit "1"
    set scr_tdm_scorelimit "750"
    set scr_tdm_timelimit "10"
    set scr_tdm_waverespawndelay "0"    // Map_rotation
    set fs_game "mods/??????????" ///?? = mod devmap name
    set g_gametype "tdm"
    set sv_mapRotation "gametype tdm map ?????????" ///?? = mod devmap name

look it over put your info in where you will see where

#5:  make a shortcut of the cod5 folders codwawmp.exe move to desktop right click it
where target is go to end of what is there and hit spacebar 1 time past this in
Hidden Text
+set fs_homepath "G:/servers" +set fs_basepath "G:\cod5" +set fs_localAppData G:\sever_mods +set fs_game mods/?????? +set dedicated 2 +set net_ip  ????? +set net_port 28960 +set sv_punkbuster 1 +exec server.cfg +map_rotate
where ???? are put same ip from sever.gsc  aka go to google serch what is my ip

#6:  make shortcut form sream copy of codwawmp.exe to desttop name it game play or somthing rename the one frome cod5 folder sever
righr click steam copy of codwawmp.exe and in at end of target pu this 
+set net_port 28961 must be a space betwean what there and what you add

#7:  now your ready to test click the sever exe you made box will pop up  this is your sever all info shows in this window and is dumped to  severs folder
will se this at end part of window

IP specified on command line, setting to: ???????:28960
Advertising on ????????:28960
?????? = your pc ip this means you did every thing right and your sever is live and running and friends can join your sever
by puting this in there consol

 /connect xxx.xxx.xxx.xxx:28960xxx = same ip from sever.gsc  aka go to google serch what is my ip
you can look up how to set a static IP on Main router so people don't have your real one
and still only give the connect part to people you trust sorry can't do any tutorials on port forwarding and setting static IP too many routers out there
now click the short cut from stem dont load your mod find your mod in net games or lan game click to join your sever in your sever box you will see that you joined and files your are getting
 if you get in game all is good to go last part to add client mod download part  which will be an internet page to generate from your own computer that anyone in the world can access if they have the web link
drive.google.com














still get rcon tool
you can skip this whole part here if you're going to give the people that are going to join you to download link but it be faster for them if you set this up
so they can directly download it through Call of Duty from your PC this will trick waw into thinking it's connected to its download server
the stuff below will also work for hosting your own built internet page for everybody for anything over the Internet only downside is you have to use there URL

there are 2 programs in here
miniweb.exe  this makes a local internet page out of what is in the htdocs folder in the htdocs there are 2 folder put your mod in both appdata copy if you add sever,gsc take all your info out this is what the client is going to download if they don't have your mod and your give them stuff to join

2nd is ngrok this make your local miniweb site brodecast to the world wide web for anyone with the link can access it
the purpose of doing this is so the dl speed for joining client will be increased depending on your internet speed if you do not set this up the game will default to your server folder and download from there I have very great internet and if it defaults to that folder the download speed for the client will take over an hour doing this trick I figured out my client download speed is 3 megabytes per second

open miniweb it will show a ip and a port wil look somthing like this
192.168.1.191:8000
put this in web browser on same network as your pc
it should show the content of htdocs folder what is the mods and usermaps folder in eack should be a folder of your mod  appdata copy

now open ngrok  type this in hit enter
ngrok http 8000

this make your files access from anywhere  on the internet if they have the link 

where you see 1st Forwarding  copy link will look somthing like this
http://b59cce4c.ngrok.io

this will go in your server.gsc the ones with your ip info not one people are downloading look for this
seta sv_wwwBaseURL "link you get from ngrok "
put link you get in will look like this
seta sv_wwwBaseURL "]http://b59cce4c.ngrok.io "
this will teal the game to download the mod from this website for clients that don't have it
depending on your internet speed may want to reduce the amount of clients that can connect to you
look for this
set sv_maxclients "28"
i can have 28 with no prob

you have to update the dl link in your server.gsc  file every time you relaunch these files this part
svwwwbaseurl "??????" or if time runs out on ngrock
both of these programs and your server have to be running
ngrok is free so it willonly stay up 7 hours 30 minutes

thats it all dun I'll say this again set a static IP on your main router some people don't have your real one and everywhere I say to put your main router's IP replace with the static IP if you have a VPN setup use your VPN IP depending on your VPN you may need to forward your ports different Google


drive.google.com
















this is rcon login tool for admin right over your sever if someone is acting up in your server do not ban them with punkbuster  it will ban them on all punkbuster games
I was told for whatever time Is that in your server file or in rcon tool
you loh in rcon with pw you set in sever gsc here
set rcon_password "1234" // set for admin controll
port is 28960
ip is your pc ip that showed in sever window

last thing to run the best server ever run it on another computer that you're not going to be playing the game on and have it on lan not wi fi
if you need help pm me
6 years ago
Call of Duty Dragon Ball super multiplayer mod with dedicated server support

lot of work left to do on this I'm still going to make the zombies version as well
took me two days to get this dedicated server to work
6 years ago




this will be my 2nd map
I've been working on this mod on and off for about 8 months
my idea for this mod it will be just like the tournament of power I will add every model that was in the show
when you first start your pick which Universe you want to play with
no player will be able to pick the same universe when you first start your pick which Universe you want to play with
when you die you will lose a character once you lose all your characters you're out the tournament
last two players will have to fight each other plus the zombies Last Man Standing wins and the center timer will be counting down as well every so many quarters you  lose a character from your universe
6 years ago
the reason why I'm posting this I needed something to grab path nodes to a set point with no problem
this dont work good no mater what i use it on ingame i loos fps
Code Snippet
Plaintext
nodes = GetAllNodes();		
goal = get_array_of_closest( self.favoriteenemy.origin, nodes, undefined, 45);

GetAllNodes works fine but get_array_of_closest dus not work good at all or getNodeArray() didnt ever get it to work for what i need so  i made a diff script based off a default cod one works like a charm

can use this with path_node grabber in game
will show grabbed path nodes count and origin of the number 7 node "iPrintLn(" array 2 nodes origin " + new_nods[7].origin);" when you shoot your gun this can allso help you find bad paths if nods are not spaced out good for zombies


a good count is 23 and up if in a open space with 400 being how far you look if lower might need to look at
help if you no you got bad nodes and zombies dont do right in a spot in your map now you can check the nodes ingame as you walk

update physically see your path node layout in game
shoot 1 time to play fx on all grabbed path nodes shoot 2nd time to delete fx and script model and repeat


add you own nun looping fx  where ??????? is
Code Snippet
Plaintext
level._effect["kiblast"] = loadfx( "?????????t" );
and you get fx on your path nodes they delete when you shoot 2nd time or use way point just add pick here //self.target_scan = "????????"; un comment all take fx off
Code Snippet
Plaintext
see_node()
{
    self endon("disconnect");
    self.nod_spot = 0;
    set_node_fx = 1;
    for (;;)
    {
        self waittill("weapon_fired");
        {

if (set_node_fx == 1)
            {
                self.bullets2 = [];
                self.new_nods = self get_desired_paths_nods(self.origin, 400, 60, 0);
iPrintLn("nodes array size " + self.new_nods.size);
                for (i = 0; i < self.new_nods.size; i++)
                {
                    if (self.nod_spot < self.new_nods.size)
                    {
                        self.bullets2[self.nod_spot] = Spawn("script_model", self.new_nods[self.nod_spot].origin);
                        self.bullets2[self.nod_spot] SetModel("tag_origin");
                        PlayFXOnTag(level._effect["kiblast"], self.bullets2[self.nod_spot], "tag_origin");
//self.target_scan = "????????";
//self.payload2 = NewClientHudElem(self);
//self.payload2.hideWhenInMenu = true;
//self.payload2 setshader( self.target_scan, 40, 40 );
//self.payload2 SetTargetEnt( self.bullets2[self.nod_spot]);
//self.payload2 setWayPoint( true, self.target_scan );
                        self.nod_spot = self.nod_spot + 1;
                    }
set_node_fx = 0;
                }

            }
            else if (set_node_fx == 0)
            {                           
for (i = 0; i < self.new_nods.size; i++)
                {
if (self.nod_spot.size > - 1)
{
  self.bullets2[self.nod_spot] delete();
  self.nod_spot = self.nod_spot - 1;
 
}
self.bullets2[0] delete();
set_node_fx = 1;
}
            }
wait .05;
        }
       
    }
}




Code Snippet
Plaintext
get_desired_paths_nods(A, B, C, D or E)
D or E allways start with D so you dont loos fps from grabbing every path-nod out side where you look
Code Snippet
Plaintext
/* 
 ============= AllMoDs AKA KrooKlyN 8/24/2018================
///ScriptDocBegin
//get_desired_paths_nods(A, B, C, D or E)
// A:origin to start from
//B: distance from start origin to start looking for path_nodes determined by  D or E );
//C: max size of path_nodes to return
// D: return the nodes, reordered from closest to farthest aka <  Example new_nods[0].origin is closer set a 0 for this
// E: return the nodes, reordered from farthest to closest aka >  Example new_nods[0].origin is farthest set a 1 for this
///ScriptDocEnd
 =========================================
 */
///////////////////path_nods only////////////////////////////////
get_desired_paths_nods(org, dis, new_max, lessthan_biggerthan)
{
    nodes = GetAllNodes();
    dist = [];
    index = [];
max = undefined;
    for (i = 0; i < nodes.size; i++)
    {
        length = distancesquared(org, nodes[i].origin);
if (lessthan_biggerthan == 0)
{
if ( dis * dis < length)
continue;
dist[dist.size] = length;
index[index.size] = i;
}
if (lessthan_biggerthan == 1)
{
if ( dis * dis > length)
continue;
dist[dist.size] = length;
index[index.size] = i;
}   
    }
    for (;;)
    {
        change = false;
        for (i = 0; i < dist.size - 1; i++)
        {
            if (dist[i] <= dist[i + 1])
continue;
            change = true;
            temp = dist[i];
            dist[i] = dist[i + 1];
            dist[i + 1] = temp;
            temp = index[i];
            index[i] = index[i + 1];
            index[i + 1] = temp;
        }
        if (!change) break;
    }
    newnodes = [];
    if (new_max > dist.size)
max = max + new_max;
max = dist.size;
    for (i = 0; i < new_max; i++)
newnodes[i] = nodes[index[i]];
    iPrintLn(" array 1 nodes origin " + newnodes[7].origin);
return newnodes;
}



must define everything


Code Snippet
Plaintext
this one you can send any array to check 
and you can run something in it 2 times one getting < and then send  it back in doing > will get you ring of what ever you are looking for
Example
1strun = get_desired_paths_nods(A, B, 1000, D, 0); //set 0 at end
2ndrun = get_desired_paths_nods(A, 1run , 500, D, E or 1); //set 1 at end and use 1strun as array in 2nd part
Code Snippet
Plaintext
/* 
 ========================== AllMoDs AKW KrooKlyN 8/24/2018================
///ScriptDocBegin
//get_desired_paths_nods(A, B, C, D, E or f)
// A:origin to start from
//B array to check
//C: distance from start origin to start looking for array determined by  E or F);
//D: max size of arrayto return
// E: return the array, reordered from closest to farthest aka <  Example new_nods[0].origin is closer set a 0 for this
// F: return the array, reordered from farthest to closest aka >  Example new_nods[0].origin is farthest set a 1 for this
///ScriptDocEnd
 =============
 */
////////////////any array///////////////////////////////
get_desired_paths_nods(org, array, dis, new_max, lessthan_biggerthan)
{
    dist = [];
    index = [];
max = undefined;
    for (i = 0; i < array.size; i++)
    {
        length = distancesquared(org, array[i].origin);
if (lessthan_biggerthan == 0)
{
if ( dis * dis < length)
continue;
dist[dist.size] = length;
index[index.size] = i;
}
if (lessthan_biggerthan == 1)
{
if ( dis * dis > length)
continue;
dist[dist.size] = length;
index[index.size] = i;
}   
    }
    for (;;)
    {
        change = false;
        for (i = 0; i < dist.size - 1; i++)
        {
            if (dist[i] <= dist[i + 1])
continue;
            change = true;
            temp = dist[i];
            dist[i] = dist[i + 1];
            dist[i + 1] = temp;
            temp = index[i];
            index[i] = index[i + 1];
            index[i + 1] = temp;
        }
        if (!change) break;
    }
    newnodes = [];
    if (new_max > dist.size)
max = max + new_max;
max = dist.size;
    for (i = 0; i < new_max; i++)
newnodes[i] = array[index[i]];
    iPrintLn(" my origin " + self.origin);
return newnodes;
}


6 years ago
I've been working on this on and off for over a year
last thing I have left to do is get the projectile entity better
so the damage is taken when the bullet or projectile hits the other player better than the way I have it now

I finally figured out how to get the entity of every  projectile shot for each client
now I can take damage based on where the projectile hits the player
like headshots , torso to shoulders and torso and down
6 years ago
it took me awhile but I finally figured out how to Precache your own  named menus
and buy  name I mean the menu file itself and the menu name  so that means you
can make as many in-game menu files as you want and not have to use Activision created menus

step 1

back up this file

Spoiler: click to open...
raw/ui/ingame.txt
this file is what loads all in game menus

step 2
replace whats in side with this
Spoiler: click to open...
{   
   loadMenu { "ui/_yourmenu.menu" } /// your .menu#1
        loadMenu { "ui/_yourmenu2.menu" } /// your .menu #2
   loadMenu { "ui/error.menu" }
   loadMenu { "ui/_allmodsingame.menu" }
   loadMenu { "ui/objective_info.menu" }
   loadMenu { "ui_mp/options.menu" }
   loadMenu { "ui/options_ingame.menu" }
   loadMenu { "ui_mp/menus/ingame_options.menu" }
   loadMenu { "ui_mp/menus/options_look_pc_ingame.menu" }
   loadMenu { "ui_mp/menus/options_move_pc_ingame.menu" }
   loadMenu { "ui_mp/menus/options_shoot_pc_ingame.menu" }
   loadMenu { "ui_mp/menus/options_misc_pc_ingame.menu" }
   loadMenu { "ui_mp/menus/options_graphics_pc_ingame.menu" }
   loadMenu { "ui_mp/menus/options_sound_pc_ingame.menu" }
   loadMenu { "ui_mp/menus/options_control_defaults_ingame.menu" }
   loadMenu { "ui_mp/menus/options_graphics_defaults_ingame.menu" }
   loadMenu { "ui_mp/menus/options_voice_ingame.menu" }
   loadMenu { "ui_mp/menus/options_multi_ingame.menu" }
   loadMenu { "ui_mp/menus/controls_multi_ingame.menu" }
   loadMenu { "ui/vid_restart_pc.menu" }
   loadMenu { "ui/snd_restart.menu" }

   loadMenu { "ui/pregame.menu" }

   loadMenu { "ui/savegame_loading.menu"}
   loadMenu { "ui/savegame_info.menu" }

   loadMenu { "ui/menus/special_features.menu" }
   loadMenu { "ui/menus/invert_axis_pc.menu" }
   loadMenu { "ui/menus/select_difficulty.menu" }
   loadMenu { "ui/difficulty.menu" }
   loadMenu { "ui/popup_leavegame.menu" }
   loadMenu { "ui/popup_ingame.menu" }
        ////loadMenu { "ui_mp/menus/options_game_pc_ingame.menu" }  ////AllMoDs 1/6/2018 referred file does
        //not   exist///////////////
       
}


you will see this
loadMenu { "ui/_yourmenu.menu" } /// your .menu   #1
loadMenu { "ui/_yourmenu2.menu" } /// your .menu #2
add as maney as needed

step 3
add this to mod csv
Spoiler: click to open...
menufile,ui/ingame.txt


note
if you are building your mod and you get a error about duplicate menu
take any
menufile,ui
menufile,ui_mp
files out of mod csv you added the error will teal you what one " they will still get added because of the ingame.txt"
depending on the menu you use the error will give you the menu name not the file name


bugs
the option that has subtitle  settings in it is not there "ingame only"
the option to bind a key for talking and text in it is not there "ingame only"

todo
I will pull the menu files that run the above things and add them in


when you name your menus names, name them the same thing as the file with out the _

so lets say my menu file is _allmodsstore.menu

menu name in file needs to look like this
Spoiler: click to open...
menuDef
{
   name "allmodsstore"



step 4 optional
make a new menu file with this name
Spoiler: click to open...
allmods_setup_common.menu

put this in it
[noae][noae][noae][noae]
Code Snippet
Plaintext
//#define ENABLE_BUTTON_BG		1	// enables button background image
#define ENABLE_SEPARATOR 1 // enables separator bars
#define ENABLE_TITLE_BG 1 // enables menu title background graphics

/*
#ifndef CHOICE_SIZE_X
#error "CHOICE_SIZE_X undefined"
#endif
#ifndef CHOICE_SIZE_Y
#error "CHOICE_SIZE_Y undefined"
#endif
*/

#ifndef CHOICE_SIZE_X
#define CHOICE_SIZE_X 150
#endif

#ifndef CHOICE_SIZE_Y
#define CHOICE_SIZE_Y 22
#endif

#ifndef CHOICE_SIDEITEM_SIZE_X
#define CHOICE_SIDEITEM_SIZE_X 64
#endif
#ifndef CHOICE_SIDEITEM_SPACING
#define CHOICE_SIDEITEM_SPACING 16
#endif

#ifndef CHOICE_GROUP
#define CHOICE_GROUP ""
#endif

#ifndef CHOICE_X_START
#define CHOICE_X_START 1 // +=right  -=left how far left and right ...
#endif

#ifndef CHOICE_X_SPACING
#define CHOICE_X_SPACING 25 //25 is min  // Allmods SPACING from left to right between buttons
#endif

#ifndef CHOICE_Y_START
#define CHOICE_Y_START -40// +=up -=down// up down all buttions
#endif

#ifndef CHOICE_Y_SPACING
#define CHOICE_Y_SPACING 20
#endif

#ifndef CHOICE_Y_COUNT
#define CHOICE_Y_COUNT 20
#endif

#ifndef CHOICE_TEXT_OFFSET_X
#define CHOICE_TEXT_OFFSET_X 22
#endif

#ifndef SECTION_TEXT_OFFSET_X
#define SECTION_TEXT_OFFSET_X 0
#endif

#ifndef CHOICE_ACCEPT_ALIGN_X
#define CHOICE_ACCEPT_ALIGN_X 6
#endif

#ifndef CHOICE_ACCEPT_ALIGN_Y
#define CHOICE_ACCEPT_ALIGN_Y 2
#endif

#ifndef NEW_X_OFFSET
#define NEW_X_OFFSET 0
#endif

#ifndef NEW_Y_OFFSET
#define NEW_Y_OFFSET 0
#endif

#ifndef TITLE_Y_OFFSET
#define TITLE_Y_OFFSET 0
#endif

#ifndef TITLE_X_OFFSET
#define TITLE_X_OFFSET 0
#endif

#ifndef CHOICE_FOCUS_SOUND
#define CHOICE_FOCUS_SOUND ""
#endif

#ifndef CHOICE_ACTION_SOUND
#define CHOICE_ACTION_SOUND "mouse_click"
#endif

#ifndef CHOICE_TEXTSIZE
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
#endif

#ifndef CHOICE_TEXTFONT
#define CHOICE_TEXTFONT UI_FONT_NORMAL
#endif

#ifndef CHOICE_HEADERCOLOR
#define CHOICE_HEADERCOLOR 0 0 0 0
#endif

#ifndef CHOICE_TEXTCOLOR
#define CHOICE_TEXTCOLOR 0 0 0 0//1 1 1 1
#endif

#ifndef CHOICE_TEXTCOLOR_CAPT
#define CHOICE_TEXTCOLOR_CAPT CHOICE_TEXTCOLOR
#endif

#ifndef CHOICE_TEXTSTYLE
#define CHOICE_TEXTSTYLE 0
#endif

#ifndef CHOICE_TEXTALIGN
#define CHOICE_TEXTALIGN ITEM_ALIGN_MIDDLE_LEFT
#endif

#ifndef ALT_HINT_X_OFFSET
#define ALT_HINT_X_OFFSET -16
#endif

#ifndef SECTION_X_OFFSET
#define SECTION_X_OFFSET 0
#endif

#ifndef SECTION_Y_OFFSET
#define SECTION_Y_OFFSET 0
#endif

#ifndef CHOICE_TEXTCOLOR_DISABLED
#define CHOICE_TEXTCOLOR_DISABLED 0 0 0 0
#endif

#ifndef CHOICE_TEXTCOLOR_SELECTABLE
#define CHOICE_TEXTCOLOR_SELECTABLE 0 0 0 0
#endif

#ifndef CHOICE_SEP_WIDTH
#define CHOICE_SEP_WIDTH 130
#endif

#ifndef CHOICE_SEP_OFFSET_X
#define CHOICE_SEP_OFFSET_X 0
#endif

#ifndef CHOICE_SEP_OFFSET_Y
#define CHOICE_SEP_OFFSET_Y 0
#endif

#ifndef CHOICE_DVAR_WIDTH_OFFSET
#define CHOICE_DVAR_WIDTH_OFFSET 120
#endif

#ifndef CHOICE_DVAR_TEXTALIGN
#define CHOICE_DVAR_TEXTALIGN ITEM_ALIGN_MIDDLE_LEFT //ITEM_ALIGN_MIDDLE_RIGHT
#endif

#ifndef CHOICE_DVAR_OFFSET_X
#define CHOICE_DVAR_OFFSET_X (0 - CHOICE_TEXT_OFFSET_X)
#endif

#ifndef CHOICE_SEP_BACKGROUND
#define CHOICE_SEP_BACKGROUND "menu_button_backing"
#endif

#ifndef HIGHLIGHT_SHADER_ART
#define HIGHLIGHT_SHADER_ART "button_highlight_end"
#endif

#ifndef ALTERNATE_HINT_SHADER
#define ALTERNATE_HINT_SHADER "alternate_hint"
#endif

#ifndef ALTERNATE_HINT_COLOR
#define ALTERNATE_HINT_COLOR 0 0 0 0 //0.55 0.95 0.55 0.9//0 1 0 0.35//0.75 .75 0.8 1
#endif

#ifndef HIGHLIGHT_COLOR
#define HIGHLIGHT_COLOR 0 0 0 0
#endif

#ifndef HIGHLIGHT_BORDER_COLOR
#define HIGHLIGHT_BORDER_COLOR 0 0 0 0
#endif

#ifndef CHOICE_HORIZONTAL_ALIGN
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_DEFAULT
#endif

#ifndef CHOICE_VERTICAL_ALIGN
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_DEFAULT
#endif

#ifndef HIGHLIGHT_BORDER
#define HIGHLIGHT_BORDER WINDOW_BORDER_RAISED
#endif

#ifndef HIGHLIGHT_SHADER
#define HIGHLIGHT_SHADER "menu_button_backing_highlight"
#endif

#ifndef A_BUTTON_SIZE
#define A_BUTTON_SIZE 0.4//0.33
#endif

#ifndef A_BUTTON_OFFSET_X
#define A_BUTTON_OFFSET_X 0//(0-4)
#endif

#ifndef A_BUTTON_FONT
#define A_BUTTON_FONT UI_FONT_NORMAL
#endif

#ifndef A_BUTTON_OFFSET_Y
#define A_BUTTON_OFFSET_Y 0
#endif


#ifdef PS3
#define A_BUTTON_BG_COLOR 0 0 0 0
#else
#define A_BUTTON_BG_COLOR 0 0 0 0
#endif

#define A_BUTTON_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL

#ifndef A_BUTTON_COLOR
#define A_BUTTON_COLOR 0 0 0 0
#endif

#ifndef BUTTON_BG_COLOR
#define BUTTON_BG_COLOR .0 .0 .0 .0//0 0 0 0.5
#endif

// ------------ splitscreen ----------------


// -----------------------------------------

#if !defined( CHOICE_SEP_1 ) || !defined( CHOICE_SEP_SPACING )
#define CHOICE_SEP_TOTAL_SPACING( itemIndex ) 0
#elif !defined( CHOICE_SEP_2 )
#define CHOICE_SEP_TOTAL_SPACING( itemIndex ) ((itemIndex <= CHOICE_SEP_1) ? 0 : CHOICE_SEP_SPACING )
#elif !defined( CHOICE_SEP_3 )
#define CHOICE_SEP_TOTAL_SPACING( itemIndex ) ((itemIndex <= CHOICE_SEP_1) ? 0 : ( (itemIndex <= CHOICE_SEP_2) ? CHOICE_SEP_SPACING : CHOICE_SEP_SPACING * 2 ) )
#else
#define CHOICE_SEP_TOTAL_SPACING( itemIndex ) ((itemIndex <= CHOICE_SEP_1) ? 0 : ( (itemIndex <= CHOICE_SEP_2) ? CHOICE_SEP_SPACING : ( (itemIndex <= CHOICE_SEP_3) ? CHOICE_SEP_SPACING * 2 : CHOICE_SEP_SPACING * 3) ) )
#endif

#define CHOICE_ROW( itemIndex ) ((itemIndex - 1) % CHOICE_Y_COUNT)
#define CHOICE_COL( itemIndex ) ((itemIndex - 1 - ((itemIndex - 1) % CHOICE_Y_COUNT)) / CHOICE_Y_COUNT)


#ifdef PC
#ifndef CHOICE_Y_OFFSET
#define CHOICE_Y_OFFSET 40
#endif
#else
#define CHOICE_Y_OFFSET 0
#endif

#define CHOICE_X( itemIndex ) (CHOICE_X_START + CHOICE_X_SPACING * CHOICE_COL( itemIndex ))
#define CHOICE_Y( itemIndex ) (CHOICE_Y_START + CHOICE_Y_OFFSET + CHOICE_Y_SPACING * CHOICE_ROW( itemIndex ) + CHOICE_SEP_TOTAL_SPACING( itemIndex ))
#define CHOICE_ORIGIN( itemIndex ) CHOICE_X( itemIndex ) CHOICE_Y( itemIndex )
#define CHOICE_RECT( itemIndex ) CHOICE_ORIGIN( itemIndex ) CHOICE_SIZE_X CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN

#define FOOTNOTE_RECT( x, y ) x y 240 60 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN

// ======================================================================================================================================
// ======================================================================================================================================
// ======================================================================================================================================

#define CHOICE_HIGHLIGHT( itemIndex, vis ) \
CHOICE_HIGHLIGHT_CUSTOM( itemIndex, HIGHLIGHT_COLOR, HIGHLIGHT_BORDER_COLOR, vis )

#define UI_EDGE( porigin, palign, poffset_x, poffset_y, pcolor ) \
UI_EDGE_RAW( porigin, palign, 5, 20, poffset_x, poffset_y, pcolor )

#define UI_EDGE_REVERSE( porigin, palign, poffset_x, poffset_y, pcolor ) \
UI_EDGE_RAW( porigin, palign, -5, 20, poffset_x, poffset_y, pcolor )

#define UI_EDGE_RAW( porigin, palign, pw, ph, poffset_x, poffset_y, pcolor ) \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect porigin pw ph palign \
origin poffset_x poffset_y \
background HIGHLIGHT_SHADER_ART \
forecolor pcolor \
visible 1; \
decoration \
} \

#define CHOICE_BUTTON_BG( itemIndex, visArg ) \
CHOICE_BUTTON_BG_RAW( itemIndex, "menu_button_backing", BUTTON_BG_COLOR, visArg )

#define CHOICE_BUTTON_BG_RAW( itemIndex, bgimage, foreColorArg, visArg ) \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X-(CHOICE_SIZE_Y/4)) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
exp material( bgimage ); \
forecolor foreColorArg \
visible visArg; \
decoration \
}

#define CHOICE_HIGHLIGHT_CUSTOM( itemIndex, foreColorArg, borderColorArg, visArg ) \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X-(CHOICE_SIZE_Y/4)) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
background "menu_button_backing_highlight" \
forecolor 0 0 0 0 \
border HIGHLIGHT_BORDER \
bordersize 2 \
bordercolor borderColorArg \
visible when( localVarInt( ui_highlight ) == itemIndex && localVarString( ui_choicegroup ) == CHOICE_GROUP && visArg ); \
decoration \
} \
CHOICE_ACCEPT_HINT( itemIndex, visArg )

#define CHOICE_HIGHLIGHT_CUSTOM_NOICON( itemIndex, foreColorArg, borderColorArg, visArg ) \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X-(CHOICE_SIZE_Y/4)) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
background "menu_button_backing_highlight" \
forecolor foreColorArg \
border HIGHLIGHT_BORDER \
bordersize 2 \
bordercolor borderColorArg \
visible when( localVarInt( ui_highlight ) == itemIndex && localVarString( ui_choicegroup ) == CHOICE_GROUP && visArg ); \
decoration \
} \

// used for custom highlights for itemDefs that are special and can not use itemIndex or complie with the strict alignment of this macro set
#define CHOICE_HIGHLIGHT_CUSTOM_2( px, py, pw, ph, visArg ) \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect (px+(ph/4)) py (-(pw-(ph/4))) ph CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
background HIGHLIGHT_SHADER \
forecolor BUTTON_BG_COLOR \
visible 1 \
decoration \
} \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect (px+(ph/4)) py (-(pw-(ph/4))) ph CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
background HIGHLIGHT_SHADER \
forecolor HIGHLIGHT_COLOR \
visible visArg \
decoration \
}

//CHOICE_TEXT_OFFSET_X

#if defined( CONSOLE ) && !defined( SPLITSCREEN )
#define CHOICE_ACCEPT_HINT( itemIndex, vis ) \
itemDef \
{ \
rect CHOICE_RECT( itemIndex ) \
origin A_BUTTON_OFFSET_X A_BUTTON_OFFSET_Y \
text "@PLATFORM_UI_SELECTBUTTON" \
textfont A_BUTTON_FONT \
textscale A_BUTTON_SIZE \
textstyle A_BUTTON_TEXTSTYLE \
textAlign CHOICE_TEXTALIGN \
textAlignX 0\
textAlignY -1\
forecolor 1 1 1 1 \
visible when( localVarInt( ui_highlight ) == itemIndex && localVarString( ui_choicegroup ) == CHOICE_GROUP && vis ); \
decoration \
}
#else // #if defined( CONSOLE ) && !defined( SPLITSCREEN )
#define CHOICE_ACCEPT_HINT( itemIndex, vis )
#endif // #else // #if defined( CONSOLE ) && !defined( SPLITSCREEN )

#ifdef CONSOLE
#define TITLE_STRIP \
/* title bar */ \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect -5 40 640 25 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN \
background "menu_lobby_title_back" \
forecolor 0.2137 0.2346 0.2398 0.75 \
/*forecolor COLOR_TITLEBAR*/ \
visible 1 \
decoration \
} \
/* bottom white strip */ \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect -107 65 854 1 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN \
background "menu_white_line_faded" \
forecolor 0.20 0.216 0.22 1 \
visible 1 \
decoration \
}

#define OVERLAY_TITLE_STRIP \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect -107 66 500 27 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN \
background "gradient" \
forecolor COLOR_TITLEBAR \
visible 1 \
decoration \
}
#else // #ifdef CONSOLE
#define TITLE_STRIP
#define OVERLAY_TITLE_STRIP
#endif // #else // #ifdef CONSOLE

#define CHOICE_MENU_TITLE_SS( titleArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect 22 5 100 100 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP \
origin ORIGIN_TITLE \
forecolor COLOR_TITLE \
exp text( titleArg ) \
textalignx -14 \
textfont UI_FONT_NORMAL \
textscale TEXTSIZE_DEFAULT \
textstyle CHOICE_TEXTSTYLE \
textalign ITEM_ALIGN_TOP_LEFT \
visible 1 \
decoration \
}

#define CHOICE_MENU_TITLE_NO_STRIP( titleArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect 22 5 100 100 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP \
origin ORIGIN_TITLE \
forecolor COLOR_TITLE \
exp text( titleArg ) \
textfont UI_FONT_NORMAL \
textscale TEXTSIZE_TITLE \
textstyle CHOICE_TEXTSTYLE \
textalign ITEM_ALIGN_TOP_LEFT \
textaligny TITLE_Y_OFFSET \
textalignx TITLE_X_OFFSET \
visible 1 \
decoration \
}

#define CHOICE_MENU_TITLE( titleArg ) \
/* white bar backing */ \
TITLE_STRIP \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect 22 5 100 100 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP \
origin ORIGIN_TITLE \
forecolor COLOR_TITLE \
exp text( titleArg ) \
textfont UI_FONT_OBJECTIVE \
textscale TEXTSIZE_TITLE \
textstyle CHOICE_TEXTSTYLE \
textalign ITEM_ALIGN_TOP_LEFT \
textaligny TITLE_Y_OFFSET \
textalignx TITLE_X_OFFSET \
visible 1 \
decoration \
}

#define CHOICE_MENU_TITLE_VIS( titleArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect 22 5 100 100 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP \
origin ORIGIN_TITLE \
forecolor COLOR_TITLE \
text titleArg \
textfont UI_FONT_NORMAL \
textscale TEXTSIZE_TITLE \
textstyle CHOICE_TEXTSTYLE \
textalign ITEM_ALIGN_TOP_LEFT \
visible when( visArg ) \
decoration \
}

#define CHOICE_OVERLAY_TITLE( titleArg ) \
CHOICE_OVERLAY_TITLE_VIS( titleArg, 1 )

#define CHOICE_OVERLAY_TITLE_VIS( titleArg, visArg ) \
/* black bar backing */ \
/*OVERLAY_TITLE_STRIP*/ \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect 22 32 100 100 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP \
origin ORIGIN_TITLE \
forecolor COLOR_TITLE \
exp text( titleArg ) \
textfont UI_FONT_NORMAL \
textscale TEXTSIZE_TITLE \
textstyle CHOICE_TEXTSTYLE \
textalign ITEM_ALIGN_TOP_LEFT \
textaligny TITLE_Y_OFFSET \
textalignx TITLE_X_OFFSET \
visible visArg \
decoration \
}

#define CHOICE_OVERLAY_SUB_TITLE( titleArg ) \
CHOICE_OVERLAY_SUB_TITLE_VIS( titleArg, 1 )

#ifdef PC
#define CHOICE_OVERLAY_SUB_TITLE_VIS( titleArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect 22 58 300 100 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP \
origin ORIGIN_TITLE \
forecolor COLOR_TITLE \
exp text( titleArg ) \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
textalign ITEM_ALIGN_TOP_LEFT \
textaligny TITLE_Y_OFFSET \
textalignx TITLE_X_OFFSET \
visible visArg \
autowrapped\
decoration \
}
#else
#define CHOICE_OVERLAY_SUB_TITLE_VIS( titleArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect 22 58 100 100 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP \
origin ORIGIN_TITLE \
forecolor COLOR_TITLE \
exp text( titleArg ) \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
textalign ITEM_ALIGN_TOP_LEFT \
textaligny TITLE_Y_OFFSET \
textalignx TITLE_X_OFFSET \
visible visArg \
decoration \
}
#endif

#define CHOICE_SECTION_TITLE( itemIndex, titleArg ) \
CHOICE_SECTION_TITLE_VIS( itemIndex, titleArg, 1 )

#define CHOICE_SECTION_TITLE_VIS( itemIndex, titleArg, visArg ) \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect (SECTION_X_OFFSET+0) (SECTION_Y_OFFSET+3) 245 1 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
origin CHOICE_ORIGIN( itemIndex ) \
background "menu_white_line_faded" \
forecolor 0 0 0 0 \
visible visArg \
decoration \
} \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect (SECTION_X_OFFSET+0) (SECTION_Y_OFFSET+4) 245 17 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
origin CHOICE_ORIGIN( itemIndex ) \
background "menu_black_line" \
forecolor 0 0 0 0 \
visible visArg \
decoration \
} \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect (SECTION_X_OFFSET+0) (SECTION_Y_OFFSET+21) 245 1 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
origin CHOICE_ORIGIN( itemIndex ) \
background "menu_white_line_faded" \
forecolor 0 0 0 0 \
visible visArg \
decoration \
} \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect (SECTION_X_OFFSET+0) (SECTION_Y_OFFSET-1) 245 24 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
origin CHOICE_ORIGIN( itemIndex ) \
forecolor 0 0 0 0 \
exp text( titleArg );\
textstyle ITEM_TEXTSTYLE_SHADOWED \
textfont UI_FONT_OBJECTIVE \
textscale TEXTSIZE_DEFAULT \
textstyle CHOICE_TEXTSTYLE \
textAlign ITEM_ALIGN_MIDDLE_CENTER \
textAlignX SECTION_TEXT_OFFSET_X \
visible visArg \
decoration \
}


#define CHOICE_SEPARATOR( afterItemIndex ) \
CHOICE_SEPARATOR_VIS( afterItemIndex, when( ENABLE_SEPARATOR ) )

#define CHOICE_SEPARATOR_VIS( afterItemIndex, visArg ) \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect (CHOICE_SEP_OFFSET_X) (CHOICE_Y_SPACING + CHOICE_SEP_SPACING / 2 + CHOICE_SEP_OFFSET_Y ) CHOICE_SEP_WIDTH 1 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
origin CHOICE_ORIGIN( afterItemIndex ) \
background CHOICE_SEP_BACKGROUND \
forecolor 0 0 0 0 \
visible visArg \
decoration \
}

#define CHOICE_BUTTON( itemIndex, textArg, actionArg ) \
CHOICE_BUTTON_VIS( itemIndex, textArg, actionArg, 1 )

#define CHOICE_BUTTON_NOHI( itemIndex, textArg, actionArg ) \
CHOICE_BUTTON_VIS_NOHI( itemIndex, textArg, actionArg, 1 )

#define CHOICE_BUTTON_VIS( itemIndex, textArg, actionArg, visArg ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
CHOICE_HIGHLIGHT( itemIndex, 1 ) \
CHOICE_BUTTON_VIS_NOHI( itemIndex, textArg, actionArg, visArg )

#define CHOICE_BUTTON_VIS_ADV( itemIndex, textArg, actionArg, visArg, vis ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
CHOICE_HIGHLIGHT( itemIndex, vis ) \
CHOICE_BUTTON_VIS_NOHI( itemIndex, textArg, actionArg, visArg )

#define CHOICE_BUTTON_VIS_NOHI( itemIndex, textArg, actionArg, visArg ) \
CHOICE_BUTTON_FOCUS_VIS_NOHI( itemIndex, textArg, actionArg, ;, ;, visArg )

#define CHOICE_BUTTON_FOCUS( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg ) \
CHOICE_BUTTON_FOCUS_VIS( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, 1 )

#define CHOICE_BUTTON_FOCUS_NOHI( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg ) \
CHOICE_BUTTON_FOCUS_VIS_NOHI( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, 1 )

#define CHOICE_BUTTON_FOCUS_VIS( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
CHOICE_HIGHLIGHT( itemIndex, 1 ) \
CHOICE_BUTTON_FOCUS_VIS_NOHI( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg )

#define CHOICE_BUTTON_FOCUS_VIS_NOICON( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
CHOICE_HIGHLIGHT_CUSTOM_NOICON( itemIndex, HIGHLIGHT_COLOR, HIGHLIGHT_BORDER_COLOR, 1 ) \
CHOICE_BUTTON_FOCUS_VIS_NOHI_NOICON( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg )

#define CHOICE_BUTTON_FOCUS_VIS_NOHI_NOICON( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg ) \
CHOICE_BUTTON_FOCUS_VIS_NOHI( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg )

#define CHOICE_BUTTON_FOCUS_VIS_ADV( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg, vis ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
CHOICE_HIGHLIGHT( itemIndex, vis ) \
CHOICE_BUTTON_FOCUS_VIS_NOHI( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg )

#define CHOICE_BUTTON_FOCUS_VIS_NOHI( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg ) \
CHOICE_BUTTON_FOCUS_VIS_NOHI_EX( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg, ; )

#define CHOICE_BUTTON_EX( itemIndex, textArg, actionArg, extraArgs ) \
CHOICE_BUTTON_BG( itemIndex, 1 ) \
CHOICE_HIGHLIGHT( itemIndex, 1 ) \
CHOICE_BUTTON_FOCUS_VIS_NOHI_EX( itemIndex, textArg, actionArg, ;, ;, 1, extraArgs )

#define CHOICE_BUTTON_NOHI_EX( itemIndex, textArg, actionArg, extraArgs ) \
CHOICE_BUTTON_FOCUS_VIS_NOHI_EX( itemIndex, textArg, actionArg, ;, ;, 1, extraArgs )

#define CHOICE_BUTTON_EX_ADV( itemIndex, textArg, actionArg, extraArgs, visArg ) \
CHOICE_BUTTON_BG( itemIndex, 1 ) \
CHOICE_HIGHLIGHT( itemIndex, 1 ) \
CHOICE_BUTTON_FOCUS_VIS_NOHI_EX( itemIndex, textArg, actionArg, ;, ;, visArg, extraArgs )

#define CHOICE_BUTTON_FOCUS_VIS_EX( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg, extraArgs ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
CHOICE_HIGHLIGHT( itemIndex, 1 ) \
CHOICE_BUTTON_FOCUS_VIS_NOHI_EX( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg, extraArgs )

#define CHOICE_BUTTON_FOCUS_VIS_EX_ADV( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg, extraArgs, vis ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
CHOICE_HIGHLIGHT( itemIndex, vis ) \
CHOICE_BUTTON_FOCUS_VIS_NOHI_EX( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg, extraArgs )

#define CHOICE_BUTTON_FOCUS_VIS_NOHI_EX( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, visArg, extraArgs ) \
itemDef \
{ \
type ITEM_TYPE_BUTTON \
rect CHOICE_RECT( itemIndex ) \
exp text( textArg ); \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
textAlign CHOICE_TEXTALIGN \
textAlignX CHOICE_TEXT_OFFSET_X \
forecolor CHOICE_TEXTCOLOR \
visible visArg \
extraArgs \
CHOICE_SCRIPTS_ALL( itemIndex, actionArg, onFocusArg, leaveFocusArg ) \
} \

#define CHOICE_BUTTON_COLOR_VIS( itemIndex, textArg, colorArg, visArg ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
CHOICE_BUTTON_FOCUS_COLOR_VIS_NOHI_EX( itemIndex, textArg, ;, ;, ;, colorArg, visArg, ; ) \

#define CHOICE_BUTTON_FOCUS_COLOR_VIS_NOHI_EX( itemIndex, textArg, actionArg, onFocusArg, leaveFocusArg, colorArg, visArg, extraArgs ) \
itemDef \
{ \
type ITEM_TYPE_BUTTON \
rect CHOICE_RECT( itemIndex ) \
exp text( textArg ); \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
textAlign CHOICE_TEXTALIGN \
textAlignX CHOICE_TEXT_OFFSET_X \
forecolor colorArg \
visible visArg \
extraArgs \
CHOICE_SCRIPTS_ALL( itemIndex, actionArg, onFocusArg, leaveFocusArg ) \
} \

#define CHOICE_DBUTTON_VIS( itemIndex, textArg, visArg ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect CHOICE_RECT( itemIndex ) \
exp text( textArg ); \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
textAlign CHOICE_TEXTALIGN \
textAlignX CHOICE_TEXT_OFFSET_X \
forecolor CHOICE_TEXTCOLOR_DISABLED \
visible visArg \
decoration \
} \

#define CHOICE_DBUTTON_NO_BG_VIS( itemIndex, textArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect CHOICE_RECT( itemIndex ) \
exp text( textArg ); \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
textAlign CHOICE_TEXTALIGN \
textAlignX CHOICE_TEXT_OFFSET_X \
forecolor CHOICE_TEXTCOLOR_DISABLED \
visible visArg \
decoration \
} \

#define STATUS_AREA( textArg, xArg, yArg, visArg ) \
itemDef { \
name description_status \
type ITEM_TYPE_TEXT \
rect 10 0 210 36 CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_TOP \
origin xArg yArg \
text textArg \
textfont CHOICE_TEXTFONT \
textscale TEXTSIZE_SMALL \
textaligny 16 \
forecolor COLOR_DESC_TEXT \
visible visArg \
autowrapped \
decoration \
}

#define CHOICE_DVARENUMLIST( itemIndex, textArg, dvarArg, dvarListArg, actionArg ) \
CHOICE_DVARLIST_VIS( itemIndex, textArg, dvarArg, ITEM_TYPE_DVARENUM, dvarEnumList dvarListArg, actionArg, 1 )

#define CHOICE_DVARENUMLIST_VIS( itemIndex, textArg, dvarArg, dvarListArg, actionArg, visArg ) \
CHOICE_DVARLIST_VIS( itemIndex, textArg, dvarArg, ITEM_TYPE_DVARENUM, dvarEnumList dvarListArg, actionArg, visArg )

#define CHOICE_DVARSTRINGLIST( itemIndex, textArg, dvarArg, strListArg, actionArg ) \
CHOICE_DVARLIST_VIS( itemIndex, textArg, dvarArg, ITEM_TYPE_MULTI, dvarStrList strListArg, actionArg, 1 )

#define CHOICE_DVARSTRINGLIST_VIS( itemIndex, textArg, dvarArg, strListArg, actionArg, visArg ) \
CHOICE_DVARLIST_VIS( itemIndex, textArg, dvarArg, ITEM_TYPE_MULTI, dvarStrList strListArg, actionArg, visArg )

#define CHOICE_DVARFLOATLIST( itemIndex, textArg, dvarArg, strListArg, actionArg ) \
CHOICE_DVARLIST_VIS( itemIndex, textArg, dvarArg, ITEM_TYPE_MULTI, dvarFloatList strListArg, actionArg, 1 )

#define CHOICE_DVARFLOATLIST_VIS( itemIndex, textArg, dvarArg, strListArg, actionArg, visArg ) \
CHOICE_DVARLIST_VIS( itemIndex, textArg, dvarArg, ITEM_TYPE_MULTI, dvarFloatList strListArg, actionArg, visArg )

#define CHOICE_DVARFLOATLIST_FOCUS_VIS( itemIndex, textArg, dvarArg, strListArg, actionArg, onFocusArg, leaveFocusArg, visArg ) \
CHOICE_DVARLIST_FOCUS_VIS( itemIndex, textArg, dvarArg, ITEM_TYPE_MULTI, dvarFloatList strListArg, actionArg, onFocusArg, leaveFocusArg, visArg )

#define CHOICE_DVARLIST_VIS( itemIndex, textArg, dvarArg, listTypeArg, listArg, actionArg, visArg ) \
CHOICE_DVARLIST_FOCUS_VIS( itemIndex, textArg, dvarArg, listTypeArg, listArg, actionArg, ;, ;, visArg )

#define CHOICE_DVARLIST_FOCUS_VIS( itemIndex, textArg, dvarArg, listTypeArg, listArg, actionArg, onFocusArg, leaveFocusArg, visArg ) \
CHOICE_CAPTION_VIS( itemIndex, textArg, visArg ) \
itemDef \
{ \
type listTypeArg \
dvar dvarArg \
listArg \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X+CHOICE_DVAR_WIDTH_OFFSET) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
textalign CHOICE_DVAR_TEXTALIGN \
textalignx CHOICE_DVAR_OFFSET_X \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle ITEM_TEXTSTYLE_SHADOWED \
style WINDOW_STYLE_FILLED \
forecolor CHOICE_TEXTCOLOR \
visible visArg ; \
CHOICE_SCRIPTS_ALL( itemIndex, actionArg, onFocusArg, leaveFocusArg ) \
}

#define CHOICE_DDVAR_VIS( itemIndex, textArg, dvarArg, visArg ) \
CHOICE_BUTTON_BG_RAW( itemIndex, "menu_button_backing", BUTTON_BG_COLOR, visArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
exp text( textArg ); \
rect CHOICE_RECT( itemIndex ) \
textAlign CHOICE_TEXTALIGN \
textAlignX CHOICE_TEXT_OFFSET_X \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
forecolor CHOICE_TEXTCOLOR_DISABLED \
visible visArg \
decoration \
} \
itemDef \
{ \
type ITEM_TYPE_TEXT \
dvar dvarArg \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X+CHOICE_DVAR_WIDTH_OFFSET) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
textAlign CHOICE_DVAR_TEXTALIGN \
textAlignX CHOICE_DVAR_OFFSET_X \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
forecolor CHOICE_TEXTCOLOR_DISABLED \
visible visArg \
decoration \
}

#define CHOICE_DDVARALTTEXT_VIS( itemIndex, textArg, textArg1, visArg ) \
CHOICE_BUTTON_BG_RAW( itemIndex, "menu_button_backing", BUTTON_BG_COLOR, visArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
exp text( textArg ); \
rect CHOICE_RECT( itemIndex ) \
textAlign CHOICE_TEXTALIGN \
textAlignX CHOICE_TEXT_OFFSET_X \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
forecolor CHOICE_TEXTCOLOR_DISABLED \
visible visArg \
decoration \
} \
itemDef \
{ \
type ITEM_TYPE_TEXT \
exp text( textArg1 ) \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X+CHOICE_DVAR_WIDTH_OFFSET) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
textAlign CHOICE_DVAR_TEXTALIGN \
textAlignX CHOICE_DVAR_OFFSET_X \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
forecolor CHOICE_TEXTCOLOR_DISABLED \
visible visArg \
decoration \
}

#define CHOICE_STATUS_COLOR_VIS( itemIndex, textArg, colorArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect CHOICE_RECT( itemIndex ) \
exp text( textArg ); \
textalign ITEM_ALIGN_MIDDLE_RIGHT \
textalignx (0 - CHOICE_TEXT_OFFSET_X) \
textscale CHOICE_TEXTSIZE \
style WINDOW_STYLE_FILLED \
forecolor colorArg \
visible visArg ; \
decoration \
}

#define CHOICE_NEWICON_VIS( itemIndex, imageArg, visArg ) \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect (CHOICE_X( itemIndex ) + CHOICE_SIZE_X + NEW_X_OFFSET ) (CHOICE_Y( itemIndex )+2+NEW_Y_OFFSET) (CHOICE_SIZE_Y*2) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
exp material( imageArg ) \
visible visArg ; \
decoration \
}

#define CHOICE_COLLECTIBLEICON_VIS( itemIndex, imageArg, visArg ) \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect (CHOICE_X( itemIndex ) - CHOICE_SIZE_Y ) CHOICE_Y( itemIndex ) CHOICE_SIZE_Y CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
exp material( imageArg ) \
visible visArg ; \
decoration \
}

#define CHOICE_LOCKEDICON_VIS( itemIndex, imageArg, visArg ) \
itemDef \
{ \
style WINDOW_STYLE_SHADER \
rect (CHOICE_X( itemIndex ) + CHOICE_SIZE_X + NEW_X_OFFSET ) (CHOICE_Y( itemIndex )+2+NEW_Y_OFFSET) 12 12 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
exp material( imageArg ) \
visible visArg ; \
decoration \
}

#define CHOICE_LEFTITEM_VIS( itemIndex, textArg, colorArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect (CHOICE_X( itemIndex ) - CHOICE_SIDEITEM_SIZE_X - CHOICE_SIDEITEM_SPACING) CHOICE_Y( itemIndex ) CHOICE_SIDEITEM_SIZE_X CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
exp text( textArg ); \
textalign ITEM_ALIGN_MIDDLE_LEFT \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle ITEM_TEXTSTYLE_SHADOWED \
style WINDOW_STYLE_FILLED \
forecolor colorArg \
visible visArg ; \
decoration \
}

#define CHOICE_DLEFTBUTTON_VIS( itemIndex, textArg, visArg ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect (CHOICE_X( itemIndex ) - CHOICE_SIDEITEM_SIZE_X - CHOICE_SIDEITEM_SPACING) CHOICE_Y( itemIndex ) CHOICE_SIDEITEM_SIZE_X CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
exp text( textArg ); \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle ITEM_TEXTSTYLE_SHADOWED \
style WINDOW_STYLE_FILLED \
textAlign ITEM_ALIGN_MIDDLE_LEFT \
forecolor CHOICE_TEXTCOLOR_DISABLED \
visible visArg \
decoration \
} \

#define CHOICE_LEFTITEM2_VIS( itemIndex, textArg, colorArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect (CHOICE_X( itemIndex ) - CHOICE_SIDEITEM_SIZE_X - CHOICE_SIDEITEM_SPACING - 45) CHOICE_Y( itemIndex ) CHOICE_SIDEITEM_SIZE_X CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
exp text( textArg ); \
textalign ITEM_ALIGN_MIDDLE_LEFT \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle ITEM_TEXTSTYLE_SHADOWED \
style WINDOW_STYLE_FILLED \
forecolor colorArg \
visible visArg ; \
decoration \
}

#define CHOICE_RIGHTITEM_VIS( itemIndex, textArg, colorArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect (CHOICE_X( itemIndex ) + CHOICE_SIDEITEM_SIZE_X + CHOICE_SIDEITEM_SPACING) CHOICE_Y( itemIndex ) CHOICE_SIDEITEM_SIZE_X CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
exp text( textArg ); \
textalign ITEM_ALIGN_MIDDLE_RIGHT \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle ITEM_TEXTSTYLE_SHADOWED \
style WINDOW_STYLE_FILLED \
forecolor colorArg \
visible visArg ; \
decoration \
}

#define CHOICE_DVAREDIT_NUMERIC( itemIndex, textArg, dvarArg, max_chars, actionArg ) \
CHOICE_DVAREDIT_NUMERIC_VIS( itemIndex, textArg, dvarArg, max_chars, actionArg, 1 )

#define CHOICE_DVAREDIT_NUMERIC_VIS( itemIndex, textArg, dvarArg, max_chars, actionArg, visArg ) \
CHOICE_CAPTION_VIS( itemIndex, textArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_NUMERICFIELD \
text " " \
dvar dvarArg \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X+CHOICE_DVAR_WIDTH_OFFSET) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
textalign ITEM_ALIGN_MIDDLE_LEFT \
textalignx (CHOICE_SIZE_X+8) /*(-(CHOICE_TEXT_OFFSET_X))*/ \
textscale CHOICE_TEXTSIZE \
textstyle ITEM_TEXTSTYLE_SHADOWED \
style WINDOW_STYLE_FILLED \
forecolor CHOICE_TEXTCOLOR \
visible visArg \
maxChars max_chars \
CHOICE_SCRIPTS_ACTION( itemIndex, actionArg ) \
}


#define CHOICE_DVAREDIT( itemIndex, textArg, dvarArg, actionArg ) \
CHOICE_DVAREDIT_VIS( itemIndex, textArg, dvarArg, 31, 18, actionArg, 1 )

#define CHOICE_DVAREDIT_VIS( itemIndex, textArg, dvarArg, max_chars, max_paintchars, actionArg, visArg ) \
CHOICE_CAPTION_VIS( itemIndex, textArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_EDITFIELD \
text " " \
dvar dvarArg \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X+CHOICE_DVAR_WIDTH_OFFSET) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
textalign ITEM_ALIGN_MIDDLE_LEFT \
textalignx (CHOICE_SIZE_X+8) /*(-(CHOICE_TEXT_OFFSET_X))*/ \
textscale CHOICE_TEXTSIZE \
textstyle ITEM_TEXTSTYLE_SHADOWED \
style WINDOW_STYLE_FILLED \
forecolor CHOICE_TEXTCOLOR \
visible visArg \
maxChars max_chars \
maxpaintchars max_paintchars \
CHOICE_SCRIPTS_ACTION( itemIndex, actionArg ) \
}

#define CHOICE_DVARSLIDER( itemIndex, textArg, dvarArg, defaultArg, minArg, maxArg, actionArg ) \
CHOICE_DVARSLIDER_VIS( itemIndex, textArg, dvarArg, defaultArg, minArg, maxArg, actionArg, 1 )

#define CHOICE_DVARSLIDER_VIS( itemIndex, textArg, dvarArg, defaultArg, minArg, maxArg, actionArg, visArg ) \
CHOICE_DVARSLIDER_VIS_EX( itemIndex, textArg, dvarArg, defaultArg, minArg, maxArg, actionArg, ;, 1 )

#define CHOICE_DVARSLIDER_VIS_EX( itemIndex, textArg, dvarArg, defaultArg, minArg, maxArg, actionArg, extraArg, visArg ) \
CHOICE_CAPTION( itemIndex, textArg ) \
itemDef \
{ \
type ITEM_TYPE_SLIDER \
dvarfloat dvarArg defaultArg minArg maxArg \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X+CHOICE_DVAR_WIDTH_OFFSET) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
textalign ITEM_ALIGN_MIDDLE_LEFT \
textalignx (CHOICE_SIZE_X+20) /*(-(CHOICE_TEXT_OFFSET_X))*/ \
textscale CHOICE_TEXTSIZE \
textstyle ITEM_TEXTSTYLE_SHADOWED \
style WINDOW_STYLE_FILLED \
forecolor CHOICE_TEXTCOLOR \
visible visArg \
extraArg \
CHOICE_SCRIPTS_ACTION( itemIndex, actionArg ) \
}


#define CHOICE_DVARYESNO( itemIndex, textArg, dvarArg, actionArg ) \
CHOICE_DVARYESNO_VIS( itemIndex, textArg, dvarArg, actionArg, 1 )

#define CHOICE_DVARYESNO_VIS( itemIndex, textArg, dvarArg, actionArg, visArg ) \
CHOICE_CAPTION_VIS( itemIndex, textArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_YESNO \
dvar dvarArg \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X+CHOICE_DVAR_WIDTH_OFFSET) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
textalign ITEM_ALIGN_MIDDLE_LEFT \
textalignx (CHOICE_SIZE_X+20)/*(-(CHOICE_TEXT_OFFSET_X))*/ \
textscale CHOICE_TEXTSIZE \
textstyle ITEM_TEXTSTYLE_SHADOWED \
style WINDOW_STYLE_FILLED \
forecolor CHOICE_TEXTCOLOR \
visible visArg \
CHOICE_SCRIPTS_ACTION( itemIndex, actionArg ) \
}

#define CHOICE_BIND( itemIndex, textArg, cmdArg, actionArg ) \
CHOICE_BIND_VIS( itemIndex, textArg, cmdArg, actionArg, 1, 1 )

#define CHOICE_BIND_VIS( itemIndex, textArg, cmdArg, actionArg, visArg, vis ) \
CHOICE_CAPTION_VIS( itemIndex, textArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_BIND \
dvar cmdArg \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X+120) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
textalign ITEM_ALIGN_MIDDLE_LEFT \
textalignx (CHOICE_SIZE_X+20)/*(-(CHOICE_TEXT_OFFSET_X))*/ \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
style WINDOW_STYLE_FILLED \
forecolor CHOICE_TEXTCOLOR \
visible visArg \
CHOICE_SCRIPTS_ALL( itemIndex, actionArg, show keyBindStatus, hide keyBindStatus ) \
}

#define CHOICE_BIND2( itemIndex, textArg, cmdArg, actionArg ) \
CHOICE_BIND2_VIS( itemIndex, textArg, cmdArg, actionArg, 1 )

#define CHOICE_BIND2_VIS( itemIndex, textArg, cmdArg, actionArg, visArg ) \
CHOICE_CAPTION_VIS( itemIndex, textArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_BIND2 \
dvar cmdArg \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X+120) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
textalign ITEM_ALIGN_MIDDLE_LEFT \
textalignx (CHOICE_SIZE_X+20)/*(-(CHOICE_TEXT_OFFSET_X))*/ \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
style WINDOW_STYLE_FILLED \
forecolor CHOICE_TEXTCOLOR \
visible visArg \
CHOICE_SCRIPTS_ALL( itemIndex, actionArg, show keyBindStatus, hide keyBindStatus ) \
}

#define CHOICE_BIND3( itemIndex, textArg, cmdArg, actionArg ) \
CHOICE_BIND3_VIS( itemIndex, textArg, cmdArg, actionArg, 1, 1 )

#define CHOICE_BIND3_VIS( itemIndex, textArg, cmdArg, actionArg, visArg, vis ) \
CHOICE_CAPTION_VIS22( itemIndex, textArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_BIND \
dvar cmdArg \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X+120) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
textalign ITEM_ALIGN_MIDDLE_LEFT \
textalignx (CHOICE_SIZE_X+20)/*(-(CHOICE_TEXT_OFFSET_X))*/ \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
style WINDOW_STYLE_FILLED \
forecolor CHOICE_TEXTCOLOR \
visible when(dvarInt("sub_menu") == 2 ); \ \
CHOICE_SCRIPTS_ALL( itemIndex, actionArg, show keyBindStatus, hide keyBindStatus ) \
}
#define CHOICE_CAPTION_VIS22( itemIndex, textArg, visArg ) \
CHOICE_CAPTION22_COLOR_VIS( itemIndex, textArg, CHOICE_TEXTCOLOR_CAPT, visArg )

#define CHOICE_CAPTION22_COLOR_VIS( itemIndex, textArg, colorArg, visArg ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
CHOICE_HIGHLIGHT( itemIndex, 1 ) \
itemDef \
{ \
type ITEM_TYPE_BUTTON \
rect CHOICE_RECT( itemIndex ) \
exp text( textArg ); \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
textAlign CHOICE_TEXTALIGN \
textAlignX CHOICE_TEXT_OFFSET_X \
forecolor colorArg \
visible when(dvarInt("sub_menu") == 2 ); \
decoration \
}
#define CHOICE_BIND4( itemIndex, textArg, cmdArg, actionArg ) \
CHOICE_BIND4_VIS( itemIndex, textArg, cmdArg, actionArg, 1, 1 )

#define CHOICE_BIND4_VIS( itemIndex, textArg, cmdArg, actionArg, visArg, vis ) \
CHOICE_CAPTION_VIS44( itemIndex, textArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_BIND \
dvar cmdArg \
rect CHOICE_ORIGIN( itemIndex ) (CHOICE_SIZE_X+120) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
textalign ITEM_ALIGN_MIDDLE_LEFT \
textalignx (CHOICE_SIZE_X+20)/*(-(CHOICE_TEXT_OFFSET_X))*/ \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
style WINDOW_STYLE_FILLED \
forecolor CHOICE_TEXTCOLOR \
visible when(dvarInt("sub_menu") == 1 ); \ \
CHOICE_SCRIPTS_ALL( itemIndex, actionArg, show keyBindStatus, hide keyBindStatus ) \
}
#define CHOICE_CAPTION_VIS44( itemIndex, textArg, visArg ) \
CHOICE_CAPTION44_COLOR_VIS( itemIndex, textArg, CHOICE_TEXTCOLOR_CAPT, visArg )

#define CHOICE_CAPTION44_COLOR_VIS( itemIndex, textArg, colorArg, visArg ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
CHOICE_HIGHLIGHT( itemIndex, 1 ) \
itemDef \
{ \
type ITEM_TYPE_BUTTON \
rect CHOICE_RECT( itemIndex ) \
exp text( textArg ); \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
textAlign CHOICE_TEXTALIGN \
textAlignX CHOICE_TEXT_OFFSET_X \
forecolor colorArg \
visible when(dvarInt("sub_menu") == 1 ); \
decoration \
}

#define CHOICE_CAPTION( itemIndex, textArg ) \
CHOICE_CAPTION_VIS( itemIndex, textArg, 1 )

#define CHOICE_CAPTION_COLOR( itemIndex, textArg, colorArg ) \
CHOICE_CAPTION_COLOR_VIS( itemIndex, textArg, colorArg, 1 )

#define CHOICE_CAPTION_VIS( itemIndex, textArg, visArg ) \
CHOICE_CAPTION_COLOR_VIS( itemIndex, textArg, CHOICE_TEXTCOLOR_CAPT, visArg )

#define CHOICE_CAPTION_COLOR_VIS( itemIndex, textArg, colorArg, visArg ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
CHOICE_HIGHLIGHT( itemIndex, 1 ) \
itemDef \
{ \
type ITEM_TYPE_BUTTON \
rect CHOICE_RECT( itemIndex ) \
exp text( textArg ); \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
textAlign CHOICE_TEXTALIGN \
textAlignX CHOICE_TEXT_OFFSET_X \
forecolor colorArg \
visible visArg \
decoration \
}

#define CHOICE_TEXT_VIS( itemIndex, textArg, colorArg, visArg ) \
CHOICE_BUTTON_BG( itemIndex, visArg ) \
CHOICE_HIGHLIGHT( itemIndex, 1 ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
rect CHOICE_RECT( itemIndex ) \
exp text( textArg ); \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
textAlign CHOICE_TEXTALIGN \
textAlignX CHOICE_TEXT_OFFSET_X \
forecolor colorArg \
visible visArg \
decoration \
}

#define CHOICE_SUBTEXT_COLOR_VIS( itemIndex, textArg, colorArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_BUTTON \
rect CHOICE_RECT( itemIndex ) \
exp text( textArg ); \
textfont CHOICE_TEXTFONT \
textscale CHOICE_TEXTSIZE \
textstyle CHOICE_TEXTSTYLE \
textAlign ITEM_ALIGN_MIDDLE_LEFT \
forecolor colorArg \
visible visArg \
decoration \
}


#define CHOICE_SCRIPTS_ACTION( itemIndex, actionArg ) \
CHOICE_SCRIPTS_ALL( itemIndex, actionArg, ;, ; )



#define CHOICE_SCRIPTS_ALL( itemIndex, actionArg, onFocusArg, leaveFocusArg ) \
onFocus \
{ \
setLocalVarInt ui_highlight itemIndex; \
setLocalVarString ui_choicegroup CHOICE_GROUP; \
play CHOICE_FOCUS_SOUND setdvar vile_on_1 itemIndex; \
setdvar spin 0; \
onFocusArg \
} \
leaveFocus \
{ \
setLocalVarInt ui_highlight 0 setdvar bind_on_1 0; \
setdvar spin 0; \
leaveFocusArg \
} \
action \
{ \
play CHOICE_ACTION_SOUND ; \
actionArg; \
}


#define CHOICE_APPLY( textArg, actionArg ) \
CHOICE_APPLY_VIS( textArg, actionArg, 1 )

#define CHOICE_APPLY_VIS( textArg, actionArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_BUTTON \
rect 430 422 100 16 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
text textArg \
textfont UI_FONT_NORMAL \
textscale CHOICE_TEXTSIZE \
textstyle ITEM_TEXTSTYLE_SHADOWED \
textAlign ITEM_ALIGN_MIDDLE_CENTER \
forecolor COLOR_FOCUSED \
visible visArg ; \
action \
{ \
play "mouse_click"; \
actionArg; \
} \
}

#define CHOICE_BACK( textArg, actionArg ) \
CHOICE_BACK_VIS( textArg, actionArg, 1 )

#define CHOICE_BACK_VIS( textArg, actionArg, visArg ) \
itemDef \
{ \
type ITEM_TYPE_BUTTON \
rect 270 422 100 16 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
text textArg \
textfont UI_FONT_NORMAL \
textscale CHOICE_TEXTSIZE \
textstyle ITEM_TEXTSTYLE_SHADOWED \
textAlign ITEM_ALIGN_MIDDLE_CENTER \
forecolor COLOR_FOCUSED \
visible visArg ; \
action \
{ \
play "mouse_click"; \
actionArg; \
} \
}


#define CHOICE_FOOTNOTE( textArg, x, y ) \
CHOICE_FOOTNOTE_VIS( textArg, x, y, 1 )

#define CHOICE_FOOTNOTE_VIS( textArg, x, y, visArg ) \
itemDef \
{ \
text textArg \
rect FOOTNOTE_RECT( x, y ) \
autowrapped \
textfont CHOICE_TEXTFONT \
textscale TEXTSIZE_SMALL \
textstyle ITEM_TEXTSTYLE_SHADOWED \
textalign ITEM_ALIGN_TOP_LEFT \
visible visArg \
decoration \
}


#define CHOICE_KEYBINDHELP \
itemDef \
{ \
name keyBindStatus \
rect -190 -8 300 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM \
ownerdraw UI_KEYBINDSTATUS \
textstyle ITEM_TEXTSTYLE_SHADOWED \
style WINDOW_STYLE_FILLED \
backcolor 0 0 0 0 \
forecolor .9 .9 .9 1 \
border 0 \
bordercolor .5 .5 .5 .5 \
textscale TEXTSIZE_SMALL \
textalign ITEM_ALIGN_MIDDLE_LEFT \
visible 0 \
decoration \
}

#define COLUMN_TITLE_X 100
#define COLUMN_TITLE_Y (111+21)

#define LEADERBOARD_COL_TITLE( porgin, ptext, palign ) \
LEADERBOARD_COL_TITLE_VIS( porgin, ptext, palign, 1 )

#define LEADERBOARD_COL_TITLE_VIS( porgin, ptext, palign, visArg ) \
itemDef \
{ \
type ITEM_TYPE_TEXT \
origin porgin \
text ptext \
textscale TEXTSIZE_SMALL \
textfont UI_FONT_NORMAL \
textalign palign \
forecolor 1 1 1 1 \
visible visArg \
decoration \
}



[/noae][/noae][/noae][/noae]
put file in raw/ui

add this to mod csv
Spoiler: click to open...
menufile,ui/allmods_setup_common.menu



line 317 you will see this
Spoiler: click to open...
forecolor      0 0 0 0 \

that is hiding the little bar that shows up when your mouse cursor is over a menu option
change zeros to ones to make it show again

the advantages of having my setup_common
#1 you can track which menu option your mouse is over in GSC with checking this  dvar "vile_on_1"
#2 the whole entire screen is gridded out so you can add a menu button anywhere from top to bottom 20 buttons
and from left to right 500 or more give or take
#3 added to  button binds that can be hidden CHOICE_BIND3 set to show on dvar sub_menu  = 2 and CHOICE_BIND4 set to show on dvar sub_menu  = 3



just a menu with one sub menu
and itemDef I made myself
that makes it so any image you put there becomes a button regardless of shape and size
and you can have it do things when your mouse touches it leaves off of it and when you click it
like MenuResponse "??????"; to pick up in gsc see menu for use
or to make a keypad with a combination code like I did for my map

Spoiler: click to open...
//  allmods 81 total buttons  error after that
#include "ui/menudef.h"
#include "ui/allmods_setup_common.menu"
menuDef
{
   name "SAME NAME AS FILE WITH OUT _"
   fullScreen      0            
   rect         0 0 640 480   HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN         // Size and position of the menu
   focusColor      COLOR_FOCUSED   // Menu focus color for text and items
   style         WINDOW_STYLE_SHADER
   background      "??????"
   visible when   (dvarInt("sub_menu") == 1);
   onOpen
   {
      setdvar sub_menu "1"; // CAN TAKE OUT AND SET ON CLIENT
            
   }
   onClose
   {
      setdvar sub_menu "1";
   }
   onESC
   {
      close self;
   }
   itemDef                                                      
   {                                                         
      name         "DONTMATER" 
      type         ITEM_TYPE_BUTTON
      rect         -120 -285 120 200 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM
      forecolor      1 1 1 1                               //ALLMoDs\\
      style         WINDOW_STYLE_SHADER
      background      "?????"
      visible when   (dvarInt("sub_menu") == 1);
      action
      {
         //MenuResponse "????";
         setdvar sub_menu "2";
         //close self;
      }
      mouseEnter
      {
         //MenuResponse "??????";
         //setdvar ???? "?";
      }
      mouseexit      
      {
            //setdvar ???? "9";
            //MenuResponse "??????";
      }
   }
   itemDef                                                      
   {                                                         
      name         "DONTMATER"
      type         ITEM_TYPE_BUTTON
      rect         180 -285 120 200 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM
      forecolor      1 1 1 1                               //ALLMoDs\\
      style         WINDOW_STYLE_SHADER
      background      ""?????""
      visible when   (dvarInt("sub_menu") == 2);
      action
      {
         //MenuResponse "????";
         setdvar sub_menu "1";
         //close self;
      }
      mouseEnter
      {
         //MenuResponse "??????";
         //setdvar ???? "?";
      }
      mouseexit      
      {
            //setdvar ???? "?";
            //MenuResponse "??????";
      }
   }
   /////////////sub menu 2 background ///////////
   itemDef                                                      
   {                                                         
      name         "sub_menu_2_background" 
      rect         -30 -170 100 100   HORIZONTAL_ALIGN_CENTER HORIZONTAL_ALIGN_CENTER   
      forecolor      1 1 1 1                              
      style         WINDOW_STYLE_SHADER
      background      "???????"
      visible when   (dvarInt("sub_menu") == 2);
                  
   }
   ///////////pick show when mouse is on CHOICE_BUTTON_VIS \\ localVarInt( ui_highlight ) ==  BUTTON # //////////////
   itemDef                                                      
   {                                                         
      name         "AllMoDs_Menu_1_pic" 
      rect         -30 -170 100 100   HORIZONTAL_ALIGN_CENTER HORIZONTAL_ALIGN_CENTER   
      forecolor      1 1 1 1                               //ALLMoDs\\
      style         WINDOW_STYLE_SHADER
      background      "?????"
      visible when   (localVarInt( ui_highlight ) == 1 && dvarInt("sub_menu") == 1);
                  
   }
   ///////////////////text///////////////////
   itemDef
   {
      name         "AllMoDs_Menu_3_text"
      rect         0 -400 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM
      textscale      0.5
      textstyle      ITEM_TEXTSTYLE_SHADOWEDMORE
      textfont      UI_FONT_OBJECTIVE
      textalign      ITEM_ALIGN_CENTER
      forecolor      1 1 1 1
      exp text      ("text her or a dver")
      visible when   (dvarInt("sub_menu") == 1 );
   }
   CHOICE_BUTTON_VIS( 1, "to submenu 1", setdvar sub_menu "2", when(dvarInt("sub_menu") == 1 ); )
   CHOICE_BUTTON_VIS( 1, "back to main menu", setdvar sub_menu "1", when(dvarInt("sub_menu") == 2 ); )
   //CHOICE_BUTTON_VIS( BUTTON #, "button text can have collor", action LIKE SET DVARS OR MenuResponse "????", WHEN TO AHOW; )
}

replace all ????? with proper stuff
will add more soon


6 years ago
I've been helping a few people out on custom zombie bosses
so I decided to do a few zombie bosses that are not in any maps

everything here will be fully rigged animated and all files included to add to your map


#1
PICS
Spoiler: click to open...




vids
Spoiler: click to open...




this boss will have a sword and shoot projectiles and a few other special attacks
will be a HUD display of the bosses health

will add more an update this post as I finished the bosses
6 years ago
creds
me  ;D
more to add


if you use this or my method in anyway please give proper credit
it took me awhile to get the .menu file to communicate with GSC this way
and track what button your mouse is on in gsc  & more

decided to make a public release of this with every gobblegum in it
I'm just doing the factory and the gobblegum selection as close to Black Ops 3 so I can get it
I did not do the in-game machine
there's only one variable for each gum you have to pick up to know if the person has it
so adding it to your machine will be no problem


it's can be used across multiple Maps
if the same setup is used unchanged in multiple Maps you will have the same Goblin gum and same liquid divinium
so if you play one map with this setup and go to another you'll have the same thing you had on last no matter what map you play with this setup

things still to add
Everything Has No Limit I'm going to set a 250 cap on everything

pause menu screen  display to show  what five gum you picked will also have a set up for Easter egg stuff to be displayed as well if you like

the ingame gum meter

touch up some s to make it easier to add this to your machine


all install info in download folder
will add more set notes in soon

6 years ago
does anyone know how to get the save game to work
I got the menu to show up of all your saved games on the main menu to work
I'm trying to save devars that are set to keep track of how many gobblegums you have
I want to do it in the save so if you close the game or play another map and come back you can load your gum and how many liquid divinium you have back up
6 years ago
Loading ...