Results 1 to 5 of 5
  1. #1
    DESIGNBABY's Avatar
    Join Date
    Mar 2011
    Gender
    male
    Posts
    5
    Reputation
    10
    Thanks
    3
    My Mood
    Happy

    Smile by. DESIGNBABY Menu

    Voltage552 menu was based. There is also the sound portion,
    On that part next time ...


    #include "stdafx.h"
    #include "cMenu.h"
    #include "cSound.h"
    #include "Sounds.h"
    //-----------------------------------------------------------------------------
    // Name: PostReset()
    // Desc: Creates Fonts and other Resources for Menu
    //-----------------------------------------------------------------------------

    void cMenu::PostReset(LPDIRECT3DDEVICE8 pDevice)
    {
    font = new cFont("Tahoma", 7, FT_BOLD);
    font->InitDeviceObjects(pDevice);
    font->RestoreDeviceObjects();

    }
    //-----------------------------------------------------------------------------
    // Name: PreReset()
    // Desc: Releases Fonts / objects for menu
    //-----------------------------------------------------------------------------

    void cMenu::PreReset(void)
    {
    font->InvalidateDeviceObjects();
    font->DeleteDeviceObjects();
    delete font;
    font = NULL;
    }

    //-----------------------------------------------------------------------------
    // Name: Init()
    // Desc: Load Menu Defaults / Prepare Menu For Usage
    //-----------------------------------------------------------------------------

    void cMenu::Init()
    {
    if (opt.options.reset)INIT=false;
    if(!INIT){
    opt.options.move=0; // BUG FIX FOR RESET DISABLE MOVE BEFORE SETTING COORDINATES
    X=Y=10; // TOP LEFT START
    WIDTH=175; // MENU WIDTH
    I_OFS=4; // OFSET FOR ITEM
    S_OFS=WIDTH-2; // OFSET FOR STATE
    T_SPC=16; // Space from Title and Start of Items
    F_SPC=16; // Footer Spacing Hook Menu
    I_SPC=15; // Item Spacing
    I_CUR=0; // Set current Item
    ABOR=0; // ANIMATION MOVE
    BDIR=0; // ANIMATION HIGHLIGHT
    SHOW=true; // false=hide true=show
    INIT=true; // STOP INITATION
    }
    }

    //-----------------------------------------------------------------------------
    // Name: FPS()
    //-----------------------------------------------------------------------------

    char* cMenu::FPS(int en)
    {
    static int FPScounter = 0;
    static float FPSfLastTickCount = 0.0f;
    static float FPSfCurrentTickCount;
    static char cfps[6] = "";

    if(!en)
    {
    FPSfCurrentTickCount = clock() * 0.001f;
    FPScounter++;

    if((FPSfCurrentTickCount - FPSfLastTickCount) > 1.0f)
    {
    FPSfLastTickCount = FPSfCurrentTickCount;
    sprintf(cfps," %d",FPScounter);
    FPScounter = 0;
    }
    }

    return cfps;

    }

    //-----------------------------------------------------------------------------
    // Name: TIME()
    // Desc: Outputs Current Time in USA Format
    //-----------------------------------------------------------------------------

    char* cMenu::TIME(void)
    {
    static char ctime[20] = "" ;
    struct tm * current_tm;
    time_t current_time;
    time (&current_time);
    current_tm = localtime (&current_time);
    if(current_tm->tm_hour>12)
    sprintf( ctime, "%d:%02d:%02d PM", current_tm->tm_hour - 12, current_tm->tm_min, current_tm->tm_sec );
    else
    sprintf( ctime, "%d:%02d:%02d AM", current_tm->tm_hour, current_tm->tm_min, current_tm->tm_sec );
    return ctime;
    }

    //-----------------------------------------------------------------------------
    // Name: DATE()
    // Desc: Outputs Current Date in USA Format
    //-----------------------------------------------------------------------------

    char* cMenu:ATE(void)
    {
    static char cdate[20] = "" ;
    struct tm * current_tm;
    time_t current_time;
    time (&current_time);
    current_tm = localtime (&current_time);
    sprintf( cdate, "%d-%02d-%d",current_tm->tm_mon+1,current_tm->tm_mday,current_tm->tm_year-100+2000);
    return cdate;
    }
    //-----------------------------------------------------------------------------
    // Name: oprintf()
    // Desc: equiv to sprintf but for output into of dest
    //-----------------------------------------------------------------------------

    char* cMenu:printf (const char *fmt, ...)
    {
    static char buffer[225] = "";
    va_list va_alist;
    va_start (va_alist, fmt);
    _vsnprintf (buffer,sizeof(buffer), fmt, va_alist);
    va_end (va_alist);
    return buffer;
    }
    //-----------------------------------------------------------------------------
    // Name: Save()
    // Desc: Saves Menu Item states for later Restoration
    //-----------------------------------------------------------------------------

    void cMenu::Save(char* szSection, char* szKey, int iValue,LPCSTR file)
    {
    char szValue[255];
    sprintf(szValue, "%d", iValue);
    WritePrivateProfileString(szSection, szKey, szValue, file);
    }

    //-----------------------------------------------------------------------------
    // Name: Load()
    // Desc: Loads Menu Item States From Previously Saved File
    //-----------------------------------------------------------------------------

    int cMenu::Load(char* szSection, char* szKey, int iDefaultValue,LPCSTR file)
    {
    int iResult = GetPrivateProfileInt(szSection, szKey, iDefaultValue, file);
    return iResult;
    }

    //-----------------------------------------------------------------------------
    // Name: additem()
    // Desc: BaseFunction for aitem,acat,and atext
    //-----------------------------------------------------------------------------

    void cMenu::additem(char *title, char *states,int type, int *var, int show, int when)
    {
    if(show==when)
    {
    strcpy(items[NO].title,title);
    getfield(states,items[NO].state,*var+1);
    items[NO].type=type;
    items[NO].max=nofields(states);
    items[NO].val=var;

    NO++;
    }
    if(type!=T_TEXT)
    {
    if (opt.options.load)
    *var = Load("Items", title, *var,Base.GetFile("mset.ini"));
    if (opt.options.save)
    Save("Items", title, *var,Base.GetFile("mset.ini"));
    if (opt.options.reset)
    *var=0;
    }
    }

    //-----------------------------------------------------------------------------
    // Name: acat()
    // Desc: Adds Folder/Category to Item index
    //-----------------------------------------------------------------------------

    void cMenu::acat(char *title, char *states,int *var)
    {
    additem(title,states,T_CAT,var,0,0);
    }
    //-----------------------------------------------------------------------------
    // Name: aitem()
    // Desc: Adds regular item to Item index
    //-----------------------------------------------------------------------------

    void cMenu::aitem(char *title, char *states,int *var,int show,int when)
    {
    additem(title,states,T_ITEM,var,show,when);
    }
    //-----------------------------------------------------------------------------
    // Name: atext()
    // Desc: Adds Text item to item index
    //-----------------------------------------------------------------------------

    void cMenu::atext(char *title, char *states,int show,int when)
    {
    additem(title,states,T_TEXT,&opt.text,show,when);
    }

    void cMenu::atext(char *title, char *states)
    {
    additem(title,states,T_TEXT,&opt.text,1,1);
    }

    //-----------------------------------------------------------------------------
    // Name: nofields()
    // Desc: Calculates Number of Fields in a String based on deliminator
    //-----------------------------------------------------------------------------

    int cMenu::nofields(char *str)
    {
    char *ptr;
    int no;
    for(no=1; (ptr=strchr(str,(char)'|'))!=NULL; no++)str=ptr+1;

    return no;
    }

    //-----------------------------------------------------------------------------
    // Name: getfield()
    // Desc: Grabs Field in string based on deliminator
    //-----------------------------------------------------------------------------

    void cMenu::getfield(char *str,char *dst,int no)
    {
    char *ptr;
    int i;
    for(i=1; (ptr=strchr(str,(char)'|'))!=NULL ; i++)
    {
    if(i==no) break;
    str=ptr+1;
    }
    if(ptr)
    {
    i=(int)(ptr-str);
    strncpy(dst,str,i);
    dst[i]=0;
    }
    else
    strcpy(dst,str);
    }

    //-----------------------------------------------------------------------------
    // Name: DrawBox()
    // Desc: Fills Rectangle using DrawPrimitive Up
    //-----------------------------------------------------------------------------

    void cMenu:rawBox( int x, int y, int w, int h, D3DCOLOR Color,LPDIRECT3DDEVICE8 pDevice)
    {
    struct Vertex
    {
    float x,y,z,ht;
    DWORD Color;
    }V[4] = {
    {x,y+h, 0.0f, 0.0f, Color},
    {x,y, 0.0f, 0.0f, Color},
    {x+w,y+h, 0.0f, 0.0f, Color},
    {x+w,y, 0.0f, 0.0f, Color}
    };
    pDevice->SetTexture(0, NULL);
    pDevice->SetVertexShader(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1);
    pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
    pDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALP HA);
    pDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,V,sizeof(Ve rtex));
    return;
    }


    //-----------------------------------------------------------------------------
    // Name: DrawBorder()
    // Desc: Fills outside of Rectangle using 4 calls to DrawBox
    //-----------------------------------------------------------------------------

    void cMenu:rawBorder( int x, int y, int w, int h, D3DCOLOR Color,LPDIRECT3DDEVICE8 pDevice)
    {
    DrawBox(x, y, 1, h,Color,pDevice);
    DrawBox(x,y+h, w, 1,Color,pDevice);
    DrawBox(x, y, w, 1,Color,pDevice);
    DrawBox(x+w,y, 1,h+1,Color,pDevice);
    return;
    }
    //-----------------------------------------------------------------------------
    // Name: ShowMenu()
    // Desc: Core Menu Function Displays Menu Calls Other Menu functions and navigation
    //-----------------------------------------------------------------------------

    void cMenu::ShowMenu(LPDIRECT3DDEVICE8 pDevice)
    {

    //-----------------------------------------------------------------------------
    // Desc: Check Hotkeys
    //-----------------------------------------------------------------------------
    int lm = GetAsyncKeyState(VK_LBUTTON)&1;
    int rm = GetAsyncKeyState(VK_RBUTTON)&1;
    int left = GetAsyncKeyState(VK_LEFT )&1;
    int right = GetAsyncKeyState(VK_RIGHT)&1;
    int up = GetAsyncKeyState(VK_UP )&1;
    int down = GetAsyncKeyState(VK_DOWN )&1;
    //-----------------------------------------------------------------------------
    // Desc: Prepare/Reset Menu
    //-----------------------------------------------------------------------------

    Init();

    //-----------------------------------------------------------------------------
    // Desc: Show The Menu
    //-----------------------------------------------------------------------------
    if(GetAsyncKeyState(VK_INSERT)&1) SHOW=(!SHOW);
    if(SHOW){

    //-----------------------------------------------------------------------------
    // Desc: Get Mouse Coordinates and translate
    //-----------------------------------------------------------------------------

    GetCursorPos(&mpos);
    ScreenToClient(GetForegroundWindow(),&mpos);

    //-----------------------------------------------------------------------------
    // Desc: Move Menu by. DESIGNBABY in NewYork !
    //-----------------------------------------------------------------------------

    //if(mpos.x>X && mpos.x<X+WIDTH && mpos.y>Y && mpos.y<Y+T_SPC && GetAsyncKeyState(VK_LBUTTON)&1 && !opt.options.move) // If Header Clicked on
    //{
    // M_DRAG=1;
    //}
    //else
    //{
    // mofs.x=mpos.x - X;
    // mofs.y=mpos.y - Y;
    //}

    //if(M_DRAG)
    //{
    // if(GetAsyncKeyState(VK_LBUTTON)&1)M_DRAG=0;
    // X = mpos.x - mofs.x;
    // Y = mpos.y - mofs.y;
    //}

    if(opt.options.move && GetAsyncKeyState(VK_LCONTROL))
    {
    X =(((X<=mpos.x+4) && (X>=mpos.x)) || ((X>=mpos.x-4) && (X<=mpos.x)))?(X=mpos.x)X+=((mpos.x-X)/4));
    Y =(((Y<=mpos.y+4) && (Y>=mpos.y)) || ((Y>=mpos.y-4) && (Y<=mpos.y)))?(Y=mpos.y)Y+=((mpos.y-Y)/4));
    }



    DrawBox(X,Y,WIDTH,T_SPC,C_BOX,pDevice);
    DrawBorder(X,Y,WIDTH,T_SPC,C_BORDER,pDevice);



    font->DrawText(MC_FCTR(X,MC_MAXX),Y+2,C_TITLE,"DESIGNBA BY Menu",DT_CENTER|DT_SHADOW);



    NO=0;
    acat("|INFO|","[0/1]|[1/1]",&opt.info.main);
    atext("By:","DESIGNBABY",opt.info.main,1);
    atext("helper:","HackMissileSale",opt.info.main,1) ;
    atext("Version","1.2 Public Release",opt.info.main,1);
    atext("FPS",FPS(0),opt.info.main,1);
    atext("Time",TIME(),opt.info.main,1);
    atext("Date",DATE(),opt.info.main,1);

    acat("|D3D|","[0/1]|[1/1]",&opt.d3d.main);
    aitem("Fog","Off|Blue|Green|Red|Purple|White|Black |None",&opt.d3d.fog,opt.d3d.main,1);
    aitem("GlassWalls","Off|On",&opt.d3d.glass,opt.d3d .main,1);
    aitem("WallEffect","Off|Ghost|Red|Blue|Yellow|Gree n",&opt.d3d.wallcolor,opt.d3d.main,1);

    acat("|CHAMS|","[0/1]|[1/1]",&opt.chams.main);
    aitem("Chams","Off|ON",&opt.chams.chams,opt.chams. main,1);
    aitem("Color 1","Red|Blue|Yellow|Green",&opt.chams.chamsf,opt.c hams.main,1);
    aitem("Color 2","Red|Blue|Yellow|Green",&opt.chams.chamsb,opt.c hams.main,1);
    aitem("Type","Clear|Phantom|Ghost|Solid",&opt.cham s.type,opt.chams.main,1);

    DrawBox(X,MC_MSY,WIDTH,(NO*I_SPC),C_BOX,pDevice);
    DrawBorder(X,MC_MSY,WIDTH,(NO*I_SPC),C_BORDER,pDev ice);


    for(int no=0; no<NO; no++)
    {
    D3DCOLOR text;

    text=(*(items[no].val)>0)?C_ON:C_OFF;

    if(items[no].type==T_CAT)
    text=C_CAT;

    if(I_CUR==no)
    {


    if(BDIR==0)
    (BTEX<0xFF/4)?BTEX+=1:BDIR=1;
    if(BDIR==1)
    (BTEX>0x00)?BTEX-=1:BDIR=0;

    if(ABOR>I_SPC*I_CUR)
    ABOR=I_SPC*I_CUR;
    else if (ABOR<(-I_SPC*I_CUR))
    ABOR=(-I_SPC*I_CUR);

    if(ABOR<0)
    ABOR++;
    else if(ABOR>0)
    ABOR--;

    text=0xFF000000+(0x10000*(BTEX*4))+(0x100*(BTEX*4) )+0x1*(BTEX*4);

    DrawBorder(X,MC_ITEMY(no)-ABOR,WIDTH,I_SPC,C_CUR,pDevice);
    }

    if(mpos.x>X && mpos.x<MC_MAXX && mpos.y>MC_ITEMY(no) && mpos.y<MC_ITEMY(no)+I_SPC)
    {
    text=0xFF000000+(0x10000*(BTEX*4))+(0x100*(BTEX*4) )+0x1*(BTEX*4);
    DrawBorder(X,MC_ITEMY(no),WIDTH,I_SPC,C_CUR,pDevic e);
    }

    font->DrawText(X+I_OFS,MC_ITEMY(no)+2,text,items[no].title,DT_SHADOW);
    font->DrawText(X+S_OFS,MC_ITEMY(no)+2,text,items[no].state,DT_RIGHT|DT_SHADOW);

    }


    DrawBox(X,MC_ITEMY(NO)+(F_SPC/2),WIDTH,(F_SPC),C_BOX,pDevice);
    DrawBorder(X,MC_ITEMY(NO)+(F_SPC/2),WIDTH,(F_SPC),C_BORDER,pDevice);

    font->DrawText(MC_FCTR(X,MC_MAXX),MC_ITEMY(NO)+(F_SPC/2)+2,RED,"[KOR Chams] DESIGNBABY",DT_CENTER|DT_SHADOW);



    int mno = 999;

    if(mpos.x>X && mpos.x<MC_MAXX && mpos.y<MC_ITEMY(NO) && mpos.y>Y)
    mno = ((mpos.y-T_SPC)>Y)?((mpos.y - Y - T_SPC - (T_SPC/2)) / I_SPC)999);

    if(mno!=999 && rm && (*items[mno].val)>0)
    {
    (*items[mno].val)-=1;
    Sound.wav.playsoundmem((LPCSTR)SWITCH);
    }

    if(mno!=999 && lm && (*items[mno].val)<(items[mno].max-1))
    {
    (*items[mno].val)+=1;
    Sound.wav.playsoundmem((LPCSTR)SWITCH);
    }



    if(left && (*items[I_CUR].val)>0)
    {
    (*items[I_CUR].val)-=1;

    Sound.wav.playsoundmem((LPCSTR)SWITCH);
    }

    if(right && (*items[I_CUR].val)<(items[I_CUR].max-1))
    {
    (*items[I_CUR].val)+=1;
    Sound.wav.playsoundmem((LPCSTR)SWITCH);
    }

    if(up)
    {
    do {
    I_CUR=(I_CUR==0)?(NO-1)I_CUR-1);
    if(ABOR>(-(I_SPC)))ABOR-=I_SPC;
    } while (items[I_CUR].type==T_TEXT);
    Sound.wav.playsoundmem((LPCSTR)MOVE);

    }

    if(down || items[I_CUR].type==T_TEXT)
    {
    do
    {
    I_CUR=(I_CUR+1)%NO;
    if(ABOR<(I_SPC))ABOR+=I_SPC;
    } while (items[I_CUR].type==T_TEXT);
    Sound.wav.playsoundmem((LPCSTR)MOVE);
    }
    //-----------------------------------------------------------------------------
    // Desc: Menu Saftey / Sanity Checks and ReEncryption
    //-----------------------------------------------------------------------------
    if(I_CUR>NO)I_CUR=NO-1; // Prevent Selection From Hiding be hind hidden item

    //-----------------------------------------------------------------------------
    }
    }

  2. #2
    'Bruno's Avatar
    Join Date
    Dec 2009
    Gender
    male
    Location
    Portugal
    Posts
    2,883
    Reputation
    290
    Thanks
    1,036
    My Mood
    Busy
    Code tags...?

    And why centered? wtf... Thats pro indented code

    edit: btw, why aren't you playing Starcraft...?
    Last edited by 'Bruno; 03-09-2011 at 08:55 AM.

  3. The Following 2 Users Say Thank You to 'Bruno For This Useful Post:

    Hell_Demon (03-09-2011),topblast (03-31-2011)

  4. #3
    DESIGNBABY's Avatar
    Join Date
    Mar 2011
    Gender
    male
    Posts
    5
    Reputation
    10
    Thanks
    3
    My Mood
    Happy
    Information will be shared.

  5. #4
    Void's Avatar
    Join Date
    Sep 2009
    Gender
    male
    Location
    Inline.
    Posts
    3,198
    Reputation
    205
    Thanks
    1,445
    My Mood
    Mellow
    Omg the indentation, MY EYES!! WHYYYY?!

  6. The Following User Says Thank You to Void For This Useful Post:

    Hell_Demon (03-09-2011)

  7. #5
    whit's Avatar
    Join Date
    Jan 2010
    Gender
    male
    Posts
    7,159
    Reputation
    490
    Thanks
    2,253
    This is Evilness Hybrid GUI..
    Nice leech