Problem z animacją 5193 19

O temacie

Autor Siemekk

Zaczęty 4.12.2015 roku

Wyświetleń 5193

Odpowiedzi 19

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Witam. Temat umieściłem w tym dziale ponieważ najlepiej tu pasuje. Otóż użyłem animacji z g1, dodałem ją do g2 i zrobiłem skrypt który ma odpalać animację po naciśnięciu klawisza. Problem w tym że efekt jest ale animacja się nie wyzwala... załączam fragment skryptu aby ktoś mógłby mnie naprowadzić gdzie lub co źle zrobiłem.
Spoiler
{
hero.attribute[ATR_MANA] = ((hero.attribute[ATR_MANA])-50);

Wld_PlayEffect("spellFX_INCOVATION_BLUE", hero, hero, 1, 1, 1, FALSE );
Wld_PlayEffect("SFX_Circle",  hero, hero, 0, 0, 0, FALSE );

AI_PlayAni (self, "t_EXCALIBUR_S0_2_S1" );
};
I takie drugie pytanie jak mógłbym zrobić aby 2 efekt wyzwolił się na namierzonym NPC.
Czy to jest możliwe z tym skryptem Splasha:
Spoiler
var oCNpc her;
var oCNpc oth; //lub var c_npc oth;
if (Hlp_Is_oCNpc (her.focus_vob))
{
oth = _^ (her.focus_vob);
};
 

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.
Wywal code. Zostaw w samym skrypcie, bo jebie się to na niektórych przeglądarkach. Wejdź do gry i wpisz Play Ani nazwaAnimacji i sprawdź, co pisze.

Tak, jest to możliwe.
 
: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
Po wpisaniu w konsoli play ani nazwa_animacj napisało "Nazwa animacji" Started i animacja się wykonała.
Co do tego pobierania instancji mógłbyś mi to jakoś dokładniej opisać jak to zrobić?
 

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.
Możliwe, że stało się tak samo jak z Dialoggestures, a możliwe, że to przez pewien bug, który uniemożliwia wykonywanie animacji poprzez FrameFunctions / Tick Tocki. Spróbuj jeszcze ustawić FF na 0 (co klatkę), jeśli nie podziała, musisz zrobić to podczas kliknięcia, lub jeśli to jest efekt czaru, do jego odpowiedniego pliku (bodajże C_CanCollideWithSpell).

A co chcesz dokładnie zrobić?
 
: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
Chciałbym zrobić coś takiego ze przy naciśnięciu klawisza miecz jest wbijany w ziemie a we wroga spada jakieś zaklęcie zależne od tego jaką rune mamy w mieczu.(z warunkami sobie poradzę tylko ta animacja i pobieranie instancji).
 

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.
Daj FrameFunction z tą funkcją co klatkę. Jeśli chcesz użyć tego na wszystkich, polecam SetNpcsToState (nie pamiętam dokładnie, jak ten skrypt wygląda, poszukaj tutaj na forum lub w Externals.d), jeśli zaś ma to być tylko na jednego:

var oCNpc her;
var oCNpc oth;   oth =  _^ (her.focus_vob);

oth.attribute[ATR_HITPOINTS] -= 12; czy co tam potrzebujesz
 
: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
Dalej nie działa :/ Tak wygląda cały skrypt:func void Excaliburuse ()
{
    if (MEM_Keystate(KEY_NUMPAD2) == KEY_PRESSED)
   && (hero.attribute[ATR_MANA] >= 50)
    {
   hero.attribute[ATR_MANA] = ((hero.attribute[ATR_MANA])-50);
   
   Wld_PlayEffect("spellFX_INCOVATION_BLUE", hero, hero, 1, 1, 1, FALSE );
   Wld_PlayEffect("SFX_Circle",  hero, hero, 0, 0, 0, FALSE );
   
   AI_PlayAni      (self, "t_EXCALIBUR_S0_2_S1" );
   };
};
Nie mam pojęcia co może być nie tak. Dodam iż bohater ma w grze 2k many oraz że efekt fali się pojawia tylko animacja nie działa.
 

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.
Ustawiłeś funkcję, żeby wywoływała się co klatkę? Jeśli nie, nie będzie działać.
 
