18. Leden 2019 - 21:08

Poslední příspěvky

Stran: 1 [2] 3 4 ... 10
11
TADS / Re: akce po určitém počtu tahů
« Poslední příspěvek od gaspoda kdy 9. Listopad 2018 - 09:37 »
Jinak jsem ještě zápasil s akcí sraž něco něčím.
Žádnou správnou akci jsem na to nenašel (možná jsem špatně hledal).
Po pročtení dlouhého vlákna zde jsem to vyřešil akcí "AttackWith" s nadefinováním vlastních slov.
Akorát kazí dojem že lze na předmět i úspěšně zaútočit. A to asi hráče nenapadne.

Samozřejmě vždy je možnost si zadefinovat úplně novou akci, která nebude navázaná na stávající, ale s každou takovou neobvyklou akcí hrozí, že hráč neuhodne správné sloveso. Proto by obvykle autor měl spíš sledovat opačný cíl, umožnit akci provést více slovesy a více synonymy, přesměrovat i méně pravděpodobné akce na tu správnou, aby průbeh hry byl hladší. Když bude hra reagovat na příkaz "zaútoč na diamant bičem", tak to dojem toho, koho napadne "sraž" nezkazí a toho, koho to nenapadne a místo toho "zaútočí", tak tomu to pomůže se posunout dál, tak jeho dojem to také nezkazí. Určitě bych přesmeroval také akci MoveWith, tedy posuň něco něčím, ta je pro nějaké štouchnutí do něčeho asi přímo určená, ale jak říkám, čím více synonym, tím lépe.

A ještě lépe, pokud hráče na neobvyklou akci někde předem připravíš. Třeba v naší hře jsme hráče předem důkladně procvičili, že může namířit tablet na něco, aby to později mohl použít k řešení problému.

Kód: [Vybrat]
gcVocab = 'diamant u stropu/diamantu u stropu/diamantem u stropu'
A samotnou akci takto:
Kód: [Vybrat]
gcVocab = 'druhý druhému druhým diamant/diamantu/diamantem'

Pozor na formát gcVocab, tedy zápisu slovníku. V tom prvním případě nemáš správně, zapisuj se 'přídavné přídavné podstatné/podstatné', tj. neoddělují se lomítkem skupiny slov, ale jenotlivá podstatná jména. V tom druhém případě to máš správně napsané, takže jsi se asi jen překoukl nebo si to neuvědomil.
12
TADS / Re: akce po určitém počtu tahů
« Poslední příspěvek od ajs kdy 8. Listopad 2018 - 19:32 »
Tak děkuji za další způsob. Použil jsem ten první.
Jinak jsem ještě zápasil s akcí sraž něco něčím.
Žádnou správnou akci jsem na to nenašel (možná jsem špatně hledal).
Po pročtení dlouhého vlákna zde jsem to vyřešil akcí "AttackWith" s nadefinováním vlastních slov.
Akorát kazí dojem že lze na předmět i úspěšně zaútočit. A to asi hráče nenapadne.
Pokud by byl lepší způsob tak se podělte.
Mám to takto:
Předmět "Diamant u stropu"
Kód: [Vybrat]
+ p_Diamant_u_stropu: Thing, Fixture 'diamant u stropu/diamantu u stropu/diamantem u stropu' 'diamant u stropu' *2
"Leží na malém výstupku těsně u stropu místnosti, asi dva metry nad tvou hlavou. "

// pokud nejde shod/sraz diamant u stropu lopatou zobrazí se tato hláška
notAWeaponMsg = 'Holýma rukama to nepůjde. Nedosáhneš na něj. '

// pokud nejde vem diamant u stropu zobrazí se tato hláška
cannotTakeMsg = 'Nemůžeš ho vzít. Nedosáhneš na něj. '
cannotMoveMsg = 'Nemůžeš ho posunout. Nedosáhneš na něj. '

// je tu pro zobrazeni nepřenosných objektů v popisu mistnosti
isListed = true

