Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - Graveir

Strony: 1 [2] 3 4 ... 76
21
Skrypty / [G2] Party member atakujący innego npc?
« dnia: 2019-12-25, 13:23 »
Czy istnieje jakiś sposób, żeby sprawdzić, czy bohater nie należy do instancji Other? Bo chciałbym zrobić tak, żeby postać, która posiada self.aivar[AIV_PARTYMEMBER] = TRUE; atakowała postać, którą my zaatakujemy lub która zaatakowała nas. Głównie chodzi o "globalny" aivar, żeby nie trzeba było rozpisywać tego do wszystkich skryptów. Coś na zasadzie:
Npc_SetTarget (self, other);
B_Attack (self, other, AR_NONE, 0);
Ale tak, żeby "other" nie był traktowany jako "pc_hero", tylko pozostałe postacie. Istnieje taka możliwość? Bo wiem, że w przypadku potworów wystarczyło zmienić nastawienie gildii, a z racji, że tutaj chciałbym u różnych postaci takie coś mieć, to zmiany nastawień w dialogach mijają się z celem.

22
Dodam, że jak użyję "AI_PlayAniBS       (self, "T_STAND_2_FREEZE_VICTIM", BS_UNCONSCIOUS); " to postać unieruchamia się na parę sekund + traci hp czasowo, ale dziwnie to wygląda, żeby npc po oberwaniu czarem ognia zamarzał.

23
Hej. Takie pytanie - gdzie można zmienić/stworzyć skrypt podobny do skryptu bryły lodu/lodowej fali dla konkretnej instancji czaru? Chodzi mi dokładnie o coś takiego, że npc po oberwaniu czarem załącza animację S_FIRE_VICTIM na powiedzmy 10 sekund, w tym czasie traci 10 hp(czyli po 1 hp/s) i atakuje nas? Próbowałem przerobić ZS_MagicFreeze, ale coś nie wyszło.
// *****************
// B_StopMagicFreeze1
// *****************

func void B_RestartFreeze1()
{
if (Npc_GetLastHitSpellID(self) == SPL_IceCube)
|| (Npc_GetLastHitSpellID(self) == SPL_IceWave)
{
Npc_SetStateTime(self,0);
};
};


func void B_StopMagicFreeze1()
{
Npc_PercEnable (self, PERC_ASSESSMAGIC, B_AssessMagic);

Npc_ClearAIQueue(self);
AI_StandUp (self);

if (self.guild < GIL_SEPERATOR_HUM)
{
B_AssessDamage();
}
else
{
Npc_SetTempAttitude (self, ATT_HOSTILE); //falls nicht schon Gilden-Attitüde hostile ist
};

// nach Aufruf dieses Befehles wird die Loop über return LOOP_END beendet
};

// **************
// ZS_MagicFreeze1
// **************

func int ZS_MagicFreeze1()
{
Npc_PercEnable (self, PERC_ASSESSMAGIC, B_RestartFreeze1); // falls ein NSC nochmal von einem Freezespell getroffen wurde, so muss die State Time reseted werden

Npc_StopAni(self, "S_FIRE_VICTIM"); // falls der NSC am Zappeln ist, brich die Ani ab

// Opfer wird in Bodystate Unconscious versetzt
if (!C_BodyStateContains(self, BS_UNCONSCIOUS))
{
AI_PlayAniBS (self, "T_STAND_2_FREEZE_VICTIM", BS_UNCONSCIOUS);
Wld_PlayEffect("VOB_MAGICBURN",  self, self, 0, 0, 0, FALSE );
};
self.aivar[AIV_FreezeStateTime] = 0;
};



