Diablo 3 Countdown: Ich habe aus undefinierbaren geistigen Gründen eine Seite für Diablo 3 erstellt, darauf befindet sich ein Countdown. Ich habe das Spiel vorbestellt und warte und warte. Um mir die Wartezeit zu “verkürzen” habe ich diese Seite erstellt. Man fühlt sich doch gleich wohler wenn man sieht wie die Zeit vergeht ;)
Torchlight 2 ist als Preorder erhältlich (mit Torchlight 1), ich habe mein EVE Abo gekündigt und fange wieder mit WoW an (jaja, schimpft nur). Derzeit habe ich keine Muse EVE weiter zuspielen. Derzeit spiele ich wie ein Besessener Dota 2, ist ein wirklich tolles Spiel. Und ich bastel derzeit im RPG Maker VX. Das war mein Lebenszeichen für heute.
Das Wort zum Sonntag
Heute mal ein paar Neuigkeiten zum Sonntag.
Ich habe EVE weitergespielt und es geschafft mir zwei Schlachtschiffe zuzulegen, jetzt heisst es Skills trainieren für die Bewaffnung. Mal schauen wie sich das in die Länge ziehen wird, ich freue mich aber auf den ersten Einsatz. Desweiteren werde ich dann auf Black Ops skillen, liest sich sehr interessant was man da machen kann.
Dieses Wochenende war Diablo 3 als Beta frei spielbar. Dabei kann man bis Stufe 13 spielen um das Spiel auszutusten, auch testete Blizzard die Serverstabilität. Hat wohl nicht immer geklappt, denn oft waren die Server nicht erreichbar oder zu voll. Naja ist eine Beta. Bei mir hats ewig gedauert bis ich das Spiel installieren konnte da der Installer recht bescheiden ist. So gab es andauernd Fehler beim Download, ich hoffe das ist bis zum Release behoben.
Leider war das Spiel etwas eine Enttäuschung, das Skillsystem mit den Runen sagt mir einfach nicht zu. Ich fand da das Feintuning in Diablo 2 besser und nicht ganz so Casual.
Ich habe nun auch angefangen ernsthaft Dota 2 zu spielen. Langsam komme ich mit der Spielweise in diesem Spiel immer besser klar, so hatte ich es geschafft das letzte mal auch wirklich ein Spiel zu bestimmen. Naja, lag wohl auch daran dass der Gegner wohl nicht so gut war. Aber immerhin, mich hat es gefreut.
Zu guter letzt etwas Produktives: Ich arbeite derzeit an einen neuen Internetauftritt einer Firma für Hardwarereparatur. Mal schauen wir beim Chef der Vorschlag ankommt. Ich hoffe gut.
PS: Der Blog ist nun endlos, wenn man nun nach unten scrollt in der Artikelansicht laden sich die vorherigen automatisch nach (Javascript vorrausgesetzt).
PHP MySQL Class
Auf drängen eines Einzelnen für die Allgemeinheit eine Warnung:
Diese Klasse dient der Veranschaulichung und sollte so nicht benutzt werden da sie ein Sicherheitsrisiko darstellt (zufrieden ‘fanta’?)
| PHP | | copy code | | ? |
| 001 | < ?php |
| 002 | |
| 003 | class MySQL { |
| 004 | |
| 005 | var $connection; |
| 006 | |
| 007 | function connect() |
| 008 | { |
| 009 | global $dbhost,$dbuser,$dbpass; |
| 010 | |
| 011 | if(!$this->connection) |
| 012 | $this->connection = mysql_connect($dbhost,$dbuser,$dbpass) OR DIE ($this->mysql_err()); |
| 013 | |
| 014 | if($this->connection) |
| 015 | return $this->connection; |
| 016 | else |
| 017 | break; |
| 018 | } |
| 019 | |
| 020 | function mysql_err() |
| 021 | { |
| 022 | global $PHP_SELF; |
| 023 | $error = mysql_errno($this->connection).": ".mysql_error($this->connection)."( ".$PHP_SELF." )\n"; |
| 024 | return $error; |
| 025 | } |
| 026 | |
| 027 | function getTable($dbname,$query) |
| 028 | { |
| 029 | global $debug; |
| 030 | if (is_numeric(strpos($query, " "))) |
| 031 | { |
| 032 | $query = $query; |
| 033 | } |
| 034 | else |
| 035 | { |
| 036 | $query = "SELECT $query.* FROM $query"; |
| 037 | } |
| 038 | |
| 039 | if($debug[MySQL] == true) |
| 040 | { |
| 041 | echo $query."\n"; |
| 042 | } |
| 043 | $result = mysql_db_query($dbname,$query,$this->connect()) OR DIE($this->mysql_err()); |
| 044 | |
| 045 | if($result) |
| 046 | { |
| 047 | $i=0; |
| 048 | while($tmp = mysql_fetch_array($result,MYSQL_ASSOC)) |
| 049 | { |
| 050 | foreach($tmp as $key=>$element) |
| 051 | { |
| 052 | $array[$i][$key]=stripslashes($element); |
| 053 | } |
| 054 | $i++; |
| 055 | } |
| 056 | } |
| 057 | |
| 058 | mysql_free_result($result); |
| 059 | |
| 060 | return $array; |
| 061 | } |
| 062 | |
| 063 | function saveTableRow($dbname,$query,$array) |
| 064 | { |
| 065 | global $debug; |
| 066 | foreach($array as $key=>$element) |
| 067 | { |
| 068 | $element = addslashes($element); |
| 069 | $keys[] = $key; |
| 070 | $values[] = "'".$element."'"; |
| 071 | $update[] = $key."='".$element."'"; |
| 072 | } |
| 073 | |
| 074 | if($array[ID] == "") |
| 075 | { |
| 076 | $query = "INSERT INTO $query (".implode(", ",$keys).") VALUES (".implode(", ",$values).")"; |
| 077 | } |
| 078 | else |
| 079 | { |
| 080 | $query = "UPDATE $query SET ".implode(", ",$update)." WHERE ID = '".$array[ID]."'"; |
| 081 | } |
| 082 | |
| 083 | if($debug[MySQL] == true) |
| 084 | { |
| 085 | echo $query."\n"; |
| 086 | } |
| 087 | $result = mysql_db_query($dbname,$query,$this->connect()) OR DIE($this->mysql_err()); |
| 088 | $id = mysql_insert_id(); |
| 089 | |
| 090 | if($id=="") |
| 091 | { |
| 092 | $id = $array[ID]; |
| 093 | } |
| 094 | if($id=="") |
| 095 | { |
| 096 | $id=false; |
| 097 | } |
| 098 | return $id; |
| 099 | } |
| 100 | |
| 101 | function deleteTableRow($dbname,$query,$id="") |
| 102 | { |
| 103 | global $debug; |
| 104 | if (is_numeric(strpos($query, " "))) |
| 105 | { |
| 106 | $query = $query; |
| 107 | } |
| 108 | elseif(is_numeric($id)) |
| 109 | { |
| 110 | $query = "DELETE FROM $query WHERE ID = '$id'"; |
| 111 | } |
| 112 | else |
| 113 | { |
| 114 | $query = "DELETE FROM $query"; |
| 115 | } |
| 116 | if($debug[MySQL] == true) |
| 117 | { |
| 118 | echo $query."\n"; |
| 119 | } |
| 120 | $result = mysql_db_query($dbname,$query,$this->connect()) OR DIE ($this->mysql_err()); |
| 121 | |
| 122 | return $result; |
| 123 | } |
| 124 | |
| 125 | function executeQ($dbname,$query) |
| 126 | { |
| 127 | global $debug; |
| 128 | if($debug[MySQL] == true) |
| 129 | { |
| 130 | echo $query."\n"; |
| 131 | } |
| 132 | $result = mysql_db_query($dbname,$query,$this->connect()) OR DIE ($this->mysql_err()); |
| 133 | |
| 134 | return $result; |
| 135 | } |
| 136 | |
| 137 | function close() |
| 138 | { |
| 139 | if($this->connection) |
| 140 | mysql_close($this->connection); |
| 141 | } |
| 142 | } |
| 143 | |
| 144 | ?> |
Leider funktioniert noch kein LEFT JOIN. jedoch kann man mit executeQ nachhelfen ;)
Diese Klasse wurde aus meinen untiefen der HDD gekramt, sie wird nicht mehr weiterentwickelt und steht zur freien Verfügung.
XBox 360 Slim
Ich habe mir letzte Woche am Freitag eine XBox 360 Slim mit 250GB Speicher zugelegt. Zu dem Entschluss kam ich da ich es langsam Leid bin dass auf dem PC andauernd Fehler entstehen wenn man mal ein Spiel spielen will. So sind Treiber fehlerhaft (siehe RAGE und blaue Texturen), die Hardware reicht nicht aus (siehe Metro 2033) oder die Hardware an sich verursacht Fehler (siehe ASUS G73Jh und Überhitzung). Bei der Konsole lege ich den Datenträger ein und spiele drauf los.
Meine Wahl fiel dabei auf die XBox da ist den Controller mag und das Konzept von XBox Live recht okay ist. Es funktioniert gut und ist einfach zu bedienen. Auch ist die Spieleauswahl bei der XBox 360 gut, ich finde Halo einfach super und habe es schon immer auf dem PC vermisst. Vor allem im Coop macht es enorm viel Spaß. Bisher habe ich folgende Spiele:
- Halo Combat Envolved Anniversary
- Halo 2
- Halo 3
- Forza Motorsports 4
- Tekken 6
- Metal Gear Solid 2 Substance
- Metal Gear Solid 3 Subsistence
- Metal Gear Solid Peace Walker
- Need for Speed Hot Pursuit
- Rayman Raving Rabbits
- Riddick Escape from Butcher Bay
- Riddick Athena Sword
- Sonic 4
- Gears of War 3
- Dragonball Z: Ultimate Tenkaichi
- Naruto Shippuden Ultimate Ninja Storm 2
- LIMBO
Die Spielesammlung sollte vorerst reichen. Sollte einer von euch noch mir Spiele empfehlen wollen nur zu, das Kommentarformular steht euch offen ;)
PS: Das Artikelbild ist schon vor einer Weile in Cinema4D entstanden.
PPS: Ich weiß dass eine neue XBox erscheinen wird, jedoch wollte ich auch so lange nicht warten.
Bitlbee
Seit heute betreibe ich meinen eigenen Bitlbee Server. Was ist Bitlbee? Nun Bitlbee ist ein IRC Server welcher als Gateway für verschiedene Chatprotokolle dient. Darunter Oscar (ICQ), Jabber (Facebook), MSN, Yahoo und weitere. Somit ist es möglich über das IRC Protokoll auf Accounts mit den anderen Protokollen zuzugreifen. Heißt man ist auf dem IRC Server und kann mit Leuten aus, zum Beispiel, ICQ reden.
Das ist recht praktisch, ich habe einen IRC Client immer am laufen und benötige so nicht noch ein Programm welches läuft. Auch verbraucht das ganze weniger Bandbreite da IRC nur Text basierend ist. Des weiteren habe ich einen Bouncer1 online gesetzt und bin so 24/7 online. Ist zwar sinnfrei aber ist doch recht nett.
Nutzen könnt ihr ihn auch, meldet euch einfach bei mir und ich erstelle einen Account für euch. Man kann sich nicht selber am IRC Server registrieren da der Server dies vorerst nicht zulässt. Schaut es euch einfach an und entscheidet dann ob es sinnvoll für euch ist ;)
Achja, Bitlbee unterstützt natürlich auch Gruppen, Gruppenchat und Statusnachrichten. So bleiben eure Gruppen welche ihr zum Beispiel in ICQ angelegt hat in Bitlbee bestehen. Recht praktisch da ich alle Kontakte eh in Gruppen aufteile.
