Jump to content

Zer0

Elite user
  • Posts

    213
  • Joined

  • Last visited

Reputation Activity

  1. Like
    Zer0 got a reaction from libai in Calling for developers and testers   
    Due to the lack of free available third party products in the store (plugins, fight classes, grinders, questers), I have decided to gather developers and testers under an umbrella project called "Project Wholesome".
    The goal of Project Wholesome is to develop, test, and freely share wRobot products. All the code created under the project will be transparent, open-source, and then released in the store for free. I insist on the fact that not a single line of code released under Project Wholesome  will be sold for profit. We already have a few people working together on fight classes and on profile creation.
    Developers : You want to help the community grow and participate in providing quality products or you want to learn how to create plugins, fight classes and profiles. You are willing to share your knowledge and your code to others. You are aware that you are not in for the money. You will take testers' feedback into account to polish your product. Once you finish a product, you will release it for free in the store, although you can call for donations on the product page. 
    Testers : You will have access to unfinished/beta products from our team under the condition that you provide active feedback through bug reports in the discord channel. You are willing to treat developers with respect and patience, keeping in mind that they are providing a service for free.
    Project Wholesome is all about trust, and keeping wRobot alive. We start small, setting realistic goals, but we intend to create a momentum and keep it growing as much as possible. If you are interested, feel free to join our channel.

    https://discord.gg/NEq4VA6
  2. Like
    Zer0 got a reaction from Jokerloker in Video tutorial - Create a product from scratch   
  3. Like
    Zer0 reacted to Matenia in FNV's Flightmaster and quest profile source code   
    Dear community,
    I just found, I still have access to some workspaces via bitbucket (where I barely ever log in).
    Therefore, I'm sharing the original source as it was last commited by him here. I don't know if it's different from what was already uploaded or anything. That's why I'm sharing it in the developer forums and not plugins/quester.
    Last commits are from early 2018.
    mxsbt-vanillaflightmaster-dbcc4a5bd0e7.zip fnv316quester-quester-1-40-71d751b8482d.zip
  4. Like
    Zer0 reacted to Matenia in Endless TBC   
    Generally, they edit the executable. This is what I've done to TBC to fix nameplate distance, FoV patches and iirc some specific condition Lua edits so I could use secure functions in pre-approved patches.
    WoW loads every patch-*.mpq file in your Data folder. This is how you add assets to the game or overwrite existing ones. You can take the structure that exists and whichever patch loads last will overwrite every previous file. It's generally how you patch talent trees, spells, the UI, etc.
    It's fairly straight forward and just DBC patching, which is what servers already use to largely validate spells anyway. So you can then extract DBC and maps (also modifiable) with the existing tools and your server will treat the spells just like the client "knows" them. Certain scripts and hacks for spells will still be required - DBC doesn't contain all the necessary info.
    For maps, it'll just generate paths via a pathing library (forget what it's called, haven't worked on WoW servers in ages), so any modified map will just as the client sees it.
  5. Like
    Zer0 got a reaction from bobsagettt in Endless TBC   
    As Matenia said, from their website
    I'm quite surprised they would use a wotlk client for a TBC server and I'd be very curious to know what these "patches" do exactly.
    As for the Wholesome TBC Fight class, I can confirm that it works on a regular wotlk client. No idea about the endless one. You should probably test it with the trial version.
  6. Thanks
    Zer0 got a reaction from happiness7 in Video tutorial - Create a product from scratch   
  7. Like
    Zer0 got a reaction from happiness7 in Properly kill threads   
    That's normal behaviour.
    If you want to control the life cycle of a thread you have created, you need to keep track of it by assigning it to a variable. This way you can start it in Initialize() and then Stop it in Dispose()
    // Define the thread and assign it to a variable Thread myThread = new Thread(() => { }); // Start the thread myThread.Start(); // Stop the thread myThread.Abort();  
  8. Thanks
    Zer0 got a reaction from Droidz in Relogger freezes client during login screen   
    I have just tried with a brand new WRobot install and still had the freeze on login screen, even with one single instance. 
    But since you told me you weren't able to reproduce the bug, I thought it might come from my WoW client, so I tried with another one that was sitting on my computer, the client from Sunwell. No more freezes. Just to confirm I tried to launch my 5 instances with this client about 15 times and had no freeze. So that's it, the problem was the WoW client. Big relief. Thanks for your help.
    If anyone has this issue, try downloading another WoW client.
  9. Like
    Zer0 got a reaction from jiraiyasm in can't start wrobot   
    Try and delete the Party settings file in WRobot/Settings of your character/realm
  10. Thanks
    Zer0 got a reaction from libai in How to avoid boss AOE in fight ?   
    The  reason your character only moves a little step is because you're still on the fight thread, so your code only executes for one fight loop iteration. The next iteration, you're back on the normal fight loop which forces you to get in your fight class range.
    There are two ways I know to prevent this.
    1 - Lock the thread in your method. Which in your case would mean calling MovementManager.Go(pathList); and the next line, lock the thread in a while (MovementManager.InMovement) loop. I wouldn't necessary recommend this, because you're blocking the entire fight loop and you will need mutliple conditions to set it right.
    2 - Cancel the fight event. This is my preferred option, but it's more complicated to set up. The code Nax has linked you is one I've written. It uses a manager that listens to multiple events.
    On the ObjectManagerEvents.OnObjectManagerPulsed event, I check and record a list of all the AOEs present in the object manager range.
    On MovementEvents.OnMovementPulse and MovementEvents.OnMoveToPulse I make sure I don't walk into an AOE, and make sure I never cancel an escape
    On FightEvents.OnFightStart, I make sure I don't start any fight during an escape
    This code doesn't really fit your need, because it avoids AOEs that stand on the ground (like a puddle of poison), and uses a "grid" to look for a safe position. In your case, you react to a single action.
    What you need to do is:
    - Detect the moment you need to escape.
    - Cancel the current fight, using cancelable.Cancel = true;
    - Calculate a safe route.
    - Turn an escape flag to true (a simple boolean)
    - Make sure you don't start a new fight during the escape using your flag
    - Turn back the flag to false when your safe condition is met
  11. Like
    Zer0 reacted to Matenia in Target Mana Percentage condition   
    Thanks, I changed the OP. I honestly hadn't touched WoW in years and only vaguely remembered that in some expansions, it already returns in percentage
  12. Like
    Zer0 reacted to Evaexe in Video tutorial - Create a product from scratch   
    Imo you'r a genius !!

    French :
    Merci Zero pour ton travail, j'apprend le c# sur Wrobot, et t'est 2 video tuto sont merveilleuse !
    Engl :
    Thanks Zero for u work, i learn c# on Wrobot, and ur 2vid are perfect for me
  13. Thanks
    Zer0 got a reaction from Nax in How to avoid boss AOE in fight ?   
    The  reason your character only moves a little step is because you're still on the fight thread, so your code only executes for one fight loop iteration. The next iteration, you're back on the normal fight loop which forces you to get in your fight class range.
    There are two ways I know to prevent this.
    1 - Lock the thread in your method. Which in your case would mean calling MovementManager.Go(pathList); and the next line, lock the thread in a while (MovementManager.InMovement) loop. I wouldn't necessary recommend this, because you're blocking the entire fight loop and you will need mutliple conditions to set it right.
    2 - Cancel the fight event. This is my preferred option, but it's more complicated to set up. The code Nax has linked you is one I've written. It uses a manager that listens to multiple events.
    On the ObjectManagerEvents.OnObjectManagerPulsed event, I check and record a list of all the AOEs present in the object manager range.
    On MovementEvents.OnMovementPulse and MovementEvents.OnMoveToPulse I make sure I don't walk into an AOE, and make sure I never cancel an escape
    On FightEvents.OnFightStart, I make sure I don't start any fight during an escape
    This code doesn't really fit your need, because it avoids AOEs that stand on the ground (like a puddle of poison), and uses a "grid" to look for a safe position. In your case, you react to a single action.
    What you need to do is:
    - Detect the moment you need to escape.
    - Cancel the current fight, using cancelable.Cancel = true;
    - Calculate a safe route.
    - Turn an escape flag to true (a simple boolean)
    - Make sure you don't start a new fight during the escape using your flag
    - Turn back the flag to false when your safe condition is met
  14. Thanks
    Zer0 got a reaction from Marsbar in Video tutorial - Create a plugin from scratch   
    Hi guys, I've created a video showing how to create a C# plugin from scratch. If you have questions or need more info, don't hesitate to ask.
     
     
  15. Thanks
    Zer0 got a reaction from Marsbar in Video tutorial - Create a product from scratch   
  16. Thanks
    Zer0 got a reaction from Zan in Video tutorial - Create a product from scratch   
  17. Thanks
    Zer0 got a reaction from Droidz in Video tutorial - Create a product from scratch   
  18. Like
    Zer0 got a reaction from DestroyedSoul in Video tutorial - Create a plugin from scratch   
    Hi guys, I've created a video showing how to create a C# plugin from scratch. If you have questions or need more info, don't hesitate to ask.
     
     
  19. Like
    Zer0 reacted to Droidz in TraceLine.TraceLineGo cache?   
    Hi, I added method TraceLine.ClearCache() (wait next update)
  20. Like
    Zer0 got a reaction from Matenia in Video tutorial - Create a plugin from scratch   
    Hi guys, I've created a video showing how to create a C# plugin from scratch. If you have questions or need more info, don't hesitate to ask.
     
     
  21. Thanks
    Zer0 got a reaction from Droidz in Video tutorial - Create a plugin from scratch   
    Hi guys, I've created a video showing how to create a C# plugin from scratch. If you have questions or need more info, don't hesitate to ask.
     
     
  22. Like
    Zer0 got a reaction from Talamin in Video tutorial - Create a plugin from scratch   
    Hi guys, I've created a video showing how to create a C# plugin from scratch. If you have questions or need more info, don't hesitate to ask.
     
     
  23. Thanks
    Zer0 reacted to Droidz in Pathfinder Z coordinate tolerance   
    I released update (only for Wotlk)
  24. Like
    Zer0 reacted to MrCeeJ in [Free] Basic Plugin for handing in Damaged Necklaces for Jewelcrafter tokens (WOTLK) [Source Included]   
    So after grinding for a while in northrend you will probably have hundreds of these, if you actually want to turn them in yourself it can take a long time, so I wrote a little plugin to do it for you. You need the Damaged Necklaces and Gems in your inventory, and need to be near the Grand Master trainer in Dalaran in order to spam turn them in. To use the plugin just save it in your plugins folder, turn on WRotation and hit go. Some plugins can interfere with it (when they pause the bot) but it should be ok, you can always turn them off while running it.
     
    Finally here is the source code, feel free to give me suggestions to make it better, I just hacked away using the API until it worked, so I am sure there are better ways of doing things, so happy to take suggestions and improve it (which is really why I'm posting it here).
     
    The source is also attached for easy downloading.
     
    Have fun 🙂
     
    using System; using robotManager.Helpful; using wManager.Wow.Helpers; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.IO; using System.Linq; using System.Reflection; using System.Threading; using robotManager.FiniteStateMachine; using robotManager.Products; using Timer = robotManager.Helpful.Timer; using wManager.Plugin; using wManager.Wow.Bot.States; using wManager.Wow.Enums; using wManager.Wow.ObjectManager; using wManager.Wow.Class; public class Main : wManager.Plugin.IPlugin { public void Initialize() { Logging.Write("JCTokenTurnIn: Started."); MakeAllTokens(); } private void MakeAllTokens(){ bool crafting = true; int count = 0; while(crafting) { if (HaveRepairedItem()) { TurnIn(); count++; } else if (HaveQuest()){ RepairItem(); } else if (HaveItems()) { AcceptQuest(); } else { crafting = false; } } Logging.Write("JCTokenTurnIn: Finished, tokens made: "+count); } private bool HaveRepairedItem() { return HaveItemId(43298); } private void TurnIn() { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(wManager.Wow.ObjectManager.ObjectManager.Me.Position, 28701); System.Threading.Thread.Sleep(128); Quest.SelectGossipActiveQuest(1); System.Threading.Thread.Sleep(128); Quest.CompleteQuest(); System.Threading.Thread.Sleep(256); } private bool HaveQuest() { return HaveItemId(43299); } private void RepairItem() { foreach (WoWItem item in Bag.GetBagItem()) { ItemInfo info = item.GetItemInfo; int ItemId = getId(info.ItemLink); if (ItemId == 43299) { List<int> bagAndSlot = Bag.GetItemContainerBagIdAndSlot(info.ItemName); Lua.LuaDoString("UseContainerItem(" + bagAndSlot[0] + "," + bagAndSlot[1] + ")"); System.Threading.Thread.Sleep(12500); return; } } } private bool HaveItems() { return HaveItemId(43297) && HaveItemId(36923); } private void AcceptQuest() { foreach (WoWItem item in Bag.GetBagItem()) { ItemInfo info = item.GetItemInfo; int ItemId = getId(info.ItemLink); if (ItemId == 43297) { List<int> bagAndSlot = Bag.GetItemContainerBagIdAndSlot(info.ItemName); Lua.LuaDoString("UseContainerItem(" + bagAndSlot[0] + "," + bagAndSlot[1] + ")"); Lua.LuaDoString("AcceptQuest()"); } } } private bool HaveItemId(int Id) { foreach (WoWItem item in Bag.GetBagItem()) { ItemInfo info = item.GetItemInfo; int ItemId = getId(info.ItemLink); if (ItemId == Id) { return true; } } return false; } private int getId(String itemLink){ String pattern = "Hitem:"; int index = itemLink.IndexOf(pattern); return Int32.Parse(itemLink.Substring(index+6).Split(':')[0]); } public void Settings() {} public void Dispose() { Logging.Write("JCTokenTurnIn: Stopped."); } }  
    JCTokenTurnIn.cs
  25. Thanks
    Zer0 reacted to Droidz in TBC - stack overflow (table too big to unpack)   
    Hi,
    The bot uses unpack Lua function only to extract Lua events.
    When you catch LuaEvent does your code take time ? (maybe try to lock one thread to try to reproduce the problem, if it's the problem try to run the slow code in a new thread. In dungeons, he has probably more events that in open world).
    You can also try to put lower value at :
    wManager.wManagerSetting.CurrentSetting.EventsLuaWithArgsWaitTime wManager.Wow.Helpers.EventsLua.RefreshMs (~150 by default)
×
×
  • Create New...