func int ZS_MagicFreeze1_Loop ()
{
// EXIT LOOP IF...

if (Npc_GetStateTime(self) >= 10)
{
B_StopMagicFreeze1();
return LOOP_END;
};

// LOOP FUNC
if (Npc_GetStateTime(self) != self.aivar[AIV_FreezeStateTime])
{
self.aivar[AIV_FreezeStateTime] = Npc_GetStateTime(self);

// ------ Damage abziehen, aber NICHT sterben (immer mindeststens 1 LE behalten) ------
if (self.attribute[ATR_HITPOINTS] > (self.attribute[ATR_HITPOINTS] - SPL_Damage_ChargeFireball1))
{
// feuer wesen erhalten doppelten schaden
if (self.guild == GIL_FIREGOLEM)
|| (self.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN)
|| (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_FIRE)
{
B_MagicHurtNpc (other, self, SPL_Damage_ChargeFireball1/2);
return LOOP_CONTINUE;
};

// eis wesen erhalten halben schaden
if (self.guild == GIL_ICEGOLEM)
|| (self.aivar[AIV_MM_REAL_ID]==ID_DRAGON_ICE)
{
B_MagicHurtNpc (other, self, SPL_Damage_ChargeFireball1*2);
return LOOP_CONTINUE;
};

// rest ganz normal
B_MagicHurtNpc (other, self, 5);
};
};

return LOOP_CONTINUE;
};


func void ZS_MagicFreeze1_End()
{

};

Skrypt przerobionego ZS'a. Do tego skrypt czaru:
// ******************
// SPL_ChargeFireball1
// ******************

const int SPL_Cost_ChargeFireball1 = 20; //4*40
const int STEP_ChargeFireball1 = 5;
const int SPL_Damage_ChargeFireball1 = 30;

INSTANCE Spell_ChargeFireball1 (C_Spell_Proto)
{
time_per_mana = 100;
damage_per_level = SPL_Damage_ChargeFireball1;
damageType = DAM_MAGIC;
canTurnDuringInvest     = TRUE;
};

func int Spell_Logic_ChargeFireball1 (var int manaInvested)
{
if (self.attribute[ATR_MANA]<STEP_ChargeFireball1)
{
return SPL_DONTINVEST;
};

if (manaInvested <= STEP_ChargeFireball1*1)
{
self.aivar[AIV_SpellLevel] = 1; //Start mit Level 1
return SPL_STATUS_CANINVEST_NO_MANADEC;
}
else if (manaInvested > (STEP_ChargeFireball1*1))
&& (self.aivar[AIV_SpellLevel] <= 1)
{
self.attribute[ATR_MANA] = (self.attribute[ATR_MANA] - STEP_ChargeFireball1);

if (self.attribute[ATR_MANA]<0)
{
    self.attribute[ATR_MANA]=0;
};

self.aivar[AIV_SpellLevel] = 2;

return SPL_NEXTLEVEL; //Lev2 erreicht
}
else if (manaInvested > (STEP_ChargeFireball1*2))
&& (self.aivar[AIV_SpellLevel] <= 2)
{
self.attribute[ATR_MANA] = (self.attribute[ATR_MANA] - STEP_ChargeFireball1);

if (self.attribute[ATR_MANA]<0)
{
    self.attribute[ATR_MANA]=0;
};
self.aivar[AIV_SpellLevel] = 3;
return SPL_NEXTLEVEL; //Lev3 erreicht

}
else if (manaInvested > (STEP_ChargeFireball1*3))
&& (self.aivar[AIV_SpellLevel] <= 3)
{
self.attribute[ATR_MANA] = (self.attribute[ATR_MANA] - STEP_ChargeFireball1);

if (self.attribute[ATR_MANA]<0)
{
    self.attribute[ATR_MANA]=0;
};
self.aivar[AIV_SpellLevel] = 4;
return SPL_NEXTLEVEL; //Lev4 erreicht
}
else if (manaInvested > (STEP_ChargeFireball1*3))
&& (self.aivar[AIV_SpellLevel] == 4)
{
        return SPL_SENDCAST;
};



return SPL_STATUS_CANINVEST_NO_MANADEC;

};

func void Spell_Cast_ChargeFireball1(var int spellLevel)
{
self.attribute[ATR_MANA] = (self.attribute[ATR_MANA] - STEP_ChargeFireball1);

if (self.attribute[ATR_MANA]<0)
{
self.attribute[ATR_MANA]=0;
};

self.aivar[AIV_SelectSpell] += 1;
};
No i wpis do B_AssessMagic:
if (Npc_GetLastHitSpellID(self) == SPL_ChargeFireball1)
{
Npc_ClearAIQueue (self);
//B_ClearPerceptions (self); //Sonst reagiert der NPC nicht!
AI_StartState(self, ZS_MagicFreeze1, 0, "");
return;
};
Problem jest tego typu, że po drugim trafieniu dopiero odgrywana jest animacja, która trwa w nieskończoność. Do tego na npc nie pojawia się efekt ognia(czyt. nie płonie) i nie zabiera mu tych dodatkowych hp[czyli zamiast dostać powiedzmy 40 dmg otrzymuje 30).

