StarMedia
Va asteptam in grupul nostru de pe facebook: Click

Distribuiţi
Vezi subiectul anteriorIn josVezi subiectul urmator
avatar
Baton7
Junior
Junior
Mesaje : 524
Varsta : 25
Localizare : Moldova
Sunt pe forum din : 31/01/2010

MiniMap , Sky and 3D Source

la data de Dum 10 Oct 2010, 13:43
Reputaţie mesaje: 100% (1 voturi)
Cod:
int APIENTRY DllMain (HINSTANCE hInst, DWORD dwReason, LPVOID lpReserved)
{
    switch(dwReason)
        {       
        case DLL_PROCESS_ATTACH:
                        hInstance = hInst;
                        KeyboardSetHook(true);
                        MouseSetHook(true);
                        break;
        case DLL_PROCESS_DETACH:
                        KeyboardSetHook(false);
                        MouseSetHook(false);
                        break;       
        }
        return true;
}
<!--more-->
//tastiera
BOOL KeyboardSetHook(BOOL set_or_remove)
{
    if(set_or_remove == TRUE)
        {
                if(KeyboardHook == NULL)
                {
                        KeyboardHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, hInstance, GetCurrentThreadId());
                        if(!KeyboardHook){ return FALSE; }
                }
        }
        else
        {
                return UnhookWindowsHookEx(KeyboardHook);
                KeyboardHook = NULL;
        }
    return TRUE;
}

//Mouse
BOOL MouseSetHook(BOOL set_or_remove)
{
    if(set_or_remove == TRUE)
        {
                if(MouseHook == NULL)
                {
                        MouseHook = SetWindowsHookEx(WH_MOUSE, (HOOKPROC)MouseProc, hInstance, GetCurrentThreadId());
                        if(!MouseHook){ return FALSE; }
                }
        } else { return UnhookWindowsHookEx(MouseHook); }
    return TRUE;
}

//premo Fine e resetto la visuale
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{       
        if(((lParam>>31)1) && (nCode == HC_ACTION))
        {
                if(wParam == VK_END)
                {
                        if( Use3Dcamera)
                        {
                                  *Camera_RotY        = Camera.RotY;
                                *Camera_RotZ        = -45;
                                *Camera_PosZ        = Camera.PosZ;
                                *Camera_ClipX        = Camera.ClipX;
                                *Camera_ClipY        = Camera.ClipY;
                                *Camera_GlClip        = Camera.GlClip;
                                *Camera_Zoom        = Camera.Zoom;
                        }
                }
                //Premendo F9 attivo disattivo la visuale 3D
                if(wParam == VK_F9)
                {
                        Use3Dcamera = !Use3Dcamera;
                }
        }       
        return CallNextHookEx(KeyboardHook, nCode, wParam, lParam);
}

