Styl walki grupowej 3764 0

O temacie

Autor Vizier

Zaczęty 22.10.2013 roku

Wyświetleń 3764

Odpowiedzi 0

Vizier

Vizier

Użytkownicy
posty39
Propsy5
  • Użytkownicy

Vizier

Styl walki grupowej
2013-10-22, 16:39(Ostatnia zmiana: 2013-10-23, 11:15)
Korzystając z przypływu dobrego nastroju i czasu postanowiłem odkopać swoje skrypty z zamierzchłych czasów. Jest w nich straszny bałagan, ale coś dla braci skrypterów poskładałem. Zrobiłem ze dwa lata temu prototyp stylu grupowego do Gothic II. Cała długość klingi zadaje teraz obrażenia, trzeba tylko trochę to zoptymalizować.
Tu macie parę meshes potrzebnych
http://speedy.sh/zA6mF/triale-do-meshes.rar
Teraz tak:
 do System\VisualFX
{
PROTOTYPE ARMOR_PART_PROTO (CFx_Base)
{
     visname_s = "";
     visalpha = 1;
     emtrjmode_s = "FIXED";
     emtrjoriginnode = "";
     emtrjtargetrange = 0;
     emtrjnumkeys = 0;
     emtrjnumkeysvar = 0;
     emtrjangleelevvar = 0;
     emtrjangleheadvar = 0;
     emtrjeasefunc_s = "NONE";
     emtrjeasevel = 1000;
     emtrjdynupdatedelay = 200;
     emFXCreatedOwnTrj = 1;
     emfxlifespan = -1;
     emselfrotvel_s = "0 0 0";
     secsperdamage = -1;
     emTrjDynUpdateTargetOnly= 0;
     emCheckCollision = 0;
     emInvestNextKeyDuration = 0;
     emTrjTargetAzi = 0;
     emTrjTargetElev = 0;
     emTrjKeyDistVar = 0;
     emFlyGravity = 0;
     emSelfRotVel_S = "0 0 0";
     emFXCreate_S = "BugfixFX";
     emtrjloopmode_s = "LINEAR"; 
     emFXTriggerDelay = 0.02;
     visalphablendfunc_s = "NONE";
      emTrjTargetNode = "";
      emActionCollDyn_S = "";
      emActionCollStat_S = "";
      emFXCollStat_S = "";
      emFXCollDyn_S = "";
      emFXCollStatAlign_S = "";
      emFXCollDynAlign_S = "";
      lightPresetName = "";
      sfxID = "";
      sendAssessMagic = 0;
      secsPerDamage = -1;
      visalpha = 1;
      emfxlifespan = 1;
     //emadjustshptoorigin = 1;

};

///    XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
///    XX  weapon  XX
/// 
INSTANCE av_weapon30_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon30_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
INSTANCE av_weapon40_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon40_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
INSTANCE av_weapon50_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon50_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
INSTANCE av_weapon60_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon60_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
INSTANCE av_weapon70_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon70_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
INSTANCE av_weapon80_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon80_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
INSTANCE av_weapon90_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon90_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
INSTANCE av_weapon100_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon100_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
INSTANCE av_weapon110_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon110_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
INSTANCE av_weapon120_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon120_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
INSTANCE av_weapon130_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon130_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
INSTANCE av_weapon140_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon140_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
INSTANCE av_weapon150_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon150_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
INSTANCE av_weapon160_vfx (ARMOR_PART_PROTO)   
{
        emfxlifespan = 1;       
        emTrjOriginNode = "ZS_RIGHTHAND";
        visAlpha  = 0;
        visName_S = "av_weapon160_pfx";
        visalphablendfunc_s = "NONE";
        emtrjmode_s = "FIXED";     
        emtrjloopmode_s = "linear"; 
        emtrjeasefunc_s = "NONE";
        emTrjEaseVel                    = 1000;
        emactioncolldyn_s = "CREATEONCE";
        emActionCollStat_s = "CREATEONCE";
        emcheckcollision = 1;
        sendAssessMagic                 = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
        emFXCreatedOwnTrj       = 1;   
        emFXTriggerDelay        = 0;
        emTrjDynUpdateDelay             = 200;

};
};

