Manawydan Mantis - Questy a Interakce
Detaily problému
0001011Questy a InterakceNezařazanoveřejný13.10.2012 - 15:1313.09.2013 - 22:30
Stig 
Whitey 
normálnímalánevyzkoušeno
přiřazenýotevřený 
0001011: Převod Tagů na řetězce v Interakčním systému
Obecne receno, kdyby slo tagy uplatnit uplne vsude (nejen v tech par prikladech jako napr. "Give Item=SilverCoin Amount=this.NumericTag(blabla)"), tak by to bylo uplne nejlepsi.. To by umoznilo velkou variabilitu a rozmanitost a nemusel by clovek napriklad nastavovat 100 zaznamu pro ItemCreator ci MobileCreator, pokud potrebuje 100 temer stejnych predmetu ci NPC; nemusel by delat 100x Stage, pokud se par NPC lisi jen jmenem; nemusel by delat 100x podminku atd.

Priklady zamysleneho pouziti:
1.
<Stage Name="target.Tag("NPC_Name")" Title="Ishar - drobná výpomoc (target.Tag("NPC_Name"))">
<Objective ID="target.NumericTag("NPC_number")">Slíbil jsem pomoc osobě @Text(this.Tag("NPC_name"))@. Mám odnést zásilku @Text(this.Tag("cilova_lokace_6"))@.</Objective>
</Stage>

2.
<ItemCreator Name="zasilka" Type="SmallCrate" Multiple="true">
    <Props Name="Name" Value="Zásilka - target.Tag("NPC_Name")" />
      <Props Name="Description" Value="Dodávka pro target.Tag("cilova_lokace_1")"/>
</ItemCreator>

3.
<SetStage Name="target.Tag("NPC_Name")" ID="1"/>
<SetStage Name="zadano" ID="target.NumericTag("NPC_Name")"/>

4.
<Req>GetItem("target.Tag("item_type")",target.Tag("item_amount"),"target.Tag("item_Name")")</Req>

5.
<Give Item="target.Tag("item_type") Amount="target.Tag("item_amount")"/>


Idealne, aby fungovalo pro This (vlastnikem vyrazu NPC) i Target (vlastnikem vyrazu hrac) a v co nejsirsim uplatneni..
Přidáno z fóra: http://forum.manawydan.cz/showthread.php?tid=895&pid=67474#pid67474 [^] (uživatel: Stig)
Žádné štítky nepřiloženy.
Historie problému
13.10.2012 - 15:13StigNový problém
13.10.2012 - 15:55StigPopis upravenbug_revision_view_page.php?rev_id=633#r633
18.10.2012 - 17:37StigPopis upravenbug_revision_view_page.php?rev_id=652#r652
19.10.2012 - 10:49GeoPřiřazen => Geo
19.10.2012 - 10:49GeoStavnový => přiřazený
19.10.2012 - 11:24StigPopis upravenbug_revision_view_page.php?rev_id=653#r653
23.10.2012 - 23:53GeoPoznámka přidána: 0002465
23.10.2012 - 23:53GeoStavpřiřazený => čeká na testy
30.11.2012 - 18:12StigPoznámka přidána: 0002516
30.11.2012 - 18:14StigPoznámka upravena: 0002516bug_revision_view_page.php?bugnote_id=2516#r688
30.11.2012 - 18:14StigPoznámka upravena: 0002516bug_revision_view_page.php?bugnote_id=2516#r689
21.04.2013 - 20:03WhiteyPřiřazenGeo => Whitey
21.04.2013 - 20:03WhiteyStavčeká na testy => přiřazený
21.04.2013 - 20:06WhiteyPoznámka přidána: 0002880
21.04.2013 - 20:06WhiteyStavpřiřazený => reakce
28.04.2013 - 13:43WhiteyPoznámka přidána: 0002912
28.04.2013 - 13:50WhiteyPoznámka přidána: 0002914
28.04.2013 - 13:52WhiteyPoznámka upravena: 0002914bug_revision_view_page.php?bugnote_id=2914#r790
28.04.2013 - 13:53WhiteyPoznámka upravena: 0002914bug_revision_view_page.php?bugnote_id=2914#r791
28.04.2013 - 13:53WhiteyPoznámka upravena: 0002914bug_revision_view_page.php?bugnote_id=2914#r792
28.04.2013 - 13:54WhiteyPoznámka upravena: 0002914bug_revision_view_page.php?bugnote_id=2914#r793
28.04.2013 - 13:55WhiteyPoznámka upravena: 0002914bug_revision_view_page.php?bugnote_id=2914#r794
28.04.2013 - 13:57StigPoznámka přidána: 0002915
28.04.2013 - 13:57StigStavreakce => přiřazený
28.04.2013 - 14:00StigPoznámka upravena: 0002915bug_revision_view_page.php?bugnote_id=2915#r796
28.04.2013 - 14:05WhiteyPoznámka přidána: 0002916
28.04.2013 - 14:20StigPoznámka přidána: 0002917
28.04.2013 - 14:36WhiteyPoznámka přidána: 0002918
28.04.2013 - 14:36WhiteyStavpřiřazený => čeká na testy
28.04.2013 - 14:38WhiteyPoznámka upravena: 0002918bug_revision_view_page.php?bugnote_id=2918#r798
15.07.2013 - 04:03StigPoznámka přidána: 0002964
15.07.2013 - 04:11StigPoznámka upravena: 0002964bug_revision_view_page.php?bugnote_id=2964#r807
15.07.2013 - 04:12StigPoznámka upravena: 0002964bug_revision_view_page.php?bugnote_id=2964#r808
15.07.2013 - 04:13StigPoznámka upravena: 0002964bug_revision_view_page.php?bugnote_id=2964#r809
15.07.2013 - 04:16StigPoznámka upravena: 0002964bug_revision_view_page.php?bugnote_id=2964#r810
15.07.2013 - 04:18StigPoznámka upravena: 0002964bug_revision_view_page.php?bugnote_id=2964#r811
15.07.2013 - 04:19StigPoznámka upravena: 0002964bug_revision_view_page.php?bugnote_id=2964#r812
23.07.2013 - 16:11WhiteyPoznámka přidána: 0002967
07.09.2013 - 20:52WhiteyPoznámka přidána: 0003001
07.09.2013 - 20:52WhiteyStavčeká na testy => reakce
13.09.2013 - 22:30StigPoznámka přidána: 0003033
13.09.2013 - 22:30StigStavreakce => přiřazený

