Stránka 1 z 1

Objekty v cutscénách

Napsal: 7.3.2006 16:43
od Razfallow
Vytvářím další cutscénu pro Renovation a narazil jsem na problém.
V CutsceneId() je uveden jeden mnou vytvořený Ohnivý obr, který má stejný název cre i Death Variable - RZgiantf.

Takže jsem do skriptu dal CutSceneId("RZgiantf"). Ovšem ve hře se pouze spustí CutsceneMode(), dál se už nic neděje.

Zkusil jsem místo RZgiantf Player1 a vše proběhlo skoro bez problému (je tam akce ActionOverride("Ilmadia",DestroySelf()) - samozřejmě se Ilmadia nezničí).

Zkusil jsem taky psát "RZGIANTF", ale bez výsledku. Jiné cutscény v Renovation takové problémy nedělají.

Nevíte v čem by mohl být problém?

Celý skript vypadá takto

Kód: Vybrat vše

IF
	True()
THEN
	RESPONSE #100
		CutSceneId("RZgiantf")
		MultiPlayerSync()
		ClearAllActions()
		MultiPlayerSync()
		HideGUI()
		SmallWait(8)
      MoveViewObject(Myself,VERY_FAST)
      SmallWait(8)
      FaceObject("Ilmadia")
      SmallWait(5)
      FloatMessage(Myself,@4041)
      Wait(2)
      AttackOneRound("Ilmadia")
      SmallWait(1)
      ActionOverride("Ilmadia",PlayDead(150))
      ActionOverride("Ilmadia",DropInventory())
      ActionOverride("Ilmadia",DestroySelf())
		Wait(1)
		UnhideGUI()
		MultiPlayerSync()
		EndCutSceneMode()
END 

Napsal: 7.3.2006 17:33
od Vlasák
Raz: hmm, možná by to mohlo být tím, že je už nastavená sprite_is_dead pro rzgiantf. Ale to je jen taková střela od boku, kdybych musel na něco přijít ;-)

Osobně preferuju u jednoduchých scén, kde je pouze jedno "vlákno" činností, za cutsceneid dávat player1.

Mě spíš zaráží, jak píšeš, že se neprovede ActionOverride("Ilmadia",DestroySelf()).

Jinak taky viz. akce Kill("Ilmandia")...

Napsal: 7.3.2006 17:43
od Razfallow
sprite_is_dead ještě nastavena není a obřík je živý a zdravý.

Ono i když tam hodím Player1, tak stejně tam musím dát ActionOverride("RZgiantf",FloatMessage(Myself,@4041)), což se samozřejmě neprovede.

Kill můžu zkusit, ale pokud se neprovedou ty předchozí akce, bude to vypadat dost divně.

Edit: tak nefunguje ani Kill.

Napsal: 7.3.2006 17:54
od Vlasák
Raz: a FloatMessage("RZgiantf",xyz) nepojede? Zvláštnosti iwd prostředí moc neznám... Nicméně opět mi přijde divné, proč ani tohle ActionOverride s msg nejede... to jsou imho standardní vzory, které by měly fungovat...

Napsal: 7.3.2006 17:58
od Razfallow
Vlasák píše:Raz: a FloatMessage("RZgiantf",xyz) nepojede?
Ne, taky nejede.
Jiné cutscény jdou naprosto v pohodě a teď mi to dělá tohle.

Napsal: 8.3.2006 8:43
od Vlasák
Razfallow: Co tu cutscénu spouští? Script lokace, potvory, akce dialogu?

Ten obr je dělaný od čistého stolu, nebo upravený stávající?

Zkus udělat něco jiného...

Udělej se testovací potvoru (jakoukoliv; jde jen o prostředníka pro zavedení scriptu) a jí dej script, v němž bude následující logika

Kód: Vybrat vše

IF
Global("TestCS"."GLOBAL",1)
THEN
RESPONSE#100
SetGlobal("TestCS"."GLOBAL",0)
FloatMessage("RZgiantf",xyz)
END


IF
Global("TestCS"."GLOBAL",2)
THEN
RESPONSE#100
SetGlobal("TestCS"."GLOBAL",0)
ActionOverride("RZgiantf",FloatMessage(myself,xyz))
END

IF
Global("TestCS"."GLOBAL",3)
THEN
RESPONSE#100
SetGlobal("TestCS"."GLOBAL",0)
FloatMessage("Ilmadia",xyz)
END

