pasek życia bezposrednio nad npc 6296 21

O temacie

Autor pawbuj

Zaczęty 6.06.2016 roku

Wyświetleń 6296

Odpowiedzi 21

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
dzięki ikariusowi można zrobic praktycznie wszystko,
czy da się dodać bar życia lub/i dodatkowy text (jak w konsoli po nacisnięciu "G") dla npc?
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Na pewno się da. Nazwy npc są nad głowami npc to i to da radę zrobić. Pytanie tylko JAK?
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
Skoro nazwę npc da się dodać, to i pasek da się dodać.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
ja lubie tematy trudne wymyslać, zapytam Lehony
 

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
Najprościej używając zmienionego fontu, tak jak kiedyś dorabiano paski życia 
 


Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
Zbyt dużo kombinowania, a można to zrobić krócej i prościej. Pozycję paska można zmieniać przypisując mu pozycję tekstu. Oczywiście trzeba trochę dodać lub odjąć od tej pozycji by nie zasłaniał imienia npc. Pozostaje tylko skalować pasek zależnie od dystansu. Trochę matematyki i powinno działać. Funkcję będzie najlepiej wywoływać przez Focusnames z LeGo.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
Prosciej, jak dla kogo.
 


pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Zbyt dużo kombinowania, a można to zrobić krócej i prościej. Pozycję paska można zmieniać przypisując mu pozycję tekstu. Oczywiście trzeba trochę dodać lub odjąć od tej pozycji by nie zasłaniał imienia npc. Pozostaje tylko skalować pasek zależnie od dystansu. Trochę matematyki i powinno działać. Funkcję będzie najlepiej wywoływać przez Focusnames z LeGo.

primo skąd wziąść pozycję textu przy focus npc?

secundo - skalować pask/bar, jest na to funkcja w bars.d?

samo wywołanie - mamy hooka do g1/g2

@Lehona twierdzi , że na wogu było coś podobnego i jak znajdzie to mi prześle.
 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Cytuj
primo skąd wziąść pozycję textu przy focus npc?
Metoda prób i błędów lub szukać w oCNPC (focusvob)
Cytuj
secundo - skalować pask/bar, jest na to funkcja w bars.d?
Bary z pakietu bars nie są prawdziwe więc tak nie zmienisz tych z silnika. Musisz przez klasę oCGame dostać się do klasy zCViewStatusBar(chyba tak brzmiała) i za pomocą MEM_WriteInt() robić co ci się podoba.
Cytuj
samo wywołanie - mamy hooka do g1/g2
Splash już napisał że najlepiej całą funkcję dodać do FocusNames.
    var int hpBar;                  //oCViewStatusBar*
    var int swimBar;                //oCViewStatusBar*
    var int manaBar;                //oCViewStatusBar*
    var int focusBar;               //oCViewStatusBar*
Masz tu te zmienne do pasków. Resztę sam kombinuj.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
Cytuj
primo skąd wziąść pozycję textu przy focus npc?
Jest kilka sposobów.
Cytuj
secundo - skalować pask/bar, jest na to funkcja w bars.d?
Nie, ale jeśli znasz angielski, to wystarczy zajrzeć do klasy zCView i chwilę pomyśleć.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Lehona

Lehona

Użytkownicy
posty196
Propsy190
  • Użytkownicy
I already sent a PM to pawbuj (on WoG), but I just want to make sure the information isn't lost:

Cytuj
If you hook at 0x6C3B6C (length: 6) the coordinates of the NPC's name are in EAX (X-coordinate) and EBX (Y-coordinate). I just looked it up and didn't test anything, so if you can't get it to work, show me your code and we'll figure it out
 
Unless specified otherwise, my posts are always about Gothic 2 Night of the Raven.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Hi, I have read ur message. but the hook is probably for g2, I am not so keen to find similar adress in g1 engine.
 

Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
EBX returns position Y, but EAX all time returns 20315068.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Lehona

Lehona

Użytkownicy
posty196
Propsy190
  • Użytkownicy
Try 0x6C3B79 with length 8, then EAX should contain the X-coordinate. (Currently EAX contains a pointer to a string)
 
Unless specified otherwise, my posts are always about Gothic 2 Night of the Raven.

Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
I did it very quickly and crudely, so looks awfully if focused npc name is short:
var int name_x;
var int name_y;
var int name_width;

func void FocusName_PosX ()
{
    name_x = EAX;
};

func void FocusName_PosY ()
{
    name_y = EBX;
    name_width = Print_ToVirtual (Print_GetStringWidth (MEM_ReadString (EAX), "FONT_OLD_10_WHITE.TGA"), PS_X);
};

func void BarAboveNpc ()
{
    var oCNpc her; her = Hlp_GetNpc (hero);

    if (Hlp_Is_oCNpc (her.focus_vob))
    {
    var oCViewStatusBar bar; bar = _^ (MEM_Game.focusBar);
    bar.zCView_vposx = name_x;
    bar.zCView_vsizex = name_width;
    bar.zCView_vposy = name_y - 300;
    };
};

func void BarAboveNpc_Init ()
{
    HookEngineF (7093113, 8, FocusName_PosX);
    HookEngineF (7093100, 6, FocusName_PosY);
    FF_ApplyOnce (BarAboveNpc);
};
Spoiler
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
Not quite xD
Spoiler
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
You can also put a minimum width, for example 15 and then add the name width. :)

Example:
func void FocusName_PosY ()
{
    name_y = EBX;
    name_width = Print_ToVirtual (Print_GetStringWidth (MEM_ReadString (EAX), "FONT_OLD_10_WHITE.TGA"), PS_X);

if (name_width < Print_ToVirtual (Print_GetStringWidth ("Ścierwojad", "FONT_OLD_10_WHITE.TGA"), PS_X))//It looks nice with that name
{
name_width = Print_ToVirtual (Print_GetStringWidth ("Ścierwojad", "FONT_OLD_10_WHITE.TGA"), PS_X);
};
};
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
It's early version. Later I'll do that bar will scale according to distance to npc.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
Pasek raczej powinien mieć rozmiar zależny tylko od pozycji npc do bohatera a nie długości nazwy 
 



0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry