Еще один пример:
Код:
00A3=CM_MOVE:c(static)h(id2)n(x)n(y)n(z)c(heading)c(movementType:switch.0.6)_(id:case.224.3)n(x2)n(y2)n(z2)_(id:case.192.3)n(x2)n(y2)n(z2)_(id:case.196.3)n(x2)n(y2)n(z2)_(id:case.228.3)n(x2)n(y2)n(z2)_(id:case.132.1)c(glideFlag)_(id:case.164.1)c(glideFlag)
Исходный код
Код:
protected void readImpl() {
Player player = getConnection().getActivePlayer();
if (!player.isSpawned())
return;
x = readF();
y = readF();
z = readF();
heading = (byte) readC();
movementType = (byte) readC();
type = MovementType.getMovementTypeById(movementType);
switch (type) {
case MOVEMENT_START_MOUSE:
case MOVEMENT_START_KEYBOARD:
x2 = readF();
y2 = readF();
z2 = readF();
break;
case MOVEMENT_GLIDE_DOWN:
case MOVEMENT_GLIDE_START_MOUSE:
x2 = readF();
y2 = readF();
z2 = readF();
// no break
case MOVEMENT_GLIDE_UP:
case VALIDATE_GLIDE_MOUSE:
glideFlag = (byte) readC();
break;
default:
break;
}
}
Код:
public enum MovementType {
MOVEMENT_START_MOUSE(-32),
MOVEMENT_START_KEYBOARD(-64),
VALIDATE_MOUSE(-96),
VALIDATE_KEYBOARD(-128),
VALIDATE_JUMP(8),
VALIDATE_JUMP_WHILE_MOVING(72),
MOVEMENT_GLIDE_UP(-124),
MOVEMENT_GLIDE_DOWN(-60),
MOVEMENT_GLIDE_START_MOUSE(-28),
VALIDATE_GLIDE_MOUSE(-92),
MOVEMENT_STOP(0),
MOVEMENT_STAYIN_ELEVATOR(24),
MOVEMENT_JUMPIN_ELEVATOR(-48), //sometimes not jump
MOVEMENT_VALIDATEIN_ELEVATOR(-112), //unk
MOVEMENT_MOVIN_ELEVATOR(-16),
MOVEMENT_ON_ELEVATOR(16),
MOVEMENT_GO_UPDOWN_ELEVATOR(-80),
UNKNOWN(1);
}