Teraz tworzymy taką funkcje. Zaicjonowanie zmiennych w własnym zakresie.
Func void Operators()
{
NONAME = Hlp_GetNpc (PC_hero);
targetnpc = Hlp_GetNpc(nomoretargetnpc);

ReadyHeroArmor = Npc_GetEquippedArmor(NONAME);
ReadyHeroMeleeWeap = Npc_GetReadiedWeapon(NONAME);heroweaprange = ReadyheroMeleeWeap.range;
EquipHeroMeleeWeap = Npc_GetEquippedMeleeWeapon(NONAME);
ReadyotherMeleeWeap = Npc_GetReadiedWeapon(other);otherweaprange = ReadyotherMeleeWeap.range;

ReadyotherWeap = Npc_GetReadiedWeapon(other);


////////////////////////////
cmouseleft  = MEM_KeyState(MOUSE_BUTTONLEFT);
cmouseright  = MEM_KeyState(MOUSE_BUTTONRIGHT);
ckeyUPar  = MEM_KeyState(KEY_UPARROW);
ckeyRightar  = MEM_KeyState(KEY_RIGHTARROW);
ckeyDownar  = MEM_KeyState(KEY_DOWNARROW);
ckeyLeftar  = MEM_KeyState(KEY_LEFTARROW);
ckeySPACE = MEM_KeyState(KEY_SPACE);
ckeyA  = MEM_KeyState(KEY_A);
ckeyB  = MEM_KeyState(KEY_B);
ckeyC  = MEM_KeyState(KEY_C);
ckeyD  = MEM_KeyState(KEY_D);
ckeyW  = MEM_KeyState(KEY_W);
ckeyP  = MEM_KeyState(KEY_P);
ckeyT  = MEM_KeyState(KEY_T);
ckeyG  = MEM_KeyState(KEY_G);
ckeyO  = MEM_KeyState(KEY_O);
ckeyZ  = MEM_KeyState(KEY_Z);
ckeyV  = MEM_KeyState(KEY_V);
Nkey0  = MEM_KeyState(KEY_NUMPAD0);
Nkey1  = MEM_KeyState(KEY_NUMPAD1);
Nkey2  = MEM_KeyState(KEY_NUMPAD2);
Nkey3  = MEM_KeyState(KEY_NUMPAD3);
Nkey4  = MEM_KeyState(KEY_NUMPAD4);
Nkey5  = MEM_KeyState(KEY_NUMPAD5);
Nkey6  = MEM_KeyState(KEY_NUMPAD6);
Nkey7  = MEM_KeyState(KEY_NUMPAD7);
Nkey8  = MEM_KeyState(KEY_NUMPAD8);
Nkey9  = MEM_KeyState(KEY_NUMPAD9);
Nkeyrowne  = MEM_KeyState(KEY_NUMPADEQUALS);
Nkeyminus  = MEM_KeyState(KEY_MINUS);
Nkeyplus  = MEM_KeyState(KEY_ADD);
NkeyCOMMA  = MEM_KeyState(KEY_LBRACKET);
NkeySTOP  = MEM_KeyState(KEY_RBRACKET);
};

Trzeba użyć pokladkową funkcje. Kto juz  ma ten nie się cieszy, reszta niech poszuka instrukcji.Było gdzieś na stronie. Poklatkowiec wymagał chyba umieszczenia triggera w zenie. Pewnie są inne metody by to wywołać, ja więcej o tym nie myślałem. 

