[CF-Devel] Client side improvements

crossfire-devel at archives.real-time.com crossfire-devel at archives.real-time.com
Sun Nov 9 19:27:23 CST 2003


Adam Ashenfelter wrote:
>
     
      I usualy use the gtk client, but if the common client can be updated it would 
     
     >
     
      be better in the long run.
     
     >
     
     
     >
     
      As far as scipting languages are concerned, I think perl/python are overkill 
     
     >
     
      for the client side.  Some simple if, else, while, for statements would be 
     
     >
     
      nice. The 'if' statement should be able to check success.
     
     >
     
     
     >
     
      if (apply health potion)
     
     >
     
      else 
     
     >
     
      cast heal
     
     >
     
      endif
     
     
  Well, it depends on what you mean by success.

  If you mean success in that we find a matching object and send it to the 
server or process, that is easy.

  If you mean success in that the server said it succeeded, what is much more 
difficult due to the time delay involved (this applies more to casting spells, 
where you might fumble it for example - there will definately be some lag 
between the client sending the command and the server getting the chance to 
execute it.

>
     
     
     >
     
     
     >
     
      Probably the best way to automate the client that would be easy for everybody 
     
     >
     
      to use would be a trigger mechanism.  So I can add a trigger that runs the 
     
     >
     
      above script whenever my hitpoints fall below a certain point.  The interface 
     
     >
     
      would be similar to setting up shortcut keys.
     
     
  Or it may be more flexible for the script to run every tick, and the script 
itself has its conditions and what to do.

  I say this in that if we start having C code in the client that is the 
condition for running the script, it starts to make more sense to just have 
likely actions of what to do when that happens, also in C code.

  One could for example have something like a 'hp < 20%' check in C code, but 
the client then has the list of objects/spells to cast (in order of preference) 
when that happens.  Eg, have a little interface where you drag the 
potions/spells/whatever to for order to apply.  When all of the first one run 
it, everything else moves up.

  But then I start having other concerns - under such a mechanism, players might 
start to ask 'well, I had this script set to apply healing potions, and I still 
had healing potions, yet I still died due to lack of hp'.  And of course the 
real reason that happened is lag or whatever else, but try to start explaining 
that to players since it woudl appear like a built in feature which should do 
what you want to do.

  Anyways, if you had a script that was called every tick, and it had some 
number of preset known variables (hp, sp, grace, etc) then you could start doing 
things like:

  if (hp < 20) { do healing stuff }
  if (sp < 20) { do sp regen stuff}
  if (grace < 20) {do grace regen stuff }

  and so in, without having to insert hooks for all that into the client itself 
- the script itself becomes its own hook so to speak.

  This also has an interesting idea in that you can then have commands to run a 
special script instead of the normal one, eg, a 'prayer' regen script:

  if (grace > maxgrace) exit 1
  else { do praying; exit 0}

  If the client sees the exit 1, it then stops running that script and then goes 
back to running the default script or something

>
     
     
     >
     
     
     >
     
      As for other improvements to the client,  a command history would be nice.  So 
     
     >
     
      up and down arrow in the command window would cycle back and forth through 
     
     >
     
      history.
     
     
  That already exists for the gtk client.

>
     
     
     >
     
      Another nice feature to have (I'm not sure this is possible in the client)  
     
     >
     
      would be a more mud like command language.  For instance take 'apply', and 
     
     >
     
      create more specific commands (eat, drink, enter/go,wear, wield,read,etc).  
     
     >
     
      They do the same exact thing as apply, but can only target certain item 
     
     >
     
      types.  For example, a corpse is on the exit, I could use 'go' on the exit, 
     
     >
     
      and I apply the exit instead of the corpse.  Currently, when I'm in a hurry 
     
     >
     
      to leave a room, I sometimes eat a corpse.  Also some of the skills should 
     
     >
     
      have a command (ie,disarm,hide,pick,steal, meditate, etc).
     
     
  Well, that later case is really just binding keys to them.  I suppose command 
aliases coudl also be done also, but not sure how bug adeal that really is (as 
said, I'd expect players to just bind keys to them).

  That said, apply of 'meta' types coudl be done, eg, 'apply food' vs 'apply 
floor', etc.  The client could key in on the client types or something on what 
it thinks is food (eg, it wouldn't be perfect, as that booze could be poisonous 
or something).



_______________________________________________
crossfire-devel mailing list
     
     crossfire-devel at lists.real-time.com
     
     
     https://mailman.real-time.com/mailman/listinfo/crossfire-devel
     
     
    


More information about the crossfire mailing list