Brak animacji nowego czaru [g2nk] 1994 6

O temacie

Autor igoretto5

Zaczęty 20.02.2015 roku

Wyświetleń 1994

Odpowiedzi 6

igoretto5

igoretto5

Użytkownicy
Loki - the Trickster God
posty30
ProfesjaNierób
  • Użytkownicy
  • Loki - the Trickster God
Cześć!
Stworzyłem sobie nowy czar bojowy oraz pfx.
Wszystko działa jak należy, ale pomyślałem że warto by zrobić osobną animacje rzucania tego czaru.
Animacja zrobiona w blenderze, dodana do humanS.mds, skompilowana.
Problem polega na tym, że nie mam pojęcia jak dodać ją do czaru.
Wydaje mi się, że za animacje odpowiedzialne są te trzy litery w constants.d, tylko że one występują tylko tam. W humanS.mds występują jako przedrostki nazw animacji. W moim przypadku tym prefixem było VIO, ale gdy używam tego jako tych trzech liter to w Gothicu Bezi tylko stoi, a czar wygląda jak "laser".
Co robić? Jak dodać tę animację?
 
死は真理

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Podaj skrypty, nikt Ci nie powie magicznie, co jest źle.
 
: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.

igoretto5

igoretto5

Użytkownicy
Loki - the Trickster God
posty30
ProfesjaNierób
  • Użytkownicy
  • Loki - the Trickster God
It_Runen:
INSTANCE ItRu_Violetblot (C_Item)
{
   name             =   NAME_Rune;
   mainflag          =   ITEM_KAT_RUNE;
   flags             =   0;
   value             =   1000;
   visual            =   "ItRu_Icebolt.3ds";
   material         =   MAT_STONE;
   spell            =    SPL_Violetblot;
   mag_circle          =   3;
   wear            =    WEAR_EFFECT;
   effect            =   "SPELLFX_WEAKGLIMMER_VIOLET";
   description         =   NAME_SPL_Violetblot;
   
   TEXT   [0]         =   NAME_Mag_Circle;         
   COUNT   [0]         =   mag_circle;
   
   TEXT   [1]         =   NAME_Manakosten;         
   COUNT   [1]         =   SPL_COST_Violetblot;
   
   TEXT   [2]         =   NAME_Dam_Magic;           
   COUNT   [2]         =   SPL_DAMAGE_Violetblot;
   
   TEXT   [5]         =   NAME_Value;               
   COUNT   [5]         =   value;
};

Spell_Violetblot:
// ***********
// SPL_Violetblot
// ***********
const int SPL_Cost_Violetblot      = 30;
const int SPL_Damage_Violetblot    = 200;
INSTANCE Spell_Violetblot (C_Spell_Proto)
{
   time_per_mana         = 0;
   damage_per_level      = SPL_Damage_Violetblot;
};
func int Spell_Logic_Violetblot (var int manaInvested)
{
   if (Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll))
   {
      return SPL_SENDCAST;
   }
   else if (self.attribute[ATR_MANA] >= SPL_Cost_Violetblot)
   {   
      return SPL_SENDCAST;
   }
   else //nicht genug Mana
   {
      return SPL_SENDSTOP;
   };
};
func void Spell_Cast_Violetblot()
{
   if (Npc_GetActiveSpellIsScroll(self))
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Scroll;
   }
   else
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Violetblot;
   };
   
   self.aivar[AIV_SelectSpell] += 1;
};

