Wintermute Engine Forum

Czech forum => Technické fórum => Topic started by: !Errorcode! on May 11, 2008, 12:35:41 PM

Title: Odpočítavanie?
Post by: !Errorcode! on May 11, 2008, 12:35:41 PM
Zdravim. Rád by som chcel vedieť ako môžem do hry vložiť Odpočítavanie, ktoré by bolo viditeľné v inventári (keď mám inventár vysunutý). Napríklad, že za 10 minút musím sa dostať z miestnosti inak hra končí a vtedy sa ukáže nová scéna.
Díky za odpovede!
Title: Re: Odpočítavanie?
Post by: Mnemonic on May 12, 2008, 09:07:29 AM
V prvni rade, inventar je v podstate okno, jako kazde jine. Takze ho muzes editovat ve WindowEditu, a prihodit si na nej dalsi ovladaci prvky, jako treba "Static control" pro zobrazeni casu.
Druhy krok bude, nejak ten Static prvek naplnit. To uz zalezi na tom, jak mas naskriptovanou hru.

Napriklad nejak takhle nastavis citac na 10 minut, a pak budes vypisovat zbyvajici pocet minut:

Code: WME Script
  1. // cilovy cas = aktualni cas + 10 minut
  2. var CilovyCas = Game.CurrentTime + 10 * 60 * 60 * 1000;
  3.  
  4. // tady si zjistime odkaz na Static prvek, do ktereho budeme vypsovat zbyvajici cas
  5. var Citac = NejakeOkno.GetControl("citac");
  6.  
  7.  
  8. while(Game.CurrentTime < CilovyCas) // cyklus, dokud zbyva nejaky cas
  9. {
  10.   // kolik milisekund zbyva?
  11.   var ZbyvajiciCas = CilovyCas - Game.CurrentTime;
  12.  
  13.   // zapiseme zbyvajici cas v minutach do Static prvku
  14.   Citac.Text = "Zbyva: " + ToString(ZbyvajiciCas / 1000 / 60) + " minut";
  15.   Sleep(1000);
  16. }
  17.  

Netestoval jsem to, ale minimalne by ti to melo nastinit, jak na to :)
Title: Re: Odpočítavanie?
Post by: !Errorcode! on May 17, 2008, 08:13:59 PM
Skúšal som to ale vždy ukáže chybu pri ,,zabalovaní" hry - chyba je tuto:

// tady si zjistime odkaz na Static prvek, do ktereho budeme vypsovat zbyvajici cas
var Citac = inventory.GetControl("citac");
Pri tom ,,inventory" ukáže že nie je definovaná. To je názov mojho okna - inventár. Neviem kde je teda chyba  ???
Title: Re: Odpočítavanie?
Post by: metamorphium on May 17, 2008, 08:34:50 PM
no a mas ho v tom skriptu definovanej nebo ne? inventory jako takove nic neni.

jo kdyby tam bylo:

var inventory = Game.GetInventoryWindow();

chapal bych, ze muzes tenhle kod pouzit.

Kdyztak upresni.
Title: Re: Odpočítavanie?
Post by: !Errorcode! on May 17, 2008, 09:04:10 PM
OK, uz to funguje, pri tom definovaní ,,Inventory" dik. Ale ako potom dám že keď sa čas minie = 0.000 otvori sa nova scéna automaticky?
Title: Re: Odpočítavanie?
Post by: metamorphium on May 17, 2008, 09:57:11 PM
no jak mas ten odpocitavaci script, tak uplne nakonec das Game.ChangeScene("nejaka scena");
Title: Re: Odpočítavanie?
Post by: !Errorcode! on May 17, 2008, 10:07:41 PM
Ok diky idem to skusat...ale mozno az zajtra  ;D
Title: Re: Odpočítavanie?
Post by: !Errorcode! on May 18, 2008, 11:06:20 AM
Diky ale ono to stale nefunguje  ??? . Dufam že tým neotravujem, ale keď dám príkaz Game.ChangeScene.... tak stale sa nahadzuje tá scéna hneď od začiatku. Teda ako zapnem hru už sa nahodí scéna. Ja to potrebujem ale po uplynutí času. Dík  ::slug
Title: Re: Odpočítavanie?
Post by: metamorphium on May 18, 2008, 02:00:40 PM
posli sem ten skript.
Title: Re: Odpočítavanie?
Post by: !Errorcode! on May 18, 2008, 02:23:04 PM
Toto je z "citac.script":

 var inventory = Game.GetInventoryWindow();

// cilovy cas = aktualni cas + 10 minut
var CilovyCas = Game.CurrentTime + 10 * 60* 60 * 1000;

 
// tady si zjistime odkaz na Static prvek, do ktereho budeme vypsovat zbyvajici cas
var Citac = inventory.GetControl("citac"); 

while(Game.CurrentTime < CilovyCas) // cyklus, dokud zbyva nejaky cas
{
  // kolik milisekund zbyva?
  var ZbyvajiciCas = CilovyCas - Game.CurrentTime; 

   // zapiseme zbyvajici cas v minutach do Static prvku
  Citac.Text = "Ostáva: " + ToString(ZbyvajiciCas / 1000 / 60) + " minut";
  Sleep(1000);
  Game.ChangeScene("scenes/exit/exit.scene");
}
Title: Re: Odpočítavanie?
Post by: metamorphium on May 18, 2008, 04:45:06 PM
rikal jsem na konec skriptu ne do te smycky. :)
Title: Re: Odpočítavanie?
Post by: !Errorcode! on May 18, 2008, 05:03:20 PM
Diky moc! Už to teda funguje...som ale magor  :). Ešte len tak na okraj sa opýtam  ;D Časomiera sa ukazuje štýlom:   Ostáva: 0.434667 minut..
alebo tak nejak. Či by nešlo dať časomieru na 2-ciferné číslo, lebo takto je tam veľa čísel - je to asi v milisekundách... Dík, dúfam že vážne neotravujem  ;D
Title: Re: Odpočítavanie?
Post by: metamorphium on May 18, 2008, 06:29:40 PM
to odpocitavani chces v sekundach nebo minutach, nebo

09:10
09:09

apod?
Title: Re: Odpočítavanie?
Post by: !Errorcode! on May 18, 2008, 06:30:36 PM
minuta + sekunda  :) teda v tvare napr.: ostava 15:00 (15 minut a 00 sekund) :)
Title: Re: Odpočítavanie?
Post by: Mnemonic on May 19, 2008, 07:47:58 AM
Kdyz mas pocet milisekund, muzes z nej pomerne snadno spocitat pocet minut a pocet sekund. Kdyz milisekundy vydelis 1000, dostanes sekundy. Kdyz sekundy vydelis 60, dostanes minuty ;) Pak uz to jen poskladat do smysluplneho textu. Ted zrovna nemam cas to skriptovat, ale melo by ti to vnuknout myslenku.