I made a similar solution in the past. If you dont know how to start, I pasted my old code below, but dont forget: its only an example!!! Dont try to implement the script into your mod, because it is only a part of my complete mod. At first understand the code line by line, after you can try to write your own script. I captured 2 pictures what will help you to understand.


change_strike.menu
	PHP Code:
	
		
#include "ui_mp/menudef.h"
#define ORIGIN_CHOICE1        40 52
#define ORIGIN_CHOICE2        40 84
#define ORIGIN_CHOICE3        40 116
#define ORIGIN_CHOICE4        40 148
#define ORIGIN_CHOICE5        40 180
#define ORIGIN_CHOICE6        40 212
#define ORIGIN_CHOICE7        40 244
#define button(_name, _orig, _text, _response, _dvartest, _showdvar, _dvartest2, _showdvar2, _points, _kills) \
itemDef \
{ \
    name            _name \
    style            WINDOW_STYLE_FILLED \
    rect            0 0 256 24 0 0 \
    origin            _orig \
    backcolor        0 0 0 0.9 \
    visible            1 \
    decoration \
} \
itemDef \
{ \
    name            _name \
    style            WINDOW_STYLE_FILLED \
    rect            0 0 256 24 0 0 \
    origin            _orig \
    backcolor        1 1 1 0.9 \
    dvartest        _dvartest2 \
    showDvar        { _showdvar2 } \
    visible            1 \
    decoration \
} \
itemDef \
{ \
    name            _name \
    style            WINDOW_STYLE_SHADER \
    rect            0 0 256 24 0 0 \
    origin            _orig \
    background        "rndl_menu_corner_24" \
    visible            1 \
    decoration \
} \
itemDef \
{ \
    name            _name \
    type            ITEM_TYPE_TEXT \
    visible            1 \
    rect            8 0 0 0 0 0 \
    origin            _orig \
    forecolor        1 0.5 0 1 \
    text            _text \
    textfont        UI_FONT_NORMAL \
    textscale        .30 \
    textalign        ITEM_ALIGN_LEFT \
    textaligny        20 \
    dvartest        _dvartest \
    showDvar        { _showdvar } \
    decoration \
} \
itemDef \
{ \
    name            _name \
    type            ITEM_TYPE_TEXT \
    visible            1 \
    rect            8 0 0 0 0 0 \
    origin            _orig \
    forecolor        GLOBAL_DISABLED_COLOR \
    text            _text \
    textfont        UI_FONT_NORMAL \
    textscale        .30 \
    textalign        ITEM_ALIGN_LEFT \
    textaligny        20 \
    dvartest        _dvartest \
    hideDvar        { _showdvar } \
    decoration \
} \
itemDef \
{ \
    name            _name \
    style            WINDOW_STYLE_SHADER \
    rect            184 6 12 12 0 0 \
    origin            _orig \
    background        "rndl_menu_strikepoints" \
    visible            1 \
    dvartest        _dvartest \
    showDvar        { _showdvar } \
    decoration \
} \
itemDef \
{ \
    name            _name \
    style            WINDOW_STYLE_SHADER \
    rect            224 6 12 12 0 0 \
    origin            _orig \
    background        "rndl_menu_strikekills" \
    visible            1 \
    dvartest        _dvartest \
    showDvar        { _showdvar } \
    decoration \
} \
itemDef \
{ \
    name            _name \
    type            ITEM_TYPE_TEXT \
    visible            1 \
    rect            208 0 0 0 0 0 \
    origin            _orig \
    forecolor        1 0.5 0 1 \
    text            _points \
    textfont        UI_FONT_NORMAL \
    textscale        .30 \
    textalign        ITEM_ALIGN_RIGHT \
    textaligny        20 \
    dvartest        _dvartest \
    showDvar        { _showdvar } \
    decoration \
} \
itemDef \
{ \
    name            _name \
    type            ITEM_TYPE_TEXT \
    visible            1 \
    rect            248 0 0 0 0 0 \
    origin            _orig \
    forecolor        1 0.5 0 1 \
    text            _kills \
    textfont        UI_FONT_NORMAL \
    textscale        .30 \
    textalign        ITEM_ALIGN_RIGHT \
    textaligny        20 \
    dvartest        _dvartest \
    showDvar        { _showdvar } \
    decoration \
} \
itemDef \
{ \
    name            _name \
    visible            1 \
    rect            0 0 256 24 0 0 \
    origin            _orig \
    forecolor        GLOBAL_UNFOCUSED_COLOR \
    type            ITEM_TYPE_BUTTON \
    dvartest        _dvartest \
    showDvar        { _showdvar } \
    action \
    { \
        play "mouse_click"; \
        setdvar _dvartest2 _showdvar2; \
        scriptMenuResponse _response; \
    } \
    onFocus \
    { \
        play "mouse_over"; \
    } \
}
{
    menuDef
    {
        name            "change_strike"
        rect            GLOBAL_MENU_SIZE
        focuscolor        GLOBAL_FOCUSED_COLOR
        style            WINDOW_STYLE_EMPTY
        onOpen
        {
            setdvar ui_background "background_futuremod";
            setdvar ui_sidebar "strike";
            open "sidebar";
            open "profil";
        }
        onClose
        {
            close "sidebar";
            close "profil";
        }
        onEsc
        {
            close "change_strike";
        }
        itemDef
        {
            name        background_image
            style        WINDOW_STYLE_DVAR_SHADER
            rect        GLOBAL_BACKGROUND_SIZE
            dvar        "ui_background"
            visible        1
            decoration
        }
        itemDef
        {
            rect        40 20 128 0
            type        ITEM_TYPE_TEXT
            forecolor    GLOBAL_UNFOCUSED_COLOR
            text        "@RNDL_STRIKE_POINTS"
            textfont    UI_FONT_NORMAL
            textscale    0.30
            textaligny    0
            visible        1
            decoration
        }
        itemDef
        {
            rect        168 30 0 0
            type        ITEM_TYPE_TEXT
            forecolor    GLOBAL_UNFOCUSED_COLOR
            dvar        "ui_strikepoints"
            textfont    UI_FONT_NORMAL
            textscale    0.55
            textaligny    0
            visible        1
            decoration
        }
        itemDef
        {
            rect        192 6 20 20 0 0
            style        WINDOW_STYLE_SHADER
            background    "rndl_menu_strikepoints"
            visible        1
            decoration
        }
        button("strike_commsat", ORIGIN_CHOICE1, "@RNDL_STRIKE_COMMSAT", "CommSat", "ui_allow_commsat", "1", selected_strike1, "1", 3, 3)
        button("strike_emp", ORIGIN_CHOICE2, "@RNDL_STRIKE_EMP", "EMP", "ui_allow_emp", "1", selected_strike2, "1", 3, 4)
        button("strike_airstrike", ORIGIN_CHOICE3, "@RNDL_STRIKE_AIRSTRIKE", "Airstrike", "ui_allow_airstrike", "1", selected_strike3, "1", 5, 6)
        button("strike_predator", ORIGIN_CHOICE4, "@RNDL_STRIKE_PREDATOR", "Predator", "ui_allow_predator", "1", selected_strike4, "1", 6, 7)
        button("strike_sentry", ORIGIN_CHOICE5, "@RNDL_STRIKE_SENTRY", "Sentry", "ui_allow_sentry", "1", selected_strike5, "1", 7, 9)
        button("strike_quadrotor", ORIGIN_CHOICE6, "@RNDL_STRIKE_QROTOR", "QuadRotor", "ui_allow_quadrotor", "1", selected_strike6, "1", 8, 11)
        button("strike_drone", ORIGIN_CHOICE7, "@RNDL_STRIKE_DRONE", "Drone", "ui_allow_drone", "1", selected_strike7, "1", 10, 15)
        #include "ui_mp/scriptmenus/activitynav.menu"
    }
} 
	
 _strike.gsc
	PHP Code:
	
		
