Zachowanie animacji 11561 29

O temacie

Autor Siemekk

Zaczęty 22.01.2016 roku

Wyświetleń 11561

Odpowiedzi 29

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Otóż od jakiegoś czasu mecze się  zachowaniem animacji dla beziego po wczytaniu gry... Próbowałem dopisać przy funkcji zakładania tarczy zmienna =True i wywoływac funkcje z warunkiem co klatkę ale to nie pomagało... Ktoś wie jak można byłoby osiągnąć taki efekt? Byłbym wdzięczny za pomoc.
 

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

bgb

bgb

Użytkownicy
posty848
Propsy593
Profesjabrak
  • Użytkownicy

bgb

Zachowanie animacji
#1 2016-01-23, 00:40(Ostatnia zmiana: 2016-01-23, 00:48)
Wstaw funkcję "odświeżającą" animacje w startupie w init_global() dokładnie na tej zasadzie co opisałeś, czyli wykonującej się np. gdy:

if (shield_equipped == true)

Nie trzeba  do tego Ikarusa, chociaż Twój sposób wywoływania tego po klatce też w zasadzie powinien działać. Może samą funkcję do tego odświeżania masz złą? Próbowałeś np. wywołać ją ręcznie  po wczytaniu save?

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Właśnie mój skrypt wygląda tak samo z tym warunkiem if... ale animacja aktywuje się losowo (Pierwsze wczytanie-Właściwa Drugie wczytanie- błędna). funkcje wywoływałem co klatkę. A skrypt wygląda takif (shield_equip==true)&&(debugshield==false){
Print("Tarcza założona");
Mdl_ApplyOverlayMds  (hero, "HUM_Shield_st1.MDS");
debugshield =true;//ta zmienna po to aby postać się mogła ruszać...
 

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

bgb

bgb

Użytkownicy
posty848
Propsy593
Profesjabrak
  • Użytkownicy
ale animacja aktywuje się losowo (Pierwsze wczytanie-Właściwa Drugie wczytanie- błędna).
To chyba przez twoją zmienną debugshield. Przy pierwszym wczytaniu ustawiasz ją na true i potem tak już zostaje, więc funkcja drugi raz się nie wykona. Spróbuj zrobić tak jak mówiłem: wywołaj swoją funkcję normalnie w init_global bez framefunction i bez tej zmiennej debugshield.

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
func void INIT_GLOBAL()
{



if (shield_equip==true){
Print("Tarcza założona");
Mdl_ApplyOverlayMds  (hero, "HUM_Shield_st1.MDS");
};
Przy założeniu tarczy nawet print się nie pojawia :/ Wiem że w Mrocznych Tajemnicach zrobili kilka poziomów walki mieczem... ktoś nie wie jak oni uzyskali taki efekt że animacja nie znika?
 

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

bgb

bgb

Użytkownicy
posty848
Propsy593
Profesjabrak
  • Użytkownicy
Przy założeniu tarczy nawet print się nie pojawia :/

Ale dodałeś też funkcję zmieniającą mds do samych tarcz? Mam na myśli zmianę mds przy zakładaniu i zdejmowaniu funkcjami on_equip oraz on_unequip

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Przy założeniu tarczy nawet print się nie pojawia :/

Ale dodałeś też funkcję zmieniającą mds do samych tarcz? Mam na myśli zmianę mds przy zakładaniu i zdejmowaniu funkcjami on_equip oraz on_unequip
Nope. Dodałem tylko do unequip zdejmowanie MDS i zmiany zmiennej na false. A w equip tylko dałem zmiena=true;
 

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

bgb

bgb

Użytkownicy
posty848
Propsy593
Profesjabrak
  • Użytkownicy
Nope. Dodałem tylko do unequip zdejmowanie MDS i zmiany zmiennej na false. A w equip tylko dałem zmiena=true;
No to dodaj. W sumie trzy funkcje będą użyte.
Jedna przy zakładaniu tarczy, będzie nakładać mds i ustawiać zmienną = true.
Druga przy zdejmowaniu będzie ściągać mds i ustawiać zmienna =false.
I trzecia w init_global będzie sprawdzać czy zmienna == true i jeśli tak to będzie nakładać mds.

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Mnie działają tarcze tak:

INSTANCE ItTs_Shield (C_Item)
{
name = "Metalowa Tarcza";

mainflag = ITEM_KAT_NF;
flags = ITEM_SHIELD;

protection [PROT_EDGE] = 20;
protection [PROT_BLUNT] = 20;
protection [PROT_POINT] = 20;
protection [PROT_FIRE] = 10;
protection [PROT_MAGIC] = 5;

value = 650;

on_equip = Equip_Shield;
on_unequip = UnEquip_Shield;

cond_atr[2]    = ATR_STRENGTH;
cond_value[2]  = 30;
TEXT[0] = NAME_Str_needed;
COUNT[0] = cond_value[2];

visual = "ItTs_IronShield_02.3ds";
material = MAT_METAL;

description = name;

TEXT[1] = NAME_Prot_Edge;
COUNT[1] = protection [PROT_EDGE];

TEXT[2] = NAME_Prot_Point;
COUNT[2] = protection [PROT_POINT];

TEXT[3] = NAME_Prot_Fire;
COUNT[3] = protection [PROT_FIRE];

TEXT[4] = NAME_Prot_Magic;
COUNT[4] = protection [PROT_MAGIC];

TEXT[5] = NAME_Value;
COUNT[5] = value;
};
FUNC VOID Equip_Shield()
{
Mdl_ApplyOverlayMds(self,"Humans_ShieldPR.mds");
};

FUNC VOID UnEquip_Shield()
{
Mdl_RemoveOverlayMds(self,"Humans_ShieldPR.mds");
};

Animacja nie zostaje zdejmowana po wczytaniu.
 
: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.

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Niestety tarcza dalej zmienia animację... (zapisywanie z wyciągniętą bronią) oraz pojawił się dziwny błąd...  Wszystko wyłączyłem ze startup ale ciągle pojawia się to po wczytaniu.
 

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

bgb

bgb

Użytkownicy
posty848
Propsy593
Profesjabrak
  • Użytkownicy
Pokaż te funkcje, które dodałeś/zmieniałeś.

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Proszę bardzo... Zakładanie:
FUNC INT Equip_shield()
{
shield_equip=true;
Mdl_ApplyOverlayMds  (hero, "HUM_Shield_st1.MDS");
};
Zdejmowanie:
FUNC VOID UnEquip_shield()
{
shield_equip=false;
Mdl_RemoveOverlayMds  (hero, "HUM_Shield_st1.MDS");
};
I startup:
if (shield_equip==true){
Print("Tarcza założona");
Mdl_ApplyOverlayMds  (hero, "HUM_Shield_st1.MDS");
};
 

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

bgb

bgb

Użytkownicy
posty848
Propsy593
Profesjabrak
  • Użytkownicy
Powinno być func void bo funkcja nic nie zwraca.

FUNC INT Equip_shield()
{
shield_equip=true;
Mdl_ApplyOverlayMds  (hero, "HUM_Shield_st1.MDS");
};

Napisz jeszcze gdzie zadeklarowałeś, zmienną shield_equip.

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota

Siemekk
Złote Wrota

Zachowanie animacji
#13 2016-01-23, 15:19(Ostatnia zmiana: 2016-01-23, 15:39)
Powinno być func void bo funkcja nic nie zwraca.

FUNC INT Equip_shield()
{
shield_equip=true;
Mdl_ApplyOverlayMds  (hero, "HUM_Shield_st1.MDS");
};

Napisz jeszcze gdzie zadeklarowałeś, zmienną shield_equip.
Jakoś zawsze dawałem INT i się przyzwyczaiłem ale mniejsza. A co do zmiennej to rzecz jasna w Story_Globals.
EDIT: Znów animacja zmienia się po drugim wczytaniu gry...
 

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

bgb

bgb

Użytkownicy
posty848
Propsy593
Profesjabrak
  • Użytkownicy
EDIT: Znów animacja zmienia się po drugim wczytaniu gry...
A u mnie działa...
Spróbuj jeszcze zrobić tak jak napisał Bogdan Zwei. Czyli w ogóle wywalić zmienną i opierać się jedynie na onequip i unequip tarcz:

FUNC VOID Equip_Shield()
{
Mdl_ApplyOverlayMds(self,"Humans_ShieldPR.mds");
};

FUNC VOID UnEquip_Shield()
{
Mdl_RemoveOverlayMds(self,"Humans_ShieldPR.mds");
};
Jeśli to nie zadziała to naprawdę już nie wiem... Masz systempack zainstalowany? :F

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
EDIT: Znów animacja zmienia się po drugim wczytaniu gry...
A u mnie działa...
Spróbuj jeszcze zrobić tak jak napisał Bogdan Zwei. Czyli w ogóle wywalić zmienną i opierać się jedynie na onequip i unequip tarcz:

FUNC VOID Equip_Shield()
{
Mdl_ApplyOverlayMds(self,"Humans_ShieldPR.mds");
};

FUNC VOID UnEquip_Shield()
{
Mdl_RemoveOverlayMds(self,"Humans_ShieldPR.mds");
};
Jeśli to nie zadziała to naprawdę już nie wiem... Masz systempack zainstalowany? :F
Ba systempack to podstawa xD
Zrobiłem tak założyłem tarczę. Zapisałem i wczytałem jest dobrze, nadpisuje save i znowu wczytuje i DUPA :/
Tak to na SS wygląda:
Przed 1 zapisem.
Spoiler

Po 1 zapisie i wczytaniu:
Spoiler
Po wczytaniu i nadpisaniu :
Spoiler
Zawsze pojawia się ten błąd przy nadpisaniu lub zapisaniu na innym slocie po wczytaniu (w Dark Sadze również tak było)
 

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

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Problemem jest to, że masz wyciągniętą broń - a przynajmniej tak mi się zdaje.

Spróbuj zapisać ze schowaną bronią i oczywiście New Game.
 
: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.

bgb

bgb

Użytkownicy
posty848
Propsy593
Profesjabrak
  • Użytkownicy
Ok, chyba wiem o co chodzi. Wróćmy do mojego sposobu z trzema funkcjami. Funkcję w init_global zmień na taką:
if (shield_equip==true){
Mdl_RemoveOverlayMds  (hero, "HUM_Shield_st1.MDS");
Print("Tarcza założona");
Mdl_ApplyOverlayMds  (hero, "HUM_Shield_st1.MDS");
};

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
No i elegancko. Wszyściutko działa jak należy. (Mogli by tak do DS zrobić ale to mniejsza :P) Temat można zamknąć, chyba że jakiś miły pan powiedziałby mi co jest przyczyną wywalania gry po wczytaniu. Oczywiście propsiki lecą.
 

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

bgb

bgb

Użytkownicy
posty848
Propsy593
Profesjabrak
  • Użytkownicy
Czyli tak jak myślałem, problem polegał na tym, że przy drugim zapisaniu/wczytaniu gry, mds klasycznej walki bronią jednoręczną nakładał się na mds tarczy. A funkcja odświeżająca nie działała bo technicznie rzecz biorąc ten HUM_Shield_st1.MDS był już obecny na postaci, więc nałożenie go drugi raz nie dawało żadnych efektów. Dlatego trzeba było go pierw usunąć i potem nałożyć jeszcze raz.

Jeszcze co do tych tarcz to pamiętaj tylko, że będziesz musiał te funkcje trochę zmodyfikować jeśli chcesz by npce też je nosili.

A co do tego wywalania gry, to występuję cały czas? I crashuje grę kompletnie czy tylko wywala jakiś błąd, ale nie zamyka gry?


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