// tedy napíšeme postupně 2. koho? čeho? 3. komu? čemu? 4. koho? co? 6. (o) kom? (o) čem? 7. kým? čím? pád oddělené čárkou
gcName = 'diamant u stropu, diamantu u stropu, diamant u stropu, diamantu u stropu, diamantem u stropu'
gcVocab = 'diamant u stropu/diamantu u stropu/diamantem u stropu'

// toto funguje na zautoc bicem na diamant u stropu   zautoc na diamant u stropu lopatou  gIobj != p_Bic  !p_Bic.isIn(me)
dobjFor(AttackWith) {
verify() {}
check() {
// pokud to "čím" není zobrazíme hlášku
if (gIobj != p_Bic)
failCheck('{Kýmčím iobj} diamant nesrazíš. Nedosáhneš na něj. ');
}
action() {
"Podařilo se ti srazit diamant dolů. ";
// necháme zmizet předmět "diamant u stropu"
p_Diamant_u_stropu.moveInto(nil);
// přidáme do místnosti předmět "druhý diamant"
p_Diamant2.discover();
}
}
;
A samotnou akci takto:
Kód: [Vybrat]
+ p_Diamant2: Hidden, Thing 'druhý druhému druhým diamant/diamantu/diamantem' 'druhý diamant' *2
"Druhý diamant je těžký, neforemný drahý kámen. "

dobjFor(Take) {
action() {
"Vzal jsi druhý diamant. ";
achievement.awardPointsOnce();
inherited;

}
// zvýší skóre o 1 bod
achievement: Achievement { +1 "nalezení druhého diamantu." }

// tedy napíšeme postupně 2. koho? čeho? 3. komu? čemu? 4. koho? co? 6. (o) kom? (o) čem? 7. kým? čím? pád oddělené čárkou
gcName = 'druhý diamant, druhému diamantu, druhý diamant, druhém diamantu, druhým diamantem'
gcVocab = 'druhý druhému druhým diamant/diamantu/diamantem'
;
// definice nového slova sraž
VerbRule(rozbij_cim)
('sraž' | 'shoď' | 'shodit') singleDobj singleIobj
: AttackWithAction
verbPhrase = 'srazit/sraz{íš}/srazil{a} (co) (čím)'
isPrepositionalPhrasing = nil
omitIobjInDobjQuery = true
askDobjResponseProd = singleNoun
askIobjResponseProd = singleNoun
;
13
TXT / Re: TXT engine
« Poslední příspěvek od SoulSoft kdy 7. Listopad 2018 - 15:20 »
Odskusane, drzalo sa to prevazne na 49% a pohybovalo sa to medzi 46% - 52%.

Pouzivas SDL_Delay, pripadne SDL_WaitEvent? U textovky v podstate by stacilo prekreslit obrazovku len pri zmene textu (zmenil sa cas, bol pridany text, kurzor preblikol). Hrotit to ale nemusis koli mne, ako som uz pisal po tej prvej uprave uz cpu stiha uchladit.
14
Všeobecná diskuse / Re: Test
« Poslední příspěvek od panprase kdy 6. Listopad 2018 - 21:46 »
 :) ;) ;D ??? :P
15
TXT / Re: TXT engine
« Poslední příspěvek od pedromagician kdy 6. Listopad 2018 - 20:56 »
Diky, som rad ze to trosku zlepsilo situaciu.

Zatial nie... tak zmena predsa len nieco, je tam TXT2. Nie je na normalne pouzitie len ma zaujima ci ti to bude vytazovat menej. Mozes to prosim ta skusit, dik :)
16
TXT / Re: TXT engine
« Poslední příspěvek od SoulSoft kdy 5. Listopad 2018 - 17:17 »
W7 home x64.

Po nahodeni uprav sa cpu drzi na 50% a aj citit ze sa tak u toho uz nepoti :). Tak 20 minut bol engine spusteny a bolo to stabilne. Vetrak sice hucal mierne a naznacoval ze tam je potrebne chladit cpu no povedal by som ze sa to uz neprehreje do extremu. Dik.

Potrebujes z mojej strany este nieco testnut okolo toho?
17
TXT / Re: TXT engine
« Poslední příspěvek od pedromagician kdy 4. Listopad 2018 - 22:12 »
na ako systeme (w7,8,10 - 32x64) to pustas?

