Jump to content

Bugreporter

WRobot user
  • Posts

    438
  • Joined

  • Last visited

Everything posted by Bugreporter

  1. The error is not in the fight system (i think), because I get him also out of fight if I am resting / afk
  2. since 11.Jan 2014 I found this error in my log files. GetReactionTowards(WoWFactionTemplate otherFaction): System.NullReferenceException: Object reference not set to an instance of an object. at wManager.Wow.Helpers.WoWFactionTemplate.GetReactionTowards(WoWFactionTemplate otherFaction) never before. At 11.jan there was a WoW Patch
  3. I think I found the solution. Could it be, that you only check UnitCastingInfo("player") ? This fails if it is a spell like mounting. Please have a look at UnitChannelInfo("player"). The difference between this I describe here
  4. Is it possible to change Topic Tags? has a wrong tag (Rogue; instead of Rogue)
  5. Today I proudly presents : /use 10, use /13 aaaaand use /14 !!! Okay, RunMacroText("/use 14") will work also, so why should you use a script ? I want to use "use 10" if it's ready to use I want it in fight only I dont want to change timers At first: If you are not rogue, ... ... change idSinisterStrike=1752 to another spell that represents your fight range. I use it only to be sure, that I am near enough to fight. Sinister Strike are a level 1 spell with a range of 5y. ... remove / change GetComboPoints to another check to be sure, you have the right target and you are in combat What do I do? At first I check if I am not in stealth, I have a target, the target is a bad guy, the fight has started and the range for a fight is good. After this I check my slots, if there are usable items in 10,13 or 14. If they are ready to use, I will use it. I made 3 sections (spells), because I want to be able to disable them once by once. Its also possible to make a loop to check/cast them once. /use 14 <FightClassSpell> <SpellName>--use 14 (second trinket)</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript> local slot="Trinket1Slot" local idSinisterStrike=1752 local ssname=GetSpellInfo(idSinisterStrike) if not IsStealthed() and UnitExists("target") and not UnitIsFriend("player", "target") and (GetComboPoints("player") &gt; 0) and (UnitHealth("target")&gt;0) and (IsSpellInRange(ssname,"target")==1) then --[[ RunMacroText("/use 14") ]] local slotId, texture, checkRelic = GetInventorySlotInfo(slot) local itemId = GetInventoryItemID("player", slotId) local start, duration, enable = GetItemCooldown(itemId) if (duration==0) then UseInventoryItem( slotId ); --[[ print("use "..slotId) ]] result=true end end </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>4</Priority> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <AddToSettings>true</AddToSettings> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> <DescriptionSpell>/use 14</DescriptionSpell> </FightClassSpell> /use 13 <FightClassSpell> <SpellName>--use 13 (first trinket)</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript> local slot="Trinket0Slot" local idSinisterStrike=1752 local ssname=GetSpellInfo(idSinisterStrike) if not IsStealthed() and UnitExists("target") and not UnitIsFriend("player", "target") and (GetComboPoints("player") &gt; 0) and (UnitHealth("target")&gt;0) and (IsSpellInRange(ssname,"target")==1) then --[[ RunMacroText("/use 13") ]] local slotId, texture, checkRelic = GetInventorySlotInfo(slot) local itemId = GetInventoryItemID("player", slotId) local start, duration, enable = GetItemCooldown(itemId) if (duration==0) then UseInventoryItem( slotId ); --[[ print("use "..slotId) ]] result=true end end </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>3</Priority> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <AddToSettings>true</AddToSettings> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> <DescriptionSpell>/use 13</DescriptionSpell> </FightClassSpell> /use 10 <FightClassSpell> <SpellName>--use 10 (Engineer Gloves)</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript> local slot="HandsSlot" local idSinisterStrike=1752 local ssname=GetSpellInfo(idSinisterStrike) if not IsStealthed() and UnitExists("target") and not UnitIsFriend("player", "target") and (GetComboPoints("player") &gt; 0) and (UnitHealth("target")&gt;0) and (IsSpellInRange(ssname,"target")==1) then --[[ RunMacroText("/use 10") ]] local slotId, texture, checkRelic = GetInventorySlotInfo(slot) local itemId = GetInventoryItemID("player", slotId) local start, duration, enable = GetItemCooldown(itemId) if (duration==0) then UseInventoryItem( slotId ); --[[ print("use "..slotId) ]] result=true end end </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>2</Priority> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <AddToSettings>true</AddToSettings> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> <DescriptionSpell>/use 10 (good Engineers only)</DescriptionSpell> </FightClassSpell> based on WoW 5.4.2.
  6. 1-16 because after this, the most boters go into ini's to lvl up. Quest profiles have a "best-before" date. Best before the next update, and after this Blizzard has changed something. And it isn't posible to support quest profiles 1-90 because you have to lvl up every time a new char to check all quests.
  7. I have learned that casting is not equal casting. There are channeling spells (spells that works the whole time while channeling i.e heal) and spells that works after a channeling time (i.e. poisons) Because of this I changed the code above from if not (UnitCastingInfo("player"))... to if (GetUnitSpeed("player") == 0) and not (UnitCastingInfo("player")) and not (UnitChannelInfo("player"))... I have add movedetection ( GetUnitSpeed("player") ) also.
  8. - combat only doesn't work anymore (tested on timeless island, Burning Berserker (ie)) - no Header "Attacking ...." in the logfile anymore
  9. By default, this solution cast a lethal and a non-lethal poison, depending of the knowledge and the priority-list (idPoisons[1]=lethal, [2]=non-lethal). If there is already a poison, and the run time of the poison will be less then 13 min, it will be renewed, if we are not in combat. (We need it before) not AFK (who want casting while afk ?!?) not Falling, Flying or Riding (mounted) (flying + casting = falling) not casting Why 13 Minutes ? Because of the duration time of a fight with a raid boss. You want more or less ? Change the 13 in local timeLeftToCastAgain = 13*60 to another value. <FightClassSpell> <SpellName>--Poison Managment</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript> if (GetUnitSpeed("player") == 0) and not (UnitCastingInfo("player")) and not (UnitChannelInfo("player")) and not (UnitAffectingCombat("player")) and not (IsMounted()) and not (IsFlying()) and not (IsFalling()) and not (IsResting()) and not (UnitIsAFK("player")) then --[[ refresh the Poisons if there are less then 13 min left (to be sure that it dont runs out while a raid boss fight ]] local timeLeftToCastAgain = 13*60; local idPoisons={} --[[ Deadly,Wound ]] idPoisons[1]={2823,8679} --[[ Leeching,Crippling,Mind-Numbing,Paralytic ]] idPoisons[2]={108211,3408,5761,108215} local now=GetTime(); for i=1,#idPoisons do local spell=""; local PoisonFound=0 for j=1,#idPoisons[i] do spellname=GetSpellInfo(idPoisons[i][j]) local name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId = UnitBuff("player",spellname); if (name==spellname) then local expireTimeLeft = expirationTime-now; PoisonFound=idPoisons[i][j] if (expireTimeLeft &lt; timeLeftToCastAgain) then if (IsUsableSpell(spellname)) then local start, duration, enable = GetSpellCooldown(spellname) if (duration==0) then CastSpellByName(spellname); spell=spellname; end end end break; end end if (PoisonFound==0) then for j=1,#idPoisons[i] do local spellname=GetSpellInfo(idPoisons[i][j]) if (IsUsableSpell(spellname)) then local start, duration, enable = GetSpellCooldown(spellname) if (duration==0) then CastSpellByName(spellname); spell=spellname; break; end end end end if not (spell=="") then print("Poison: "..spell) result=true break; end end end </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>1</Priority> <CombatOnly>false</CombatOnly> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <CheckIfView>false</CheckIfView> <AddToSettingsActiveByDefault>true</AddToSettingsActiveByDefault> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> <CanMoveDuringCast>No</CanMoveDuringCast> <DescriptionSpell>Poison Managment</DescriptionSpell> </FightClassSpell> based on WoW 5.4.2.
  10. http://www.wowhead.com/item=40768 Moll-e is a item that engineers could create and use. The item must be in a bag. The handling is like a normal mailbox. And like a normal Mailbox it isn't possible to get the item in target. I see a different Item name in the minimap, but I dont use a english client. the spell www.wowhead.com/spell=54710 create an objet with the ID 191605
  11. The "Combat" detection isn't usefull in all cases. Because of this I select a target in Raids only if i am sure that the fight has startet (or the pullcountdown will be 0). And I wait for the first CP to start the buffs, debuffs etc to be sure, that I am in fight to. It lose (very little) DPS, but I am sure, that I dont pull the boss or that my buffs are running out without an impact
  12. Maybe you a special bag, i.e. a bag for herbalism,mining or engeniering, that is not full? In this case wrobot will find space (it not useable, but the bag is not full.)
  13. Sorry, my profiles are not rotation based, they work with the given situations, based on a priority list. In this case I never check energy, because it's never nessessary. If a spell is usable, and all given conditions are given, I use it. There is maybe a spell with more dps, but this spell is not ready in this moment or a condition is not set, or the priority is lower. And waiting in a fight is never a good idea. You will never get the perfekt profile or fights. There are so many buffs, that will modify our spells and/or dps and/or energy .
  14. I use the talent Marked for Death because pooling doesnt make sense if you are boting. And Marked for Deatch could help you also with your second shadow dance problem...maybe.
  15. At first: The talent "Marked for Death" is needed to use the spell "Marked for Death". Without them, only the Redirect spell will be used. 1. Check if there are any combopoints around there, but not on the target. In this case we use Redirect if possible. 2. If Redirect is not usable, then we use "Marked for Death". which give us 5 CP instant. (accept Shadow Blades is active.) <FightClassSpell> <SpellName>--combopoints instant</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript>result="" local spell="nothing" if UnitExists("target") and not UnitIsFriend("player", "target") and (GetComboPoints("player")==0) then idRecuperate=73651 local spellname=GetSpellInfo(idRecuperate) --[[ No CP and Recuperate ready? Then we have CP nearby ! ]] local usable,noCP=IsUsableSpell(spellname) if (usable) then local idRedirect=73981 local start, duration, enabled = GetSpellCooldown(idRedirect) --[[ redirect ready ?]] if (duration==0) then local spellname=GetSpellInfo(idRedirect) if (IsSpellInRange(spellname, "target")==1) then spell=spellname end end end if (spell=="nothing") then local idMarkDeath=137619 local idShadowBlades=121471 local SBname=GetSpellInfo(idShadowBlades) local start, duration, enabled = GetSpellCooldown(idMarkDeath) --[[ Marked for Death ready ?]] if (duration==0) and not (SBname==UnitBuff("player",SBname)) then local spellname=GetSpellInfo(idMarkDeath) local usable,noCP=IsUsableSpell(spellname) if (IsSpellInRange(spellname, "target")==1) and (usable) then spell=spellname end end end if not (spell=="nothing") then CastSpellByName(spell) print("cp : "..spell) result=true end end; </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>30</Priority> <CombatOnly>false</CombatOnly> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <CheckIfView>false</CheckIfView> <AddToSettings>true</AddToSettings> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> </FightClassSpell> based on WoW 5.4.2.
  16. Added: cast Feint, if spell not interruptable --[[ Feint added...If you don't want to use it, remove here ---> ]] if (kicked==0) and (spell) then --[[ not kickable or no free spells? let's do feint and hope the best. ]] idFeint=1966 local spellname=GetSpellInfo(idFeint) local start, duration, enabled = GetSpellCooldown(idFeint) if (duration==0) then CastSpellByName(spellname) kicked=idFeint end end --[[ ---> to here ]]
  17. i.e. Summon Enabler Stalker is a NPC that will you find near every entry and teleport point in every ini. This could (an should) be blacklistet. But i.e. in Icecrown, first room, you will find Deathbound Ward . These will be attackable after activating a trap at the bottom, but wrobot try to attack the NPC before it is activated. For the player the target isn't targetable before.
  18. @Womble: I send it to Droidz. @Droidz Spell range could be....I will check size next time (but I dont believe, because the problem stays after changeng to Adds and back.) 200 000 000 couldnt be the limit...because yesterday it works fine and the log says that the problem was there after two add-phases. in this case Immerseus didn't have so much HP.
  19. Send via PM. Dont post it here. To much infos.
  20. a fight against Immerseus with wrotation is very simple: Nothing happens. The rotation in other cases works fine, except Immerseus. see also the 12:34:25 - Player Attack Immerseus (lvl 93) [F] 12:34:25 - Cast Redirect [F] 12:34:29 - Launch LUA script: RunMacroText("/use 10") [F] 12:34:30 - Cast Slice and Dice <-- 1 min 10 sec pause 12:35:42 - Player Attack Adds (lvl 92) [F] 12:35:42 - Cast Sinister Strike [F] 12:35:42 - Cast Redirect [F] 12:35:43 - Cast Marked for Death [F] 12:35:43 - Cast Marked for Death [F] 12:35:43 - Launch LUA script: --Buffs [F] 12:35:44 - Launch LUA script: RunMacroText("/startattack") [F] 12:35:44 - Launch LUA script: --Stun [F] 12:35:45 - Cast Slice and Dice 12:36:06 - Player Attack Immerseus (lvl 93) [F] 12:36:07 - Cast Redirect [F] 12:36:09 - Launch LUA script: RunMacroText("/use 10") <-- pause [F] 12:36:22 - Cast Slice and Dice <-- pause [F] 12:36:36 - Cast Recuperate [F] 12:36:36 - Cast Recuperate <-- pause [F] 12:36:48 - Cast Slice and Dice <-- pause 12:37:03 - Player Attack Adds (lvl 92)
  21. This error you will find often in the log, not only Immerseue. but: I have the same problem. Nothing to do at Immerseus. And i dont use the same profile. I opened an Bug report :
  22. Thats the reason, why i use the minimal solution: Shadow Step. I can be sure to be behind the target. except (the only bads): - you are stealth - AND a lowlevel Mob find you, attack you, and dont make damage - AND the script try shadow step to get behind the mob for Ambush In this case you will never behind the Mob because it turns as fast as you. :-)
  23. try TargetLastTarget() instead of TargetUnit("playertarget")
  24. More like this. 1. Did I have a focus and is it friendly 2. have my focus a target and have this target less health then max (combat has started) 2a. (added) and the target of my focus isn't friendly 3. is my focus in range 4. target focus, cast spell, target my target again. if UnitExists("focus") and UnitIsFriend("player", "focus") then local idTotT=57934 local spellname=GetSpellInfo(idTotT) if (UnitExists("focustarget") and not UnitIsFriend("focus", "focustarget") and (UnitHealth("focustarget") ~= UnitHealthMax("focustarget")) and (UnitHealth("focustarget")>0) ) then if (IsSpellInRange(spellname, "focus")==1)then TargetUnit("focus") CastSpellByName(spellname) TargetUnit("playertarget") end end end
  25. CastSpellByName work only on a target, so you have to switch the target bevor and after the spell (see my code above). And you should check if your focus target is friendly :-) and if you are in combat. Casting while runing only through the ini whouldnt be help. Best time to cast is after the start of a combat and the focus has a target. (because without a target he dont make DPS.)
×
×
  • Create New...