1
Skrypty / Styl walki grupowej
« dnia: 2013-10-22, 16:39 »
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
Teraz tak:
do System\VisualFX
Teraz tworzymy taką funkcje. Zaicjonowanie zmiennych w własnym zakresie.
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.
Za pomocą keya O zmieniamy na grupowy. Jak pisalem mam w skryptach bałagan, ale chyba wszystkie potrzebne funkje załączyłem. Owocnego rozkminiania.
Tu macie parę meshes potrzebnych
Kod: [Zaznacz]
http://speedy.sh/zA6mF/triale-do-meshes.rarTeraz tak:
do System\VisualFX
Kod: [Zaznacz]
{
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.
Kod: [Zaznacz]
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.
Kod: [Zaznacz]
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.