#include scripts\_utils;
#include scripts\_getset;
init()
{
    Settings();
    initStrikes();
    level.functions["onConnect"][ level.functions["onConnect"].size ] = ::RunOnConnect;
    level.functions["onDisconnect"][ level.functions["onDisconnect"].size ] = ::RunOnDisconnect;
    level.functions["onSpawn_once"][ level.functions["onSpawn_once"].size ] = ::RunOnSpawn;
    level.functions["onPlayerKilled"][ level.functions["onPlayerKilled"].size ] = ::RunOnKilled;
}
Settings()
{
    level.strikepoints = 10;
    precache_String(&"RNDL_HUD_STRIKE_PRESS");
}
initStrikes()
{
    scripts\strike\_uav::init();
    scripts\strike\_emptower::init();
    scripts\strike\_airstrike::init();
    scripts\strike\_mortar::init();
    scripts\strike\_sentry::init();
    scripts\strike\_quadrotor::init();
    scripts\strike\_drone::init();
}
RunOnConnect()
{
    player = self;
    player endon("disconnect");
    player.tmp_strikes = []; // selected strikes
    player.pers["strike"] = []; // current strikes
    player.strikes = []; // reached strikes
    player.kills = 0;
    player thread RunOnLogin();
    player thread RunOnLogout();
    for (;;)
    {
        player waittill_any("joined_team", "joined_spectators", "killed_player");
        player notify("end_strike");
    }
}
RunOnDisconnect()
{
    player = self;
    player notify("end_strike");
}
RunOnLogin()
{
    player = self;
    player.strikepoints = level.strikepoints;
    for (;;)
    {
        player waittill_any("login", "update_bonus");
        wait 0.05;
        spent = 0;
        for (i = 0; i < player getStrikes().size; i++)
        {
            spent += getStrike(player getStrikes()[ i ]).point;
        }
        player.strikepoints = level.strikepoints + getBonus("strike") - spent;
        player updateStrikeUI();
    }
}
RunOnLogout()
{
    player = self;
    for (;;)
    {
        player waittill("logout");
        /*
        for (i = 0; i < player.pers["strike"].size; i++)
        {
            strike = getStrike( player.pers["strike"][ i ] );
            player setClientCvar(strike.slot, "0");
        }*/
        player.tmp_strikes = []; // selected strikes
        player.pers["strike"] = []; // current strikes
        player.strikes = []; // reached strikes
        player.strikepoints = 0;
    }
}
RunOnSpawn()
{
    player = self;
    player.pers["strike"] = player.tmp_strikes;
    player sortStrikes();
    for (i = 0; i < 3; i++)
    {
        if (isDefined(player.pers["strike"][ i ]) && isStrike(player.pers["strike"][ i ]))
        {
            icon = getStrike( player.pers["strike"][ i ] ).icon;
            if ( isDefined(icon) && icon != "" )
                player setClientCvar("hud_strikeslot" + i, icon);
        }
        else
        {
            player setClientCvar("hud_strikeslot" + i, "hud_ksicon_empty");
        }
    }
    player thread RunLastStrike();
    player createStrikeHUD();
    player updateStrikeHUD();
}
RunOnKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration)
{
    player = self;
    player notify("end_strike");
    player.kills = 0;
    player deleteStrikeHUD();
    if (! isPlayer(eAttacker) || player == eAttacker || player.pers["team"] == eAttacker.pers["team"])
        return;
    if (! isDefined(eAttacker.pers["strike"]) || ! eAttacker.pers["strike"].size)
        return;
    oldKills = eAttacker.kills;
    eAttacker.kills++;
    for (i = 0; i < eAttacker.pers["strike"].size; i++)
    {
        strike = getStrike( eAttacker.pers["strike"][ i ] );
        if (strike.kill <= oldKills)
            continue;
        if (eAttacker.kills >= strike.kill )
        {
            eAttacker scripts\gametypes\_notification::Notification(strike.string, strike.hud, strike.sound);
            eAttacker.strikes = add_to_array(eAttacker.strikes, eAttacker.pers["strike"][ i ], false);
        }
    }
    eAttacker updateStrikeHUD();
}
RunLastStrike()
{
    player = self;
    player endon("killed_player");
    for (;;)
    {
        player waittill("menuresponse", menu, response);
        if (response == "useStrike" && player.sessionstate == "playing")
        {
            strikeName = player.strikes[ player.strikes.size - 1 ];
            if (isDefined(strikeName))
            {
                func = getStrike( strikeName ).func;
                if ( isDefined(func) )
                    player thread [[ func ]]();
            }
        }
        wait 0.5;
    }
}
addStrike(strikeName)
{
    player = self;
    strike = getStrike( strikeName );
    if ( ! is_in_array( player.tmp_strikes, strikeName ) && player.tmp_strikes.size < 3 && player.strikepoints >= strike.point )
    {
        player setClientCvar(strike.slot, "1");
        player.strikepoints -= strike.point;
        //player setStrike( strikeName );
        player.tmp_strikes = array_add(player.tmp_strikes, strikeName);
    }
    else if ( is_in_array( player.tmp_strikes, strikeName ) )
    {
        player setClientCvar(strike.slot, "0");
        player.strikepoints += strike.point;
        //player unSetStrike( strikeName );
        player.tmp_strikes = array_remove(player.tmp_strikes, strikeName);
    }
    else
    {
        player setClientCvar(strike.slot, "0");
    }
    player updateStrikeUI();
}
sortStrikes()
{
    player = self;
    if ( isDefined(player.pers["strike"]) )
    {
        temp = player.pers["strike"];
        for (i = 0; i < temp.size - 1; i++)
        {
            for (j = i + 1; j < temp.size; j++)
            {
                if (getStrike(temp[ i ]).kill > getStrike(temp[ j ]).kill)
                {
                    var = temp[ i ];
                    temp[ i ] = temp[ j ];
                    temp[ j ] = var;
                }
            }
        }
        player.pers["strike"] = temp;
    }
}
updateStrikeUI()
{
    player = self;
    player setClientCvar("ui_strikepoints", player.strikepoints);
}
updateStrikeHUD()
{
    player = self;
    remaining = 0;
    strikes = player getStrikes();
    for (i = 0; i < strikes.size; i++)
    {
        strike = getStrike(strikes[ i ]);
        if (strike.kill > player.kills)
        {
            remaining = strike.kill - player.kills;
            break;
        }
    }
    if (isDefined(player.strikecounterhud))
        player.strikecounterhud setValue(remaining);
}
createStrikeHUD()
{
    player = self;
    if (! isDefined(player.strikecounterhud))
    {
        player.strikecounterhud = newClientHudElem(player);
        player.strikecounterhud.x = -48;
        player.strikecounterhud.y = -150;
        player.strikecounterhud.alignX = "left";
        player.strikecounterhud.alignY = "top";
        player.strikecounterhud.horzAlign = "right";
        player.strikecounterhud.vertAlign = "bottom";
        player.strikecounterhud.foreground = 1;
        player.strikecounterhud.fontscale = 2.4;
        player.strikecounterhud.sort = 1;
        player.strikecounterhud.alpha = 1;
        player.strikecounterhud.color = (0/255, 125/255, 125/255);
    }
    if (! isDefined(player.strikepresshud))
    {
        player.strikepresshud = newClientHudElem(player);
        player.strikepresshud.x = 0;
        player.strikepresshud.y = -30;
        player.strikepresshud.alignX = "center";
        player.strikepresshud.alignY = "top";
        player.strikepresshud.horzAlign = "center";
        player.strikepresshud.vertAlign = "bottom";
        player.strikepresshud.foreground = 1;
        player.strikepresshud.fontscale = 0.8;
        player.strikepresshud.sort = 1;
        player.strikepresshud.alpha = 1;
        player.strikepresshud.color = (255/255, 255/255, 255/255);
        player.strikepresshud setText(&"RNDL_HUD_STRIKE_PRESS");
    }
}
deleteStrikeHUD()
{
    player = self;
    if (isDefined(player.strikecounterhud))
        player.strikecounterhud destroy();
    if (isDefined(player.strikepresshud))
        player.strikepresshud destroy();
} 
	
 And read Izno's thread: http://killtube.org/showthread.php?9...ng-the-CoD4MoD
(how the hell can i resize the inserted images?)