Wintermute Engine Forum
Czech forum => Technické fórum => Topic started by: pyromaniakOV on May 30, 2003, 12:36:14 PM
-
Jak udelam konbinaci objektu s inventare s jinym objektem v inventari nebo na scene
-
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:))
-
Koukam ze se nam ceske forum rozjizdi :) no Mnemonicu bude muset radit i sem :DD
-
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:
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".
on "book"
{
// co se ma stat, kdyz hrac pouzije na tento objekt knihu
}
-
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:)
-
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
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).
EntBook.Active = false;
A je to!
-
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
-
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 ;)
-
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? :)
-
Asi jo :) Jak rikam, tim se modifikuje scena, s inventarem to nema nic do cineni.
-
Asi jo :) Jak rikam, tim se modifikuje scena, s inventarem to nema nic do cineni.
Jo, uz to chapu, funguje to, dekuji za pomoc:)
-
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
-
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.
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.
-
Dekuji, uz to funguje. :)
-
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??
-
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
-
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í ???
-
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.