Seite 7 von 10 ErsteErste ... 56789 ... LetzteLetzte
Ergebnis 61 bis 70 von 93

Thema: Hud Q&A

  1. #61
    Professional Avatar von Flow groover
    Registriert seit
    19.08.2009
    Ort
    Ffm & Lingshan
    Beiträge
    4.800

    Standard

    Ich finde das HUD (kleinere) ganz gut, ich würde es vlt estwas kompakter machen wie MAGIC sagt, also das du nicht so viel platz brauchst, sondern das alles ein bisschen näher beeinander ist.
    Weil auf den ersten Blick muss man erstmal schauen das man sieht wo was ist,
    aber auf dauer ist es nur eine gewöhnungssache. Finde das HUD mit dem Männlein cool Also musst schaun ob dus noch ändern willst, is ja wie gesagt ne gewöhnungssache da man sich erstmal vom kleinen crysis hud unten rechts aufs große oben rechts gewöhnen muss.


    ModDB
    YouTube CrysisHQ
    Discord: flowgroover#2478

  2. #62
    Semi Pro Avatar von befubo
    Registriert seit
    24.07.2008
    Ort
    Zürich, Schweiz
    Beiträge
    801

    Standard

    ^^ ok, danke erstmal euch beiden

    Ich hab im Moment im Editor nur dieses HUD und man gewöhnt sich relativ schnell daran. Dadurch, dass es auch etwas "sperrig" ist, wird das spielen noch spannender, weil man tote Winkel kriegt xD

    Das mit dem kompakter kommt sowieso, das ja noch einige Infos rein müssen.
    Auch die Waffenauswähl werde ich einbauen. Aber das kommt noch

    Das grüne Männlein hat auch einen Sinn:
    Die Layer für die Trefferpositionen hab ic schon gemacht. Also wenn du am kopf getroffen wirst, zeigt das HUD auf dem Männchen an, dass du einen Kopftreffer erhalten hast... Beine, Arme und Rumpf ebenfalls
    Aber das mit der Datenauswertung innhalb des Codes wo der Treffer nun stattgefunden hat muss ich noch erarbeiten...

  3. #63
    Semi Pro Avatar von MAGIC
    Registriert seit
    05.06.2010
    Ort
    Frankfurt am Main
    Beiträge
    1.461

    Standard

    Also das mit dem Männlein find ich cool..
    Kann das sein dass neben dem Männlein (xDD Männlein^^) die Anzeige für die Magazine is???

  4. #64
    Semi Pro Avatar von befubo
    Registriert seit
    24.07.2008
    Ort
    Zürich, Schweiz
    Beiträge
    801

    Standard

    Wenn du dich im Video mal achtest, die Magazine werden oben in Form von einzelnen Bullets angezeigt.
    Ich bin inzwischen auf einem neuen Stand; rechts vom "Männlein" befinden sich die Granatenanzahl (mittels symolen wie bei der Munition gemacht). Je nach ausgewählter Granate werden die entsprechenden Symbole angezeigt.

    werde ich (denk ich jetzt mal) in form von "Wellen" über dem gesammten HUD machen.
    Also wenn die AI leicht alarmiert ist, ist es ganz schwach und bei voller Erkennung realtiv stark.
    Es soll dann wie eine Art Radarwellen aussehen, welche dann in kreisform vom Zentrum des Huds nach aussen gehen.
    Beim nächten Update hab ichs dann vllt. schon drin ^^

    EDIT:
    So und folgend eine Frage betreffend diesem Vorhaben:
    gibt es eine Flashfunktion um abzufragen, an welchem Körperteil der Player getroffen wurde?
    Sowieso; gibt es iwo eine liste mit den C++ definitionen für die Flashabfragen?
    thx
    Geändert von befubo (15.10.2010 um 11:33 Uhr)

  5. #65
    VIP Avatar von Pat21
    Registriert seit
    06.09.2007
    Beiträge
    10.654

    Standard

    @ befubo
    Was für Flash-Abfragen meinst du ?

  6. #66
    Semi Pro Avatar von befubo
    Registriert seit
    24.07.2008
    Ort
    Zürich, Schweiz
    Beiträge
    801

    Standard

    Also z.B. folgendes:

    Code:
    function setAmmo(iSomething:Number, iAmmo:Number, iClipSize:Number, 
    
    iRestAmmo:Number, iGrenadeAmmo:Number, sGrenadeType:String, bPlayer:Boolean) { Root.Ammo.ammo_txt.text = iAmmo; }
    Ich frage ja nach function setAmmo ab. Das übergibt mir Werte wie iAmmo, iRestAmmo usw...
    Es gibt ja für alles mögliche eine Abfrage... Die Gesundheit, Power, Munition usw...
    Gibts da eine Liste, wie die Ansprechvariabeln heissen?

  7. #67
    VIP Avatar von Pat21
    Registriert seit
    06.09.2007
    Beiträge
    10.654

    Standard

    @ befubo
    Nein, dazu gibt es keine Liste. Müsstest dir die Funktionen in den Crysis-Dateien anschauen bzw mal im Crysis-Source-Code schauen, was so alles übergeben wird.

  8. #68
    Semi Pro Avatar von befubo
    Registriert seit
    24.07.2008
    Ort
    Zürich, Schweiz
    Beiträge
    801

    Standard

    Phuu, ok.
    Demfall, mal sehen, vielleicht bin ich derjenige, der sich ne Höllenarbeit macht, alle rauszuschreiben xD
    mal weiss ja nie
    aber danke ^^

  9. #69
    Semi Pro Avatar von befubo
    Registriert seit
    24.07.2008
    Ort
    Zürich, Schweiz
    Beiträge
    801

    Standard

    Hier mal ein Ausschnitt aus der HUD.h Datei:

    Spoiler HUD.h:


    Code:
    void CHUD::UpdateTeamActionHUD()
    {
        if (CGameRules *pGameRules=g_pGame->GetGameRules())
        {
            if (pGameRules->IsRoundTimeLimited() && !stricmp(pGameRules->GetEntity()->GetClass()->GetName(), "TeamAction"))
            {
                IEntityScriptProxy *pScriptProxy=static_cast<IEntityScriptProxy *>(pGameRules->GetEntity()->GetProxy(ENTITY_PROXY_SCRIPT));
                if (pScriptProxy)
                {
                    bool preround=false;
                    int remainingTime=-1;
                    if (!stricmp(pScriptProxy->GetState(), "InGame"))
                    {
                        remainingTime = (int)(pGameRules->GetRemainingRoundTime());
                    }
                    else if (!stricmp(pScriptProxy->GetState(), "PreRound"))
                    {
                        preround=true;
                        remainingTime = (int)(pGameRules->GetRemainingPreRoundTime());
                    }
    
                    if (remainingTime>-1)
                    {
                        int minutes = (remainingTime)/60;
                        int seconds = (remainingTime - minutes*60);
                        string msg;
                        msg.Format("%02d:%02d", minutes, seconds);
    
                        Vec3 color=Vec3(1.0f, 1.0f, 1.0f);
    
                        if (remainingTime<g_pGameCVars->g_suddendeathtime || preround)
                        {
                            float t=fabsf(cry_sinf(gEnv->pTimer->GetCurrTime()*2.5f));
                            Vec3 red=Vec3(0.85f, 0.0f, 0.0f);
    
                            color=color*(1.0f-t)+red*t;
                        }
    
                        m_pUIDraw->DrawText(m_pDefaultFont,0,12,22,22,msg.c_str(),0.85f,color.x,color.y,color.z,UIDRAWHORIZONTAL_CENTER,UIDRAWVERTICAL_TOP,UIDRAWHORIZONTAL_CENTER,UIDRAWVERTICAL_TOP);
                    }
                    int key0;
                    int nkScore = 0;
                    int usScore = 0;
                    IScriptTable *pGameRulesScript=pGameRules->GetEntity()->GetScriptTable();
                    if (pGameRulesScript && pGameRulesScript->GetValue("TEAMSCORE_TEAM0_KEY", key0))
                    {
                        pGameRules->GetSynchedGlobalValue(key0+1, nkScore);
                        pGameRules->GetSynchedGlobalValue(key0+2, usScore);
                    }
                    if (pGameRules->IsRoundTimeLimited() && !stricmp(pGameRules->GetEntity()->GetClass()->GetName(), "TeamAction"))
                    {
                        IActor *pClientActor=g_pGame->GetIGameFramework()->GetClientActor();
                        if(!pClientActor)
                            return;
                        int clientTeam = pGameRules->GetTeam(pClientActor->GetEntityId());
    
                        CGameRules::TPlayers nkPlayers, usPlayers;
                        pGameRules->GetTeamPlayers(1, nkPlayers);
                        pGameRules->GetTeamPlayers(2, usPlayers);
    
                        int numNK = 0;
                        int numUS = 0;
                        for(int i=0; i<nkPlayers.size(); ++i)
                        {
                            IActor* pActor = g_pGame->GetIGameFramework()->GetIActorSystem()->GetActor(nkPlayers[i]);
                            if(pActor && pActor->GetHealth() > 0)
                                ++numNK;
                        }
                        for(int i=0; i<usPlayers.size(); ++i)
                        {
                            IActor* pActor = g_pGame->GetIGameFramework()->GetIActorSystem()->GetActor(usPlayers[i]);
                            if(pActor && pActor->GetHealth() > 0)
                                ++numUS;
                        }
    
                        if(clientTeam != 0)
                        {
                            string nkPlayers;
                            string usPlayers;
                            string nkScoreText;
                            string usScoreText;
                            for(int i=0; i<nkScore; ++i)
                                nkScoreText += "*";
                            for(int i=0; i<usScore; ++i)
                                usScoreText += "*";
    
                            if(clientTeam == 1)
                            {
                                nkPlayers.Format("NK: %d", numNK);
                                usPlayers.Format("%d :US", numUS);
                                m_pUIDraw->DrawText(m_pDefaultFont, -40, 5, 22, 22, nkScoreText.c_str(), 0.85f, 1.0f, 1.0f, 1.0f, UIDRAWHORIZONTAL_CENTER, UIDRAWVERTICAL_TOP, UIDRAWHORIZONTAL_RIGHT,UIDRAWVERTICAL_TOP);
                                m_pUIDraw->DrawText(m_pDefaultFont, 40, 5, 22, 22, usScoreText.c_str(), 0.85f, 1.0f, 1.0f, 1.0f, UIDRAWHORIZONTAL_CENTER, UIDRAWVERTICAL_TOP, UIDRAWHORIZONTAL_LEFT,UIDRAWVERTICAL_TOP);
                                m_pUIDraw->DrawText(m_pDefaultFont, -40, 12, 22, 22, nkPlayers.c_str(), 0.85f, 1.0f, 1.0f, 1.0f, UIDRAWHORIZONTAL_CENTER, UIDRAWVERTICAL_TOP, UIDRAWHORIZONTAL_RIGHT,UIDRAWVERTICAL_TOP);
                                m_pUIDraw->DrawText(m_pDefaultFont, 40, 12, 22, 22, usPlayers.c_str(), 0.85f, 1.0f, 1.0f, 1.0f, UIDRAWHORIZONTAL_CENTER, UIDRAWVERTICAL_TOP, UIDRAWHORIZONTAL_LEFT,UIDRAWVERTICAL_TOP);
                            }
                            else
                            {
                                nkPlayers.Format("%d :NK", numNK);
                                usPlayers.Format("US: %d", numUS);
                                m_pUIDraw->DrawText(m_pDefaultFont, -40, 5, 22, 22, usScoreText.c_str(), 0.85f, 1.0f, 1.0f, 1.0f, UIDRAWHORIZONTAL_CENTER, UIDRAWVERTICAL_TOP, UIDRAWHORIZONTAL_RIGHT,UIDRAWVERTICAL_TOP);
                                m_pUIDraw->DrawText(m_pDefaultFont, 40, 5, 22, 22, nkScoreText.c_str(), 0.85f, 1.0f, 1.0f, 1.0f, UIDRAWHORIZONTAL_CENTER, UIDRAWVERTICAL_TOP, UIDRAWHORIZONTAL_LEFT,UIDRAWVERTICAL_TOP);
                                m_pUIDraw->DrawText(m_pDefaultFont, -40, 12, 22, 22, usPlayers.c_str(), 0.85f, 1.0f, 1.0f, 1.0f, UIDRAWHORIZONTAL_CENTER, UIDRAWVERTICAL_TOP, UIDRAWHORIZONTAL_RIGHT,UIDRAWVERTICAL_TOP);
                                m_pUIDraw->DrawText(m_pDefaultFont, 40, 12, 22, 22, nkPlayers.c_str(), 0.85f, 1.0f, 1.0f, 1.0f, UIDRAWHORIZONTAL_CENTER, UIDRAWVERTICAL_TOP, UIDRAWHORIZONTAL_LEFT,UIDRAWVERTICAL_TOP);
                            }
                        }
                    }
                }
            }
        }
    }
    
    //-----------------------------------------------------------------------------------------------------
    
    void CHUD::RequestRevive()
    {
        CPlayer *pPlayer = static_cast<CPlayer*>(gEnv->pGame->GetIGameFramework()->GetClientActor());
        if(pPlayer && pPlayer->GetHealth()<=0)
            pPlayer->GetPlayerInput()->OnAction(g_pGame->Actions().attack1, eAAM_OnPress, 1.0f);
    }
    
    //-----------------------------------------------------------------------------------------------------
    
    void CHUD::UpdatePlayerAmmo()
    {
        if(!m_animPlayerStats.GetVisible())
        {
            m_playerAmmo = m_playerRestAmmo = -1; //forces update next time loaded
            return;
        }
    
        if(!(m_pHUDVehicleInterface && m_pHUDVehicleInterface->GetHUDType() != CHUDVehicleInterface::EHUD_NONE))
        {
    
            int ammo = 0;
            int clipSize = 0;
            int restAmmo = 0;
            CryFixedStringT<128> grenadeType;
            int grenades = 0;
            bool TACLauncherMode = false;
    
            CPlayer *pPlayer = static_cast<CPlayer*>(gEnv->pGame->GetIGameFramework()->GetClientActor());
            if(pPlayer)
            {
                IItem *pItem = pPlayer->GetCurrentItem(false);
                if(pItem)
                {
                    if(CWeapon *pWeapon = static_cast<CWeapon*>(pItem->GetIWeapon()))
                    {
    
                        IEntityClass *tacgun = gEnv->pEntitySystem->GetClassRegistry()->FindClass("TACGun");
                        if(pItem->GetEntity() && pItem->GetEntity()->GetClass()==tacgun)
                        {
                            TACLauncherMode    = true;
                        }
                        
                        int fm = pWeapon->GetCurrentFireMode();
                        if(IFireMode *pFM = pWeapon->GetFireMode(fm))
                        {
                            ammo = pFM->GetAmmoCount();
                            if(IItem *pSlave = pWeapon->GetDualWieldSlave())
                            {
                                if(IWeapon *pSlaveWeapon = pSlave->GetIWeapon())
                                    if(IFireMode *pSlaveFM = pSlaveWeapon->GetFireMode(pSlaveWeapon->GetCurrentFireMode()))
                                        ammo += pSlaveFM->GetAmmoCount();
                            }
                            clipSize = pFM->GetClipSize();
                            restAmmo = pPlayer->GetInventory()->GetAmmoCount(pFM->GetAmmoType());
    
                            if(pFM->CanOverheat())
                            {
                                int heat = int(pFM->GetHeat()*100.0f);
                                m_animPlayerStats.Invoke("setOverheatBar", heat);
                            }
                        }
                    }
                }
    
                IItem *pOffhand = g_pGame->GetIGameFramework()->GetIItemSystem()->GetItem(pPlayer->GetInventory()->GetItemByClass(CItem::sOffHandClass));
                if(pOffhand)
                {
                    int firemode = pOffhand->GetIWeapon()->GetCurrentFireMode();
                    if(IFireMode *pFm = pOffhand->GetIWeapon()->GetFireMode(firemode))
                    {
                        if(pFm->GetAmmoType())
                        {
                            grenadeType = pFm->GetAmmoType()->GetName();
                            if(pPlayer)
                                grenades = pPlayer->GetInventory()->GetAmmoCount(pFm->GetAmmoType());
                        }
                        else //can happen during object pickup/throw
                        {
                            grenadeType.assign(m_sGrenadeType, m_sGrenadeType.length());
                            grenades = m_iGrenadeAmmo;
                        }
                    }
                }
            }
    
            if(m_playerAmmo == -1) //probably good to update fireMode
            {
                SetFireMode(NULL, NULL);
                m_animPlayerStats.Invoke("setAmmoMode", 0);
            }
    
            m_animPlayerStats.GetFlashPlayer()->SetVariable("TACLauncherMode", SFlashVarValue(TACLauncherMode));
    
    
            if(m_playerAmmo != ammo || m_playerClipSize != clipSize || m_playerRestAmmo != restAmmo || 
                m_iGrenadeAmmo != grenades || grenadeType.compare(m_sGrenadeType) != 0)
            {
                SFlashVarValue args[7] = {0, ammo, clipSize, restAmmo, grenades, grenadeType.c_str(), true};
                m_animPlayerStats.Invoke("setAmmo", args, 7);
                m_playerAmmo = ammo;
                m_playerClipSize = clipSize;
                m_playerRestAmmo = restAmmo;
                m_iGrenadeAmmo = grenades;
                m_sGrenadeType.assign(grenadeType.c_str()); // will alloc
            }
        }
        else
            m_playerAmmo = m_playerRestAmmo = -1; //forces update next time outside vehicle
    }



    Wie lese ich jetzt was hierraus?
    einige Dinge wie z.B.
    m_animMPMessages.Invoke("addKillLog", args, 2);
    kann ich mir etwa denken was es ist.
    Aber da hats sachen darunter, die ich schon von der struktur her nicht kenne...

  10. #70
    Professional Avatar von Flow groover
    Registriert seit
    19.08.2009
    Ort
    Ffm & Lingshan
    Beiträge
    4.800

    Standard

    Hi, ich hab ne Frage, ich habe die "TEX_Attack.gfx" mit nem decompilator dekopiliert,
    Da ich für die Alien Server MOD ein verändertes HUD haben will, nachdem ich alles gemacht hatte, und in die SB Importiert, waren alle Schriften auf einmal nurnoch so Kästchen. (Siehe Bild)



    Nun hat mir einer gesagt, das man den Text immer nach dem dekopilieren "einbetten" muss o.ä., damit die Schriften wieder funktionieren??? Bei den Decopiled Crysis files von Crymod habe ich das selbe problem, also gehe ich davon aus, das einer wissen müsste wie das geht? Hilfe wäre sehr nett
    Für Living Hell oder Rainy Days wurde das auch gemacht, wie hast du das gemacht Hamers? oder ist das da anders?


    ModDB
    YouTube CrysisHQ
    Discord: flowgroover#2478

Seite 7 von 10 ErsteErste ... 56789 ... LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •