02.12.2014 v 17:52
Hodnocení:
425
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
Jednoduchý návrh pro jednoduchý začátečnický Quest :-)
RP:
Bylo nebylo, jednou při zakládání cechu Expedice, se její členové rozhodli. Že by měli rádi nějakého hlídače v době své nepřítomnosti.
Proto hraničářka Mabel na žádost Denetriuse ochočila Lesního vlka, kterého vychovala a dali mu tento úkol.
Ovšem v dobách nepřítomnosti netušili, že jejich vlčák si nebude schopný v Isharu ulovit potravu.
Pomůže mu někdo?
Návrh: Jednoduchý questík pro začátečníky, ktery jde splnit pouze jednou.
Donést vlčákovi dvě syrová masa aby měl co jíst.
Odměna: 70 expů
Interakce při přiblížení hráče *smutně kouká*
Běžná interkace *čenichá*
Šlo by to?
02.12.2014 v 20:19
Hodnocení:
275
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
02.12.2014 v 21:37
Hodnocení:
425
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
Uff takže to zkusim... aspoň z toho někdo pochopí můj nápad.
Kód: <?xml version="1.0" encoding="utf-8"?>
<Interaction ID="Expediční_Vlk">
<Procedure ID="doubleclick">
<Trigger WaitOn="Doubleclick" Range="3" />
<emote>*Smutně kouká*</emote>
</Procedure>
</Interaction>
<Trigger WaitOn="emote" Text="Položil maso">
target.CountItems("Syrové Maso")
<Req>HasItem("Meat", 2, "Syrové Maso", "")</Req>
<emote>Vděčně zaštěkal a pustil se do jídla>
</Trigger>
Musel bych ty skripty číst tak hodinu a učit se to, je to jine než sphere, ale tohle sem si nějak vycucal z prstu z toho co tam je (neznam jmena itemů v DB, ani způsob všech možných kombinací)
čize funkce lajcky by byla asi taková
v dosahu (range) 5 jakéhokoliv hráče by se zpustil emote *Smutně kouká*
při doubleclicku, by se zpustil emote hráče *Vypadá hladově, co mu něco dát*
při dalším emotu hráče *Položil maso* nebo *Dal vlkovi maso*
se zpustí podmínka, která bude hledat, jestli hráč má 2x Syrové maso (žebro)
pokud ano, zpustí se emote *Vděčně zaštěkal a dal se do jídla*
player gain exp (nebo jak je ten příkaz) 75 +
if no - tak emote hráče *Jsem si jistý, že mám to co chce?*
konec scriptu...
02.12.2014 v 22:21
Hodnocení:
2 359
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
Tyhle xml skripty pro chování NPC (Interakční systém, zkráceně IS) je náš vlastní
Pro automatické spuštění když někoho vidí je trigger s čekáním na "onsee", s doubleclickem by to emotoval až na poklepání.
Poptám se jestli neuvolníme program v kterém se ta skripta nechají zjednodušeně psát.
Nevěřte rase která se pořád usmívá. Něco s ní není v pořádku.
02.12.2014 v 22:27
Hodnocení:
326
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
Nemame zadny plne funkcni program na kontrolu script Sice se v tom editoru psat daji, ale moc to nepomuze, protoze nejde jednoduse overit funkcnost script (zastarala databaze) a ani editor sam o sobe nedela zadne korekce nebo neco podobneho.
02.12.2014 v 23:35
Hodnocení:
425
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
Nenašla by se nějaká hodná duše, která by to scripty napsala korektně správně?
Přeci to nemůže být tak těžké, je to jednoduchý questík D-:
03.12.2014 v 08:11
Hodnocení:
1 184
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
Ten editor je stejně naprd.. Jediná kontrola XML je načíst ho v prohlížeči, to odhalí chyby ve stromové struktuře, což je aspoň něco.
Tohle jistě neprojde ani validací formátu XML (tedy prohlížeč to "nepustí") a je tam pár dost zásadních chyb (koncová značka Interaction uprostřed interakce apod.), ale jinak jako začátek je to dobrý. Nic radši neslibuju, ale pokud se k tomu nikdo nedostane, zkusím to doklepnout a hodit sem (+ do hry) výsledek.
03.12.2014 v 19:53
Hodnocení:
1 184
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
Mám to skoro hotový, jen si musím osvěžit paměť, protože mi to nějak nechce fungovat se Stage (blok interakce pro zjišťování stavu plnění úkolu)..
03.12.2014 v 21:50
Hodnocení:
2 359
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
Akorát si nejsem jistý co udělá PetSpawner pokud se na něj připne NPC s interakcí.
Pokud ho nemíníte používat, smažu ho.
Nevěřte rase která se pořád usmívá. Něco s ní není v pořádku.
03.12.2014 v 22:10
Hodnocení:
1 184
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
Ani si nepamatuju, jestli jde na PetSpawner nahodit interakce, jako na standardní Spawner.. Každopádně NPC s interakcí a bez Kill/Damage Triggeru stejně neumírá a pokud bude releasnuté (jakože určitě), tak asi moc dalších výhod PetSpawner pro NPC s interakcí nepřinese.
04.12.2014 v 23:24
Hodnocení:
1 184
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
Snad finální verze - podpora pro: náhodné fráze v dialozích (větší rozmanitost rozhovorů), Reputace (Ishar), Perky: Přesvědčování, Smlouvání, Chovatel, Rváč, Porozumění zvířatům.
Drobná XP odměna, ať to není úplná charita.
Kód: <?xml version="1.0" encoding="utf-8"?>
<Interaction ID="expedicni_vlk">
<Stage Name="maso_pro_psa" Title="Maso pro psa">
<Objective ID="1">Potkal##a# jsem psa před cechem Expedice. Vypadá hladově. Možná by uvítal aspoň dva kousky syrové svaloviny.</Objective>
<Objective ID="-1">Nakrmil##a# jsem psa před cechem Expedice. Byl vděčný.</Objective>
<Objective ID="-2">Potýral##a# jsem trochu čokla před cechem Expedice. Teď už snad přestane somrovat.</Objective>
</Stage>
<Procedure ID="see">
<Trigger WaitOn="See" Target="Any.Player" Range="5" />
<If>
<Req>this.IsExpired("pauza_vlk_emotes")</Req>
<Expire Target="this" Name="pauza_vlk_emotes" Seconds="15"/>
<Turn To="target"/>
<Emote>@RandomString("smutně kouká","schlíple stojí","kouká posmutněle","má svěšený ocas","kňučí")@</Emote>
<Sound Play="136"/>
</If>
<End/>
</Procedure>
<Procedure ID="start">
<Trigger WaitOn="Doubleclick" Range="3"/>
<Turn To="target"/>
<Show Dialog="start_convo"/>
</Procedure>
<Dialog ID="start_convo">
<Text>*@RandomString("vzhlédl k tobě v očekávání","zvedl hlavu","zbystřil","očuchává tě")@*</Text>
<Choice>
<Req>Stage("maso_pro_psa") = 0</Req>
<Text>Hodnej pejsek..</Text>
<After>
<Wait Time="1"/>
<Turn To="target"/>
<Emote>@RandomString("zaštěkal","olízl ti ruku","vrtí ocasem","kouká tázavě")@</Emote>
<Wait Time="2"/>
<Emote>@RandomString("vypadá hladově","vypadá zuboženě","koukaj mu žebra","kouká kolem, co by sežral")@</Emote>
<SetStage Name="maso_pro_psa" ID="1"/>
<Sound Play="136"/>
<End/>
</After>
</Choice>
<Choice>
<Req>target.Thug > 1</Req>
<Req>!target.Tag("expedicni_vlk_thug-dealt") == "true"</Req>
<Text>[Rváč] *nakopnout psa*</Text>
<After>
<Wait Time="1"/>
<Turn To="target"/>
<Emote>@RandomString("vrčí na tebe","štěká","vyjel po tobě")@</Emote>
<Sound Play="135"/>
<Trust Zone="Ishar" Take="10"/>
<AddExperience NoMessage="true" Amount="20"/>
<Message>Obdržel##a# jsi 20 zkušeností za použití perku Rváč.</Message>
<Set>target.Tag("expedicni_vlk_thug-dealt") = "true"</Set>
<SetStage Name="maso_pro_psa" ID="-2"/>
<End/>
</After>
</Choice>
<Choice>
<Text>@RandomString("Zlej pes!","Ošklivej čokl!","Mazej odsud!","Táhni, čokle!")@</Text>
<After>
<Wait Time="1"/>
<Turn To="target"/>
<Emote>@RandomString("štěká","ustoupil o krok a kouká zvědavě","pozoruje tě zaujatě")@</Emote>
<Sound Play="133"/>
<End/>
</After>
</Choice>
<Choice>
<Text>*@RandomString("zavrčet","pohrozit pěstí","zařvat na něj")@*</Text>
<After>
<Wait Time="1"/>
<Turn To="target"/>
<Emote>@RandomString("štěká","ustoupil o krok a kouká zvědavě","pozoruje tě zaujatě")@</Emote>
<Sound Play="133"/>
<End/>
</After>
</Choice>
<Choice>
<Text>*odejít*</Text>
<After>
<Wait Time="1"/>
<Emote>@RandomString("přestal si tě všímat","otočil hlavu jinam","sklonil hlavu a kouká do země")@</Emote>
<Wait Time="2"/>
<Emote>@RandomString("vypadá hladově","vypadá zuboženě","koukaj mu žebra","kouká kolem, co by sežral")@</Emote>
<End/>
</After>
</Choice>
<Choice>
<Req>HasItem("RawMeat", 2)</Req>
<Req>Stage("maso_pro_psa") > -1</Req>
<Text>*nabídnout dva kusy syrového masa*</Text>
<After>
<Req>GetItem("RawMeat", 2)</Req>
<Wait Time="1"/>
<Turn To="target"/>
<Emote>vzal si maso a @RandomString("vrtí ocasem","pustil se hladově do něj")@</Emote>
<AddExperience NoMessage="false" Amount="50"/>
<Outlaw Zone="Ishar" Take="10"/>
<SetStage Name="maso_pro_psa" ID="-1"/>
<If>
<Req>target.Persuation > 1 OR target.Haggling > 1 OR target.MasterAnimalHandler > 1</Req>
<Emote Target="target">drbe ho za ušima</Emote>
<Wait Time="1"/>
<Turn To="target"/>
<Emote>*radostně zaštěkal*</Emote>
<Sound Play="133"/>
<Outlaw Zone="Ishar" Take="5"/>
<AddExperience NoMessage="true" Amount="10"/>
<Message>Obdržel##a# jsi 10 zkušeností za použití pasivního perku.</Message>
<End/>
</If>
<If>
<Req>target.AnimalMastery > 0</Req>
<Emote Target="target">drbe ho za ušima</Emote>
<Outlaw Zone="Ishar" Take="5"/>
<AddExperience NoMessage="true" Amount="20"/>
<Message>Obdržel##a# jsi 20 zkušeností za použití perku Porozumění zvířatům.</Message>
<End/>
</If>
</After>
</Choice>
</Dialog>
</Interaction>
Testnu to ještě naposled a nahodím..
25.12.2014 v 14:03
Hodnocení:
1 184
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
25.12.2014 v 14:34
Hodnocení:
326
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
Jen je blby, ze ted kazdej vi, co ma delat a kolik za to dostane
25.12.2014 v 15:05
Hodnocení:
1 184
Mantis: 0
Vloženo do Mantisu 0-krát v 0 postech
Bylo předem daný, co má kdo udělat, to už bylo v samotnym zadání, takže se to ví od postu číslo 1.. Je to jen o nakrmení psa, miniquest, odměna je symbolická - základní XP odměna činí 50 expů. A výši odměny lze ovlivnit jen vlastnictvím perku, což udělá rozdíl nějakých 10-20 XP navíc. Na tom questu je nejtěžší najít toho psa a co se mu má donést, to už se napíše úplně přesně přímo v zadání.
Tady bych to tudíž nevnímal přímo jako spoiler, nakrmit psa masem je triviální úkon. Spíš jsem to sem dal, aby tu byly nějaký učební materiály i pro hráče.
Kdyby šlo o složitější hádanky nebo logické úlohy, tak je to samozřejmě spoiler jak prase, to se na fórum opravdu dávat nemá.. Zveřejnit quest na Měsíční štít jednorožce nebo ten hádankářský quest z Vilhelmovic atd. snad nikoho nenapadne.
Ale jinak věci jako tohleto a třeba i armádní questy, v tom problém nevidím, protože je předem dané, co je třeba udělat a technicky se jedná o vcelku zajímavé interakce s prakticky maximálním využitím všech možností IS.
Bylo by podle mě supr nedělat interakce jen v základním tvaru, ale začlenit tam i všechny ty featury jako perky, reputaci, pseudonáhodný stringy a další hodnoty a to se dá právě podle kódu výše solidně naučit. Ačkoliv samozřejmě cokoliv je lepší než nic..
|