accelerated=true; - to je zalezitost noveho sdl 2.x malo by to vyuzivat HW na kreslenie niektorych 2d veci
synchronizedrefreshrate=true; - ano to je vsync

skus prosim ta tuto verziu
https://www.dropbox.com/sh/cgbz8j84r3040o5/AAB5AlnGDFCRWNCQWnSaGIEea?dl=0

staci preplacnut txt.exe
a v configu za synchronizedrefreshrate daj natvrdo maxFPS=60 ako sa to sprava?
18
TXT / Re: TXT engine
« Poslední příspěvek od SoulSoft kdy 3. Listopad 2018 - 13:31 »
Zdar Pedro, mne sa po spusteni txt enginu na notebooku masina po chvili zacina prehrievat (ventilator huci a cpu bezi na 50-90% az kym sa to cele vypne). Tak som sa teda pozrel do configu ci s tym nieco viem urobit.

Su tam 2 hodnoty:
accelerated=true; -> to som netusil co to znamena. po zmene na false mi hra nejde vobec spustit.. v logfile je chyba "renderer creation failed". teda to ma spustit nejaky emulator renderovania? asi nebude ono to co hladam..

synchronizedrefreshrate=true; -> to je vsync ze? ak to dam na false tak cpu stale bezi rovnako 50-90% a hreje

Notebook to je sice uz starsieho typu, no u ostatnych hier co tu sem tam hravam nevidim ze by zapekali cpu. Slo by do logu trebars vypisat info o vsync zisteneho z SDL po inicializacii hry? Kludne by to mohla byt len nejaka prkotina u mna v driveroch, alebo bug v SDL.

Je to HP pavilion v6 a gfx ATI mobility radeon HD 4650. V catalyst centre mam vsync nastaveny na always ON. Hry napr vytvorene v UNITY to ale ignoruju co som si vsimol.
19
TADS / Re: akce po určitém počtu tahů
« Poslední příspěvek od gaspoda kdy 1. Listopad 2018 - 23:57 »
Já si v popisu místnosti kód provádějící načasování volám. Do textového výpisu se dá vložit spousta různých věcí prostřednictvím těch zdvojených špičatých závorek. Třeba podmínit část výpisu <<if něco>>text<<end>> ale i jakýkoliv příkaz, který se vykoná a vloží do textu svůj výstup. V příkladu výše žádný výstup není, ale akce načasování se spustí.

Šlo by to napsat i jinak. Ten popisek místnosti uvedený ve dvojitých uvozovkách na začátku místnosti je taková zkratka - použije se šablona, která vloží daný text do vlastnosti desc, takže bys také mohl napsat desc = "Popis. " Vtip je v tom, že desc je metoda, která se spustí a má úkol vytisknout popis místnosti na obrazovku, nejde tedy o obyčejnou proměnnou, do které se uloží nějaký text. Takže místo výše uvedeného by šlo napsat:

Kód: [Vybrat]
m_V_letadle: Room 'V letadle'
    desc()
    {
        "Popis. ";
        if(casovac == nil) casovac = new Fuse(self, &havaruj, 5);
    }
;

Pokud se ti bude zdát divné, že míchám pojmy proměnné (data) a metody (funkce, příkazy), tak je to tím, že se to v TADSu zase tolik nerozlišuje. TADS je hodně dynamický jazyk a text napsaný v dvojitých uvozovkách není řetězcová konstanta, nejsou to data, je to *příkaz* k provedení tisku.
20
TADS / Re: akce po určitém počtu tahů
« Poslední příspěvek od ajs kdy 1. Listopad 2018 - 22:00 »
No tak to je paráda.
Ani jsem nedoufal v tak rychlou odpověď
Tvůj kód funguje přesně tak jak jsem potřeboval.
Netušil jsem že třeba pří zkoumání předmětu se vykonává i kód v části Room i když bez výpisu popisu. Dobré vědět.
Čekal jsem to mnohem složitější.
Myslel jsem že se to bude řešit novou třídou ale to je zatím na mě ještě moc.
Budu pokračovat a uvidíme jak to půjde.
Moc děkuji.



Stran: 1 [2] 3 4 ... 10