Du bist nicht angemeldet.

1

Sonntag, 24. Juli 2011, 12:56

t-Paket mit Grafik

Hallo,


Schon seit längerem werden in Knuddels bei den Kiss-, Knuddel-, Knuddelz- und weiteren Meldungen mit einer Grafik angezeigt.
Das sieht dann ungefähr so aus:
index.php?page=Attachment&attachmentID=2

Mit dem KLogger empfangen wir dann das erweiterte t-Paket:

Quellcode

1
t.>.Knuddels..>_hKolloid|/serverpp "|/w "<. kriegt von .>_hFif|/serverpp "|/w "<. einen leichten Bussi..icons/actKiss_mm.png. .1.0


Das Paket wurde hinten so erweitert:

Quellcode

1
.icons/actKiss_mm.png. .1.0


Dort wird das verwendete Icon und noch weitere Parameter, von welchen mir der Nutzungszweck noch unbekannt ist, angegeben.
In diesem Fall wird das Icon actKiss_mm.png (index.php?page=Attachment&attachmentID=3) verwendet.

Wenn wir, wie in einigen anderen Themen bereits gezeigt, nur °>PIC<° als Sender angeben sieht das dann so aus:
index.php?page=Attachment&attachmentID=4

Die Grafik ist nicht richtig positioniert.
Es ist viel einfacher das t-Paket zu erweitern.

Hier ein Beispiel wie man das in den PacketCreator einbauen kann: (neue Methode)

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    public static String picAction(String sender, String channel, String message, String pic) {
        if (!pic.startsWith("icons/")) {
            pic = String.format("icons/%s", pic);
        }
        PacketBuilder buffer = new PacketBuilder(SendOpcode.ACTION.getValue());

        buffer.writeByte(0x00);
        buffer.writeString(sender);
        buffer.writeByte(0x00);
        buffer.writeString(channel);
        buffer.writeByte(0x00);
        buffer.writeString(message);
        buffer.writeByte(0x00);
        buffer.writeString(pic);
        buffer.writeByte(0x00);
        buffer.writeString(" ");
        buffer.writeByte(0x00);
        buffer.writeString("1");
        buffer.writeByte(0x00);
        buffer.writeString("0");

        return buffer.toString();
    }


Die Icons müssen im Ordner "icons" im Ordner "pics" liegen.

MfG

2

Sonntag, 24. Juli 2011, 13:12

Gibt übrigens noch mehr, für Features von Smileys zum Beispiel.

Außerdem ist das je nach Geschlecht anders (männlich >> männlich, weiblich >> männlich usw. usw. usw.). Kann man ja aber mit dem Emulator ganz leicht abfragen "getGender" oder ähnlich. ;)

Alle die Grafiken könnt ihr hier finden:
http://lnckai.lima-city.de/

Unter: "Funktionen" im Menü.
Kein Support per PN. Nur im Forum!

3

Sonntag, 24. Juli 2011, 16:11

Ich bevorzuge diese Grafiksammlung:
http://flerx1990.bplaced.net/sm/index.php

4

Mittwoch, 24. August 2011, 07:27

Huhu.
Also ich steh gerade Irgendwie auf dem Schlauch.

Kannst du mir vielleicht erklären wie man so nun eine Nachricht zb. bei /kiss ausgibt?

MfG
Chris

Localhost

Ehemaliger Supporter

Beiträge: 345

Wohnort: 127.0.0.1

  • Private Nachricht senden

5

Donnerstag, 25. August 2011, 18:57

Guten Abend,

ein Beispiel wäre:

Java-Quelltext

1
2
3
4
String msg = PacketCreator.picAction(client.getName(), channel.getMessage(), "Hello World!", "actKiss_mm.png");
        for (Client c : channel.getClients()) {
c.send(msg);
}


Hiermit würde eine Nachricht vom aktuellen Nick in den aktuellen Channel mit der Nachricht "Hello World!" und dem Bild "actKiss_mm.png" gesendet werden. Ich würde mir in der Channel.java allerdings noch 'ne broadcastPicAction-Methode (Heißt es Methode oder Funktion? :huh: ) anlegen.
MfG,
Localhost
No support via message.

"Der gute Programmierer ist nicht der, der keine Fehler macht, sondern der, der seine Fehler rasch findet und behebt."

6

Donnerstag, 25. August 2011, 19:00

In Java sagt man Methoden normalerweise.
Kein Support per PN. Nur im Forum!

7

Donnerstag, 9. Februar 2012, 16:52

Habe es so gemacht Allerdings wird Keinerlei Bild angezeigt Komisch