func void PERFRAMEAD()
{   
Wld_SendTrigger ("PERFRAMEAD");
if(PerFrameADCallTrigger_Init)
{
perfra = MEM_SearchVobByName ("PERFRAMEAD");
MEM_AssignInst (triggerAD, perfra);
PerFrameADCallTrigger_Init=FALSE;
};
triggerAD._zCVob_nextOnTimer = MEM_ReadInt(MEMINT_zTimer_Address+8);

Operators();

//-------------------------------------------LICZNIK ATAKU-(DO POPRAWY)--
if (otherhit == 0) && (otherhitsecury == 1)
{

attackhero = 0;
otherhit = 0;
otherhitsecury = otherhitsecury - 1;
};
if (C_BodyStateContains (hero, BS_HIT) ) && (otherhitsecury == 0)
{

otherhit = 0;
otherhit = otherhit + 21;

memorydamageTotal = ReadyHeroMeleeWeap.damageTotal;
otherhitsecury = otherhitsecury + 1;
};
if (otherhit >= 1)
{
otherhit = otherhit - 1;
};
if otherhit == 10
{
staminareduction(2);
};
if otherhit > 5 && otherhit < 15
{
attackhero = 1;
};
if otherhit == 15
{
attackhero = 2;
};
if otherhit == 16
{
attackhero = 0;
};

//---------------------------------------------LICZNIK PARADY-(DO POPRAWY)--
if (heroparade < 1) && (heroparadesecury == 2)
{
heroparade = 0;
heroparadesecury = 1;
};
if (C_BodyStateContains (hero, BS_Parade)) && (heroparadesecury == 1)
{
heroparadesecury = 2;
heroparade = 0;
heroparade = heroparade + 30;

};
if (heroparade >= 1)
{
heroparade = heroparade - 1;
};


//--------------------------------------------OBRAŻENIA Z TRIALA---------------------------------
if (ckeyO == KEY_PRESSED)
{
if FIGHTSTYLE < 1
{
Print ("Styl grupowy");
FIGHTSTYLE = FIGHTSTYLE + 1;
}
else if FIGHTSTYLE >= 1
{
Print ("Styl pojedynkowy");
FIGHTSTYLE = FIGHTSTYLE - 1;
};
};



if FIGHTSTYLE >= 1
{
if (otherhitsecury == 1)
{
ReadyHeroMeleeWeap.damageTotal = 0;
};
if attackhero == 1
{
if (ReadyHeroMeleeWeap.range < 40)
{
Wld_PlayEffect("av_weapon30_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
}
else if (ReadyHeroMeleeWeap.range >= 40) && (ReadyHeroMeleeWeap.range < 50)
{
Wld_PlayEffect("av_weapon40_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
}
else if (ReadyHeroMeleeWeap.range >= 50) && (ReadyHeroMeleeWeap.range < 60)
{
Wld_PlayEffect("av_weapon50_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
}
else if (ReadyHeroMeleeWeap.range >= 60) && (ReadyHeroMeleeWeap.range < 70)
{
Wld_PlayEffect("av_weapon60_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
}
else if (ReadyHeroMeleeWeap.range >= 70) && (ReadyHeroMeleeWeap.range < 80)
{
Wld_PlayEffect("av_weapon70_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
}
else if (ReadyHeroMeleeWeap.range >= 80) && (ReadyHeroMeleeWeap.range < 90)
{
Wld_PlayEffect("av_weapon80_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
}
else if (ReadyHeroMeleeWeap.range >= 90) && (ReadyHeroMeleeWeap.range < 100)
{
Wld_PlayEffect("av_weapon90_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
}
else if (ReadyHeroMeleeWeap.range >= 100) && (ReadyHeroMeleeWeap.range < 110)
{
Wld_PlayEffect("av_weapon100_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
}
else if (ReadyHeroMeleeWeap.range >= 110) && (ReadyHeroMeleeWeap.range < 120)
{
Wld_PlayEffect("av_weapon110_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
}
else if (ReadyHeroMeleeWeap.range >= 120) && (ReadyHeroMeleeWeap.range < 130)
{
Wld_PlayEffect("av_weapon120_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
}
else if (ReadyHeroMeleeWeap.range >= 130) && (ReadyHeroMeleeWeap.range < 140)
{
Wld_PlayEffect("av_weapon130_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
}
else if (ReadyHeroMeleeWeap.range >= 140) && (ReadyHeroMeleeWeap.range < 150)
{
Wld_PlayEffect("av_weapon140_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
}
else if (ReadyHeroMeleeWeap.range >= 150) && (ReadyHeroMeleeWeap.range < 160)
{
Wld_PlayEffect("av_weapon150_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
}
else if (ReadyHeroMeleeWeap.range >= 160)
{
Wld_PlayEffect("av_weapon160_vfx",hero,hero,0,obrazeniaslimweapon,DAM_blunt,false);
};

};

};

if (heroparadesecury == 1) && (hitinframe == 1)
{
Npc_PercEnable(hero,PERC_ASSESSDAMAGE,B_ASSESSDAMAGE);
};

}

Za pomocą keya O zmieniamy na grupowy. Jak pisalem mam w skryptach bałagan, ale chyba wszystkie potrzebne funkje załączyłem. Owocnego rozkminiania.
 


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