Poznámky k problému
(0002465)
Geo   
23.10.2012 - 23:53   
Opravena interakce, upraveny skripty.
Vzorová interakce mi na lokále chodí, je třeba to dále testovat...
(0002516)
Stig   
30.11.2012 - 18:12   
(upraveno: 30.11.2012 - 18:14)
Funguje suprově, podrobil jsem to opravdu důkladným testům.. :) Díky moc.
Jenom jedna věc, kdyby šla ještě udělat - a sice zavést možnost použití i u Expire.
Něco jako:

<Expire Target="this" Name="@this.Tag("jmeno")@" Minutes="@this.NumericTag("minuty")@"/>
a
<Req>IsExpired("this.Tag("jmeno")")</Req>

(nejsem si jistej, kde by se měly psát zavináče a kde ne, tak to střílím od boku ;))
Nejdůležitější je pro mě osobně to používání Tagu v Name, ten čas je pro moje účely vedlejší, ale to už záleží na konkrétní situaci.

(0002880)
Whitey   
21.04.2013 - 20:06   
Geo nereaguje, přebírám na sebe.
Návrh: Tag se uloží klasicky, pouze se mu přidá parametr "Expirable". Pokud bude true, převede se tag na současný čas + hodnota tagu v sekundách, případně se tag z "00:10:00" přeloží na "za 10 minut". Pak se přidá onen požadavek IsExpired/NotExpired.
(0002912)
Whitey   
28.04.2013 - 13:43   
STIG:
Ani jsem si toho bug1011 nevsiml, nejak sem to prehlidl mezi tema desitkama bugu cos uzaviral..
Promin, ale ja tomu moc nerozumim, mohli bysme to probrat na konkretnim prikladu?
Dejme tomu ze mame:
Kód:
<Set>target.Tag("casovany_tag") = "probiha"</Set>
<Req>target.Tag("casovany_tag") = "probiha"</Req>

To jsou dve zakladni operace s tagem. Chapu spravne, ze by se tam nejak pridal atribut Expirable (ale kam, kdyz XML element je Set a nikoliv Tag?) a tak by se Tag po vyprseni casu z Expirable zrusil sam?

