Freitag, 21. November 2014

[Project] Classicwarcraft.com

Like the topic name already implies this topic is about a project Ive been following a long time:

ClassicWarcraft.com

With Kronos, Nostalrius aswell ClassicWarcraft chasing the goal of perfecting vanilla WoW it looks like the road is finally going in the right direction.
I cant take you the decision about which project to choose but I can tell you what I like about ClassicWarcraft:

  • ClassicWarcraft emerged from RadiantWoW which was a project being in development for probably four whole years
  • The development team is constantly in IRC working hand in hand with the testers (application can be done via the website)
  • Atleast from my point of view CW is a very tiny but familial community. When I have questions related to programming, university (both admins are professional programmers by the way) or any other topic CW is my first approach. I think most people camping the IRC know each other for many years already.
  • The project got a well-thought-out system including tools, custom gm commands to enhance debugging and guidelines written to make everydays life as a tester easier:

Vanilla players are looking into an exciting future with those three new projects arising. Atleast I am very excited which one will make it.

Mittwoch, 19. November 2014

[Sport] Double-backflip from some random tree

I just digged through old HDs and found a few old clips. This one got recorded out of a bet in summer two years ago. Not my original plan that my first video uploaded for this blog is some unedited random crap but who cares :p


Donnerstag, 13. November 2014

[Tools] Unblock every youtube video without any external software

Note: If you are just interested in unblocking all youtube videos skip to to the end
This guide may contain a few errors which will be corrected later.

Different proxy systems

When I browse the web I got a few factors which are important to me:
  1. My traffic should be encrypted
  2. No webserver should see my real IP
  3. I dont want any company to collect data about my surf behaviour
  4. I dont want to be restricted from content only avaible to certain countrys
Today nearly every application has a bunch of options dedicated to routing the traffic over a proxy which makes the setup very easy:



Most tools offer us options for different proxy protocols including Socks, HTTPS aswell HTTP.
Having the possibility to set only one static proxy is a nice start but what are we supposed to do if we want to use different proxys without manually switching them each time?

The answer is pretty easy: PAC (Proxy auto-config)
Proxy auto-config is a proxy mode which evaluates the site we are visiting and chooses a proxy depending on user specified conditions.
The evaluation process is defined within a .pac file which we point our browser to. The code is written in JavaScript:

 function FindProxyForURL(url, host)  
 {  
      return "DIRECT";  
 }  



Everytime our browser is connecting to a page it will call the FindProxyForURL with the URL aswell the host as parameters. Lets make an example:
1. We are visiting http://www.youtube.com/watch?v=Mh_cLN66zHA

2. Our browser will call FindProxyForURL with the following parameters:
URL: http://www.youtube.com/watch?v=Mh_cLN66zHA
Host: www.youtube.com

3. The return value of FindProxyForURL will define how we connect to the page: 
"DIRECT" -> make a direct connection
"PROXY 127.0.0.1:81" -> Connect over http proxy at 127.0.0.1:81
"SOCKS5 127.0.0.1:1028" -> Socks5 at 127.0.0.1:1028
etc.

4. Using the above script we will connect directly dont matter the URL or host. Later on I will show how to extend the script.

Creating an extended pac

If I visit YouTube my traffic is routed over an american server without any encryption since videos arent getting blocked because of copyright over there. Encryption isnt important since the information being transfered to youtube isnt sensitive and it would only slow down the connection.

For every other kind of connection I use an encrypted tunnel to a server located in the Netherlands since their internet policy is very tolerant.

1. Recognise a url which belongs to YouTube:

We could check if the url contains "youtube" but the result wouldnt be very accurate:
https://www.google.de/?gws_rd=ssl#q=youtube would be recognised as youtube for example.

Instead of just searching for a string we take advantage of regular expressions. A few useful links about RegEx:
http://en.wikipedia.org/wiki/Regular_expression
http://regexlib.com/CheatSheet.aspx
http://www.regexr.com/

Dont be intimidated by the first look. Its actually a good understandable topic. To give you a little push in the right direction we will define a pattern which finds youtube urls:

 ^https?:\/\/(www\.)?([^/]+\.)?youtube\.com  

^ represents the start of a string. In conclusion our string has to start with http
a ? after brackets or a single character states that the bracket content or the character can occur one time but dont need to.
Our string can begin with either:
  • http
  • https


backslashes (\) are used to escape characters which would have another meaning unescaped.
backslash-slash (\/) represents a slash (/) for example.
Going from that our matched string can be:

  • http://
  • https://
(www\.)? states that www. CAN occur one time but dont need to. Our possibilities:
  • http://
  • http://www.
([^\]+\.)?:
Like we previously learned ? means that the bracket content can occur up to one time.
[^\] represents any character but backslash (\).
The + after [^\] states that we can have one to unlimited characters which arent backslahes.
[^\]+ represents:
  • ...
  • a
  • aa
  • aaa
  • abc
  • ...
but it doesnt represent:
  • ...
  • \
  • a\
  • aa\
  • aaa\
  • ...
In conclusion: We can have up to one substring which includes unlimited characters that arent backslashes and ends on a dot (.).

A few possible matches for "^https?:\/\/(www\.)?([^/]+\.)?":
  • http://www.aaa.
  • https://www.a.
  • http://aaaaaa.
  • https://aa.
