Thema: [Input] k
-
16.04.2011, 22:38 #1
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 Posts[Input] k
Das k-Token zeigt ein Popup an, wenn man z. B. ein falsches Passwort beim Login eingegeben hat. Das Paket besteht größtenteils nur aus Bytes und lässt sich deshalb nicht wie die anderen darstellen, ausserdem ist \0 hier kein Delimiter.
Diese Klasse sollte euch einen kleinen Überblick verschaffen wie das Paket aufgebaut ist, ansonsten schreib ich vielleicht nochmal eine Klasse die das Paket auch lesen kann (wie wir sie auch schon im Client haben).
Code:import java.util.ArrayList; import java.util.List; import tools.PacketBuilder; /** * * @author Flav */ public class Popup { private String title, subtitle, message; private int width, height; private List<Panel> panels; private String opcode, parameter; public Popup(String title, String subtitle, String message, int width, int height) { this.title = title; this.subtitle = subtitle; this.message = message; this.width = width; this.height = height; panels = new ArrayList<Panel>(); } public void addPanel(Panel panel) { panels.add(panel); } public void setOpcode(String opcode, String parameter) { this.opcode = opcode; this.parameter = parameter; } @Override public String toString() { PacketBuilder buffer = new PacketBuilder("k"); buffer.writeByte(0x00); addString(buffer, title); if (opcode != null) { buffer.writeByte('s'); addString(buffer, opcode); addString(buffer, parameter); } addForeground(buffer, new int[] { 0x00, 0x00, 0x00 }); addBackground(buffer, new int[] { 0xBE, 0xBC, 0xFB }); buffer.writeByte(0xE3); // border right buffer.writeByte('E'); buffer.writeByte('l'); addString(buffer, " "); addFontStyle(buffer, 'p', 5); addBackground(buffer, new int[] { 0xBE, 0xBC, 0xFB }); buffer.writeByte(0xE3); // border left buffer.writeByte('W'); buffer.writeByte('l'); addString(buffer, " "); addFontStyle(buffer, 'p', 5); addBackground(buffer, new int[] { 0xBE, 0xBC, 0xFB }); buffer.writeByte(0xE3); buffer.writeByte('C'); addLayout(buffer, 'B'); buffer.writeByte('N'); addLayout(buffer, 'B'); // border top buffer.writeByte('N'); buffer.writeByte('l'); addString(buffer, " "); addFontStyle(buffer, 'p', 5); addBackground(buffer, new int[] { 0xBE, 0xBC, 0xFB }); buffer.writeByte(0xE3); if (subtitle != null) { buffer.writeByte('C'); buffer.writeByte('l'); addString(buffer, subtitle); addFontStyle(buffer, 'b', 16); addForeground(buffer, new int[] { 0x00, 0x00, 0x00 }); addBackground(buffer, new int[] { 0xE5, 0xE5, 0xFF }); buffer.writeByte(0xE3); buffer.writeByte('S'); buffer.writeByte('l'); addString(buffer, " "); addFontStyle(buffer, 'p', 5); addBackground(buffer, new int[] { 0xBE, 0xBC, 0xFB }); buffer.writeByte(0xE3); } buffer.writeByte(0xE3); if (message != null) { buffer.writeByte('C'); buffer.writeByte('c'); addString(buffer, message); addFrameSize(buffer, width, height); addForeground(buffer, new int[] { 0x00, 0x00, 0x00 }); addBackground(buffer, new int[] { 0xBE, 0xBC, 0xFB }); addBackgroundImage(buffer, "pics/cloudsblue.gif", 17); buffer.writeByte(0xE3); } boolean useBorderLayouts = panels.size() > 1; int borderLayouts = 0; for (Panel panel : panels) { buffer.writeByte('S'); if (useBorderLayouts) { borderLayouts++; addLayout(buffer, 'B'); buffer.writeByte('N'); } addLayout(buffer, 'F'); for (Component component : panel.getComponents()) { ComponentType type = component.getType(); buffer.writeByte(type.getValue()); addString(buffer, component.getText()); if (type == ComponentType.BUTTON) { Button button = (Button) component; if (button.isStyled()) { buffer.writeByte('c'); if (button.isColored()) { buffer.writeByte('e'); } } if (button.isClose()) { buffer.writeByte('d'); } addFontStyle(buffer, 'p', 16); if (button.isAction()) { buffer.writeByte('s'); } if (button.getCommand() != null) { buffer.writeByte('u'); addString(buffer, button.getCommand()); } } else if (type == ComponentType.TEXT_FIELD) { addSize(buffer, ((TextField) component).getWidth()); } else if (type == ComponentType.LABEL) { addFontStyle(buffer, 'p', 16); } else if (type == ComponentType.TEXT_AREA) { TextArea textarea = (TextArea) component; addSize(buffer, textarea.getRows()); addSize(buffer, textarea.getColumns()); switch (textarea.getScrollbars()) { case 0: buffer.writeByte('b'); break; case 1: buffer.writeByte('s'); break; case 2: buffer.writeByte('w'); break; } if (textarea.isEditable()) { buffer.writeByte('e'); } } addForeground(buffer, component.getForeground()); addBackground(buffer, component.getBackground()); buffer.writeByte(0xE3); } buffer.writeByte(0xE3); } for (int i = 0; i < borderLayouts; i++) { buffer.writeByte(0xE3); } buffer.writeByte(0xE3); buffer.writeByte(0xE3); return buffer.toString(); } private static void addSize(PacketBuilder buffer, int size) { buffer.writeByte('A' + size); } private static void addString(PacketBuilder buffer, String str) { buffer.writeString(str); buffer.writeByte(0xF5); } private static void addFontStyle(PacketBuilder buffer, char weight, int size) { if (weight != 'p') { buffer.writeByte(weight); } buffer.writeByte('g'); addSize(buffer, size); } private static void addLayout(PacketBuilder buffer, char layout) { buffer.writeByte('p'); buffer.writeByte(layout); } private static void addFrameSize(PacketBuilder buffer, int width, int height) { buffer.writeByte('s'); buffer.writeShort(width); buffer.writeShort(height); } private static void addForeground(PacketBuilder buffer, int[] color) { buffer.writeByte('f'); buffer.write(color); } private static void addBackground(PacketBuilder buffer, int[] color) { buffer.writeByte('h'); buffer.write(color); } private static void addBackgroundImage(PacketBuilder buffer, String image, int position) { buffer.writeByte('i'); addString(buffer, image); buffer.writeShort(position); } }
Ähnliche Themen
-
[INPUT] , - Ping
Von v3n3 im Forum ProtokollAntworten: 6Letzter Beitrag: 02.12.2011, 09:37 -
[INPUT] + - Cookie-set (???)
Von v3n3 im Forum ProtokollAntworten: 4Letzter Beitrag: 01.12.2011, 01:16 -
[Input] p - Wahlfenster
Von Diebspiel im Forum ProtokollAntworten: 0Letzter Beitrag: 10.08.2011, 22:25 -
[Input] *
Von Diebspiel im Forum ProtokollAntworten: 18Letzter Beitrag: 06.06.2011, 19:45 -
[Input] 6 - Kick
Von Mardcore im Forum ProtokollAntworten: 2Letzter Beitrag: 26.02.2011, 11:31
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.