24
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ę?

25
W innych miejscach zawierających końcówkę .3ds - nie ma moich. Na dowód mogę zamiast screena nagrać nawet filmik, w którym pokazuję zawartość wszystkich miejsc z w/w końcówką.

26
Tak wygląda trigger, którego nie widzę(w spacerze), po otworzeniu świata w notepadzie.
childs2400=int:0
[% oCTriggerChangeLevel:zCTrigger:zCVob 24577 3333]
pack=int:0
presetName=string:
bbox3DWS=rawFloat:-21293.9922 -318.297546 29748.5059 -19564.1172 521.514587 30128.4824
trafoOSToWSRot=raw:0000803f0000008000000000000000000000803f0000000000000080000000800000803f
trafoOSToWSPos=vec3:-20396.125 184.566315 29702.9824
vobName=string:OW_OLDMINE_ENTER
visual=string:
showVisual=bool:1
visualCamAlign=enum:0
visualAniMode=enum:0
visualAniModeStrength=float:0
vobFarClipZScale=float:1
cdStatic=bool:0
cdDyn=bool:1
staticVob=bool:0
dynShadow=enum:0
zbias=int:0
isAmbient=bool:0
[visual % 0 0]
[]
[ai % 0 0]
[]
triggerTarget=string:
flags=raw:07
filterFlags=raw:3f
respondToVobName=string:
numCanBeActivated=int:-1
retriggerWaitSec=float:0
damageThreshold=float:0
fireDelaySec=float:0
levelName=string:OLDWORLD\OLDMINE.zen
startVobName=string:OM_122
[]
Czyli powinien się nazywać "OW_OLDMINE_ENTER" na liście w zakładce Surface.3ds, w folderze cCTriggerChangeLevel. Która u mnie wygląda tak:
https://zapodaj.net/ef495535bb112.jpg.html
Jak widać - nie ma takowego.

27
2) Sprawdzałem pod innymi pozycjami(surface.3ds, oldcamp.3ds i tego typu nazwy) - nie ma tam moich.
3) Edytuję dobrą mapę, ponieważ dodawałem je do zena Górniczej Doliny, więc dziwne by było, gdybym się pomylił.
1) Nie są widoczne na liście ani w okolicach, w których są odpalane. Czyli tak jakby nie istniały bezpośrednio, ale "wtopiły" się w zen.

28
Hej, mam taki dziwny problem, a z racji, że nie wiem, czy to spacer czy jakiś dziwny konflikt ze skryptami umieszczam temat po prostu tutaj. A konkretnie chodzi o to, że chciałem trochę przestawić "punkt", po przekroczeniu którego dostajemy się do innego zena, jednak ... spacer go nie widzi. Ani na liście vobów, ani w pobliżu punktu docelowego(zawsze był taki mały, biały kwadracik, a teraz go zupełnie nie widać). Mimo wszystko, przejścia działają, a po otwarciu pliku świata przez notepada takowe występują. Ma ktoś pomysł, co tu się mogło odwalić? Bo bez zaznaczenia ich raczej nie zdołam ich przesunąć/usunąć, a edycja w notepadzie pod względem położenia osi XYZ mogłaby być w moim wypadku dość ryzykowna.

29
Napisałem ci pw. Wszystko zrobiłem ale skoro żydzisz nawet te śmieszne 10 zeta to się męcz wątpie żebyś znalazł frajera który ci to zrobi za darmo.
btw robisz to źle :D tych plików sie nie łączy
Napisać, napisałeś. Ale nie podesłałeś żadnego dowodu, że faktycznie coś zrobiłeś, a w internecie należy się kierować zasadą ograniczonego zaufania. Do tego zapewne korzystałeś z podstawowej wersji pliku świata, a ja mam wprowadzone sporo zmian. Więc musiałbym ci podesłać swoje światy, ale nie wiem które pliki konkretnie.

30
Btw. mógłby ktoś zweryfikować plik 3ds? Bo spacer wywala mi jakieś błędy(związane niby z portalami). Bo próbowałem połączyć 2 pliki .3ds w Blenderze.
https://www89.zippyshare.com/v/ux8dpFyi/file.html