Remaining part of our RegEx is just youtube\.com which means that youtube.com has to follow. No rules here. Simple as that.

It might be a bit complicated at the first look however you can trial and error yourself through this topic using the previously linked RegEx cheat sheet aswell the RegEx tester. Every rule I used in my expression is also explained on the sheet (and yes I never used RegEx before so my expression might not be perfect).

Having explained a sample expression I continue defining two RegExp objects inside my pac:

 var youtubeRegEx = new RegExp("^https?:\/\/(www\.)?([^/]+\.)?youtube\.com", "i");  
 var ytStreamRegEx = new RegExp("^http:\/\/[^/]+\.googlevideo\.com", "i");  

The second parameter "i" makes the expression case insensitive (a = A).

2. Extend FindProxyForURL(url, host)


 function FindProxyForURL(url, host)  
 {  
      if (youtubeRegEx.test(url) || ytStreamRegEx.test(url))  
      {  
           alert("YT proxy for URL: " + url);  
           return "SOCKS5 X.X.X.X:1080";  
      }  
      return "SOCKS5 127.0.0.1:5555";  
 }  

test() is a function from RegExp objects taking a string parameter. If the expression can be found inside the given string (in our case the url) the function will return true:
If the current url belongs to youtube our browser will use the socks5 at X.X.X.X:1080 (the american proxy server)
Otherwise it will use my local SSL-Socks5 (replaceable with DIRECT for a direct connection).

3. Verify our pac-script

Debugging a pac script can be very annoying and isnt even possible in every browser. For SrWare Iron (or better said Chrome) you can do the following:

If you scroll up you will see that we call alert() inside the if brackets. This will give us some debug information:


Chromium related browsers will change the system proxy settings by default. You should get a proxy extension like "ProxySwitchy Sharp" or "Proxy Helper" so the changes are only applied to Chrome / SrWare Iron.

TL/DR GIVE ME YOUTUBE PROXY!!!!

  1. The YouTube proxy is offered by MrNice. YouTube proxy means it will only process requests to YouTube so dont try to use it for different pages: https://board.ovpn.to/index.php?page=Thread&threadID=16819 (register an account and click thanks to see the hidden text)
  2. Download or copy the pac script (replace X.X.X.X with the IP you got from the thread)
  3. Point your browser to the .pac file
And finally enjoy:



(an ovpn.to registration code can be retrieved here)



Mittwoch, 5. November 2014

[WoW / Tools] Zzuks Aoe Helper (pt. 2)

Hello,
yesterday I announced a new tool called Zzuk Aoe and asked for feedback at the same time. Thanks to rop and the guy who commented one of my posts I started merging Zzuks Looter with Zzuks Aoe.
In conclusion the tool will be renamed once I find a good name.

Furthermore I started adding two more parameters which give DoAoe() aswell ItemAoe() the possibility to modify the target / player position in certain directions.
We can either modify the coordinates by X yards into the players directions or in the direction the unit is facing. To explain this feature better I created a little image (did I mentioned I studied art? :p):


Parameter Mod will take 1 or 2 to specify the direction. Parameter Range will specify by how much we want to adjust our target position.

Beside from the above mentioned I integrated a Show() aswell Hide() command to deal with the console (atleast I am annoyed by having to many windows open). Interact() is an exact copy from interact with target which is known from further expansions and Loot() toggles Aoe looting known from Zzuks Looter.

A little video:



Dienstag, 4. November 2014

[WoW / Tools] Zzuks AoE helper

Zzuks blog just got his 3100 visitor and the daily peak is around 100 views. Seeing this is an extreme blast for me taking in consideration that building a page about programming which will get big is harder than building some stupid facebook page where the content consists of "tag your friend" photos aswell equal bullshit.

Right now I am working on a new parkour / freerunning movie which will be done hopefully soon (already borrowed my girlfriends SLR :p). I feel like starting of with a movie is the best attempt to introduce parkour since it is something visual you cant describe with words.
Furthermore I am stil working on the bot tutorial series. It just got delayed a bit since university is really taking up a lot of time lately.

Also I search someone with Windows 8 who want to help me making all my tools compatible to it.

And finally Zzuks AoE helper:

To celebrate the 3000 visitor achievement I started working on another tool for 1.12.1 WoW: Zzuks Aoe



What does this tool do? It will extend the WoW API with one new command:
DoAoe(spell, unit);


Like the name already implies calling this function will start the aoe spell at either the target or the players position. A little example:
/script DoAoe("Blizzard", "target");

When I tried multiboxing I always thought it is a bit bad that you cant make use of aoe easily. With Zzuks Aoe you can create a macro holding the above code and bind it to the same key for all toons. Using any multiboxing software you can now use aoe synchronous and at the same position with multiple characters.

To give you a better picture I also recorded a short video:



Going from that I plan to implement a few more commands:
  • DoAoe(itemname, unit) -> Using DoAoe with items eg. engineering bombs
  • Interact(unit) -> Running to an unit and interact (friendly) or attack (attackable) it
  • Merging Zzuks Aoe with Zzuks Looter and implementing LootUnits()
  • Option to hide the command prompt after attaching (implement Show() and Hide() aswell Exit() to control Zzuks Aoe ingame)
Since the tool is stil in active development I invite everyone to suggest other features to add.