├── .gitignore
├── Icons
├── addclass_deathknight.blp
├── addclass_druid.blp
├── addclass_hunter.blp
├── addclass_mage.blp
├── addclass_paladin.blp
├── addclass_priest.blp
├── addclass_rogue.blp
├── addclass_shaman.blp
├── addclass_warlock.blp
├── addclass_warrior.blp
├── attack.blp
├── attack_dps.blp
├── attack_healer.blp
├── attack_melee.blp
├── attack_range.blp
├── attack_ranged.blp
├── attack_tank.blp
├── border.blp
├── browse.blp
├── class_deathknight.blp
├── class_druid.blp
├── class_hunter.blp
├── class_mage.blp
├── class_paladin.blp
├── class_priest.blp
├── class_rogue.blp
├── class_shaman.blp
├── class_unknown.blp
├── class_warlock.blp
├── class_warrior.blp
├── command_follow.blp
├── command_stay.blp
├── filter_browse.blp
├── filter_deathknight.blp
├── filter_druid.blp
├── filter_hunter.blp
├── filter_mage.blp
├── filter_none.blp
├── filter_paladin.blp
├── filter_priest.blp
├── filter_rogue.blp
├── filter_shaman.blp
├── filter_warlock.blp
├── filter_warrior.blp
├── flee.blp
├── flee_dps.blp
├── flee_healer.blp
├── flee_melee.blp
├── flee_range.blp
├── flee_ranged.blp
├── flee_tank.blp
├── flee_target.blp
├── formation.blp
├── formation_arrow.blp
├── formation_chaos.blp
├── formation_circle.blp
├── formation_line.blp
├── formation_melee.blp
├── formation_near.blp
├── formation_queue.blp
├── formation_shield.blp
├── invite.blp
├── invite_party_5.blp
├── invite_raid_10.blp
├── invite_raid_25.blp
├── invite_raid_40.blp
├── language_deDE.blp
├── language_enGB.blp
├── language_none.blp
├── mode_grind.blp
├── mode_passive.blp
├── reward.blp
├── roster_actives.blp
├── roster_friends.blp
├── roster_members.blp
├── roster_players.blp
├── rtsc.blp
├── rtsc_browse.blp
├── rtsc_dps.blp
├── rtsc_group1.blp
├── rtsc_group2.blp
├── rtsc_group3.blp
├── rtsc_group4.blp
├── rtsc_group5.blp
├── rtsc_healer.blp
├── rtsc_melee.blp
├── rtsc_range.blp
├── rtsc_ranged.blp
├── rtsc_tank.blp
├── rtsc_target.blp
├── xp_progress_18_percent.blp
├── xp_progress_27_percent.blp
├── xp_progress_36_percent.blp
├── xp_progress_45_percent.blp
├── xp_progress_54_percent.blp
├── xp_progress_63_percent.blp
├── xp_progress_72_percent.blp
├── xp_progress_81_percent.blp
├── xp_progress_90_percent.blp
├── xp_progress_99_percent.blp
└── xp_progress_9_percent.blp
├── LICENSE
├── MultiBot.lua
├── MultiBot.toc
├── MultiBotDeathKnight.lua
├── MultiBotDruid.lua
├── MultiBotEngine.lua
├── MultiBotEvery.lua
├── MultiBotHandler.lua
├── MultiBotHunter.lua
├── MultiBotIconos.lua
├── MultiBotInit.lua
├── MultiBotItem.lua
├── MultiBotItemus.lua
├── MultiBotLanguage-deDE.lua
├── MultiBotLanguage-enGB.lua
├── MultiBotLanguage-enUS.lua
├── MultiBotLanguage-esES.lua
├── MultiBotLanguage-frFR.lua
├── MultiBotLanguage-koKR.lua
├── MultiBotLanguage-ruRU.lua
├── MultiBotLanguage-zhCN.lua
├── MultiBotMage.lua
├── MultiBotNecronet.lua
├── MultiBotPaladin.lua
├── MultiBotPriest.lua
├── MultiBotRaidus.lua
├── MultiBotReward.lua
├── MultiBotRogue.lua
├── MultiBotShaman.lua
├── MultiBotSpell.lua
├── MultiBotStats.lua
├── MultiBotTalent.lua
├── MultiBotWarlock.lua
├── MultiBotWarrior.lua
├── README.md
├── Screenshots
├── Handout-00-Character-Info.png
├── Handout-00-Main-Control.png
├── Handout-00-Playerbots.png
├── Handout-00-Start.png
├── Handout-01-Combat-Behaviour.png
├── Handout-01-Group-And-Ungroup.png
├── Handout-01-Inventory.png
├── Handout-01-Non-Combat-Behaviour.png
├── Handout-01-Playerbot-Online.png
├── Handout-01-Summon.png
├── Handout-02-Inspect-And-Inventory.png
├── Handout-03-Destroy-Mode.png
├── Handout-03-Equip-Mode.png
├── Handout-03-Sell-Mode.png
├── Handout-03-Use-Mode.png
├── Handout-03-View-Mode.png
├── Handout-04-Hide-Playerbot-Control.png
├── Handout-05-Hide-Playerbots.png
├── Handout-06-Browse-Friendbots.png
├── Handout-06-Firendbots.png
├── Handout-06-Show-Friendbots.png
├── Handout-07-Filter-By-Classes.png
├── Handout-07-Filter-Selection.png
├── Handout-08-Friendbot-Button.png
├── Handout-08-No-Browse-Button.png
├── Handout-08-Shows-Filter.png
├── Handout-09-Actionbar-Attack.png
├── Handout-09-Actionbar-Flee.png
├── Handout-09-Beastmaster.png
├── Handout-09-Control.png
├── Handout-09-Drink.png
├── Handout-09-Formation.png
├── Handout-09-Modebar.png
├── Handout-09-Release.png
├── Handout-09-Revive.png
├── Handout-09-Stay-Follow.png
├── Handout-09-Summon.png
└── Handout-09-Tank-Attack.png
└── Textures
├── Black.blp
├── Grey.blp
├── Iconos.blp
├── Inventory.blp
├── Raidus.blp
├── Raidus_Banner_Bottom.blp
├── Raidus_Banner_Top.blp
├── Raidus_Wanted.blp
├── Reward.blp
├── Stats.blp
├── Talent.blp
├── Talent_Black.blp
├── Talent_DeathKnight1.blp
├── Talent_DeathKnight2.blp
├── Talent_DeathKnight3.blp
├── Talent_Druid1.blp
├── Talent_Druid2.blp
├── Talent_Druid3.blp
├── Talent_Gold_Down.blp
├── Talent_Gold_Down_Arrow.blp
├── Talent_Gold_Down_Arrow_Short.blp
├── Talent_Gold_Down_Left.blp
├── Talent_Gold_Down_Left_Arrow.blp
├── Talent_Gold_Down_Right.blp
├── Talent_Gold_Down_Right_Arrow.blp
├── Talent_Gold_Left_Arrow_Short.blp
├── Talent_Gold_Right_Arrow_Short.blp
├── Talent_Hunter1.blp
├── Talent_Hunter2.blp
├── Talent_Hunter3.blp
├── Talent_Mage1.blp
├── Talent_Mage2.blp
├── Talent_Mage3.blp
├── Talent_Paladin1.blp
├── Talent_Paladin2.blp
├── Talent_Paladin3.blp
├── Talent_Priest1.blp
├── Talent_Priest2.blp
├── Talent_Priest3.blp
├── Talent_Rogue1.blp
├── Talent_Rogue2.blp
├── Talent_Rogue3.blp
├── Talent_Shaman1.blp
├── Talent_Shaman2.blp
├── Talent_Shaman3.blp
├── Talent_Silver_Down.blp
├── Talent_Silver_Down_Arrow.blp
├── Talent_Silver_Down_Arrow_Short.blp
├── Talent_Silver_Down_Left.blp
├── Talent_Silver_Down_Left_Arrow.blp
├── Talent_Silver_Down_Right.blp
├── Talent_Silver_Down_Right_Arrow.blp
├── Talent_Silver_Left_Arrow_Short.blp
├── Talent_Silver_Right_Arrow_Short.blp
├── Talent_Warlock1.blp
├── Talent_Warlock2.blp
├── Talent_Warlock3.blp
├── Talent_Warrior1.blp
├── Talent_Warrior2.blp
├── Talent_Warrior3.blp
└── White.blp
/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled Lua sources
2 | luac.out
3 |
4 | # luarocks build files
5 | *.src.rock
6 | *.zip
7 | *.tar.gz
8 |
9 | # Object files
10 | *.o
11 | *.os
12 | *.ko
13 | *.obj
14 | *.elf
15 |
16 | # Precompiled Headers
17 | *.gch
18 | *.pch
19 |
20 | # Libraries
21 | *.lib
22 | *.a
23 | *.la
24 | *.lo
25 | *.def
26 | *.exp
27 |
28 | # Shared objects (inc. Windows DLLs)
29 | *.dll
30 | *.so
31 | *.so.*
32 | *.dylib
33 |
34 | # Executables
35 | *.exe
36 | *.out
37 | *.app
38 | *.i*86
39 | *.x86_64
40 | *.hex
41 |
42 |
--------------------------------------------------------------------------------
/Icons/addclass_deathknight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/addclass_deathknight.blp
--------------------------------------------------------------------------------
/Icons/addclass_druid.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/addclass_druid.blp
--------------------------------------------------------------------------------
/Icons/addclass_hunter.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/addclass_hunter.blp
--------------------------------------------------------------------------------
/Icons/addclass_mage.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/addclass_mage.blp
--------------------------------------------------------------------------------
/Icons/addclass_paladin.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/addclass_paladin.blp
--------------------------------------------------------------------------------
/Icons/addclass_priest.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/addclass_priest.blp
--------------------------------------------------------------------------------
/Icons/addclass_rogue.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/addclass_rogue.blp
--------------------------------------------------------------------------------
/Icons/addclass_shaman.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/addclass_shaman.blp
--------------------------------------------------------------------------------
/Icons/addclass_warlock.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/addclass_warlock.blp
--------------------------------------------------------------------------------
/Icons/addclass_warrior.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/addclass_warrior.blp
--------------------------------------------------------------------------------
/Icons/attack.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/attack.blp
--------------------------------------------------------------------------------
/Icons/attack_dps.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/attack_dps.blp
--------------------------------------------------------------------------------
/Icons/attack_healer.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/attack_healer.blp
--------------------------------------------------------------------------------
/Icons/attack_melee.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/attack_melee.blp
--------------------------------------------------------------------------------
/Icons/attack_range.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/attack_range.blp
--------------------------------------------------------------------------------
/Icons/attack_ranged.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/attack_ranged.blp
--------------------------------------------------------------------------------
/Icons/attack_tank.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/attack_tank.blp
--------------------------------------------------------------------------------
/Icons/border.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/border.blp
--------------------------------------------------------------------------------
/Icons/browse.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/browse.blp
--------------------------------------------------------------------------------
/Icons/class_deathknight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/class_deathknight.blp
--------------------------------------------------------------------------------
/Icons/class_druid.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/class_druid.blp
--------------------------------------------------------------------------------
/Icons/class_hunter.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/class_hunter.blp
--------------------------------------------------------------------------------
/Icons/class_mage.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/class_mage.blp
--------------------------------------------------------------------------------
/Icons/class_paladin.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/class_paladin.blp
--------------------------------------------------------------------------------
/Icons/class_priest.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/class_priest.blp
--------------------------------------------------------------------------------
/Icons/class_rogue.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/class_rogue.blp
--------------------------------------------------------------------------------
/Icons/class_shaman.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/class_shaman.blp
--------------------------------------------------------------------------------
/Icons/class_unknown.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/class_unknown.blp
--------------------------------------------------------------------------------
/Icons/class_warlock.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/class_warlock.blp
--------------------------------------------------------------------------------
/Icons/class_warrior.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/class_warrior.blp
--------------------------------------------------------------------------------
/Icons/command_follow.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/command_follow.blp
--------------------------------------------------------------------------------
/Icons/command_stay.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/command_stay.blp
--------------------------------------------------------------------------------
/Icons/filter_browse.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/filter_browse.blp
--------------------------------------------------------------------------------
/Icons/filter_deathknight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/filter_deathknight.blp
--------------------------------------------------------------------------------
/Icons/filter_druid.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/filter_druid.blp
--------------------------------------------------------------------------------
/Icons/filter_hunter.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/filter_hunter.blp
--------------------------------------------------------------------------------
/Icons/filter_mage.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/filter_mage.blp
--------------------------------------------------------------------------------
/Icons/filter_none.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/filter_none.blp
--------------------------------------------------------------------------------
/Icons/filter_paladin.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/filter_paladin.blp
--------------------------------------------------------------------------------
/Icons/filter_priest.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/filter_priest.blp
--------------------------------------------------------------------------------
/Icons/filter_rogue.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/filter_rogue.blp
--------------------------------------------------------------------------------
/Icons/filter_shaman.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/filter_shaman.blp
--------------------------------------------------------------------------------
/Icons/filter_warlock.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/filter_warlock.blp
--------------------------------------------------------------------------------
/Icons/filter_warrior.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/filter_warrior.blp
--------------------------------------------------------------------------------
/Icons/flee.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/flee.blp
--------------------------------------------------------------------------------
/Icons/flee_dps.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/flee_dps.blp
--------------------------------------------------------------------------------
/Icons/flee_healer.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/flee_healer.blp
--------------------------------------------------------------------------------
/Icons/flee_melee.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/flee_melee.blp
--------------------------------------------------------------------------------
/Icons/flee_range.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/flee_range.blp
--------------------------------------------------------------------------------
/Icons/flee_ranged.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/flee_ranged.blp
--------------------------------------------------------------------------------
/Icons/flee_tank.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/flee_tank.blp
--------------------------------------------------------------------------------
/Icons/flee_target.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/flee_target.blp
--------------------------------------------------------------------------------
/Icons/formation.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/formation.blp
--------------------------------------------------------------------------------
/Icons/formation_arrow.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/formation_arrow.blp
--------------------------------------------------------------------------------
/Icons/formation_chaos.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/formation_chaos.blp
--------------------------------------------------------------------------------
/Icons/formation_circle.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/formation_circle.blp
--------------------------------------------------------------------------------
/Icons/formation_line.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/formation_line.blp
--------------------------------------------------------------------------------
/Icons/formation_melee.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/formation_melee.blp
--------------------------------------------------------------------------------
/Icons/formation_near.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/formation_near.blp
--------------------------------------------------------------------------------
/Icons/formation_queue.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/formation_queue.blp
--------------------------------------------------------------------------------
/Icons/formation_shield.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/formation_shield.blp
--------------------------------------------------------------------------------
/Icons/invite.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/invite.blp
--------------------------------------------------------------------------------
/Icons/invite_party_5.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/invite_party_5.blp
--------------------------------------------------------------------------------
/Icons/invite_raid_10.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/invite_raid_10.blp
--------------------------------------------------------------------------------
/Icons/invite_raid_25.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/invite_raid_25.blp
--------------------------------------------------------------------------------
/Icons/invite_raid_40.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/invite_raid_40.blp
--------------------------------------------------------------------------------
/Icons/language_deDE.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/language_deDE.blp
--------------------------------------------------------------------------------
/Icons/language_enGB.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/language_enGB.blp
--------------------------------------------------------------------------------
/Icons/language_none.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/language_none.blp
--------------------------------------------------------------------------------
/Icons/mode_grind.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/mode_grind.blp
--------------------------------------------------------------------------------
/Icons/mode_passive.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/mode_passive.blp
--------------------------------------------------------------------------------
/Icons/reward.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/reward.blp
--------------------------------------------------------------------------------
/Icons/roster_actives.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/roster_actives.blp
--------------------------------------------------------------------------------
/Icons/roster_friends.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/roster_friends.blp
--------------------------------------------------------------------------------
/Icons/roster_members.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/roster_members.blp
--------------------------------------------------------------------------------
/Icons/roster_players.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/roster_players.blp
--------------------------------------------------------------------------------
/Icons/rtsc.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc.blp
--------------------------------------------------------------------------------
/Icons/rtsc_browse.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc_browse.blp
--------------------------------------------------------------------------------
/Icons/rtsc_dps.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc_dps.blp
--------------------------------------------------------------------------------
/Icons/rtsc_group1.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc_group1.blp
--------------------------------------------------------------------------------
/Icons/rtsc_group2.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc_group2.blp
--------------------------------------------------------------------------------
/Icons/rtsc_group3.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc_group3.blp
--------------------------------------------------------------------------------
/Icons/rtsc_group4.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc_group4.blp
--------------------------------------------------------------------------------
/Icons/rtsc_group5.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc_group5.blp
--------------------------------------------------------------------------------
/Icons/rtsc_healer.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc_healer.blp
--------------------------------------------------------------------------------
/Icons/rtsc_melee.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc_melee.blp
--------------------------------------------------------------------------------
/Icons/rtsc_range.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc_range.blp
--------------------------------------------------------------------------------
/Icons/rtsc_ranged.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc_ranged.blp
--------------------------------------------------------------------------------
/Icons/rtsc_tank.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc_tank.blp
--------------------------------------------------------------------------------
/Icons/rtsc_target.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/rtsc_target.blp
--------------------------------------------------------------------------------
/Icons/xp_progress_18_percent.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/xp_progress_18_percent.blp
--------------------------------------------------------------------------------
/Icons/xp_progress_27_percent.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/xp_progress_27_percent.blp
--------------------------------------------------------------------------------
/Icons/xp_progress_36_percent.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/xp_progress_36_percent.blp
--------------------------------------------------------------------------------
/Icons/xp_progress_45_percent.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/xp_progress_45_percent.blp
--------------------------------------------------------------------------------
/Icons/xp_progress_54_percent.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/xp_progress_54_percent.blp
--------------------------------------------------------------------------------
/Icons/xp_progress_63_percent.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/xp_progress_63_percent.blp
--------------------------------------------------------------------------------
/Icons/xp_progress_72_percent.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/xp_progress_72_percent.blp
--------------------------------------------------------------------------------
/Icons/xp_progress_81_percent.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/xp_progress_81_percent.blp
--------------------------------------------------------------------------------
/Icons/xp_progress_90_percent.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/xp_progress_90_percent.blp
--------------------------------------------------------------------------------
/Icons/xp_progress_99_percent.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/xp_progress_99_percent.blp
--------------------------------------------------------------------------------
/Icons/xp_progress_9_percent.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Macx-Lio/MultiBot/b063d74cd95dd6c3fbdc8a57db750f85d50a4af4/Icons/xp_progress_9_percent.blp
--------------------------------------------------------------------------------
/MultiBot.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 30300
2 | ## Version: 2.0.0
3 | ## Title: MultiBot
4 | ## Notes: User Interface for Playerbot
5 | ## Author: Nico Löbbert
6 | ## SavedVariablesPerCharacter: MultiBotSave
7 | ## SavedVariables: MultiBotGlobalSave
8 |
9 | MultiBot.lua
10 | MultiBotLanguage-deDE.lua
11 | MultiBotLanguage-enGB.lua
12 | MultiBotLanguage-enUS.lua
13 | MultiBotLanguage-frFR.lua
14 | MultiBotLanguage-zhCN.lua
15 | MultiBotLanguage-koKR.lua
16 | MultiBotLanguage-ruRU.lua
17 | MultiBotLanguage-esES.lua
18 | MultiBotEngine.lua
19 | MultiBotHandler.lua
20 | MultiBotDeathKnight.lua
21 | MultiBotDruid.lua
22 | MultiBotHunter.lua
23 | MultiBotMage.lua
24 | MultiBotPaladin.lua
25 | MultiBotPriest.lua
26 | MultiBotRogue.lua
27 | MultiBotShaman.lua
28 | MultiBotWarlock.lua
29 | MultiBotWarrior.lua
30 | MultiBotEvery.lua
31 | MultiBotStats.lua
32 | MultiBotSpell.lua
33 | MultiBotItem.lua
34 | MultiBotInit.lua
35 | MultiBotItemus.lua
36 | MultiBotIconos.lua
37 | MultiBotTalent.lua
38 | MultiBotReward.lua
39 | MultiBotNecronet.lua
40 | MultiBotRaidus.lua
--------------------------------------------------------------------------------
/MultiBotDeathKnight.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addDeathKnight = function(pFrame, pCombat, pNormal)
2 | local tButton = pFrame.addButton("Presence", 0, 0, "spell_deathknight_bloodpresence", MultiBot.tips.deathknight.presence.master).setDisable()
3 | tButton.doLeft = function(pButton)
4 | MultiBot.ShowHideSwitch(pButton.getFrame("Presence"))
5 | end
6 |
7 | local tFrame = pFrame.addFrame("Presence", -2, 30)
8 | tFrame:Hide()
9 |
10 | tFrame.addButton("Unholy", 0, 0, "spell_deathknight_unholypresence", MultiBot.tips.deathknight.presence.unholy)
11 | .doLeft = function(pButton)
12 | MultiBot.SelectToTarget(pButton.get(), "Presence", pButton.texture, "co +unholy,?", pButton.getName())
13 | pButton.getButton("Presence").doRight = function(pButton)
14 | MultiBot.OnOffActionToTarget(pButton, "co +unholy,?", "co -unholy,?", pButton.getName())
15 | end
16 | end
17 |
18 | tFrame.addButton("Frost", 0, 26, "spell_deathknight_frostpresence", MultiBot.tips.deathknight.presence.frost)
19 | .doLeft = function(pButton)
20 | MultiBot.SelectToTarget(pButton.get(), "Presence", pButton.texture, "co +frost,?", pButton.getName())
21 | pButton.getButton("Presence").doRight = function(pButton)
22 | MultiBot.OnOffActionToTarget(pButton, "co +frost,?", "co -frost,?", pButton.getName())
23 | end
24 | end
25 |
26 | tFrame.addButton("Blood", 0, 52, "spell_deathknight_bloodpresence", MultiBot.tips.deathknight.presence.blood)
27 | .doLeft = function(pButton)
28 | MultiBot.SelectToTarget(pButton.get(), "Presence", pButton.texture, "co +blood,?", pButton.getName())
29 | pButton.getButton("Presence").doRight = function(pButton)
30 | MultiBot.OnOffActionToTarget(pButton, "co +blood,?", "co -blood,?", pButton.getName())
31 | end
32 | end
33 |
34 | -- SRATEGIES:PRESENCE ---
35 |
36 | if(MultiBot.isInside(pCombat, "unholy")) then
37 | tButton.setTexture("spell_deathknight_unholypresence").setEnable().doRight = function(pButton)
38 | MultiBot.OnOffActionToTarget(pButton, "co +unholy,?", "co -unholy,?", pButton.getName())
39 | end
40 | elseif(MultiBot.isInside(pCombat, "frost")) then
41 | tButton.setTexture("spell_deathknight_frostpresence").setEnable().doRight = function(pButton)
42 | MultiBot.OnOffActionToTarget(pButton, "co +frost,?", "co -frost,?", pButton.getName())
43 | end
44 | elseif(MultiBot.isInside(pCombat, "blood")) then
45 | tButton.setTexture("spell_deathknight_bloodpresence").setEnable().doRight = function(pButton)
46 | MultiBot.OnOffActionToTarget(pButton, "co +blood,?", "co -blood,?", pButton.getName())
47 | end
48 | end
49 |
50 | -- DPS --
51 |
52 | pFrame.addButton("DpsControl", -30, 0, "ability_warrior_challange", MultiBot.tips.deathknight.dps.master)
53 | .doLeft = function(pButton)
54 | MultiBot.ShowHideSwitch(pButton.getFrame("DpsControl"))
55 | end
56 |
57 | local tFrame = pFrame.addFrame("DpsControl", -32, 30)
58 | tFrame:Hide()
59 |
60 | tFrame.addButton("DpsAssist", 0, 0, "spell_holy_heroism", MultiBot.tips.deathknight.dps.dpsAssist).setDisable()
61 | .doLeft = function(pButton)
62 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps assist,?", "co -dps assist,?", pButton.getName())) then
63 | pButton.getButton("TankAssist").setDisable()
64 | pButton.getButton("DpsAoe").setDisable()
65 | end
66 | end
67 |
68 | tFrame.addButton("DpsAoe", 0, 26, "spell_holy_surgeoflight", MultiBot.tips.deathknight.dps.dpsAoe).setDisable()
69 | .doLeft = function(pButton)
70 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps aoe,?", "co -dps aoe,?", pButton.getName())) then
71 | pButton.getButton("TankAssist").setDisable()
72 | pButton.getButton("DpsAssist").setDisable()
73 | end
74 | end
75 |
76 | -- ASSIST --
77 |
78 | pFrame.addButton("TankAssist", -60, 0, "ability_warrior_innerrage", MultiBot.tips.deathknight.tankAssist).setDisable()
79 | .doLeft = function(pButton)
80 | if(MultiBot.OnOffActionToTarget(pButton, "co +tank assist,?", "co -tank assist,?", pButton.getName())) then
81 | pButton.getButton("DpsAssist").setDisable()
82 | pButton.getButton("DpsAoe").setDisable()
83 | end
84 | end
85 |
86 | -- STRATEGIES --
87 |
88 | if(MultiBot.isInside(pCombat, "dps aoe")) then pFrame.getButton("DpsAoe").setEnable() end
89 | if(MultiBot.isInside(pCombat, "dps assist")) then pFrame.getButton("DpsAssist").setEnable() end
90 | if(MultiBot.isInside(pCombat, "tank assist")) then pFrame.getButton("TankAssist").setEnable() end
91 | end
--------------------------------------------------------------------------------
/MultiBotDruid.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addDruid = function(pFrame, pCombat, pNormal)
2 | pFrame.addButton("Heal", 0, 0, "spell_holy_aspiration", MultiBot.tips.druid.heal).setDisable()
3 | .doLeft = function(pButton)
4 | if(MultiBot.OnOffActionToTarget(pButton, "co +heal,?", "co -heal,?", pButton.getName())) then
5 | pButton.getButton("Caster").setDisable()
6 | pButton.getButton("Tank").setDisable()
7 | pButton.getButton("Bear").setDisable()
8 | pButton.getButton("Cat").setDisable()
9 | pButton.getButton("Dps").setDisable()
10 | end
11 | end
12 |
13 | -- BUFF --
14 |
15 | pFrame.addButton("Buff", -30, 0, "spell_holy_power", MultiBot.tips.druid.buff).setDisable()
16 | .doLeft = function(pButton)
17 | MultiBot.OnOffActionToTarget(pButton, "nc +buff,?", "nc -buff,?", pButton.getName())
18 | end
19 |
20 | -- PLAYBOOK --
21 |
22 | pFrame.addButton("Playbook", -60, 0, "inv_misc_book_06", MultiBot.tips.druid.playbook.master)
23 | .doLeft = function(pButton)
24 | MultiBot.ShowHideSwitch(pButton.getFrame("Playbook"))
25 | end
26 |
27 | local tFrame = pFrame.addFrame("Playbook", -62, 30)
28 | tFrame:Hide()
29 |
30 | tFrame.addButton("CasterDebuff", 0, 0, "ability_druid_cower", MultiBot.tips.druid.playbook.casterDebuff).setDisable()
31 | .doLeft = function(pButton)
32 | if(MultiBot.OnOffActionToTarget(pButton, "co +caster debuff,?", "co -caster debuff,?", pButton.getName())) then
33 | pButton.getButton("DpsDebuff").setEnable()
34 | else
35 | pButton.getButton("DpsDebuff").setDisable()
36 | end
37 | end
38 |
39 | tFrame.addButton("CasterAoe", 0, 26, "spell_arcane_starfire", MultiBot.tips.druid.playbook.casterAoe).setDisable()
40 | .doLeft = function(pButton)
41 | MultiBot.OnOffActionToTarget(pButton, "co +caster aoe,?", "co -caster aoe,?", pButton.getName())
42 | end
43 |
44 | tFrame.addButton("Caster", 0, 52, "spell_nature_starfall", MultiBot.tips.druid.playbook.caster).setDisable()
45 | .doLeft = function(pButton)
46 | if(MultiBot.OnOffActionToTarget(pButton, "co +caster,?", "co -caster,?", pButton.getName())) then
47 | pButton.getButton("Heal").setDisable()
48 | pButton.getButton("Tank").setDisable()
49 | pButton.getButton("Bear").setDisable()
50 | pButton.getButton("Cat").setDisable()
51 | pButton.getButton("Dps").setDisable()
52 | end
53 | end
54 |
55 | tFrame.addButton("CatAoe", 0, 78, "ability_druid_bash", MultiBot.tips.druid.playbook.catAoe).setDisable()
56 | .doLeft = function(pButton)
57 | MultiBot.OnOffActionToTarget(pButton, "co +cat aoe,?", "co -cat aoe,?", pButton.getName())
58 | end
59 |
60 | tFrame.addButton("Cat", 0, 104, "ability_druid_catform", MultiBot.tips.druid.playbook.cat).setDisable()
61 | .doLeft = function(pButton)
62 | if(MultiBot.OnOffActionToTarget(pButton, "co +cat,?", "co -cat,?", pButton.getName())) then
63 | pButton.getButton("Caster").setDisable()
64 | pButton.getButton("Heal").setDisable()
65 | pButton.getButton("Tank").setDisable()
66 | pButton.getButton("Bear").setDisable()
67 | pButton.getButton("Dps").setEnable()
68 | else
69 | pButton.getButton("Dps").setDisable()
70 | end
71 | end
72 |
73 | tFrame.addButton("Bear", 0, 130, "ability_racial_bearform", MultiBot.tips.druid.playbook.bear).setDisable()
74 | .doLeft = function(pButton)
75 | if(MultiBot.OnOffActionToTarget(pButton, "co +bear,?", "co -bear,?", pButton.getName())) then
76 | pButton.getButton("Caster").setDisable()
77 | pButton.getButton("Heal").setDisable()
78 | pButton.getButton("Cat").setDisable()
79 | pButton.getButton("Dps").setDisable()
80 | pButton.getButton("Tank").setEnable()
81 | else
82 | pButton.getButton("Tank").setDisable()
83 | end
84 | end
85 |
86 | -- DPS --
87 |
88 | pFrame.addButton("DpsControl", -90, 0, "ability_warrior_challange", MultiBot.tips.druid.dps.master)
89 | .doLeft = function(pButton)
90 | MultiBot.ShowHideSwitch(pButton.getFrame("DpsControl"))
91 | end
92 |
93 | local tFrame = pFrame.addFrame("DpsControl", -92, 30)
94 | tFrame:Hide()
95 |
96 | tFrame.addButton("DpsAssist", 0, 0, "spell_holy_heroism", MultiBot.tips.druid.dps.dpsAssist).setDisable()
97 | .doLeft = function(pButton)
98 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps assist,?", "co -dps assist,?", pButton.getName())) then
99 | pButton.getButton("TankAssist").setDisable()
100 | pButton.getButton("DpsAoe").setDisable()
101 | end
102 | end
103 |
104 | tFrame.addButton("DpsDebuff", 0, 26, "spell_holy_restoration", MultiBot.tips.druid.dps.dpsDebuff).setDisable()
105 | .doLeft = function(pButton)
106 | if(MultiBot.OnOffActionToTarget(pButton, "co +caster debuff,?", "co -caster debuff,?", pButton.getName())) then
107 | pButton.getButton("CasterDebuff").setEnable()
108 | else
109 | pButton.getButton("CasterDebuff").setDisable()
110 | end
111 | end
112 |
113 | tFrame.addButton("DpsAoe", 0, 52, "spell_holy_surgeoflight", MultiBot.tips.druid.dps.dpsAoe).setDisable()
114 | .doLeft = function(pButton)
115 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps aoe,?", "co -dps aoe,?", pButton.getName())) then
116 | pButton.getButton("TankAssist").setDisable()
117 | pButton.getButton("DpsAssist").setDisable()
118 | end
119 | end
120 |
121 | tFrame.addButton("Dps", 0, 78, "spell_holy_divinepurpose", MultiBot.tips.druid.dps.dps).setDisable()
122 | .doLeft = function(pButton)
123 | if(MultiBot.OnOffActionToTarget(pButton, "co +cat,?", "co -cat,?", pButton.getName())) then
124 | pButton.getButton("Caster").setDisable()
125 | pButton.getButton("Tank").setDisable()
126 | pButton.getButton("Bear").setDisable()
127 | pButton.getButton("Cat").setEnable()
128 | else
129 | pButton.getButton("Cat").setDisable()
130 | end
131 | end
132 |
133 | -- ASSIST --
134 |
135 | pFrame.addButton("TankAssist", -120, 0, "ability_warrior_innerrage", MultiBot.tips.druid.tankAssist).setDisable()
136 | .doLeft = function(pButton)
137 | if(MultiBot.OnOffActionToTarget(pButton, "co +tank assist,?", "co -tank assist,?", pButton.getName())) then
138 | pButton.getButton("DpsAssist").setDisable()
139 | pButton.getButton("DpsAoe").setDisable()
140 | end
141 | end
142 |
143 | -- TANK --
144 |
145 | pFrame.addButton("Tank", -150, 0, "ability_warrior_shieldmastery", MultiBot.tips.druid.tank).setDisable()
146 | .doLeft = function(pButton)
147 | if(MultiBot.OnOffActionToTarget(pButton, "co +tank,?", "co -tank,?", pButton.getName())) then
148 | pButton.getButton("Caster").setDisable()
149 | pButton.getButton("Heal").setDisable()
150 | pButton.getButton("Dps").setDisable()
151 | pButton.getButton("Cat").setDisable()
152 | pButton.getButton("Bear").setEnable()
153 | else
154 | pButton.getButton("Bear").setDisable()
155 | end
156 | end
157 |
158 | -- STRATEGIES --
159 |
160 | if(MultiBot.isInside(pCombat, "heal")) then pFrame.getButton("Heal").setEnable() end
161 | if(MultiBot.isInside(pNormal, "buff,")) then pFrame.getButton("Buff").setEnable() end
162 | if(MultiBot.isInside(pCombat, "caster debuff")) then pFrame.getButton("CasterDebuff").setEnable() end
163 | if(MultiBot.isInside(pCombat, "caster aoe")) then pFrame.getButton("CasterAoe").setEnable() end
164 | if(MultiBot.isInside(pCombat, "caster,")) then pFrame.getButton("Caster").setEnable() end
165 | if(MultiBot.isInside(pCombat, "cat aoe")) then pFrame.getButton("CatAoe").setEnable() end
166 | if(MultiBot.isInside(pCombat, "cat,")) then pFrame.getButton("Cat").setEnable() end
167 | if(MultiBot.isInside(pCombat, "bear")) then pFrame.getButton("Bear").setEnable() end
168 | if(MultiBot.isInside(pCombat, "dps assist")) then pFrame.getButton("DpsAssist").setEnable() end
169 | if(MultiBot.isInside(pCombat, "dps aoe")) then pFrame.getButton("DpsAoe").setEnable() end
170 | if(MultiBot.isInside(pCombat, "cat,")) then pFrame.getButton("Dps").setEnable() end
171 | if(MultiBot.isInside(pCombat, "tank assist")) then pFrame.getButton("TankAssist").setEnable() end
172 | if(MultiBot.isInside(pCombat, "bear,")) then pFrame.getButton("Tank").setEnable() end
173 | end
--------------------------------------------------------------------------------
/MultiBotEvery.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addEvery = function(pFrame, pCombat, pNormal)
2 | pFrame.addButton("Summon", 64, 0, "ability_hunter_beastcall", MultiBot.tips.every.summon)
3 | .doLeft = function(pButton)
4 | MultiBot.ActionToTarget("summon", pButton.getName())
5 | end
6 |
7 | pFrame.addButton("Uninvite", 94, 0, "inv_misc_grouplooking", MultiBot.tips.every.uninvite).doShow()
8 | .doLeft = function(pButton)
9 | MultiBot.doSlash("/uninvite", pButton.getName())
10 | pButton.getButton("Invite").doShow()
11 | pButton.doHide()
12 | end
13 |
14 | pFrame.addButton("Invite", 94, 0, "inv_misc_groupneedmore", MultiBot.tips.every.invite).doHide()
15 | .doLeft = function(pButton)
16 | MultiBot.doSlash("/invite", pButton.getName())
17 | pButton.getButton("Uninvite").doShow()
18 | pButton.doHide()
19 | end
20 |
21 | pFrame.addButton("Food", 124, 0, "inv_drink_24_sealwhey", MultiBot.tips.every.food).setDisable()
22 | .doLeft = function(pButton)
23 | MultiBot.OnOffActionToTarget(pButton, "nc +food,?", "nc -food,?", pButton.getName())
24 | end
25 |
26 | pFrame.addButton("Loot", 154, 0, "inv_misc_coin_16", MultiBot.tips.every.loot).setDisable()
27 | .doLeft = function(pButton)
28 | MultiBot.OnOffActionToTarget(pButton, "nc +loot,?", "nc -loot,?", pButton.getName())
29 | end
30 |
31 | pFrame.addButton("Gather", 184, 0, "trade_mining", MultiBot.tips.every.gather).setDisable()
32 | .doLeft = function(pButton)
33 | MultiBot.OnOffActionToTarget(pButton, "nc +gather,?", "nc -gather,?", pButton.getName())
34 | end
35 |
36 | -- Selfbot is not allowed to use these Tools --
37 | if(pFrame.getName() == UnitName("player")) then return end
38 |
39 | pFrame.addButton("Inventory", 214, 0, "inv_misc_bag_08", MultiBot.tips.every.inventory).setDisable()
40 | .doLeft = function(pButton)
41 | if(pButton.state) then
42 | MultiBot.inventory:Hide()
43 | pButton.setDisable()
44 | else
45 | local tUnits = MultiBot.frames["MultiBar"].frames["Units"]
46 | for key, value in pairs(MultiBot.index.actives) do
47 | if(tUnits.buttons[value].name ~= UnitName("player")) then
48 | tUnits.frames[value].getButton("Inventory").setDisable()
49 | end
50 | end
51 |
52 | pButton.setEnable()
53 | MultiBot.inventory.name = pButton.getName()
54 | tUnits.buttons[MultiBot.inventory.name].waitFor = "INVENTORY"
55 | SendChatMessage("items", "WHISPER", nil, pButton.getName())
56 | end
57 | end
58 |
59 | pFrame.addButton("Spellbook", 244, 0, "inv_misc_book_09", MultiBot.tips.every.spellbook).setDisable()
60 | .doLeft = function(pButton)
61 | if(pButton.state) then
62 | MultiBot.spellbook:Hide()
63 | pButton.setDisable()
64 | else
65 | local tUnits = MultiBot.frames["MultiBar"].frames["Units"]
66 | for key, value in pairs(MultiBot.index.actives) do
67 | if(tUnits.buttons[value].name ~= UnitName("player")) then
68 | tUnits.frames[value].getButton("Spellbook").setDisable()
69 | end
70 | end
71 |
72 | pButton.setEnable()
73 | MultiBot.spellbook.name = pButton.getName()
74 | tUnits.buttons[MultiBot.spellbook.name].waitFor = "SPELLBOOK"
75 | SendChatMessage("spells", "WHISPER", nil, pButton.getName())
76 | end
77 | end
78 |
79 | pFrame.addButton("Talent", 274, 0, "ability_marksmanship", MultiBot.tips.every.talent).setDisable()
80 | .doLeft = function(pButton)
81 | if(pButton.state) then
82 | pButton.setDisable()
83 | MultiBot.talent:Hide()
84 | elseif(UnitLevel(MultiBot.toUnit(pButton.getName())) < 10) then
85 | SendChatMessage(MultiBot.info.talent.Level, "SAY")
86 | elseif(CheckInteractDistance(MultiBot.toUnit(pButton.getName()), 1) == nil) then
87 | SendChatMessage(MultiBot.info.talent.OutOfRange, "SAY")
88 | else
89 | MultiBot.talent:Hide()
90 | MultiBot.talent.doClear()
91 |
92 | local tUnits = MultiBot.frames["MultiBar"].frames["Units"]
93 | for key, value in pairs(MultiBot.index.actives) do
94 | if(tUnits.buttons[value].name ~= UnitName("player")) then
95 | tUnits.frames[value].getButton("Talent").setDisable()
96 | end
97 | end
98 |
99 | InspectUnit(MultiBot.toUnit(pButton.getName()))
100 | pButton.setEnable()
101 |
102 | MultiBot.talent.name = pButton.getName()
103 | MultiBot.talent.class = pButton.getClass()
104 | MultiBot.auto.talent = true
105 | end
106 | end
107 |
108 | -- STRATEGIES --
109 |
110 | if(MultiBot.isInside(pNormal, "food")) then pFrame.getButton("Food").setEnable() end
111 | if(MultiBot.isInside(pNormal, "loot")) then pFrame.getButton("Loot").setEnable() end
112 | if(MultiBot.isInside(pNormal, "gather")) then pFrame.getButton("Gather").setEnable() end
113 | end
--------------------------------------------------------------------------------
/MultiBotHunter.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addHunter = function(pFrame, pCombat, pNormal)
2 | local tButton = pFrame.addButton("NonCombatAspect", 0, 0, "spell_nature_protectionformnature", MultiBot.tips.hunter.naspect.master)
3 | tButton.doLeft = function(pButton)
4 | MultiBot.ShowHideSwitch(pButton.parent.frames["NonCombatAspect"])
5 | end
6 |
7 | local tFrame = pFrame.addFrame("NonCombatAspect", -2, 30)
8 | tFrame:Hide()
9 |
10 | tFrame.addButton("NonCombatNature", 0, 0, "spell_nature_protectionformnature", MultiBot.tips.hunter.naspect.rnature)
11 | .doLeft = function(pButton)
12 | MultiBot.SelectToTarget(pButton.get(), "NonCombatAspect", pButton.texture, "nc +rnature,?", pButton.getName())
13 | pButton.getButton("NonCombatAspect").doRight = function(pButton)
14 | MultiBot.OnOffActionToTarget(pButton, "nc +rnature,?", "nc -rnature,?", pButton.getName())
15 | end
16 | end
17 |
18 | tFrame.addButton("NonCombatSpeed", 0, 26, "ability_mount_whitetiger", MultiBot.tips.hunter.naspect.bspeed)
19 | .doLeft = function(pButton)
20 | MultiBot.SelectToTarget(pButton.get(), "NonCombatAspect", pButton.texture, "nc +bspeed,?", pButton.getName())
21 | pButton.getButton("NonCombatAspect").doRight = function(pButton)
22 | MultiBot.OnOffActionToTarget(pButton, "nc +bspeed,?", "nc -bspeed,?", pButton.getName())
23 | end
24 | end
25 |
26 | tFrame.addButton("NonCombatMana", 0, 52, "ability_hunter_aspectoftheviper", MultiBot.tips.hunter.naspect.bmana)
27 | .doLeft = function(pButton)
28 | MultiBot.SelectToTarget(pButton.get(), "NonCombatAspect", pButton.texture, "nc +bmana,?", pButton.getName())
29 | pButton.getButton("NonCombatAspect").doRight = function(pButton)
30 | MultiBot.OnOffActionToTarget(pButton, "nc +bmana,?", "nc -bmana,?", pButton.getName())
31 | end
32 | end
33 |
34 | tFrame.addButton("NonCombatDps", 0, 78, "ability_hunter_pet_dragonhawk", MultiBot.tips.hunter.naspect.bdps)
35 | .doLeft = function(pButton)
36 | MultiBot.SelectToTarget(pButton.get(), "NonCombatAspect", pButton.texture, "nc +bdps,?", pButton.getName())
37 | pButton.getButton("NonCombatAspect").doRight = function(pButton)
38 | MultiBot.OnOffActionToTarget(pButton, "nc +bdps,?", "nc -bdps,?", pButton.getName())
39 | end
40 | end
41 |
42 | -- STRATEGIES:NON-COMBAT-BUFF --
43 |
44 | if(MultiBot.isInside(pNormal, "rnature")) then
45 | tButton.setTexture("spell_nature_protectionformnature").setEnable().doRight = function(pButton)
46 | MultiBot.OnOffActionToTarget(pButton, "nc +rnature,?", "nc -rnature,?", pButton.getName())
47 | end
48 | elseif(MultiBot.isInside(pNormal, "bspeed")) then
49 | tButton.setTexture("ability_mount_whitetiger").setEnable().doRight = function(pButton)
50 | MultiBot.OnOffActionToTarget(pButton, "nc +bspeed,?", "nc -bspeed,?", pButton.getName())
51 | end
52 | elseif(MultiBot.isInside(pNormal, "bmana")) then
53 | tButton.setTexture("ability_hunter_aspectoftheviper").setEnable().doRight = function(pButton)
54 | MultiBot.OnOffActionToTarget(pButton, "nc +bmana,?", "nc -bmana,?", pButton.getName())
55 | end
56 | elseif(MultiBot.isInside(pNormal, "bdps")) then
57 | tButton.setTexture("ability_hunter_pet_dragonhawk").setEnable().doRight = function(pButton)
58 | MultiBot.OnOffActionToTarget(pButton, "nc +bdps,?", "nc -bdps,?", pButton.getName())
59 | end
60 | end
61 |
62 | -- COMABT-BUFF --
63 |
64 | local tButton = pFrame.addButton("CombatAspect", -30, 0, "spell_nature_protectionformnature", MultiBot.tips.hunter.caspect.master)
65 | tButton.doLeft = function(pButton)
66 | MultiBot.ShowHideSwitch(pButton.parent.frames["CombatAspect"])
67 | end
68 |
69 | local tFrame = pFrame.addFrame("CombatAspect", -32, 30)
70 | tFrame:Hide()
71 |
72 | tFrame.addButton("CombatNature", 0, 0, "spell_nature_protectionformnature", MultiBot.tips.hunter.caspect.rnature)
73 | .doLeft = function(pButton)
74 | MultiBot.SelectToTarget(pButton.get(), "CombatAspect", pButton.texture, "co +rnature,?", pButton.getName())
75 | pButton.getButton("CombatAspect").doRight = function(pButton)
76 | MultiBot.OnOffActionToTarget(pButton, "co +rnature,?", "co -rnature,?", pButton.getName())
77 | end
78 | end
79 |
80 | tFrame.addButton("CombatSpeed", 0, 26, "ability_mount_whitetiger", MultiBot.tips.hunter.caspect.bspeed)
81 | .doLeft = function(pButton)
82 | MultiBot.SelectToTarget(pButton.get(), "CombatAspect", pButton.texture, "co +bspeed,?", pButton.getName())
83 | pButton.getButton("NonCombatAspect").doRight = function(pButton)
84 | MultiBot.OnOffActionToTarget(pButton, "co +bspeed,?", "co -bspeed,?", pButton.getName())
85 | end
86 | end
87 |
88 | tFrame.addButton("CombatMana", 0, 52, "ability_hunter_aspectoftheviper", MultiBot.tips.hunter.caspect.bmana)
89 | .doLeft = function(pButton)
90 | MultiBot.SelectToTarget(pButton.get(), "CombatAspect", pButton.texture, "co +bmana,?", pButton.getName())
91 | pButton.getButton("CombatAspect").doRight = function(pButton)
92 | MultiBot.OnOffActionToTarget(pButton, "co +bmana,?", "co -bmana,?", pButton.getName())
93 | end
94 | end
95 |
96 | tFrame.addButton("CombatDps", 0, 78, "ability_hunter_pet_dragonhawk", MultiBot.tips.hunter.caspect.bdps)
97 | .doLeft = function(pButton)
98 | MultiBot.SelectToTarget(pButton.get(), "CombatAspect", pButton.texture, "co +bdps,?", pButton.getName())
99 | pButton.getButton("CombatAspect").doRight = function(pButton)
100 | MultiBot.OnOffActionToTarget(pButton, "co +bdps,?", "co -bdps,?", pButton.getName())
101 | end
102 | end
103 |
104 | -- STRATEGIES:COMABT-ASPECT --
105 |
106 | if(MultiBot.isInside(pCombat, "rnature")) then
107 | tButton.setTexture("spell_nature_protectionformnature").setEnable().doRight = function(pButton)
108 | MultiBot.OnOffActionToTarget(pButton, "co +rnature,?", "co -rnature,?", pButton.getName())
109 | end
110 | elseif(MultiBot.isInside(pCombat, "bspeed")) then
111 | tButton.setTexture("ability_mount_whitetiger").setEnable().doRight = function(pButton)
112 | MultiBot.OnOffActionToTarget(pButton, "co +bspeed,?", "co -bspeed,?", pButton.getName())
113 | end
114 | elseif(MultiBot.isInside(pCombat, "bmana")) then
115 | tButton.setTexture("ability_hunter_aspectoftheviper").setEnable().doRight = function(pButton)
116 | MultiBot.OnOffActionToTarget(pButton, "co +bmana,?", "co -bmana,?", pButton.getName())
117 | end
118 | elseif(MultiBot.isInside(pCombat, "bdps")) then
119 | tButton.setTexture("ability_hunter_pet_dragonhawk").setEnable().doRight = function(pButton)
120 | MultiBot.OnOffActionToTarget(pButton, "co +bdps,?", "co -bdps,?", pButton.getName())
121 | end
122 | end
123 |
124 | -- DPS --
125 |
126 | pFrame.addButton("DpsControl", -60, 0, "ability_warrior_challange", MultiBot.tips.hunter.dps.master)
127 | .doLeft = function(pButton)
128 | MultiBot.ShowHideSwitch(pButton.getFrame("DpsControl"))
129 | end
130 |
131 | local tFrame = pFrame.addFrame("DpsControl", -62, 30)
132 | tFrame:Hide()
133 |
134 | tFrame.addButton("DpsAssist", 0, 0, "spell_holy_heroism", MultiBot.tips.hunter.dps.dpsAssist).setDisable()
135 | .doLeft = function(pButton)
136 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps assist,?", "co -dps assist,?", pButton.getName())) then
137 | pButton.getButton("TankAssist").setDisable()
138 | pButton.getButton("DpsAoe").setDisable()
139 | end
140 | end
141 |
142 | tFrame.addButton("DpsDebuff", 0, 26, "spell_holy_restoration", MultiBot.tips.hunter.dps.dpsDebuff).setDisable()
143 | .doLeft = function(pButton)
144 | MultiBot.OnOffActionToTarget(pButton, "co +dps debuff,?", "co -dps debuff,?", pButton.getName())
145 | end
146 |
147 | tFrame.addButton("DpsAoe", 0, 52, "spell_holy_surgeoflight", MultiBot.tips.hunter.dps.dpsAoe).setDisable()
148 | .doLeft = function(pButton)
149 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps aoe,?", "co -dps aoe,?", pButton.getName())) then
150 | pButton.getButton("TankAssist").setDisable()
151 | pButton.getButton("DpsAssist").setDisable()
152 | end
153 | end
154 |
155 | tFrame.addButton("Dps", 0, 78, "spell_holy_divinepurpose", MultiBot.tips.hunter.dps.dps).setDisable()
156 | .doLeft = function(pButton)
157 | MultiBot.OnOffActionToTarget(pButton, "co +dps,?", "co -dps,?", pButton.getName())
158 | end
159 |
160 | -- ASSIST --
161 |
162 | pFrame.addButton("TankAssist", -90, 0, "ability_warrior_innerrage", MultiBot.tips.hunter.tankAssist).setDisable()
163 | .doLeft = function(pButton)
164 | if(MultiBot.OnOffActionToTarget(pButton, "co +tank assist,?", "co -tank assist,?", pButton.getName())) then
165 | pButton.getButton("DpsAssist").setDisable()
166 | pButton.getButton("DpsAoe").setDisable()
167 | end
168 | end
169 |
170 | -- STRATEGIES --
171 |
172 | if(MultiBot.isInside(pCombat, "dps,")) then pFrame.getButton("Dps").setEnable() end
173 | if(MultiBot.isInside(pCombat, "dps aoe")) then pFrame.getButton("DpsAoe").setEnable() end
174 | if(MultiBot.isInside(pCombat, "dps assist")) then pFrame.getButton("DpsAssist").setEnable() end
175 | if(MultiBot.isInside(pCombat, "dps debuff")) then pFrame.getButton("DpsDebuff").setEnable() end
176 | if(MultiBot.isInside(pCombat, "tank assist")) then pFrame.getButton("TankAssist").setEnable() end
177 | end
--------------------------------------------------------------------------------
/MultiBotItem.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addItem = function(pFrame, pInfo)
2 | local tInfo = MultiBot.doSplit(pInfo, "|")
3 | local tID = MultiBot.doSplit(tInfo[3], ":")[2]
4 |
5 | local tIcon = GetItemIcon(tID)
6 | local tName, tLink, tRare = GetItemInfo(tID)
7 |
8 | local tX = (pFrame.index%8) * 38
9 | local tY = math.floor(pFrame.index/8) * -37.1
10 |
11 | if(tName == nil) then tName = string.sub(tInfo[4], 3, string.len(tInfo[4]) - 1) end
12 | if(tLink == nil) then tLink = "|" .. tInfo[2] .. "|" .. tInfo[3] .. "|" .. tInfo[4] .. "|h|r" end
13 | if(tRare == nil) then tRare = 4 end -- for Security
14 |
15 | local tButton = pFrame.addButton(tName, tX, tY, tIcon, tLink)
16 | pFrame.catButton("Catecher", 270, -490, 308, 524)
17 |
18 | tButton.item = {}
19 | tButton.item.id = tID
20 | tButton.item.link = tLink
21 | tButton.item.name = tName
22 | tButton.item.info = pInfo
23 | tButton.item.rare = tRare
24 |
25 | tButton.doLeft = function(pButton)
26 | local tAction = MultiBot.inventory.action
27 | local tName = MultiBot.inventory.name
28 |
29 | if(tAction == "") then
30 | SendChatMessage(MultiBot.info.action, "SAY")
31 | return
32 | end
33 |
34 | if(tAction == "s" and MultiBot.isTarget()) then
35 | if(pButton.item.id == "6948") then return SendChatMessage("I cant sell this Item.", "SAY") end
36 | if(MultiBot.isInside(pButton.item.info, "key")) then return SendChatMessage("I will not sell Keys.", "SAY") end
37 | if(MultiBot.isInside(pButton.item.info, "Key")) then return SendChatMessage("I will not sell Keys.", "SAY") end
38 | SendChatMessage(tAction .. " " .. pButton.tip, "WHISPER", nil, tName)
39 | pButton:Hide()
40 | return
41 | end
42 |
43 | if(tAction == "e" or tAction == "u" or tAction == "give") then
44 | SendChatMessage(tAction .. " " .. pButton.tip, "WHISPER", nil, tName)
45 | return
46 | end
47 |
48 | if(tAction == "destroy") then
49 | if(pButton.item.id == "6948") then return SendChatMessage("I cant drop this Item.", "SAY") end
50 | if(MultiBot.isInside(pButton.item.info, "key")) then return SendChatMessage("I will not drop Keys.", "SAY") end
51 | if(MultiBot.isInside(pButton.item.info, "Key")) then return SendChatMessage("I will not drop Keys.", "SAY") end
52 | if(pButton.item.rare > 3) then return SendChatMessage("I will not drop that good Items.", "SAY") end
53 | SendChatMessage(tAction .. " " .. pButton.tip, "WHISPER", nil, tName)
54 | pButton:Hide()
55 | return
56 | end
57 | end
58 |
59 | if(string.sub(tInfo[6], 1, 2) == "rx") then
60 | tButton.setAmount(string.sub(MultiBot.doSplit(tInfo[6], " ")[1], 3))
61 | end
62 |
63 | pFrame.index = pFrame.index + 1
64 | end
--------------------------------------------------------------------------------
/MultiBotMage.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addMage = function(pFrame, pCombat, pNormal)
2 | local tButton = pFrame.addButton("Buff", 0, 0, "inv_elemental_primal_mana", MultiBot.tips.mage.buff.master)
3 | tButton.doLeft = function(pButton)
4 | MultiBot.ShowHideSwitch(pButton.parent.frames["Buff"])
5 | end
6 |
7 | local tFrame = pFrame.addFrame("Buff", -2, 30)
8 | tFrame:Hide()
9 |
10 | tFrame.addButton("NonCombatMana", 0, 0, "inv_elemental_primal_mana", MultiBot.tips.mage.buff.bmana)
11 | .doLeft = function(pButton)
12 | MultiBot.SelectToTarget(pButton.get(), "Buff", pButton.texture, "nc +bmana,?", pButton.getName())
13 | pButton.getButton("Buff").doRight = function(pButton)
14 | MultiBot.OnOffActionToTarget(pButton, "nc +bmana,?", "nc -bmana,?", pButton.getName())
15 | end
16 | end
17 |
18 | tFrame.addButton("NonCombatDps", 0, 26, "inv_elemental_primal_nether", MultiBot.tips.mage.buff.bdps)
19 | .doLeft = function(pButton)
20 | MultiBot.SelectToTarget(pButton.get(), "Buff", pButton.texture, "nc +bdps,?", pButton.getName())
21 | pButton.getButton("Buff").doRight = function(pButton)
22 | MultiBot.OnOffActionToTarget(pButton, "nc +bdps,?", "nc -bdps,?", pButton.getName())
23 | end
24 | end
25 |
26 | -- STRATEGIES:BUFF --
27 |
28 | if(MultiBot.isInside(pNormal, "bmana")) then
29 | tButton.setTexture("inv_elemental_primal_mana").setEnable().doRight = function(pButton)
30 | MultiBot.OnOffActionToTarget(pButton, "nc +bmana,?", "nc -bmana,?", pButton.getName())
31 | end
32 | elseif(MultiBot.isInside(pNormal, "bdps")) then
33 | tButton.setTexture("inv_elemental_primal_nether").setEnable().doRight = function(pButton)
34 | MultiBot.OnOffActionToTarget(pButton, "nc +bdps,?", "nc -bdps,?", pButton.getName())
35 | end
36 | end
37 |
38 | -- PLAYBOOK --
39 |
40 | pFrame.addButton("Playbook", -30, 0, "inv_misc_book_06", MultiBot.tips.mage.playbook.master)
41 | .doLeft = function(pButton)
42 | MultiBot.ShowHideSwitch(pButton.getFrame("Playbook"))
43 | end
44 |
45 | tFrame = pFrame.addFrame("Playbook", -32, 30)
46 | tFrame:Hide()
47 |
48 | tFrame.addButton("ArcaneAoe", 0, 0, "spell_arcane_starfire", MultiBot.tips.mage.playbook.arcaneAoe).setDisable()
49 | .doLeft = function(pButton)
50 | MultiBot.OnOffActionToTarget(pButton, "co +arcane aoe,?", "co -arcane aoe,?", pButton.getName())
51 | end
52 |
53 | tFrame.addButton("Arcane", 0, 26, "ability_mage_arcanebarrage", MultiBot.tips.mage.playbook.arcane).setDisable()
54 | .doLeft = function(pButton)
55 | if(MultiBot.OnOffActionToTarget(pButton, "co +arcane,?", "co -arcane,?", pButton.getName())) then
56 | pButton.getButton("Frost").setDisable()
57 | pButton.getButton("Fire").setDisable()
58 | end
59 | end
60 |
61 | tFrame.addButton("FrostAoe", 0, 52, "spell_frost_freezingbreath", MultiBot.tips.mage.playbook.frostAoe).setDisable()
62 | .doLeft = function(pButton)
63 | MultiBot.OnOffActionToTarget(pButton, "co +frost aoe,?", "co -frost aoe,?", pButton.getName())
64 | end
65 |
66 | tFrame.addButton("Frost", 0, 78, "spell_frost_frostbolt02", MultiBot.tips.mage.playbook.frost).setDisable()
67 | .doLeft = function(pButton)
68 | if(MultiBot.OnOffActionToTarget(pButton, "co +frost,?", "co -frost,?", pButton.getName())) then
69 | pButton.getButton("Arcane").setDisable()
70 | pButton.getButton("Fire").setDisable()
71 | end
72 | end
73 |
74 | tFrame.addButton("FireAoe", 0, 104, "spell_shadow_rainoffire", MultiBot.tips.mage.playbook.fireAoe).setDisable()
75 | .doLeft = function(pButton)
76 | MultiBot.OnOffActionToTarget(pButton, "co +fire aoe,?", "co -fire aoe,?", pButton.getName())
77 | end
78 |
79 | tFrame.addButton("Fire", 0, 130, "spell_fire_fireball02", MultiBot.tips.mage.playbook.fire).setDisable()
80 | .doLeft = function(pButton)
81 | if(MultiBot.OnOffActionToTarget(pButton, "co +fire,?", "co -fire,?", pButton.getName())) then
82 | pButton.getButton("Arcane").setDisable()
83 | pButton.getButton("Frost").setDisable()
84 | end
85 | end
86 |
87 | -- STRATEGIES:PLAYBOOK --
88 |
89 | if(MultiBot.isInside(pCombat, "arcane aoe")) then pFrame.getButton("ArcaneAoe").setEnable() end
90 | if(MultiBot.isInside(pCombat, "arcane,")) then pFrame.getButton("Arcane").setEnable() end
91 | if(MultiBot.isInside(pCombat, "frost aoe")) then pFrame.getButton("FrostAoe").setEnable() end
92 | if(MultiBot.isInside(pCombat, "frost,")) then pFrame.getButton("Frost").setEnable() end
93 | if(MultiBot.isInside(pCombat, "fire aoe")) then pFrame.getButton("FireAoe").setEnable() end
94 | if(MultiBot.isInside(pCombat, "fire,")) then pFrame.getButton("Fire").setEnable() end
95 |
96 | -- DPS --
97 |
98 | pFrame.addButton("DpsControl", -60, 0, "ability_warrior_challange", MultiBot.tips.mage.dps.master)
99 | .doLeft = function(pButton)
100 | MultiBot.ShowHideSwitch(pButton.getFrame("DpsControl"))
101 | end
102 |
103 | local tFrame = pFrame.addFrame("DpsControl", -62, 30)
104 | tFrame:Hide()
105 |
106 | tFrame.addButton("DpsAssist", 0, 0, "spell_holy_heroism", MultiBot.tips.mage.dps.dpsAssist).setDisable()
107 | .doLeft = function(pButton)
108 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps assist,?", "co -dps assist,?", pButton.getName())) then
109 | pButton.getButton("TankAssist").setDisable()
110 | pButton.getButton("DpsAoe").setDisable()
111 | end
112 | end
113 |
114 | tFrame.addButton("DpsAoe", 0, 26, "spell_holy_surgeoflight", MultiBot.tips.mage.dps.dpsAoe).setDisable()
115 | .doLeft = function(pButton)
116 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps aoe,?", "co -dps aoe,?", pButton.getName())) then
117 | pButton.getButton("TankAssist").setDisable()
118 | pButton.getButton("DpsAssist").setDisable()
119 | end
120 | end
121 |
122 | -- ASSIST --
123 |
124 | pFrame.addButton("TankAssist", -90, 0, "ability_warrior_innerrage", MultiBot.tips.mage.tankAssist).setDisable()
125 | .doLeft = function(pButton)
126 | if(MultiBot.OnOffActionToTarget(pButton, "co +tank assist,?", "co -tank assist,?", pButton.getName())) then
127 | pButton.getButton("DpsAssist").setDisable()
128 | pButton.getButton("DpsAoe").setDisable()
129 | end
130 | end
131 |
132 | -- STRATEGIES --
133 |
134 | if(MultiBot.isInside(pCombat, "dps aoe")) then pFrame.getButton("DpsAoe").setEnable() end
135 | if(MultiBot.isInside(pCombat, "dps assist")) then pFrame.getButton("DpsAssist").setEnable() end
136 | if(MultiBot.isInside(pCombat, "tank assist")) then pFrame.getButton("TankAssist").setEnable() end
137 | end
--------------------------------------------------------------------------------
/MultiBotNecronet.lua:
--------------------------------------------------------------------------------
1 | MultiBot.data.necronet = {
2 | [1078] = { 3, 476, 5, 35.9, 16.9 },
3 | [1251] = { 3, 474, 4, 57.6, 59.2 },
4 | [1450] = { 2, 24, 14, 15.8, 55.6 },
5 | [509] = { 2, 23, 29, 45, 85.8 },
6 | [1020] = { 3, 479, 7, 41, 83.1 },
7 | [107] = { 2, 31, 27, 32.4, 52.4 },
8 | [2] = { 2, 37, 15, 34.2, 42.8 },
9 | [1302] = { 4, 491, 7, 59.8, 33.3 },
10 | [1278] = { 1, 202, 14, 45.3, 7.8 },
11 | [1084] = { 3, 476, 5, 61.5, 7 },
12 | [1381] = { 4, 493, 6, 85.4, 80.3 },
13 | [1451] = { 2, 23, 29, 49.8, 24.5 },
14 | [1146] = { 3, 480, 3, 45.6, 74.3 },
15 | [1307] = { 4, 489, 5, 82.1, 25.9 },
16 | [1221] = { 3, 480, 3, 74.5, 34.7 },
17 | [1280] = { 1, 82, 19, 40.1, 5.7 },
18 | [1316] = { 4, 489, 5, 42.3, 29.7 },
19 | [1473] = { 2, 36, 12, 64.7, 45.8 },
20 | [1187] = { 3, 480, 3, 47.5, 31.5 },
21 | [950] = { 3, 466, 1, 74.8, 35 },
22 | [1023] = { 3, 479, 7, 54.7, 82.4 },
23 | [1088] = { 3, 476, 5, 75.7, 18.7 },
24 | [1151] = { 3, 480, 3, 32.1, 80.1 },
25 | [1264] = { 1, 142, 11, 46.5, 57.1 },
26 | [1043] = { 3, 468, 8, 43.6, 31.6 },
27 | [1330] = { 4, 502, 11, 29.2, 31 },
28 | [959] = { 3, 466, 1, 94.2, 59.6 },
29 | [1006] = { 3, 478, 2, 33.5, 82.3 },
30 | [952] = { 3, 466, 1, 81.1, 45.7 },
31 | [1092] = { 3, 476, 5, 69, 48.5 },
32 | [1459] = { 2, 38, 16, 44, 32.4 },
33 | [1046] = { 3, 480, 3, 33.9, 65.2 },
34 | [978] = { 3, 468, 8, 20.8, 15.6 },
35 | [249] = { 1, 12, 4, 60.2, 39.9 },
36 | [1080] = { 3, 476, 5, 43.5, 25.6 },
37 | [1460] = { 2, 38, 16, 28.1, 19.6 },
38 | [984] = { 3, 468, 8, 15.8, 17.6 },
39 | [1061] = { 3, 474, 4, 73, 28.6 },
40 | [99] = { 2, 17, 2, 64.6, 48.9 },
41 | [850] = { 1, 5, 10, 47.3, 17.9 },
42 | [962] = { 3, 466, 1, 82.6, 56.5 },
43 | [947] = { 3, 466, 1, 72.8, 25.4 },
44 | [1346] = { 4, 494, 10, 76.6, 60.9 },
45 | [1391] = { 4, 511, 9, 28.5, 34.1 },
46 | [6] = { 2, 36, 12, 32.2, 47 },
47 | [1159] = { 3, 480, 3, 24, 63.6 },
48 | [911] = { 2, 35, 4, 20, 49.5 },
49 | [1325] = { 4, 487, 1, 33.2, 53.5 },
50 | [1341] = { 4, 494, 10, 25, 57.4 },
51 | [1267] = { 4, 492, 3, 26.4, 59.2 },
52 | [1370] = { -1, 503, 0, 54.9, 57 },
53 | [1289] = { 1, 12, 4, 45.8, 82.7 },
54 | [1277] = { 1, 202, 14, 50, 56.1 },
55 | [1089] = { 3, 476, 5, 80.7, 26.4 },
56 | [1138] = { 3, 480, 3, 35.4, 52.1 },
57 | [630] = { 1, 182, 1, 70.4, 16.4 },
58 | [1101] = { 3, 476, 5, 71.8, 77.8 },
59 | [409] = { 1, 82, 19, 57.6, 62 },
60 | [3] = { 2, 35, 4, 74.9, 58.8 },
61 | [1087] = { 3, 476, 5, 74.1, 13.3 },
62 | [7] = { 2, 41, 22, 49.5, 41.4 },
63 | [1086] = { 3, 476, 5, 73.7, 8.9 },
64 | [1431] = { 1, 12, 4, 51, 12.2 },
65 | [1375] = { 2, 302, 20, 18.4, 25.4 },
66 | [1196] = { 3, 480, 3, 46.5, 65.5 },
67 | [108] = { 2, 39, 21, 50.3, 61.9 },
68 | [1401] = { 4, 496, 4, 28.9, 38.2 },
69 | [1313] = { 4, 489, 5, 13.9, 52.8 },
70 | [1682] = { 4, 493, 6, 53.9, 71.3 },
71 | [450] = { 1, 202, 14, 80.3, 50.2 },
72 | [1324] = { 4, 487, 1, 77.8, 34.4 },
73 | [1052] = { 3, 474, 4, 49.8, 19.2 },
74 | [1079] = { 3, 476, 5, 41.6, 15.7 },
75 | [1239] = { 3, 480, 3, 61.3, 86.5 },
76 | [943] = { 3, 466, 1, 50.1, 26.1 },
77 | [1323] = { 4, 487, 1, 82, 48.3 },
78 | [1201] = { 3, 480, 3, 65.2, 69.6 },
79 | [1024] = { 3, 474, 4, 43.9, 12.8 },
80 | [1308] = { 4, 489, 5, 83.3, 51 },
81 | [1032] = { 3, 479, 7, 73.5, 30.5 },
82 | [909] = { 2, 24, 14, 42.8, 39.3 },
83 | [1095] = { 3, 476, 5, 76, 59 },
84 | [1071] = { 3, 474, 4, 34.5, 67.1 },
85 | [1403] = { 4, 496, 4, 42.5, 79.6 },
86 | [1455] = { 2, 41, 22, 33.1, 29.2 },
87 | [1051] = { 3, 479, 7, 62.9, 81.7 },
88 | [1145] = { 3, 480, 3, 47.6, 71.1 },
89 | [1181] = { 3, 480, 3, 50.6, 15.4 },
90 | [1191] = { 3, 480, 3, 39.9, 42 },
91 | [1332] = { 4, 502, 11, 72.2, 29.1 },
92 | [960] = { 3, 466, 1, 91.7, 70.8 },
93 | [1236] = { 3, 480, 3, 50.5, 88.6 },
94 | [1436] = { 1, 10, 16, 61.9, 26.2 },
95 | [149] = { 2, 25, 26, 51.8, 53.1 },
96 | [1311] = { 4, 489, 5, 27.2, 55.5 },
97 | [1210] = { 3, 480, 3, 50, 46.2 },
98 | [1047] = { 3, 474, 4, 32.5, 28.7 },
99 | [1069] = { 3, 474, 4, 40, 71.5 },
100 | [979] = { 3, 468, 8, 34.1, 16 },
101 | [1319] = { 4, 487, 1, 30.6, 33.2 },
102 | [1284] = { 1, 282, 24, 29.1, 43 },
103 | [1049] = { 3, 476, 5, 38.3, 67.8 },
104 | [1013] = { 3, 479, 7, 16.2, 66.1 },
105 | [1274] = { 4, 492, 3, 53.8, 75.9 },
106 | [916] = { 2, 464, 8, 61.1, 56.9 },
107 | [935] = { 3, 466, 1, 51.3, 21.4 },
108 | [1240] = { 3, 466, 1, 68.6, 27 },
109 | [1185] = { 3, 480, 3, 53.8, 27.4 },
110 | [1439] = { 1, 162, 20, 36.3, 68.9 },
111 | [1040] = { 3, 466, 1, 64.5, 22.7 },
112 | [1140] = { 3, 480, 3, 38, 58.8 },
113 | [1238] = { 3, 480, 3, 58.4, 90.8 },
114 | [1173] = { 3, 480, 3, 31.8, 28.5 },
115 | [1304] = { 4, 491, 7, 23, 44.3 },
116 | [1273] = { 4, 492, 3, 75.2, 72.2 },
117 | [1009] = { 3, 478, 2, 58.2, 89.2 },
118 | [1334] = { 4, 502, 11, 36.8, 69.6 },
119 | [1212] = { 3, 480, 3, 52.5, 42.9 },
120 | [930] = { 3, 478, 2, 63.2, 68.9 },
121 | [852] = { 2, 28, 5, 54.4, 39.2 },
122 | [39] = { 1, 62, 21, 30.3, 23.5 },
123 | [1376] = { 4, 492, 3, 59.2, 49.9 },
124 | [928] = { 3, 468, 8, 36.8, 47.7 },
125 | [1444] = { 1, 262, 18, 50.3, 86.5 },
126 | [948] = { 3, 466, 1, 69.5, 32.7 },
127 | [1222] = { 3, 480, 3, 71.7, 33.8 },
128 | [926] = { 1, 477, 3, 30.4, 45.8 },
129 | [1373] = { 1, 142, 11, 74.4, 49.6 },
130 | [1018] = { 3, 479, 7, 31.1, 80.9 },
131 | [1235] = { 3, 480, 3, 46.3, 87.4 },
132 | [709] = { 1, 5, 10, 44.1, 69.3 },
133 | [1070] = { 3, 474, 4, 35.3, 70.7 },
134 | [915] = { 2, 464, 8, 43.8, 26 },
135 | [1290] = { 4, 487, 1, 73.8, 48.3 },
136 | [1102] = { 3, 476, 5, 69.5, 77.2 },
137 | [1193] = { 3, 480, 3, 39.3, 53.3 },
138 | [1427] = { 1, 44, 12, 59.5, 62 },
139 | [1333] = { 4, 502, 11, 64.6, 70.5 },
140 | [1393] = { 4, 489, 5, 87.5, 57.6 },
141 | [1067] = { 3, 474, 4, 57.1, 77.6 },
142 | [1033] = { 3, 479, 7, 70.5, 29.1 },
143 | [1034] = { 3, 479, 7, 65.2, 29.4 },
144 | [1429] = { 1, 82, 19, 45.1, 37.4 },
145 | [1303] = { 4, 491, 7, 70.6, 40 },
146 | [1045] = { 3, 480, 3, 42.9, 29.4 },
147 | [1134] = { 3, 480, 3, 24.3, 52.9 },
148 | [1030] = { 3, 479, 7, 78.4, 38.2 },
149 | [1090] = { 3, 476, 5, 80, 30 },
150 | [1135] = { 3, 480, 3, 27.4, 50.5 },
151 | [1017] = { 3, 479, 7, 27.1, 77.8 },
152 | [1471] = { 2, 28, 5, 35.8, 45.9 },
153 | [1286] = { 2, 23, 29, 59.7, 53.3 },
154 | [1243] = { 3, 476, 5, 33.6, 58.4 },
155 | [449] = { 1, 183, 23, 56.4, 86.8 },
156 | [1446] = { 2, 17, 2, 32.8, 50.4 },
157 | [1216] = { 3, 480, 3, 66.7, 52.4 },
158 | [914] = { 2, 463, 10, 59.9, 64.1 },
159 | [1452] = { 2, 25, 26, 29.6, 45.8 },
160 | [980] = { 3, 468, 8, 26.6, 18.4 },
161 | [1152] = { 3, 480, 3, 29.6, 81.3 },
162 | [977] = { 3, 468, 8, 34.2, 16.1 },
163 | [1409] = { 2, 21, 23, 50.1, 68.5 },
164 | [1183] = { 3, 480, 3, 57.3, 20.9 },
165 | [1380] = { 4, 511, 9, 76.6, 80.5 },
166 | [1166] = { 3, 480, 3, 32.1, 37.8 },
167 | [1198] = { 3, 480, 3, 52.8, 69.8 },
168 | [1094] = { 3, 476, 5, 72.6, 59.6 },
169 | [1270] = { 4, 492, 3, 53.8, 21.7 },
170 | [1447] = { 2, 25, 26, 79.4, 60.9 },
171 | [1217] = { 3, 480, 3, 67.6, 48.7 },
172 | [349] = { 2, 27, 9, 16.9, 44.5 },
173 | [934] = { 3, 466, 1, 27.5, 63.2 },
174 | [1233] = { 3, 480, 3, 49.7, 77.2 },
175 | [1253] = { 3, 476, 5, 60.3, 66.3 },
176 | [1337] = { 4, 492, 3, 56, 44.2 },
177 | [1074] = { 3, 476, 5, 29.1, 44 },
178 | [990] = { 3, 468, 8, 7.1, 56.8 },
179 | [35] = { 1, 43, 9, 41.7, 36.5 },
180 | [1456] = { 2, 41, 22, 59.5, 66.5 },
181 | [1154] = { 3, 480, 3, 23.9, 80.1 },
182 | [1438] = { 1, 62, 21, 77.6, 73.3 },
183 | [1318] = { 4, 487, 1, 45.7, 75.2 },
184 | [1148] = { 3, 480, 3, 39.6, 79.2 },
185 | [1164] = { 3, 480, 3, 26.5, 45.5 },
186 | [33] = { 1, 5, 10, 46.3, 12.8 },
187 | [1209] = { 3, 480, 3, 50.3, 50.2 },
188 | [1448] = { 2, 24, 14, 62.4, 21.8 },
189 | [1383] = { 4, 496, 4, 27.9, 65.7 },
190 | [1418] = { 1, 282, 24, 55.9, 86.1 },
191 | [1073] = { 3, 476, 5, 27.7, 56.7 },
192 | [1098] = { 3, 476, 5, 78.5, 72.9 },
193 | [1249] = { 1, 162, 20, 63.9, 49.7 },
194 | [1230] = { 3, 480, 3, 60.2, 77.6 },
195 | [609] = { 1, 182, 1, 54.4, 70.9 },
196 | [1268] = { 4, 492, 3, 38.1, 74.4 },
197 | [1048] = { 3, 474, 4, 39.6, 56.6 },
198 | [633] = { 1, 242, 15, 61.9, 69.2 },
199 | [1463] = { 2, 40, 28, 36, 24.9 },
200 | [1057] = { 3, 474, 4, 59.3, 22 },
201 | [631] = { 1, 142, 11, 39.5, 31.3 },
202 | [1291] = { 3, 479, 7, 50.4, 11.8 },
203 | [1055] = { 3, 474, 4, 57.3, 14.1 },
204 | [961] = { 3, 466, 1, 84.1, 67 },
205 | [1163] = { 3, 480, 3, 22.9, 44.5 },
206 | [1336] = { 4, 494, 10, 33.6, 84.7 },
207 | [1021] = { 3, 479, 7, 46.1, 80.7 },
208 | [1137] = { 3, 480, 3, 35.2, 48.8 },
209 | [1202] = { 3, 480, 3, 67.7, 68.9 },
210 | [789] = { 2, 27, 9, 72.7, 68.5 },
211 | [1441] = { 1, 122, 13, 57.4, 68.2 },
212 | [1144] = { 3, 480, 3, 45.3, 70.2 },
213 | [851] = { 1, 363, 8, 56.7, 19 },
214 | [1466] = { 2, 39, 21, 15.8, 47.5 },
215 | [1263] = { 3, 476, 5, 42.9, 21.7 },
216 | [1227] = { 3, 480, 3, 56.5, 36 },
217 | [1379] = { 4, 494, 10, 29.5, 32.2 },
218 | [649] = { 1, 5, 10, 57.2, 73.4 },
219 | [635] = { 1, 183, 23, 49.7, 31.2 },
220 | [1299] = { 3, 479, 7, 44.9, 39.8 },
221 | [129] = { 1, 42, 22, 56, 92.1 },
222 | [1189] = { 3, 480, 3, 48, 39.8 },
223 | [1306] = { 4, 491, 7, 47.6, 34.1 },
224 | [1063] = { 3, 474, 4, 75.8, 62.3 },
225 | [102] = { 2, 28, 5, 53, 35.7 },
226 | [98] = { 2, 25, 26, 64, 19.6 },
227 | [1395] = { 4, 493, 6, 41.2, 29.6 },
228 | [951] = { 3, 466, 1, 77.4, 41.2 },
229 | [969] = { 3, 468, 8, 47.5, 50.3 },
230 | [1266] = { 4, 492, 3, 37.8, 28.7 },
231 | [1207] = { 3, 480, 3, 55.7, 55.7 },
232 | [1279] = { 1, 82, 19, 36.4, 75 },
233 | [1453] = { 2, 27, 9, 58.5, 34.5 },
234 | [1228] = { 3, 480, 3, 54.6, 39.8 },
235 | [1474] = { 4, 502, 11, 50, 12.7 },
236 | [1402] = { 4, 496, 4, 33.6, 68.6 },
237 | [189] = { 1, 142, 11, 63.6, 42.6 },
238 | [1360] = { -1, 503, 0, 54.5, 34.3 },
239 | [1437] = { 1, 62, 21, 43.9, 47.6 },
240 | [1353] = { 4, 497, 12, 20.3, 63.4 },
241 | [1476] = { 1, 82, 19, 80.7, 92.7 },
242 | [963] = { 3, 466, 1, 77.9, 62.4 },
243 | [1225] = { 3, 480, 3, 59.9, 29.8 },
244 | [1184] = { 3, 480, 3, 57.5, 25.1 },
245 | [927] = { 2, 24, 14, 33.9, 64.2 },
246 | [1136] = { 3, 480, 3, 31.7, 50.3 },
247 | [97] = { 2, 22, 19, 44.3, 41.1 },
248 | [289] = { 2, 21, 23, 56.2, 49.4 },
249 | [1075] = { 3, 476, 5, 29.1, 33.4 },
250 | [209] = { 1, 162, 20, 54, 28.6 },
251 | [1180] = { 3, 480, 3, 48.2, 11.7 },
252 | [1468] = { 2, 31, 27, 61.7, 70.2 },
253 | [1465] = { 2, 39, 21, 82.8, 45.7 },
254 | [1237] = { 3, 480, 3, 55.2, 90.9 },
255 | [917] = { 2, 464, 8, 80.4, 69.8 },
256 | [1265] = { 1, 142, 11, 41, 74.3 },
257 | [1435] = { 1, 10, 16, 61.6, 71.6 },
258 | [1493] = { 1, 12, 4, 36.9, 33.4 },
259 | [953] = { 3, 466, 1, 83.4, 39.1 },
260 | [975] = { 3, 468, 8, 89.3, 34.4 },
261 | [1068] = { 3, 474, 4, 43.2, 72.8 },
262 | [1179] = { 3, 480, 3, 46.9, 6.8 },
263 | [1171] = { 3, 480, 3, 34.9, 39.3 },
264 | [1352] = { 4, 497, 12, 37.4, 59 },
265 | [1053] = { 3, 474, 4, 51.6, 14.4 },
266 | [1027] = { 3, 474, 4, 46.5, 19.2 },
267 | [981] = { 3, 468, 8, 21.2, 6.8 },
268 | [1044] = { 3, 468, 8, 17.1, 47.7 },
269 | [104] = { 2, 37, 15, 21.5, 57.2 },
270 | [1372] = { 1, 202, 14, 50.6, 6 },
271 | [853] = { 2, 383, 24, 67.9, 15.3 },
272 | [1007] = { 3, 478, 2, 40.1, 85.9 },
273 | [1099] = { 3, 476, 5, 78.9, 77.1 },
274 | [1085] = { 3, 476, 5, 66.9, 8 },
275 | [1419] = { 1, 182, 1, 45.3, 30.2 },
276 | [1252] = { 3, 480, 3, 56.6, 83.2 },
277 | [1433] = { 1, 12, 4, 47, 45.8 },
278 | [985] = { 3, 468, 8, 13.8, 24.8 },
279 | [1213] = { 3, 480, 3, 55, 48.6 },
280 | [1139] = { 3, 480, 3, 37.4, 55.3 },
281 | [1011] = { 3, 478, 2, 63.3, 81.6 },
282 | [1208] = { 3, 480, 3, 52.2, 52.8 },
283 | [1430] = { 1, 12, 4, 42.6, 21.5 },
284 | [1331] = { 4, 502, 11, 20.8, 34.5 },
285 | [1470] = { 2, 30, 3, 71.8, 49 },
286 | [369] = { 1, 182, 1, 14.4, 78.7 },
287 | [1081] = { 3, 476, 5, 48.6, 20.8 },
288 | [1398] = { 4, 491, 7, 16.6, 31.3 },
289 | [511] = { 1, 282, 24, 61.2, 35 },
290 | [1091] = { 3, 476, 5, 75.7, 42.3 },
291 | [1142] = { 3, 480, 3, 41.6, 65.5 },
292 | [1223] = { 3, 480, 3, 68.3, 32.2 },
293 | [1424] = { 1, 102, 6, 72.3, 66.9 },
294 | [10] = { 1, 12, 4, 50.8, 32.6 },
295 | [429] = { 2, 21, 23, 79.2, 40.9 },
296 | [993] = { 3, 478, 2, 42.7, 46 },
297 | [1029] = { 3, 479, 7, 75.2, 45.8 },
298 | [1405] = { 2, 24, 14, 83.7, 50 },
299 | [946] = { 3, 466, 1, 74.6, 18.3 },
300 | [1160] = { 3, 480, 3, 25.4, 60.1 },
301 | [4] = { 2, 40, 28, 52, 49.2 },
302 | [1355] = { 4, 497, 12, 47.2, 82 },
303 | [1150] = { 3, 480, 3, 34.9, 79 },
304 | [1005] = { 3, 478, 2, 28.9, 82.1 },
305 | [229] = { 1, 12, 4, 45.4, 61.1 },
306 | [1165] = { 3, 480, 3, 30.7, 44.7 },
307 | [1272] = { 4, 492, 3, 74.1, 59.5 },
308 | [1425] = { 1, 102, 6, 67, 31.2 },
309 | [1014] = { 3, 479, 7, 15.9, 72.8 },
310 | [569] = { 2, 21, 23, 82, 69.3 },
311 | [1282] = { 1, 162, 20, 49.4, 59.1 },
312 | [1220] = { 3, 480, 3, 74.4, 40 },
313 | [1186] = { 3, 480, 3, 50.7, 27.1 },
314 | [329] = { 1, 62, 21, 68.8, 53.3 },
315 | [1408] = { 4, 496, 4, 46.2, 65.5 },
316 | [1060] = { 3, 474, 4, 68.1, 28.8 },
317 | [1010] = { 3, 478, 2, 58.8, 82.2 },
318 | [634] = { 2, 24, 14, 35.1, 86 },
319 | [849] = { 1, 122, 13, 54.8, 48 },
320 | [1147] = { 3, 480, 3, 42.1, 77.6 },
321 | [1141] = { 3, 480, 3, 39.9, 61 },
322 | [1301] = { 4, 491, 7, 33.7, 56.6 },
323 | [1292] = { 2, 500, 11, 46.7, 32.3 },
324 | [91] = { 1, 42, 22, 56.3, 62.8 },
325 | [954] = { 3, 466, 1, 83.5, 34.3 },
326 | [1066] = { 3, 474, 4, 61.1, 68.1 },
327 | [1004] = { 3, 478, 2, 27.3, 77.1 },
328 | [1016] = { 3, 479, 7, 21.3, 79 },
329 | [1206] = { 3, 480, 3, 59.2, 57.6 },
330 | [1028] = { 3, 479, 7, 67.7, 87.5 },
331 | [1100] = { 3, 476, 5, 74.7, 77.5 },
332 | [1001] = { 3, 478, 2, 17.2, 53.6 },
333 | [34] = { 1, 10, 16, 42.8, 78 },
334 | [1281] = { 1, 162, 20, 68.9, 40.9 },
335 | [1285] = { 4, 502, 11, 47.9, 9 },
336 | [999] = { 3, 478, 2, 25.6, 20.1 },
337 | [1157] = { 3, 480, 3, 18.6, 68.3 },
338 | [1077] = { 3, 476, 5, 31.8, 18.1 },
339 | [1457] = { 2, 41, 22, 73.4, 43.4 },
340 | [1002] = { 3, 478, 2, 17.6, 59.6 },
341 | [1250] = { 3, 474, 4, 63.7, 32.4 },
342 | [1357] = { 4, 497, 12, 70.1, 64.5 },
343 | [1321] = { 4, 487, 1, 56.1, 17.5 },
344 | [1224] = { 3, 480, 3, 63.8, 29.4 },
345 | [1256] = { 2, 22, 19, 55.5, 73.2 },
346 | [1356] = { 4, 497, 12, 53.8, 56.2 },
347 | [1454] = { 2, 27, 9, 38.2, 64.6 },
348 | [994] = { 3, 479, 7, 39.8, 22 },
349 | [31] = { 1, 102, 6, 38.3, 30 },
350 | [1378] = { 1, 5, 10, 67.4, 13.2 },
351 | [918] = { 1, 465, 2, 77.6, 49 },
352 | [1093] = { 3, 476, 5, 69.6, 57.1 },
353 | [1219] = { 3, 480, 3, 72.6, 45.2 },
354 | [1472] = { 2, 28, 5, 74.1, 48.7 },
355 | [991] = { 3, 468, 8, 8.4, 62.5 },
356 | [1050] = { 3, 476, 5, 52.1, 60.5 },
357 | [1371] = { -1, 503, 0, 39.2, 46.1 },
358 | [1178] = { 3, 480, 3, 45, 8.1 },
359 | [1283] = { 1, 282, 24, 62.6, 61.3 },
360 | [989] = { 3, 468, 8, 6.8, 51.1 },
361 | [988] = { 3, 468, 8, 10.9, 36.8 },
362 | [933] = { 3, 466, 1, 22.8, 37.7 },
363 | [1440] = { 1, 162, 20, 40.4, 40.8 },
364 | [1354] = { 4, 497, 12, 30.7, 72.8 },
365 | [1156] = { 3, 480, 3, 18.7, 73.9 },
366 | [992] = { 3, 478, 2, 40.3, 30.1 },
367 | [1276] = { 4, 492, 3, 69.6, 32.4 },
368 | [1369] = { 2, 24, 14, 86.5, 49.8 },
369 | [94] = { 2, 21, 23, 31.1, 64.9 },
370 | [986] = { 3, 468, 8, 15.4, 35.4 },
371 | [1062] = { 3, 474, 4, 74.6, 58.3 },
372 | [1205] = { 3, 480, 3, 62.7, 57.1 },
373 | [983] = { 3, 468, 8, 19.5, 2.9 },
374 | [982] = { 3, 468, 8, 15.9, 17.5 },
375 | [970] = { 3, 468, 8, 65.1, 51.4 },
376 | [1204] = { 3, 480, 3, 67.4, 58.7 },
377 | [974] = { 3, 468, 8, 88.2, 27.6 },
378 | [1384] = { 4, 496, 4, 42.3, 24.8 },
379 | [1392] = { 4, 511, 9, 74.9, 49.9 },
380 | [1175] = { 3, 480, 3, 35.1, 17.8 },
381 | [1170] = { 3, 480, 3, 36, 43.6 },
382 | [968] = { 3, 466, 1, 43.7, 86.9 },
383 | [958] = { 3, 466, 1, 93.1, 49.2 },
384 | [1162] = { 3, 480, 3, 21.9, 39.7 },
385 | [1388] = { 4, 496, 4, 72.6, 57.7 },
386 | [1254] = { 3, 476, 5, 37.3, 24.5 },
387 | [1257] = { 3, 479, 7, 22, 4.1 },
388 | [1168] = { 3, 480, 3, 25.2, 32.9 },
389 | [957] = { 3, 466, 1, 93.2, 41.3 },
390 | [956] = { 3, 466, 1, 90.7, 33.2 },
391 | [955] = { 3, 466, 1, 87, 31.8 },
392 | [972] = { 3, 468, 8, 31.7, 19.4 },
393 | [945] = { 3, 466, 1, 72.4, 9.7 },
394 | [1434] = { 1, 12, 4, 58.6, 19.8 },
395 | [469] = { 1, 43, 9, 43.4, 92.6 },
396 | [1300] = { 4, 491, 7, 16.6, 69 },
397 | [1215] = { 3, 480, 3, 62.4, 51.3 },
398 | [1244] = { 3, 476, 5, 69.3, 58 },
399 | [1058] = { 3, 474, 4, 63.9, 21.1 },
400 | [1155] = { 3, 480, 3, 19.5, 78.6 },
401 | [1190] = { 3, 480, 3, 44.2, 41 },
402 | [1469] = { 2, 30, 3, 37.1, 45.7 },
403 | [1039] = { 3, 478, 2, 32.9, 56.3 },
404 | [489] = { 2, 41, 22, 11.3, 43.5 },
405 | [1042] = { 3, 479, 7, 44.8, 71.2 },
406 | [1312] = { 4, 489, 5, 46.1, 75 },
407 | [965] = { 3, 466, 1, 59.3, 80.9 },
408 | [1076] = { 3, 476, 5, 28.3, 27 },
409 | [1153] = { 3, 480, 3, 26.7, 82.1 },
410 | [925] = { 1, 477, 3, 58.5, 58 },
411 | [966] = { 3, 466, 1, 55.8, 86.5 },
412 | [949] = { 3, 466, 1, 71.6, 39.9 },
413 | [913] = { 1, 262, 18, 28.1, 87.5 },
414 | [1203] = { 3, 480, 3, 69.2, 63.1 },
415 | [1377] = { 2, 22, 19, 51, 24.5 },
416 | [1329] = { 4, 502, 11, 68.1, 30.9 },
417 | [1445] = { 1, 262, 18, 35.8, 47.1 },
418 | [1461] = { 2, 35, 4, 48.7, 62.4 },
419 | [1322] = { 4, 487, 1, 50.5, 10 },
420 | [1192] = { 3, 480, 3, 42.8, 49.2 },
421 | [1231] = { 3, 480, 3, 56.1, 75.6 },
422 | [1320] = { 4, 487, 1, 47.7, 34.8 },
423 | [1199] = { 3, 480, 3, 57.2, 70 },
424 | [976] = { 3, 468, 8, 74.8, 27.8 },
425 | [1022] = { 3, 479, 7, 49.3, 84 },
426 | [1681] = { 1, 142, 11, 50, 72.1 },
427 | [1432] = { 1, 12, 4, 56, 51.8 },
428 | [921] = { 2, 463, 10, 47.9, 49.8 },
429 | [1072] = { 3, 476, 5, 26.9, 68.4 },
430 | [1056] = { 3, 474, 4, 57.9, 17.7 },
431 | [1310] = { 4, 489, 5, 39.3, 46.3 },
432 | [1397] = { 4, 493, 6, 75.3, 36.9 },
433 | [1200] = { 3, 480, 3, 61.8, 70.5 },
434 | [910] = { 1, 262, 18, 47.3, 37.6 },
435 | [1211] = { 3, 480, 3, 46.4, 46.2 },
436 | [93] = { 1, 42, 22, 59, 42.6 },
437 | [967] = { 3, 466, 1, 48.2, 85 },
438 | [1143] = { 3, 480, 3, 43.5, 67.6 },
439 | [854] = { 2, 31, 27, 83.8, 69.7 },
440 | [869] = { 2, 23, 29, 65.8, 74.3 },
441 | [70] = { 1, 262, 18, 80.8, 20.4 },
442 | [1015] = { 3, 479, 7, 17.3, 80.5 },
443 | [924] = { 1, 465, 2, 39.1, 19.5 },
444 | [1158] = { 3, 480, 3, 20.2, 64.2 },
445 | [1161] = { 3, 480, 3, 23.9, 56.5 },
446 | [36] = { 2, 33, 7, 40, 74.6 },
447 | [1478] = { 4, 493, 6, 79.6, 23 },
448 | [1059] = { 3, 474, 4, 67.6, 21.9 },
449 | [1232] = { 3, 480, 3, 52.7, 75.3 },
450 | [987] = { 3, 468, 8, 7.2, 46.4 },
451 | [1064] = { 3, 474, 4, 72.7, 68.1 },
452 | [1275] = { 4, 492, 3, 58.4, 60.7 },
453 | [1411] = { 2, 16, 1, 43.1, 37.8 },
454 | [1234] = { 3, 480, 3, 45.2, 80.2 },
455 | [1226] = { 3, 480, 3, 54.4, 32.5 },
456 | [103] = { 2, 18, 13, 8.4, 55.2 },
457 | [101] = { 2, 28, 5, 47.1, 54.9 },
458 | [100] = { 2, 28, 5, 29.8, 69.7 },
459 | [1000] = { 3, 478, 2, 22.6, 28.3 },
460 | [1359] = { 4, 505, 2, 34.8, 39.3 },
461 | [512] = { 1, 44, 12, 80.7, 58.6 },
462 | [5] = { 2, 28, 5, 47, 55.1 },
463 | [510] = { 2, 24, 14, 67.8, 61.3 },
464 | [1315] = { 4, 489, 5, 46.4, 20.4 },
465 | [920] = { 3, 466, 1, 54.9, 66.3 },
466 | [1248] = { 3, 466, 1, 60.1, 80 },
467 | [1309] = { 4, 489, 5, 77.2, 63 },
468 | [1026] = { 3, 474, 4, 47.5, 13.6 },
469 | [1031] = { 3, 479, 7, 76.2, 33.5 },
470 | [1287] = { 2, 29, 17, 54.5, 51.6 },
471 | [1400] = { 4, 496, 4, 54.3, 50 },
472 | [1172] = { 3, 480, 3, 33.2, 33.5 },
473 | [1720] = { 4, 492, 3, 73, 13.2 },
474 | [1358] = { 4, 497, 12, 84, 31.5 },
475 | [1065] = { 3, 474, 4, 66.8, 69.8 },
476 | [1255] = { 3, 476, 5, 74.5, 26.6 },
477 | [1038] = { 3, 478, 2, 66.9, 24.4 },
478 | [1037] = { 3, 478, 2, 20.4, 36.1 },
479 | [1041] = { 3, 466, 1, 87.4, 50.3 },
480 | [1008] = { 3, 478, 2, 53.9, 86.8 },
481 | [1464] = { 2, 20, 25, 51.4, 55.5 },
482 | [1247] = { 3, 480, 3, 64.8, 66.6 },
483 | [1174] = { 3, 480, 3, 34.1, 23.6 },
484 | [109] = { 2, 38, 16, 30.3, 73.3 },
485 | [1467] = { 2, 37, 15, 66.3, 62 },
486 | [1462] = { 2, 40, 28, 37.3, 77.9 },
487 | [370] = { 2, 20, 25, 51, 12.5 },
488 | [1082] = { 3, 476, 5, 50.8, 11.4 },
489 | [1035] = { 3, 479, 7, 62.6, 24.3 },
490 | [923] = { 1, 465, 2, 47.7, 56 },
491 | [1025] = { 3, 474, 4, 45, 10.1 },
492 | [1262] = { 3, 474, 4, 65.9, 45.7 },
493 | [1443] = { 1, 122, 13, 45.5, 20.8 },
494 | [1404] = { 4, 494, 10, 55.9, 77.5 },
495 | [106] = { 2, 31, 27, 39.3, 60.5 },
496 | [1083] = { 3, 476, 5, 55.9, 8.7 },
497 | [1269] = { 4, 492, 3, 44.9, 47.7 },
498 | [1420] = { 1, 182, 1, 32.9, 63.2 },
499 | [1197] = { 3, 480, 3, 49.3, 69.8 },
500 | [1241] = { 3, 476, 5, 63, 37.1 },
501 | [96] = { 2, 383, 24, 68.6, 8.6 },
502 | [1271] = { 4, 492, 3, 75.9, 29.6 },
503 | [1054] = { 3, 474, 4, 53.6, 13.9 },
504 | [1428] = { 1, 82, 19, 72.6, 50.1 },
505 | [1421] = { 1, 102, 6, 50.3, 63.1 },
506 | [1149] = { 3, 480, 3, 37.8, 80.9 },
507 | [1416] = { 1, 282, 24, 53.3, 16.2 },
508 | [942] = { 3, 466, 1, 46.4, 27.3 },
509 | [1417] = { 1, 282, 24, 45.4, 40.4 },
510 | [1096] = { 3, 476, 5, 76.7, 63.8 },
511 | [1177] = { 3, 480, 3, 42.6, 13.7 },
512 | [1396] = { 4, 493, 6, 52.4, 52.5 },
513 | [1195] = { 3, 480, 3, 44.7, 60.3 },
514 | [964] = { 3, 466, 1, 80.5, 80.1 },
515 | [912] = { 2, 463, 10, 38.1, 17.8 },
516 | [1169] = { 3, 480, 3, 22.9, 34.6 },
517 | [1394] = { 4, 489, 5, 27.9, 47.6 },
518 | [1342] = { 4, 494, 10, 47.7, 60.2 },
519 | [973] = { 3, 468, 8, 77.5, 64.1 },
520 | [1326] = { 4, 487, 1, 56.9, 62.9 },
521 | [1182] = { 3, 480, 3, 56.1, 16.2 },
522 | [922] = { 2, 463, 10, 44.4, 71 },
523 | [1387] = { 4, 496, 4, 39.9, 44.1 },
524 | [1242] = { 3, 476, 5, 61.4, 14.8 },
525 | [8] = { 2, 18, 13, 56.8, 24.1 },
526 | [310] = { 1, 122, 13, 73, 44.7 },
527 | [1385] = { 4, 496, 4, 60.4, 48.1 },
528 | [1317] = { 4, 487, 1, 45.1, 53.5 },
529 | [1194] = { 3, 480, 3, 41.5, 56.7 },
530 | [1288] = { 2, 18, 13, 56.7, 73 },
531 | [1176] = { 3, 480, 3, 38.7, 14.9 },
532 | [1229] = { 3, 480, 3, 62.8, 79.5 },
533 | [105] = { 2, 31, 27, 49.7, 43 },
534 | [32] = { 1, 5, 10, 53.5, 44.7 },
535 | [1442] = { 1, 122, 13, 83.8, 42.5 },
536 | [309] = { 1, 122, 13, 31.8, 48.1 },
537 | [1449] = { 2, 24, 14, 23.4, 13.6 },
538 | [995] = { 3, 479, 7, 59.6, 42.8 },
539 | [1477] = { 4, 489, 5, 63.8, 23.9 },
540 | [1097] = { 3, 476, 5, 76.8, 69 },
541 | [1188] = { 3, 480, 3, 49.9, 35.5 },
542 | [1343] = { 4, 494, 10, 40.5, 35.8 },
543 | [1261] = { 3, 474, 4, 65.6, 43 },
544 | [90] = { 1, 382, 5, 77.6, 26.1 },
545 | [389] = { 2, 38, 16, 38.4, 8.8 },
546 | [1374] = { 1, 5, 10, 64.9, 12.6 },
547 | [1167] = { 3, 480, 3, 28.6, 35.1 },
548 | [89] = { 1, 10, 16, 46.5, 55.5 },
549 | [1314] = { 4, 489, 5, 59.8, 54.5 },
550 | [1305] = { 4, 491, 7, 32.9, 73.8 },
551 | [1214] = { 3, 480, 3, 58.5, 51.4 },
552 | [1407] = { 4, 493, 6, 27.9, 54.5 },
553 | [636] = { 2, 29, 17, 35.4, 23.6 },
554 | [1019] = { 3, 479, 7, 35.8, 80.2 },
555 | [1012] = { 3, 478, 2, 68.5, 83.8 },
556 | [919] = { 3, 466, 1, 57.6, 38.4 },
557 | [1218] = { 3, 480, 3, 70.4, 47.8 },
558 | [1003] = { 3, 478, 2, 24.3, 72.2 },
559 | [1426] = { 1, 44, 12, 22.9, 45.4 },
560 | [92] = { 1, 44, 12, 40.4, 53.1 }
561 | }
562 |
563 | MultiBot.necronet = {}
564 | MultiBot.necronet.index = {}
565 | MultiBot.necronet.buttons = {}
566 | MultiBot.necronet.state = false
567 |
568 | for key, value in pairs(MultiBot.data.necronet) do
569 | if(MultiBot.necronet.index[value[1]] == nil) then MultiBot.necronet.index[value[1]] = {} end
570 | if(MultiBot.necronet.index[value[1]][value[2]] == nil) then MultiBot.necronet.index[value[1]][value[2]] = {} end
571 |
572 | local tX = WorldMapButton:GetWidth() * value[4] / 100 - WorldMapButton:GetWidth() + 12
573 | local tY = WorldMapButton:GetHeight() * -value[5] / 100 + WorldMapButton:GetHeight() - 12
574 |
575 | local tButton = MultiBot.newButton(WorldMapButton, tX, tY, 24, "achievement_bg_xkills_avgraveyard", key)
576 | tButton.graveyard = key
577 | tButton:Hide()
578 |
579 | tButton.doLeft = function(pButton)
580 | MultiBot.doDot(".go graveyard", pButton.graveyard)
581 | end
582 |
583 | table.insert(MultiBot.necronet.index[value[1]][value[2]], tButton)
584 | table.insert(MultiBot.necronet.buttons, tButton)
585 | end
--------------------------------------------------------------------------------
/MultiBotPaladin.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addPaladin = function(pFrame, pCombat, pNormal)
2 | pFrame.addButton("Heal", 0, 0, "spell_holy_aspiration", MultiBot.tips.paladin.heal).setDisable()
3 | .doLeft = function(pButton)
4 | if(MultiBot.OnOffActionToTarget(pButton, "co +heal,?", "co -heal,?", pButton.getName())) then
5 | pButton.getButton("Tank").setDisable()
6 | pButton.getButton("Dps").setDisable()
7 | end
8 | end
9 |
10 | -- SEAL --
11 |
12 | local tButton = pFrame.addButton("Seal", -30, 0, "spell_holy_healingaura", MultiBot.tips.paladin.seal.master)
13 | tButton.doLeft = function(pButton)
14 | MultiBot.ShowHideSwitch(pButton.parent.frames["Seal"])
15 | end
16 |
17 | local tFrame = pFrame.addFrame("Seal", -32, 30)
18 | tFrame:Hide()
19 |
20 | tFrame.addButton("SealHealth", 0, 0, "spell_holy_healingaura", MultiBot.tips.paladin.seal.bhealth)
21 | .doLeft = function(pButton)
22 | MultiBot.SelectToTarget(pButton.get(), "Seal", pButton.texture, "nc +bhealth,?", pButton.getName())
23 | pButton.getButton("Seal").doRight = function(pButton)
24 | MultiBot.OnOffActionToTarget(pButton, "nc +bhealth,?", "nc -bhealth,?", pButton.getName())
25 | end
26 | end
27 |
28 | tFrame.addButton("SealMana", 0, 26, "spell_holy_sealofwisdom", MultiBot.tips.paladin.seal.bmana)
29 | .doLeft = function(pButton)
30 | MultiBot.SelectToTarget(pButton.get(), "Seal", pButton.texture, "nc +bmana,?", pButton.getName())
31 | pButton.getButton("Seal").doRight = function(pButton)
32 | MultiBot.OnOffActionToTarget(pButton, "nc +bmana,?", "nc -bmana,?", pButton.getName())
33 | end
34 | end
35 |
36 | tFrame.addButton("SealStats", 0, 52, "spell_magic_magearmor", MultiBot.tips.paladin.seal.bstats)
37 | .doLeft = function(pButton)
38 | MultiBot.SelectToTarget(pButton.get(), "Seal", pButton.texture, "nc +bstats,?", pButton.getName())
39 | pButton.getButton("Seal").doRight = function(pButton)
40 | MultiBot.OnOffActionToTarget(pButton, "nc +bstats,?", "nc -bstats,?", pButton.getName())
41 | end
42 | end
43 |
44 | tFrame.addButton("SealDps", 0, 78, "inv_hammer_01", MultiBot.tips.paladin.seal.bdps)
45 | .doLeft = function(pButton)
46 | MultiBot.SelectToTarget(pButton.get(), "Seal", pButton.texture, "nc +bdps,?", pButton.getName())
47 | pButton.getButton("Seal").doRight = function(pButton)
48 | MultiBot.OnOffActionToTarget(pButton, "nc +bdps,?", "nc -bdps,?", pButton.getName())
49 | end
50 | end
51 |
52 | -- STRATEGIES:SEAL --
53 |
54 | if(MultiBot.isInside(pNormal, "bhealth")) then
55 | tButton.setTexture("spell_holy_healingaura").setEnable().doRight = function(pButton)
56 | MultiBot.OnOffActionToTarget(pButton, "nc +bhealth,?", "nc -bhealth,?", pButton.getName())
57 | end
58 | elseif(MultiBot.isInside(pNormal, "bmana")) then
59 | tButton.setTexture("spell_holy_sealofwisdom").setEnable().doRight = function(pButton)
60 | MultiBot.OnOffActionToTarget(pButton, "nc +bmana,?", "nc -bmana,?", pButton.getName())
61 | end
62 | elseif(MultiBot.isInside(pNormal, "bstats")) then
63 | tButton.setTexture("spell_magic_magearmor").setEnable().doRight = function(pButton)
64 | MultiBot.OnOffActionToTarget(pButton, "nc +bstats,?", "nc -bstats,?", pButton.getName())
65 | end
66 | elseif(MultiBot.isInside(pNormal, "bdps")) then
67 | tButton.setTexture("inv_hammer_01").setEnable().doRight = function(pButton)
68 | MultiBot.OnOffActionToTarget(pButton, "nc +bdps,?", "nc -bdps,?", pButton.getName())
69 | end
70 | end
71 |
72 | -- NON-COMBAT-AURA --
73 |
74 | local tButton = pFrame.addButton("NonCombatAura", -60, 0, "spell_holy_crusaderaura", MultiBot.tips.paladin.naura.master)
75 | tButton.doLeft = function(pButton)
76 | MultiBot.ShowHideSwitch(pButton.parent.frames["NonCombatAura"])
77 | end
78 |
79 | local tFrame = pFrame.addFrame("NonCombatAura", -62, 30)
80 | tFrame:Hide()
81 |
82 | tFrame.addButton("NonCombatSpeed", 0, 0, "spell_holy_crusaderaura", MultiBot.tips.paladin.naura.bspeed)
83 | .doLeft = function(pButton)
84 | MultiBot.SelectToTarget(pButton.get(), "NonCombatAura", pButton.texture, "nc +bspeed,?", pButton.getName())
85 | pButton.getButton("NonCombatAura").doRight = function(pButton)
86 | MultiBot.OnOffActionToTarget(pButton, "nc +bspeed,?", "nc -bspeed,?", pButton.getName())
87 | end
88 | end
89 |
90 | tFrame.addButton("NonCombatFire", 0, 26, "spell_fire_sealoffire", MultiBot.tips.paladin.naura.rfire)
91 | .doLeft = function(pButton)
92 | MultiBot.SelectToTarget(pButton.get(), "NonCombatAura", pButton.texture, "nc +rfire,?", pButton.getName())
93 | pButton.getButton("NonCombatAura").doRight = function(pButton)
94 | MultiBot.OnOffActionToTarget(pButton, "nc +rfire,?", "nc -rfire,?", pButton.getName())
95 | end
96 | end
97 |
98 | tFrame.addButton("NonCombatFrost", 0, 52, "spell_frost_wizardmark", MultiBot.tips.paladin.naura.rfrost)
99 | .doLeft = function(pButton)
100 | MultiBot.SelectToTarget(pButton.get(), "NonCombatAura", pButton.texture, "nc +rfrost,?", pButton.getName())
101 | pButton.getButton("NonCombatAura").doRight = function(pButton)
102 | MultiBot.OnOffActionToTarget(pButton, "nc +rfrost,?", "nc -rfrost,?", pButton.getName())
103 | end
104 | end
105 |
106 | tFrame.addButton("NonCombatShadow", 0, 78, "spell_shadow_sealofkings", MultiBot.tips.paladin.naura.rshadow)
107 | .doLeft = function(pButton)
108 | MultiBot.SelectToTarget(pButton.get(), "NonCombatAura", pButton.texture, "nc +rshadow,?", pButton.getName())
109 | pButton.getButton("NonCombatAura").doRight = function(pButton)
110 | MultiBot.OnOffActionToTarget(pButton, "nc +rshadow,?", "nc -rshadow,?", pButton.getName())
111 | end
112 | end
113 |
114 | tFrame.addButton("NonCombatDamage", 0, 104, "spell_holy_auraoflight", MultiBot.tips.paladin.naura.baoe)
115 | .doLeft = function(pButton)
116 | MultiBot.SelectToTarget(pButton.get(), "NonCombatAura", pButton.texture, "nc +baoe,?", pButton.getName())
117 | pButton.getButton("NonCombatAura").doRight = function(pButton)
118 | MultiBot.OnOffActionToTarget(pButton, "nc +baoe,?", "nc -baoe,?", pButton.getName())
119 | end
120 | end
121 |
122 | tFrame.addButton("NonCombatArmor", 0, 130, "spell_holy_devotionaura", MultiBot.tips.paladin.naura.barmor)
123 | .doLeft = function(pButton)
124 | MultiBot.SelectToTarget(pButton.get(), "NonCombatAura", pButton.texture, "nc +barmor,?", pButton.getName())
125 | pButton.getButton("NonCombatAura").doRight = function(pButton)
126 | MultiBot.OnOffActionToTarget(pButton, "nc +barmor,?", "nc -barmor,?", pButton.getName())
127 | end
128 | end
129 |
130 | tFrame.addButton("NonCombatCast", 0, 156, "spell_holy_mindsooth", MultiBot.tips.paladin.naura.bcast)
131 | .doLeft = function(pButton)
132 | MultiBot.SelectToTarget(pButton.get(), "NonCombatAura", pButton.texture, "nc +bcast,?", pButton.getName())
133 | pButton.getButton("NonCombatAura").doRight = function(pButton)
134 | MultiBot.OnOffActionToTarget(pButton, "nc +bcast,?", "nc -bcast,?", pButton.getName())
135 | end
136 | end
137 |
138 | -- STRATEGIES:NON-COMBAT-AURA --
139 |
140 | if(MultiBot.isInside(pNormal, "bspeed")) then
141 | tButton.setTexture("spell_holy_crusaderaura").setEnable().doRight = function(pButton)
142 | MultiBot.OnOffActionToTarget(pButton, "nc +bspeed,?", "nc -bspeed,?", pButton.getName())
143 | end
144 | elseif(MultiBot.isInside(pNormal, "rfire")) then
145 | tButton.setTexture("spell_fire_sealoffire").setEnable().doRight = function(pButton)
146 | MultiBot.OnOffActionToTarget(pButton, "nc +rfire,?", "nc -rfire,?", pButton.getName())
147 | end
148 | elseif(MultiBot.isInside(pNormal, "rfrost")) then
149 | tButton.setTexture("spell_frost_wizardmark").setEnable().doRight = function(pButton)
150 | MultiBot.OnOffActionToTarget(pButton, "nc +rfrost,?", "nc -rfrost,?", pButton.getName())
151 | end
152 | elseif(MultiBot.isInside(pNormal, "rshadow")) then
153 | tButton.setTexture("spell_shadow_sealofkings").setEnable().doRight = function(pButton)
154 | MultiBot.OnOffActionToTarget(pButton, "nc +rshadow,?", "nc -rshadow,?", pButton.getName())
155 | end
156 | elseif(MultiBot.isInside(pNormal, "baoe")) then
157 | tButton.setTexture("spell_holy_auraoflight").setEnable().doRight = function(pButton)
158 | MultiBot.OnOffActionToTarget(pButton, "nc +baoe,?", "nc -baoe,?", pButton.getName())
159 | end
160 | elseif(MultiBot.isInside(pNormal, "barmor")) then
161 | tButton.setTexture("spell_holy_devotionaura").setEnable().doRight = function(pButton)
162 | MultiBot.OnOffActionToTarget(pButton, "nc +barmor,?", "nc -barmor,?", pButton.getName())
163 | end
164 | elseif(MultiBot.isInside(pNormal, "bcast")) then
165 | tButton.setTexture("spell_holy_mindsooth").setEnable().doRight = function(pButton)
166 | MultiBot.OnOffActionToTarget(pButton, "nc +bcast,?", "nc -bcast,?", pButton.getName())
167 | end
168 | end
169 |
170 | -- COMBAT-AURA --
171 |
172 | local tButton = pFrame.addButton("CombatAura", -90, 0, "spell_holy_crusaderaura", MultiBot.tips.paladin.caura.master)
173 | tButton.doLeft = function(pButton)
174 | MultiBot.ShowHideSwitch(pButton.parent.frames["CombatAura"])
175 | end
176 |
177 | local tFrame = pFrame.addFrame("CombatAura", -92, 30)
178 | tFrame:Hide()
179 |
180 | tFrame.addButton("CombatSpeed", 0, 0, "spell_holy_crusaderaura", MultiBot.tips.paladin.caura.bspeed)
181 | .doLeft = function(pButton)
182 | MultiBot.SelectToTarget(pButton.get(), "CombatAura", pButton.texture, "co +bspeed,?", pButton.getName())
183 | pButton.getButton("CombatAura").doRight = function(pButton)
184 | MultiBot.OnOffActionToTarget(pButton, "co +bspeed,?", "co -bspeed,?", pButton.getName())
185 | end
186 | end
187 |
188 | tFrame.addButton("CombatFire", 0, 26, "spell_fire_sealoffire", MultiBot.tips.paladin.caura.rfire)
189 | .doLeft = function(pButton)
190 | MultiBot.SelectToTarget(pButton.get(), "CombatAura", pButton.texture, "co +rfire,?", pButton.getName())
191 | pButton.getButton("CombatAura").doRight = function(pButton)
192 | MultiBot.OnOffActionToTarget(pButton, "co +rfire,?", "co -rfire,?", pButton.getName())
193 | end
194 | end
195 |
196 | tFrame.addButton("CombatFrost", 0, 52, "spell_frost_wizardmark", MultiBot.tips.paladin.caura.rfrost)
197 | .doLeft = function(pButton)
198 | MultiBot.SelectToTarget(pButton.get(), "CombatAura", pButton.texture, "co +rfrost,?", pButton.getName())
199 | pButton.getButton("CombatAura").doRight = function(pButton)
200 | MultiBot.OnOffActionToTarget(pButton, "co +rfrost,?", "co -rfrost,?", pButton.getName())
201 | end
202 | end
203 |
204 | tFrame.addButton("CombatShadow", 0, 78, "spell_shadow_sealofkings", MultiBot.tips.paladin.caura.rshadow)
205 | .doLeft = function(pButton)
206 | MultiBot.SelectToTarget(pButton.get(), "CombatAura", pButton.texture, "co +rshadow,?", pButton.getName())
207 | pButton.getButton("CombatAura").doRight = function(pButton)
208 | MultiBot.OnOffActionToTarget(pButton, "co +rshadow,?", "co -rshadow,?", pButton.getName())
209 | end
210 | end
211 |
212 | tFrame.addButton("CombatDamage", 0, 104, "spell_holy_auraoflight", MultiBot.tips.paladin.caura.baoe)
213 | .doLeft = function(pButton)
214 | MultiBot.SelectToTarget(pButton.get(), "CombatAura", pButton.texture, "co +baoe,?", pButton.getName())
215 | pButton.getButton("CombatAura").doRight = function(pButton)
216 | MultiBot.OnOffActionToTarget(pButton, "co +baoe,?", "co -baoe,?", pButton.getName())
217 | end
218 | end
219 |
220 | tFrame.addButton("CombatArmor", 0, 130, "spell_holy_devotionaura", MultiBot.tips.paladin.caura.barmor)
221 | .doLeft = function(pButton)
222 | MultiBot.SelectToTarget(pButton.get(), "CombatAura", pButton.texture, "co +barmor,?", pButton.getName())
223 | pButton.getButton("CombatAura").doRight = function(pButton)
224 | MultiBot.OnOffActionToTarget(pButton, "co +barmor,?", "co -barmor,?", pButton.getName())
225 | end
226 | end
227 |
228 | tFrame.addButton("CombatCast", 0, 156, "spell_holy_mindsooth", MultiBot.tips.paladin.caura.bcast)
229 | .doLeft = function(pButton)
230 | MultiBot.SelectToTarget(pButton.get(), "CombatAura", pButton.texture, "co +bcast,?", pButton.getName())
231 | pButton.getButton("CombatAura").doRight = function(pButton)
232 | MultiBot.OnOffActionToTarget(pButton, "co +bcast,?", "co -bcast,?", pButton.getName())
233 | end
234 | end
235 |
236 | -- STRATEGIES:COMBAT-AURA --
237 |
238 | if(MultiBot.isInside(pCombat, "bspeed")) then
239 | tButton.setTexture("spell_holy_crusaderaura").setEnable().doRight = function(pButton)
240 | MultiBot.OnOffActionToTarget(pButton, "co +bspeed,?", "co -bspeed,?", pButton.getName())
241 | end
242 | elseif(MultiBot.isInside(pCombat, "rfire")) then
243 | tButton.setTexture("spell_fire_sealoffire").setEnable().doRight = function(pButton)
244 | MultiBot.OnOffActionToTarget(pButton, "co +rfire,?", "co -rfire,?", pButton.getName())
245 | end
246 | elseif(MultiBot.isInside(pCombat, "rfrost")) then
247 | tButton.setTexture("spell_frost_wizardmark").setEnable().doRight = function(pButton)
248 | MultiBot.OnOffActionToTarget(pButton, "co +rfrost,?", "co -rfrost,?", pButton.getName())
249 | end
250 | elseif(MultiBot.isInside(pCombat, "rshadow")) then
251 | tButton.setTexture("spell_shadow_sealofkings").setEnable().doRight = function(pButton)
252 | MultiBot.OnOffActionToTarget(pButton, "co +rshadow,?", "co -rshadow,?", pButton.getName())
253 | end
254 | elseif(MultiBot.isInside(pCombat, "baoe")) then
255 | tButton.setTexture("spell_holy_auraoflight").setEnable().doRight = function(pButton)
256 | MultiBot.OnOffActionToTarget(pButton, "co +baoe,?", "co -baoe,?", pButton.getName())
257 | end
258 | elseif(MultiBot.isInside(pCombat, "barmor")) then
259 | tButton.setTexture("spell_holy_devotionaura").setEnable().doRight = function(pButton)
260 | MultiBot.OnOffActionToTarget(pButton, "co +barmor,?", "co -barmor,?", pButton.getName())
261 | end
262 | elseif(MultiBot.isInside(pCombat, "bcast")) then
263 | tButton.setTexture("spell_holy_mindsooth").setEnable().doRight = function(pButton)
264 | MultiBot.OnOffActionToTarget(pButton, "co +bcast,?", "co -bcast,?", pButton.getName())
265 | end
266 | end
267 |
268 | -- DPS --
269 |
270 | pFrame.addButton("DpsControl", -120, 0, "ability_warrior_challange", MultiBot.tips.paladin.dps.master)
271 | .doLeft = function(pButton)
272 | MultiBot.ShowHideSwitch(pButton.getFrame("DpsControl"))
273 | end
274 |
275 | local tFrame = pFrame.addFrame("DpsControl", -122, 30)
276 | tFrame:Hide()
277 |
278 | tFrame.addButton("DpsAssist", 0, 0, "spell_holy_heroism", MultiBot.tips.paladin.dps.dpsAssist).setDisable()
279 | .doLeft = function(pButton)
280 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps assist,?", "co -dps assist,?", pButton.getName())) then
281 | pButton.getButton("TankAssist").setDisable()
282 | pButton.getButton("DpsAoe").setDisable()
283 | end
284 | end
285 |
286 | tFrame.addButton("DpsAoe", 0, 26, "spell_holy_surgeoflight", MultiBot.tips.paladin.dps.dpsAoe).setDisable()
287 | .doLeft = function(pButton)
288 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps aoe,?", "co -dps aoe,?", pButton.getName())) then
289 | pButton.getButton("TankAssist").setDisable()
290 | pButton.getButton("DpsAssist").setDisable()
291 | end
292 | end
293 |
294 | tFrame.addButton("Dps", 0, 52, "spell_holy_divinepurpose", MultiBot.tips.paladin.dps.dps).setDisable()
295 | .doLeft = function(pButton)
296 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps,?", "co -dps,?", pButton.getName())) then
297 | pButton.getButton("Heal").setDisable()
298 | pButton.getButton("Tank").setDisable()
299 | end
300 | end
301 |
302 | -- ASSIST --
303 |
304 | pFrame.addButton("TankAssist", -150, 0, "ability_warrior_innerrage", MultiBot.tips.paladin.tankAssist).setDisable()
305 | .doLeft = function(pButton)
306 | if(MultiBot.OnOffActionToTarget(pButton, "co +tank assist,?", "co -tank assist,?", pButton.getName())) then
307 | pButton.getButton("DpsAssist").setDisable()
308 | pButton.getButton("DpsAoe").setDisable()
309 | end
310 | end
311 |
312 | -- TANK --
313 |
314 | pFrame.addButton("Tank", -180, 0, "ability_warrior_shieldmastery", MultiBot.tips.paladin.tank).setDisable()
315 | .doLeft = function(pButton)
316 | if(MultiBot.OnOffActionToTarget(pButton, "co +tank,?", "co -tank,?", pButton.getName())) then
317 | pButton.getButton("Heal").setDisable()
318 | pButton.getButton("Dps").setDisable()
319 | end
320 | end
321 |
322 | -- STRATEGIES --
323 |
324 | if(MultiBot.isInside(pCombat, "dps,")) then pFrame.getButton("Dps").setEnable() end
325 | if(MultiBot.isInside(pCombat, "heal")) then pFrame.getButton("Heal").setEnable() end
326 | if(MultiBot.isInside(pCombat, "tank,")) then pFrame.getButton("Tank").setEnable() end
327 | if(MultiBot.isInside(pCombat, "dps aoe")) then pFrame.getButton("DpsAoe").setEnable() end
328 | if(MultiBot.isInside(pCombat, "dps assist")) then pFrame.getButton("DpsAssist").setEnable() end
329 | if(MultiBot.isInside(pCombat, "tank assist")) then pFrame.getButton("TankAssist").setEnable() end
330 | end
--------------------------------------------------------------------------------
/MultiBotPriest.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addPriest = function(pFrame, pCombat, pNormal)
2 | pFrame.addButton("Heal", 0, 0, "spell_holy_aspiration", MultiBot.tips.priest.heal).setDisable()
3 | .doLeft = function(pButton)
4 | if(MultiBot.OnOffActionToTarget(pButton, "co +heal,?", "co -heal,?", pButton.getName())) then
5 | pButton.getButton("Shadow").setDisable()
6 | pButton.getButton("Dps").setDisable()
7 | end
8 | end
9 |
10 | -- BUFF --
11 |
12 | pFrame.addButton("Buff", -30, 0, "spell_holy_power", MultiBot.tips.priest.buff).setDisable()
13 | .doLeft = function(pButton)
14 | MultiBot.OnOffActionToTarget(pButton, "co +buff,?", "co -buff,?", pButton.getName())
15 | end
16 |
17 | -- PLAYBOOK --
18 |
19 | pFrame.addButton("Playbook", -60, 0, "inv_misc_book_06", MultiBot.tips.priest.playbook.master)
20 | .doLeft = function(pButton)
21 | MultiBot.ShowHideSwitch(pButton.getFrame("Playbook"))
22 | end
23 |
24 | local tFrame = pFrame.addFrame("Playbook", -62, 30)
25 | tFrame:Hide()
26 |
27 | tFrame.addButton("ShadowDebuff", 0, 0, "spell_shadow_demonicempathy", MultiBot.tips.priest.playbook.shadowDebuff).setDisable()
28 | .doLeft = function(pButton)
29 | if(MultiBot.OnOffActionToTarget(pButton, "co +shadow debuff,?", "co -shadow debuff,?", pButton.getName())) then
30 | pButton.getButton("DpsDebuff").setEnable()
31 | else
32 | pButton.getButton("DpsDebuff").setDisable()
33 | end
34 | end
35 |
36 | tFrame.addButton("ShadowAoe", 0, 26, "spell_arcane_arcanetorrent", MultiBot.tips.priest.playbook.shadowAoe).setDisable()
37 | .doLeft = function(pButton)
38 | MultiBot.OnOffActionToTarget(pButton, "co +shadow aoe,?", "co -shadow aoe,?", pButton.getName())
39 | end
40 |
41 | tFrame.addButton("Shadow", 0, 52, "spell_holy_devotion", MultiBot.tips.priest.playbook.shadow).setDisable()
42 | .doLeft = function(pButton)
43 | if(MultiBot.OnOffActionToTarget(pButton, "co +shadow,?", "co -shadow,?", pButton.getName())) then
44 | pButton.getButton("Heal").setDisable()
45 | pButton.getButton("Dps").setEnable()
46 | else
47 | pButton.getButton("Dps").setDisable()
48 | end
49 | end
50 |
51 | -- DPS --
52 |
53 | pFrame.addButton("DpsControl", -90, 0, "ability_warrior_challange", MultiBot.tips.priest.dps.master)
54 | .doLeft = function(pButton)
55 | MultiBot.ShowHideSwitch(pButton.getFrame("DpsControl"))
56 | end
57 |
58 | local tFrame = pFrame.addFrame("DpsControl", -92, 30)
59 | tFrame:Hide()
60 |
61 | tFrame.addButton("DpsAssist", 0, 0, "spell_holy_heroism", MultiBot.tips.priest.dps.dpsAssist).setDisable()
62 | .doLeft = function(pButton)
63 | if(MultiBot.OnOffActionToTarget(pButton, "co +healer dps,?", "co -healer dps,?", pButton.getName())) then
64 | pButton.getButton("TankAssist").setDisable()
65 | pButton.getButton("DpsAoe").setDisable()
66 | end
67 | end
68 |
69 | tFrame.addButton("DpsDebuff", 0, 26, "spell_holy_restoration", MultiBot.tips.priest.dps.dpsDebuff).setDisable()
70 | .doLeft = function(pButton)
71 | if(MultiBot.OnOffActionToTarget(pButton, "co +shadow debuff,?", "co -shadow debuff,?", pButton.getName())) then
72 | pButton.getButton("ShadowDebuff").setEnable()
73 | else
74 | pButton.getButton("ShadowDebuff").setDisable()
75 | end
76 | end
77 |
78 | tFrame.addButton("DpsAoe", 0, 52, "spell_holy_surgeoflight", MultiBot.tips.priest.dps.dpsAoe).setDisable()
79 | .doLeft = function(pButton)
80 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps aoe,?", "co -dps aoe,?", pButton.getName())) then
81 | pButton.getButton("TankAssist").setDisable()
82 | pButton.getButton("DpsAssist").setDisable()
83 | end
84 | end
85 |
86 | tFrame.addButton("Dps", 0, 78, "spell_holy_divinepurpose", MultiBot.tips.priest.dps.dps).setDisable()
87 | .doLeft = function(pButton)
88 | if(MultiBot.OnOffActionToTarget(pButton, "co +shadow,?", "co -shadow,?", pButton.getName())) then
89 | pButton.getButton("Shadow").setEnable()
90 | pButton.getButton("Heal").setDisable()
91 | else
92 | pButton.getButton("Shadow").setDisable()
93 | end
94 | end
95 |
96 | -- ASSIST --
97 |
98 | pFrame.addButton("TankAssist", -120, 0, "ability_warrior_innerrage", MultiBot.tips.priest.tankAssist).setDisable()
99 | .doLeft = function(pButton)
100 | if(MultiBot.OnOffActionToTarget(pButton, "co +tank assist,?", "co -tank assist,?", pButton.getName())) then
101 | pButton.getButton("DpsAssist").setDisable()
102 | pButton.getButton("DpsAoe").setDisable()
103 | end
104 | end
105 |
106 | -- STRATEGIES --
107 |
108 | if(MultiBot.isInside(pCombat, "heal")) then pFrame.getButton("Heal").setEnable() end
109 | if(MultiBot.isInside(pNormal, "buff,")) then pFrame.getButton("Buff").setEnable() end
110 | if(MultiBot.isInside(pCombat, "shadow debuff")) then pFrame.getButton("ShadowDebuff").setEnable() end
111 | if(MultiBot.isInside(pCombat, "shadow aoe")) then pFrame.getButton("ShadowAoe").setEnable() end
112 | if(MultiBot.isInside(pCombat, "shadow,")) then pFrame.getButton("Shadow").setEnable() end
113 | if(MultiBot.isInside(pCombat, "healer dps")) then pFrame.getButton("DpsAssist").setEnable() end
114 | if(MultiBot.isInside(pCombat, "shadow debuff")) then pFrame.getButton("DpsDebuff").setEnable() end
115 | if(MultiBot.isInside(pCombat, "dps aoe")) then pFrame.getButton("DpsAoe").setEnable() end
116 | if(MultiBot.isInside(pCombat, "shadow,")) then pFrame.getButton("Shadow").setEnable() end
117 | if(MultiBot.isInside(pCombat, "tank assist")) then pFrame.getButton("TankAssist").setEnable() end
118 | end
--------------------------------------------------------------------------------
/MultiBotRaidus.lua:
--------------------------------------------------------------------------------
1 | MultiBot.raidus = MultiBot.newFrame(MultiBot, -340, -126, 32, 884, 884)
2 | MultiBot.raidus.addTexture("Interface\\AddOns\\MultiBot\\Textures\\Raidus.blp")
3 | MultiBot.raidus:SetMovable(true)
4 | MultiBot.raidus:Hide()
5 |
6 | MultiBot.raidus.addFrame("Pool", -20, 360, 28, 160, 490)
7 | MultiBot.raidus.addFrame("Btop", -35, 822, 24, 128, 32).addTexture("Interface\\AddOns\\MultiBot\\Textures\\Raidus_Banner_Top.blp")
8 | MultiBot.raidus.addFrame("Bbot", -35, 354, 24, 128, 32).addTexture("Interface\\AddOns\\MultiBot\\Textures\\Raidus_Banner_Bottom.blp")
9 | MultiBot.raidus.addFrame("Group8", -185, 364, 28, 160, 240)
10 | MultiBot.raidus.addFrame("Group7", -350, 364, 28, 160, 240)
11 | MultiBot.raidus.addFrame("Group6", -515, 364, 28, 160, 240)
12 | MultiBot.raidus.addFrame("Group5", -680, 364, 28, 160, 240)
13 | MultiBot.raidus.addFrame("Group4", -185, 604, 28, 160, 240)
14 | MultiBot.raidus.addFrame("Group3", -350, 604, 28, 160, 240)
15 | MultiBot.raidus.addFrame("Group2", -515, 604, 28, 160, 240)
16 | MultiBot.raidus.addFrame("Group1", -680, 604, 28, 160, 240)
17 | MultiBot.raidus.save = ""
18 | MultiBot.raidus.from = 1
19 | MultiBot.raidus.to = 11
20 |
21 | MultiBot.raidus.movButton("Move", -780, 790, 90, MultiBot.tips.move.raidus)
22 |
23 | MultiBot.raidus.wowButton("x", -13, 841, 16, 20, 12)
24 | .doLeft = function(pButton)
25 | local tButton = MultiBot.frames["MultiBar"].frames["Main"].buttons["Raidus"]
26 | tButton.doLeft(tButton)
27 | end
28 |
29 | MultiBot.raidus.wowButton("Load", -762, 360, 80, 20, 12)
30 | .doLeft = function(pButton)
31 | local tPool = MultiBot.raidus.frames["Pool"]
32 | local tLoad = MultiBot.doSplit(MultiBotSave["Raidus" .. MultiBot.raidus.save], ";")
33 |
34 | for i = 1, 8, 1 do
35 | local tGroup = MultiBot.doSplit(tLoad[i], ",")
36 |
37 | for j = 1, 5, 1 do
38 | local tDrop = MultiBot.raidus.frames["Group" .. i].frames["Slot" .. j]
39 | local tName = tGroup[j]
40 |
41 | if(tName ~= "-") then
42 | for tIndex, tDrag in pairs(tPool.frames) do
43 | if(tDrag.name ~= nil and tDrag.name == tName) then
44 | local tVisible = tDrag:IsVisible()
45 | local tParent = tDrag.parent
46 | local tHeight = tDrag.height
47 | local tWidth = tDrag.width
48 | local tSlot = tDrag.slot
49 | local tX = tDrag.x
50 | local tY = tDrag.y
51 |
52 | MultiBot.raidus.doDrop(tDrag, tDrop.parent, tDrop.x, tDrop.y, tDrop.width, tDrop.height, tDrop.slot)
53 | if(tDrop:IsVisible()) then tDrag:Show() else tDrag:Hide() end
54 |
55 | MultiBot.raidus.doDrop(tDrop, tParent, tX, tY, tWidth, tHeight, tSlot)
56 | if(tVisible) then tDrop:Show() else tDrop:Hide() end
57 | end
58 | end
59 | end
60 | end
61 | end
62 | end
63 |
64 | MultiBot.raidus.wowButton("1", -734, 360, 22, 20, 12).setDisable()
65 | .doLeft = function(pButton)
66 | if(pButton.state) then
67 | pButton.parent.save = ""
68 | pButton.setDisable()
69 | MultiBot.raidus.setRaidus()
70 | else
71 | pButton.parent.save = "1"
72 | pButton.parent.buttons["2"].setDisable()
73 | pButton.parent.buttons["3"].setDisable()
74 | pButton.setEnable()
75 | MultiBot.raidus.setRaidus()
76 | end
77 | end
78 |
79 | MultiBot.raidus.wowButton("2", -707, 360, 22, 20, 12).setDisable()
80 | .doLeft = function(pButton)
81 | if(pButton.state) then
82 | pButton.parent.save = ""
83 | pButton.setDisable()
84 | MultiBot.raidus.setRaidus()
85 | else
86 | pButton.parent.save = "2"
87 | pButton.parent.buttons["1"].setDisable()
88 | pButton.parent.buttons["3"].setDisable()
89 | pButton.setEnable()
90 | MultiBot.raidus.setRaidus()
91 | end
92 | end
93 |
94 | MultiBot.raidus.wowButton("3", -680, 360, 22, 20, 12).setDisable()
95 | .doLeft = function(pButton)
96 | if(pButton.state) then
97 | pButton.parent.save = ""
98 | pButton.setDisable()
99 | MultiBot.raidus.setRaidus()
100 | else
101 | pButton.parent.save = "3"
102 | pButton.parent.buttons["1"].setDisable()
103 | pButton.parent.buttons["2"].setDisable()
104 | pButton.setEnable()
105 | MultiBot.raidus.setRaidus()
106 | end
107 | end
108 |
109 | MultiBot.raidus.wowButton("Save", -597, 360, 80, 20, 12)
110 | .doLeft = function(pButton)
111 | local tSave = ""
112 |
113 | for i = 1, 8, 1 do
114 | local tGroup = ""
115 |
116 | for j = 1, 5, 1 do
117 | local tSlot = MultiBot.raidus.frames["Group" .. i].frames["Slot" .. j]
118 | local tName = MultiBot.IF(tSlot.name == nil, "-", tSlot.name)
119 | tGroup = tGroup .. MultiBot.IF(tGroup == "", "", ",")
120 | tGroup = tGroup .. tName
121 | end
122 |
123 | tSave = tSave .. MultiBot.IF(tSave == "", "", ";")
124 | tSave = tSave .. tGroup
125 | end
126 |
127 | MultiBotSave["Raidus" .. MultiBot.raidus.save] = tSave
128 | SendChatMessage("I wrote it down.", "SAY")
129 | end
130 |
131 |
132 |
133 | MultiBot.raidus.wowButton("Apply", -514, 360, 80, 20, 12)
134 | .doLeft = function(pButton)
135 | local tRaidByIndex, tRaidByName = MultiBot.raidus.getRaidTarget()
136 | if(tRaidByIndex == nil or tRaidByName == nil) then return end
137 |
138 | local tSelf = UnitName("player")
139 | MultiBot.index.raidus = {}
140 |
141 | for tName, tValue in pairs(MultiBot.frames["MultiBar"].frames["Units"].buttons) do
142 | if(tValue.state) then
143 | if(tName ~= tSelf and tRaidByName[tName] == nil) then
144 | if(UnitInGroup(tName) or UnitInRaid(tName)) then UninviteUnit(tName) end
145 | SendChatMessage(".playerbot bot remove " .. tName, "SAY")
146 | end
147 | else
148 | if(tName ~= tSelf and tRaidByName[tName] ~= nil) then
149 | table.insert(MultiBot.index.raidus, tName)
150 | end
151 | end
152 | end
153 |
154 | local tNeeds = table.getn(MultiBot.index.raidus)
155 |
156 | if(tNeeds > 0) then
157 | SendChatMessage(MultiBot.info.starting, "SAY")
158 | MultiBot.timer.invite.roster = "raidus"
159 | MultiBot.timer.invite.needs = tNeeds
160 | MultiBot.timer.invite.index = 1
161 | MultiBot.auto.invite = true
162 | else
163 | MultiBot.raidus.doRaidSort()
164 | end
165 | end
166 |
167 | MultiBot.raidus.wowButton("<", -40, 360, 16, 20, 12)
168 | .doLeft = function(pButton)
169 | for k,v in pairs(MultiBot.raidus.frames["Pool"].frames) do v:Hide() end
170 |
171 | MultiBot.raidus.from = MultiBot.raidus.from - 11
172 | MultiBot.raidus.to = MultiBot.raidus.to - 11
173 |
174 | if(MultiBot.raidus.to < 1) then
175 | MultiBot.raidus.from = MultiBot.raidus.slots - 10
176 | MultiBot.raidus.to = MultiBot.raidus.slots
177 | end
178 |
179 | for i = 1, MultiBot.raidus.slots, 1 do
180 | local tSlot = MultiBot.raidus.frames["Pool"].frames["Slot" .. i]
181 | if(i >= MultiBot.raidus.from and i <= MultiBot.raidus.to) then tSlot:Show() else tSlot:Hide() end
182 | end
183 | end
184 |
185 | MultiBot.raidus.wowButton(">", -20, 360, 16, 20, 12)
186 | .doLeft = function(pButton)
187 | MultiBot.raidus.from = MultiBot.raidus.from + 11
188 | MultiBot.raidus.to = MultiBot.raidus.to + 11
189 |
190 | if(MultiBot.raidus.from > MultiBot.raidus.slots) then
191 | MultiBot.raidus.from = 1
192 | MultiBot.raidus.to = 11
193 | end
194 |
195 | for i = 1, MultiBot.raidus.slots, 1 do
196 | local tSlot = MultiBot.raidus.frames["Pool"].frames["Slot" .. i]
197 | if(i >= MultiBot.raidus.from and i <= MultiBot.raidus.to) then tSlot:Show() else tSlot:Hide() end
198 | end
199 | end
200 |
201 | MultiBot.raidus.getDrop = function()
202 | for i = 1, 8, 1 do
203 | local tGroup = MultiBot.raidus.frames["Group" .. i]
204 |
205 | if(MouseIsOver(tGroup)) then
206 | for j = 1, 5, 1 do
207 | local tSlot = tGroup.frames["Slot" .. j]
208 | if(MouseIsOver(tSlot)) then return tSlot end
209 | end
210 | end
211 | end
212 |
213 | for i = 1, MultiBot.raidus.slots, 1 do
214 | local tSlot = MultiBot.raidus.frames["Pool"].frames["Slot" .. i]
215 | if(MouseIsOver(tSlot)) then return tSlot end
216 | end
217 |
218 | return nil
219 | end
220 |
221 | -- SETTTER --
222 |
223 | MultiBot.raidus.setRaidus = function()
224 | local tPool = MultiBot.raidus.frames["Pool"]
225 | local tSlot = 1
226 | local tY = 426
227 |
228 | for k,v in pairs(tPool.frames) do v:Hide() end
229 |
230 | local tBots = {}
231 | local tIndex = 1
232 |
233 | for tName, tValue in pairs(MultiBotGlobalSave) do
234 | local tDetails = MultiBot.doSplit(tValue, ",")
235 | local tBot = {}
236 |
237 | tBot.name = tName
238 | tBot.race = tDetails[1]
239 | tBot.gender = tDetails[2]
240 | tBot.special = tDetails[3]
241 | tBot.talents = tDetails[4]
242 | tBot.class = tDetails[5]
243 | tBot.level = tonumber(tDetails[6])
244 | tBot.score = tonumber(tDetails[7])
245 |
246 | local tClass = MultiBot.toClass(tBot.class)
247 |
248 | tBot.sort = tonumber(tBot.level) * 1000
249 | + MultiBot.IF(tClass == "DeathKnight", 1100000
250 | , MultiBot.IF(tClass == "Druid", 1200000
251 | , MultiBot.IF(tClass == "Hunter", 1300000
252 | , MultiBot.IF(tClass == "Mage", 1400000
253 | , MultiBot.IF(tClass == "Paladin", 1500000
254 | , MultiBot.IF(tClass == "Priest", 1600000
255 | , MultiBot.IF(tClass == "Rogue", 1700000
256 | , MultiBot.IF(tClass == "Shaman", 1800000
257 | , MultiBot.IF(tClass == "Warlock", 1900000
258 | , MultiBot.IF(tClass == "Warrior", 2000000
259 | , 1000000)))))))))) + tonumber(tBot.score);
260 |
261 | tBots[tIndex] = tBot
262 | tIndex = tIndex + 1
263 | end
264 |
265 | for tIndex = 1, table.getn(tBots) do
266 | local tMax = tIndex
267 |
268 | for tSearch = tIndex + 1, table.getn(tBots) do
269 | if(tBots[tMax].sort < tBots[tSearch].sort) then
270 | tMax = tSearch
271 | end
272 | end
273 |
274 | tBots[tIndex], tBots[tMax] = tBots[tMax], tBots[tIndex]
275 | end
276 |
277 | for tIndex = 1, table.getn(tBots) do
278 | local tBot = tBots[tIndex]
279 |
280 | local tFrame = tPool.addFrame("Slot" .. tSlot, 0, tY, 28, 160, 36)
281 | tFrame.addTexture("Interface\\AddOns\\MultiBot\\Textures\\grey.blp")
282 | tFrame:SetResizable(false)
283 | tFrame:SetMovable(true)
284 | tFrame.class = MultiBot.toClass(tBot.class)
285 | tFrame.slot = "Slot" .. tSlot
286 | tFrame.name = tBot.name
287 | tFrame.bot = tBot
288 |
289 | local tButton = tFrame.addButton("Icon", -128, 3, "Interface\\AddOns\\MultiBot\\Icons\\class_" .. strlower(tFrame.class) .. ".blp", "")
290 | tButton.doRight = function(pButton)
291 | SendChatMessage(".playerbot bot add " .. pButton.parent.name, "SAY")
292 | end
293 |
294 | tButton:SetScript("OnEnter", function(pButton)
295 | local tBot = pButton.parent.bot
296 | local tReward = tBot.level .. "." .. MultiBot.IF(tBot.score < 100, "0", MultiBot.IF(tBot.score < 10, "00", "")) .. tBot.score
297 | pButton.tip = MultiBot.newFrame(pButton, -pButton.size, 160, 28, 256, 512, "TOPRIGHT")
298 | pButton.tip.addTexture("Interface\\AddOns\\MultiBot\\Textures\\Raidus_Wanted.blp")
299 | pButton.tip.addModel(tBot.name, 0, 64, 160, 240, 1.0)
300 | pButton.tip.addText("1", "|cff555555- WANTED -|h", "TOP", 0, -30, 24)
301 | pButton.tip.addText("2", "|cff555555-DEAD OR ALIVE-|h", "TOP", 0, -55, 24)
302 | pButton.tip.addText("3", "|cff333333" .. tBot.name .. " - " .. tBot.gender .. " - " .. tBot.race .. "|h", "BOTTOM", 0, 220, 15)
303 | pButton.tip.addText("4", "|cff333333" .. tBot.class .. " - " .. tBot.talents .. " - " .. tBot.special .. "|h", "BOTTOM", 0, 200, 15)
304 | pButton.tip.addText("5", "|cff555555--------------------------------------------|h", "BOTTOM", 0, 188, 15)
305 | pButton.tip.addText("6", "|cff555555CASH - " .. tReward .. " - GOLD|h", "BOTTOM", 0, 170, 20)
306 | pButton.tip.addText("7", "|cff555555--------------------------------------------|h", "BOTTOM", 0, 160, 15)
307 | pButton.tip:Show()
308 | end)
309 |
310 | tButton:SetScript("OnMouseDown", function(pButton)
311 | pButton.parent:StartMoving()
312 | pButton.parent.isMoving = true
313 | end)
314 |
315 | tButton:SetScript("OnMouseUp", function(pButton)
316 | pButton.parent:StopMovingOrSizing()
317 | pButton.parent.isMoving = false
318 |
319 | local tDrag = pButton.parent
320 | local tDrop = MultiBot.raidus.getDrop()
321 |
322 | if(tDrop ~= nil) then
323 | local tParent = tDrag.parent
324 | local tHeight = tDrag.height
325 | local tWidth = tDrag.width
326 | local tSlot = tDrag.slot
327 | local tX = tDrag.x
328 | local tY = tDrag.y
329 |
330 | MultiBot.raidus.doDrop(tDrag, tDrop.parent, tDrop.x, tDrop.y, tDrop.width, tDrop.height, tDrop.slot)
331 | MultiBot.raidus.doDrop(tDrop, tParent, tX, tY, tWidth, tHeight, tSlot)
332 | else
333 | pButton.parent:ClearAllPoints()
334 | pButton.parent:SetPoint(pButton.parent.align, pButton.parent.x, pButton.parent.y)
335 | pButton.parent:SetSize(pButton.parent.width, pButton.parent.height)
336 | end
337 | end)
338 |
339 | tFrame.addText("1", tBot.level .. " - " .. tBot.class, "BOTTOMLEFT", 36, 18, 12)
340 | tFrame.addText("2", tBot.score .. " - " .. tBot.special, "BOTTOMLEFT", 36, 6, 12)
341 |
342 | if(tSlot > 11) then tFrame:Hide() else tFrame:Show() end
343 | tY = MultiBot.IF(mod(tSlot, 11) == 0, 426, tY - 40)
344 | tSlot = tSlot + 1
345 | end
346 |
347 | for i = mod(tSlot, 11), 11, 1 do
348 | local tFrame = tPool.addFrame("Slot" .. tSlot, 0, tY, 28, 160, 36)
349 | tFrame.addTexture("Interface\\AddOns\\MultiBot\\Textures\\grey.blp")
350 | tFrame.slot = "Slot" .. tSlot
351 | if(tSlot > 11) then tFrame:Hide() else tFrame:Show() end
352 | tSlot = tSlot + 1
353 | tY = tY - 40
354 | end
355 |
356 | MultiBot.raidus.slots = tSlot - 1
357 |
358 | for i = 1, 8, 1 do
359 | local tGroup = MultiBot.raidus.frames["Group" .. i]
360 | local tY = 182
361 |
362 | tGroup.addText("Title", "- Group" .. i .. " -", "BOTTOM", 0, 223, 12)
363 | tGroup.group = "Group" .. i
364 |
365 | for j = 1, 5, 1 do
366 | local tFrame = tGroup.addFrame("Slot" .. j, 0, tY, 28, 160, 36)
367 | tFrame.addTexture("Interface\\AddOns\\MultiBot\\Textures\\grey.blp")
368 | tFrame.slot = "Slot" .. j
369 | tY = tY - 40
370 | end
371 | end
372 | end
373 |
374 | -- GETTER --
375 |
376 | MultiBot.raidus.getRaidState = function()
377 | local tRaidByMembers = {}
378 | local tRaidByGroups = {}
379 |
380 | local tRaid = GetNumRaidMembers()
381 | local tGroup = GetNumPartyMembers()
382 | local tAmount = MultiBot.IF(tRaid > tGroup, tRaid, tGroup)
383 |
384 | for tIndex = 1, tAmount do
385 | local xName, xRank, xGroup = GetRaidRosterInfo(tIndex)
386 | if(xName and xRank and xGroup) then
387 | tRaidByMembers[xName] = { index = tIndex, group = xGroup }
388 | tRaidByGroups[xGroup] = (tRaidByGroups[xGroup] or 0) + 1
389 | end
390 | end
391 |
392 | return tRaidByMembers, tRaidByGroups
393 | end
394 |
395 | MultiBot.raidus.getRaidTarget = function()
396 | local tRaidByIndex = {}
397 | local tRaidByName = {}
398 | local tIndex = 1
399 |
400 | local tSelf = UnitName("player")
401 | local tUser = true
402 | local tBots = true
403 |
404 | for tGroup = 1, 8 do
405 | for tSlot = 1, 5 do
406 | local tName = MultiBot.raidus.frames["Group" .. tGroup].frames["Slot" .. tSlot].name
407 | if(tName ~= nil) then
408 | if(tName == tSelf) then tUser = false end
409 | tRaidByIndex[tIndex] = { name = tName, group = tGroup }
410 | tRaidByName[tName] = tGroup
411 | tIndex = tIndex + 1
412 | tBots = false
413 | end
414 | end
415 | end
416 |
417 | if(tBots) then return SendChatMessage("There is no Bot in the Raid", "SAY") end
418 | if(tUser) then return SendChatMessage("I must be in the Raid!", "SAY") end
419 | return tRaidByIndex, tRaidByName
420 | end
421 |
422 | -- EVENTS --
423 |
424 | MultiBot.raidus.doRaidSortCheck = function()
425 | local tRaidByIndex, tRaidByName = MultiBot.raidus.getRaidTarget()
426 | local tRaidByMembers, tRaidByGroups = MultiBot.raidus.getRaidState()
427 |
428 | for tName, tGroup in pairs(tRaidByName) do
429 | if(tRaidByMembers[tName] ~= nil and tRaidByMembers[tName].group ~= tGroup) then return 1 end
430 | end
431 |
432 | return nil
433 | end
434 |
435 | MultiBot.raidus.doRaidSort = function(pIndex)
436 | local tRaidByIndex, tRaidByName = MultiBot.raidus.getRaidTarget()
437 | local tRaidByMembers, tRaidByGroups = MultiBot.raidus.getRaidState()
438 |
439 | if(pIndex > table.getn(tRaidByIndex)) then return nil end
440 |
441 | local tName = tRaidByIndex[pIndex].name
442 | local tGroup = tRaidByIndex[pIndex].group
443 |
444 | if(tRaidByMembers[tName] ~= nil and tRaidByMembers[tName].group ~= tGroup) then
445 | if(tRaidByGroups[tGroup] == nil) then
446 | SetRaidSubgroup(tRaidByMembers[tName].index, tGroup)
447 | else
448 | if(tRaidByGroups[tGroup] < 5) then
449 | SetRaidSubgroup(tRaidByMembers[tName].index, tGroup)
450 | else
451 | for xName, xValue in pairs(tRaidByMembers) do
452 | if(xValue.group == tGroup and tRaidByName[xName] ~= tGroup) then
453 | SwapRaidSubgroup(tRaidByMembers[tName].index, xValue.index)
454 | break
455 | end
456 | end
457 | end
458 | end
459 | end
460 |
461 | return pIndex + 1
462 | end
463 |
464 | MultiBot.raidus.doDrop = function(pObject, pParent, pX, pY, pWidth, pHeight, pSlot)
465 | pParent.frames[pSlot] = pObject
466 | pObject:ClearAllPoints()
467 | pObject:SetParent(pParent)
468 | pObject:SetPoint("BOTTOMRIGHT", pX, pY)
469 | pObject:SetSize(pWidth, pHeight)
470 | pObject.parent = pParent
471 | pObject.height = pHeight
472 | pObject.width = pWidth
473 | pObject.slot = pSlot
474 | pObject.x = pX
475 | pObject.y = pY
476 | end
--------------------------------------------------------------------------------
/MultiBotReward.lua:
--------------------------------------------------------------------------------
1 | MultiBot.setRewards = function()
2 | if(MultiBot.reward.state == false) then return end
3 | local tChoices = MultiBot.IF(GetNumQuestChoices() > 6, 6, GetNumQuestChoices())
4 | table.wipe(MultiBot.reward.rewards)
5 | table.wipe(MultiBot.reward.units)
6 | MultiBot.reward.rewards = {}
7 | MultiBot.reward.units = {}
8 |
9 | for i = 1, tChoices do
10 | local tLink = GetQuestItemLink("CHOICE", i)
11 | local tName, tIcon = GetQuestItemInfo("CHOICE", i)
12 | MultiBot.reward.rewards[i] = { tLink, tName, tIcon }
13 | end
14 |
15 | for i = 1, 12 do
16 | local tID = "U" .. MultiBot.IF(i < 10, "0", "") .. i
17 | local tUnit = MultiBot.reward.frames["Overlay"].frames[tID]
18 | for j = 1, 6 do tUnit.buttons["R" .. j]:Hide() end
19 | tUnit:Hide()
20 | end
21 |
22 | if(GetNumRaidMembers() > 0) then
23 | for i = 1, 40 do
24 | local tUnit = UnitName("raid" .. i)
25 | if(tUnit ~= nil) then
26 | local tBot = MultiBot.getBot(tUnit)
27 | if(tBot ~= nil and tBot.name ~= UnitName("player")) then table.insert(MultiBot.reward.units, tBot) end
28 | end
29 | end
30 | elseif(GetNumPartyMembers() > 0) then
31 | for i = 1, 5 do
32 | local tUnit = UnitName("party" .. i)
33 | if(tUnit ~= nil) then
34 | local tBot = MultiBot.getBot(tUnit)
35 | if(tBot ~= nil and tBot.name ~= UnitName("player")) then table.insert(MultiBot.reward.units, tBot) end
36 | end
37 | end
38 | end
39 |
40 | if(table.getn(MultiBot.reward.units) > 0 and tChoices > 0) then
41 | local tOverlay = MultiBot.reward.frames["Overlay"]
42 | local tUnits = table.getn(MultiBot.reward.units)
43 |
44 | MultiBot.reward.max = math.ceil(tUnits / MultiBot.reward.to)
45 | tOverlay.setText("Pages", MultiBot.reward.now .. "/" .. MultiBot.reward.max)
46 | tOverlay.buttons["<"]:Show()
47 | tOverlay.buttons[">"]:Show()
48 |
49 | if(MultiBot.reward.now == 1) then tOverlay.buttons["<"]:Hide() end
50 | if(MultiBot.reward.now == MultiBot.reward.max) then tOverlay.buttons[">"]:Hide() end
51 |
52 | if(tUnits > MultiBot.reward.to) then tUnits = MultiBot.reward.to end
53 |
54 | for i = 1, tUnits do
55 | local tBot = MultiBot.reward.units[i]
56 | local tUnit = MultiBot.setReward(i, tBot, false)
57 |
58 | for j = 1, tChoices do
59 | local tReward = tUnit.buttons["R" .. j]
60 | tReward:Show()
61 | tReward.link = MultiBot.reward.rewards[j][1]
62 | tReward.setButton(MultiBot.reward.rewards[j][3], MultiBot.reward.rewards[j][1])
63 | tReward.doLeft = function(pButton)
64 | pButton.parent:Hide()
65 | SendChatMessage("r " .. pButton.link, "WHISPER", nil, pButton.getName())
66 | MultiBot.getBot(pButton.getName()).rewarded = true
67 | MultiBot.reward.doClose()
68 | end
69 | end
70 | end
71 |
72 | MultiBot.reward:Show()
73 | end
74 | end
75 |
76 | MultiBot.setReward = function(pIndex, pBot, oRewarded)
77 | local tID = "U" .. MultiBot.IF(pIndex < 10, "0", "") .. pIndex
78 | local tUnit = MultiBot.reward.frames["Overlay"].frames[tID]
79 | if(oRewarded ~= nil) then pBot.rewarded = oRewarded end
80 | if(pBot.rewarded) then tUnit:Hide() else tUnit:Show() end
81 | tUnit.setText(tID, "|cffffcc00" .. pBot.name .. " - " .. pBot.class .. "|r")
82 | tUnit.class = pBot.class
83 | tUnit.name = pBot.name
84 | return tUnit
85 | end
--------------------------------------------------------------------------------
/MultiBotRogue.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addRogue = function(pFrame, pCombat, pNormal)
2 | pFrame.addButton("DpsControl", 0, 0, "ability_warrior_challange", MultiBot.tips.rogue.dps.master)
3 | .doLeft = function(pButton)
4 | MultiBot.ShowHideSwitch(pButton.getFrame("DpsControl"))
5 | end
6 |
7 | local tFrame = pFrame.addFrame("DpsControl", -2, 30)
8 | tFrame:Hide()
9 |
10 | tFrame.addButton("DpsAssist", 0, 0, "spell_holy_heroism", MultiBot.tips.rogue.dps.dpsAssist).setDisable()
11 | .doLeft = function(pButton)
12 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps assist,?", "co -dps assist,?", pButton.getName())) then
13 | pButton.getButton("TankAssist").setDisable()
14 | pButton.getButton("DpsAoe").setDisable()
15 | end
16 | end
17 |
18 | tFrame.addButton("DpsAoe", 0, 26, "spell_holy_surgeoflight", MultiBot.tips.rogue.dps.dpsAoe).setDisable()
19 | .doLeft = function(pButton)
20 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps aoe,?", "co -dps aoe,?", pButton.getName())) then
21 | pButton.getButton("TankAssist").setDisable()
22 | pButton.getButton("DpsAssist").setDisable()
23 | end
24 | end
25 |
26 | tFrame.addButton("Dps", 0, 52, "spell_holy_divinepurpose", MultiBot.tips.rogue.dps.dps).setDisable()
27 | .doLeft = function(pButton)
28 | MultiBot.OnOffActionToTarget(pButton, "co +dps,?", "co -dps,?", pButton.getName())
29 | end
30 |
31 | -- ASSIST --
32 |
33 | pFrame.addButton("TankAssist", -30, 0, "ability_warrior_innerrage", MultiBot.tips.rogue.tankAssist).setDisable()
34 | .doLeft = function(pButton)
35 | if(MultiBot.OnOffActionToTarget(pButton, "co +tank assist,?", "co -tank assist,?", pButton.getName())) then
36 | pButton.getButton("DpsAssist").setDisable()
37 | pButton.getButton("DpsAoe").setDisable()
38 | end
39 | end
40 |
41 | -- STRATEGIES --
42 |
43 | if(MultiBot.isInside(pCombat, "dps")) then pFrame.getButton("Dps").setEnable() end
44 | if(MultiBot.isInside(pCombat, "dps aoe")) then pFrame.getButton("DpsAoe").setEnable() end
45 | if(MultiBot.isInside(pCombat, "dps assist")) then pFrame.getButton("DpsAssist").setEnable() end
46 | if(MultiBot.isInside(pCombat, "tank assist")) then pFrame.getButton("TankAssist").setEnable() end
47 | end
--------------------------------------------------------------------------------
/MultiBotShaman.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addShaman = function(pFrame, pCombat, pNormal)
2 | pFrame.addButton("Heal", 0, 0, "spell_holy_aspiration", MultiBot.tips.shaman.heal).setDisable()
3 | .doLeft = function(pButton)
4 | if(MultiBot.OnOffActionToTarget(pButton, "co +heal,?", "co -heal,?", pButton.getName())) then
5 | pButton.getButton("Caster").setDisable()
6 | pButton.getButton("Melee").setDisable()
7 | end
8 | end
9 |
10 | -- NON-COMBAT-TOTEM --
11 |
12 | local tButton = pFrame.addButton("NonCombatTotem", -30, 0, "spell_nature_manaregentotem", MultiBot.tips.shaman.ntotem.master)
13 | tButton.doLeft = function(pButton)
14 | MultiBot.ShowHideSwitch(pButton.parent.frames["NonCombatTotem"])
15 | end
16 |
17 | local tFrame = pFrame.addFrame("NonCombatTotem", -32, 30)
18 | tFrame:Hide()
19 |
20 | tFrame.addButton("NonCombatMana", 0, 0, "spell_nature_manaregentotem", MultiBot.tips.shaman.ntotem.bmana)
21 | .doLeft = function(pButton)
22 | MultiBot.SelectToTarget(pButton.get(), "NonCombatTotem", pButton.texture, "nc +bmana,?", pButton.getName())
23 | pButton.getButton("NonCombatTotem").doRight = function(pButton)
24 | MultiBot.OnOffActionToTarget(pButton, "nc +bmana,?", "nc -bmana,?", pButton.getName())
25 | end
26 | end
27 |
28 | tFrame.addButton("NonCombatDps", 0, 26, "spell_nature_windfury", MultiBot.tips.shaman.ntotem.bdps)
29 | .doLeft = function(pButton)
30 | MultiBot.SelectToTarget(pButton.get(), "NonCombatTotem", pButton.texture, "nc +bdps,?", pButton.getName())
31 | pButton.getButton("NonCombatTotem").doRight = function(pButton)
32 | MultiBot.OnOffActionToTarget(pButton, "nc +bdps,?", "nc -bdps,?", pButton.getName())
33 | end
34 | end
35 |
36 | -- STRATEGIES:NON-COMBAT-TOTEM --
37 |
38 | if(MultiBot.isInside(pNormal, "bmana")) then
39 | tButton.setTexture("spell_nature_manaregentotem").setEnable().doRight = function(pButton)
40 | MultiBot.OnOffActionToTarget(pButton, "nc +bmana,?", "nc -bmana,?", pButton.getName())
41 | end
42 | elseif(MultiBot.isInside(pNormal, "bdps")) then
43 | tButton.setTexture("spell_nature_windfury").setEnable().doRight = function(pButton)
44 | MultiBot.OnOffActionToTarget(pButton, "nc +bdps,?", "nc -bdps,?", pButton.getName())
45 | end
46 | end
47 |
48 | -- COMBAT-TOTEM --
49 |
50 | local tButton = pFrame.addButton("CombatTotem", -60, 0, "spell_nature_manaregentotem", MultiBot.tips.shaman.ctotem.master)
51 | tButton.doLeft = function(pButton)
52 | MultiBot.ShowHideSwitch(pButton.parent.frames["CombatTotem"])
53 | end
54 |
55 | local tFrame = pFrame.addFrame("CombatTotem", -62, 30)
56 | tFrame:Hide()
57 |
58 | tFrame.addButton("CombatMana", 0, 0, "spell_nature_manaregentotem", MultiBot.tips.shaman.ctotem.bmana)
59 | .doLeft = function(pButton)
60 | MultiBot.SelectToTarget(pButton.get(), "CombatTotem", pButton.texture, "co +bmana,?", pButton.getName())
61 | pButton.getButton("CombatTotem").doRight = function(pButton)
62 | MultiBot.OnOffActionToTarget(pButton, "co +bmana,?", "co -bmana,?", pButton.getName())
63 | end
64 | end
65 |
66 | tFrame.addButton("CombatDps", 0, 26, "spell_nature_windfury", MultiBot.tips.shaman.ctotem.bdps)
67 | .doLeft = function(pButton)
68 | MultiBot.SelectToTarget(pButton.get(), "CombatTotem", pButton.texture, "co +bdps,?", pButton.getName())
69 | pButton.getButton("CombatTotem").doRight = function(pButton)
70 | MultiBot.OnOffActionToTarget(pButton, "co +bdps,?", "co -bdps,?", pButton.getName())
71 | end
72 | end
73 |
74 | -- STRATEGIES:COMBAT-TOTEM --
75 |
76 | if(MultiBot.isInside(pCombat, "bmana")) then
77 | tButton.setTexture("spell_nature_manaregentotem").setEnable().doRight = function(pButton)
78 | MultiBot.OnOffActionToTarget(pButton, "co +bmana,?", "co -bmana,?", pButton.getName())
79 | end
80 | elseif(MultiBot.isInside(pCombat, "bdps")) then
81 | tButton.setTexture("spell_nature_windfury").setEnable().doRight = function(pButton)
82 | MultiBot.OnOffActionToTarget(pButton, "co +bdps,?", "co -bdps,?", pButton.getName())
83 | end
84 | end
85 |
86 | -- PLAYBOOK --
87 |
88 | pFrame.addButton("Playbook", -90, 0, "inv_misc_book_06", MultiBot.tips.shaman.playbook.master)
89 | .doLeft = function(pButton)
90 | MultiBot.ShowHideSwitch(pButton.getFrame("Playbook"))
91 | end
92 |
93 | tFrame = pFrame.addFrame("Playbook", -92, 30)
94 | tFrame:Hide()
95 |
96 | tFrame.addButton("Totems", 0, 0, "inv_relics_totemofrebirth", MultiBot.tips.shaman.playbook.totems).setDisable()
97 | .doLeft = function(pButton)
98 | MultiBot.OnOffActionToTarget(pButton, "co +totems,?", "co -totems,?", pButton.getName())
99 | end
100 |
101 | tFrame.addButton("CasterAoe", 0, 26, "spell_nature_lightningoverload", MultiBot.tips.shaman.playbook.casterAoe).setDisable()
102 | .doLeft = function(pButton)
103 | MultiBot.OnOffActionToTarget(pButton, "co +caster aoe,?", "co -caster aoe,?", pButton.getName())
104 | end
105 |
106 | tFrame.addButton("Caster", 0, 52, "spell_nature_lightning", MultiBot.tips.shaman.playbook.caster).setDisable()
107 | .doLeft = function(pButton)
108 | if(MultiBot.OnOffActionToTarget(pButton, "co +caster,?", "co -caster,?", pButton.getName())) then
109 | pButton.getButton("Melee").setDisable()
110 | pButton.getButton("Heal").setDisable()
111 | end
112 | end
113 |
114 | tFrame.addButton("MeleeAoe", 0, 78, "ability_warrior_shockwave", MultiBot.tips.shaman.playbook.meleeAoe).setDisable()
115 | .doLeft = function(pButton)
116 | MultiBot.OnOffActionToTarget(pButton, "co +melee aoe,?", "co -melee aoe,?", pButton.getName())
117 | end
118 |
119 | tFrame.addButton("Melee", 0, 104, "ability_parry", MultiBot.tips.shaman.playbook.melee).setDisable()
120 | .doLeft = function(pButton)
121 | if(MultiBot.OnOffActionToTarget(pButton, "co +melee,?", "co -melee,?", pButton.getName())) then
122 | pButton.getButton("Caster").setDisable()
123 | pButton.getButton("Heal").setDisable()
124 | end
125 | end
126 |
127 | -- STRATEGIES:PLAYBOOK --
128 |
129 | if(MultiBot.isInside(pCombat, "heal")) then pFrame.getButton("Heal").setEnable() end
130 | if(MultiBot.isInside(pCombat, "melee,")) then pFrame.getButton("Melee").setEnable() end
131 | if(MultiBot.isInside(pCombat, "totems")) then pFrame.getButton("Totems").setEnable() end
132 | if(MultiBot.isInside(pCombat, "caster,")) then pFrame.getButton("Caster").setEnable() end
133 | if(MultiBot.isInside(pCombat, "melee aoe")) then pFrame.getButton("MeleeAoe").setEnable() end
134 | if(MultiBot.isInside(pCombat, "caster aoe")) then pFrame.getButton("CasterAoe").setEnable() end
135 |
136 | -- DPS --
137 |
138 | pFrame.addButton("DpsControl", -120, 0, "ability_warrior_challange", MultiBot.tips.shaman.dps.master)
139 | .doLeft = function(pButton)
140 | MultiBot.ShowHideSwitch(pButton.getFrame("DpsControl"))
141 | end
142 |
143 | local tFrame = pFrame.addFrame("DpsControl", -122, 30)
144 | tFrame:Hide()
145 |
146 | tFrame.addButton("DpsAssist", 0, 0, "spell_holy_heroism", MultiBot.tips.shaman.dps.dpsAssist).setDisable()
147 | .doLeft = function(pButton)
148 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps assist,?", "co -dps assist,?", pButton.getName())) then
149 | pButton.getButton("TankAssist").setDisable()
150 | pButton.getButton("DpsAoe").setDisable()
151 | end
152 | end
153 |
154 | tFrame.addButton("DpsAoe", 0, 26, "spell_holy_surgeoflight", MultiBot.tips.shaman.dps.dpsAoe).setDisable()
155 | .doLeft = function(pButton)
156 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps aoe,?", "co -dps aoe,?", pButton.getName())) then
157 | pButton.getButton("TankAssist").setDisable()
158 | pButton.getButton("DpsAssist").setDisable()
159 | end
160 | end
161 |
162 | -- ASSIST --
163 |
164 | pFrame.addButton("TankAssist", -150, 0, "ability_warrior_innerrage", MultiBot.tips.shaman.tankAssist).setDisable()
165 | .doLeft = function(pButton)
166 | if(MultiBot.OnOffActionToTarget(pButton, "co +tank assist,?", "co -tank assist,?", pButton.getName())) then
167 | pButton.getButton("DpsAssist").setDisable()
168 | pButton.getButton("DpsAoe").setDisable()
169 | end
170 | end
171 |
172 | -- STRATEGIES --
173 |
174 | if(MultiBot.isInside(pCombat, "dps aoe")) then pFrame.getButton("DpsAoe").setEnable() end
175 | if(MultiBot.isInside(pCombat, "dps assist")) then pFrame.getButton("DpsAssist").setEnable() end
176 | if(MultiBot.isInside(pCombat, "tank assist")) then pFrame.getButton("TankAssist").setEnable() end
177 | end
--------------------------------------------------------------------------------
/MultiBotSpell.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addSpell = function(pInfo, pName)
2 | local tInfo = MultiBot.doSplit(pInfo, "|")
3 | local tID = MultiBot.doSplit(tInfo[3], ":")[2]
4 |
5 | local tName, tRank, tIcon = GetSpellInfo(tID)
6 | local tLink = GetSpellLink(tID)
7 |
8 | if(tName == nil) then tName = "" end
9 | if(tRank == nil) then tRank = "" end
10 | if(tIcon == nil) then tIcon = "inv_misc_questionmark" end
11 | if(tLink == nil) then tLink = tName end
12 |
13 | local tSpell = { tID, tName, tRank, tIcon, tLink }
14 |
15 | table.insert(MultiBot.spellbook.spells, tSpell)
16 | MultiBot.spellbook.index = MultiBot.spellbook.index + 1
17 |
18 | if(MultiBot.spells[pName] == nil) then MultiBot.spells[pName] = {} end
19 | if(MultiBot.spells[pName][tID] == nil) then MultiBot.spells[pName][tID] = true end
20 |
21 | if(MultiBot.spellbook.index < 17) then
22 | MultiBot.setSpell(MultiBot.spellbook.index, tSpell, MultiBot.spells[pName][tID])
23 | end
24 | end
25 |
26 | MultiBot.setSpell = function(pIndex, pSpell, pState)
27 | local tIndex = MultiBot.IF(pIndex < 10, "0", "") .. pIndex
28 | local tOverlay = MultiBot.spellbook.frames["Overlay"]
29 |
30 | if(pSpell ~= nil) then
31 | local tTitle = MultiBot.IF(string.len(pSpell[2]) > 16, string.sub(pSpell[2], 1, 16) .. "...", pSpell[2])
32 | tOverlay.setButton("S" .. tIndex, pSpell[4], pSpell[5])
33 | tOverlay.setText("T" .. tIndex, "|cffffcc00" .. tTitle .. "|r")
34 | tOverlay.setText("R" .. tIndex, "|cff402000" .. pSpell[3] .. "|r")
35 | tOverlay.buttons["S" .. tIndex].spell = pSpell[1]
36 | tOverlay.buttons["C" .. tIndex].spell = pSpell[1]
37 | tOverlay.buttons["S" .. tIndex].doShow()
38 | tOverlay.buttons["C" .. tIndex].doShow()
39 | tOverlay.texts["T" .. tIndex]:Show()
40 | tOverlay.texts["R" .. tIndex]:Show()
41 |
42 | tOverlay.buttons["C" .. tIndex]:SetChecked(pState)
43 | tOverlay.buttons["C" .. tIndex].doClick = function(pButton)
44 | local tName = pButton.getName()
45 | local tAction = ""
46 |
47 | MultiBot.spells[tName][pButton.spell] = MultiBot.IF(MultiBot.spells[tName][pButton.spell], false, true)
48 | pButton:SetChecked(MultiBot.spells[tName][pButton.spell])
49 |
50 | for id, state in pairs(MultiBot.spells[tName]) do
51 | if(state == false) then tAction = tAction .. MultiBot.IF(tAction == "", "ss +", ", +") .. id end
52 | end
53 |
54 | MultiBot.ActionToTarget(MultiBot.IF(tAction == "", "ss -" .. pButton.spell, tAction), tName)
55 | end
56 | else
57 | tOverlay.buttons["S" .. tIndex].spell = 0
58 | tOverlay.buttons["C" .. tIndex].spell = 0
59 | tOverlay.buttons["S" .. tIndex].doHide()
60 | tOverlay.buttons["C" .. tIndex].doHide()
61 | tOverlay.texts["T" .. tIndex]:Hide()
62 | tOverlay.texts["R" .. tIndex]:Hide()
63 | end
64 | end
--------------------------------------------------------------------------------
/MultiBotStats.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addStats = function(pFrame, pIndex, pX, pY, pSize, pWidth, pHeight)
2 | local tFrame = pFrame.addFrame(pIndex, pX, pY, pSize, pWidth, pHeight)
3 | local tAddon = tFrame.addFrame("Addon", -2, 46, 48)
4 | tAddon.addTexture("Interface\\AddOns\\MultiBot\\Icons\\xp_progress_99_percent.blp")
5 | tFrame.addTexture("Interface\\AddOns\\MultiBot\\Textures\\Stats.blp")
6 | tFrame:Hide()
7 |
8 | tFrame.addText("Name", "", "TOPLEFT", 54, -11, 11)
9 | tFrame.addText("Values", "", "TOPLEFT", 54, -27, 11)
10 | tAddon.addText("Percent", "", "CENTER", 0, 0, 11)
11 | tFrame.addText("Level", "", "CENTER", 85.25, 5, 11)
12 |
13 | tFrame.setProgress = function(pFrame, pProgress)
14 | pFrame.frames["Addon"].texture:Hide()
15 |
16 | if(pProgress >= 99) then pFrame.frames["Addon"].setTexture("Interface\\AddOns\\MultiBot\\Icons\\xp_progress_99_percent.blp")
17 | elseif(pProgress >= 90) then pFrame.frames["Addon"].setTexture("Interface\\AddOns\\MultiBot\\Icons\\xp_progress_90_percent.blp")
18 | elseif(pProgress >= 81) then pFrame.frames["Addon"].setTexture("Interface\\AddOns\\MultiBot\\Icons\\xp_progress_81_percent.blp")
19 | elseif(pProgress >= 72) then pFrame.frames["Addon"].setTexture("Interface\\AddOns\\MultiBot\\Icons\\xp_progress_72_percent.blp")
20 | elseif(pProgress >= 63) then pFrame.frames["Addon"].setTexture("Interface\\AddOns\\MultiBot\\Icons\\xp_progress_63_percent.blp")
21 | elseif(pProgress >= 54) then pFrame.frames["Addon"].setTexture("Interface\\AddOns\\MultiBot\\Icons\\xp_progress_54_percent.blp")
22 | elseif(pProgress >= 45) then pFrame.frames["Addon"].setTexture("Interface\\AddOns\\MultiBot\\Icons\\xp_progress_45_percent.blp")
23 | elseif(pProgress >= 36) then pFrame.frames["Addon"].setTexture("Interface\\AddOns\\MultiBot\\Icons\\xp_progress_36_percent.blp")
24 | elseif(pProgress >= 27) then pFrame.frames["Addon"].setTexture("Interface\\AddOns\\MultiBot\\Icons\\xp_progress_27_percent.blp")
25 | elseif(pProgress >= 18) then pFrame.frames["Addon"].setTexture("Interface\\AddOns\\MultiBot\\Icons\\xp_progress_18_percent.blp")
26 | elseif(pProgress >= 9) then pFrame.frames["Addon"].setTexture("Interface\\AddOns\\MultiBot\\Icons\\xp_progress_9_percent.blp")
27 | end
28 |
29 | return pProgress
30 | end
31 |
32 | tFrame.setStats = function(pName, pLevel, pStats, oPlayer)
33 | local tFrame = MultiBot.stats.frames[MultiBot.toUnit(pName)]
34 | local tAddon = tFrame.frames["Addon"]
35 | local tChina = GetLocale() == "zhCN"
36 |
37 | if(oPlayer ~= nil and oPlayer == true) then
38 | local tStats = MultiBot.doSplit(pStats, ", ")
39 | local tMana = tonumber(tStats[5])
40 | local tXP = tonumber(tStats[4])
41 |
42 | tFrame.texts["Name"]:SetText(pName)
43 | tFrame.texts["Level"]:SetText(pLevel)
44 | tFrame.texts["Values"]:SetText("Player")
45 |
46 | if(pLevel == 80) then
47 | tAddon.texts["Percent"]:SetText(tFrame.setProgress(tFrame, tMana) .. "%\n" .. MultiBot.info.shorts.mp)
48 | else
49 | tAddon.texts["Percent"]:SetText(tFrame.setProgress(tFrame, tXP) .. "%\n" .. MultiBot.info.shorts.xp)
50 | end
51 |
52 | tFrame:Show()
53 | return
54 | end
55 |
56 | local tStats = MultiBot.doSplit(pStats, ", ")
57 | local tMoney = "|cffffdd55" .. tStats[1] .. "|r, "
58 | local tBag = MultiBot.IF(tChina, MultiBot.doReplace(tStats[2], "Bag", MultiBot.info.shorts.bag), tStats[2])
59 |
60 | tFrame.texts["Name"]:SetText(pName)
61 | tFrame.texts["Level"]:SetText(pLevel)
62 | tFrame.texts["Values"]:SetText(tMoney .. tBag)
63 |
64 | if(pLevel == 80) then
65 | local tDur = MultiBot.doSplit(string.sub(MultiBot.doSplit(tStats[3], "|")[2], 10), " ")
66 | local tQuality = tonumber(string.sub(tDur[1], 1, string.len(tDur[1]) - 1))
67 | local tRepair = tonumber(string.sub(tDur[2], 2, string.len(tDur[2]) - 1))
68 | if(tQuality == 0 and tRepair == 0) then tQuality = 100 end
69 | tAddon.texts["Percent"]:SetText(tFrame.setProgress(tFrame, tQuality) .. "%\n" .. MultiBot.info.shorts.dur)
70 | else
71 | local tXP = tonumber(string.sub(MultiBot.doSplit(tStats[4], "|")[2], 10))
72 | tAddon.texts["Percent"]:SetText(tFrame.setProgress(tFrame, tXP) .. "%\n" .. MultiBot.info.shorts.xp)
73 | end
74 |
75 | tFrame:Show()
76 | return
77 | end
78 | end
--------------------------------------------------------------------------------
/MultiBotWarlock.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addWarlock = function(pFrame, pCombat, pNormal)
2 | local tButton = pFrame.addButton("Buff", 0, 0, "spell_shadow_lifedrain02", MultiBot.tips.warlock.buff.master)
3 | tButton.doLeft = function(pButton)
4 | MultiBot.ShowHideSwitch(pButton.parent.frames["Buff"])
5 | end
6 |
7 | local tFrame = pFrame.addFrame("Buff", -2, 30)
8 | tFrame:Hide()
9 |
10 | tFrame.addButton("BuffHealth", 0, 0, "spell_shadow_lifedrain02", MultiBot.tips.warlock.buff.bhealth)
11 | .doLeft = function(pButton)
12 | MultiBot.SelectToTarget(pButton.get(), "Buff", pButton.texture, "nc +bhealth,?", pButton.getName())
13 | pButton.getButton("Buff").doRight = function(pButton)
14 | MultiBot.OnOffActionToTarget(pButton, "nc +bhealth,?", "nc -bhealth,?", pButton.getName())
15 | end
16 | end
17 |
18 | tFrame.addButton("BuffMana", 0, 26, "spell_shadow_siphonmana", MultiBot.tips.warlock.buff.bmana)
19 | .doLeft = function(pButton)
20 | MultiBot.SelectToTarget(pButton.get(), "Buff", pButton.texture, "nc +bmana,?", pButton.getName())
21 | pButton.getButton("Buff").doRight = function(pButton)
22 | MultiBot.OnOffActionToTarget(pButton, "nc +bmana,?", "nc -bmana,?", pButton.getName())
23 | end
24 | end
25 |
26 | tFrame.addButton("BuffDps", 0, 52, "spell_shadow_haunting", MultiBot.tips.warlock.buff.bdps)
27 | .doLeft = function(pButton)
28 | MultiBot.SelectToTarget(pButton.get(), "Buff", pButton.texture, "nc +bdps,?", pButton.getName())
29 | pButton.getButton("Buff").doRight = function(pButton)
30 | MultiBot.OnOffActionToTarget(pButton, "nc +bdps,?", "nc -bdps,?", pButton.getName())
31 | end
32 | end
33 |
34 | -- STRATEGIES:BUFF --
35 |
36 | if(MultiBot.isInside(pNormal, "bhealth")) then
37 | tButton.setTexture("spell_shadow_lifedrain02").setEnable().doRight = function(pButton)
38 | MultiBot.OnOffActionToTarget(pButton, "nc +bhealth,?", "nc -bhealth,?", pButton.getName())
39 | end
40 | elseif(MultiBot.isInside(pNormal, "bmana")) then
41 | tButton.setTexture("spell_shadow_siphonmana").setEnable().doRight = function(pButton)
42 | MultiBot.OnOffActionToTarget(pButton, "nc +bmana,?", "nc -bmana,?", pButton.getName())
43 | end
44 | elseif(MultiBot.isInside(pNormal, "bdps")) then
45 | tButton.setTexture("spell_shadow_haunting").setEnable().doRight = function(pButton)
46 | MultiBot.OnOffActionToTarget(pButton, "nc +bdps,?", "nc -bdps,?", pButton.getName())
47 | end
48 | end
49 |
50 | -- DPS --
51 |
52 | pFrame.addButton("DpsControl", -30, 0, "ability_warrior_challange", MultiBot.tips.warlock.dps.master)
53 | .doLeft = function(pButton)
54 | MultiBot.ShowHideSwitch(pButton.getFrame("DpsControl"))
55 | end
56 |
57 | local tFrame = pFrame.addFrame("DpsControl", -32, 30)
58 | tFrame:Hide()
59 |
60 | tFrame.addButton("DpsAssist", 0, 0, "spell_holy_heroism", MultiBot.tips.warlock.dps.dpsAssist).setDisable()
61 | .doLeft = function(pButton)
62 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps assist,?", "co -dps assist,?", pButton.getName())) then
63 | pButton.getButton("TankAssist").setDisable()
64 | pButton.getButton("DpsAoe").setDisable()
65 | end
66 | end
67 |
68 | tFrame.addButton("DpsDebuff", 0, 26, "spell_holy_restoration", MultiBot.tips.warlock.dps.dpsDebuff).setDisable()
69 | .doLeft = function(pButton)
70 | MultiBot.OnOffActionToTarget(pButton, "co +dps debuff,?", "co -dps debuff,?", pButton.getName())
71 | end
72 |
73 | tFrame.addButton("DpsAoe", 0, 52, "spell_holy_surgeoflight", MultiBot.tips.warlock.dps.dpsAoe).setDisable()
74 | .doLeft = function(pButton)
75 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps aoe,?", "co -dps aoe,?", pButton.getName())) then
76 | pButton.getButton("TankAssist").setDisable()
77 | pButton.getButton("DpsAssist").setDisable()
78 | end
79 | end
80 |
81 | tFrame.addButton("Dps", 0, 78, "spell_holy_divinepurpose", MultiBot.tips.warlock.dps.dps).setDisable()
82 | .doLeft = function(pButton)
83 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps,?", "co -dps,?", pButton.getName())) then
84 | pButton.getButton("Tank").setDisable()
85 | end
86 | end
87 |
88 | -- ASSIST --
89 |
90 | pFrame.addButton("TankAssist", -60, 0, "ability_warrior_innerrage", MultiBot.tips.warlock.tankAssist).setDisable()
91 | .doLeft = function(pButton)
92 | if(MultiBot.OnOffActionToTarget(pButton, "co +tank assist,?", "co -tank assist,?", pButton.getName())) then
93 | pButton.getButton("DpsAssist").setDisable()
94 | pButton.getButton("DpsAoe").setDisable()
95 | end
96 | end
97 |
98 | -- TANK --
99 |
100 | pFrame.addButton("Tank", -90, 0, "ability_warrior_shieldmastery", MultiBot.tips.warlock.tank).setDisable()
101 | .doLeft = function(pButton)
102 | if(MultiBot.OnOffActionToTarget(pButton, "co +tank,?", "co -tank,?", pButton.getName())) then
103 | pButton.getButton("Dps").setDisable()
104 | end
105 | end
106 |
107 | -- STRATEGIES --
108 |
109 | if(MultiBot.isInside(pCombat, "dps")) then pFrame.getButton("Dps").setEnable() end
110 | if(MultiBot.isInside(pCombat, "dps aoe")) then pFrame.getButton("DpsAoe").setEnable() end
111 | if(MultiBot.isInside(pCombat, "dps debuff")) then pFrame.getButton("DpsDebuff").setEnable() end
112 | if(MultiBot.isInside(pCombat, "dps assist")) then pFrame.getButton("DpsAssist").setEnable() end
113 | if(MultiBot.isInside(pCombat, "tank assist")) then pFrame.getButton("TankAssist").setEnable() end
114 | if(MultiBot.isInside(pCombat, "tank")) then pFrame.getButton("Tank").setEnable() end
115 | end
--------------------------------------------------------------------------------
/MultiBotWarrior.lua:
--------------------------------------------------------------------------------
1 | MultiBot.addWarrior = function(pFrame, pCombat, pNormal)
2 | pFrame.addButton("DpsControl", 0, 0, "ability_warrior_challange", MultiBot.tips.warrior.dps.master)
3 | .doLeft = function(pButton)
4 | MultiBot.ShowHideSwitch(pButton.getFrame("DpsControl"))
5 | end
6 |
7 | local tFrame = pFrame.addFrame("DpsControl", -2, 30)
8 | tFrame:Hide()
9 |
10 | tFrame.addButton("DpsAssist", 0, 0, "spell_holy_heroism", MultiBot.tips.warrior.dps.dpsAssist).setDisable()
11 | .doLeft = function(pButton)
12 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps assist,?", "co -dps assist,?", pButton.getName())) then
13 | pButton.getButton("TankAssist").setDisable()
14 | pButton.getButton("DpsAoe").setDisable()
15 | end
16 | end
17 |
18 | tFrame.addButton("DpsAoe", 0, 26, "spell_holy_surgeoflight", MultiBot.tips.warrior.dps.dpsAoe).setDisable()
19 | .doLeft = function(pButton)
20 | if(MultiBot.OnOffActionToTarget(pButton, "co +dps aoe,?", "co -dps aoe,?", pButton.getName())) then
21 | pButton.getButton("TankAssist").setDisable()
22 | pButton.getButton("DpsAssist").setDisable()
23 | end
24 | end
25 |
26 | -- ASSIST --
27 |
28 | pFrame.addButton("TankAssist", -30, 0, "ability_warrior_innerrage", MultiBot.tips.warrior.tankAssist).setDisable()
29 | .doLeft = function(pButton)
30 | if(MultiBot.OnOffActionToTarget(pButton, "co +tank assist,?", "co -tank assist,?", pButton.getName())) then
31 | pButton.getButton("DpsAssist").setDisable()
32 | pButton.getButton("DpsAoe").setDisable()
33 | end
34 | end
35 |
36 | -- TANK --
37 |
38 | pFrame.addButton("Tank", -60, 0, "ability_warrior_shieldmastery", MultiBot.tips.warrior.tank).setDisable()
39 | .doLeft = function(pButton)
40 | MultiBot.OnOffActionToTarget(pButton, "co +tank,?", "co -tank,?", pButton.getName())
41 | end
42 |
43 | -- STRATEGIES --
44 |
45 | if(MultiBot.isInside(pCombat, "dps aoe")) then pFrame.getButton("DpsAoe").setEnable() end
46 | if(MultiBot.isInside(pCombat, "dps assist")) then pFrame.getButton("DpsAssist").setEnable() end
47 | if(MultiBot.isInside(pCombat, "tank assist")) then pFrame.getButton("TankAssist").setEnable() end
48 | if(MultiBot.isInside(pCombat, "tank")) then pFrame.getButton("Tank").setEnable() end
49 | end
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # MultiBot
2 | User interface for AzerothCore-Module "Playerbot" by Liyunfan1223.
3 | Tested with American and German 3.3.5 Wotlk-Client.
4 | # Installation
5 | Simply place the files in a folder called "MultiBot" in your World of Warcraft AddOns directory.
6 | Example: "C:\WorldOfWarcraft\Interface\AddOns\MultiBot"
7 | # Use
8 | Start World of Warcraft and enter "/multibot" or "/mbot" or "/mb" in the chat.
9 | # Current Status
10 |
![]() |
13 | 14 | This Picture shows the default MultiBot-Interface after start. 15 | | 16 |
![]() |
19 | 20 | The horizontal Buttonbar is the Main-Control. 21 | Commands from the Main-Control go to all bots in a Group or Raid. 22 | Differences in functionality are commented on in the tooltips. 23 | | 24 |
![]() |
27 | 28 | The vertical Buttonbar is the Playerbot-Selection. 29 | Here you will find the Characters of your Account. 30 | There is a button for each Character. 31 | | 32 |
![]() |
35 | 36 | The Tooltip of a Character-Button shows you the Class and Name of the Character. 37 | This should allow you to identify your characters. 38 | | 39 |
![]() |
42 | 43 | With a Left-Click you can load your Character and have him automatically added to the Party or Raid. 44 | The horizontal Buttonbar that appears is the Playerbot-Control. 45 | | 46 |
![]() |
49 | 50 | You can use the Buttons on the left to adjust the Combat-Behavior of your Playerbot. 51 | | 52 |
![]() |
55 | 56 | With the first Button on the right you can summon your Playerbot. 57 | | 58 |
![]() |
61 | 62 | With the second Button on the right you can add or dismiss your Playerbot from the Party or Raid. 63 | | 64 |
![]() |
67 | 68 | With the next three the Buttons you can adjust the Non-Combat-Behavior of your Playerbot. 69 | | 70 |
![]() |
73 | 74 | The last button on the right opens the Inventory of the Playerbot. 75 | | 76 |
![]() |
79 | 80 | A Left-Click on the Inventory-Button opens the Inspect- and Inventory-Window of your Playerbot. 81 | Notice: The Inspect-Window only will be open if the Playerbot is in reach. 82 | | 83 |
![]() |
86 | 87 | The Inventory will automatically open in Sell-Mode. 88 | In the Sell-Mode a left click on a Item will sell it. 89 | Notice: You must have a Merchent as Target. 90 | | 91 |
![]() |
94 | 95 | With this Button you can switch to the Equip-Mode. 96 | In the Equip-Mode a left click on a Item will equip it. 97 | Notice: Only works with Equipment. 98 | | 99 |
![]() |
102 | 103 | With this Button you can switch to the Use-Mode. 104 | In the Use-Mode a left click on a Item will use it. 105 | Notice: Only works with usable Items. 106 | | 107 |
![]() |
110 | 111 | With this Button you can switch to the Destroy-Mode. 112 | In the Destroy-Mode a left click on a Item will destroy it. 113 | Important: There is no security Quest and it will work with every Item. 114 | | 115 |
![]() |
118 | 119 | Items can be viewed regardless of the selected Mode. 120 | Means: View-Mode is always active. 121 | | 122 |
![]() |
125 | 126 | With a left click on the Character-Button you can hide and show the Playerbot-Control. 127 | | 128 |
![]() |
131 | 132 | With a left click on the left Scroll-Button you can hide and show the Playerbots. 133 | | 134 |
![]() |
137 | 138 | With a left click on the right Scroll-Button you can hide and show the Friendbots. 139 | | 140 |
![]() |
143 | 144 | The vertical Buttonbar is the Friend-Selection. 145 | Here you will find the Characters of your Friendlist. 146 | There are max 10 Buttons visible. 147 | | 148 |
![]() |
151 | 152 | With this Button you could browse throu your Friendlist. 153 | Each click will show the next 10 Characters. 154 | If you reach the End it starts from the Beginning. 155 | | 156 |
![]() |
159 | 160 | You can limit the Selection to make it easier to find the wished Friendbot. 161 | | 162 |
![]() |
165 | 166 | Simply press one of these Filter-Buttons to narrow down the Selection. 167 | | 168 |
![]() |
171 | 172 | As you can see, the browse button has disappeared. 173 | This is because the Filter reduced the Selection to less than 10 Friendbots. 174 | | 175 |
![]() |
178 | 179 | The filter shows you the current limitation. 180 | In this example, we filtered to Warrior. 181 | | 182 |
![]() |
185 | 186 | This button is the result of our filter. 187 | The functionality is almost identical to that of the Playerbots. 188 | Therefore we save ourselves a further explanation. 189 | | 190 |
![]() |
193 | 194 | This is the Tank-Attack-Button. 195 | A left click on the Button let all Tanks attack you Target. 196 | | 197 |
![]() |
200 | 201 | This is the Attack-Actionbar. 202 | A left click on the Button executes the selected Action. 203 | A right click on the Button will show and hide the Optional-Actions. 204 | To replace the selected Action, right click a Optional-Action. 205 | To execute a Optional-Action, left click it. 206 | The default Action is "All attack my target". 207 | | 208 |
![]() |
211 | 212 | This is the Modebar. 213 | A left click on the Button enables and disables the selected Mode. 214 | A right click on the Button will show and hide the Mode-Selection. 215 | To select another Mode, left click the Mode-Option. 216 | The Mode will activated by selection. 217 | The default Mode-Toggle is "passive". 218 | | 219 |
![]() |
222 | 223 | This is the Stay-Follow-Toggle-Button. 224 | A left click on the Button sends the Stay-Command to the Party or Raid. 225 | Another left click on the Button sends the Follow-Command to the Party or Raid. 226 | The Icon will show the current State. 227 | The default State is "Follow". 228 | | 229 |
![]() |
232 | 233 | This is the Flee-Actionbar. 234 | A left click on the Button executes the selected Action. 235 | A right click on the Button will show and hide the Optional-Actions. 236 | To replace the selected Action, right click a Optional-Action. 237 | To execute a Optional-Action, left click it. 238 | | 239 |
![]() |
242 | 243 | This is the Formation-Selector. 244 | A left click on the Button will show and hide the Options. 245 | A left click on the Option-Button will send the corresponding Formation-Command to the Party or Raid. 246 | A right click on the Button will ask the Party or Raid for the current Formation. 247 | | 248 |
![]() |
251 | 252 | This is the Beastmaster-Control. 253 | A left click on the Button will show and hide the Actions. 254 | A left click on the Action will send the corresponding Command to your Target, Party or Raid. 255 | It supports the "mod-beastmaster"-Module of the Azerothcore. 256 | These Buttons work with Target, Group and Raid. 257 | | 258 |
![]() |
261 | 262 | This is the MultiBot-Control. 263 | A left click on the Button will show and hide the Controls. 264 | Here you will find the "reset", "reset botAI" and "naxx"-Commands for your Bots. 265 | These Buttons works with Target, Group and Raid. 266 | | 267 |
![]() |
270 | 271 | This Button will send the "drink"-Command to the Party or Raid. 272 | | 273 |
![]() |
276 | 277 | This Button will send the "release"-Command to the Party or Raid. 278 | | 279 |
![]() |
282 | 283 | This Button will send the "revive"-Command to the Party or Raid. 284 | | 285 |
![]() |
288 | 289 | This Button will summon all active Friend- and Playerbots. 290 | | 291 |