can somone help me with a command
rocket20001010
18 Mar 2017, 17:51i am new to coding and don't have much experince but i do know he basics of quest.
i want to make a "wear" command where i can wear clothes, and if i try to put on other clothes while already wearing something then it will switch, and i want to make a system where i can't go in a certain area while wearing certain clothes.
but if someone want's to be kind and has the time can they explain to how coding works and explain how the wear command works, because i not only want to know how to make a wear command but also want to know a bit more about coding so i don't have to ask someome everytime i make a new command.
Silver
18 Mar 2017, 19:06There's a wearables library in the Quest documentation you could use.
http://docs.textadventures.co.uk/quest/libraries.html
In terms of the clothes being worn having a game changing effect you'd need to set flags.
http://docs.textadventures.co.uk/quest/tutorial/more_things_to_do_with_objects.html
hegemonkhan
18 Mar 2017, 20:59here's a link where I think I explain how Commands work in detail:
https://textadventures.co.uk/forum/quest/topic/ij9pztcxquaeiozydrxi_a/allow-a-command-to-require-object1-for-an-action-on-object2#0547f1d4-8c6e-4cdc-a314-460e03274e6c
(if the link doesn't work, you just need to remove the 's' in 'https' in the url, and then hopefully it should work for you)
here's a link for a guide on the basics ('bread and butter') of starting to learn coding/programming (for quest):
http://textadventures.co.uk/forum/samples/topic/5559/attributes-and-if-script-guide-by-hk
quest's 'aslx' coding is similar to 'xml'/'html' (web/browser programming languages), where you use 'tags' to make code lines/blocks (your Objects/frames/windows):
code can be written vertically and/or horizontally, depending on how well the language/engine is programmed in parsing
quest is able to handle horizontal and vertical
vertical for more complex/larger code ('blocks' --- multiple lines) is easier for humans to read and for organization, an example:
<attr name="area_description" type="stringdictionary">
<item>
<key>swamp</key>
<value>blah blah blah bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</value>
</item>
<item>
<key>desert</key>
<value>blah blah blah bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</value>
</item>
<item>
<key>tundra</key>
<value>blah blah blah bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</value>
</item>
<item>
<key>forest</key>
<value>blah blah blah bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</value
</item>
</attr>
horizontal is more suited for more simple code that can fit on a single line:
<attr name="color_list" type="simplestringlist">red;blue;green;yellow;black;white;grey;orange;purple;brown</attr>
new default game code:
<asl version="550">
<include ref="English.aslx" />
</include ref="Core.aslx" />
<game name="XXX">
<gameid>SOME_ALGORITHM_RANDOM_GENERATED_HASH/STRING</gameid>
<version>1.0</version>
<firstpublished>2017</firstpublished>
<game>
<object name="room">
<inherit name="editor_room" />
<object name="player">
<inherit name="editor_object" />
<inherit name="editor_player" />
</object>
</object>
</asl>
separated (easier for us humans, and has no effect on the computer, no ERRORS), so you can get a better sense of it's structure:
(though, usually you want to limit the amount of lines, usually blank lines, too... where you can... preferably, without compromising readability and/or organization for humans)
// your entire/full game code (your game) is the 'asl' tag block
<asl version="550">
<include ref="English.aslx" />
</include ref="Core.aslx" />
<game name="NAME_OF_YOUR_GAME">
<gameid>SOME_ALGORITHM_GENERATED_RANDOM_HASH/STRING</gameid>
<version>1.0</version>
<firstpublished>2017</firstpublished>
</game>
<object name="room">
<inherit name="editor_room" />
<object name="player">
<inherit name="editor_object" />
<inherit name="editor_player" />
</object>
</object>
</asl>
the 'asl' block:
this is your entire game code (your game / your main/root GAME OBJECT which contains the entire contents/code of your game)
<asl version="550"> // beginning of your 'asl' tag block, and is also the 'signature/header' line of the 'asl' tag block
// your mass of game code/content
</asl> // end of your 'asl' tag block
--------
the, version="###", has to match up with version of the 'quest.exe' quest software/engine that you've downloaded or with the server if using quest online/web (current version: 550/560/570 ... one of those, lol. Only the first 2 digits from the left matter, and the 3rd digit from the left is always a zero for putting into code: <asl version="###">, even though the actual version used by the engine will be longer, for example: quest v5.5.351.23.35.111 ---> version="553". You can see the quest version by click on the 'help' in the menu bar at the top of the screen, and selecting the 'about' option)
the 'library' Files:
// the default library files:
<include ref="English.aslx" />
</include ref="Core.aslx" />
these are the files that are used to build-up ('initialized') your game, BEFORE the rest of your stuff from the 'asl' tag block's coding is put into the game. Quest's underlying engine is very powerful, as it uses a bunch of library files, so if you're a good programmer, you can even create your own custom user-level engine! Look at the 'english.aslx' and the numerous individual 'core' files in the quest folder (the 'core.aslx' is just a hub file to link to all the numerous individual 'core' files in the quest folder).
the order (top:first, bottom:last) matters here, as this is how your game is 'initialized' (built-up), as maybe you're familiar already with if you've tried having/using lots of mods at the same time for other games (and there's also the issue of compatibility amongst them, lol).
here's how to create a library file:
(they have/use the same 'xxx.aslx' extension as your game files: 'xxx.aslx')
<library>
// your code, which will be used to initialize (build-up your game), before your game file's own code is used.
// this code can be as simple as a single Object to a combat system+GUI-Editor-controls (such as Pixie's combat 2.0/3.0 library file) to translation to another human-language to an entire new engine
// so, think of a library file as like a 'mod', 'patch', and/or 'xpac' for your game (or even a user-level engine itself for your game).
</library>
the special 'game' GAME SETTINGS (and global controls and etc stuff) Object:
this too likely has to come after the 'include ref' tag lines
<game name="NAME_OF_YOUR_GAME">
<gameid>SOME_ALGORITHM_GENERATED_RANDOM_HASH/STRING</gameid>
<version>1.0</version>
<firstpublished>2017</firstpublished>
<category>RPG</category>
<attr name="start" type="script">
// this built-in 'start' Script Attribute is the very first thing run/fired/activated/executed when your game starts
</attr>
</game>
the rest of your content: Objects, Verbs, Functions, Turnscripts, Timers, Object Types, etc ( http://docs.textadventures.co.uk/quest/elements/ )
and note that the underlying engine has some requirements:
http://docs.textadventures.co.uk/quest/asl_requirements.html (mostly for programming trying to create their own engines and/or doing translating into other human-languages, or why quest isn't working --- as you accidentally don't have a 'player' Player Object in a Room Object due to deleting, it for examples)
also note that over the versions, the coding structure/format/syntax has changed (mainly the List/Dictionary Attribute's code syntax/format/structure) a bit (so old code doesn't work any longer and has to be updated and also remember you got to change the: <asl version="###">, to match with the 'quest.exe' too
also, note that over the versions more and more GUI/Editor Tabs have been added... cluttering it up to much, so now by default many of them are toggled off/hidden, which you have to toggle them back on to see them:
http://docs.textadventures.co.uk/quest/upgrade_notes.html
ask if you've got questions about anything or if need help with anything or whatever you might need....
hegemonkhan
18 Mar 2017, 22:37P.S.
to see/get-at your (entire/full) game code:
-
just right click on your 'xxx.aslx' file and open it with a text editor software (notepad, wordpad, notepad++, Apple: texteditor, etc)
-
in the GUI/Editor, at the top of the screen in the menu bar, is a notepaper-like button, between the 'play' and 'help buttons. This notepaper-like button is a toggle between the GUI/editor mode and the Code View mode. Note that there's also on the 'add new script' buttons' windows that pop up in the middle of the screen, which the scripting editing controls, have notepaper-like buttons too, these allow you to go into code just for this local 'add new script' scripting (it is NOT your entire game code).
if you're interested in learning to code, I'd highly recommend downloading this much more advanced text editor:
notepad++ ( https://notepad-plus-plus.org/ )
as it has a lot of useful editing features (that I still need to learn to use... myself, lol) and even more impotantly, has most of the programming languages, which you can select via the menu bar at the top of the screen, under 'languages', and it'll color code the lines for you, making it easier to read, write, and troubleshoot your/others' code.
a really good site for software (not just for programming software):
https://ninite.com/
and if you're ready/more serious (interested in learning the main programming languages, such as: C++, Java, Python), then you'll obviously want to get the IDEs/SDKs for them, so you can run/test/compile/debug your programs/code.
and there's also tons fo sites/forums for coding/programming too, such as:
https://www.codecademy.com/