Anebo si to myslel nejak jinak?
(0002914)
Whitey   
28.04.2013 - 13:50   
(upraveno: 28.04.2013 - 13:55)
Ani bych nemusel dělat extra podmínky, vše se nechá krásně "schovat" do řetězce tagu. Představuji si to takto:

Nastavení tagu:
Expirace za 100 sekund:
<Set>target.Tag("casovany_tag") = "Expirable:100"</Set>
Expirace za 10 minut:
<Set>target.Tag("casovany_tag") = "Expirable:10m"</Set>
Expirace za 1 hodinu, 20 minut a 5 sekund:
<Set>target.Tag("casovany_tag") = "Expirable:01:20:05"</Set>
Skriptově můžu udělat všechny tři možnosti, není to problém.
Teoreticky můžeme udělat i expiraci ke konkrétnímu datu, ale to by se hodilo jen pro velmi specifickou část kvestů.

Kontrola tagu:
Tag vypršel:
<Req>target.Tag("casovany_tag") = "Expired"</Req>
Tag stále nevypršet:
<Req>target.Tag("casovany_tag") = "NotExpired"</Req>

(0002915)
Stig   
28.04.2013 - 13:57   
(upraveno: 28.04.2013 - 14:00)
To vypada dobre.. Hlavni je, aby tam slo udelat neco jako tohle:

<Set>target.Tag("casovany_tag") = "Expirable:@this.NumericTag("sekundy")@"</Set>
<Set>target.Tag("casovany_tag") = "Expirable:@this.NumericTag("minuty")@m"</Set>
<Set>target.Tag("casovany_tag") = "Expirable:@this.NumericTag("hodiny")@:@this.NumericTag("minuty")@:@this.NumericTag("sekundy")@"</Set>

Proto jsem to vlastne na zacatku navrhoval.. Jde o vyuziti dynamickych hodnot z Numeric Tagu v tom Expire.

(0002916)
Whitey   
28.04.2013 - 14:05   
To by neměl být problém, protože ať to v interakci napíšeš jak chceš, do skript kde bude moje úprava to dorazí už zpracované (Expirable:100 apod.).
(0002917)
Stig   
28.04.2013 - 14:20   
Supr, pak je vse ok, diky moc.. :)
(0002918)
Whitey   
28.04.2013 - 14:36   
(upraveno: 28.04.2013 - 14:38)
Úprava je na servru. Po restartu (nebo stažení na lokál) lze testovat.
Lze používat i zkrácený tvar "E:hodnota".

(0002964)
Stig   
15.07.2013 - 04:03   
(upraveno: 15.07.2013 - 04:19)
Ještě dotaz, při expirování tagu se natvrdo smaže celý tag a jeho hodnota anebo se změní hodnota tagu na:
target.Tag("casovany_tag") = "Expired"
?

<Set>target.Tag("casovany_tag") = "Expirable:100"</Set>
mi tedy vytvoří Tag "casovany_tag" s hodnotou NotExpired, jehož hodnota se po 100 sekundách sama změní na Expired?

Jde mi o to, jestli to Expired je opravdu reálná hodnota tagu, tomu by napovídal ten interakční zápis. Pak tedy expirovatelný tag má nutně vždy hodnotu "Expired" nebo "NotExpired" (viz poznámka 2914: http://mantis.manawydan.cz/view.php?id=1011#c2914 [^])?
Ptám se jen pro upřesnění, jinak není samozřejmě problém v interakci vést zvlášť tag se skutečnou hodnotou a zvlášť s ním související tag s vypršením (př.: rozdávání různých itemů různým hráčům po určenou dobu konkrétním NPC = 3 Tagy uložené na hráči (typ itemu, jméno rozdávajícího NPC, expirovatelný tag)).

(0002967)
Whitey   
23.07.2013 - 16:11   
Tag si sice ukládá čas, ale vrací pouze řetězec NotExpired a Expired.
Pokud je potřeba aby interakce zobrazila i čas, musí se uložit zvlášť do dalšího tagu.
(0003001)
Whitey   
07.09.2013 - 20:52   
Jak to tu vypadá? Nemělo by se to už uzavřít?
(0003033)
Stig   
13.09.2013 - 22:30   
Promiň za zdržení, zrovna dopisuju interakci, kde to bude. Dám vědět co nejdřív.