Objekty v cutscénách

Vytváření nových modů není tak obtížné, zkuste si to taky.

Moderátor: Razfallow

Odpovědět
Uživatelský avatar
Razfallow
Dabus
Příspěvky: 1373
Registrován: 24.9.2005 22:54
Bydliště: Sigil
Kontaktovat uživatele:

Objekty v cutscénách

Příspěvek 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 

Kód: Vybrat vše

IF
  Detect([SPAMMER])
THEN
    RESPONSE #100
             ReallyForceSpell(WIZARD_POWER_WORD_KILL,LastSeenBy(Myself))
END
[/size]
Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek 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")...
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Uživatelský avatar
Razfallow
Dabus
Příspěvky: 1373
Registrován: 24.9.2005 22:54
Bydliště: Sigil
Kontaktovat uživatele:

Příspěvek 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.

Kód: Vybrat vše

IF
  Detect([SPAMMER])
THEN
    RESPONSE #100
             ReallyForceSpell(WIZARD_POWER_WORD_KILL,LastSeenBy(Myself))
END
[/size]
Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek 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...
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Uživatelský avatar
Razfallow
Dabus
Příspěvky: 1373
Registrován: 24.9.2005 22:54
Bydliště: Sigil
Kontaktovat uživatele:

Příspěvek 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.

Kód: Vybrat vše

IF
  Detect([SPAMMER])
THEN
    RESPONSE #100
             ReallyForceSpell(WIZARD_POWER_WORD_KILL,LastSeenBy(Myself))
END
[/size]
Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek 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í.
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Uživatelský avatar
Razfallow
Dabus
Příspěvky: 1373
Registrován: 24.9.2005 22:54
Bydliště: Sigil
Kontaktovat uživatele:

Příspěvek 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.

Kód: Vybrat vše

IF
  Detect([SPAMMER])
THEN
    RESPONSE #100
             ReallyForceSpell(WIZARD_POWER_WORD_KILL,LastSeenBy(Myself))
END
[/size]
Uživatelský avatar
Razfallow
Dabus
Příspěvky: 1373
Registrován: 24.9.2005 22:54
Bydliště: Sigil
Kontaktovat uživatele:

Příspěvek 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.

Kód: Vybrat vše

IF
  Detect([SPAMMER])
THEN
    RESPONSE #100
             ReallyForceSpell(WIZARD_POWER_WORD_KILL,LastSeenBy(Myself))
END
[/size]
Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek 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...
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Uživatelský avatar
Razfallow
Dabus
Příspěvky: 1373
Registrován: 24.9.2005 22:54
Bydliště: Sigil
Kontaktovat uživatele:

Příspěvek 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ě.

Kód: Vybrat vše

IF
  Detect([SPAMMER])
THEN
    RESPONSE #100
             ReallyForceSpell(WIZARD_POWER_WORD_KILL,LastSeenBy(Myself))
END
[/size]
Uživatelský avatar
Vlasák
Sigilan
Příspěvky: 3017
Registrován: 26.9.2005 7:56
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek 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 ;-)
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
Odpovědět

Zpět na „Infinity Engine“