Skip to content

Commit

Permalink
updated warp packet structure and call
Browse files Browse the repository at this point in the history
  • Loading branch information
kharidiron committed Jun 9, 2017
1 parent 05e5859 commit eb4a0da
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 42 deletions.
61 changes: 26 additions & 35 deletions data_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
except ImportError:
use_c_parser = False

from utilities import DotDict, WarpType, WarpWorldType, SystemLocationType

from utilities import DotDict, WarpType, WarpWorldType, SpawnTargetType, \
SystemLocationType


#
Expand Down Expand Up @@ -540,31 +540,27 @@ def _parse(cls, stream: BytesIO, ctx: OrderedDict):
# world_id 1
d["celestial_coordinates"] = CelestialCoordinates.parse(stream,
ctx)
d["is_teleporter"] = Byte.parse(stream, ctx)
if d["is_teleporter"] == 1:
d["teleporter"] = StarString.parse(stream, ctx)
elif world_id == WarpWorldType.PLAYER_WORLD:
# world_id 2
d["ship_id"] = UUID.parse(stream, ctx)
flag = Byte.parse(stream, ctx)
if flag == 2:
d["pos_x"] = UBInt32.parse(stream, ctx)
d["pos_y"] = UBInt32.parse(stream, ctx)
elif world_id == WarpWorldType.UNIQUE_WORLD:
# world_id 3
d["world_name"] = StarString.parse(stream, ctx)
d["is_instance"] = Byte.parse(stream, ctx)
if d["is_instance"] == 1:
d["instance_id"] = UUID.parse(stream, ctx)
d["is_something"] = Byte.parse(stream, ctx)
if d["is_something"] == 1:
d["something"] = BFloat32.parse(stream, ctx)
d["is_teleporter"] = Byte.parse(stream, ctx)
if d["is_teleporter"] == 1:
d["teleporter"] = StarString.parse(stream, ctx)
elif world_id == WarpWorldType.MISSION_WORLD:
# world_id 4
d["world_name"] = StarString.parse(stream, ctx)
d["has_threatlevel"] = Byte.parse(stream, ctx)
if d["has_threatlevel"] == 1:
d["threatlevel"] = BFloat32.parse(stream, ctx)

d["warp_target"] = Byte.parse(stream, ctx)
if d["warp_target"] == SpawnTargetType.ENTITY:
d["teleporter"] = StarString.parse(stream, ctx)
elif d["warp_target"] == SpawnTargetType.COORDINATES:
d["pos_x"] = UBInt32.parse(stream, ctx)
d["pos_y"] = UBInt32.parse(stream, ctx)
elif d["warp_target"] == SpawnTargetType.ASTEROID:
d["pos_x"] = BFloat32.parse(stream, ctx)

elif warp_type == WarpType.TO_PLAYER:
# warp_type 2
Expand All @@ -586,30 +582,25 @@ def _build(cls, obj, ctx: OrderedDotDict):

if obj["world_id"] == WarpWorldType.CELESTIAL_WORLD:
res += CelestialCoordinates.build(obj["celestial_coordinates"])
if obj["flag"] == 1:
res += Byte.build(1)
res += StarString.build(obj["teleporter"])
elif obj["world_id"] == WarpWorldType.PLAYER_WORLD:
res += UUID.build(binascii.unhexlify(obj["ship_id"]))
if obj["flag"] == 2:
res += UBInt32.build(obj["pos_x"])
res += UBInt32.build(obj["pos_y"])
res += Byte.build(0)
elif obj["world_id"] == WarpWorldType.UNIQUE_WORLD:
res += StarString.build(obj["world_name"])
res += Byte.build(obj["is_instance"])
if obj["is_instance"] == 1:
res += UUID.build(binascii.unhexlify(obj["instance_id"]))
res += Byte.build(obj["is_something"])
if obj["is_something"] == 1:
res += BFloat32.build(obj["something"])
res += Byte.build(obj["is_teleporter"])
if obj["is_teleporter"] == 1:
res += StarString.build(obj["teleporter"])
res += Byte.build(0)
elif obj["world_id"] == WarpWorldType.MISSION_WORLD:
res += StarString.build(obj["world_name"])
res += Byte.build(0)
res += Byte.build(obj["has_threatlevel"])
if obj["has_threatlevel"] == 1:
res += BFloat32.build(obj["threatlevel"])

res += Byte.build(obj["warp_target"])
if obj["warp_target"] == SpawnTargetType.ENTITY:
res += StarString.build(obj["teleporter"])
elif obj["warp_target"] == SpawnTargetType.COORDINATE:
res += UBInt32.build(obj["pos_x"])
res += UBInt32.build(obj["pos_y"])
elif obj["warp_target"] == SpawnTargetType.ASTEROID:
res += BFloat32.build(obj["pos_x"])

elif obj["warp_type"] == WarpType.TO_PLAYER:
res += UUID.build(binascii.unhexlify(obj["player_id"]))
Expand Down
16 changes: 10 additions & 6 deletions plugins/warp_plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from base_plugin import SimpleCommandPlugin
from data_parser import PlayerWarp
from pparser import build_packet
from utilities import Command, send_message
from utilities import Command, send_message, WarpType, WarpWorldType


class WarpPlugin(SimpleCommandPlugin):
Expand All @@ -37,8 +37,9 @@ def warp_player_to_player(self, from_player, to_player):
:param to_player: Player: The player being warped to.
:return: None
"""
wp = PlayerWarp.build(dict(warp_action=dict(warp_type=2,
player_id=to_player.uuid)))
wp = PlayerWarp.build(dict(warp_action=dict(
warp_type=WarpType.TO_PLAYER,
player_id=to_player.uuid)))
full = build_packet(packets.packets['player_warp'], wp)
yield from from_player.connection.client_raw_write(full)

Expand All @@ -49,9 +50,12 @@ def warp_player_to_ship(self, from_player, to_player):
:param to_player: Player: The player whose ship is being warped to.
:return: None
"""
wp = PlayerWarp.build(dict(warp_action=dict(warp_type=1, world_id=2,
ship_id=to_player.uuid,
flag=0)))
wp = PlayerWarp.build(dict(warp_action=dict(
warp_type=WarpType.TO_WORLD,
world_id=WarpWorldType.PLAYER_WORLD,
ship_id=to_player.uuid,
warp_target=0,
deploy=0)))
full = build_packet(packets.packets['player_warp'], wp)
yield from from_player.connection.client_raw_write(full)

Expand Down
7 changes: 6 additions & 1 deletion utilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,12 @@ class WarpWorldType(IntEnum):
CELESTIAL_WORLD = 1
PLAYER_WORLD = 2
UNIQUE_WORLD = 3
MISSION_WORLD = 4


class SpawnTargetType(IntEnum):
ENTITY = 1
COORDINATES = 2
ASTEROID = 3


class WarpAliasType(IntEnum):
Expand Down

0 comments on commit eb4a0da

Please sign in to comment.