: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
W startup dałem tak.
if (!FF_Active (Excaliburuse))
{
FF_ApplyExt (Excaliburuse, 0, -1);
};
A wyżej jest FF_Apply (Excaliburuse);
Tak z innej beczki kolejność prassowania ma znaczenie? bo nie wywala błędów a gra normalnie działa mimo iż moje foldery są prasowane na końcu.
 

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.

Bogdan Zwei

Problem z animacją
#9 2015-12-04, 21:43(Ostatnia zmiana: 2015-12-04, 21:48)
Po co dwa razy jedną funkcję? Nie dziwię się, że animacja jest przerywana...


Ja używam funkcji, która jest wywoływana co klatkę, wszystko mi działa, tylko że ja mam to podzielone na dwa.

Spoiler
Funkcja, która jest zadeklarowana w osobnym pliku.

func void B_Transfer  ()
{
   var oCNpc her;   her = Hlp_GetNpc(hero);
   var c_npc oth;   oth = MEM_PtrToInst(her.focus_vob);
   if ((Npc_IsInState(oth, ZS_Unconscious) || Npc_IsInState(oth, ZS_Dead))
   || (oth.attribute[ATR_HITPOINTS] <= 0)) //DEAD DEBUG!!!
   && (Npc_GetDistToNpc (hero, oth) <= 500) && (Npc_IsInFightMode (hero, FMODE_NONE))
   && !(oC_BodyStateContains(hero, BS_INVENTORY))
   {
      if (Hlp_Is_oCNpc(her.focus_vob))
      {
         AI_PlayAni   (hero,"T_DONTKNOW");
         B_Remove(oth, hero);
      };
   };
};

a w funkcji wywoływanej co klatka:

   if (MEM_KeyState(KEY_Q)==KEY_PRESSED)
   {
      B_Transfer();
   };

Możesz spróbować tym sposobem, jeśli dalej nie działa. Wywołuj tę funkcję JEDNYM FF, nie dziesięcioma.
 
: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 :/ wywaliłem  ff_apply(excalibursue); ale dalej nie działa. Nie mam pojęcia o co może chodzić.
 

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.
Niestety :/ wywaliłem  ff_apply(excalibursue); ale dalej nie działa. Nie mam pojęcia o co może chodzić.

 AI_PlayAni      (self, "t_EXCALIBUR_S0_2_S1" );  :facepalm:
 
: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 :/ wywaliłem  ff_apply(excalibursue); ale dalej nie działa. Nie mam pojęcia o co może chodzić.

 AI_PlayAni      (self, "t_EXCALIBUR_S0_2_S1" );  :facepalm:
:facepalm: zapomniałem zmienić spowrotem na hero  :F ale nawet po zmianie na hero nic nie działa... Może funkcję frame spieprzyłem?Mógłbyś zobaczyć czy u ciebie działa ?
 

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.
Jeśli nie dalej nie działa, to są jeszcze dwa sposoby, żeby naprawić:
1) Sprawdź, czy działa skrypt z inną animacją (np. T_PLUNDER), jeśli tak, dodaj animację jeszcze raz.
2) Wywal animację, bo nie podziała. AI_PlayAni jest popsute, zauważyłem to sam u siebie.
 
: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
Wychodzi na to że masz rację  AI_PlayAni jest zepsute :/ A ktoś może wie czy istnieje jakiś inny sposób na wywołanie animacji po kliknięciu, ponieważ bez animacji to sztywno wygląda.
 

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.
Wychodzi na to że masz rację  AI_PlayAni jest zepsute :/ A ktoś może wie czy istnieje jakiś inny sposób na wywołanie animacji po kliknięciu, ponieważ bez animacji to sztywno wygląda.

