Pasek życia 10160 23

O temacie

Autor carelion

Zaczęty 6.03.2013 roku

Wyświetleń 10160

Odpowiedzi 23

carelion

carelion

RaveN Studio
Moete Kita Zo!
posty153
Propsy73
Profesjabrak
  • RaveN Studio
  • Moete Kita Zo!

carelion
RaveN Studio

Pasek życia
2013-03-06, 15:14(Ostatnia zmiana: 2013-03-06, 15:19)
Witam mam problem z paskiem życia otóż chciałbym go przenieść na inną pozycję ale nie wiem jak.

jak nie dało by się go przenieść chciałbym go ukryć tak jak się da za pomocą skryptu lehony na ciągle widoczny pasek many.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Co zrobiłeś do tej pory żeby osiągnąć ten cel? Gdzie szukałeś? Na jaki problem się natknąłeś?

Odniesienia do wyświetlanych pasków życia są w obiekcie oGame do którego bardzo łatwo uzyskać dostęp za pomocą Ikarusa. W tym pakiecie są też klasy wymagane do zmiany parametrów pasków, takich jak ich położenie.

carelion

carelion

RaveN Studio
Moete Kita Zo!
posty153
Propsy73
Profesjabrak
  • RaveN Studio
  • Moete Kita Zo!

carelion
RaveN Studio

Pasek życia
#2 2013-03-06, 15:27(Ostatnia zmiana: 2013-03-06, 16:01)
a co zrobić by pasek stworzony prze ze mnie też znikał podczas dialogów, menu statystyk itp. ?

EDIT: dzięki avallach!
 

EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
Odpowiednią funkcje.
 

carelion

carelion

RaveN Studio
Moete Kita Zo!
posty153
Propsy73
Profesjabrak
  • RaveN Studio
  • Moete Kita Zo!
jak zrobić by pasek życia zniknął tak samo jak da się zrobić z paskiem many za pomocą skryptu lehony?
 


carelion

carelion

RaveN Studio
Moete Kita Zo!
posty153
Propsy73
Profesjabrak
  • RaveN Studio
  • Moete Kita Zo!
Dobrze zacznijmy od początku:

Co zrobiłeś do tej pory żeby osiągnąć ten cel? Gdzie szukałeś? Na jaki problem się natknąłeś?
problem zaczął się od tego że chciałem zmienić położenie pasków więc zacząłem szukać na wogu w temacie ikarusa i lego ale nie mogłem nic znaleźć

wiem jak dodać nowy pasek ale nie wiem jak zmienić położenie paska zaprogramowanego w silniku gothica


Odniesienia do wyświetlanych pasków życia są w obiekcie oGame do którego bardzo łatwo uzyskać dostęp za pomocą Ikarusa. W tym pakiecie są też klasy wymagane do zmiany parametrów pasków, takich jak ich położenie.
znalazłem tam zmienne które ich dotyczą

   var int hpBar;                  //oCViewStatusBar*
    var int swimBar;                //oCViewStatusBar*
    var int manaBar;                //oCViewStatusBar*
    var int focusBar;               //oCViewStatusBar*
 


carelion

carelion

RaveN Studio
Moete Kita Zo!
posty153
Propsy73
Profesjabrak
  • RaveN Studio
  • Moete Kita Zo!
Dokładnie, to są ich adresy. Przypisz je do obiektów za pomocą odpowiedniej funkcji Ikarusa
A czy mógłbyś mi powiedzieć jak mniej więcej przypisać te adresy?
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
MEM_AssignContentInst, przykładowe zastosowanie jest nawet w samym Ikarus.d:
instance MEM_Game (oCGame);

...


