Du bist nicht angemeldet.

1

Freitag, 26. August 2011, 00:28

showPrefixIcons

Hi,

in Knuddels gibt es manche Channels, wo Icon(s) vor dem Nick in der Nickliste angezeigt werden. Mit diesem Snippet könnt ihr dies auch im Emulator anzeigen.

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
24
25
26
27
28
29
30
31
32
33
 public static String showPrefixIcons(String channelName, List<String> params) {
 PacketBuilder buffer = new PacketBuilder(SendOpcode.MODULE.getValue());

 buffer.writeByte(0);
 buffer.writeByte(0);
 buffer.writeByte(73);
 /* die 73 ist sozusagen unser Opcode, denn bei FotoContest (updateVotebox) lautet's hier nicht 73, sondern 89 */
 buffer.writeByte(channelName.length()); // Anzahl der Buchstaben vom Channelnamen
 buffer.writeString(channelName); // Channelname
 buffer.writeByte(11);
 for (int i = 0; i < params.size(); i++) {
 String[] temp = params.get(i).split("~");
 String nick = temp[0];

 buffer.writeByte(nick.length()); // Anzahl der Buchstaben vom Nick
 buffer.writeString(nick); // Nick
 for (int j = 1; j < temp.length; j++) {
 String icon = temp[j];
 buffer.writeByte(11);
 buffer.writeByte(icon.length()); // Anzahl der Buchstaben vom Icon
 buffer.writeString(icon); // Icon
 }
 if (i < params.size() - 1) {
 buffer.writeByte(12);
 buffer.writeByte(11);
 }
 }
 buffer.writeByte(12);
 buffer.writeByte(12);
 buffer.writeByte(1);

 return buffer.toString();
 }


Dies kommt in den PacketCreator rein.

Usage:

Java-Quelltext

1
2
3
4
List<String> prefix = new ArrayList<String>();
prefix.add("Brainy~icon1.gif");
prefix.add("James~icon2.gif~icon3.gif");
client.send(PacketCreator.showPrefixIcons(channel.getName(), prefix));


Es können beliebig viele Icons angegeben werden, siehe Beispiel.

Noch Fragen? Dann stellen.

MfG

2

Freitag, 26. August 2011, 14:34

Schau dir die Methode writeString nochmal an, eigentlich sollte es da ein oder zwei Parameter geben, dann müsstest du nicht immer writeByte nutzen um die Länge voranzustellen.
Tschüß.

3

Freitag, 26. August 2011, 16:33

Danke, beim Überarbeiten ist mir dann noch aufgefallen, dass ich removePrefixIcons nicht gepostet habe. :b

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 public static String showPrefixIcons(String channelName, List<String> params) {
 PacketBuilder buffer = new PacketBuilder(SendOpcode.MODULE.getValue());

 buffer.writeByte(0);
 buffer.writeByte(0);
 buffer.writeByte(73);
 /* die 73 ist sozusagen unser Opcode, denn bei FotoContest (updateVotebox) lautet's hier nicht 73, sondern 89 */
 buffer.writeString(channelName, true, false); // Channelname
 buffer.writeByte(11);
 for (int i = 0; i < params.size(); i++) {
 String[] temp = params.get(i).split("~");
 String nick = temp[0];

 buffer.writeString(nick, true, false); // Nick
 for (int j = 1; j < temp.length; j++) {
 String icon = temp[j];
 buffer.writeByte(11);
 buffer.writeString(icon, true, false); // Icon
 }
 if (i < params.size() - 1) {
 buffer.writeByte(12);
 buffer.writeByte(11);
 }
 }
 buffer.writeByte(12);
 buffer.writeByte(12);
 buffer.writeByte(1);

 return buffer.toString();
 }

 public static String removePrefixIcons(String channelName) {
 PacketBuilder buffer = new PacketBuilder(SendOpcode.MODULE.getValue());

 buffer.writeByte(0);
 buffer.writeByte(0);
 buffer.writeByte(74); // "Opcode"
 buffer.writeString(channelName, true, false);

 return buffer.toString();
 }


MfG

4

Samstag, 27. August 2011, 15:11

Also ich habe das mal bei mir eingebaut, jedoch sieht man das Icon nur bei sich selbst. Ist das ein Fehler meinerseits? ôo
Meine Grafikseite: http://chatsmileys.senzious.de/

5

Samstag, 27. August 2011, 16:11

Ja, du musst das Paket natürlich an jeden senden.