31
Dychę za robotę mogę przelewem wysłać. Bo jestem pewien, że nie zajmie to więcej niż godzinę.

32
Właśnie nie wiem, czy to kwestia zbyt nisko ułożonego modelu czy po prostu różnica w wielkości modelu.

33
Ewentualnie czy ktoś byłby w stanie załatać dziurę, która powstała po połączeniu zenów? Wygląda to mniej-więcej w ten sposób:
https://zapodaj.net/468d652975060.jpg.html
Dość spora(od południowej bramy do prawie północnego wejścia).

34
Cóż, nazwa tematu powinna mówić wszystko. Ale na wszelki wypadek - poszukuję kogoś, kto mógłby dla mnie przerobić zen Górniczej Doliny z G2 NK. A konkretnie - zamiast zamku i jego okolic zniszczonych przez orków wstawić nienaruszony Stary Obóz z G1(wiem, że to będzie ch*jowo wyglądać, ale cóż - taki mój mały wymysł). Nic poza zamkiem nie zmieniać.

35
Dla odmiany spróbowałem przekopiować lodową falę z G1(visual + pfx) i tam też zadaje podwójne obrażenia. A jedyne, co zmieniałem, to tylko instancje po spellFX i MFX.

36
W sumie o percepcji nie znalazłem za bardzo informacyjny(albo ciulowo szukałem), ale stworzyłem dość dziwny skrypt w VisualFxInst.
INSTANCE spellFX_LightUndead(CFx_Base_Proto)
{

      visname_S = "MFX_IceCUBE_INIT";
      emtrjmode_s = "FIXED";
emTrjOriginNode = "ZS_RIGHTHAND";
      emtrjloopmode_s = "NONE";

      emFXInvestOrigin_S = "spellFX_Icespell_Invest";
      };

INSTANCE spellFX_LightUndead_KEY_INIT(C_ParticleFXEmitKey)
{
visname_S = "MFX_MASSDEATH_INIT";
};

INSTANCE spellFX_LightUndead_KEY_CAST(C_ParticleFXEmitKey)
{
emCreateFXID = "spellFX_LightUndead_WAVE";
pfx_ppsIsLoopingChg = 1;
sfxid = "MFX_Icewave_Cast";
sfxisambient = 1;
};

INSTANCE spellFX_LightUndead_WAVE (CFx_Base_Proto)
{
visname_S = "MFX_ICEWAVE_WAVE";
emTrjOriginNode = "ZS_RIGHTHAND";
emActionCollDyn_S = "CREATEONCE";
      //emFXCollDyn_S = "spellFX_IceSpell_COLLIDEDYNFX";
      emFXCollDynPerc_S      = "spellFX_Icespell_SENDPERCEPTION";
      emFXCollDynAlign_S = "COLLISIONNORMAL";
      emCheckCollision = 1;
      LightPresetName = "WHITEBLEND";
};


INSTANCE spellFX_LightUndead_WAVE_KEY_OPEN (C_ParticleFXEmitKey)
{
LightRange = 0.01;
};

INSTANCE spellFX_LightUndead_WAVE_KEY_INIT (C_ParticleFXEmitKey)
{
LightRange = 0.01;
};


INSTANCE spellFX_LightUndead_WAVE_KEY_CAST (C_ParticleFXEmitKey)
{
LightRange = 100;
};



INSTANCE spellFX_LightUndead_SUB(CFx_Base_Proto) // vorrübergehend, bis er hardcodiert nicht mehr gesucht wird
{
      visname_S = "";
      emtrjmode_s = "FIXED";
emTrjOriginNode = "BIP01 HEAD";
};
Po wybraniu czaru, w ręce wygląda jak Śmiertelna Fala, natomiast po użyciu wypuszcza efekt lodowej fali(który nie zamraża, jedynie zadaje 350 obrażeń). Dlatego zastanawiam się, czy problem nie może leżeć w pliku PFXInstMagic(a raczej braku osobnego skryptu w nim zawartego).

37
Przekopiowałem PFX i VisualFX czaru z G1 zmieniając wyłącznie ich instancję i teraz czar uderza 2 razy po 350(jeśli jest się blisko) lub 1 raz(jeśli się jest w odległości ok. 2-3 metrów). No chyba, że miałem co innego jeszcze przekopiować i dlatego tak wychodzi.

