Witam, takie pytanie. Ostatnio udało mi się znaleźć na rosyjskim forum skrypty do telekinezy, jednak mam dziwny problem polegający na tym, że po wyciągnięciu runy zamiast efektu czaru w ręce pojawia się runa. Z racji, że w pliku PfxInstMagic.d znajdują się już pfxy odpowiedzialne za Telekinezę, to pomyślałem, że wystarczy dorobić instancję w pliku VisualFxInst.d(ponieważ w normalnym G2 nie występuje). Dlatego przeniosłem ją z G1, jednak o ile sam skrypt czaru i jego użycie działa w miarę dobrze, to po wyciągnięciu czaru do użytku jest pokazana runa(chyba, że przytrzyma się spację i pokaże się animacja czaru). Tutaj wpis do VisualFxInst.d
INSTANCE spellFX_Telekinesis(CFx_Base_Proto)
{
visname_S = "MFX_Telekinesis_INIT";
emtrjmode_s = "FIXED";
emTrjOriginNode = "ZS_RIGHTHAND";
emtrjnumkeys = 2;
emtrjnumkeysvar = 1;
emtrjangleelevvar = 2.;
emtrjangleheadvar = 0.;
emtrjeasefunc_s = "LINEAR";
emtrjloopmode_s = "NONE";
emtrjdynupdatedelay = 0.;
emFXInvestOrigin_S = "spellFX_Telekinesis_ORIGIN";
emTrjTargetRange = 0;
emTrjTargetElev = 0;
};
INSTANCE spellFX_Telekinesis_KEY_INIT (C_ParticleFXEmitKey)
{
visname_s = "MFX_Telekinesis_INIT";
emtrjeasevel = 0.01;
};
INSTANCE spellFX_Telekinesis_KEY_INVEST_1 (C_ParticleFXEmitKey)
{
visname_s = "MFX_Telekinesis_TARGET";
emtrjeasevel = 2000;
sfxid = "MFX_Telekinesis_STARTINVEST";
sfxisambient = 1;
};
INSTANCE spellFX_Telekinesis_KEY_CAST (C_ParticleFXEmitKey)
{
visname_s = "MFX_Telekinesis_TargetEnd";
};
INSTANCE spellFX_Telekinesis_Origin (CFx_Base_Proto)
{
visname_S = "MFX_Telekinesis_BRIDGE";
emtrjmode_s = "TARGET LINE";
emtrjeasevel = 0.001;
emTrjOriginNode = "BIP01 R Hand";
emtrjdynupdatedelay = 0.;
lightPresetname = "AURA";
sfxid = "MFX_Telekinesis_INVEST";
sfxisambient = 1;
};
Oraz Pfx z oryginalnego Gothica 2:
INSTANCE MFX_TELEKINESIS_INIT (C_PARTICLEFX)
{
ppsvalue = 600.000000000;
ppsscalekeys_s = "1";
ppsislooping = 1;
ppsissmooth = 1;
ppsfps = 10.000000000;
shptype_s = "SPHERE";
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 = "TARGET"; //TARGET
dirfor_s = "object";
dirmodetargetfor_s = "OBJECT";
dirmodetargetpos_s = "0 0 0";
dirangleheadvar = 180.000000000;
dirangleelevvar = 180.000000000;
velavg = 0.001000000;
lsppartavg = 150.000000000;
flygravity_s = "0 0 0";
flycolldet_b = 0;
visname_s = "MFX_SLEEP_STAR.TGA";
visorientation_s = "NONE";
vistexisquadpoly = 1;
vistexanifps = 18.000000000;
vistexaniislooping = 1;
vistexcolorstart_s = "100 255 255";
vistexcolorend_s = "255 255 0";
vissizestart_s = "10 10";
vissizeendscale = 0.010000000;
visalphafunc_s = "ADD";
visalphastart = 255.000000000;
visalphaend = 255.000000000;
};
INSTANCE MFX_TELEKINESIS_BRIDGE (C_PARTICLEFX)
{
ppsvalue = 250.000000000;
ppsscalekeys_s = "1 2 3 2";
ppsislooping = 1;
ppsissmooth = 1;
ppsfps = 2.000000000;
shptype_s = "SPHERE";
shpfor_s = "WORLD";
shpoffsetvec_s = "0 0 0";
shpdistribtype_s = "RAND";
shpdim_s = "4";
shpscalekeys_s = "1 3 5 3 1";
shpscaleislooping = 1;
shpscaleissmooth = 1;
shpscalefps = 2.000000000;
dirmode_s = "TARGET";
dirfor_s = "WORLD";
dirmodetargetfor_s = "WORLD";
dirmodetargetpos_s = "0 0 0";
dirangleheadvar = 180.000000000;
dirangleelevvar = 180.000000000;
velavg = 0.800000012;
velvar = 0.200000003;
lsppartavg = 500.000000000;
flygravity_s = "0 0 0";
visname_s = "MFX_SLEEP_STAR.TGA";
visorientation_s = "NONE";
vistexisquadpoly = 1;
vistexanifps = 18.000000000;
vistexaniislooping = 1;
vistexcolorstart_s = "100 255 255";
vistexcolorend_s = "100 255 255";
vissizestart_s = "10 10";
vissizeendscale = 2.000000000;
visalphafunc_s = "ADD";
visalphastart = 255.000000000;
trltexture_s = "WHITECLOUD.TGA";
};
INSTANCE MFX_TELEKINESIS_TARGET (C_PARTICLEFX)
{
ppsvalue = 1500.000000000;
ppsislooping = 1;
shptype_s = "SPHERE";
shpfor_s = "object";
shpdistribtype_s = "RAND";
shpdistribwalkspeed = 0.000300000;
shpdim_s = "40";
dirmode_s = "RAND"; //RAND
dirfor_s = "OBJECT";
dirmodetargetfor_s = "OBJECT";
velavg = 0.001000000;
lsppartavg = 200.000000000;
flygravity_s = "0";
visname_s = "MFX_SLEEP_STAR.TGA";
visorientation_s = "VELO";
vistexisquadpoly = 1;
vistexanifps = 10.000000000;
vistexaniislooping = 1;
vistexcolorstart_s = "255 255 255";
vistexcolorend_s = "100 255 255";
vissizestart_s = "30 30";
vissizeendscale = 1.000000000;
visalphafunc_s = "ADD";
visalphaend = 255.000000000;
};
INSTANCE MFX_TELEKINESIS_TARGETEND (C_PARTICLEFX)
{
ppsvalue = 1500.000000000;
ppsscalekeys_s = "1";
ppsfps = 10.000000000;
shptype_s = "SPHERE";
shpfor_s = "object";
shpdistribtype_s = "RAND";
shpdistribwalkspeed = 0.000300000;
shpdim_s = "40";
dirmode_s = "RAND";
dirfor_s = "OBJECT";
dirmodetargetfor_s = "OBJECT";
velavg = 0.050000001;
lsppartavg = 2000.000000000;
flygravity_s = "0 -0.0008 0";
flycolldet_b = 1;
visname_s = "MFX_SLEEP_STAR.TGA";
visorientation_s = "VELO";
vistexisquadpoly = 1;
vistexanifps = 10.000000000;
vistexaniislooping = 1;
vistexcolorstart_s = "200 255 255";
vistexcolorend_s = "100 255 255";
vissizestart_s = "30 30";
vissizeendscale = 1.000000000;
visalphafunc_s = "ADD";
visalphastart = 255.000000000;
};
Do pliku Constants.d dodałem również:
const string spellFxInstanceNames[MAX_SPELL] =
{
"Telekinesis", // 64 SPL_Reserved_64
Próbowałem również stworzyć osobną instancję(w VisualFx dopisując 1 do Telekinesis), ale wtedy czar zamiast focusować voby(itemy na ziemi) focusuje postacie.
TL:TR - dlaczego zamiast pokazać mi efekt czaru w ręce, pokazuje runę?