[crossfire] Quest management system proposal
Mark Wedel
mwedel at sonic.net
Tue Aug 8 03:03:06 CDT 2006
Nicolas Weeger (Laposte) wrote:
> The issue I see with this is that it adds Yet Another Scripting Language to
> Crossfire...
> Right now we're using C, autoconf/autotools, LaTeX (documentation - is it
> uptodate, actually??), Perl, Python, NSIS (Windows installer).
Latex stuff could probably go away - I don't know the last time anyone updated
the tex stuff (but to be fair, not sure last time any documentation has been
updated).
>
> Adding Crossfire's Scripting Language would add some complexity, including
> making sure we don't break that, add features mapmakers will want/need, and
> before we know we reimplemented an existing language :)
OTOH, we are talking a very basic scripting language here. If we want to be
technical, we could say the existing message/endmessage stuff if some very very
basic scripting language - its just simple enough that it is easy to for anyone
to use because it has very few options/commands.
>
> What could be done, though: let mapmakers write messages with an extended
> syntax, like you suggested, and have a Python plugin/script handle that
> internally (or handle it in server core, but that's less easier to switch i
> think).
One thought I did have is that the map editor could be modified to make use of
such scripting easier. Have something which says the variable name, whether
that is a player persistent variable or not, what operation to use (<>, =, >=,
etc) and what value to check against.
Likewise, another dialogue/option could be similarly used to set variables.
Not sure, but one issue with the scripts right now is that they live in a
separate directory, so if the map editor creates them (which would be an
option), the map developer would have to know 'also include so and so script'.
> All methods are referenced in http://wiki.metalforge.net/doku.php/cfpython
> True, it could use some examples and such.
But that just lists what you can use in writing a python script.
It doesn't say what scripts may be available for use already and how to use them.
For example, if the method we decide to go for is that we will use scripts to
give out exp, then it probably would make sense to have a generic script that
takes some parameters on what skill and how much exp to add, so you could do
something like:
event_activate give_exp.pyc throwing 6000
(no idea if that is really the correct syntax, but you get the point).
If that is done, then the give_exp.pyc, and other general purpose scripts need
to be well documented so people know about them
That is one advantage of archetypes - while it may be hard to find something,
they are all available in the editor, and the editor provides customized
dialogues based on type. So if there was an exp giving archetype, the editor
file would be modified to ask for the skill to give, how much exp to give, and
perhaps some other parameters (all members of the party, etc).
>
> OTOH, I'm sure a mapmaker not knowing how to write scripts and asking on the
> list or IRC would get some help.
True, but I'm not sure if that is indication of a good design/easy to use system.
Most people want instant gratification - if they have to wait hours or more to
get the answer for something like 'how do I give an exp reward to a character',
they may get a bit discouraged.
And just going forward, it doesn't seem like 'get a developer to help you
write your maps' isn't really the right thing to say. This is why I push for
the idea the common/general purpose operations should be in the core server with
archetype attached to it, so it is easy for people to use.
Of course, an archetype with a script created could be made, with certain
fields of that archetype containing the skill and exp. But then you start to
ask, if we're going to do that, why don't we just write the C code?
More information about the crossfire
mailing list