Wintermute Engine Forum

Czech forum => Technické fórum => Topic started by: pyromaniakOV on May 30, 2003, 12:36:14 PM

Title: Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: pyromaniakOV on May 30, 2003, 12:36:14 PM
Jak udelam konbinaci  objektu s inventare s jinym objektem v inventari nebo na scene
Title: Re:Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: jnsfbi on May 30, 2003, 01:06:29 PM
To by mne take zajimalo:) Ale ja ti neporadim, ja jsem rada kdyz se mi v inventari objevi predmet (jen 2 dny zkousim WME) Na cem delas, prozdradis nam? (hlavne me, ja jsem zvedava zenska:))
Title: Re:Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: ReWegar on May 30, 2003, 05:23:10 PM
Koukam ze se nam ceske forum rozjizdi :) no Mnemonicu bude muset radit i sem :DD
Title: Re:Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: Mnemonic on May 31, 2003, 02:38:02 PM
Jak udelam konbinaci  objektu s inventare s jinym objektem v inventari nebo na scene

Ja zacnu trochu ze siroka: kazdy objekt ve hre (entita ve scene, postavy, predmety v inventari...) muze mit k sobe pripojen skript (nebo vice skriptu) a tenhle skript udava, jak se ten objekt chova (jako treba co se stane, kdyz hrac klikne na postave mysi atd.). Vlastni skript je jednoduchy program, ktery prevazne jen reaguje na urcite udalosti. Kuprikladu, kdyz hrac na necem klikne mysi, dany objekt obdrzi udalost "LeftClick". Potom staci do skriptu napsat obsluhu udalosti:
Code: [Select]
on "LeftClick"
{
  // co se ma stat na kliknuti mysi
}

No a abych se vratil k puvodnimu dotazu. Pokud vytvoris novou hru pomoci sablony v ProjectManu, hra uz bude obsahovat nektere predpripravene skripty. Ty zajistuji, ze kdyz hrac vybere z inventare predmet a pouzije ho na nejaky jiny objekt, v danem objektu je vyvolana udalost se stejnym nazvem, jako je nazev pouziteho predmetu. Je to videt i ve WME demu. Kdyz hrac pouzije knizku na stul, knizka je polozena zpatky. V praxi to znamena, ze stolu je prizazen skript a ve skriptu je napsana obsluha na udalost "book".

Code: [Select]
on "book"
{
  // co se ma stat, kdyz hrac pouzije na tento objekt knihu
}
Title: Re:Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: jnsfbi on June 01, 2003, 06:41:15 PM
Mam to!!! Nejsem si jista, jestli mam korektne napsany ten skript (zrejme ne:)) ale ve hre mi to funguje:) A muzes mi prosim vysvetlit, co znamena tohle (vzato z dema, z book.skript) :
var EntBook = Scene.GetNode("book");
EntBook.Active = false;

dekuji:)
Title: Re:Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: Mnemonic on June 02, 2003, 01:41:59 PM
Quote
Mam to!!! Nejsem si jista, jestli mam korektne napsany ten skript (zrejme ne:)) ale ve hre mi to funguje:) A muzes mi prosim vysvetlit, co znamena tohle (vzato z dema, z book.skript) :

Zacnu zase ze siroka :)
Scena se vetsinou sklada z vice objektu, ve WME terminologii se jim rika "entity". Kuprikladu v demu je pozadi jedna entita, stul je jina entita atd. To je v pohode, ve SceneEditu se to tam hezky nahazi a je to. Problem nastava, pokud chces s entitami manipulovat za behu pomoci skriptu, jako prave v tomhle pripade. Chceme dosahnout toho, aby kdyz hrac vezme knizku, tak aby ta knizka zmizela ze stolu. Ta knizka je ve scene taky jako entita a ma nazev "book".
Takze, pomoci toho prvniho radku

Code: [Select]
var EntBook = Scene.GetNode("book");
rikam scene, aby mi vratila objekt s nazvem "book" a ulozila mi ho do promenne EntBook.

No a ted mam v te promenne patricnou entitu a uz si s ni muzu manipulovat jak chci. V tomhle pripade ji chci jen schovat, proto nastavim jeji vlastnost Active na false (cili, ucinim ji neaktivni).

Code: [Select]
EntBook.Active = false;

A je to!
Title: Re:Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: jnsfbi on June 02, 2003, 03:15:20 PM
Tak jsem to opravila, ale presto se prosim moc podivej, co jeste kde mam spatne, protoze programovani je pro mne novinka, nikdo mi neradi, cili nepredpokladam, ze bych to mela nejak extra spravne :
cast skriptu v items - zkumavka.skript :
on "flaska"
{
  Game.Interactive = false;
  actor.Talk("Zkus
Title: Re:Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: Mnemonic on June 02, 2003, 03:29:06 PM
Chapu to spravne, ze mas v inventari dva predmety: flasku a zkumavku? Kdyz je zkombinujes, vznikne uplne jiny predmet. To je OK. Ale nechapu to s tou scenou. Ty mas ve scene nejaky predmet, ktery se ma objevit, pokud zkombinujes ty dva predmety? Promin, malo informaci ;)
Title: Re:Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: jnsfbi on June 02, 2003, 06:10:35 PM
V inventari mam zkumavku a flasku - treti predmet se mi objevi v inventari po zkombinovani flasky a zkumavky, mam ho jen zkusebne pod nazvem "kombinace" /kombinace.tga je nejaky kulaty predmet:))
 (ono nevim co by melo vzniknout zkrizenim flasky a zkumavky. Mam to vsechno jen zkusebni, abych se to naucila a pochopila to.

aha...takze tohle :
var EntKombinace = Scene.GetNode("kombinace");
EntKombinace.Active = true

je tam asi zbytecne, ze? :)
Title: Re:Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: Mnemonic on June 02, 2003, 06:20:15 PM
Asi jo :) Jak rikam, tim se modifikuje scena, s inventarem to nema nic do cineni.
Title: Re:Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: jnsfbi on June 02, 2003, 06:23:57 PM
Asi jo :) Jak rikam, tim se modifikuje scena, s inventarem to nema nic do cineni.