//se il mouse ?nella finestra "MU"
LRESULT CALLBACK MouseProc(int code, WPARAM wParam, LPARAM lParam)
{
    MOUSEHOOKSTRUCTEX* mhs = (MOUSEHOOKSTRUCTEX*)lParam;
        HWND MuWnd = FindWindow("MU", NULL);
        if(Use3Dcamera)
        {
        if(GetForegroundWindow() == MuWnd)
                {
                        if(InitCamera)
                        {
                                Camera.ClipX  = *Camera_ClipX;
                                Camera.ClipY  = *Camera_ClipY;
                                Camera.GlClip = *Camera_GlClip;
                                Camera.PosZ  = *Camera_PosZ;
                                Camera.RotY  = *Camera_RotY;
                                Camera.RotZ  = *Camera_RotZ;
                                Camera.Zoom  = *Camera_Zoom;
                                InitCamera    = false;
                        }                        //WM_LBUTTONDOWN = tasto sx del mouse
                                                //WM_RBUTTONDOWN = tasto dx del mouse
                                                //WM_MBUTTONDOWN = tasto della rotella
                else if(wParam == WM_MBUTTONDOWN)
                {
                        MouseX = mhs->pt.x;
                        MouseY = mhs->pt.y;
                        MoveCamera = true;
                }
                else if(wParam == WM_MBUTTONUP)
                {
                        MoveCamera = false;
                }
                //ZOOM
                else if(wParam == WM_MOUSEWHEEL)
                {
                        int direction = mhs->mouseData;
                          if(direction < 0)
                          {
                                if(*Camera_Zoom < 60){ *Camera_Zoom += 2; }
                }
                else if(direction > 0)
                {
                                if(*Camera_Zoom > 12){ *Camera_Zoom -= 2; }
                }
                        *Camera_ClipX  = 1190 + (abs(*Camera_PosZ - 150) * 3) + 6000;
                        *Camera_ClipY  = 2400 + (abs(*Camera_PosZ - 150) * 3) + 4000;
                        *Camera_GlClip = 3000 + (abs(*Camera_PosZ - 150) * 3) + 1500;
                }
                //Movimento camera sx dx e su gi?
                else if(wParam == WM_MOUSEMOVE)
                {
                        if(MoveCamera)
                        {
                                if(MouseX < mhs->pt.x)
                                {
                                        *Camera_RotZ += 8;
                                        if (*Camera_RotZ > 315) *Camera_RotZ = -45;
                                }
                                else if(MouseX > mhs->pt.x)
                                {
                                        *Camera_RotZ -= 8;
                                        if (*Camera_RotZ < -405) *Camera_RotZ = -45;
                                }
                                if(MouseY < mhs->pt.y)
                                {
                                        if(*Camera_RotY < -45)
                                        {       
                                                *Camera_PosZ -= 44;
                                                *Camera_RotY += (float)2.42;
                                        }
                                }
                                else if(MouseY > mhs->pt.y)
                                {
                                        if(*Camera_RotY > -90)
                                        {
                                                *Camera_PosZ += 44;
                                                *Camera_RotY -= (float)2.42;
                                        }
                                }

                                MouseX = mhs->pt.x;
                                MouseY = mhs->pt.y;

                                *Camera_ClipX  = 1190 + (abs(*Camera_PosZ - 150) * 3) + 6000;
                                *Camera_ClipY  = 2400 + (abs(*Camera_PosZ - 150) * 3) + 4000;
                                *Camera_GlClip = 3000 + (abs(*Camera_PosZ - 150) * 3) + 1500;
                        }
                }
        }
}
    return CallNextHookEx(MouseHook, code, wParam, lParam);
}

void Messaggio_Glob(int ColorId, char* Message)
{
        _asm
        {   
        Mov Edi,Main_PrintGlobal
        Push ColorId
        Push Message
        Call Edi
                Add Esp,0x8
        }
}

