Jump to content

Droidz

Administrators
  • Posts

    12442
  • Joined

  • Last visited

Posts posted by Droidz

  1. I have moved your topic because I have changed permissions of beta tester forum.
     
    This shortcut is created for users that launching wrobot directly in the wrobot folder, it is for this reason than this shortcut is created in wrobot folder.
     
    You can make this shortcut where you want, if he have no key or no launched wow process the program stop on login window (as if you launch wrobot without argument).
  2. great news, and yes, i can launch update with arguments at that time, it would be during preload for the uninstaller however, because update.exe is deleted during uninstallation.

     

    Ok, I'll add option to uninstall in the update.exe

     

    could anyone tell me if im checking the correct key for the install path of world of warcraft, specifically if you are on a 32bit system.

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Blizzard Entertainment\World of Warcraft

    in there is a string "InstallPath" with a value (in my case) of C:\Program Files\World of Warcraft\

     

    so theoritically If I can make a variable of InstallPath and get its value from that registry key, I can then work with it as a directory and move on with creating the shortcuts.

     

    Me I have also (probably old path, I have not update this path) "SOFTWARE\Blizzard Entertainment\World of Warcraft" >  "InstallPath" (get wow folder path).

  3. Droidz, I have somewhat of an idea on how to do this, I need to check if i can add arguments or switches from within the installer, Im not finding a way to do that right now, but what I can do is create a simple bat, using

     

     

     

    And running it as installsilent.cmd.  The /b will run it without a window

     

    I have 1 question and 1 possible issue with doing this,

     

    1st question is after running that screen I have no way of knowing when the 'update' or 'download' that update.exe is doing finishes. so I dont know when to move to the next screen.  because the cmd im making finishes executing after it runs update.exe, what I need to figure out is how to tell when update.exe finishes before I continue to the update success screen in my installer.

     

    This may or may not work out.  I guess I just need to test it.  Otherwise I just need a graphic for the vertical banner, and for the most part my installer is done :)

     

    Installation is finish when Update.exe process is closed, If he are one error, message box shown error by Update.exe.

  4. hey,

     

    fantastic, just let me know which switches to use, Ill get some more work done on this today.  And by option to the folder, do you mean the directory itself, or just the option to add desktop shortcuts.

     

    Option to add desktop shortcuts

     

    This is causing me some problems with uninstall options because the uninstaller built from my compiler only deletes the files included within it, so any files added by running update.exe remain along with the folder tree.  I tried addressing this by using a folder.deletetree(%ProgramFilesFolder%/%AppFolder%) type command, but it doest seem to work.  I then thought about creating a basic batch file that would delete the directory, manually and call the batch file from the uninstaller, then delete the batch when the uninstaller closes or on reboot, but there must be a cleaner way to get this done.

     

    If a silent switch is added to update.exe install/update, I can easily add a page that checks for internet connectivity, then runs the file on a "checking for updates" page depending on the return of the internet connectivity check.

     

    I think I got the directory shortcut added correctly, but giving the user the option whether to add these shortcuts or not is causing some issues, but Im working on ti.

     

     

    You can check if the download server is online if you can load this page: http://download.wrobot.eu/wrobot/bin/updateinfo.php or if you can download this file: http://download.wrobot.eu/wrobot/bin/WRobot.exe or this (xml, list all wrobot download files) : http://download.wrobot.eu/wrobot/bin/update.php 
     
    For uninstall I haven't solution (I don't know what software do you use for make installer), but an batch can be good
  5. Pretty basic for now, but I will edit and elaborate as I find bugs and see fit.

    After launching WRobot, 

    1. Select the Archaeologist plugin from the drop down.

    2. In general settings, and put a mount in both ground and flight, I used the same mount to simplify, in my case Armored Blue Wind Rider, please also take note this is case sensitive, and spelling is extremely important. Save and exit the settings tab.

    3. Ingame, make sure to check show digsites on your map

    4. Click Start on bot

    5. Profit.

    By twizt3dkitty

  6. Hello,

    I have fixed prices of WRobot and CRobot.

    WRobot:

    15 € = 6 months

    24 € = 1 year

    CRobot:

    15 € = 1 year

    I have also advanced on the new website, I'll release the new bot client compatible with the new website in the week (I want add fixes and options on wrobot before release).

  7. Before all, "Packages Manager" is used for auto installing/updating or uninstalling an profile, product or others bot files. The objectif is to install additional files in the bot easy for user.

    How to make link:

    "Packages Manager" works only with zip file.

    "Packages Manager" extract zip at the bot root folder, if you want adding an gatherer profile you need to add in your zip the folders "\Profiles\Gatherer\" and put your profile in the folder.

    Url type:

    wrobot:<UrlToMyFile.zip>  <Packet Name> <My Name> <Active Auto Update>
    Sample with forum bbcode (without auto update):
    [WRP="Fisher bot profile sample"]wrobot.eu/index.php?app=core&module=attach&section=attach&attach_id=3[/WRP]
    (url whitout http://)
    
    Sample with forum bbcode (with auto update):
    [WRPA="Fisher bot profile sample with auto update"]wrobot.eu/index.php?app=core&module=attach&section=attach&attach_id=3[/WRPA]
    (url whitout http://)
    
    Try:

    " target="_blank" title="Fisher bot profile sample">Fisher bot profile sample

    Fisherbot-Sample-Profile.zip

  8. How to activate Pet Battle
     

    The Pet battle option is integrated at Grinder bot, the bot travel your grinder profile and if he have an wild pet near the bot launch the combat. The bot will use the best ability of your pet automatically (depending of your target), if all pets are deads wrobot use resurect spell.


    For activated this option, select Grinder product, click on "Start" button. On the new window checked option "Wild Pets Battle", select an profile and click on the button "Load Profile".

  9. How to create an Fight Class (developer only)



    Fight class using bot API. He is recommanded to use visual studio 12 with framework 4.5 for create an Fight class (add in reference robotManager.dll and wManager.dll).


    WRobot supporting C#, Vb.net code, and dll.

    Sample C# Fight Class for Hunter: (Finite State Machine (Engine)) ( http://pastebin.com/ywQ2VPGr )

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Configuration;
    using System.IO;
    using System.Linq;
    using System.Threading;
    using robotManager;
    using robotManager.FiniteStateMachine;
    using robotManager.Helpful;
    using wManager.Wow.Class;
    using wManager.Wow.Helpers;
    using wManager.Wow.ObjectManager;
    using Timer = robotManager.Helpful.Timer;
    
    public class Main : ICustomClass
    {
        public float Range { get { return 36; } }
    
        private Engine _engine;
        public void Initialize()
        {
            HunterSettings.Load();
            _engine = new Engine(false)
            {
                States = new List<State>
                        {
                             // Pet
                             new PetManager { Priority = 20 },
                             // Defensive
                             new SpellState("Freezing Trap", 13,
                                           context => (ObjectManager.GetUnitAttackPlayer().Count(u => u.GetDistance <= 8) >= 1 && ObjectManager.GetUnitAttackPlayer().Count > 1)),
                             new SpellState("Disengage", 21,
                                           context => (ObjectManager.GetUnitAttackPlayer().Count(u => u.GetDistance <= 8) >= 1)),
                             // Attac multi
                             new SpellState("Multi-Shot", 14,
                                           context => (ObjectManager.GetUnitAttackPlayer().Count() > 1)),
                             new SpellState("Explosive Trap", 14,
                                           context => (ObjectManager.GetUnitAttackPlayer().Count(u => u.GetDistance <= 8) > 1)),
                             // Attac
                             new SpellState("Hunter's Mark", 15,
                                           context => (!ObjectManager.Target.HaveBuff("Hunter's Mark"))),
                             new SpellState("Stampede", 13, context => HunterSettings.CurrentSetting.Stampede),
                             new SpellState("Rapid Fire", 12, context => HunterSettings.CurrentSetting.RapidFire),
                             new SpellState("Kill Shot", 11, context => true),
                             new SpellState("Blink Strike", 10, context => HunterSettings.CurrentSetting.BlinkStrike),
                             new SpellState("Serpent Sting", 9, context => ObjectManager.Me.Focus > 30 && !ObjectManager.Target.HaveBuff("Serpent Sting")),
                             new SpellState("Kill Command", 8, context => ObjectManager.Pet.IsValid && ObjectManager.Pet.IsAlive && ObjectManager.Pet.Position.DistanceTo2D(ObjectManager.Target.Position) < 25),
                             new SpellState("Bestial Wrath", 7, context => true),
                             new SpellState("Dire Beast", 6, context => HunterSettings.CurrentSetting.DireBeast),  
                             new SpellState("Arcane Shot", 5, context => ObjectManager.Me.Focus > 30),
                             new SpellState("Cobra Shot", 4, context =>  ObjectManager.Me.Focus < 25),
                             new SpellState("Readiness", 3, context => HunterSettings.CurrentSetting.Readiness),  
                        }
            };
            _engine.StartEngine(5);
        }
    
        public void Dispose()
        {
            if (_engine != null)
            {
                _engine.StopEngine();
                _engine.States.Clear();
            }
        }
    
        public void ShowConfiguration()
        {
            HunterSettings.Load();
            HunterSettings.CurrentSetting.ToForm();
            HunterSettings.CurrentSetting.Save();
        }
    
        class PetManager : State
        {
            public override int Priority { get; set; }
    
            public override string DisplayName
            {
                get { return "Pet Manager"; }
            }
            Timer _petTimer = new Timer(-1);
            public override bool NeedToRun
            {
                get
                {
                    if (!_petTimer.IsReady)
                        return false;
    
                    if (ObjectManager.Me.IsDeadMe || ObjectManager.Me.IsMounted)
                    {
                        _petTimer = new Timer(1000 * 2);
                        return false;
                    }
                    if (!ObjectManager.Pet.IsValid || ObjectManager.Pet.IsDead)
                        return true;
                    return false;
                }
            }
    
            public override List<State> NextStates
            {
                get { return new List<State>(); }
            }
    
            public override List<State> BeforeStates
            {
                get { return new List<State>(); }
            }
    
            private readonly Spell _revivePet = new Spell("Revive Pet");
            private readonly Spell _callPet = new Spell("Call Pet 1");
    
            public override void Run()
            {
                if (!ObjectManager.Pet.IsValid)
                {
                    _callPet.Launch(true);
                    Thread.Sleep(Usefuls.Latency + 1000);
                }
                if (!ObjectManager.Pet.IsValid || ObjectManager.Pet.IsDead)
                    _revivePet.Launch(true);
    
                _petTimer = new Timer(1000 * 2);
            }
        }
    }
    
    [Serializable]
    public class HunterSettings : Settings
    {
        [Setting]
        [DefaultValue(false)]
        [Category("Beast Mastery")]
        [DisplayName("Rapid Fire")]
        [Description("Use Rapid Fire")]
        public bool RapidFire { get; set; }
    
        [Setting]
        [DefaultValue(false)]
        [Category("Beast Mastery")]
        [DisplayName("Stampede")]
        [Description("Use Stampede")]
        public bool Stampede { get; set; }
    
        [Setting]
        [DefaultValue(false)]
        [Category("Beast Mastery")]
        [DisplayName("Dire Beast")]
        [Description("Use Dire Beast")]
        public bool DireBeast { get; set; }
    
        [Setting]
        [DefaultValue(false)]
        [Category("Beast Mastery")]
        [DisplayName("Readiness")]
        [Description("Use Readiness")]
        public bool Readiness { get; set; }
    
        [Setting]
        [DefaultValue(false)]
        [Category("Beast Mastery")]
        [DisplayName("Blink Strike")]
        [Description("Use Blink Strike")]
        public bool BlinkStrike { get; set; }
    
        private HunterSettings()
        {
            ConfigWinForm(new System.Drawing.Point(400, 400), "Hunter " + Translate.Get("Settings"));
        }
    
        public static HunterSettings CurrentSetting { get; set; }
    
        public bool Save()
        {
            try
            {
                return Save(AdviserFilePathAndName("CustomClass-Hunter", ObjectManager.Me.Name + "." + Usefuls.RealmName));
            }
            catch (Exception e)
            {
                Logging.WriteError("HunterSettings > Save(): " + e);
                return false;
            }
        }
    
        public static bool Load()
        {
            try
            {
                if (File.Exists(AdviserFilePathAndName("CustomClass-Hunter", ObjectManager.Me.Name + "." + Usefuls.RealmName)))
                {
                    CurrentSetting =
                        Load<HunterSettings>(AdviserFilePathAndName("CustomClass-Hunter",
                                                                     ObjectManager.Me.Name + "." + Usefuls.RealmName));
                    return true;
                }
                CurrentSetting = new HunterSettings();
            }
            catch (Exception e)
            {
                Logging.WriteError("HunterSettings > Load(): " + e);
            }
            return false;
        }
    }
    
     
    Another C# Fight Class structure: http://pastebin.com/krBv3QCD )
    using System;
    using System.Threading;
    using System.Windows.Forms;
    using robotManager.Helpful;
    using robotManager.Products;
    using wManager.Wow.Class;
    using wManager.Wow.Enums;
    using wManager.Wow.Helpers;
    using wManager.Wow.ObjectManager;
    using Timer = robotManager.Helpful.Timer;
     
    public class Main : ICustomClass
    {
        public float Range { get { return 4.5f; } }
     
        private bool _isLaunched;
        private ulong _lastTarget;
     
        public void Initialize() // When product started, initialize and launch Fightclass
        {
            _isLaunched = true;
            Logging.Write("[My fightclass] Is initialized.");
            Rotation();
        }
     
        public void Dispose() // When product stopped
        {
            _isLaunched = false;
            Logging.Write("[My fightclass] Stop in progress.");
        }
     
        public void ShowConfiguration() // When use click on Fight class settings
        {
            MessageBox.Show("[My fightclass] No setting for this Fight Class.");
        }
     
     
        // SPELLS:
        // Buff:
        public Spell DeadlyPoison = new Spell("Deadly Poison");
        public Spell Sprint = new Spell("Sprint");
        // Pull:
        public Spell Stealth = new Spell("Stealth");
        // Combat:
        public Spell Garrote = new Spell("Garrote");
        public Spell SliceandDice = new Spell("Slice and Dice");
        public Spell Eviscerate = new Spell("Eviscerate");
        public Timer SliceandDiceTimer = new Timer(); // Timer
     
        internal void Rotation()
        {
            Logging.Write("[My fightclass] Is started.");
            while (_isLaunched)
            {
                try
                {
                    if (!Products.InPause)
                    {
                        if (!ObjectManager.Me.IsDeadMe)
                        {
                            BuffRotation();
     
                            if (Fight.InFight && ObjectManager.Me.Target > 0)
                            {
                                Pull();
                                CombatRotation();
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    Logging.WriteError("[My fightclass] ERROR: " + e);
                }
     
                Thread.Sleep(10); // Pause 10 ms to reduce the CPU usage.
            }
            Logging.Write("[My fightclass] Is now stopped.");
        }
     
        internal void BuffRotation()
        {
            if (ObjectManager.Me.IsMounted)
                return;
     
            // Deadly Poison:
            if (DeadlyPoison.KnownSpell && !DeadlyPoison.HaveBuff && DeadlyPoison.IsSpellUsable && !ObjectManager.Me.GetMove)
            {
                DeadlyPoison.Launch();
                return;
            }
            // Sprint
            if (Sprint.KnownSpell && !ObjectManager.Me.InCombat && ObjectManager.Me.GetMove && Sprint.IsSpellUsable)
            {
                Sprint.Launch();
                return;
            }
        }
        internal void Pull()
        {
            if (ObjectManager.Me.Target == _lastTarget)
                return;
     
            // Stealth:
            if (Stealth.KnownSpell && Stealth.IsSpellUsable && !Stealth.HaveBuff && ObjectManager.Target.Target != ObjectManager.Me.Guid)
            {
                Stealth.Launch();
                _lastTarget = ObjectManager.Me.Target;
            }
        }
     
        internal void CombatRotation()
        {
            // Garrote:
            if (Garrote.IsSpellUsable && Garrote.IsDistanceGood && Garrote.KnownSpell && ObjectManager.Me.HaveBuff(115192))
            {
                Garrote.Launch();
                return;
            }
            // Eviscerate:
            if (Eviscerate.KnownSpell && Eviscerate.IsSpellUsable && Eviscerate.IsDistanceGood && (ObjectManager.Me.ComboPoint > 4 || (SliceandDice.HaveBuff && SliceandDiceTimer.IsReady)))
            {
                Eviscerate.Launch();
                if (SliceandDice.HaveBuff)
                    SliceandDiceTimer = new Timer(1000 * 36);
                return;
            }
        }
    }
    

     

    Sample Vb.net Fight Class base: ( http://pastebin.com/EETxYYi3 )

    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Threading
    Imports robotManager.FiniteStateMachine
    Imports robotManager.Helpful
    Imports wManager.Wow.Class
    Imports wManager.Wow.Helpers
    Imports wManager.Wow.ObjectManager
    
    Public Class Main
        Implements ICustomClass
        
        Public ReadOnly Property Range As Single Implements ICustomClass.Range
            Get
                Return 5
            End Get
        End Property
    
    
        Public Sub Initialize() Implements ICustomClass.Initialize
    
        End Sub
    
        Public Sub Dispose() Implements ICustomClass.Dispose
    
        End Sub
    
        Public Sub ShowConfiguration() Implements ICustomClass.ShowConfiguration
    
        End Sub
    End Class
    

    Sample DLL:
    Only create class Main (implement ICustomClass) without namespace in your dll.

  10. How to install Fight Class
     

    Install => It is very easy, just download on the forum an fight class and put it in the folder "WRobot/FightClass/".

    Use => In the main WRobot window, click on the button "General Settings", in the new window select your Fight class with the first option (you can edit option of your fight class if you click on the button "Settings").

  11. I wait that all threads and datas are transferred to the new forum and I close all old websites.

    The new website has an best store and you need only one account and he have an good download system (Now I use invisionpower board, the price is higher but it is best than vbulletin + wordpress)

×
×
  • Create New...