Archive for June, 2009

My Dad :) June 28th, 2009

Michael Hartmayer

Just got my Dad’s CD put on YouTube. Nothing fancy~

He’s been singing and composing all his life and put out two CD’s. This is a small preview of his ‘Golden Classics’ Album. For more information about the CD, please get in touch with wolfhartmayer@gmail.com

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Reddit
  • StumbleUpon

Continue reading...


 

PHP LoadScript Class June 27th, 2009

Michael Hartmayer

This is a really handy class I wrote that loads all your scripts Server Side so that when your page loads there aren’t so many HTTP Requests. Useful if you’re trying to load 6 different js files and 4 different style sheets, or whatever. That’s 10 requests, completely gone. Just keep in mind that it dumps all your files straight into the html document- so, as long as you don’t have a problem with that, this is a great tool.

In addition, it’s really easy to add your own script types. Check out the script for details.

( Available At: PasteBin: LoadScript Class )

Usage:

<?php
   # Include Class
   include_once('class.scriptloader.php');
 
   # Instantiate
   $jsLoader = new ScriptLoader('JS');
 
   # Add Scripts
   $jsLoader->addScript('my-javascript.js');
   $jsLoader->addScript('jquery.js');
   $jsLoader->addScript('other-scripts.js');
 
   # Dump into Document
   $jsLoader->echoScripts();
?>

On a quick note, it’d probably be a lot ‘neater’ to mod-rewrite a php file to handle at least one request per script type. That way it doesn’t all get dumped straight into the page.

Something like:

RewriteRule ^script\.(.*)$ script-loader.php?type=$1 [L]

And for script-loader.php

<?php
   switch($_GET['type']) {
      case 'js':
         // Load all of the JavaScript files here
         break;
   }
?>

That way when you load something like script.js it will dump all of your java scripts into a ‘fake’ file. Just make sure to use the default $ScriptLoader->type (don’t set one when instantiating) if you are loading it from a src=”foo.bar”.

.. or something like that xD

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Reddit
  • StumbleUpon

Continue reading...


 

PHP TripCode June 25th, 2009

Michael Hartmayer

** EDIT **
I found some problems with my code. =) Did some research on PHP’s crypt() and found out that the salt doesn’t quite work they way I had expected it to. Going to post a revision soon.

This is my version of a PHP TripCode (that I will be using for No-Mess-Enger). The way it works is, the user chooses a name, and a key. That information along with the randomly generated URI generate an integer that will eventually be used to select a random animal or something like that. This will allow users to remain anonymous while upholding the integrity of the users authenticity, in case another user tries to choose the same name.

function utilMakeTripcode($alias,$key,$uri) {
  # generate tripcode
  $s = crypt($alias,"$key#$uri");
  $r = '';
  for($i=0;$i<strlen($s);$i++) {
     $r.= hexdec(substr($s,$i,1));
  }
 
  return bindec($r);
}

Example:

- User enters the Alias: Jon
- User enters the Key: SecretWord
- The TripCode Int generated is 101

At this point I can use something like this to select the users animal:

$usersAnimal = $allAnimals[$maxAnimals-$maxAnimals%$tripCodeInt];

In this example $allAnimals is an array holding every Animal name. $maxAnimals is the array size, and $tripCodeInt is the integer generated from the utilMakeTripCode() function.

So now when the user talks in Chat he might be called:
Jon the Koala

** Note **
I’ve only TESTED the function. Can’t verify that the second snippet works exactly that way. It’s more pseudo code.. so don’t hate me if it’s not quite right. ^.^

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Reddit
  • StumbleUpon

Continue reading...


 

Custom Scripting Language for Items June 20th, 2009

Michael Hartmayer

I’ve been working on some new software.. Below is a prototype version of my proprietary itemScript parser, written in PHP. The goal is to have a pseudo-scripting language available for game-items that can be read dynamically by the server, so that new items can be added without additional hard coding.

function scriptToArr($str) {
   # Parse for Whitespace
   $str = preg_replace("#(\r\n|\r|\n|\t|\s)#","",$str);
 
   # Event Handlers
   preg_match_all("#(.*?)\{(.*?)\}(,|)#is",$str,$findEventHandlers);
 
   $arrEvents = array();
   for($j=0;$j<sizeof($findEventHandlers[1]);$j++) {
      # this event
      $thisEvent = $findEventHandlers[1][$j];
 
      # these functions
      $getFunctions = $findEventHandlers[2][$j];
      $allFunctions = explode(";",$getFunctions);
 
      # get all parameters
      foreach($allFunctions as $function) {
         # read and parse function
         preg_match("#(.+?)\((.*)\)#",$function,$functionAndPara);
 
         $thisFunction = $functionAndPara[1];
         $thisParaSet = $functionAndPara[2];               
 
         # parse and arr strings
         while(preg_match("#\'(.+),(.+)\'#",$thisParaSet)) {
            $thisParaSet=preg_replace("#\'(.+?),(.+?)\'#","'$1\0COMMA\0$2'",$thisParaSet);
         }
         $thisParaSet = explode(",",$thisParaSet);
 
         # get each parameter
         foreach($thisParaSet as $parameter) {
            if($addPara = str_replace("\0COMMA\0",",",$parameter))
               $arrEvents[$thisEvent][$thisFunction][] = $addPara;
         }
      }
   }
   return $arrEvents;
}

Here is a sample script I created:

      onDraw {
         setMana( 1, thisPlayer() );
         doOtherThing( 5, thisPlayer() );
      },
      onExert {
         sendToHand( thisTile(), thisPlayer(), x, y, z, 0 );
      },
      onDestroy {
         setMana( 5, thisPlayer() );
      }

The script then gets torn apart and dumped into a multi-dimensional array. See Screenshot.

PHP Item Script Parser

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Reddit
  • StumbleUpon

Continue reading...


 

User Interface: Doodle Ragnarok Patcher June 6th, 2009

Michael Hartmayer

Threw this together for the DoodleRO project I’m working on. This serves as the launch pad and patcher for Doodle. Utilizing the existing patch software I was able to seamlessly integrate the web interface (the stoney area) with the software application. Overall, I think it looks pretty decent. ^_^

Doodle Ragnarok Patcher

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Reddit
  • StumbleUpon

Continue reading...


 

File Compression Hax June 3rd, 2009

Michael Hartmayer

So, I was playin around with WinZIP and WinRAR today, trying to understand how those programs work. I mean- I know HOW they work, but I wanted to see which types of files compress the best, and which don’t. It came to no surprise that text documents are the easiest to pack up, since there is so much data redundancy. So, I had a little fun.

I created a 100MB text file filled entirely with whitespace. Then I RAR’d it, and then ZIP’d that. Amazingly enough, I was able to reduce a 100MB file to 222bytes. That’s even less than my minimum sector size (4kb) . Awesome.

Check it out!

Download: Compression Hax

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Reddit
  • StumbleUpon

Continue reading...


 

The “M”pire – Just for Fun June 3rd, 2009

Michael Hartmayer

Lawl, check out my new work background.

The M Pire

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Reddit
  • StumbleUpon

Continue reading...