func void MEM_InitGlobalInst() {
    //Game:
    var int game; game = MEM_ReadInt (MEMINT_oGame_Pointer_Address);
    MEM_AssignContentInst (MEM_Game, game);

...
Jak widzisz jest tworzona pusta instancja odpowiedniej klasy, a następnie wywołuje się tą funkcję przyjmując za argumenty jej identyfikator oraz adres obiektu do przypisania.

carelion

carelion

RaveN Studio
Moete Kita Zo!
posty153
Propsy73
Profesjabrak
  • RaveN Studio
  • Moete Kita Zo!

carelion
RaveN Studio

Pasek życia
#10 2013-03-09, 12:42(Ostatnia zmiana: 2013-03-09, 12:43)
Czyli mam do funkcji func void MEM_InitGlobalInst() { przypisać dodać to:
   var int barhp; barhp = MEM_ReadInt (MEMINT_oGame_hpBar);
    MEM_AssignContentInst (MEM_Game, barhp);
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Pasek życia
#11 2013-03-09, 12:47(Ostatnia zmiana: 2013-03-09, 12:49)
Rozważmy to co napisałeś krok po kroku.
Cytuj
do funkcji func void MEM_InitGlobalInst() {
Niby dlaczego w niej? Nie. Tam gdzie chcesz żeby było to wywoływane, nie widzę sensu żeby akurat w tej, chyba że wywołujesz ją w startupie.
MEM_ReadInt (MEMINT_oGame_hpBar);Czy istnieje zmienna MEMINT_oGame_hpBar lub ją stworzyłeś? Zgaduję że nie. Dlaczego w ogóle używasz tu MEM_ReadInt?
MEM_AssignContentInst (MEM_Game, barhp);Dlaczego przypisujesz pasek życia do obiektu gry? Nie dość że w tamtym obiekcie ma być co innego, to klasy się nie zgadzają.

Napisałem ci wyraźnie co masz zrobić.
Jak widzisz jest tworzona pusta instancja odpowiedniej klasy, a następnie wywołuje się tą funkcję przyjmując za argumenty jej identyfikator oraz adres obiektu do przypisania.
Spróbuj wykonać to krok po kroku, zacznij np od pierwszych 8 wyrazów mojego zadnia i pokaż co ci wyjdzie, ewentualnie cię poprawię. Później przejdziemy do drugiej części zdania. Nigdy nie nauczysz się skryptować próbując odgadywać (źle) jak przerabiać cudze skrypty zamiast samemu myśleć.

carelion

carelion

RaveN Studio
Moete Kita Zo!
posty153
Propsy73
Profesjabrak
  • RaveN Studio
  • Moete Kita Zo!
Czyli moge dodać to:
   var int barhp; barhp = MEM_ReadInt (hpBar);
    MEM_AssignContentInst (MEM_Game, barhp);
do startup'a

Tam gdzie jest MEM_ReadInt nie wiem co dać więc wzoruje się na tym co podałeś.


   MEM_AssignContentInst (MEM_Game, barhp);
Cytuj
Nie dość że w tamtym obiekcie ma być co innego
co tam ma być?
 


carelion

carelion

RaveN Studio
Moete Kita Zo!
posty153
Propsy73
Profesjabrak
  • RaveN Studio
  • Moete Kita Zo!
Śpieszyłem się bo musiałem gdzieś iść.

chodzi mi o to że nie wiem co umieścić zamiast MEM_ReadInt
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Pasek życia
#15 2013-03-09, 15:12(Ostatnia zmiana: 2013-03-09, 15:15)
Przeczytaj jeszcze raz tamtego posta, CAŁEGO :facepalm:  Żeby było łatwiej, zacytuję:
Rozważmy to co napisałeś krok po kroku.
Cytuj
do funkcji func void MEM_InitGlobalInst() {
Niby dlaczego w niej? Nie. Tam gdzie chcesz żeby było to wywoływane, nie widzę sensu żeby akurat w tej, chyba że wywołujesz ją w startupie.
MEM_ReadInt (MEMINT_oGame_hpBar);Czy istnieje zmienna MEMINT_oGame_hpBar lub ją stworzyłeś? Zgaduję że nie. Dlaczego w ogóle używasz tu MEM_ReadInt?
MEM_AssignContentInst (MEM_Game, barhp);Dlaczego przypisujesz pasek życia do obiektu gry? Nie dość że w tamtym obiekcie ma być co innego, to klasy się nie zgadzają.

Napisałem ci wyraźnie co masz zrobić.
Jak widzisz jest tworzona pusta instancja odpowiedniej klasy, a następnie wywołuje się tą funkcję przyjmując za argumenty jej identyfikator oraz adres obiektu do przypisania.
Spróbuj wykonać to krok po kroku, zacznij np od pierwszych 8 wyrazów mojego zadnia i pokaż co ci wyjdzie, ewentualnie cię poprawię. Później przejdziemy do drugiej części zdania. Nigdy nie nauczysz się skryptować próbując odgadywać (źle) jak przerabiać cudze skrypty zamiast samemu myśleć.

Zwróć szczególną uwagę na część od "Napisałem ci". W razie problemów zobacz też jeszcze poprzedni post z przykładem jak to jest zrobione w Ikarusie z MEM_Game.

carelion

carelion

RaveN Studio
Moete Kita Zo!
posty153
Propsy73
Profesjabrak
  • RaveN Studio
  • Moete Kita Zo!

carelion
RaveN Studio

Pasek życia
#16 2013-03-09, 16:45(Ostatnia zmiana: 2013-03-09, 17:21)
Spróbuj wykonać to krok po kroku, zacznij np od pierwszych 8 wyrazów mojego zadnia i pokaż co ci wyjdzie,
Czyli pierw mam stworzyć nową instance?

EDIT:
zrobiłem taki skrypt:
instance HpBar_Edit (oCGame);

...


func void Edit_Bars()
{
    var int barhp; barhp = hpbar;
    MEM_AssignContentInst (HpBar_Edit, barhp);

...

EDIT2:
Mógłbym też tekstury pasków zrobić przezroczyste i zrobić nowe z właściwościami starych pasków,jednak wtedy gdy namierzę przeciwnika nie będzie widać jego życia.
 

EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis

EdekSumo
Wyspa Khorinis

Pasek życia
#17 2013-03-09, 17:34(Ostatnia zmiana: 2013-03-09, 17:35)
  var int barhp; barhp = hpbar; DAFAQ

MEM_InitGlobalInst ();
var oCViewStatusBar bar_hp; bar_hp = MEM_PtrToInst (MEM_GAME.hpBar);
Tak powinno to wyglądać...

Ale z tego co widać nie masz ZIELONEGO pojęcia co robisz... więc nawet to Ci nie pomoże.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Pasek życia
#18 2013-03-09, 18:06(Ostatnia zmiana: 2013-03-09, 18:07)
Tak jak Edek zaproponował też można, chociaż metoda z instancją jest równie dobra jak ta ze zmienną. W każdym razie nie chciałem pokazywać ci gotowego kodu żebyś sam się nauczył...
Miałeś zacząć od pierwszych ośmiu wyrazów, czyli "Jak widzisz jest tworzona pusta instancja odpowiedniej klasy". Niepotrzebnie zrobiłeś resztę, bo błąd popełniłeś już tu. Napisałeś:
instance HpBar_Edit (oCGame);Udało ci się poprawnie dojść tylko do 6 wyrazu. Niestety ostatnie dwa ("odpowiedniej klasy") najwyraźniej przegapiłeś. Użyłeś klasy oCGame, która przechowuje informacje o grze. Powinieneś był użyć klasy oCViewStatusBar. Spróbuj jeszcze raz, to przejdziemy do dalszej części. Tak działa debugowanie, z tym że teraz debugujemy nie skrypt, a ciebie.

Ewentualnie, jeśli nie zależy ci na tym żeby samemu to osiągnąć, możesz po prostu skopiować kod Edka pomimo że oczywiście go nie rozumiesz, i jeśli w przyszłości będziesz miał podobny problem, to znowu nie będziesz potrafił sam sobie poradzić...

carelion

carelion

RaveN Studio
Moete Kita Zo!
posty153
Propsy73
Profesjabrak
  • RaveN Studio
  • Moete Kita Zo!
Wole nie gotowca ale własnego wysiłku
ok no to zaczynamy stworzyłem instancje:
instance HpEdit (oCViewStatusBar);
co dalej?
 


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