Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Results 1 to 9 of 9
  1. View Forum Posts #1 Reply With Quote
    Lehrling Maximus93's Avatar
    Join Date
    Feb 2016
    Location
    Braunschweig
    Posts
    49
     
    Maximus93 is offline

    Gre der HP-Bar ndern

    Hey,

    ich habe hier ein Skript von Lehona gefunden, mit dem man die Textur der HP-Bar ndern kann.
    Aus dem Thread: https://forum.worldofplayers.de/foru...en+austauschen

    Code:
    var oCViewStatusBar bar; bar = _^(MEM_Game.hpBar);
    var int h; h = wrap(zCView@, bar.value_bar);
    View_SetTexture(h, "neueTextur.tga");
    bar.texValue = "neueTextur.tga");
    release(h);
    Ich frage mich, ob man es in der Art auch hinbekommt die Gre der HP-Bar zu ndern.
    Habe einiges ausprobiert, aber bekomme es leider nicht hin..
    Kann mir da vllt wer weiterhelfen?

  2. View Forum Posts #2 Reply With Quote
    Dea
    Join Date
    Jul 2007
    Posts
    10,200
     
    Lehona is offline
    Code:
    var oCViewStatusBar bar; bar = _^(MEM_Game.hpBar);
    var zCView v; v = _^(bar.value_bar);
    var int X; X = v.vsizex;
    var int Y; Y = v.vsizey;
    ViewPtr_Resize(bar.value_bar, X*2, Y*2);
    
    v = _^(bar.range_bar);
    X = v.vsizex;
    Y = v.vsizey;
    ViewPtr_Resize(bar.range_bar, X*2, Y*2);
    
    v = _^(MEM_Game.hpBar);
    X = v.vsizex;
    Y = v.vsizey;
    ViewPtr_Resize(MEM_Game.hpBar, X*2, Y*2);
    So wrde ich es versuchen. Es kann sein, dass du den letzten Block weglassen musst, aber so sollte die Bar dann doppelt so lang/hoch sein.
    Last edited by Lehona; 13.11.2019 at 02:53.

  3. View Forum Posts #3 Reply With Quote
    Lehrling Maximus93's Avatar
    Join Date
    Feb 2016
    Location
    Braunschweig
    Posts
    49
     
    Maximus93 is offline
    Quote Originally Posted by Lehona View Post
    Code:
    var oCViewStatusBar bar; bar = _^(MEM_Game.hpBar);
    var zCView v; v = _^(bar.value_bar);
    var int X; X = v.vsizex;
    var int Y; Y = v.vsizey;
    ViewPtr_Resize(bar.value_bar, X*2, Y*2);
    
    v = _^(bar.range_bar);
    X = v.vsizex;
    Y = v.vsizey;
    ViewPtr_Resize(bar.range_bar, X*2, Y*2);
    
    v = _^(MEM_Game.hpBar);
    X = v.vsizex;
    Y = v.vsizey;
    ViewPtr_Resize(MEM_Game.hpBar, X*2, Y*2);
    So wrde ich es versuchen. Es kann sein, dass du den letzten Block weglassen musst, aber so sollte die Bar dann doppelt so lang/hoch sein.

    Das funktioniert schon mal wunderbar, vielen dank!

    Wenn man die HP-Bar derart verndern kann, ist es ggf. auch mglich ein View_AddText darauf zu erstellen, welches mittig von der Bar die Lebenspunkte als Text darstellt?
    Ich probiere da selber viel rum und habe die Lebenspunkte bisher als Text mit einem Print_Ext ber der Bar realisiert.. keine Ahnung, ob das die beste Lsung ist..



    //EDIT
    Ich habe jetzt einen Text mit den Lebenspunkten, aber es funktioniert noch nicht wirklich. Und zwar liegt der Text unter dem eigentlichen Lebensbalken und wird erst sichtbar, wenn man Leben verloren hat... (s.Bild)

    Code:
    ViewPtr_DeleteText(MEM_Game.hpBar);
    ViewPtr_AddText(MEM_Game.hpBar, 4096, 2000, IntToString(hero.attribute[ATR_HITPOINTS]), PF_Font, RGBA(255,255,255,255));


    [Bild: da4711-1573615943.jpg]
    Last edited by Maximus93; 13.11.2019 at 05:35.

  4. View Forum Posts #4 Reply With Quote
    Dea
    Join Date
    Jul 2007
    Posts
    10,200
     
    Lehona is offline
    Du hast zwei Mglichkeiten: Entweder erstellst du einen eigenen View (oder Print) mit dem Text, damit der ber der Lebensleiste steht, oder du fgst den Text an die bar.value_bar anstatt MEM_Game.hpBar. Dann wird der auf den letzten Meter sehr schwierig zu lesen (weil er immer in der Mitte der brig bleibenden Lebenspunkte ist).

  5. View Forum Posts #5 Reply With Quote
    Lehrling Maximus93's Avatar
    Join Date
    Feb 2016
    Location
    Braunschweig
    Posts
    49
     
    Maximus93 is offline
    Okay, habe jetzt glaub ich eine "saubere" Lsung, soweit ich das beurteilen kann
    In der Init erstelle ich ein neues View, welches genau ber der HP-Bar liegt.
    Im Loop wird die Gre und Position der HP-Bar angepasst und die HP werden als Text genau mittig in dem neuen View eingefgt.
    @Lehona: Um die Gre der HP-Bar zu ndern, gengt lediglich folgende Zeile aus deinem Skript: ViewPtr_Resize(MEM_Game.hpBar, Bar_Size_x, Bar_Size_y);

    Ich finde nur komisch, dass ich im Loop immer wieder die Gre und Position der HP-Bar festlegen muss. Wenn ich die beiden Zeilen aber in Interface_Init schreibe, die in init_global aufgerufen wird, passiert nix.

    Und momentan wird der HP-Text ber der HP-Bar angezeigt. Bekommt man es vllt hin, dass der neue View auf der HP-Bar im Vordergrund liegt?
    Bekomme das mit 'View_Top' leider nicht hin.. (vllt muss man hierfr eine neue eigene HP-Bar erstellen, weil man auf die originale nix im Vordergrund hin bekommt?!)

    Code:
    const int Bar_Size_x = 1079;
    const int Bar_Size_y = 200;
    const int HP_Bar_xPos = 100; //von links
    const int HP_Bar_yPos = 300; //von unten
    var int HP_Text;
    
    func void Interface_Init(){    
        HP_Text = View_New();
        View_Resize(HP_Text, Bar_Size_x, Bar_Size_y);
        View_MoveTo(HP_Text, HP_Bar_xPos, PS_VMax - HP_Bar_yPos - Bar_Size_y);
        View_Open(HP_Text);
    };
    
    func void Interface_Loop(){    
        //HP-Bar
        ViewPtr_Resize(MEM_Game.hpBar, Bar_Size_x, Bar_Size_y);    
        ViewPtr_MoveTo(MEM_Game.hpBar, HP_Bar_xPos, PS_VMax - HP_Bar_yPos);
            
        var int HP_Player_Before;
        if(hero.attribute[ATR_HITPOINTS] != HP_Player_Before)
        {
            //HP-Player
            var string HP_Player;
            HP_Player = ConcatStrings(IntToString(hero.attribute[ATR_HITPOINTS]), "/");
            HP_Player = ConcatStrings(HP_Player,IntToString(hero.attribute[ATR_HITPOINTS_MAX]));        
            
            //HP-Text
            var int HP_Text_Length; HP_Text_Length = Print_ToVirtual(Print_GetStringWidth(HP_Player, PF_Font), PS_X );
            var int HP_Text_Height; HP_Text_Height = Print_ToVirtual(Print_GetFontHeight(PF_Font), PS_Y );
    
            var int HP_Text_xPos; HP_Text_xPos = (PS_VMAX / 2) - (Print_ToVirtual(HP_Text_Length, Bar_Size_x) / 2);
            var int HP_Text_yPos; HP_Text_yPos = (PS_VMAX / 2) - (Print_ToVirtual(HP_Text_Height, Bar_Size_y) / 2);
    
            View_DeleteText(HP_Text);
            View_AddText(HP_Text, HP_Text_xPos, HP_Text_yPos, HP_Player, PF_Font);    
            
            //HP-Player before
            HP_Player_Before = hero.attribute[ATR_HITPOINTS];
        };
    };
    Last edited by Maximus93; 14.11.2019 at 01:14.

  6. View Forum Posts #6 Reply With Quote
    Ranger
    Join Date
    Feb 2013
    Posts
    162
     
    pawbuj is offline
    how u run that code, by FrameFuncs?

  7. View Forum Posts #7 Reply With Quote
    Lehrling Maximus93's Avatar
    Join Date
    Feb 2016
    Location
    Braunschweig
    Posts
    49
     
    Maximus93 is offline
    In init_global I run:
    • Interface_Init();
    • FF_ApplyOnceExt(Interface_Loop, 50, -1);


    So yes, I run the loop by FrameFunc.

  8. View Forum Posts #8 Reply With Quote
    Ranger
    Join Date
    Feb 2013
    Posts
    162
     
    pawbuj is offline
    Quote Originally Posted by Maximus93 View Post
    In init_global I run:
    • Interface_Init();
    • FF_ApplyOnceExt(Interface_Loop, 50, -1);


    So yes, I run the loop by FrameFunc.

    I just run the code and the hp text is under the HP Bar not inside the bar as on your screenshot.

    Is that effect u want?

    Anyway it would be nice to add same effect for focused NPCs as well!

  9. View Forum Posts #9 Reply With Quote
    Lehrling Maximus93's Avatar
    Join Date
    Feb 2016
    Location
    Braunschweig
    Posts
    49
     
    Maximus93 is offline
    Quote Originally Posted by pawbuj View Post
    I just run the code and the hp text is under the HP Bar not inside the bar as on your screenshot.

    Is that effect u want?

    Anyway it would be nice to add same effect for focused NPCs as well!

    Eehm wait..

    The screenshot belongs only to the following small code. With that code the text is hidden when you have full life, because it lays in the background of the HP value bar. Its not good at all in my opinion.
    Code:
    ViewPtr_DeleteText(MEM_Game.hpBar);
    ViewPtr_AddText(MEM_Game.hpBar, 4096, 2000, IntToString(hero.attribute[ATR_HITPOINTS]), PF_Font, RGBA(255,255,255,255));


    Thats why I made my longer second code. There I create a whole new view, which is above the bar, because I see no possibilty to display the view in front of the HP-Bar. It appears in the background always..
    Maybe someone knows how to get this working. Maybe I have to create a whole new HP-Bar but i dont know actually.

    I want to add the effect for player HP, focused NPC HP and Mana!
    Last edited by Maximus93; 13.11.2019 at 21:01.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
Impressum | Link Us | intern
World of Gothic by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide