MBuy bugged or keyboard-dependant

2004-01-22
2004-01-22
  • It seems that the muby in powerskill buy is either bugged or depends on keyboard mappins (which is probably unneccesary).

    Below is a summary of the bug when using DAOCSkilla 1.78:
    When right-clicking (manually) a merchant which has all the materials needed for a craft the following happens:
    * Text line of the item to purchase is clicked and it becomes yellow (unneccesary step?)
    * Icon of item to purchase is clicked, turning the mouse pointer into said icon
    * [All:] prompt appers in text input window, as if preparing to enter text
    * (this is where everything goes crazy) character starts running in what seems to be autorun mode, mouse-mode is activated
    * Eventually the character insists on running to the forge node

    I have a non-standard keyboard mapping which I think is affecting the mbuy. My guess is that either some keys are being pressed while not in text-input mode ([All:] appears on chat window) or the character is given the order to start running towards forge node before /mbuy has completed.

    Below is my foo.ini profile:
    [Main]
    DefaultMinPurchase=10
    SkillName=Alchemy
    RecipeSkillName=Alchemy
    RecipeRealm=3
    LocaleNodeListName=domalc.nod
    MerchantNodeName=merch
    MerchantName=Taillte MacCann
    ForgeNodeName=table
    HowOrange=4
    AutoQuicbarSlot=2
    AutoDeselectMerchant=1
    AutoStartProgression=1
    UseMBuy=1

     
    • Thomas Paine
      Thomas Paine
      2004-01-22

      Yes the first step is unnecessary but it doesn't matter and makes the code easier to read.  I don't know how a keyboard mapping could mess things up though.  Once it has the item on the icon it simply SendKeys(/mbuy XXX[cr]).  At that point Skilla assumes the buy is going to succeed so it would either continue trying to buy the other materials or return to the forge.

      Is there a reason why just sending /mbuy XXXX wouldn't work with your key bindings?

       
    • I'll take a better look. Will also take a peek at the code.

      One thing that springs to mind is that spacebar is set to autorun with me.

       
      • Thomas Paine
        Thomas Paine
        2004-01-22

        One thing to try would be to close the powerskillbuy window and click the icon yourself, then telnet in and issue the command:
        sendkeys /mbuy 1

        And see if it works.  Seems like it's getting the [cr] but not the /.  I used to have my spacebar mapped to various things (jump, select nearest enemy, and sprint among others) and never had a problem with it.  It just sounds like it's not processing the / and everything after that is just sent to whatever M B U Y and space are mapped to.

         
        • Ok, telnetting in, selecting the icon and doing a "sendkeys /mbuy 1" reproduces the behaviour.

          The slash isn't getting sent or, more likely, isn't activating the chat text input. Thus I go into mouse mode with the "m" and start autorunning with spacebar.

           
          • Thomas Paine
            Thomas Paine
            2004-01-22

            Ok try this.  Go grab the latest daocskilla-test and see if that works.

            If it does not, exit daocskilla and jack up [Main] SendKeysSlashDelay.  Set it to like 1000 or so.  Then restart daocskilla and DAOC.  See if that works.

            Hopefully it will work out of the box though.

             
            • It did not work out of the box. It DID however work somewhat after changing SendKeysSlashDelay. It now seems to be able to purchase the first item with /mbuy but then does not manage to buy the rest before running off to the forge. Any chance the mouse movement and sendkeys are running on seperate threads?

               
              • Thomas Paine
                Thomas Paine
                2004-01-22

                What did you have to up the delay to?

                It seems very odd that it runs off before it buys all the stuff.  They're on the same thead and the code all runs in a line so it shouldn't run off until it is done, unless there's another part of the code triggering the run.  This problem could be created by the fact that the powerskillbuy stuff processes network traffic while buying stuff.  I attempt to prevent the code from being reentrant but it might be sneaking into some other code somewhere.

                However (I'm just kinda thinking out loud right now), I think the only reason he'd run is if executepurchases has exited.  For each material you should at least see:
                the mouse go up to select the item
                wait 1/2 a second
                click the icon
                /mbuy XXX
                wait 1/2 a second

                If the vendor doesn't have an item, it will just exit and run you to the forge (I've just changed this code so it also verifies you've got all the materials too).

                So I'm at a loss as to why that's happening for you.  What kind of frame rate do you have?  Could it be we're moving too fast?

                 
                • I've tried the delay as 1000 and 5000 - seems to give similar results.

                  I'm also running into the same problem when trying to /face a merchant in the autobuy/autocraft sequence. The [All:] prompt appears without anything being entered there. Seems to me that things are happening in a slightly wrong order from what's intended.

                  I have no idea if frame rates are affecting things here, I'm running on a fairly normal system using PPPoE as a connection.