tanji funktioniert heute immernoch perfekt, jedenfalls bei mir.
¯\_(ツ)_/¯aber naja viel glück. oder so.
Habs gestern getestet hat bei keinem Retro mehr funktioniert, auch nich in den offiziellen Hotels.
tanji funktioniert heute immernoch perfekt, jedenfalls bei mir.
¯\_(ツ)_/¯aber naja viel glück. oder so.
Habs gestern getestet hat bei keinem Retro mehr funktioniert, auch nich in den offiziellen Hotels.
Hallo,
Ich schreibe aktuell an einem Packetlogger, da die letzen nicht mehr funktionieren.
Tanji ist ja leider patched, und an dem Programm wird nicht mehr weitergearbeitet.
Also habe ich mich entschlossen was kleines zu schreiben, die Vorstellung wird auch nicht gross.
Das ganze wurde in Java-FX geschrieben und mit CSS designt, gut eher Basic.
Hauptsache er funktioniert so wie er soll, weitere Updates werden dann gepostet wenn ich soweit bin.
CSS-Part:
.bg-hbox {
-fx-background-color: #3A73BF;
}
.choicebox {
-fx-pref-width: 300;
-fx-pref-height: 30;
}
.logoText {
-fx-font-family: Roboto;
-fx-font-weight: 400;
-fx-font-size: 25;
-fx-font-style: none;
}
.btn {
-fx-pref-width: 300;
-fx-pref-height: 50;
-fx-background-color: #3A73BF;
-fx-font-family: Open-Sans;
-fx-font-weight: 300;
-fx-font-size: 18;
-fx-font-style: none;
-fx-text-fill: #FFF;
}
.btn:hover, :focus, :active {
-fx-background-color: #366CB2;
}
Alles anzeigen
Ich komme direkt zu dem Fortschritt:
Aktuell arbeite an der MainForm Gui (und danach an dem Sockets/Logging Part)
Für die Sockets kommen Java-Nio zum Einsatz.
Nein ist es nicht.
Irgendeine Firewall aktiv wenn ja Ports freigeschaltet?
Benutzt du Lan oder W-LAN?
Das sieht mir schwer danach aus, als ob die Figuredata nicht geladen wird.
Schonmal via Entwicklertools geschaut ob irgendwas fehlt?
Stimmen die external_variables? der Path muss korrekt angegeben werden.
Aktiv seit 2011 oder 2009 eins von beiden, was genau nicht mehr ganz
Aufjedenfall habe ich mich 2012 in Retrotown registiert.
Ich bin damals durch Leute wie Pinkfruit, Meksider in die Scene gekommen.
Alles anzeigenNein ich komme nicht zurück, ist eben kein ComeBack von mir.
Ich bin der MekSider, ein ehemaliger v26-r60 Hotel Betreiber, Scripter etc.
Mit den Versionen jetzt kenne ich mich nicht super gut aus, ob es auch wirklich r60 war
weiß ich nicht genau, halt wo Habbo das mit der Navigations Balken neu eingeführt hatte
(linke Spalte) bis dorthin aktiv gewesen dann nicht mehr.Viele alte Hasen von euch müssten mich noch kennen und auch einige andere
Personen wie SteelKarlKani, Paedejack usw.
(MekSider, CMS, PHPRetro --> Google) dann findet ihr so einiges über michEs ist erstaunlich wie lange die Retro Szene noch lebt... wirklich lange, zwar mega
riesige Veränderungen und bestimmt gibt es auch unter euch kleine Kids aber die
bereits viel mehr Ahnung haben als ich, was Scripten angeht Macht weiter so.
Haltet die Retro Szene stabil (not unstable) und habt auch spaß alle miteinander.
Ihr führt meine Generation von damals schön weiter. Ihr entwickelt euch, so wie Digimons ;DIch bin zu alt für diesen Kram geworden, damals noch mit 13 angefangen... heute 22
ai ai ai.Na denn, weiterhin schönen Tag/Abend noch und viel spaß beim scripten,leiten und wobei auch immer.
Euer MekSider
http://forum.ragezone.com/f353/mekemulat…-stable-655504/ war schon cool früher.
Hat das Hotel eröffnet? wollte es mir mal anschauen aber leider Seiten-Ladefehler.
Also die Seite ist nicht mehr erreichbar
Alles anzeigenWill gar nicht bei deiner Performance lästern, weil es jeden mal passiert.
Aber leider habe ich viele dinge zu kritisieren, was deine Informationsquellen angeht bzw. deiner Vorbereitung.
Du machst dir nicht mal die Mühe irgendwie ein Spickzettel zu machen ansonsten würdest du nicht die ganze Zeit "ähm" sagen.Du redest über Packets und sagst nicht mal konkret was diese Packets eigentlich sind, was sie bewirken und wie viele es davon gibt.
Könntest spezifisch mal die Headers erwähnen (Composers etc.), denn damit kommuniziert der Emulator.
Redest über diverse Verschlüsslungen, weil du irgendwann es von irgendwem gehört hast und deswegen es googeln musstest, ansonsten würde es nicht in deiner Suchleiste auftauchen.
Bei diesen Ladescreen wo du mit diesen % Zahlen angefangen hast, musste ich am meisten lachen.
Da öffnet der eiskalt ein Editor und schreibt einfach eine Sache rein, die gar nicht stimmt.Wenn du Dinge nicht erklären kannst, dann lass es komplett sein.
Geh das bitte struktuiert durch, fang am besten mit der SWF an und erkläre den Leuten mal was in so einer SWF eigentlich vorhanden ist, und wozu man jetzt einen Emulator braucht.
Stimmt ich bin nicht perfekt, gebe ich zu nächstesmal versuche ich es strukturierter anzugehen.
Habe reingehört bis jetzt ist es gut, aber ich muss die Lautstärke ganz hochstellen um Dich zu hören.
Hab das Mikro extra auf 30% Prozent gereglet damit es nicht so laut ist.
Aber für nächste mal ist es lauter
Hab übbelst gefailt und gestottert tut mir leid, für Anfänger schwer zu erklären.
Wenn ihr irgendwelche Fragen habt Skype: steekarlkani bin fast immer da.
Hey,
Ich wollte euch mal Fragen, ob die Interesse besteht an Emulator-Tutorials.
Das heisst in den Videos werde ich auf alle Grundlagen eingehen, wie funktioniert die SWF, Packets, etc....
Würde mich über eine Antwort freuen
Liebe Grüsse.
Die beste Aktion von Danny ich feiere das so
Oh FileX ich werde dich vermissen, wir haben immer getröddlet in Skype
Ich hoffe du vergisst das nie, auch wenn du das oben an einem besseren Ort bist.
Wünsche seiner Familie viel Kraft und alles gute fürs weitere Leben.
Liebe Grüsse Stefan.
Habbo Emulator Base für die aktuellste Revision in Java von Steekarlkani
TCP-Server:
package com.steekarlkani.dakine.networking;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.steekarlkani.dakine.communication.encryption.HabboEncryption;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.bytes.ByteArrayEncoder;
public class DakineServer implements Runnable {
private Logger dakineLogger = Logger.getLogger(DakineServer.class.getName());
@Override
public void run() {
// TODO Auto-generated method stub
// netty scheduling here
HabboEncryption.initialize();
EventLoopGroup canBoss = new NioEventLoopGroup();
EventLoopGroup steeBoss = new NioEventLoopGroup();
try {
ServerBootstrap dakineSocket = new ServerBootstrap();
dakineSocket.group(canBoss, steeBoss)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() {
protected void initChannel(SocketChannel channel) throws Exception {
// TODO Auto-generated method stub
channel.pipeline().addLast(new DakineServerHandler());
}
})
.option(ChannelOption.SO_BACKLOG, 128)
.childOption(ChannelOption.SO_KEEPALIVE, true);
ChannelFuture bossFuture = dakineSocket.bind(1232).sync();
bossFuture.channel().closeFuture().sync();
}catch(Exception ex){
dakineLogger.log(Level.INFO, "[ÏNFO] > Eine Exception wurde ausgelösst " + ex.getMessage() + "");
}
}
}
Alles anzeigen
TCPServerHandler:
package com.steekarlkani.dakine.networking;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.steekarlkani.dakine.communication.ClientRequest;
import com.steekarlkani.dakine.communication.encryption.rc4.ARC4;
import com.steekarlkani.dakine.communication.messages.ClientMessage;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandler;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.ReferenceCountUtil;
public class DakineServerHandler extends ChannelInboundHandlerAdapter {
private Logger dakineLogger = Logger.getLogger(DakineServerHandler.class.getName());
private ClientRequest packetRequest;
private ClientMessage packetMessage;
private ChannelHandlerContext dakineChannel;
private ARC4 rc4Decipher;
public void channelActive(ChannelHandlerContext ctx){
if(ctx != null){
this.dakineChannel = ctx;
this.dakineLogger.log(Level.INFO, "[DAKINE-EMULATION] > [INFO] Neue Verbindung von " + this.dakineChannel.channel().remoteAddress() + "");
}else{
this.dakineLogger.log(Level.INFO, "[DAKINE-EMULATION] > [INFO] Verbindung geschlossen von " + this.dakineChannel.channel().remoteAddress() + "");
}
}
public void channelRead(ChannelHandlerContext ctx, Object msg){
ByteBuf decoder = (ByteBuf) msg;
try {
if(decoder.readableBytes() < 6) return;
if(decoder.getByte(0) == 60){
decoder.discardReadBytes();
String crossdomain = "<?xml version=\"1.0\"?>\r\n"
+ "<!DOCTYPE cross-domain-policy SYSTEM \"/xml/dtds/cross-domain-policy.dtd\">\r\n"
+ "<cross-domain-policy>\r\n"
+ "<allow-access-from domain=\"*\" to-ports=\"*\" />\r\n"
+ "</cross-domain-policy>\0";
ctx.channel().writeAndFlush(Unpooled.wrappedBuffer(crossdomain.getBytes()));
}else{
if(rc4Decipher != null){
decoder = rc4Decipher.decipher(decoder); // decrypt rc4 Data
handlePackets(decoder, ctx);
}else{
handlePackets(decoder, ctx);
}
}
}catch(Exception ex){
ex.printStackTrace();
dakineLogger.log(Level.INFO, "[ÏNFO] > Eine Exception wurde ausgelösst " + ex.getMessage() + "");
}
}
private void handlePackets(ByteBuf decoder, ChannelHandlerContext ctx) {
// TODO Auto-generated method stub
while(decoder.readableBytes() != 0){
int packetLength = decoder.readInt();
ByteBuf newBuffer = decoder.readBytes(packetLength);
short packetHeader = newBuffer.readShort();
packetMessage = new ClientMessage(newBuffer);
packetRequest = new ClientRequest();
if(packetRequest.packetRegistered(packetHeader)){
String packetName = packetRequest.getPacket(packetHeader).getClass().getSimpleName();
dakineLogger.log(Level.INFO, "[DAKINE-EMULATION] > [HANDLED] > Packet ["+packetName+"]");
packetRequest.getPacket(packetHeader).parse(this, packetHeader);
}else{
dakineLogger.log(Level.INFO, "[DAKINE-EMULATION] > [UNHANDLED] Packet ["+packetHeader+"]");
}
}
}
public void setRC4(byte[] publicKey){
rc4Decipher = new ARC4();
rc4Decipher.init(publicKey);
}
public ClientMessage getMessage(){
return packetMessage;
}
public Channel getChannel(){
return dakineChannel.channel();
}
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause){
cause.printStackTrace();
ctx.close();
}
}
Alles anzeigen
ServerMessage:
package com.steekarlkani.dakine.communication.messages;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
public class ServerMessage {
private int serverPacket;
private ByteBuf buffer;
public ServerMessage(int packet){
serverPacket = packet;
buffer = Unpooled.buffer(100);
buffer.writeInt(0);
buffer.writeShort(serverPacket);
}
public void writeBoolean(boolean b){
buffer.writeByte(b ? 1 : 0);
}
public void writeInt(int i){
buffer.writeInt(i);
}
public void writeString(String s){
if(s == null){
s = "";
}
byte[] dat = s.getBytes();
buffer.writeShort(dat.length);
buffer.writeBytes(dat);
}
public ByteBuf getBuffer(){
buffer.setInt(0, buffer.writerIndex() - 4);
return buffer;
}
}
Alles anzeigen
ClientRequest:
package com.steekarlkani.dakine.communication;
import java.util.HashMap;
import com.steekarlkani.dakine.communication.packets.incoming.hanshake.GenerateSecretKeyMessageEvent;
import com.steekarlkani.dakine.communication.packets.incoming.hanshake.InfoMessageEvent;
import com.steekarlkani.dakine.communication.packets.incoming.hanshake.InitCryptoMessageEvent;
import com.steekarlkani.dakine.communication.packets.incoming.hanshake.SSOLoginMessageEvent;
import com.steekarlkani.dakine.communication.packets.incoming.hanshake.UniqueIDMessageEvent;
import com.steekarlkani.dakine.communication.packets.incoming.hanshake.VersionCheckMessageEvent;
public class ClientRequest {
private HashMap<Short, ClientEvent> clientRequest;
public ClientRequest(){
this.clientRequest = new HashMap<Short, ClientEvent>();
this.registerHandshake();
}
private void registerHandshake(){
// handshake
this.clientRequest.put((short)4000, new VersionCheckMessageEvent());
this.clientRequest.put((short)316, new InitCryptoMessageEvent());
this.clientRequest.put((short)3847, new GenerateSecretKeyMessageEvent());
this.clientRequest.put((short)1600, new InfoMessageEvent());
this.clientRequest.put((short)1471, new UniqueIDMessageEvent());
this.clientRequest.put((short)1778, new SSOLoginMessageEvent());
}
public boolean packetRegistered(short packetHeader){
return this.clientRequest.containsKey(packetHeader);
}
public ClientEvent getPacket(short packetHeader){
return this.clientRequest.get(packetHeader);
}
}
Alles anzeigen
ClientEvent(incoming packets):
https://retrotown.ws/index.php/User/17729-steekarIkani/
Wollte euch nur warnen.
Diese Person gibt aus mich zu sein, Ich übernehme keine Haftung die mit dieser Person gehandlet werden.
Baue gerade aktuell die Lüfftersteuerung ein, die wahr echt schweine Teuer.
Aber das Gehäuse hat 14 Lüfter installiert, und das Mainboard kann maximal 4 handlen.
Deshalb hab ich zur Aquaero 6 gegriffen, übrigens auch die Pumpen können bequem per Fernbedienung oder per USB gesteuert werden.
Ich hätte noch eine Möglichkeit, einen Durchflussensor / Temeratur in die Wasserkühlung einzubinden mal schauen.
Aktuell hab ich mir noch ein paar Kabelkämme gekauft, umd die Kabel stylischer zu gestalten.
Dazue kommt noch ein "LED-Controller" der via RGB Ansteuerbar ist.
Wie gesagt das Kabelmanagement / Lüftersteureung muss noch gemacht werden.
Deswegen möchte ich die 1070 ebenfalls in den Wasserkühlung miteinbinden.
Dies folgt dann später.
Jetziger Stand (Screen):
Liebe Grüsse.
Build ist fertig Bild kommt nachher gleich
Wieso "verlost" er einen so teuren PC? Zwar cool aber etwas Unglaubwürdig
Es ist nicht unglaubwürdig, sondern es war ein Wasserkühlungs-Übungsobjekt.
Das heisst ich wollte testen, wie ich was installieren muss und für mein nächstes Projekt.
Deswegen verlosse ich es jetzt, wenns dir nicht passt dann geh bitte.