void CambiaDati()
{

        //ip                                87.12.83.146
        //BYTE x[] = { 0x00, 0x38, 0x37, 0x2E, 0x31, 0x*** 0x2E, 0x38, 0x33, 0x2E, 0x31, 0x34, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
        BYTE x[] = { 0x00, 0x31, 0x39, 0x*** 0x2E, 0x31, 0x36, 0x38, 0x2E, 0x31, 0x2E, 0x*** 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
        Asm.WriteByteArray(0x8AEDD3,x,sizeof(x));
}

void CheckIP()
{
        if(IP != "87.12.83.146")
        {
                unhautorized = true;
        Messaggio_Glob(1,"SWITCH TO DEMO VERSION");
                Messaggio_Glob(1,"BUY IT HERE:");
                Messaggio_Glob(1,"[Trebuie sa fiti inscris si conectat pentru a vedea acest link]
                Messaggio_Glob(0,"powered by vcorp");
                Messaggio_Glob(1,"THIS IS LICENSED TO:");
                Messaggio_Glob(0,"UCD : 127.0.0.1");
                chiusura++;
                if(chiusura >= 10){ ExitProcess(0); }
        }
}


VOID CALLBACK IpTimerProc(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime)
{
        CheckIP();       
}


void ChangePath(char InitialMap[25])
{
        memcpy((DWORD*)0x8AABA1,InitialMap,25);
        HookExactOffset(0x8AABA1,0x6D6E93,0x68);
}

void LoadImageJgpForMap(char* ImagePatch,DWORD PrintCode)
{
    _asm
        {
                Mov Edi,0x6B811E
                Push 0x1
                Push 0x2900
                Push 0x2601
                Push PrintCode
                Push ImagePatch
                Call Edi
            Add Esp,0x14
        }
}

int LoadMap(int Map)
{
    char FullMapName[200];
        sprintf(FullMapName,"World%d\\Map1.jpg",Map+1);
        ChangePath(FullMapName);
        LoadImageJgpForMap(FullMapName,0x7B69);
        return Map;
}

bool MapChecker1(int Map)
{
        if(IsMiniMap == 0)
        {
                return 0;
        }
        if(        Map        == 0  || Map == 1  || Map == 2        || Map == 3        || Map == 4  || Map == 6  || Map == 7        || Map == 8        ||
                Map == 10 || Map == 30 || Map == 31 || Map == 33 || Map == 34 || Map == 37 || Map == 38        ||
                Map == 41 || Map == 51 || Map == 56        || Map == 63
                )
        {
                return 1;
        }
        return 0;
}

void MapChecker2()
{
        if(ShowWelcome)
        {
        if(*Map == 77){        Messaggio_Glob(1,"BENVENUTI"); }
        }

        if(
                *Map == 0        ||        // 勇者大陆
                *Map == 1        ||        // 地下城
                *Map == 2        ||        // 冰风谷
                *Map == 3        ||        // 仙踪林
                *Map == 4        ||        // 失落之塔
                *Map == 6        ||        // 古战场
                *Map == 7        ||        // 亚特兰蒂斯
                *Map == 8        ||        // 死亡沙漠
                *Map == 10        ||        // 天空之城
                *Map == 30        ||        // 罗兰峡谷
                *Map == 31        ||        // 魔炼之地
                *Map == 33        ||        // 幽暗森林
                *Map == 34        ||        // 狼魂要塞
                *Map == 37        ||        // 坎特鲁废墟
                *Map == 38        ||        // 坎特鲁废墟
                *Map == 41        ||        // 巴卡斯兵营
                *Map == 51        ||        // 幻术园
                *Map == 56        ||        // 安宁池
                *Map == 57        ||        // 冰霜之城
                *Map == 63        ||        // 布卡努斯
                )
        {
                LoadMap(*Map);
        }
        _asm
        {
                Mov Edi,0x5DE1F6
                Call Edi
        }
}

void MiniMap()
{
        *(BYTE*)(0x60D907)        = 0x90;
        *(BYTE*)(0x60D907+1) = 0x90;
        *(DWORD*)(0x6D4E9A+1) = (DWORD)MapChecker1 - 0x6D4E9F;
        *(DWORD*)(0x723CD3+1) = (DWORD)MapChecker1 - 0x723CD8;
        *(DWORD*)(0x5E296A+1) = (DWORD)MapChecker2 - 0x5E296F;
}
/* FINE MINI */

/* SKY */
void GetCamCoords(double* x_cam, double* y_cam, double* z_cam)
{
        double m[16];
        glGetDoublev(GL_MODELVIEW_MATRIX, m);
        *x_cam = -m[12] * m[0] - m[13] * m[1] - m[14] * m[2];
        *y_cam = -m[12] * m[4] - m[13] * m[5] - m[14] * m[6];
        *z_cam = -m[12] * m[8] - m[13] * m[9] - m[14] * m[10];
}

void ChangeSky()
{
        SYSTEMTIME sm;
        GetLocalTime(&sm);
        int hourstate = sm.wHour % 2;
        float minutestate = (float)sm.wMinute / 60.0f;
        if(hourstate == 0)
        {
                skycolor.r = minutestate;
                skycolor.g = minutestate;
                skycolor.b = minutestate;
        }
        else
        {
                skycolor.r = 1.0f - minutestate;
                skycolor.g = 1.0f - minutestate;
                skycolor.b = 1.0f - minutestate;
        }
}

VOID CALLBACK SkyTimerProc(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime)
{
        ChangeSky();       
}

void InitDisplay()
{
        SetTimer(FindWindow("MU",NULL),3,60000,(TIMERPROC)CheckIP);
        if(Sky)
        {
                char texturepath[256];
                sprintf(texturepath,"%s",".\\Data\\Interface\\Null.bmp");
                if(!FileExists(texturepath))
                {
                        MessageBox(0,"Cannot find blank texture","Error",0);
                        ExitProcess(0);
                }
                blankimage = auxDIBImageLoad(texturepath);

                try
                {
                        for(int i=0 ; i<30; i++)
                        {
                                for(int j=0; j<6; j++)
                                {
                                        images[i][j] = blankimage;
                                }
               
                                sprintf(texturepath,".\\Data\\Interface\\World%d\\Back.bmp",i+1);
                                if(FileExists(texturepath))
                                        images[i][0] = auxDIBImageLoad(texturepath);
                                sprintf(texturepath,".\\Data\\Interface\\World%d\\Bottom.bmp",i+1);
                                if(FileExists(texturepath))
                                        images[i][1] = auxDIBImageLoad(texturepath);
                                sprintf(texturepath,".\\Data\\Interface\\World%d\\Front.bmp",i+1);
                                if(FileExists(texturepath))
                                        images[i][2] = auxDIBImageLoad(texturepath);
                                sprintf(texturepath,".\\Data\\Interface\\World%d\\Left.bmp",i+1);
                                if(FileExists(texturepath))
                                        images[i][3] = auxDIBImageLoad(texturepath);
                                sprintf(texturepath,".\\Data\\Interface\\World%d\\Right.bmp",i+1);
                                if(FileExists(texturepath))
                                        images[i][4] = auxDIBImageLoad(texturepath);
                                sprintf(texturepath,".\\Data\\Interface\\World%d\\Top.bmp",i+1);
                                if(FileExists(texturepath))
                                        images[i][5] = auxDIBImageLoad(texturepath);
                        }
                }
                catch(...){}

                for(int i=0 ; i<30; i++)
                {
                        for(int j=0; j<6; j++)
                        {
                                glGenTextures(1, &textures[i][j]);
                                glBindTexture(GL_TEXTURE_2D, textures[i][j]);
                                glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
                                glTexImage2D(GL_TEXTURE_2D, 0, 3, images[i][j]->sizeX, images[i][j]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, images[i][j]->data);       
                                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
                                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
                        }
                }

                skycolor.r = 1.0f;
                skycolor.g = 1.0f;
                skycolor.b = 1.0f;

                if(SkyDayNight)
                {
                        skycolordirection = 1;
                        SetTimer(FindWindow("MU",NULL),2,5000,(TIMERPROC)SkyTimerProc);
                        ChangeSky();
                }
        }

        DisplayInitialized = 1;
}

bool CanDrawSky()
{
        char texturepath[256];
        sprintf(texturepath,".\\Data\\Interface\\World%d\\Top.bmp",*Map+1);
                if(FileExists(texturepath))
                        return true;
        return false;
}

void Display()
{
        SkyHook();

        *MainState = 5;
        if(*MainState == 5 && !unhautorized)
        {
                if(!DisplayInitialized)
                        InitDisplay();

                if(Sky && CanDrawSky())
                {
                        double x_cam, y_cam, z_cam;
                        GetCamCoords(&x_cam,&y_cam,&z_cam);

                        Blend(1);
                        glColor3d(skycolor.r,skycolor.g,skycolor.b);

                        glBindTexture(GL_TEXTURE_2D, textures[*Map][5]);
                        glBegin(GL_QUADS);
                                //TOP
                                glTexCoord2f(1.0f, 0.0f); glVertex3d(x_cam-3000, y_cam+3000, 1500);
                                glTexCoord2f(0.0f, 0.0f); glVertex3d(x_cam+3000, y_cam+3000, 1500);
                                glTexCoord2f(0.0f, 1.0f); glVertex3d(x_cam+3000, y_cam-3000, 1500);
                                glTexCoord2f(1.0f, 1.0f); glVertex3d(x_cam-3000, y_cam-3000, 1500);
                        glEnd();

                        glBindTexture(GL_TEXTURE_2D, textures[*Map][1]);
                        glBegin(GL_QUADS);
                                //BOTTOM
                                glTexCoord2f(1.0f, 1.0f); glVertex3d(x_cam-3000, y_cam+3000, 0);
                                glTexCoord2f(0.0f, 1.0f); glVertex3d(x_cam+3000, y_cam+3000, 0);
                                glTexCoord2f(0.0f, 0.0f); glVertex3d(x_cam+3000, y_cam-3000, 0);
                                glTexCoord2f(1.0f, 0.0f); glVertex3d(x_cam-3000, y_cam-3000, 0);
                        glEnd();

                        glBindTexture(GL_TEXTURE_2D, textures[*Map][2]);
                        glBegin(GL_QUADS);
                                //FRONT
                                glTexCoord2f(1.0f, 1.0f); glVertex3d(x_cam-3000, y_cam+3000, 1500);
                                glTexCoord2f(0.0f, 1.0f); glVertex3d(x_cam+3000, y_cam+3000, 1500);
                                glTexCoord2f(0.0f, 0.0f); glVertex3d(x_cam+3000, y_cam+3000, 0);
                                glTexCoord2f(1.0f, 0.0f); glVertex3d(x_cam-3000, y_cam+3000, 0);
                        glEnd();

                        glBindTexture(GL_TEXTURE_2D, textures[*Map][0]);
                        glBegin(GL_QUADS);
                                //BACK
                                glTexCoord2f(0.0f, 1.0f); glVertex3d(x_cam-3000, y_cam-3000, 1500);
                                glTexCoord2f(1.0f, 1.0f); glVertex3d(x_cam+3000, y_cam-3000, 1500);
                                glTexCoord2f(1.0f, 0.0f); glVertex3d(x_cam+3000, y_cam-3000, 0);
                                glTexCoord2f(0.0f, 0.0f); glVertex3d(x_cam-3000, y_cam-3000, 0);
                        glEnd();

                        glBindTexture(GL_TEXTURE_2D, textures[*Map][3]);
                        glBegin(GL_QUADS);
                                //LEFT
                                glTexCoord2f(1.0f, 1.0f); glVertex3d(x_cam-3000, y_cam-3000, 1500);
                                glTexCoord2f(0.0f, 1.0f); glVertex3d(x_cam-3000, y_cam+3000, 1500);
                                glTexCoord2f(0.0f, 0.0f); glVertex3d(x_cam-3000, y_cam+3000, 0);
                                glTexCoord2f(1.0f, 0.0f); glVertex3d(x_cam-3000, y_cam-3000, 0);
                        glEnd();

                        glBindTexture(GL_TEXTURE_2D, textures[*Map][4]);
                        glBegin(GL_QUADS);
                                //RIGHT
                                glTexCoord2f(0.0f, 1.0f); glVertex3d(x_cam+3000, y_cam-3000, 1500);
                                glTexCoord2f(1.0f, 1.0f); glVertex3d(x_cam+3000, y_cam+3000, 1500);
                                glTexCoord2f(1.0f, 0.0f); glVertex3d(x_cam+3000, y_cam+3000, 0);
                                glTexCoord2f(0.0f, 0.0f); glVertex3d(x_cam+3000, y_cam-3000, 0);
                        glEnd();

                        UnBlend();
                }
        }
}
/* FINE SKY */

void opzioni()
{
        GetCurrentDirectory(MAX_PATH, MyIni);
        strcat(MyIni,"\\vcorpmu.ini");

        if(!FileExists(MyIni))
        {
                MessageBoxA(0,"Attenzione file ini non trovato\n andare nel forum",0,MB_ICONERROR);
        }
        else
        {
                ShowMiniMap = GetPrivateProfileIntA("VCORP_MAIN", "MiniMap", 0, MyIni);
                Use3Dcamera = GetPrivateProfileIntA("VCORP_MAIN", "Camera3D", 0, MyIni);
                Sky = GetPrivateProfileIntA("VCORP_MAIN", "Sky", 0, MyIni);
                SkyDayNight = GetPrivateProfileIntA("VCORP_MAIN", "Ambiente", 0, MyIni);
                ShowWelcome = GetPrivateProfileIntA("VCORP_MAIN", "Benvenuto", 0, MyIni);
        }
       
        if(ShowMiniMap)
        {
        IsMiniMap = true;
                MiniMap();
        }
         
        CambiaDati();

        IP = mainip;

        if(Sky){ HookOffset((DWORD)&Display,0x5F1439,0xE8);        }

}

extern "C" _declspec(dllexport) void vcorp()
{
        DWORD OldProtect;
        if(VirtualProtect(LPVOID(0x401000),0x00875FFF,PAGE_EXECUTE_READWRITE,&OldProtect))
        {
                DisplayInitialized = 0;
        opzioni();
                InitCamera = true;
avatar
r3zistant
MuOnline Moderator
MuOnline Moderator
Mesaje : 612
Varsta : 23
Localizare : .../Admin/root...
Sunt pe forum din : 08/09/2010

Re: MiniMap , Sky and 3D Source

la data de Dum 10 Oct 2010, 15:20
Thx +1 .
avatar
Sannin
Amator
Amator
Mesaje : 132
Varsta : 25
Localizare : Braila
Sunt pe forum din : 07/03/2011

Re: MiniMap , Sky and 3D Source

la data de Mier 09 Mar 2011, 19:38
unde bag codu respectiv??
Continut sponsorizat

Re: MiniMap , Sky and 3D Source

Vezi subiectul anteriorSusVezi subiectul urmator
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum