////////////////////////////////////////////////////////////
1.Open Client.cpp
2.Search for void drawMenu
3.Highlight all the drawMenu function
4.replace it with this code
Code:
void GlowStr(int x,int y,ColorEntry* clr,const char *fmt, ... )
{
va_list va_alist;
char buf[256];
va_start (va_alist, fmt);
_vsnprintf (buf, sizeof(buf), fmt, va_alist);
va_end (va_alist);
DrawHudString(x-2, y,clr->r,clr->g,clr->b,buf);// Left
DrawHudString(x+2, y,clr->r,clr->g,clr->b,buf);// Right
DrawHudString( x,y+2,clr->r,clr->g,clr->b,buf);// Top
DrawHudString( x,y-2,clr->r,clr->g,clr->b,buf);// Bottom
DrawHudString(x-1,y-1,clr->r,clr->g,clr->b,buf);// Left
DrawHudString(x+1,y+1,clr->r,clr->g,clr->b,buf);// Right
DrawHudString(x-1,y+1,clr->r,clr->g,clr->b,buf);// Top
DrawHudString(x+1,y-1,clr->r,clr->g,clr->b,buf);// Bottom
DrawHudString(x,y,255,255,255,buf);
}
void Border(int x,int y,int w,int h,int th,ColorEntry* clr)
{
oglSubtractive = true;
gEngfuncs.pfnFillRGBA( x-6, y-6, w+11, 1 , 0, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x-6, y-6, 1, h+12 , 0, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x+w+5, y-6, 1, h+12 , 0, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x-6, y+h+6, w+12, 1 , 0, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x-1, y-1, w+2, 1 , 0, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x-1, y-1, 1, h+2 , 0, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x-1, y+h+1, w+2, 1 , 0, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x+w, y-1, 1, h+2 , 0, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x-2, y-2, w+4, 1 , 255, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x-2, y-2, 1, h+4 , 255, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x-5, y+h+5, w+10, 1 , 255, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x+w+4, y-4, 1, h+10 , 255, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x-4, y-4, w+8, 2 , 255, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x-4, y-4, 2, h+8 , 255, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x-4, y+h+3, w+8, 2 , 255, 0, 0, 255 );
gEngfuncs.pfnFillRGBA( x+w+2, y-4, 2, h+9 , 255, 0, 0, 255 );
oglSubtractive = false;
gEngfuncs.pfnFillRGBA( x-5, y-5, w+10, 1 , 255, 255, 255, 255 );
gEngfuncs.pfnFillRGBA( x-5, y-5, 1, h+10 , 255, 255, 255, 255 );
gEngfuncs.pfnFillRGBA( x-2, y+h+2, w+4, 1 , 255, 255, 255, 255 );
gEngfuncs.pfnFillRGBA( x+w+1, y-1, 1, h+3 , 255, 255, 255, 255 );
}
void MenuStr(int x, int y, ColorEntry* clr1, ColorEntry* clr2, const char *fmt, ... )
{
va_list va_alist;
char buf[256];
va_start (va_alist, fmt);
_vsnprintf(buf, sizeof(buf), fmt, va_alist);
va_end (va_alist);
GlowStr(x,y,clr2,buf);
int w = cvar.menu_w;
tintArea(x-w/7,y-3,w,20,colorList.get(21));
Border(x-w/7-1,y-4,w,20,1,clr1);
}
void MenuSelStr(int x, int y, ColorEntry* clr1, ColorEntry* clr2, const char *fmt, ... )
{
va_list va_alist;
char buf[256];
va_start (va_alist, fmt);
_vsnprintf(buf, sizeof(buf), fmt, va_alist);
va_end (va_alist);
GlowStr(x,y,clr2,buf);
int w = cvar.menu_w;
tintArea(x-w/7,y-3,w,20,colorList.get(22));
Border(x-w/7-1,y-4,w,20,3,clr1);
}
// ========================================================================================
// Border1[white]45 Border2[red]38 Border3[blue]39
void drawMenu(ColorEntry* clr1, ColorEntry* clr2, ColorEntry* clr3)
{
if(!menu_active) return;
if(!curMenu) { curMenu = ogcMenu.baseMenu; }
vector<OgcCommandMenu::MenuEntry>& items = curMenu->items;
if (!cvar.menu)
{
int x=cvar.menu_x, y=cvar.menu_y, w=cvar.menu_w;
enum{ TEXT_H = 20 };
int title_h = TEXT_H+5;
int frame_y = cvar.menu_y - title_h;
int frame_h = items.size()*TEXT_H + title_h;
ColorEntry* clr1 = colorList.get(0);
ColorEntry* clr2 = colorList.get(2);
ColorEntry* clr3 = colorList.get(1);
// title background
if(cvar.menu==1)
{
tintArea(x,frame_y,w,title_h,colorList.get(21));
// upper background
int h1 = curMenu->selection*TEXT_H;
if(h1)
{
tintArea(x,y,w,h1,colorList.get(21));
y+=h1;
}
// selection background
tintArea(x,y,w,TEXT_H,colorList.get(22));
y+=TEXT_H;
// lower background
int numItemsLeft = items.size() - curMenu->selection - 1;
if(numItemsLeft>0)
{
tintArea(x,y,w,numItemsLeft*TEXT_H,colorList.get(21));
}
// draw frame
register int c = 200;
gEngfuncs.pfnFillRGBA(x,frame_y,w,1 ,c,c,c,c);
gEngfuncs.pfnFillRGBA(x,frame_y,1,frame_h ,c,c,c,c);
gEngfuncs.pfnFillRGBA(x+w,frame_y,1,frame_h,c,c,c,c);
gEngfuncs.pfnFillRGBA(x,frame_y+frame_h,w,1,c,c,c,c);
gEngfuncs.pfnFillRGBA(x,cvar.menu_y,w+1,1 ,c,c,c,c);
// title text
//gEngfuncs.pfnDrawSetTextColor (255,255,0);
//gEngfuncs.pfnDrawConsoleString(cvar.menu_x+10,frame_y+5, const_cast<char*>(curMenu->name.c_str()));
DrawHudString(cvar.menu_x+10,frame_y+5,255,255,255,const_cast<char*>(curMenu->name.c_str()));
// draw text
y=cvar.menu_y+4;
x+=4;
for(int i=0;i<items.size();i++)
{
OgcCommandMenu::MenuEntry& item = items;
ColorEntry* clr = colorList.get(23); // "menu_text"
gEngfuncs.pfnDrawSetTextColor(clr->onebased_r,clr->onebased_g,clr->onebased_b);
gEngfuncs.pfnDrawConsoleString(x,y,const_cast<char*>(item.name.c_str()));
y+=TEXT_H;
}
}
}
if (cvar.menu==1)
{
int x=cvar.menu_x, y=cvar.menu_y, w=cvar.menu_w;
// title text
MenuSelStr(x,y-30,clr1,clr2,const_cast<char*>(curMenu->name.c_str()));
for(int i=0;i<items.size();i++)
{
OgcCommandMenu::MenuEntry& item=items;
if(curMenu->selection == i)
MenuSelStr(x,y+(26*i),clr1,clr3,const_cast<char*>(item.name.c_str()));
else
MenuStr(x,y+(26*i),clr1,clr2,const_cast<char*>(item.name.c_str()));
}
}
}
5.Go in Hud_Redraw
6.Add this anywhere really (into hud redraw):
Code:
if (menu_active) { drawMenu(colorList.get(45),colorList.get(38),colorList.get(39)); }
7.Create a cvar called menu (if you dunno how, then read a tutorial on c++ coding)
8.Go in color.cpp and add these lines with the other lines that look the same as this code:
Code:
add("glowselclr" ,0,0,255 ); // index:46
add("glowclr" ,255,000,000 ); // index:47
Okay now to avoid confusion i've left out one step that will give you an error (you should only get 1) which should be like either a redefinition or something involving curmenu....comment out that old command (not the new one we put in) and you should get no errors
enjoy.
if you get errors paste them in here, but you shouldnt (apart from that one to which you just have to delete the line (or comment it out if your not sure thats the one)
_________________
---------------------------------------------------------------------------
FOR ERRORS
D:\John\[aRaz]\client.cpp(1446) : error C2660: 'drawMenu' : function does not take 0 parameters
and here is the code:
Code:
}
me.ent = gEngfuncs.GetLocalPlayer();
hudDrawInfoTexts();
if (cvar.radar) { drawRadarFrame (); }
if (menu_active) { drawMenu (); }
if (cvar.soundfilter) { drawSound (); }
for( ScheduleList::iterator pos = scheduleList.begin();
pos != scheduleList.end();
++pos)
{
The line its talking about is if (menu_active) { drawMenu (); [/code]
Back to top
its either you called the func twice in redraw because it says in the tut to add another call to the menu, if so just del the one with the void if there's two "menuactive" or (which i think is ur prob) is because inside if (menu_active) { drawMenu (); } theres a "void" inside the (), but where the actual code is, where it's being called, theres no void but more code. so add the code to where the void is (ColorEntry* clr1, ColorEntry* clr2, ColorEntry* clr3) or del it but i think i needs to be called.