W sumie, AI_PlayAni samo z siebie nie jest zepsute, tylko niepoprawnie działa w funkcjach rutynowych / iteracyjnych.
 
: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.

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
:F Dwaj experci się znaleźli. 
AI_PlayAni działa. Ale to jest AI a wiec jako ze to jest queue (kolejka), trzeba użyć coś jak B_FullStop(npc);  i AI_Clearqueue();  (by przerwać jakakolwiek akcje npc )- nie sprawdzałem poprawnej nazwy, znajdź se w skryptach.
do startupu.

Nie parsowałem ale powinno działać

FF_ApplyOnceExt(Excaliburuse_check, 0, -1);
skrypt
var int Excaliburuse_cooldown; // zmienna pomocna


func void Excaliburuse_reset () // reset
{
Excaliburuse_cooldown = 0;
}

func void Excaliburuse_check () // naciskanie klawisza powodowalo by bardzo szybkie rzucanie efektow i ciagly reset npc, animacji.... = zly efekt
{
if (MEM_Keystate(KEY_NUMPAD2) == KEY_PRESSED) && (hero.attribute[ATR_MANA] >= 50) && (Excaliburuse_cooldown == 0)
{
Excaliburuse (); // leci efekt i animacja
Excaliburuse_cooldown = 1; // blok ponownego wywolania do ustawionego czasu
FF_ApplyOnceExt(Excaliburuse_reset, 2000, 1); // reset po dwoch sekundach (ustaw wedle dlugosci animacji)
}
}

func void Excaliburuse ()
{
hero.attribute[ATR_MANA] = ((hero.attribute[ATR_MANA])-50);
// efekty
Wld_PlayEffect("spellFX_INCOVATION_BLUE", hero, hero, 1, 1, 1, FALSE );
Wld_PlayEffect("SFX_Circle",  hero, hero, 0, 0, 0, FALSE );
// reset npc
B_FullStop(hero);
// animacja, troche to trwa zanim sie rozpocznie
AI_PlayAni      (hero, "t_EXCALIBUR_S0_2_S1" );
};
 


Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Mnie samo AI_PlayAni nie działa nawet jak jest ClearAIQueue, czy tam coś podobnego. W zwyczajnych skryptach (tzn. poza FF) działa mi wszystko idealnie, nie potrzebuję żadnych clearów etc.
 
: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.

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
Normalne skrypty to głownie rutyny, podczas biegu rutyny, AIQueue jest prawie puste bo to wlanie rutyna wybiera co ma npc robić i wola dalsze funkcje AI. Ja zawsze jak zmuszam bohatera/ inne npc do zrobienia natychmiastowej animacji  to używam te funkcje i działa mi bardzo elegancko. Ten reset co zrobiłem to tylko prewencja przed "bugiem".

Aha i jeszcze jedna drobnostka, nazwa animacji musi być dużymi literami  :F
Cytuj
AI_PlayAni      (hero, "t_EXCALIBUR_S0_2_S1" );

jak to naprawisz to powinno działać.
 


Siemekk

Siemekk

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

Siemekk
Złote Wrota

Problem z animacją
#19 2015-12-05, 12:28(Ostatnia zmiana: 2015-12-05, 22:28)
:ok: @Mark dzięki w końcu działa. A co do tego to aby ustawić efekt w danej klatce to do mds mam dopisać?(chodzi mi o przeciwnika aby w danej klatce efekt na nim był) czy za pomocą jakiejś funkcji.
@edit po ponownym uruchomieniu gry animacja znowu się nie odtwarza.
@edit2: :offtopic: czy to naturalnie że wywala mi takie errory jak "unknow identificaier B_FullStop(hero); " czy to tego trzeba zmiennych?Czy może coś zepsułem przy inicjacji lego.
 

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


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