Jo, uz to chapu, funguje to, dekuji za pomoc:)
Title: Re: Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: Alice on May 23, 2005, 01:52:45 PM
Ja taky zkousim kombinovat predmety v inventari, ale kdyz je pouziju na sebe hned ve scene, kde byly sebrany, vrati se zpatky (DropItem).
Jeste mam dalsi problem: kdyz mam treba ve scene kuchyn objekt hrnec, ktry se da vzit a pak zkombinovat necim jinym, musi byt skript "hrnec.script" ve slozce sceny nebo items?
Kdyz definuju oba skripty, hlasi to chybu. Kdyz definuju jen jeden, nejde mi pak na predmet v inventari pouzit funkce "Take", protoze si mysli, ze k nemu musi actor dojit. A kdyz ten radek "dojdi k predmetu" vyhodim, zase to nefunguje ve scene.

Diky za rady, pokud to neni moc zmatene.

Alice
Title: Re: Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: Mnemonic on May 23, 2005, 02:13:20 PM
Quote
Ja taky zkousim kombinovat predmety v inventari, ale kdyz je pouziju na sebe hned ve scene, kde byly sebrany, vrati se zpatky (DropItem).
Snadna pomoc, misto DropItem pouzij DeleteItem. Tim se predmet trvale odstrani ze hry. Jenom pozor na to, at prikaz DeleteItem je az posledni akce v tom skriptu, jelikoz odstranenim itemu se vlastne ukonci i ten jeho probihajici skript.


Quote
Jeste mam dalsi problem: kdyz mam treba ve scene kuchyn objekt hrnec, ktry se da vzit a pak zkombinovat necim jinym, musi byt skript "hrnec.script" ve slozce sceny nebo items?
Kdyz definuju oba skripty, hlasi to chybu. Kdyz definuju jen jeden, nejde mi pak na predmet v inventari pouzit funkce "Take", protoze si mysli, ze k nemu musi actor dojit. A kdyz ten radek "dojdi k predmetu" vyhodim, zase to nefunguje ve scene.
Je treba mit dva skripty, jeden pro hrnec ve scene a jeden pro hrnec v inventari. Pro hru jsou to vlastne dva nezavisle objekty.
Title: Re: Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: Alice on May 25, 2005, 08:55:09 AM
Dekuji, uz to funguje. :)
Title: Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: killer on February 05, 2006, 04:25:11 PM
Mam podobný problém...Na jedné scéně vezmu "Benzin" a "prázdný motor" a když to v menu skombinuju tak to udělá "plný motor".To mě normálně funguje ale když odejdu z teto sceny a vrátim se zpět tak se mi "prazdny motor" ukáže zpátky.Jak mu mam zamezit aby se objevoval??
Title: Re: Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: PoselSmrti on February 05, 2006, 07:32:21 PM
Mam podobný problém...Na jedné scéně vezmu "Benzin" a "prázdný motor" a když to v menu skombinuju tak to udělá "plný motor".To mě normálně funguje ale když odejdu z teto sceny a vrátim se zpět tak se mi "prazdny motor" ukáže zpátky.Jak mu mam zamezit aby se objevoval??

Teraz nie som schopný Ti poradiť, čo máš vlastne zle, ale ak si to robil podľa toho, ako je tu už písané, a nejde Ti to, mohol by si sem nakopírovať scripty, aby sme si mohli pozrieť, kde je vlastne chyba :).

S pozdravom
PS
Title: Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: killer on February 05, 2006, 09:22:09 PM
No mě jde o to že když ze scény vezmu objekt "prazdny motor" a spojim ho z "benzinem" tak mi z toho vznikne "motor plny".To mi funguje ale když odejdu ze sceny kde jsem vzal ten motor do jiné scény a vrátim se zpět tak se mi v té scéně opět objevý ten "prazdny motor".
V inventáři mam u toho "motoru prazdny" script:

on "benzin"

{
  Game.Interactive = false;
  actor.Talk("Zkusim nalit benzin do motoru...");
  Game.TakeItem("motor_full");
  Game.DeleteItem("motor_empty")
 
  Game.Interactive = true;
}



a i když tam třeba přidám

var Entmotor_empty = Scene.GetNode("motor_empty");
  Entmotor_empty.Active = false;

tak se mě zase zobrazí ???
Title: Re: Jak udelam konbinaci s objektu inventare s jinym objektem
Post by: Mnemonic on February 06, 2006, 05:11:36 PM
Proste ve SceneEditu patricne entite vypln policko "Item" na "motor_empty". Pak ta entita bude propojena s predmetem v inventari a kdyz predmet smazes, tak ta entita zmizi a uz se neobjevi. Zadny neco.Active = false; pak vubec neni potreba delat.