Manawydan Mantis

Detaily problému Přechod na poznámky ] Historie problému ] Tisk ]
IDProjektKategorieZobrazit stavDatum vloženíPoslední změna
0001011Questy a InterakceNezařazanoveřejný13.10.2012 - 15:1313.09.2013 - 22:30
ReportérStig 
PřiřazenWhitey 
PrioritanormálníZávažnostmaláReprodukovatelnostnevyzkoušeno
StavpřiřazenýŘešeníotevřený 
PlatformaOSVerze OS
Shrnutí0001011: Převod Tagů na řetězce v Interakčním systému
PopisObecne 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..
Další informacePřidáno z fóra: http://forum.manawydan.cz/showthread.php?tid=895&pid=67474#pid67474 [^] (uživatel: Stig)
ZnačkyŽádné štítky nepřiloženy.
Přiložené soubory

- Závislosti

-  Poznámky k problému
(0002465)
Geo (správce)
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 (správce)
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 (správce)
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 (správce)
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 (správce)
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 (správce)
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 (správce)
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 (správce)
28.04.2013 - 14:20

Supr, pak je vse ok, diky moc.. :)
(0002918)
Whitey (správce)
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 (správce)
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 (správce)
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 (správce)
07.09.2013 - 20:52

Jak to tu vypadá? Nemělo by se to už uzavřít?
(0003033)
Stig (správce)
13.09.2013 - 22:30

Promiň za zdržení, zrovna dopisuju interakci, kde to bude. Dám vědět co nejdřív.

- Historie problému
Čas modifikace Uživatelské jméno Pole Změna
13.10.2012 - 15:13 Stig Nový problém
13.10.2012 - 15:55 Stig Popis upraven Zobrazit revize
18.10.2012 - 17:37 Stig Popis upraven Zobrazit revize
19.10.2012 - 10:49 Geo Přiřazen => Geo
19.10.2012 - 10:49 Geo Stav nový => přiřazený
19.10.2012 - 11:24 Stig Popis upraven Zobrazit revize
23.10.2012 - 23:53 Geo Poznámka přidána: 0002465
23.10.2012 - 23:53 Geo Stav přiřazený => čeká na testy
30.11.2012 - 18:12 Stig Poznámka přidána: 0002516
30.11.2012 - 18:14 Stig Poznámka upravena: 0002516 Zobrazit revize
30.11.2012 - 18:14 Stig Poznámka upravena: 0002516 Zobrazit revize
21.04.2013 - 20:03 Whitey Přiřazen Geo => Whitey
21.04.2013 - 20:03 Whitey Stav čeká na testy => přiřazený
21.04.2013 - 20:06 Whitey Poznámka přidána: 0002880
21.04.2013 - 20:06 Whitey Stav přiřazený => reakce
28.04.2013 - 13:43 Whitey Poznámka přidána: 0002912
28.04.2013 - 13:50 Whitey Poznámka přidána: 0002914
28.04.2013 - 13:52 Whitey Poznámka upravena: 0002914 Zobrazit revize
28.04.2013 - 13:53 Whitey Poznámka upravena: 0002914 Zobrazit revize
28.04.2013 - 13:53 Whitey Poznámka upravena: 0002914 Zobrazit revize
28.04.2013 - 13:54 Whitey Poznámka upravena: 0002914 Zobrazit revize
28.04.2013 - 13:55 Whitey Poznámka upravena: 0002914 Zobrazit revize
28.04.2013 - 13:57 Stig Poznámka přidána: 0002915
28.04.2013 - 13:57 Stig Stav reakce => přiřazený
28.04.2013 - 14:00 Stig Poznámka upravena: 0002915 Zobrazit revize
28.04.2013 - 14:05 Whitey Poznámka přidána: 0002916
28.04.2013 - 14:20 Stig Poznámka přidána: 0002917
28.04.2013 - 14:36 Whitey Poznámka přidána: 0002918
28.04.2013 - 14:36 Whitey Stav přiřazený => čeká na testy
28.04.2013 - 14:38 Whitey Poznámka upravena: 0002918 Zobrazit revize
15.07.2013 - 04:03 Stig Poznámka přidána: 0002964
15.07.2013 - 04:11 Stig Poznámka upravena: 0002964 Zobrazit revize
15.07.2013 - 04:12 Stig Poznámka upravena: 0002964 Zobrazit revize
15.07.2013 - 04:13 Stig Poznámka upravena: 0002964 Zobrazit revize
15.07.2013 - 04:16 Stig Poznámka upravena: 0002964 Zobrazit revize
15.07.2013 - 04:18 Stig Poznámka upravena: 0002964 Zobrazit revize
15.07.2013 - 04:19 Stig Poznámka upravena: 0002964 Zobrazit revize
23.07.2013 - 16:11 Whitey Poznámka přidána: 0002967
07.09.2013 - 20:52 Whitey Poznámka přidána: 0003001
07.09.2013 - 20:52 Whitey Stav čeká na testy => reakce
13.09.2013 - 22:30 Stig Poznámka přidána: 0003033
13.09.2013 - 22:30 Stig Stav reakce => přiřazený


Copyright © 2000 - 2024 MantisBT Team
Powered by Mantis Bugtracker