|
|
|
HV Script Thread, Discuss your creations. Includes guidelines and infos for script creation (2020-02-28 upd) |
|
Jun 27 2017, 17:50
|
Fap.Fap
Group: Gold Star Club
Posts: 1,551
Joined: 19-October 11
|
QUOTE(nekolor @ Jun 26 2017, 20:24) Ok, rolling out. Major one: HV Battle Reloaded — essentially ex- Reloader with all obsolete AJAXing taken out and some of my fixes and additions I had for some time and didn't get to post before.
HV_Battle_Reloaded.user.js.txt ( 22.15k )
Number of downloads: 1656 how can I make the popup "continue to arena challenge" dissapear completly ?
|
|
|
|
|
|
Jun 27 2017, 17:58
|
Sapo84
Group: Gold Star Club
Posts: 3,332
Joined: 14-June 09
|
QUOTE(Scremaz @ Jun 27 2017, 17:31) it's already been reported. sooner or later a fix will appear.
It's as easy as taking nekolor's code and inserting it in the right place. But since the script is using disallowed methods I see no point in posting fixes (mostly because I'm not versioning it and I've done some additional changes, and since it's now allowed anymore I'm not comfortable in posting new versions (don't even try to PM me about, first and last warning)).
|
|
|
|
|
|
Jun 27 2017, 18:21
|
sickentide
Group: Catgirl Camarilla
Posts: 1,355
Joined: 31-August 10
|
QUOTE(Gambit126 @ Jun 27 2017, 11:14) I've always used the default font, even when I was using Chrome 49.
i see, so that was the problem. it used to be possible to extract the gem and item names from their respective onmouseover properties, but since 0.85 they have to be taken from text so you have to use a custom font for it to work QUOTE(Gambit126 @ Jun 27 2017, 13:45) So are you saying that I need to set a custom font to get the script to work properly? If so, what settings do I need for the font and how do I get it on my computer to make the settings?
on the hv settings page, check Use Custom Font and set the values to whatever looks good for you, no need to install a font if you use one that comes included with your system. these are the settings i use: (IMG:[ i.imgur.com] http://i.imgur.com/uhfvG0h.png)
|
|
|
|
|
|
Jun 27 2017, 18:28
|
Maharid
Group: Catgirl Camarilla
Posts: 2,373
Joined: 27-April 10
|
@Sapo84: What is not allowed in the script? I throw the fact that it can cast a magic on a target by rightclick without selecting the spell first? I was unsure about that so i simply cut the use by making the rightclick attack.
|
|
|
Jun 27 2017, 18:55
|
Scremaz
Group: Gold Star Club
Posts: 24,304
Joined: 18-January 07
|
QUOTE(Sapo84 @ Jun 27 2017, 17:58) It's as easy as taking nekolor's code and inserting it in the right place.
But since the script is using disallowed methods I see no point in posting fixes (mostly because I'm not versioning it and I've done some additional changes, and since it's now allowed anymore I'm not comfortable in posting new versions (don't even try to PM me about, first and last warning)).
uhu. thank you for your feedback sir.
|
|
|
|
|
|
Jun 27 2017, 19:38
|
ShigureKaiII
Newcomer
Group: Gold Star Club
Posts: 74
Joined: 10-February 11
|
QUOTE(Hakrei @ Jun 27 2017, 01:52) This might just be me but whenever I switch to ultiltarian mode Sapo`s MouseMagelee stops working completely until I switch back to standard. Is that script not compatible with ultilarian mode? I'm on chrome via tampermoneky btw...
I had the same problem (IMG:[ invalid] style_emoticons/default/anime_cry.gif)
|
|
|
|
|
|
Jun 27 2017, 19:43
|
pooaa
Group: Gold Star Club
Posts: 645
Joined: 20-July 14
|
QUOTE(Sapo84 @ Jun 27 2017, 23:58) It's as easy as taking nekolor's code and inserting it in the right place.
But since the script is using disallowed methods I see no point in posting fixes (mostly because I'm not versioning it and I've done some additional changes, and since it's now allowed anymore I'm not comfortable in posting new versions (don't even try to PM me about, first and last warning)).
so it is possible to fix it myself? if it does, could you give a guide?
|
|
|
|
|
|
Jun 27 2017, 19:58
|
Sapo84
Group: Gold Star Club
Posts: 3,332
Joined: 14-June 09
|
QUOTE(pooaa @ Jun 27 2017, 19:43) so it is possible to fix it myself? if it does, could you give a guide?
Sure. I hope I didn't sound like I wasn't going to help at all. Take CODE if(document.querySelector('#vbh img').width < 496*minHP) { document.getElementById('vbh').style.backgroundColor = 'red'; return; } if(document.querySelector('#vbm img').width < 207*minMP) { document.getElementById('vbm').style.backgroundColor = 'red'; return; } if(document.querySelector('#vbs img').width < 207*minSP) { document.getElementById('vbs').style.backgroundColor = 'red'; return; }
and put something like CODE function getPlayerHP() {var el=document.querySelector('#vbh') || document.querySelector('#dvbh'); if (el) return el.firstChild.firstChild.width/el.offsetWidth;} function getPlayerMP() {var el=document.querySelector('#vbm') || document.querySelector('#dvbm'); if (el) return el.firstChild.firstChild.width/el.offsetWidth;} function getPlayerSP() {var el=document.querySelector('#vbs') || document.querySelector('#dvbs'); if (el) return el.firstChild.firstChild.width/el.offsetWidth;}
if(getPlayerHP() < minHP) { return; } if(getPlayerMP() < minMP) { return; } if(getPlayerSP() < minSP) { return; }
No more red colored background (is probably easily fixable in 3 lines though) but whatever (also red background for spirit was bbroken). Edit: Forgot to say that the credits for the above functions go to nekolor. (well, I modified a couple of semicolons but the code is identical) (also since Tenb is not writing current and full HP the functions are all understimating the current value, it doesn't really matter since the error is <1% anyway) This post has been edited by Sapo84: Jun 27 2017, 20:03
|
|
|
|
|
|
Jun 27 2017, 20:27
|
sickentide
Group: Catgirl Camarilla
Posts: 1,355
Joined: 31-August 10
|
i'm not interested in hoverplay, but i do like to hit monsters with a variety of spells by clicking or scrolling the mouse, so here's something that does just that, including a spell cycler that requires no live data to pick the strongest available spell CODE // ==UserScript== // @name HV Mouse Bindings // @namespace hvmousebind // @description Adds customized mouse binding to HV // @match *://*.hentaiverse.org/* // @version 1.0 // @grant none // ==/UserScript==
// false to keep unused, [] for attack, skill/spell ids to cast var settings = { clickLeft: false, // default clickMiddle: [163,162,161], // Ragnarok, Disintegrate, Corruption clickRight: [], // Attack wheelUp: [213], // Imperil wheelDown: [212], // Weaken wheelLeft: [232], // Silence wheelRight: [222], // Sleep }
if ( !(log = document.getElementById('textlog').firstChild) ) return;
function SetupBindings() { for ( i = 0; i < 10; i++ ) { if ( monster = document.getElementById('mkey_' + i) ) { monster.addEventListener('mousedown', HandleClick(i), true); monster.addEventListener('wheel', HandleWheel(i), true); monster.addEventListener('contextmenu', e => { e.preventDefault(); }); }}}
function HandleClick(i) { return function(e) { var monster = document.getElementById('mkey_' + i); if ( !monster.hasAttribute('onclick') ) return; var action; switch ( e.which ) { case 1: action = settings.clickLeft; break; case 2: action = settings.clickMiddle; break; case 3: action = settings.clickRight; break; default: action = false; break; } if ( action ) { e.preventDefault(); var n = action.length; while ( n-- > 0 ) document.getElementById(action[n]).click(); monster.click(); }}}
function HandleWheel(i) { return function(e) { var monster = document.getElementById('mkey_' + i); if ( !monster.hasAttribute('onclick') ) return; var action; if ( e.deltaY < 0 ) action = settings.wheelUp; else if ( e.deltaY > 0 ) action = settings.wheelDown; else if ( e.deltaX < 0 ) action = settings.wheelLeft; else if ( e.deltaX > 0 ) action = settings.wheelRight; if ( action ) { e.preventDefault(); var n = action.length; while ( n-- > 0 ) document.getElementById(action[n]).click(); monster.click(); }}}
var obs = new MutationObserver(SetupBindings); obs.observe(log, {childList: true}); SetupBindings(); This post has been edited by sickentide: Jul 3 2017, 21:24
|
|
|
|
|
|
Jun 27 2017, 20:52
|
Sapo84
Group: Gold Star Club
Posts: 3,332
Joined: 14-June 09
|
QUOTE(sickentide @ Jun 27 2017, 20:27) including a spell cycler that requires no live data to pick the strongest available spell
QUOTE Any automation or semi-automation of gameplay beyond a single "action" Since you're selecting up to *number of spell in the cycle* I'd say it's probably still forbidden. In doubt someone should ask Tenboro (but I fear he will say that it's not a sigle action).
|
|
|
Jun 27 2017, 20:58
|
sickentide
Group: Catgirl Camarilla
Posts: 1,355
Joined: 31-August 10
|
QUOTE(Sapo84 @ Jun 27 2017, 20:52) Since you're selecting up to *number of spell in the cycle* I'd say it's probably still forbidden. In doubt someone should ask Tenboro (but I fear he will say that it's not a sigle action).
it's all right if you define 'action' as 'something that advances the turn'
|
|
|
Jun 27 2017, 21:12
|
Scremaz
Group: Gold Star Club
Posts: 24,304
Joined: 18-January 07
|
QUOTE(sickentide @ Jun 27 2017, 20:58) it's all right if you define 'action' as 'something that advances the turn'
hmm...
|
|
|
Jun 27 2017, 21:20
|
lololo16
Group: Gold Star Club
Posts: 2,836
Joined: 5-March 12
|
QUOTE(sickentide @ Jun 27 2017, 15:27) i'm not interested in hoverplay since i believe that each action should require conscious input from the player,
Would it be possible for you to add something like this? Similar to mousemelee, but the user needs to point at the monster and press 'A'. I really miss that script (IMG:[ invalid] style_emoticons/default/cry.gif)
|
|
|
|
|
|
Jun 27 2017, 22:01
|
sickentide
Group: Catgirl Camarilla
Posts: 1,355
Joined: 31-August 10
|
QUOTE(lololo16 @ Jun 27 2017, 21:20) Would it be possible for you to add something like this? Similar to mousemelee, but the user needs to point at the monster and press 'A'. I really miss that script (IMG:[ invalid] style_emoticons/default/cry.gif) i've been updating and extending FiniteA's HV Keybinds, so i added that function to it
HVKeybindsHover.2.5.2.user.js.zip ( 3.13k )
Number of downloads: 131for your request you want: Bind(KEY_A, MonsterAction(Nothing)); you can also use it to perform specific actions on the targeted monster, like so: Bind(KEY_I, MonsterAction(Cast('Imperil'))); This post has been edited by sickentide: Jun 28 2017, 11:13
|
|
|
|
|
|
Jun 27 2017, 23:03
|
lololo16
Group: Gold Star Club
Posts: 2,836
Joined: 5-March 12
|
QUOTE(sickentide @ Jun 27 2017, 17:01) i've been updating and extending FiniteA's HV Keybinds, so i added that function to it [attachmentid=104869] for your request you want:
Bind(KEY_A, MonsterAction(Nothing));
you can also use it to perform specific actions on the targeted monster, like so:
Bind(KEY_I, MonsterAction(Cast('Imperil')));
You are the best!! ♥ Now I'm ready (IMG:[ invalid] style_emoticons/default/cool2.gif) Thank you very much!
|
|
|
|
|
|
Jun 27 2017, 23:13
|
pooaa
Group: Gold Star Club
Posts: 645
Joined: 20-July 14
|
QUOTE(Sapo84 @ Jun 28 2017, 01:58) Sure. I hope I didn't sound like I wasn't going to help at all. Take CODE if(document.querySelector('#vbh img').width < 496*minHP) { document.getElementById('vbh').style.backgroundColor = 'red'; return; } if(document.querySelector('#vbm img').width < 207*minMP) { document.getElementById('vbm').style.backgroundColor = 'red'; return; } if(document.querySelector('#vbs img').width < 207*minSP) { document.getElementById('vbs').style.backgroundColor = 'red'; return; }
and put something like CODE function getPlayerHP() {var el=document.querySelector('#vbh') || document.querySelector('#dvbh'); if (el) return el.firstChild.firstChild.width/el.offsetWidth;} function getPlayerMP() {var el=document.querySelector('#vbm') || document.querySelector('#dvbm'); if (el) return el.firstChild.firstChild.width/el.offsetWidth;} function getPlayerSP() {var el=document.querySelector('#vbs') || document.querySelector('#dvbs'); if (el) return el.firstChild.firstChild.width/el.offsetWidth;}
if(getPlayerHP() < minHP) { return; } if(getPlayerMP() < minMP) { return; } if(getPlayerSP() < minSP) { return; }
No more red colored background (is probably easily fixable in 3 lines though) but whatever (also red background for spirit was bbroken). Edit: Forgot to say that the credits for the above functions go to nekolor. (well, I modified a couple of semicolons but the code is identical) (also since Tenb is not writing current and full HP the functions are all understimating the current value, it doesn't really matter since the error is <1% anyway) how to use these code? should i find the first code and replace them by second code? i know little about codes (IMG:[ invalid] style_emoticons/default/anime_cry.gif)
|
|
|
|
|
|
Jun 27 2017, 23:21
|
Sapo84
Group: Gold Star Club
Posts: 3,332
Joined: 14-June 09
|
QUOTE(pooaa @ Jun 27 2017, 23:13) how to use these code? should i find the first code and replace them by second code?
Yes, basically.
|
|
|
|
|
|
Jun 27 2017, 23:28
|
Slobber
Group: Gold Star Club
Posts: 7,794
Joined: 4-February 11
|
there was a quick change by T regarding the RE's (all https now) i did a quick change of the url references from http -> https so this RE counter should be working again CODE // ==UserScript== // @name Countdown Timer for the Random Encounter Event on E-Hentai // @description Adds a countdown timer for the Random Encounter event on E-Hentai.org and its subdomains. // @grant none // @include https://e-hentai.org/* // @include https://*.e-hentai.org/* // ==/UserScript==
var wnd = window; var doc = wnd.document; var loc = location; var href = loc.href;
if(!doc.querySelector('*[name="ipb_login_submit"]') && /(\.e-hentai\.org\/)|(^e-hentai.org\/)/.test(loc.hostname+'/') && !/\/palette\.html?\b/.test(href) && !doc.getElementById('countdown_timer')) { var set_cookie = function(k, v, t) { var expires = '; expires=Fri, 31 Dec 9999 23:59:59 GMT'; if(t) { var d = new Date(); d.setTime(d.getTime() + (t * 24 * 60 * 60 * 1000)); expires = '; expires=' + d.toGMTString(); } doc.cookie = k + '=' + escape(v) + expires + '; domain=.' + /[^\.]+\.[^\.]+$/.exec(loc.hostname)[0] + '; path=/'; //doc.cookie = k + '=' + escape(v) + expires + '; path=/'; }; var get_cookie = function(k) { var n = k + '='; var ca = doc.cookie.split(';'); for(var i=0; i<ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(n) == 0) { return unescape(c.substring(n.length, c.length)); } } return undefined; };
if(!get_cookie('event')) { console.log('The "event" cookie does not exist or is invalid.'); throw 'exit'; } if(!get_cookie('re_cnt')) { set_cookie('re_cnt', 0); } if(!get_cookie('re_lst')) { set_cookie('re_lst', '[]'); }
var timer_box = doc.createElement('DIV'); timer_box.id = 'countdown_timer'; timer_box.onclick = function() { if(/\bReady\b/i.test(this.textContent)) { wnd.open('https://e-hentai.org/news.php', href=='https://e-hentai.org/news.php'?'_self':'_blank'); } };
var toggle_re_lst = function() { //alert(get_cookie('re_lst')); var re_lst_box = doc.getElementById('re_lst_box'); if(re_lst_box) { re_lst_box.parentNode.removeChild(re_lst_box); return; } re_lst_box = doc.createElement('DIV'); re_lst_box.id = 're_lst_box'; re_lst_box.style.cssText = 'top:15px; right:0px; position:fixed; z-index:2147483647; background:rgba(0,255,0,1); color:#ff0000;'; setTimeout(function() { re_lst_box.style.cssText = 'top:15px; right:0px; position:fixed; z-index:2147483647; background:rgba(0,255,0,0.2); color:#ff0000;'; }, 3000); re_lst_box.innerHTML = '[List of RE Events Occurred Today]<BR>'; re_lst_box.onmouseover = function () { this.style.cssText = 'top:15px; right:0px; position:fixed; z-index:2147483647; background:rgba(0,255,0,1); color:#ff0000;'; }; re_lst_box.onmouseout = function () { this.style.cssText = 'top:15px; right:0px; position:fixed; z-index:2147483647; background:rgba(0,255,0,0.2); color:#ff0000;'; }; var decode_hv_b64 = function(i, e) { var a = doc.createElement('A'); a.href = 'https://hentaiverse.org/?s=Battle&ss=ba&encounter=' + e; a.target = '_blank'; a.textContent = (i+1) + '. '; a.style.cssText = 'color:#ff0000'; var d = atob(e); var m = /([^-]+?)-([^-]+?)-([^-]+)/.exec(d); if(m == null) { return a; } var uid = m[1]; var epoch = m[2]; var hash = m[3]; var da = new Date(); da.setTime(parseInt(epoch)*1000); da = da.toLocaleTimeString(); a.textContent += da; return a; }; var re_lst = JSON.parse(get_cookie('re_lst')); if(re_lst) { for(var i=0, len=re_lst.length; i<len; i++) { var a = decode_hv_b64(i, re_lst[i]); if(i != 0) { re_lst_box.appendChild(doc.createElement('BR')); } re_lst_box.appendChild(a); } doc.body.appendChild(re_lst_box); } }; addEventListener('keydown', function(evt) { if((evt.target.tagName!='INPUT') && (evt.target.tagName!='TEXTAREA') && (evt.keyCode == 76)) { toggle_re_lst(); } }, false); if(href == 'https://e-hentai.org/news.php') { toggle_re_lst(); }
var newsinner = doc.getElementById('newsinner'); var nb = doc.getElementById('nb'); if(newsinner && nb && /\/e-hentai\./.test(href)) { timer_box.style.cssText = 'display: inline-block; background: rgb(242, 239, 223); border: 1px solid rgb(92, 13, 18); color:#ff0000; padding:5px; margin-top:5px;'; newsinner.insertBefore(doc.createElement('DIV'),nb).appendChild(timer_box); } else { timer_box.style.cssText = 'line-height:15px; top:0px; right:0px; position:fixed; z-index:2147483647; color:#ff0000;'; doc.body.appendChild(timer_box); }
var update_timer = function() { if(href == 'https://e-hentai.org/news.php') { var da = new Date(); if((da.getUTCHours()==0) && (da.getUTCMinutes()==0) && (da.getUTCSeconds()<=10)) { if(!/^Your IP.*banned/i.test(doc.body.textContent)) { setTimeout(function() {loc.reload();}, 10000); } } } var now = Math.floor(new Date().getTime()/1000); var diff = parseInt(get_cookie('event')) + 1800 - now; if(isNaN(diff)) { setTimeout(function() {loc.reload();}, 60000); return; }; if(diff <= 0) { timer_box.textContent = 'Ready! re_cnt=' + get_cookie('re_cnt'); if(href == 'https://e-hentai.org/news.php') { if(/^Your IP.*banned/i.test(doc.body.textContent)) {} else if(/The site is currently in Read Only\/Failover Mode/i.test(doc.documentElement.innerHTML)) { setTimeout(function() {loc.reload();}, 60000); } else { loc.reload(); } return; } } else { var mm = Math.floor(diff / 60) + ''; mm = (mm.length >= 2 ? mm : '0' + mm); var ss = Math.floor(diff % 60) + ''; ss = (ss.length >= 2 ? ss : '0' + ss); timer_box.textContent = mm + ':' + ss + ', re_cnt=' + get_cookie('re_cnt'); if( (mm == '00') || ((mm == '01') && (ss == '00')) ) { try { if(doc.getElementById('eventpane').getElementsByTagName('div')[1].getElementsByTagName('a')[0].textContent != 'HentaiVerse') { if(!doc.getElementById('re_snd')) { var audio = new Audio('http://www.freesound.org/data/previews/234/234524_4019029-lq.mp3'); audio.id = 're_snd'; audio.volume = 1; audio.loop = true; audio.play(); doc.body.appendChild(audio); } if(/50|40|30|20|10|05|00/.test(ss)) { alert('Random Encounter'); } } else { if(doc.getElementById('re_snd')) { doc.getElementById('re_snd').parentNode.removeChild(doc.getElementById('re_snd')); } } } catch(e) {} } } setTimeout(update_timer, 1000); }; update_timer();
var eventpane = doc.getElementById('eventpane'); if(eventpane != null) { var re_evt = eventpane.querySelector('a[onclick*="https://hentaiverse.org/"]'); //var re_evt = eventpane.getElementsByTagName('div')[1].getElementsByTagName('a')[0]; if(re_evt) { var hv_lnk = ''; if((/^https:\/\//.test(re_evt.href)) && (!/#/.test(re_evt.href))) { hv_lnk = re_evt.href; } else { hv_lnk = /.*window\.open\(['"]?([^'"]+)['"]?/.exec(re_evt.onclick.toString().split('\n').join('')); if(hv_lnk) { hv_lnk = hv_lnk[1]; } } if(hv_lnk) { hv_b64 = hv_lnk.replace(/.+?&encounter=([^&]*).*/, '$1'); // the base64 encoded part var re_lst = JSON.parse(get_cookie('re_lst')); if((!re_lst) || (re_lst.length == 0)) { re_lst = []; } if(re_lst.indexOf(hv_b64) == -1) { re_lst.push(hv_b64); } re_lst = JSON.stringify(re_lst, null, ' '); set_cookie('re_lst', re_lst); if(doc.getElementById('re_lst_box')) { toggle_re_lst(); toggle_re_lst(); } } else { console.log('Error: There is a random encounter event but the HentaiVerse link cannot be found.'); throw 'exit'; } re_evt.addEventListener('click', function() { if(re_evt.text != 'HentaiVerse') { set_cookie('re_cnt', parseInt(get_cookie('re_cnt'))+1); re_evt.text = 'HentaiVerse'; if(doc.getElementById('re_lst_box')) { toggle_re_lst(); toggle_re_lst(); } } eventpane.style.display = 'block'; }, false); } else if(/\bdawn\b/i.test(eventpane.textContent)) { set_cookie('re_cnt', 0); set_cookie('re_lst', '[]'); if(doc.getElementById('re_lst_box')) { toggle_re_lst(); toggle_re_lst(); } } } }
|
|
|
|
|
|
|
|
|
Jun 28 2017, 04:21
|
CZer
Group: Gold Star Club
Posts: 1,166
Joined: 27-January 09
|
QUOTE(SleepDealer @ Jun 26 2017, 13:46) Is it available to make this work with MouseMagelee? Because spell cast rotation is not working and gives attack only even if I disabled mousemelee function in your reloader. upd: you have error in reloader CODE // noBlinking: true, I am having this same problem with Chrome 59.0.3071.115. Changed defaultAction to 2 but still melee attack. No hover attack, only manual clicking works. Doesn't matter if mouseMelee is true or false. Settings: defaultAction: 2, // Change the default action to a T1 spell // | 0 | 1 | 2 | 3 | 4 | 5 | 6 | // | No Change | Fiery Blast | Freeze | Shockblast | Gale | Smite | Corruption | mouseMelee: true, // MouseMelee ( hover on enemies to attack ) minHP: 0.45, // Stop if hp is below this threshold minMP: 0.4 , // Stop if mp ... minSP: 0.4, // Stop if sp ... stopWhenChanneling: true, // Stop if you have channeling buff chromeFix: true, // Fix MM things on chrome by manually tracking cursor movement Result: You evade the attack from Bloodwalker. Void Strike crits Bloodwalker for 1490 void damage. Cold Strike crits Bloodwalker for 1415 cold damage. Arcane Blow crits Bloodwalker for 3930 void damage. This post has been edited by CZer: Jun 28 2017, 04:27
|
|
|
|
|
|
3 User(s) are reading this topic (3 Guests and 0 Anonymous Users)
0 Members:
|
|
|
|
|