VisualFxInst:
///                                          XXXXXXXXXXXXXXXXXXXXXXXXXXX
///                                          XX  V I O L E T B L O T  XX
///                                          XXXXXXXXXXXXXXXXXXXXXXXXXXX
INSTANCE spellFX_Violetblot   (CFx_Base_Proto)
{
        visname_S             = "MFX_Violetblot_INIT";
        emtrjmode_s          = "FIXED";
      emTrjOriginNode       = "ZS_RIGHTHAND";
        emtrjtargetnode       = "BIP01 FIRE";
        emtrjloopmode_s       = "NONE";
        emtrjeasefunc_s       = "LINEAR";
        emActionCollStat_S      = "COLLIDE CREATE";
        emActionCollDyn_S       = "COLLIDE CREATEONCE";
      emFXCollStat_S            = "spellFX_Violetblot_COLLIDE";
      emFXCollDyn_S           = "spellFX_Violetblot_COLLIDEDYNFX";
      emTrjTargetRange       = 20;
      emTrjTargetElev       = 0;
      emTrjDynUpdateDelay      = 20000;
      //visAlpha            = 0;
      };
      INSTANCE spellFX_Violetblot_KEY_INIT (C_ParticleFXEmitKey)
      {
            visname_S          = "MFX_Violetblot_INIT";
            scaleDuration      = 0.5;
      };
      INSTANCE spellFX_Violetblot_KEY_CAST (C_ParticleFXEmitKey)
      {
            visname_S             = "MFX_Violetblot_CAST";
            emtrjmode_s          = "TARGET";
              emtrjeasevel          = 1400.;
             sfxid               = "mfx_thunderbolt_cast";
             emCheckCollision      = 1;
            //emCreateFXID          = "FX_CAST2";
      };
      INSTANCE spellFX_Violetblot_KEY_COLLIDE (C_ParticleFXEmitKey)
      {
              pfx_flygravity_s      = "0 0.0002 0";
              emtrjeasevel          = 0.000001;
             emCheckCollision      = 0;
};
instance spellFX_Violetblot_COLLIDE   (CFx_Base_Proto)
{
      visname_S       = "MFX_Violetblot_Collide";
      visAlpha      = 1;
      emtrjmode_s    = "FIXED";
      sfxid         = "Torch_Enlight";
};
PfxInstMagic:
///                                          XXXXXXXXXXXXXXXXXXXXXXXXXXX
///                                          XX  V I O L E T B L O T  XX
///                                          XXXXXXXXXXXXXXXXXXXXXXXXXXX
INSTANCE MFX_VIOLETBLOT_INIT (C_PARTICLEFX)
{
     ppsvalue = 50.000000000;
     ppsscalekeys_s = "1";
     ppsislooping = 1;
     ppsissmooth = 1;
     ppsfps = 1.000000000;
     shptype_s = "POINT";
     shpfor_s = "object";
     shpoffsetvec_s = "0 0 0";
     shpdistribtype_s = "RAND";
     shpdim_s = "10";
     shpscalekeys_s = "1";
     shpscaleislooping = 1;
     shpscaleissmooth = 1;
     shpscalefps = 2.000000000;
     dirmode_s = "RAND";
     dirfor_s = "object";
     dirmodetargetfor_s = "OBJECT";
     dirmodetargetpos_s = "0 0 0";
     dirangleheadvar = 180.000000000;
     dirangleelevvar = 180.000000000;
     velavg = 0.003000000;
     velvar = 0.001000000;
     lsppartavg = 200.000000000;
     lsppartvar = 50.000000000;
     flygravity_s = "0 0 0";
     flycolldet_b = 0;
     visname_s = "DestroyUndead1.tga";
     visorientation_s = "VELO";
     vistexisquadpoly = 1;
     vistexanifps = 10.000000000;
     vistexaniislooping = 1;
     vistexcolorstart_s = "37 0 65";
     vistexcolorend_s = "116 0 208";
     vissizestart_s = "10 10";
     vissizeendscale = 5.000000000;
     visalphafunc_s = "ADD";
     visalphastart = 180.000000000;
};
INSTANCE MFX_VIOLETBLOT_CAST (C_PARTICLEFX)
{
     ppsvalue = 30.000000000;
     ppsscalekeys_s = "5";
     ppsislooping = 1;
     ppsissmooth = 1;
     ppsfps = 2.000000000;
     shptype_s = "SPHERE";
     shpfor_s = "object";
     shpoffsetvec_s = "0 0 0";
     shpdistribtype_s = "RAND";
     shpdistribwalkspeed = 0.100000001;
     shpisvolume = 1;
     shpdim_s = "10";
     shpscalekeys_s = "1";
     shpscaleislooping = 1;
     shpscaleissmooth = 1;
     shpscalefps = 2.000000000;
     dirmode_s = "TARGET";
     dirfor_s = "object";
     dirmodetargetfor_s = "OBJECT";
     dirmodetargetpos_s = "0 0 0";
     dirangleheadvar = 180.000000000;
     dirangleelevvar = 180.000000000;
     velavg = 0.008000000;
     velvar = 0.029999999;
     lsppartavg = 500.000000000;
     flygravity_s = "0 0 0";
     flycolldet_b = 0;
     visname_s = "DestroyUndead1.tga";
     visorientation_s = "VELO";
     vistexisquadpoly = 1;
     vistexanifps = 18.000000000;
     vistexaniislooping = 1;
     vistexcolorstart_s = "37 0 65";
     vistexcolorend_s = "116 0 208";
     vissizestart_s = "10 10";
     vissizeendscale = 8.000000000;
     visalphafunc_s = "ADD";
     visalphastart = 255.000000000;
};
INSTANCE MFX_VIOLETBLOT_COLLIDE (C_PARTICLEFX)
{
     ppsvalue = 10.000000000;
     ppsfps = 10.000000000;
     shptype_s = "SPHERE";
     shpfor_s = "object";
     shpoffsetvec_s = "0 0 0";
     shpdistribtype_s = "RAND";
     shpisvolume = 1;
     shpdim_s = "8";
     shpscalekeys_s = "1";
     shpscaleislooping = 1;
     shpscaleissmooth = 1;
     shpscalefps = 2.000000000;
     dirmode_s = "TARGET";
     dirfor_s = "object";
     dirmodetargetfor_s = "OBJECT";
     dirmodetargetpos_s = "0 0 0";
     dirangleheadvar = 180.000000000;
     dirangleelevvar = 180.000000000;
     velavg = 0.079999998;
     velvar = 0.020000000;
     lsppartavg = 500.000000000;
     flygravity_s = "0 0 0";
     flycolldet_b = 0;
     visname_s = "DestroyUndead1.tga";
     visorientation_s = "VELO";
     vistexisquadpoly = 1;
     vistexanifps = 18.000000000;
     vistexaniislooping = 1;
     vistexcolorstart_s = "37 0 65";
     vistexcolorend_s = "116 0 208";
     vissizestart_s = "18 18";
     vissizeendscale = 18.000000000;
     visalphafunc_s = "ADD";
     visalphastart = 255.000000000;
};
Constants:
const int SPL_Violetblot         = 90;

