|
|
|
HV Script Thread, Discuss your creations. Includes guidelines and infos for script creation (2020-02-28 upd) |
|
Feb 10 2014, 20:34
|
Razor320
Group: Members
Posts: 220
Joined: 17-October 13
|
If you using Firefox, go into settings and disable "Use automatic scrolling". That should help.
|
|
|
Feb 11 2014, 00:25
|
Amaduyu Mitsumi
Group: Gold Star Club
Posts: 1,609
Joined: 2-October 11
|
Hmm yeah, I'm playing HV with Iron v31.
|
|
|
|
|
|
Feb 11 2014, 01:58
|
holy_demon
Group: Gold Star Club
Posts: 5,417
Joined: 2-April 10
|
QUOTE(Kagoromo @ Feb 11 2014, 01:11) I'd like to assign Scroll of Absorption to the middle mouse button but Spell Spam doesn't seem to do the trick. May I have a few pointers please?
I don't support Scroll/Item with SpellSpam. Does the scroll work with other mouse button? (left click, right click) Anyway, if you want to use items (Potions, scroll, infusion) with SpellSpam, then replace the getSpell function with this CODE function getSpell(name) { return name ? (document.querySelector('.bts>div[onmouseover*="(\'' + name + '"]:not([style*="opacity"])') || document.querySelector('.btpa>[onmouseover *= "(\'' + name + '"]') || document.querySelector('.bti3>[onmouseover*="(\''+ name +'"]')) : null; }
This post has been edited by holy_demon: Feb 11 2014, 02:17
|
|
|
|
|
|
Feb 11 2014, 08:22
|
Amaduyu Mitsumi
Group: Gold Star Club
Posts: 1,609
Joined: 2-October 11
|
Thank you holy_demon, your fix works. Now Spell Spam can use battle items as well as other skills/spells. Got the Scroll of Absorption on the middle and Defend on the right mouse button. With this I'm golden. (IMG:[ invalid] style_emoticons/default/laugh.gif)
|
|
|
Feb 14 2014, 13:24
|
hzqr
Group: Gold Star Club
Posts: 4,672
Joined: 13-May 09
|
Mini forum script that converts recent dates (eg, "Today, 20:00") to relative dates (eg, "30 minutes ago"), in case anyone is interested:
relative.user.zip ( 758bytes )
Number of downloads: 57
|
|
|
Feb 14 2014, 15:05
|
Owyn
Group: Members
Posts: 692
Joined: 12-May 10
|
QUOTE Mini forum script that converts recent dates (eg, "Today, 20:00") to relative dates (eg, "30 minutes ago"), in case anyone is interested: that's a great script. QUOTE(Gasior @ Feb 6 2014, 17:34) HV Equipment Comparison 0.6.3.1
HVEquipCompare_0.6.3.1.zip ( 19.31k )
Number of downloads: 153[ userscripts.org] HV Equipment Comparison 0.6.3.1- Updated to wiki data 02.02.2014 -- Shielding, Reinforced, Agile and Charged prefix data stay old -- "Shade of the Arcanist" are considered as post-0.78 could you disable off hand view for weapons when there is no off hand weapon is equipped (or a shield is there) ?
|
|
|
|
|
|
Feb 14 2014, 15:22
|
723
Group: Members
Posts: 2,621
Joined: 4-July 10
|
HV Keybind 2.5.0 cant work in chrome 32?what's up? So I use the Spell Spam 3.2.1. left,right middle is good,but its not enough for a mage. Can Spell Spam use the side key? or automatic cast a spell which not in CD in a spell group?
|
|
|
|
|
|
Feb 15 2014, 03:59
|
holy_demon
Group: Gold Star Club
Posts: 5,417
Joined: 2-April 10
|
QUOTE(723 @ Feb 15 2014, 00:22) HV Keybind 2.5.0 cant work in chrome 32?what's up?
enable KeyBind Script, enter a battle, press Ctr+Shift+J, copy everything in the popped up window and post it here. It's likely that some function is deprecated in chrome 32 Also consider using Iron (Chrome 31) because Chrome 32 is notoriously full of bug. QUOTE So I use the Spell Spam 3.2.1. left,right middle is good,but its not enough for a mage. Can Spell Spam use the side key? or automatic cast a spell which not in CD in a spell group?
What is a side key? Spell rotation violates the "no semi-automation" rule This post has been edited by holy_demon: Feb 15 2014, 12:43
|
|
|
|
|
|
Feb 15 2014, 10:50
|
Gasior
Group: Members
Posts: 2,667
Joined: 20-October 10
|
QUOTE(Owyn @ Feb 14 2014, 14:05) could you disable off hand view for weapons when there is no off hand weapon is equipped (or a shield is there) ?
HVEquipCompare_0.6.3.1a.user.zip ( 19.36k )
Number of downloads: 68
|
|
|
Feb 15 2014, 11:11
|
Lement
Group: Members
Posts: 2,977
Joined: 28-February 12
|
holy_demon: Automatic casting, perhaps(I lack context), but picking highest not CD by itself does not - the tiap's script to pick highest melee skill is years old and used, and this topic has been talked about with tenboro on irc and forums - as long as you're not, say, violating parsing live data rule, you're okay.
|
|
|
|
|
|
Feb 15 2014, 12:39
|
holy_demon
Group: Gold Star Club
Posts: 5,417
Joined: 2-April 10
|
QUOTE(Lement @ Feb 15 2014, 20:11) holy_demon: Automatic casting, perhaps(I lack context), but picking highest not CD by itself does not - the tiap's script to pick highest melee skill is years old and used, and this topic has been talked about with tenboro on irc and forums - as long as you're not, say, violating parsing live data rule, you're okay.
If I just blindly simulate click on all 3 spells, so the last one that isn't on cooldown will go through, would that be considered "semi-automation"? There's another, possibly legal approach, now that I think about it: keep an internal counter of cooldown (like I did for my HVCooldown script), but I'd prefer to go with the 1st approach. It's neater, faster, and less buggy. EDIT: hmm... I checked tiap's script. it actually does "live-data" parsing CODE var readyskills = document.querySelectorAll('#togpane_magico tr:nth-child(4) ~ tr > td > div:not([style])')
That line basically single out all available skill :/ This post has been edited by holy_demon: Feb 15 2014, 12:48
|
|
|
|
|
|
Feb 15 2014, 12:56
|
Lement
Group: Members
Posts: 2,977
Joined: 28-February 12
|
I personally read "live-data parsing" as "Look at dem monsters go", as it was only brought up/added in regards to that, with no mention before. In this topic, I know at least some who cycle do keep internal Cooldowsn in sessionStorage, while others use tiap's method just adapted to another row.
Do note that it is my personal interpretation though.
This post has been edited by Lement: Feb 15 2014, 12:57
|
|
|
|
|
|
Feb 15 2014, 14:04
|
holy_demon
Group: Gold Star Club
Posts: 5,417
Joined: 2-April 10
|
QUOTE(Lement @ Feb 15 2014, 21:56) I personally read "live-data parsing" as "Look at dem monsters go", as it was only brought up/added in regards to that, with no mention before. In this topic, I know at least some who cycle do keep internal Cooldowsn in sessionStorage, while others use tiap's method just adapted to another row.
Do note that it is my personal interpretation though.
Oh well I'm done. (IMG:[ invalid] style_emoticons/default/tongue.gif) It's fairly quick to code. It 's pretty much a String.split, a loop, and some UI change >.> SpellSpam 3.3.0
SpellSpam3.3.0.user.zip ( 2.22k )
Number of downloads: 240Bind different Attack/Skill/Spell to numkey, clicks, and hover. Support Rotation/Multicast. Eg: Cast Cure, Full-Cure, Heroic Health Potion, Spark of Life with right click, or Merciful Blow, Vital Strike, Shield Bash, Attack with hover (mousemelee-like). Press X to open customization tooltip. Hold Ctr/Alt/or Shift to temporarily disable the script without having to open the tooltip Features: - left/right/middle click, hotkey, or hover over a monster to cast a spell (targetting, non-targetting, special skill, or normal attack) - left/right/middle click on the battle log to cast non-targetting spell. - Press X to view a status box, and activate click, numkey, hover to your liking - Type your spell/skill name next to an interaction to choose which spell/skill to spam (case sensitive, you only need to type the beginning part of the spell name eg. "Weak" would still cast Weaken, but "weak" or "eaken" wouldn't work - You can type "Attack" (or "Att" if you're lazy) to use normal attack - yes you can play MouseMelee with this xD - Rotation: use dot, comma, or semicolon to separate spells in the same roation. Spell should be ordered by their priority. Example: CODE Cure; Full-Cure; Heroic Health Potion; Spark of Life Cast cure first. If cure on cooldown, cast Full-Cure. If Full-Cure on cooldown, use Heroic Health. If no more Heroic health, cast Spark. CODE Merciful Blow; Vital Strike; Shield Bash; Attack Cast Merciful Blow (T3) first. If it's not yet available, cast Vital Strike(T2). If not available, cast Shield Bash(T1). If no skill is available, attack normally. - Ctr, Alt, or Shift disables the script temporarily Change log: - support Rotation/Multi-cast - support Item/Scroll This update does not include the AJAX function to stack your actions. I probably won't ever release it considering how much of a hack it is <.< EDIT: If you think this spell/skill/item rotation is pushing the line, feel free to discuss and convince me to drop this feature. This post has been edited by holy_demon: Feb 15 2014, 22:09
|
|
|
|
|
|
Feb 16 2014, 03:01
|
animeai
Group: Members
Posts: 620
Joined: 18-November 09
|
QUOTE(holy_demon @ Feb 15 2014, 15:04) Oh well I'm done. (IMG:[ invalid] style_emoticons/default/tongue.gif) It's fairly quick to code. It 's pretty much a String.split, a loop, and some UI change >.> SpellSpam 3.3.0
SpellSpam3.3.0.user.zip ( 2.22k )
Number of downloads: 240- Rotation: use dot, comma, or semicolon to separate spells in the same roation. Spell should be ordered by their priority. Example: CODE Cure; Full-Cure; Heroic Health Potion; Spark of Life Cast cure first. If cure on cooldown, cast Full-Cure. If Full-Cure on cooldown, use Heroic Health. If no more Heroic health, cast Spark. CODE Merciful Blow; Vital Strike; Shield Bash; Attack Cast Merciful Blow (T3) first. If it's not yet available, cast Vital Strike(T2). If not available, cast Shield Bash(T1). If no skill is available, attack normally. That's pretty sweet. It looks like I finally have a nice simple way to level up depreciating prof XD EDIT: Depreciating Prof from about 10 to 50 in just over an hour XD Not bad, but it might be considered botting... hard to say :/ This post has been edited by animeai: Feb 16 2014, 04:24
|
|
|
|
|
|
Feb 16 2014, 05:28
|
n125
Group: Gold Star Club
Posts: 6,282
Joined: 23-May 08
|
QUOTE(holy_demon @ Feb 15 2014, 04:04) Oh well I'm done. (IMG:[ invalid] style_emoticons/default/tongue.gif) It's fairly quick to code. It 's pretty much a String.split, a loop, and some UI change >.> SpellSpam 3.3.0
SpellSpam3.3.0.user.zip ( 2.22k )
Number of downloads: 240Bind different Attack/Skill/Spell to numkey, clicks, and hover. Support Rotation/Multicast. Eg: Cast Cure, Full-Cure, Heroic Health Potion, Spark of Life with right click, or Merciful Blow, Vital Strike, Shield Bash, Attack with hover (mousemelee-like). Press X to open customization tooltip. Hold Ctr/Alt/or Shift to temporarily disable the script without having to open the tooltip Features: - left/right/middle click, hotkey, or hover over a monster to cast a spell (targetting, non-targetting, special skill, or normal attack) - left/right/middle click on the battle log to cast non-targetting spell. - Press X to view a status box, and activate click, numkey, hover to your liking - Type your spell/skill name next to an interaction to choose which spell/skill to spam (case sensitive, you only need to type the beginning part of the spell name eg. "Weak" would still cast Weaken, but "weak" or "eaken" wouldn't work - You can type "Attack" (or "Att" if you're lazy) to use normal attack - yes you can play MouseMelee with this xD - Rotation: use dot, comma, or semicolon to separate spells in the same roation. Spell should be ordered by their priority. [...] Suggestion for SpellSpam: Shift/Ctrl/Alt modifiers. For example, one can bind Cure to left click, and Full Cure to Shift + left click. Maybe the function that temporarily disables the script can be user-assigned to another key. This post has been edited by n125: Feb 16 2014, 05:29
|
|
|
|
|
|
Feb 16 2014, 05:52
|
holy_demon
Group: Gold Star Club
Posts: 5,417
Joined: 2-April 10
|
QUOTE(n125 @ Feb 16 2014, 14:28) Suggestion for SpellSpam: Shift/Ctrl/Alt modifiers. For example, one can bind Cure to left click, and Full Cure to Shift + left click. Maybe the function that temporarily disables the script can be user-assigned to another key.
I've had the idea of binding character hotkey with certain spell grouping. Eg, A will allow let you use OFC->attack while hover, S for T3->T2->T1->Attack while hover, and D for just attack while hover. The problem is mainly about interface and interaction. QUOTE(animeai @ Feb 16 2014, 12:01) That's pretty sweet. It looks like I finally have a nice simple way to level up depreciating prof XD
EDIT: Depreciating Prof from about 10 to 50 in just over an hour XD Not bad, but it might be considered botting... hard to say :/
If your weaken has 0 cd, you could have akf-grinded dep prof since SpellSpam 2.0 This post has been edited by holy_demon: Feb 16 2014, 05:58
|
|
|
|
|
|
Feb 16 2014, 10:59
|
Paarfi
Group: Gold Star Club
Posts: 929
Joined: 30-December 13
|
My internet connection is temporarily slow as hell. Is there any scripts that can make HV run faster?
|
|
|
Feb 16 2014, 11:21
|
Usagi =
Group: Gold Star Club
Posts: 2,923
Joined: 29-October 13
|
QUOTE(Paarfi @ Feb 16 2014, 16:59) My internet connection is temporarily slow as hell. Is there any scripts that can make HV run faster?
Well, holy demon is working on an ajax script that would make HV ping independant that'll be bundled with spell spam. Waiting for it myself, hope it gets released soon (IMG:[ invalid] style_emoticons/default/biggrin.gif) for now, maybe you can try the no image script. This post has been edited by LOL50015: Feb 16 2014, 11:22
|
|
|
|
|
|
Feb 16 2014, 11:48
|
holy_demon
Group: Gold Star Club
Posts: 5,417
Joined: 2-April 10
|
QUOTE(LOL50015 @ Feb 16 2014, 20:21) Well, holy demon is working on an ajax script that would make HV ping independant that'll be bundled with spell spam. Waiting for it myself, hope it gets released soon (IMG:[ invalid] style_emoticons/default/biggrin.gif) for now, maybe you can try the no image script. Don't wait cos I pretty much drop development for a public release for various reasons. I just make a version that suits my own need (no convenient UI and the likes). If you're interested to make one for yourself, here's the framework. It can send attack and toggle action request without waiting for server response, and redraw page when response to the last request is received. CODE HTMLFormElement.prototype.toString = function() { var line = ""; for (var i = 0; i < this.length; i++) { if (this[i].type === "radio") { if (this[i].checked) line += ((line.length > 1) ? "&" : "") + this[i].name + "=" + encodeURIComponent(this[i].value); } else { line += ((line.length > 1) ? "&" : "") + this[i].name + "=" + encodeURIComponent(this[i].value); } } return line; }
var BattleAJAX = function() { var form = document.getElementById("battleform").cloneNode();
form["battleaction"].value = 1;
var storage = {}; storage.lastResponse = 0; storage.curResponse = 0; storage.lag = 0; // sessionStorage.setItem("ajax" + formName, JSON.stringify(storage)); function post(params) { var xmlhttp = new XMLHttpRequest(); xmlhttp.open("POST", document.location.href, true); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.responseType = "document"; xmlhttp.timeout = 3000; storage.lastResponse += 1; var curResponse = storage.lastResponse; xmlhttp.ontimeout = function() { if (curResponse === storage.lastResponse) { refresh(); } else { xmlhttp.abort(); } } xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState === 2 && curResponse < storage.lastResponse) { storage.curResponse++; // console.log("sent", storage.curResponse, curResponse, storage.lastResponse); xmlhttp.abort(); } else if (xmlhttp.readyState >= 4 && xmlhttp.response !== null && curResponse >= storage.lastResponse) { storage.curResponse++; if (xmlhttp.response.querySelector("#battleform")) { storage.lag = Math.max(0, storage.lastResponse - curResponse); } else if (document.querySelector("#battleform") && xmlhttp.response.querySelector("#recoverform")) { setTimeout(function() { if (confirm("Inactive page. Refresh?")) { refresh(); } }, 20000); } // storage.lastResponse = curResponse; // sync(); if (storage.curResponse !== curResponse) { console.log("wrong", storage.curResponse, curResponse); storage.curResponse = curResponse; refresh(); } else { document.open(); document.write(xmlhttp.response.documentElement.outerHTML); document.close(); } xmlhttp.abort(); } } xmlhttp.send(params); }
var sync = function() { sessionStorage.setItem("ajax" + formName, JSON.stringify(storage)); } this.getLag = function() { return storage.lag; }
this.redraw = function(state) { storage.redraw = state !== null ? state : !storage.redraw; sessionStorage.setItem("ajax" + formName, JSON.stringify(storage)); }
var refresh = this.refresh = function() { post(null); }
this.restore = function() { document.open(); document.write(document.documentElement.outerHTML); document.close(); }
this.attack = function(target) { form["battle_targetmode"].value = "attack"; // form["battle_target"].value = 0 form["battle_target"].value = target.toString().replace("0", "10"); form["battle_subattack"].value = 0; post(form.toString()); }
this.toggle = function(name) { name = name.toLowerCase(); form["battle_targetmode"].value = name; form["battle_target"].value = 0; form["battle_subattack"].value = 0; post(form.toString()); }
this.cast = function() {
} };
As you can see, I stop working at the cast function. This post has been edited by holy_demon: Feb 16 2014, 11:54
|
|
|
|
|
|
Feb 16 2014, 11:55
|
Usagi =
Group: Gold Star Club
Posts: 2,923
Joined: 29-October 13
|
^^ Oh okay, I'll see if I can make it work lol, my programming knowledge is not as good.
|
|
|
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members:
|
|
|
|
|