38
Hej, takie durne pytanie, z którym męczę się od jakiegoś czasu. Jak ustawić w VisualFXInst efekt wyzwalanego czaru, żeby uderzył w cel tylko raz? Ponieważ chciałem zrobić czar podobny do Śmiertelnej Fali, z mniejszą ilością many wymaganej i innymi obrażeniami, jednak nie mogę visuala ustawić, przez co zamiast zadawać 350 obrażeń(jak w skrypcie czaru) zadaje 1400(4 x 350). Po wielu próbach przerobienia Visuala w/w czaru spróbowałem czegoś takiego:
INSTANCE spellFX_LightUndead(CFx_Base_Proto)
{

      visname_S = "MFX_MassDeath_INIT";
      emtrjmode_s = "FIXED";
emTrjOriginNode = "ZS_RIGHTHAND";
      emtrjloopmode_s = "NONE";

      emFXInvestOrigin_S = "spellFX_Icespell_Invest";
      };

INSTANCE spellFX_LightUndead_KEY_INIT(C_ParticleFXEmitKey)
{
visname_S = "MFX_MassDeath_INIT";
};

INSTANCE spellFX_LightUndead_KEY_CAST(C_ParticleFXEmitKey)
{
emCreateFXID = "spellFX_Icewave_WAVE";
pfx_ppsIsLoopingChg = 1;
sfxid = "MFX_MassDeath_Cast";
sfxisambient = 1;
};

INSTANCE spellFX_LightUndead_WAVE (CFx_Base_Proto)
{
visname_S = "MFX_MassDeath_WAVE";
emTrjOriginNode = "ZS_RIGHTHAND";
emActionCollDyn_S = "CREATEONCE";
      //emFXCollDyn_S = "spellFX_IceSpell_COLLIDEDYNFX";
      emFXCollDynPerc_S      = "spellFX_Icespell_SENDPERCEPTION";
      emFXCollDynAlign_S = "COLLISIONNORMAL";
      emCheckCollision = 1;
      LightPresetName = "WHITEBLEND";
};


INSTANCE spellFX_LightUndead_WAVE_KEY_OPEN (C_ParticleFXEmitKey)
{
LightRange = 0.01;
};

INSTANCE spellFX_LightUndead_WAVE_KEY_INIT (C_ParticleFXEmitKey)
{
LightRange = 0.01;
};


INSTANCE spellFX_LightUndead_WAVE_KEY_CAST (C_ParticleFXEmitKey)
{
LightRange = 100;
};



INSTANCE spellFX_LightUndead_SUB(CFx_Base_Proto) // vorrübergehend, bis er hardcodiert nicht mehr gesucht wird
{
      visname_S = "";
      emtrjmode_s = "FIXED";
emTrjOriginNode = "BIP01 HEAD";
};
I w tym wypadku czar zadaje 350 obrażeń(czyli tak, jak powinien), jednak po wyzwoleniu pojawia się efekt lodowej fali(co jest logiczne). Ale jak ten efekt lodowej fali zamienić na efekt Śmiertelnej Fali, żeby znowu 4 razy nie uderzał w postać? Trochę chaotycznie, ale mam nadzieję, że ktoś zrozumie mój problem.

39
Untrigger nie działa.
Edit 11.10 - teraz mam jakiś dziwny problem. Zrobiłem dźwignię, którą połączyłem z bramą i ona normalnie się otwiera. Jednak nie działa Trigger, który powinien zamykać bramę, jak wejdzie się do pomieszczenia.

40
Dobra, nie wiem co robię źle, ale zostawiłem trigger tak, jak był wcześniej i dodałem nowy TriggerScript do samej dźwigni z nową funkcją:
func void OPENGATE_01()
{
if (BlokadaBramy == TRUE)
{
    Wld_SendTrigger ("EVT_TPL_07_PRIESTGATE_01");
PrintScreen ("Sezamie otwórz się!", -1, -1, FONT_ScreenSmall, 2);
};
};
Dźwignię połączyłem ze skryptem, który ma OpenGate wpisany(nie ten, co zamyka bramę), jednak o ile wyskakuje PrintScreen, to brama za cholerę nie chce się otworzyć.

Strony: 1 [2] 3 4 ... 76
Do góry