A niżej:

"Violetblot",            // 90   SPL_Violetblot

A niżej:

"VIO",              // 90   SPL_Violetblot
Humans.mds:
// Violetblot
          ani         ("t_MagRun_2_VioShoot"     1 "s_VioShoot"       0.1 0.0 M.    "Hum_VioSpell_A01.asc"     F    1    27)
         ani         ("s_VioShoot"             1 "s_VioShoot"       0.0 0.0 M.    "Hum_VioSpell_A01.asc"     F    28    38)
         ani         ("t_VioShoot_2_Stand"        1 ""             0.0 0.1 M.    "Hum_VioSpell_A01.asc"     F    39    61)
Spell_ProcesMana:
if (activeSpell == SPL_Violetblot         )   {   return   Spell_Logic_Violetblot         (manaInvested);   };
To chyba wszystkie skrypty dotyczące tego czaru...
 
死は真理

Splash

Splash

Moderator
posty4211
Propsy3414
ProfesjaNierób
  • Moderator
Usuń z folderu anims/_compiled pliki humans.mdh i humans.msb, by humans.mds mógł się na nowo skompilować.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

igoretto5

igoretto5

Użytkownicy
Loki - the Trickster God
posty30
ProfesjaNierób
  • Użytkownicy
  • Loki - the Trickster God
Wywala błąd ASC not found: HUM_BODY_NAKED0.ASC

Post połączony: 2015-02-20, 18:04
Udało się!
Jednak jest kolejny problem...
Jeśli używam czaru, a żaden npc nie jest zaznaczony, to czar leci do tyłu (za moje plecy).
Wie ktoś jak to naprawić?
 
死は真理

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Jeśli nie chcesz, żeby czar dało się użyć bez zaznaczonego celu, musisz użyć tego
   targetCollectAlgo      = TARGET_COLLECT_FOCUS;
trzeba po prostu wkleić w skrypt czaru "spell", wtedy nie będzie się dało tego użyć, dopóki nie znajdziesz jakiegoś celu.

EDIT:
Tutaj masz wszystkie "Target-constants" (nie chce mi się tłumaczyć) dla czarów:
Spoiler
////////////////////////////////////////////////////////////////////////////////
//
// Spells: Target-Konstanten
//

const int TARGET_COLLECT_NONE = 0; // target will be set by effect (range, azi, elev)
const int TARGET_COLLECT_CASTER = 1; // target is the caster
const int TARGET_COLLECT_FOCUS = 2; // target is the focus vob
const int TARGET_COLLECT_ALL = 3; // all targets in range will be assembled
const int TARGET_COLLECT_FOCUS_FALLBACK_NONE = 4; // target is the focus vob, if the focus vob is not valid, the trajectory will be set by the effect
const int TARGET_COLLECT_FOCUS_FALLBACK_CASTER = 5; // target is the focus vob, if the focus vob is not valid, the target is the caster
const int TARGET_COLLECT_ALL_FALLBACK_NONE = 6; // all targets in range will be assembled, if there are no valid targets, the trajectory will be set by the effect
const int TARGET_COLLECT_ALL_FALLBACK_CASTER = 7; // all targets in range will be assembled, if there are no valid targets, the target is the caster

const int TARGET_TYPE_ALL = 1;
const int TARGET_TYPE_ITEMS = 2;
const int TARGET_TYPE_NPCS = 4;
const int TARGET_TYPE_ORCS = 8;
const int TARGET_TYPE_HUMANS = 16;
const int TARGET_TYPE_UNDEAD = 32;
 
: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.

igoretto5

igoretto5

Użytkownicy
Loki - the Trickster God
posty30
ProfesjaNierób
  • Użytkownicy
  • Loki - the Trickster God
Dzięki wielkie!
Działa w 100%
 
死は真理


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