so sieht es nun bei mir aus

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 } else if (cmd.equals("kiss")) {
            String nickname = KCodeParser.escape(arg);

            if (nickname.isEmpty()) {
                return;
            }

            if (nickname.equalsIgnoreCase(client.getName())) {
                client.sendButlerMessage(channel.getName(), "Du kannst Dich doch nicht selbst küssen!");
                return;
            }

            Client target = Server.get().getClient(arg);

            if (target == null) {
                client.sendButlerMessage(channel.getName(), String.format("%s ist mir unbekannt.", nickname));
            } else if (!channel.getClients().contains(target)) {
                client.sendButlerMessage(channel.getName(), String.format("°>_h%s|/serverpp "|/w "<° hält sich im Moment _in einem anderen Channel_ auf.", target.getName()));
            } else {
                target.increaseKisses();
                channel.broadcastpicAction("actKiss_mm.png", String.format("°>_h%s|/serverpp "|/w "<° kann einfach nicht anders und gibt °>_h%s|/serverpp "|/w "<° einen langen Kuss.", client.getName(), target.getName()));
            }


wo Liegt hier der Fehler ? :(

Localhost

Ehemaliger Supporter

Beiträge: 345

Wohnort: 127.0.0.1

  • Private Nachricht senden

8

Donnerstag, 9. Februar 2012, 17:58

Habe es so gemacht Allerdings wird Keinerlei Bild angezeigt Komisch

so sieht es nun bei mir aus

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 } else if (cmd.equals("kiss")) {
            String nickname = KCodeParser.escape(arg);

            if (nickname.isEmpty()) {
                return;
            }

            if (nickname.equalsIgnoreCase(client.getName())) {
                client.sendButlerMessage(channel.getName(), "Du kannst Dich doch nicht selbst küssen!");
                return;
            }

            Client target = Server.get().getClient(arg);

            if (target == null) {
                client.sendButlerMessage(channel.getName(), String.format("%s ist mir unbekannt.", nickname));
            } else if (!channel.getClients().contains(target)) {
                client.sendButlerMessage(channel.getName(), String.format("°>_h%s|/serverpp "|/w "<° hält sich im Moment _in einem anderen Channel_ auf.", target.getName()));
            } else {
                target.increaseKisses();
                channel.broadcastpicAction("actKiss_mm.png", String.format("°>_h%s|/serverpp "|/w "<° kann einfach nicht anders und gibt °>_h%s|/serverpp "|/w "<° einen langen Kuss.", client.getName(), target.getName()));
            }


wo Liegt hier der Fehler ? :(



Hast du deine Bilder im pics/icons/ Ordner? Wenn ja, dann scheint deine 'broadcastpicAction' Methode falsch zu sein.
No support via message.

"Der gute Programmierer ist nicht der, der keine Fehler macht, sondern der, der seine Fehler rasch findet und behebt."

9

Donnerstag, 9. Februar 2012, 18:02

Habe es so gemacht Allerdings wird Keinerlei Bild angezeigt Komisch

so sieht es nun bei mir aus

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 } else if (cmd.equals("kiss")) {
            String nickname = KCodeParser.escape(arg);

            if (nickname.isEmpty()) {
                return;
            }

            if (nickname.equalsIgnoreCase(client.getName())) {
                client.sendButlerMessage(channel.getName(), "Du kannst Dich doch nicht selbst küssen!");
                return;
            }

            Client target = Server.get().getClient(arg);

            if (target == null) {
                client.sendButlerMessage(channel.getName(), String.format("%s ist mir unbekannt.", nickname));
            } else if (!channel.getClients().contains(target)) {
                client.sendButlerMessage(channel.getName(), String.format("°>_h%s|/serverpp "|/w "<° hält sich im Moment _in einem anderen Channel_ auf.", target.getName()));
            } else {
                target.increaseKisses();
                channel.broadcastpicAction("actKiss_mm.png", String.format("°>_h%s|/serverpp "|/w "<° kann einfach nicht anders und gibt °>_h%s|/serverpp "|/w "<° einen langen Kuss.", client.getName(), target.getName()));
            }


wo Liegt hier der Fehler ? :(



Hast du deine Bilder im pics/icons/ Ordner? Wenn ja, dann scheint deine 'broadcastpicAction' Methode falsch zu sein.



Danke für die schnelle Antwort

So habe ich die Methode:

Java-Quelltext

1
2
3
4
5
6
7
     public void broadcastpicAction(String sender, String message) {
        String msg = PacketCreator.action(sender, name, message);

        for (Client c : getClients()) {
            c.send(msg);
        }
    }

Localhost

Ehemaliger Supporter

Beiträge: 345

Wohnort: 127.0.0.1

  • Private Nachricht senden

10

Donnerstag, 9. Februar 2012, 18:46

Ersetzen in:

Java-Quelltext

1
2
3
4
5
6
7
public void broadcastPicAction(String sender, String channel, String message, String pic) {
        String msg = PacketCreator.picAction(sender, channel, message, pic);

        for (Client c : getClients()) {
            c.send(msg);
        }
    }


Und

Java-Quelltext

1
channel.broadcastpicAction("actKiss_mm.png", String.format("°>_h%s|/serverpp "|/w "<° kann einfach nicht anders und gibt °>_h%s|/serverpp "|/w "<° einen langen Kuss.", client.getName(), target.getName()));

ersetzen in:

Java-Quelltext

1
channel.broadcastPicAction(client.getName(), channel.getName(), String.format("°>_h%s|/serverpp "|/w "<° kann einfach nicht anders und gibt °>_h%s|/serverpp "|/w "<° einen langen Kuss.", client.getName(), target.getName()),  "actKiss_mm.png");


MfG
No support via message.

"Der gute Programmierer ist nicht der, der keine Fehler macht, sondern der, der seine Fehler rasch findet und behebt."

Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Steelix2011