Jump to content

Seminko

Members
  • Posts

    225
  • Joined

  • Last visited

Everything posted by Seminko

  1. Version 1.1

    42 downloads

    Why? Because the AH cut is too damn high! ...and stuff... Sometimes when my grind session is over I like to just sell all the good stuff that dropped that day. However putting it up on the AH only to find out it didn't sell is too damn expensive, especially blue / epax gear. So what do you do? You spam trade. It's tedious. Constantly posting and checking for replies. This plugin does that for you. I guess this would also be good for advertising a profession like Enchanting where you cannot sell your products to the AH directly (in vanilla). General info / what can it do? It automatically posts one or more of the five available messages It posts in an interval you set (randomizable) It can post to General, Trade, World or Yell, or all of them at the same time It can play a sound on whisper + you can set the sound yourself right in the settings So let's get ourselves familiar with the settings. Channels to be spammed pretty self explanatory, put true if you want to post in this channel Notifications Play sound on whisper? - set to true if you want to be notified on whisper What sound to play? - put in the WAV file name you want to be used as notification - do not put in the extension, just the file name as seen in the settings. IMPORTANT: the WAV file needs to be in you Plugins folder! Spam interval How often to spam (seconds) - again, self explanatory (the keyword here is seconds, not miliseconds) Random interval (seconds) - I guess it will be best explained on an example. If we set it to spam every 100 seconds and we set the random interval to 10, the bot will pick a random interval between 90 and 110 seconds. If we set it to 25, random value between 75 and 125. PRO Mode - we will get back to it at the end for the sake of context. Message 1 - 5 Prefix - First part of the message - in other words, text before the item link. (can be WTS / WTB etc as seen in my screenshot in Message 1 and 2) Item (name or ID) - item we want to link. Due to the game limitation item names cannot always be used. So when do we use what? if you have the item in your invetory, you can use the item name OR itemID, whichever you prefer. if you don't have the item in your inventory you have to use the itemID (I pressume everyone knows this but I made this to be as noob-proof as possible, so here goes --> if you don't know the itemID, you just go to http://db.vanillagaming.org/ or http://www.wowhead.com/, search for the item and check the web address for a string like this: item=19019 (oh, the memes, I love you Barrens chat) and that number is your itemID. You can see it used in my screenshot in Message 3 - 5. ItemName of the Monkey/Eagle etc are problematic since the "ot the Animal" part of the item is considered similar to an enchant, see Final notes. Suffix - Last part of the message - in other words, text after the item link (can be the price etc etc, you know best) USE THIS MESSAGE - True = will be sent, False = will not be sent but will be kept in the setting ready for future use Now back to PRO Mode - after I made this I realized that sometimes you want to link multiple items in one message and/or things like spells, profession links etc, and since I made this for me really, I didn't want to spend TOO much time rewriting the code so I came up with PRO mode compromise If PRO Mode is set to true only the prefix part of each message will be taken into account, others are disregarded even if filled in Since we will be using only one field to fill out the whole string you are responsible for the item/spell links. Examples: PRO Mode false - you want to send this message: 'Get your VERY own [Pet Rock] for just 9.99G!', you would go Prefix: 'Get your VERY own', Item: '20030' (or just Pet Rock if it's in your inventory), Suffix: 'for just 9.99G!' PRO Mode true - the same message would be put only in the Prefix but this time in this format: 'Get your VERY own \124cff9d9d9d\124Hitem:20030\124h[Pet Rock]\124h\124r for just 9.99G!' The link can again be grabbed on the wow sites, just look for Link - Ingame link and get it out of the DEFAULT_CHAT_FRAME:AddMessage function. Also, found out that you can scrap the zeros in 124Hitem:20030:0:0:0:0:0:0:0:0 which represent enchants, sockets etc and the item will still be posted. This is good for conserving character space - more on that in the final notes. Note: if you scrap the first part - \124cff9d9d9d\ - which represents the rarity the item will not be posted to chat, despite the fact that it will print using DEFAULT_CHAT_FRAME:AddMessage. Strange... The other good thing about this (I guess) is that it messes up AUX. When you remove the zeros AUX will not recognize the item and will not show its value :-P. Final notes: I tried to proof this all the way through. Everytime there is something out of the ordinary, the plugin will not start and a Debug line will be written in the Log - have it enabled. Note that a standard message can only contain 255 characters, hence the above mentioned char space conservation. There is a space after the prefix and item strings. You don't have to add it manually. You don't have to fill in all the three sections (prefix, item, suffix), if you don't want to link anything, just put everything in the Prefix even with PRO mode deactivated. I added Thread.Sleep(150); after each message because when I had it set to 50 and below for some reason it sometimes only posted [] without the item name, even though it was clickable. When you have a custom item, ie with enchants or for example ItemName of the Monkey, you will have to use PRO Mode to add it manually to the string (of the Monkey/Eagle etc, is the second zero I believe). Yes, I could have made a custom GUI that would grab items directly from you bags for you to choose from in a dropdown, and I did try, but failed miserably. Make sure that General and Trade are in the standard order. (if they're not and you don't want to change it in game, just go in and update it in the Spammer() method at the end of the SendChatMessage). World channel can be on any ID. 1. General 2. Trade Before posting to World, join it first just to be sure everything is alright. If you're not joined in World the bot will join it for you (added it this morning) but for some reason it's kind of wonky. It seems that it takes the game some time to recognize you joined. And the time frame varies (put in a full second of sleep, so hopefully that fixes things). If you have any questions or receive any errors just let me know. I tested it but maybe not as thoroughly so I can say I'm 100% sure.
  2. I use timer for these. So basically this: if (ItemsManager.HasItemById(5514) && !ObjectManager.Me.IsMounted && ObjectManager.Me.ManaPercentage < 15 && (_timer == null || _timer.IsReady)) { ItemsManager.UseItem(5514); _timer = new Timer(CastEverySeconds * 1000); Logging.WriteDebug("Using Mana Agate"); Thread.Sleep(Usefuls.Latency + 1500); }
  3. Sure thing, but that's an old code. ;) Now I would not "hardcode" abilities into an OnFightLoop since it might mess with your FC.
  4. Let us know if it works for you Lockem.
  5. Yea, that is my bad. Was copying stuff from my other FCs :) Let me update the original reply. Thx for correcting me.
  6. You need an OnFightLoop fight event. I'm not sure whether this is the correct way to handle events but it's the way I could come up with, since my knowledge of Csharp is very limited still... BUT, what I do is put the OnFightLoop event in a method and call it during initialization. Once it is called the events "are recognized" and will fire everytime you are in a fight loop. Disclaimer: this is not tested, put this together just now... public void TargetSwitcher() // needs to be called just once, ie during Initialize { FightEvents.OnFightLoop += (unit, cancelable) => { // this code will loop everytime you are fighting List<WoWUnit> attackers = ObjectManager.GetUnitAttackPlayer(); // gets all units attacking you if (attackers.Count > 1) // if you are attacked by more than one mob { Logging.WriteDebug("More than 1 attackers detected."); //WoWUnit highestHP = attackers.OrderBy(uo => uo.HealthPercent).LastOrDefault(); // sort the list based on HP from lowest to highest, pick highest WoWUnit lowestHP = attackers.OrderBy(ou => ou.HealthPercent).FirstOrDefault(); // sort the list based on HP from lowest to highest, pick lowest if (lowestHP != null && lowestHP.IsValid && lowestHP.IsAlive && !lowestHP.IsMyTarget) // if the lowest hp mob is valid, alive and NOT your current target { cancelable.Cancel = true; // not TOO sure about this one haha Interact.InteractGameObject(lowestHP.GetBaseAddress); // switch to it Fight.StartFight(lowestHP.GetBaseAddress); // start fighting it Logging.WriteDebug("Switched to lowestHP target."); } } }; } As a bonus, check this post by Droidz. Might be usefull too. Let me know how it worked out for ya...
  7. this is quite necro, but have you found out?
  8. Yea, figured it out with the guys on Discord. Let me update the description. Thanks for getting back to me
  9. I would like to report a bug. I've been working on a project non-stop today only to find out that GetIdByName is unreliable and apparently bugged. How to reproduce this bug (tried 4 times in a row and been indeed able to reproduce it): Close WRobot and open it afresh Go to Development Tools Run this code --> it returns 0 var itemID = wManager.Wow.Helpers.ItemsManager.GetIdByName("Pet Rock"); Logging.WriteDebug("[ItemID] " + itemID); Now run this code --> it properly returns "Pet Rock" var NameID = wManager.Wow.Helpers.ItemsManager.GetNameById(20030); Logging.WriteDebug("[NameID] " + NameID); Now run the first code again and it now correctly returns Pet Rock's item id 20030. Anyone who is reading this, I'd appreciate if you tried reproducing it and report back. Since we don't know if it's related to Vanilla only, any WoW version is fine for now. Thanks S. EDIT: tried with Empty Wallet as well... same thing
  10. Strange thing is I have the same version of WRobot and WoW as Brutus (we checked on mumble) and my bot works properly.
  11. 1) don't know how to do that 2) how would one determine if the thing that killed you was a player just based on a string
  12. Is there a way to check what killed me? I'd like the bot to pause for a couple of minutes if a player killed me.
  13. Oh right, didn't think of that, still new and learning :) Yup, it was "Object reference not set to an instance of an object. in Main.FoodManager()" However still don't understand the exception. What is out of place? Everything seems to be set up correctly. How do I pinpoint where the error is?
  14. I'm at the end of my rope. For some reason this code crashes WRobot. I have it in a while loop. Log included... private void FoodManager() { if (sRogueSettings.CurrentSetting.UseBuffFood && sRogueSettings.CurrentSetting.BuffFoodName != null && sRogueSettings.CurrentSetting.BuffFoodBuffName != null) { uint foodID = wManager.Wow.Helpers.ItemsManager.GetIdByName(sRogueSettings.CurrentSetting.BuffFoodName); if (!ObjectManager.Me.HaveBuff(sRogueSettings.CurrentSetting.BuffFoodBuffName) && ItemsManager.HasItemById(foodID) && wManagerSetting.CurrentSetting.FoodName != sRogueSettings.CurrentSetting.BuffFoodName) { wManagerSetting.CurrentSetting.FoodName = sRogueSettings.CurrentSetting.BuffFoodName; } else if (ObjectManager.Me.HaveBuff(sRogueSettings.CurrentSetting.BuffFoodBuffName) && wManagerSetting.CurrentSetting.FoodName != originalFoodSetting) { wManagerSetting.CurrentSetting.FoodName = originalFoodSetting; } } } 10 11 2017 21H30.log.html
  15. I never got around to it as i gave my lock to a friend who leveled it further by hand. But with my current knowledge I would say look into FightEvents.OnFightLoop (or potentialy even FightEvents.OnFightEnd / FightEvents.OnFightStart). Just grab the number of targets you are willing to fight, put them in a list, and then cycle through that list using for example if (!u.HaveBuff("Corruption")) Then Interact.InteractGameObject(u). It also depends on how your fightclass is setup.
  16. The server I play on is not yet on 1.12 however I don't see why it wouldn't.
  17. I will be playing classic!
  18. I was just about to create a thread on this. I suspect they will use quite a bit of modern stuff in Classic. For example API / LUA. If a function get removed since Vanilla I don't pressume they will use it for classic just for the sake of remaining "pure". The thing to realize is that Classic WoW will not be the same game so a new Wrobot version will have to be created. However, I'm keen to hear @Droidz's take on this. Will a new version of Wrobot for Classic have to be created, since (pressumably) the offsets will be all messed up? If so, how long do you estimate it will take to get the bot up and running after release? Thanks mr.D
  19. So I made it work. I basically used a bool inside the OnFightLoop and set it to true when there are more than 1 mob attacking me. While true my BAU combat rotation won't trigger... once the Poly is applied, the bool is set to false and normal combat continues. To wake the sheep just CastSpellByNameLUA.
  20. Well no luck, as I was saying the OnFightLoop and my BAU rotation are being combined together. So instead of casting polymorph, it tries to cast Frostbolt all the time... Dang it...
×
×
  • Create New...