Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   help with this coding (http://www.go4expert.com/forums/help-coding-t23460/)

randyprazak1 1Oct2010 23:40

help with this coding
 
ok this is what im trying to do. i want the items name to show over the item that drops the the ground instead of it being on the top left. here is the code that im working with any idea how i can do that thanks

Code:

#include "XenItemSniffer.h"

bool XenItemSniffer::itemCompass = true;

XenItemSniffer::XenItemSniffer(IDirect3DDevice9 *pIDirect3DDevice9)
{
        this->pIDirect3DDevice9 = pIDirect3DDevice9;
        Initialize();
}

void XenItemSniffer::Initialize()
{
        xenMemory = new XenMemory();

        D3DVIEWPORT9 viewport;
        pIDirect3DDevice9->GetViewport(&viewport);

        screenWidth = viewport.Width;
        screenHeight = viewport.Height;

        scaleX = screenWidth / DEFAULTSCREENWIDTH;
        scaleY = screenHeight / DEFAULTSCREENHEIGHT;

        D3DXCreateTextureFromFile(pIDirect3DDevice9, ARROW_LOC, &arrowTexture);
        D3DXCreateSprite(pIDirect3DDevice9, &arrowSprite);

        ZeroMemory(&fitemList, sizeof(D3DXFONT_DESC));
        strcpy(fitemList.FaceName, "Arial");
        fitemList.Height = -16;
        D3DXCreateFontIndirect(pIDirect3DDevice9, &fitemList, &itemListFont);

        itemCompass = true;
}

void XenItemSniffer::Render()
{
        if(PacketHandler::itemSniffer && xenMemory->ReadPage() == 0) {
                int xLoc = xenMemory->ReadLocX();
                int yLoc = xenMemory->ReadLocY();

                if (!PacketHandler::itemsLock) {
                        PacketHandler::itemsLock = true;

                        itemList.clear();
                        itemLocations.clear();
                        for (int i = 0; i < PacketHandler::items.size(); ++i) {
                                itemLocations.push_back(D3DXVECTOR2(PacketHandler::items[i].x, PacketHandler::items[i].y));

                                string xDir = xLoc == PacketHandler::items[i].x ? "" : xLoc < PacketHandler::items[i].x ? "+" : "-";
                                string yDir = yLoc == PacketHandler::items[i].y ? "" : yLoc < PacketHandler::items[i].y ? "+" : "-";
                                itemList += PacketHandler::items[i].name + " X: " + Utils::ToString<int>(PacketHandler::items[i].x) + xDir + " Y: " + Utils::ToString<int>(PacketHandler::items[i].y) + yDir + "\n";
                        }
                        PacketHandler::itemsLock = false;
                }


                RECT itemSnifferTextRect = { 10, 75, 0, 0 };
                itemListFont->DrawText(NULL, itemList.c_str(), -1, &itemSnifferTextRect, DT_CALCRECT, 0);
                int itemSnifferTextWidth = (itemSnifferTextRect.right - itemSnifferTextRect.left);
                itemSnifferTextRect.left = screenWidth - itemSnifferTextWidth - 10;
                itemSnifferTextRect.right = itemSnifferTextRect.left + itemSnifferTextWidth;
                itemListFont->DrawText(NULL, itemList.c_str(), -1, &itemSnifferTextRect, DT_RIGHT, D3DCOLOR_XRGB(255, 255, 255));

                RECT itemSnifferEnabledTextRect = { screenWidth - 200, screenHeight - 30, 0, 0 };
                itemListFont->DrawText(NULL, ITEMSNIFFERSTR, -1, &itemSnifferEnabledTextRect, DT_CALCRECT, 0);
                itemListFont->DrawText(NULL, ITEMSNIFFERSTR, -1, &itemSnifferEnabledTextRect, DT_RIGHT, D3DCOLOR_XRGB(255, 255, 255));

                //Draw Arrows
                if(itemCompass) {
                        D3DSURFACE_DESC arrowDesc;
                        arrowTexture->GetLevelDesc(0, &arrowDesc);

                        D3DXVECTOR2 arrowScale;
                        arrowScale.x = scaleX;
                        arrowScale.y = scaleY;

                        arrowSprite->Begin(D3DXSPRITE_ALPHABLEND);
                        for (int i = 0; i < itemLocations.size(); ++i) {
                                //Position the arrow based on the location of the items
                                if(itemLocations[i].x != xLoc || itemLocations[i].y != yLoc) {
                                        int x = itemLocations[i].x - xLoc;
                                        int y = itemLocations[i].y - yLoc;
                                        float angle = atan2((float)y, (float)x);

                                        D3DXVECTOR2 arrowPos;
                                        arrowPos.x = (screenWidth / 2) - (arrowDesc.Width * scaleX / 2)  + (cos(angle) * 50 * scaleX);
                                        arrowPos.y = (screenHeight / 2) - (arrowDesc.Height * scaleY / 2) + (sin(angle) * 50 * scaleY);

                                        D3DXMATRIX arrowMatrix;
                                        D3DXMatrixTransformation2D(&arrowMatrix, NULL, 0.0, &arrowScale, &D3DXVECTOR2(arrowDesc.Width * scaleX / 2, arrowDesc.Height * scaleY / 2), angle, &arrowPos);
                                        arrowSprite->SetTransform(&arrowMatrix);
                                        arrowSprite->Draw(arrowTexture, NULL, NULL, NULL, 0xFFFFFFFF);
                                }
                        }
                        arrowSprite->End();
                }
        }
}

void XenItemSniffer::StartSnifferThread()
{
        HANDLE processPacketsThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)this->ProcessPackets, NULL, 0, NULL);
        SetThreadPriority(processPacketsThread, THREAD_PRIORITY_LOWEST);
}

DWORD WINAPI XenItemSniffer::ProcessPackets(LPVOID lpParameter)
{

        static bool key1Released = true;
        static bool key2Released = true;
        while (true) {
                if (Input::KeysDown(ConfigFile::ItemSnifferInput)) {
                        if (key1Released) {
                                if (PacketHandler::itemSniffer) {
                                        PacketHandler::itemSniffer = false;
                                        //PacketHandler::Detach();
                                        Utils::Log("Item Sniffer Disabled\n");

                                } else {
                                        PacketHandler::itemSniffer = true;
                                        Utils::Log("Item Sniffer Enabled\n");
                                }
                        }
                        key1Released = false;
                } else {
                        key1Released = true;
                }

                if (Input::KeysDown(ConfigFile::ItemCompass)) {
                        if (key2Released) {
                                if (itemCompass) {
                                        itemCompass = false;
                                        //PacketHandler::Detach();
                                        Utils::Log("Item Compass Disabled\n");

                                } else {
                                        itemCompass = true;
                                        Utils::Log("Item Compass Enabled\n");
                                }
                        }
                        key2Released = false;
                } else {
                        key2Released = true;
                }

                PacketHandler::ProcessPacket();
                Sleep(30);
        }
}

void XenItemSniffer::Release()
{
        itemListFont->Release();
        arrowTexture->Release();
        arrowSprite->Release();

        delete(xenMemory);
}



All times are GMT +5.5. The time now is 01:46.