IF
Global("TestCS"."GLOBAL",4)
THEN
RESPONSE#100
SetGlobal("TestCS"."GLOBAL",0)
ActionOverride("Ilmadia",FloatMessage(myself,xyz))
END

IF
Global("TestCS"."GLOBAL",5)
THEN
RESPONSE#100
SetGlobal("TestCS"."GLOBAL",0)
ActionOverride("RZgiantf",DestroySelf())
END

IF
Global("TestCS"."GLOBAL",6)
THEN
RESPONSE#100
SetGlobal("TestCS"."GLOBAL",0)
ActionOverride("Ilmadia",DestroySelf())
END

...
Potvoru pak přivolej do hry v situaci, kdy by se normálně pouštěla cutscéna. Nastavováním hodnot proměnných konzolí pak zkoušej, jak se které akce projeví mimo scénu. Imho by měly chodit všechny. Pokud např. u Ilmadie žádný způsobem nepůjde vyvolat float, tak je chyba někde v ní.

Napsal: 8.3.2006 9:15
od Razfallow
Spouštění jsem zkoušel přes dialog i skript toho obra.
Obr je upravená verze existujícího.

Dík, vyzkouším to.

Napsal: 8.3.2006 18:28
od Razfallow
Vyzkoušeno.
Když jsem to zkoušel v Dornově hlubině v oblasti ohnivých obrů, nefungovalo to.
Upravil jsem tedy skript pro oblast východního přístavu, aby se tam objevila testovací postava, ten Ohnivý obr a Ilmadia.
Tentokrát proběhl test bez problémů, text nad obrem i Ilmadií se zobrazil v obou případech a oba taky okamžitě po nastavení patřičné proměnné zmizeli.

Napsal: 8.3.2006 22:33
od Vlasák
Raz: hmm, dobré pozorování... každopádně to zní docela kuriózně ;-)

Ilmadia je do lokace hlubiny přidaná scriptem, nebo je přímo v are? Pokud to druhé, doporučoval bych projít nastavení Ilmadie v are, protože IWD dost často přepisuje nejrůznější nastavení potvory právě fieldy z are souboru.
Zkus to, co je s Ilmadií v are, projít a porovnat s tou její .cre.
Tím by se možná vyřešila Ilmadia - buď tam najdeš tu botu, co dělá chybu, nebo bych doporučil zkusit jí z are odstranit, přiřadit nastavení, které potenciálně bere z .are přímo postavě a přidat ji tam na její místo scriptem. To by pak mohlo chodit...

Tím se možná vyřeší Imadia a nějaké její interference s .are. Ale počítám, že svého obra tam přidáváš scriptem, tudíž žádné are, a tak je u něj docela divné, proč se to v hlubině nechytá. Nemáš tam několik exemplářů toho obra, je tam pouze ten jeden?

Nakonec se taky podívej do area scriptu - i když ten by žádné problémy dělat neměl, cut-scéna scripty dočasně "umlčuje". Ale co kdyby tam nějaké zvláštnost přece jen byla...

Napsal: 9.3.2006 0:04
od Razfallow
Ilmadia byla původní, mým obrem jsem přepsal jednoho existujícího Actora v are.

U Actorů v are jsou pouze souřadnice, natočení, čas výskytu, dialog a skripty. Nevím, zda by něco z toho mělo nějak vadit.
V Renu je i cutscéna, kde využívám původní, nijak neměněnou postavu, a probíhá to v pořádku.

Vyřešil jsem to tak, jak píšeš, zrušil jsem původní Ilmadii a obra, kterého jsem chtěl změnit a vytvořil jsem oba skriptem. Samozřejmě, že to tentokrát fungovalo bezchybně.

Napsal: 9.3.2006 7:42
od Vlasák
Raz: Obával jsem se, jestli v .are není taky možnost přepsat death variable. Protože mám pocit, že právě v IWD jsem se potkal s něčím typu 'secondary death variable'.
Pak to asi bylo přímo v .cre a nemělo by to roli pro tohle. I když možná ano - jestli jsou ty potvory uložené do are (teď nemyslím ve smyslu přidání do lokace, ale pro účely ukládání hry při změně stavu té potvory), tj. je v .are uložená celá jejich .cre struktura, mohla by se tam ta sekundární DV nějak projevit. Nevím... I když v téhle logice by se tam pak přidala zřejmě i cre struktura té scriptem přivolané, protože když by se nějak měl měnit stav těch potvor, tak se to stane tak, jako tak - i v případě, že je potvora přidaná přes are, tak scriptem...
No, to je jedno... hlavně, že to už jde ;-)