dodying / UserJs

MIT License
313 stars 120 forks source link

hvAutoAttack-建议反馈贴 #11

Closed dodying closed 7 years ago

dodying commented 7 years ago

这个issue实在是太长,我也懒得删

所以只能讨论之前未解决的问题

(在解决后就关闭这个issue)

如果是新的意见/建议/Bug,请新开issue

欢迎各种意见建议。 Comments and suggestions are welcome. 但是,限于作者的惰性与笨拙,所以可能有意见建议不会被采用。 But, limited to the author's inertia and clumsy, NOT all suggestions will be accpet.

实力甩锅,英文翻译来自谷歌。 translation from Google.

2016年12月8日 18:10:12 为了使这个Issue的可读性增加,这个Issue会进行定期清理。 In order to increase the readability of this Issue, the Issue will be cleaned regularly.

@QQ15822 @syaofox @Melaleucake @maoboshi @robinwar @ckck8489 以前的issues已经CLOSED,重开一帖

mela93 commented 7 years ago

Is there any way to set stamina standards for Arena and Random Counts separately? @a1a2fess would you like described in more detail?

dodying commented 7 years ago

@a1a2fess

  1. search countRound();
  2. add these snippets of code after Step1 found var stamina=parseInt(gE('.fd4>div').innerHTML.match(/\d+/)[0]);if((stamina<85&&g('roundType')==='ar')||(stamina<80&&g('roundType')==='ba')){setAlert('Error',3);if(!confirm(g('lang').all[19])){pauseChange();return}}

PS. I do not understand why set different point.

cerealumineko commented 7 years ago

I really like this script great work Dodying and the community! One point I think the script can be improved is the deprecating skills. It would be more efficient to just cast the skill on monsters 2, 5 and 8 then cast it on the monsters that resisted the skill. This would look less automatic and will need less skill casts per round for mages.

dodying commented 7 years ago

That sounds like that. Thank you for your suggestion. I will improve in the next version

mela93 commented 7 years ago

@dodying 問個問題如何改代碼 改成所有怪物都有imp debuff才進行攻擊 個人需求 麻煩大神了 PS:祝考試順利

duang3 commented 7 years ago

以下问题需要大神帮助: 如何修改关于“drain”的代码 1.仅对带有 img “焚燒的靈魂”的目标释放drain,最好是所有的。(这个优先)

2.如果目标“生命吸竊”还在,也能对其重复释放drain。 img

有劳大神了!

dodying commented 7 years ago

@duang3 多谢普及知识与提供图片地址

以下问题需要大神帮助:

修改方案如下:

  1. 查找 for (var i = 0; i < monsterBuff.length; i++) {
  2. 步骤1中找到代码后添加 monsterStatus[i].soulfire = (gE('img[src*="soulfire"]', monsterBuff[i])) ? true : false; monsterStatus[i].drainhp = (gE('img[src*="drainhp"]', monsterBuff[i])) ? true : false;
  3. 查找 if (g('option') ['debuffSkill_' + i] && isOn(skillLib[i].id) && !gE('#mkey_' + monsterStatus[0].id + '>.btm6>img[src*="' + skillLib[i].img + '"]'))
  4. 步骤3中找到代码前添加 if (i === 'Dr' && g('option') ['debuffSkill_Dr'] && isOn('211')) { monsterStatus.sort(objArrSort('soulfire')); if (monsterStatus[monsterStatus.length - 1].soulfire) { gE('211').click(); gE('#mkey_' + monsterStatus[monsterStatus.length - 1].id).click(); g('end', true); return; } else { monsterStatus.sort(objArrSort('drainhp')); for (var j = 0; j < monsterStatus.length; j++) { if (!monsterStatus.isDead) break; } gE('211').click(); gE('#mkey_' + monsterStatus[j].id).click(); g('end', true); return; } } else
dodying commented 7 years ago

@syaofox

我想自己添加检查怪物是否处于眩晕状态,怎么添加? 原因是我现在玩无限龙吼,发现龙吼的眩晕不能叠加回合,打算检测怪物处于眩晕就不出龙吼 或者下个版本能更新这个选项吗?

额,发现以前的想法是错误的,还有耽搁了你这么久时间,真是抱歉 以下是修改脚本方法:

  1. 查找 for (var i = 0; i < monsterBuff.length; i++) {
  2. 步骤1中找到代码后添加 if (gE('img[src*="wpn_stun"]', monsterBuff[i]))monsterStatus[i].stun=true;
  3. 查找 isOn('1101')
  4. 步骤3中找到代码的下一行前方添加 if (!g('monsterStatus') [0].stun)
nomagon commented 7 years ago

Hi Dodying, Great script!~ Is it possible to make it so it will stop debuffskill_im (imperil) when just half of all the monsters are imperiled? Or, if it is easier, that it will stop casting imperil when it tried three times already this round. Thank you~

cerealumineko commented 7 years ago

There is a bug where after the duration of a scroll ends (eg scroll of protection) the script will cast the buff (eg cast protection) again even if it is not chosen in the self-buff option.

dodying commented 7 years ago

@nomagon Do you want to change the feature about Imperiled all enemies.? If do,you can

  1. search for (var i = - 2; ; ) {
  2. add these snippets of code after Step1 found if (2 * gE('div.btm6 img[src*="imperil"]', 'all').length >= g('monsterAlive')) break;

@cirreal I'll check the code. Thanks for the feedback.

drkui commented 7 years ago

When I updated from 2.66b to the latest version, my riddle notification popup doesn't work anymore, I can still hear the sound though. Tested on both Chrome and Firefox. Random Encounter notification popups work fine though.

drkui commented 7 years ago

Hi again,

I'm training my proficiencies and noticed that there's no '3rd tier' in 'Offensive Spells Conditions'. Currently, it's making me use tier 3 spells which is very MP-consuming.

dodying commented 7 years ago

I don't consider whether to add the feature '3rd tier' to a future version temporarily. There are a temporary solution.

  1. search isOn('1' + g('attackStatus') + '1')
  2. For example, if you want cast 3rd when there are 1 enemy left. add these snippets of code after Step1 found &&g('monsterAlive')>=1
drkui commented 7 years ago

I added the snippet of code like this, but it was still casting the 3rd tier spell: } else if (isOn('1' + g('attackStatus') + '1'&&g('monsterAlive')>=100)) {

Did I add the snippet of code incorrectly?

dodying commented 7 years ago

(isOn('1' + g('attackStatus') + '1') && g('monsterAlive') >= 100) NOT (isOn('1' + g('attackStatus') + '1'&&g('monsterAlive')>=100))

drkui commented 7 years ago

I just tried testing that snippet of code (isOn('1' + g('attackStatus') + '1') && g('monsterAlive') >= 100) and it's still casting 3rd tier spells, the 1st tier spells aren't being cast at all.

dodying commented 7 years ago

Umm 1st Fiery Blast 2nd Inferno 3rd Flames of Loki

drkui commented 7 years ago

I don't have Elemental up that high yet.

I do have Forbidden, which is what I tried. hv

dodying commented 7 years ago

Umm, i mean that for example, Fiery Blast is the 1st tier spell, Inferno is the 2nd and Flames of Loki is the 3rd

drkui commented 7 years ago

Yes? I'm saying that with the snippet of code, I'm only casting Ragnarok (3rd tier spell), but I only want to cast Corruption (1st tier spell) to train my proficiency.

If there were a '3rd tier' in 'Offensive Spells Conditions', I would be able to set it to '100' like my 2nd tier box option so that 3rd tier spells are never cast.

dodying commented 7 years ago

oh, wtf what i said before was wrong. i'm so sorry. the 1st means the highest level spell while the 3rd lowest.

drkui commented 7 years ago

lol really? I had always assumed it was the way you originally said it was. The EHWiki seems to have it as:

1st Fiery Blast 2nd Inferno 3rd Flames of Loki

dodying commented 7 years ago

oh, ok. i'll change the word in the config page.

drkui commented 7 years ago

Hi, some more feedback:

I keep getting the message: "can not cast de-skills normally, please manually attack some turns". If there is is a way to skip the depreciating skill it was going to use and move to the next action or maybe use the de-skill/attack another monster, that would be fantastic! I think even automatically attacking the monster with a staff until one of the debuffs runs out is better than clicking on the popup then manually doing something. The monsters often get more than 6 debuffs (playstyle: mage), which means there's a lot of popups to tell me to manually attack. =/

dodying commented 7 years ago

I see. I'll change it.

nomagon commented 7 years ago

@dodying Thanks for reply. I have added the code as described, but after adding it, the script no longer works (even settings icon disappeared). It works when i remove that line. Did i paste it in wrong? The relevant part is below:

function allImperiled() { //给所有敌人施放Imperil g('monsterStatus').sort(objArrSort('order')); var monsterBuff = gE('div.btm6', 'all'); var j; for (var i = - 2; ; ) { if (2 gE('div.btm6 img[src="imperil"]', 'all').length >== g('monsterAlive')) break; if (!j && i >= monsterBuff.length) { j = true; i = 0; } else if (j && i >= monsterBuff.length) {

dodying commented 7 years ago

@nomagon Umm, it's my mistake. >= NOT >==

nomagon commented 7 years ago

Thanks, it works now!

drkui commented 7 years ago

Hi,

Not sure if it's a bug, but in previous versions (like 2.66), the 'Turns' counter would reset after every round, but in recent versions it doesn't reset and keeps going

I'm not sure if the 'Turns' issue is what's causing this however, I like using a script called 'Battle Stats Ex' to keep track of the items I use, but it isn't working properly on 2.70. It stops updating after the first round, but it works perfectly on 2.66 though.

dodying commented 7 years ago

I'm sure that it's not a bug. bcz I had changed the code about reloader. Also,you can change the code in Battle Stats Ex to make it effective.

  1. search var muTag = d.getElementById("monsterpane");;
  2. add these snippets of code before Step1 found var mainTag=d.getElementById("mainpane");if(mainTag){var mo2=new MutationObserver(function(){main("firstrun");mo2.disconnect()});mo2.observe(mainTag,{childList:true})};
drkui commented 7 years ago

Thanks, that worked!

By the way, is there some code to automatically confirm the 'Can not cast de-skills normally, continue the script? NOTE: It just effect this round.' popup?

dodying commented 7 years ago

@drkui @a1a2fess OK, I'll update it these days.

WinAu commented 7 years ago

2.71版本,turn自动刷新后的第一个回合,怪物存活数貌似会被赋值为怪物总数。例如设定6只怪物ofc,turn刷新后是8只怪物2只存活的状况,这时如果ofc是亮的就会释放。

WinAu commented 7 years ago

不不,您的脚本6爆了,只是不报bug都不叫打代码了。 还有就是,我觉得既然都有stamina减少过度会停止了,不妨弄个答错小马所丢的stamina的log……看着心里有底 还有两点建议:1是增加个战士的1/2/3阶技能仅对boss使用的选项。 2是增加一个更加频繁地使用ofc 的选项,因为就我个人的使用感受,经常会遇到马炮冷却好了也在spirit状态但oc值经常在200以下100以上 上上下下,够不着马炮也够不着取消spirit,只能一只一只怪砍的状况。我自己就在判断里加了句: if(g('option').skill.OFC && (g('monsterAlive') >= g('option').skillMonster.OFC || g('bossAlive') >= g('option').skillBoss.OFC) && g('oc') <= 150 && parseInt(getValue('ofcturns')) <= 0){ gE('#ckey_spirit').click(); g('end', true); return; } 不怎么懂js,只是看见你判断技能释放哪里可用来修改……我弄了个ofcturns记录马炮的冷却。

@dodying 感谢作者接受我的建议 但是对于“当可以施放特殊技能时才开启Spirit Stance“ ,我不知道您是明确了要做这个功能还是可能曲解了我的意思。。。 若是后者我想我应该将第2点建议表述为: 当除了OC值外(敌人数量、ss状态、冷却等等)都满足释放OFC的条件时,关闭ss状态以收集OC。

drkui commented 7 years ago

I noticed that the turn counter resets when applying changes to the settings page, after a riddle, or even refreshing the page. Regarding the settings, they are changed even though the apply button wasn't pressed.

Also regarding the Channeling effect, I noticed that it wastes the effect if options aren't selected or if the "First re-cast: if spell effect expires in ≤ xx turns" doesn't trigger. Maybe it should default to Full-Cure or the first in the cast-order or a user-selected skill when Channeling is on the last turn?

WinAu commented 7 years ago

对了还有掉落检测是不是不会记录you are victorious之后的内容……

我错了,每round都有you are victorious……应该是arena最后一round貌似是不是不会记录某些东西,譬如chaos token和token of blood就完全没记录,还有好像与龙共舞最后出的Magnificent 或 Legendary 品质装备也没有记录(我设定的是Magnificent以上记录)。然而三女神与树的Sapling却是每次都有记录……感觉好奇怪

robinwar commented 7 years ago

博主,好久不见,可否增加以下机能 1.攻击顺序能否设置反转,就是优先攻击血量大的怪(特别是boss) 2.马炮释放N(可设定值)回合后,如仍处在SS状态,则关闭SS一次

dodying commented 7 years ago

@WinAu @robinwar 关于小马炮 我的想法其实是满足施放条件了就施放,施放完之后就关闭Spirit Stance

@WinAu 掉落检测
我再看看

@robinwar 攻击顺序反转√

dodying commented 7 years ago

@drkui about the Channeling effect, umm, my poor english, I think you can change Cast Order in 'Supportive Spells' tab (the cast order includes Cast or re-cast)

WinAu commented 7 years ago

@dodying 明白了……我还以为你的意思是只有开马炮的那一回合开ss。

不过我觉得还是有点瑕疵。特别是对于盾战,以盾战的OC收集能力,在“施放完之后就关闭Spirit Stance”到收集满OC开启ss应该不用20回合……然后在剩余大约30回合的小马炮冷却期,怪物弱一点的情况下OC值应该在接下来的回合都能接近全满直至下一个马炮;但是如果怪物很强,就会在ss下不断cure、使用药水,OC很大概率降到200以下,然后可能就会出现我一开始提到的状况 “oc值经常在200以下100以上 上上下下”,降低效率。

当然这都只是我的推测……实际情况还是你实现了这功能后才知道。

drkui commented 7 years ago

@dodying

Let's say I have "First re-cast: if spell effect expires in ≤ xx turns" set to 25 turns and have the "Protection" and "Regen" box checked. If "Protection" and "Regen" still have 80 turns left, the Channeling effect will just expire/disappear since Protection and Regen is still on.

I find that a bit wasteful, so maybe it should use something on Channeling's last turn before it expires.

dodying commented 7 years ago

@drkui Oh, I see now. umm, how about "during Channeling effect, first cast and then re-cast (re-cast no matter the buff expire in much turns)"

drkui commented 7 years ago

@dodying

I think that might work.

Also in 2.72, under the Main tab, in Stamina. There's a "staminaLostLog" button that doesn't show anything when clicked.

cacycacy commented 7 years ago

对自身技能中Draught施放条件的设置,是否会影响到主要设置中的Draught设置的百分比,能够对自身技能的单一技能做施放条件,而不是共用同一套施放条件吗?

dodying commented 7 years ago

@drkui I'll make it next version.

About the "staminaLostLog", if you push a wrong answer in RiddleMaster, and then it'll be recorded by staminaLostLog.

@cacycacy 嗯,怎么说好呢,就是同时满足对自身技能的施放条件主要设置中百分比才会使用相关Draught

对自身技能的单一技能做施放条件

√,下个版本

WinAu commented 7 years ago

攻击顺序反转的选项貌似有bug……勾选之后不会自动打怪……

dodying commented 7 years ago

@WinAu √,请更新脚本

drkui commented 7 years ago

@dodying

I'm on 2.73, settings still save even when the "Apply" button isn't clicked.

And as previously mentioned, I noticed that the turn counter resets when applying changes to the settings page, after a riddle, or even refreshing the page. <- I'm not sure if this is a bug.

When Auto-arena is selected and when I pause the game, it refreshes the page after the idling time set in "Idle in any page for [xxx]s, start Arena". This could be really bad because if I pause the game, I'm usually away from the computer.

What conditions do I use to limit the depreciating skills to only bosses?

Also, I'm not sure why I'm using HP&Spirit Draughts at the start of the round when HP/Spirit was at 100% (I had it set on the "Main" tab so that it would only use HP Draughts at 60% and Spirit Draughts at 70%). Is this because of the conditions on the "Supportive" tab?

WinAu commented 7 years ago

@dodying 谢谢,可以动了。 而且居然这么快就内置了遭遇,以防万一我想问问遭遇有没时间浮动,是多少? 自动竞技场和无限循环gf下也生效么?

当更改设置并应用时,如果没有更改攻击模式且原本是物理攻击时,其会显示为空…… 还有这两天偶尔会遇到,turns自动刷新刚好遇到进入下一round的时候,有几率在you are victorious提示框时卡住,状态的turns和speed都是1,要手动点击you are victorious提示框下面进入下一层才会继续,点击之后you are victorious提示框直到刷新前不会消失