Jump to content
AC Tool Forums


  • Content Count

  • Joined

  • Last visited

About Lone

  • Rank

Profile Information

  • Gender
    Not Telling

Contact Methods

  • Yahoo
  1. Wabbit, It does not look like you got much of a response to this. I am still using ACTool v5.4.0 with the ACE Emulator on Coldeve. My script exercises mostly Combat, movement with location detection within the world, Item manipulation and identification features. Not so much stuff like vendors and trade windows. The only real bug I have found is the one I mentioned several years ago in the post referenced below. At one point many many years ago I used the http and IRC features and assume those all still work as I have not used them in probably 12+ years. I am curious how your Divide work with AC Companion is progressing? I would be interested in testing that once you are ready. I am a long time AC Player and have written a few decal plugins of my own. One in C++ and another in C#. I took a Pascal class in school many many years ago and am certain I could still read it if needed. I think I even have a copy of a recent version of Delphi somewhere on one of my machines from when I tried to recompile the V5.4.0 code. Thanks for your work in keeping this alive!! Lone PS - I poked around on my server and found a copy of ACTool Companion source which has a lot of comments by Phinius. It is pretty old though. I have attached here in case it can be of any use to you. actoolsmacro-actool-18.zip
  2. Thanks for the reply!! I understand your position and respect it.
  3. I read your post on "EMUs and AC Tool". Most of my old macros and the one Decal Plugin I wrote do work on the PhatAC servers. I use the Thwargle launcher and it seems to work quite well.
  4. Hi,  I have been trying to get logged onto the site for a few months now. Finally got in.   I still use ACTool to macro in Asheron's Call and have been working on a macro to ID weapons and pick up the good ones now that random loot is back in the game (W00T).  The Companion variable for Max Weapon Damage (_iddamage) is not being properly populated. I looked at the source code and found the following:         GlobalData^._iddamage := wObject.Longs(keyDamageType, -1) ;        GlobalData^._iddamagebonus := wObject.Doubles(keyDamageBonus, -1);        GlobalData^._iddamagerange := wObject.Doubles(keyRange, -1);        GlobalData^._iddamagetype := wObject.Longs(keyDamageType, -1);  I think the line for _iddamage should be using keyMaxDamage instead of keyDamageType. (Looks like it may be a cut paste error from _iddamgetype.)  I downloaded the latest free starter version of Delphi, 10.2 and the source code and tried to fix it myself. I loaded the project, copied over the memoplus modules from the 5.4.0 version but there is more stuff in there to update for the latest Delphi than just memoplus and I don't know Delphi. I fixed a few things but when I got to problems with DsgnIntf and read about splitting your code for design versus runtime, thought it was more than I could easily figure out.  Thanks for any consideration you may give to fixing this one little bug.  Oh, I also noticed _idspellids and _idspelltypes are not being populated and are just being set to := ' '; I know this one is probably more involved than fixing _iddamge but thought I would ask.  PS - I see you are working on a new version. Will the new version have decal support like the old version?  Thanks again, Lone
  5. I used to be able to run a macro in test mode and have it pop up boxes that requested certian pieces of information. I think it was things like current mana, stamina, health, _Seleceted, that kind of stuff. I have not done that in a while. I am working on a new macro and am trying to test it without AC/Decal and am not getting the popup boxes. I am working with _idburden, _idvalue, _idworkmanship, _Selected and a few others. When I test my macro, it just blasts through all my tests, does not ask for any of these values like it used to. Does AC Tool still support this funtionality? I looked through the test menu and could not find anything that looked like it would turn that kind of funtionality on or off.
  6. Lone

    IRC spam

    I wrote a command to control IRC Spamming. ////////////////////////////////////////////////////// // IrcOut /////////////////////////////////////////////////////// Procedure IrcOut using var1  FormatDateTime ITime, {Month}/{Day}/{Year} {Hour}:{Minute}:{Second}, mm/dd hh:nn:ss  Compute irctimediff = {ElapsedMSec} - $irctime  If $irctimediff > $ircthrottle   SetConst irctime = {ElapsedMSec}   Irc $ITime $var1  End End I use the following commands and they all work:
  7. Within Decall there is something called: <DecalPlugins::IInputBuffer> Â Â g_pInputBuffer; With this you can do things like: Â g_pInputBuffer->Clear(); Â g_pInputBuffer->TypeText(_bstr_t(_T("{ENTER}"))); Â g_pInputBuffer->Delay(100,0); Â g_pInputBuffer->TypeText(_bstr_t(_T("/ACTCMD Your command here"))); Â g_pInputBuffer->Delay(100,0); Â g_pInputBuffer->TypeText(_bstr_t(_T("{ENTER}"))); Â g_pInputBuffer->Delay(100,0); Â g_pInputBuffer->TypeText(_bstr_t(_T("{ENTER}"))); Â g_pInputBuffer->Delay(100,0); Â g_pInputBuffer->TypeText(_bstr_t(_T("/ACTCMD Your next command here"))); Â g_pInputBuffer->Delay(100,0); Â g_pInputBuffer->TypeText(_bstr_t(_T("{ENTER}"))); Â g_pInputBuffer->Run(); I use this method to send commands to my macro from decal this way. The problem I see with sending multiple commands is what Ipa pointed out. It will process them only when processmessages is fired. My experince is that you can not stack them. If you send the next one before the previous has executed, one of them gets lost. I have not looked too closely at the ACT code on this so I am just speaking on my expeirence with using it, not from having looked at the code and knowing how it works. The Delay between commands would have to be large enough for the command to complete before the next command is sent. I am not sure if the delays built into InputBuffer cause the client to halt or not. I would guess that it does. So, all that being said: you may have to build a queue of requests and then provide the timing to send them to ACT within your plugin. That alternative is to have a single ACTCMD to handle your plugin communications and pass all requests via a single message and parse them out and let you macro handle the timing. I am sure that there could be some other more elegant solutions I have not thought of as well.
  8. Yes, you could do this. Look at the LoadDecalWorld command. You could set up a timed procedure to loaddecalworld, then scan its contents for what you are looking for. There is a filter command for datasets that might help you limit the scope of your search list.
  9. I will just wait for the new Version of AcTool. I don't want to have to go into my macro and re-write a bunch of stuff for just a few days. It has been running great for months now and I don't want to risk messing it up. Rojon, From what I understand, there was an issue with the pre-release decal where it was not interpreting the Destroy Object messages properly. The result is that things still appear in world when they are actually gone. Thus, shadows in world filter.
  10. Thanks for the heads up guys. I upgraded to the new Decal and WOW, was my macro running SLOW. So, I turned here to see if anyone else was having a similar problem. I am guessing every waitforcursor in my code was waiting the full timeout value. I suppose I will go back to the old version of Decal for a few days. (Or, isn't there a way to set the timeout value? I thought I remembered reading that at one time.) OT: Thanks Cam, Ipa and Ken for all the work you do here.
  11. You do not #include *.cpp files. You #include header files which have a *.h extension. If you want multiple source files (*.cpp files), you add in additional source files to the project. It is up in the menu bars up top somewhere in the Visual C++ IDE. From what I have seen in C++ it is somewhat different than standard C. In standard C, you put common #defines, function prototypes, common typedefs and a few other odd things into include (header files) files. Generally, you never put any code into header files. In C++, I have seen people put some class stuff in header files. Some of this is shared executable classes and the likes. (Or class templates) I am not an expert, nor even a very experienced C++ programer so I am not sure if this is common or not. I try to stay away from putting code in header files. I usually split my code up into multiple source files (*.c or *.cpp) and as I said, put the common defines, prototypes and typedefs into a header file that is then shared between the two source files. If you need access to something defined in another source file, pass it into the funtion that needs it as a parameter. Or, try to keep all funtions that access a particular bit of data in the same source file. In true object oriented programming, you should not need to do that. Data will be encapsulated into the class and your access methods should do all the data creation and manipulation for you. I am not a good enough "object oriented software engineer" to do that quite yet. You don't want to put anything into an include file that will allocate any storage. If you do and you include that header file into multiple source files, you will get the previously declared error message. I hope this helps.
  12. World filter counts everything known in the world. When you put something in your chest that was in your inventory, your client is still aware of it. I think that world filter sometimes misses the destroy object messages and stuff sometimes lingers in world filter even when it is no longer in the world. This is just a personal observation and I have no proof to back up this statement. To only count things on you character, you will need to check its container. I believe your characters GUID is your main pack. Inside that, there are your other packs which are containers also. To scan only your containers you first need to get a list of them. Then iterate by container and get a count that way. I ran into this exact same problem when I started to use world filter. I never did get it completely worked out but got it to the point where I could count what I wanted. I believe things that are just laying around in the world have a container of 0 if I remember correctly. Try the OLE Viewer on the DLL's. That may show you what you are looking for. My Developer Studio will display a pop-up of all the methods or members availalbe for a class pointer when I type it into the editor. I don';t know if thats a feature you can turn on and off or not. I just know it happens. I find it very helpful. It even displays the parms and thier types.
  13. You might be thinking of Visual Decal. That is the only tool that I know of to create/change the Decal GUI. Other than that, you have to create/modify the XML manually. And even with using Visual Decal, it only creates the XML, you still need to add support for all the controls in your plug-in and define all the events in your plug-in manually. Visual Decal creates and external XML file. I am not sure, but I think your framework has the XML defined as a string within your source code. VD may not work for you unless you take the VD output and convert it to an _bstr_t as is done in you source.
  14. Just a couple of comments: The instructions you posted were specific to VC++ 6.0. I believe you are using 7.0 from the sounds of it. It appears that the message you are trying to pick apart has vectors in it. Using a message iterator, you need to get a pointer to the vector. Once you get a pointer to the vector you need to iterate through the vector to get at the data you want. I would suggest that you take GKusnick's advice and look at the CharacterStats.cpp source code. It does exactly what you are wanting to do. I am curious, what information are you trying to get? I have found that most of the information that I have needed is available in charstats.
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and to our Privacy Policy.