Skip to content
This repository was archived by the owner on Jul 18, 2019. It is now read-only.

Commit 2e021a4

Browse files
authored
Merge pull request #10 from gyorokpeter/gh11
GH-11 add support for skin selection
2 parents 00bbf1f + 9c99c05 commit 2e021a4

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

player.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
from buffer import Buffer
55

66
class Player(object):
7-
def __init__(self, client, name, team, match):
7+
def __init__(self, client, name, team, match, skin):
88
self.client = client
99
self.server = client.server
1010
self.match = match
11+
self.skin = skin
1112

1213
self.name = ' '.join(emoji.emojize(re.sub(r"[^\x00-\x7F]+", "", emoji.demojize(name)).strip())[:20].split()).upper()
1314
self.team = team
@@ -42,7 +43,7 @@ def getSimpleData(self):
4243
return {"id": self.id, "name": self.name, "team": self.team}
4344

4445
def serializePlayerObject(self):
45-
return Buffer().writeInt16(self.id).writeInt8(self.level).writeInt8(self.zone).writeShor2(self.posX, self.posY).toBytes()
46+
return Buffer().writeInt16(self.id).writeInt8(self.level).writeInt8(self.zone).writeShor2(self.posX, self.posY).writeInt16(self.skin).toBytes()
4647

4748
def loadWorld(self, worldName):
4849
self.dead = True
@@ -83,7 +84,7 @@ def onLoadComplete(self):
8384
self.pendingWorld = None
8485
self.lastXOk = True
8586

86-
self.sendBin(0x02, Buffer().writeInt16(self.id)) # ASSIGN_PID
87+
self.sendBin(0x02, Buffer().writeInt16(self.id).writeInt16(self.skin)) # ASSIGN_PID
8788

8889
self.match.onPlayerReady(self)
8990

@@ -100,7 +101,7 @@ def handlePkt(self, code, b, pktData):
100101

101102
self.client.stopDCTimer()
102103

103-
self.match.broadBin(0x10, Buffer().writeInt16(self.id).write(pktData))
104+
self.match.broadBin(0x10, Buffer().writeInt16(self.id).write(pktData).writeInt16(self.skin))
104105

105106
elif code == 0x11: # KILL_PLAYER_OBJECT
106107
if self.dead:

server.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,15 +100,17 @@ def onMessage(self, payload, isBinary):
100100
return
101101

102102
def sendJSON(self, j):
103+
#print("sendJSON: "+str(j))
103104
self.sendMessage(json.dumps(j).encode('utf-8'), False)
104105

105106
def sendBin(self, code, buff):
106107
msg=Buffer().writeInt8(code).write(buff.toBytes() if isinstance(buff, Buffer) else buff).toBytes()
108+
#print("sendBin: "+str(code)+" "+str(msg))
107109
self.sendMessage(msg, True)
108110

109111
def loginSuccess(self):
110112
self.sendJSON({"packets": [
111-
{"name": self.player.name, "team": self.player.team, "sid": "i-dont-know-for-what-this-is-used", "type": "l01"}
113+
{"name": self.player.name, "team": self.player.team, "sid": "i-dont-know-for-what-this-is-used", "type": "l01", "skin": self.player.skin}
112114
], "type": "s01"})
113115

114116
def setState(self, state):
@@ -157,11 +159,12 @@ def onTextMessage(self, payload):
157159
team = packet["team"][:3].strip().upper()
158160
if len(team) == 0:
159161
team = self.server.defaultTeam
160-
162+
skin = packet["skin"] if "skin" in packet else 0
161163
self.player = Player(self,
162164
packet["name"],
163165
team,
164-
self.server.getMatch(team, packet["private"] if "private" in packet else False))
166+
self.server.getMatch(team, packet["private"] if "private" in packet else False),
167+
skin)
165168
self.loginSuccess()
166169
self.server.players.append(self.player)
167170

0 commit comments

Comments
 (0)