Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 93

Thema: Hud Q&A

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Co-Administrator Avatar von Masterside
    Registriert seit
    04.12.2007
    Ort
    Bonn
    Beiträge
    3.141

    Standard Hud Q&A

    Hallo Community.

    Da ich bis jetzt noch kein Thread gesehen habe, der sich mit diesem Thema befasst, mach ich diesen jetzt einfachmal auf.

    Habe auch direkt zwei Fragen.

    1. Wie kann ich eine Ammobar und eine Restammobar erstellen? Also diese hier:
    http://wiki.crymod.com/index.php/HUD...eo_Tutorial%29
    Nur als Ammo und Restammobar und nicht als Healthbar und Energybar.

    2. Wie kann ich im ActionScript einstellen, dass wenn z.B. Stärke aktiviert ist, ein bestimmtes Bild erscheint?
    CPU: INTEL i7 3770K RAM: 32 GB DDR3 Motherboard: ASUS P8Z77 LE Plus GPU: EVGA GTX 780 SC SSD: ADATA SP900
    HDD1: SAMSUNG HD103UJ HDD2: SAMSUNG HD161HJ HDD3: SAMSUNG HD501LJ PSU: 1000W OS: Windows 8.1

  2. #2
    User
    Registriert seit
    18.06.2008
    Beiträge
    104

    Standard

    hi masterside, kann dir leider nur zu frage eins helfen, bei zwei müsste ich mich selbst erstmal tiefer in die materie reinhängen.

    also folgendes: in dem tut das du da vor dir liegen hast wird einfach nur das standart HUD_AmmoHealthEnergySuit.gfx durch ein benutzerdefiniertes ersetzt. kombiniere die informationen aus dem tut und dem das ich dir bei crymod gezeigt habe, dann hast du fast schon die halbe miete zusammen.

    edit: link für das tut bei crymod: http://www.crymod.com/thread.php?pos...758#post172758

    nach dem du dein custom hud element (k-a wie ichs sonst nennen soll) mit deinen zwei neuen leisten gebastelt hast, benennst du in den actionscripts erstmal die funktionen in setAmmo & setRestAmmo um.

    code könnte dann in etwa so aussehen (warnung: bin kein erfahrener flash user):

    Code:
    var m_ammo = 100;
    
    setAmmo = function(_ammo)
    {
        
        var ammo = Math.floor((Math.max(_ammo,0)));
    
        if(m_ammo!=ammo)
        {
            m_ammo = ammo;
    
    // hab das symbol ammobar genannt:
            ammobar.gotoAndStop(m_ammo);
        }
    }
    
    
    var m_rammo = 100;
    
    setRestAmmo = function(_rammo)
    {
        
        var rammo = Math.floor((Math.max(_rammo,0)));
    
        if(m_rammo!=rammo)
        {
            m_rammo = rammo;
    
    
    // das symbol für rest ammo heißt bei mir r_ammobar
            r_ammobar.gotoAndStop(m_rammo);
        }
    }
    zugegeben, du wirst noch einiges drann rum zu schrauben haben, da die leisten ja mit 100% arbeiten - du aber mit unterschiedlichen ammo zahlen arbeitest.

    aber egal, weiter im text. wie in dem von mir geschickten tut mit dem hallo welt kannst du jetzt erstmal dein neues hud.h deklarieren und dann in der hud.cpp init() registrieren.

    im anschluß gehst du einfach mal in die funktion (~line 5120):
    Code:
     void CHUD::UpdatePlayerAmmo()
    und schreibst an den schluß sowas in der art:
    Code:
    m_animMyFirstHud.Invoke("setAmmo", m_playerAmmo);
    m_animMyFirstHud.Invoke("setRestAmmo", m_playerRestAmmo);
    ---------------------------------------------------
    ... nach einem blick ins sdk...
    ---------------------------------------------------

    hm, man könnte den aktuellen ammo bestand auf 100% ungefähr so umrechnet. (bei der restammo ist das nicht so das problem, da man die magazien größe über m_playerClipSize abfragen kann). das wäre dann wohl sowas in der art (3satz, mein mathe lehrer sagte mir seinerzeit das ich es für irgendetwas gebrauchen könnte *g*):
    Code:
    int test01 =(int) (m_playerClipSize / 100)*m_playerRestAmmo;
    m_animMyFirstHud.Invoke("setRestAmmo", test01);
    ---------------------------------------------------
    ... nach einem weiteren blick ins sdk...
    ---------------------------------------------------

    sooo, na gucken wir mal, ich denke für den ammo bar könnte man es so machen:

    Code:
        IItem * pItem = gEnv->pGame->GetIGameFramework()->GetClientActor()->GetCurrentItem();
        if(CWeapon *pWeapon = static_cast<CWeapon*>(pItem->GetIWeapon()))
        {
            IFireMode *pFM = pWeapon->GetFireMode(pWeapon->GetCurrentFireMode());
            int test02 = gEnv->pGame->GetIGameFramework()->GetClientActor()->GetInventory()->GetAmmoCapacity(pFM->GetAmmoType()));
            test02 = (int) (test02 / 100)*m_playerAmmo;
            m_animMyFirstHud.Invoke("setAmmo", test02);
        }
    letzteres geht im übrigen nur im spiel, im editor gibt es keine ammo restriction... und selbst wenn es eine gäbe müsstest du erst unter ammopickup.cpp / CheckAmmoRestrictions(...) die if(bEditor) abfrage rausnehmen...

    also vom c++ code her sollte alles stimmen, für den actionscript teil kann ich mich aber nit verbürgen.


    gruß Blue

    --------------------------------------------------------------------------------------------------

    Edit:
    Hm, feedback obs geklappt hat wäre schon nicht schlecht gewesen, aber seis drumm, habs auspobiert und bei mir klappts. Der follständigkeit halber will/kann ich nun auch Frage 2 beantworten:

    Wie im Tutorial mit dem custom Healthbar machen wir einfach wieder ein Symbol(nennen wirs mal mPicture) - hier legen wir 5 keyfreams an (aber keine weiteren Ebenen!).
    Keyfream 1 bleibt leer!
    In die Keyfreams 4-5 fügst du nun einfach die Grafik ein die du gerne angezeigt haben möchtest.
    In ActionScript schreibst du nun folgendes rein:

    Code:
    setPic = function(_PicNr) { mPicture.gotoAndStop(_PicNr); }


    Ich bleib mal an der Stelle einfach bei der variable m_animMyFirstHud aus dem HalloWelt Tutorial von Crymod.

    Geh nun zur Funktion (~line: 1181)
    Code:
    void CHUD::ModeChanged(ENanoMode mode)
    (auch in der HUD.cpp zu finden)

    Dort erweiterst du nun die switch / case anweisung wie folgt:

    Code:
        switch(mode)
        {
        case NANOMODE_SPEED:
            m_animMyFirstHud.Invoke("setPic", 2);        //<<-- 1st Pic
            m_animPlayerStats.Invoke("setMode", "Speed");
            m_fSpeedTimer = gEnv->pTimer->GetFrameStartTime().GetMilliSeconds();
            m_fSuitChangeSoundTimer = m_fSpeedTimer;
            break;
        case NANOMODE_STRENGTH:
            m_animMyFirstHud.Invoke("setPic", 3);        //<<-- 2th Pic
            m_animPlayerStats.Invoke("setMode", "Strength");
            m_fStrengthTimer = gEnv->pTimer->GetFrameStartTime().GetMilliSeconds();
            m_fSuitChangeSoundTimer = m_fStrengthTimer;
            break;
        case NANOMODE_DEFENSE:
            m_animMyFirstHud.Invoke("setPic", 4);        //<<-- 3th Pic
            m_animPlayerStats.Invoke("setMode", "Armor");
            m_fDefenseTimer = gEnv->pTimer->GetFrameStartTime().GetMilliSeconds();
            m_fSuitChangeSoundTimer = m_fDefenseTimer;
            break;
        case NANOMODE_CLOAK:
            m_animMyFirstHud.Invoke("setPic", 5);        //<<-- 4th Pic
            m_animPlayerStats.Invoke("setMode", "Cloak");
    
            PlaySound(ESound_PresetNavigationBeep);
            if(m_pNanoSuit->GetSlotValue(NANOSLOT_ARMOR, true) != 50 || m_pNanoSuit->GetSlotValue(NANOSLOT_SPEED, true) != 50 ||
                m_pNanoSuit->GetSlotValue(NANOSLOT_STRENGTH, true) != 50 || m_pNanoSuit->GetSlotValue(NANOSLOT_MEDICAL, true) != 50)
            {
                TextMessage("suit_modification_engaged");
            }
    
            m_fSuitChangeSoundTimer = gEnv->pTimer->GetFrameStartTime().GetMilliSeconds();
    
            if (gEnv->pAISystem)
            {
                pData = gEnv->pAISystem->CreateSignalExtraData();//AI System will be the owner of this data
                pData->iValue = NANOMODE_CLOAK;
                pPlayer = static_cast<CPlayer *>(gEnv->pGame->GetIGameFramework()->GetClientActor());
                if(pPlayer && pPlayer->GetEntity() && pPlayer->GetEntity()->GetAI())
                    gEnv->pAISystem->SendSignal(SIGNALFILTER_SENDER,1,"OnNanoSuitMode",pPlayer->GetEntity()->GetAI(),pData);
            }
            break;
        default:
            break;
        }

    Blue
    Geändert von Blue (18.08.2009 um 20:40 Uhr)

  3. #3
    Co-Administrator Avatar von Masterside
    Registriert seit
    04.12.2007
    Ort
    Bonn
    Beiträge
    3.141

    Standard

    So konnte es noch nicht testen, da ich noch an Visual Studio was einstellen musste, da bei erstellen immer ein fehler kamm, aber dass hat sich jetzt erledigt.

    in 5 min kann ich dir sagen ob es geklappt hat.
    CPU: INTEL i7 3770K RAM: 32 GB DDR3 Motherboard: ASUS P8Z77 LE Plus GPU: EVGA GTX 780 SC SSD: ADATA SP900
    HDD1: SAMSUNG HD103UJ HDD2: SAMSUNG HD161HJ HDD3: SAMSUNG HD501LJ PSU: 1000W OS: Windows 8.1

  4. #4
    Co-Administrator Avatar von Masterside
    Registriert seit
    04.12.2007
    Ort
    Bonn
    Beiträge
    3.141

    Standard

    So habe das mal getestet, bekomme bei der erstellung, immer sieben fehler angezeigt.
    Und das sind sie:
    CPU: INTEL i7 3770K RAM: 32 GB DDR3 Motherboard: ASUS P8Z77 LE Plus GPU: EVGA GTX 780 SC SSD: ADATA SP900
    HDD1: SAMSUNG HD103UJ HDD2: SAMSUNG HD161HJ HDD3: SAMSUNG HD501LJ PSU: 1000W OS: Windows 8.1

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

    Standard

    @ Masterside
    Kannst du bitte auch den Code-Teil darüber posten ?? Du hast wahrscheinlich
    "m_playerClipSize" und "m_playerRestAmmo" in einer if-else-Abfrage erstellt
    und nun verwendest du sie außerhalb dieser, was aber nicht möglich ist.

  6. #6
    Co-Administrator Avatar von Masterside
    Registriert seit
    04.12.2007
    Ort
    Bonn
    Beiträge
    3.141

    Standard

    @Pat21
    Da ist der Teil:


    Habe einfach den Code den Blue mir gegeben hat, an die Stelle getan die er mir beschrieben hat.
    CPU: INTEL i7 3770K RAM: 32 GB DDR3 Motherboard: ASUS P8Z77 LE Plus GPU: EVGA GTX 780 SC SSD: ADATA SP900
    HDD1: SAMSUNG HD103UJ HDD2: SAMSUNG HD161HJ HDD3: SAMSUNG HD501LJ PSU: 1000W OS: Windows 8.1

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

    Standard

    Also im grunde genommen wollte ich blos das das startmenü so wie im Living Hell Mod einfach unter Crysis halt was steht..
    welche datei muss ich dafür verändern/öffnen?


    ModDB
    YouTube CrysisHQ
    Discord: flowgroover#2478

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

    Standard

    @ Flow groover
    "Menus_StartMenu.swf" bzw "Menus_IngameMenu.swf" (der Name verrät es ja eigentlich schon )

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

    Standard

    Ja, klar tut er das, aber ich kann da iwi nichts ändern, und es ist alles schwarz dargestellt. (ist wahrscheiunlich auch korrekt, aber wie kann ich da was ändern?^^)

    Hab Flash CS4
    ist das ein unterschied?
    Geändert von Flow groover (10.02.2010 um 19:36 Uhr)


    ModDB
    YouTube CrysisHQ
    Discord: flowgroover#2478

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

    Standard

    @ Flow groover
    1. Die Datei ist so. Du musst dich damit einfach beschäftigen und ein bisschen testen.
    2. Diese Konversation sollte man in einen anderen Thread verlagern, da diese nichts mehr mit der Mod zu tun hat.

Seite 1 von 2 12 LetzteLetzte

Stichworte

Berechtigungen

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