Guest User

Opcodes.py

a guest
May 27th, 2015
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 82.15 KB | None | 0 0
  1. from datetime import datetime
  2. from datetime import date
  3. from datetime import timedelta
  4. # -*- coding: utf-8 -*-
  5. import re
  6. import logging
  7. import time
  8. import struct
  9. import binascii, base64, hashlib
  10. def getTime():
  11. try:
  12. return time.time()
  13. except:
  14. return "1386099259.48"
  15.  
  16. def sendDebug(username, eventTokens, location, data):
  17. Token1, Token2 = map(str, [ord(eventTokens[0]), ord(eventTokens[1])])
  18. name = "SERVER" if username == "" else username
  19. tokens = Token1 + ", " + Token2
  20. logging.warning("[{a}] {c}: Bin - ('{b}')".format(a=name, b=tokens, c=location))
  21. print "[{a}] {c}: Bin - ('{b}') - DATA:({d})".format(a=name, b=tokens, c=location, d=repr(data))
  22.  
  23. def ParseTokens(self, eventTokens, eventToken1, eventToken2, data):
  24. eventToken1, eventToken2 = str(ord(eventToken1)), str(ord(eventToken2))
  25. Tokenbase = self.server.ParseBase
  26.  
  27. if eventToken1 == Tokenbase.OldProtocole['old']:
  28. if eventToken2 == eventToken1:
  29. packet = self.parseByte.ByteArray(data)
  30. self.parseDataUTF(packet.readUTF())
  31. else:
  32. if Tokenbase.Debug:
  33. sendDebug(self.username, eventTokens, 'Old/UTFPackets', data)
  34.  
  35. elif eventToken1 == Tokenbase.Login['interface']:
  36. if eventToken2 == Tokenbase.Login['login']:
  37. packet = self.parseByte.ByteArray(data)
  38. arg1 = packet.readByte()
  39. playerName = packet.readUTF()
  40. password = packet.readUTF()
  41. arg2 = packet.readShort()
  42. url = packet.readUTF()
  43. startRoom = packet.readUTF()
  44.  
  45. if Tokenbase.AllowDomain and url.startswith(Tokenbase.URL[:]):
  46. pass
  47. elif Tokenbase.StandAlone and url.startswith('app:/TransformiceAIR.swf/'):
  48. pass
  49. else:
  50. self.server.sendModChat(self, '\x06\x14', ['Jugador <G>' + playerName + '</G>\nloge por : <J>' + url + '</J>\n fue kikado!'], False)
  51. self.sendData('\x1a\x12', [0, 'Acesse {site}'.format(site=Tokenbase.URL[:])])
  52. self.transport.loseConnection()
  53.  
  54. startRoom = startRoom.replace('<', '')
  55. if len(startRoom) > 200:
  56. startRoom = ''
  57.  
  58. self.login(playerName, password, startRoom)
  59.  
  60. elif eventToken2 == Tokenbase.Login['register']:
  61. packet = self.parseByte.ByteArray(data)
  62. playerName = packet.readUTF()
  63. password = packet.readUTF()
  64. url = packet.readUTF()
  65.  
  66. if Tokenbase.AllowDomain and url.startswith(Tokenbase.URL[:]):
  67. pass
  68. elif Tokenbase.StandAlone and url.startswith('app:/TransformiceAIR.swf/'):
  69. pass
  70. else:
  71. self.server.sendModChat(self, '\x06\x14', ['Jugador <G>' + playerName + '</G>\\creo una cuenta por : <J>' + url + '</J>\nfue kikado!'], False)
  72. self.sendData('\x1a\x12', [0, 'Acesse {site}'.format(site=Tokenbase.URL[:])])
  73. self.transport.loseConnection()
  74.  
  75. if len(playerName) < 3 or len(playerName) > 12:
  76. self.transport.loseConnection()
  77. elif not playerName.isalpha():
  78. self.transport.loseConnection()
  79. elif self.server.checkExistingUsers(playerName):
  80. self.sendData('\x1a\x0c', '\x03', True)
  81. else:
  82. self.server.createAccount(playerName, password)
  83. self.isNewbie = True
  84. startRoom = '{0}[Tutorial] {1}'.format(chr(3), playerName)
  85. self.login(playerName, password, startRoom)
  86.  
  87. elif eventToken2 == Tokenbase.Login['gameMode']:
  88. packet = self.parseByte.ByteArray(data)
  89. mode = packet.readByte()
  90. self.lastGameMode = 0
  91. self.sendGameMode(mode)
  92.  
  93. else:
  94. if Tokenbase.Debug:
  95. sendDebug(self.username, eventTokens, 'Interface/Login', data)
  96.  
  97. elif eventToken1 == Tokenbase.Player['player']:
  98. if eventToken2 == Tokenbase.Player['langue']:
  99. self.updateLanguageUsuario(data)
  100.  
  101. elif eventToken2 == Tokenbase.Player['report']:
  102. if self.ModopwetModule.makeReport(data):
  103. print '[%s][MODOPWET] FAIL' % self.username
  104.  
  105. elif eventToken2 == Tokenbase.Player['angel']:
  106. packet = self.parseByte.ByteArray()
  107. packet.writeInt(self.playerCode)
  108. packet.writeBytes(data)
  109. self.room.sendAllOthersBin(self, '\x08\x0f', packet.toString())
  110.  
  111. elif eventToken2 == Tokenbase.Player['emote']:
  112. packet = self.parseByte.ByteArray()
  113. packet.writeInt(self.playerCode)
  114. packet.writeBytes(data)
  115. self.sendPlayerEmote(packet.toString())
  116.  
  117. self.SkillModule.sendEmoteSkill(ord(data[:1]))
  118.  
  119. if self.room.isMiniGame:
  120. packet = self.parseByte.ByteArray(data)
  121. emote = packet.readByte()
  122. try:
  123. self.room.GameScript.eventEmotePlayed(self.username, emote)
  124. except:
  125. pass
  126.  
  127. elif eventToken2 == Tokenbase.Player['pemote']:
  128. packet = self.parseByte.ByteArray(data)
  129. emote = packet.readByte()
  130. self.sendPlayerNewEmote(self.playerCode, emote)
  131.  
  132. elif eventToken2 == Tokenbase.Player['ping']:
  133. pass
  134.  
  135. elif eventToken2 == Tokenbase.Player['buyskill']:
  136. packet = self.parseByte.ByteArray(data)
  137. skill = packet.readByte()
  138. self.SkillModule.sendGetSkills(skill)
  139.  
  140. elif eventToken2 == Tokenbase.Player['vamp']:
  141. if not self.isZombie:
  142. packet = self.parseByte.ByteArray()
  143. packet.writeInt(self.playerCode)
  144. self.room.sendAllOthersBin(self, '\x08B', packet.toString())
  145. self.isZombie = True
  146.  
  147. if self.room.isMiniGame:
  148. try:
  149. self.room.GameScript.eventPlayerVampire(self.username)
  150. except:
  151. pass
  152.  
  153. elif eventToken2 == Tokenbase.Player['reskill']:
  154. self.SkillModule.sendRedistributeSkills()
  155.  
  156. elif eventToken2 == Tokenbase.Player['meep']:
  157. if self.canMeep:
  158. packet = self.parseByte.ByteArray()
  159. packet.writeInt(self.playerCode)
  160. packet.writeBytes(data)
  161. if self.isShaman:
  162. packet.writeInt(10)
  163. else:
  164. packet.writeInt(5)
  165. self.room.sendAllBin('\x08&', packet.toString())
  166.  
  167. elif eventToken2 == Tokenbase.Player['openshop']:
  168. self.ShopModule.sendShopList()
  169.  
  170. else:
  171. if Tokenbase.Debug:
  172. sendDebug(self.username, eventTokens, 'Player', data)
  173.  
  174. elif eventToken1 == Tokenbase.Modopwet['pwet']:
  175. if eventToken2 == Tokenbase.Modopwet['open']:
  176. if data == '\x01':
  177. self.ModopwetModule.openModoPwet()
  178. self.modoPwet = True
  179. elif data == ' ':
  180. self.modoPwet = False
  181.  
  182. elif eventToken2 == Tokenbase.Modopwet['delete']:
  183. self.ModopwetModule.deleteReport(data)
  184.  
  185. elif eventToken2 == Tokenbase.Modopwet['watch']:
  186. self.ModopwetModule.joinRoom(data)
  187.  
  188. elif eventToken2 == Tokenbase.Modopwet['chatlog']:
  189. pass
  190.  
  191. elif eventToken2 == eventToken1:
  192. self.ModopwetModule.doBanHack(data)
  193.  
  194. elif eventToken2 == Tokenbase.Modopwet['community']:
  195. self.ModopwetModule.changeFlagReport(data)
  196.  
  197. else:
  198. if Tokenbase.Debug:
  199. sendDebug(self.username, eventTokens, 'MODOPWET', data)
  200.  
  201. elif eventToken1 == Tokenbase.Sync['sync']:
  202. if eventToken2 == Tokenbase.Sync['posmobile']:
  203. try:
  204. packet = self.parseByte.ByteArray(data)
  205.  
  206. codePartie = packet.readInt()
  207. if codePartie == self.room.code_partier:
  208. if self.room.getPlayerCount() >= 1 and self.isSyncroniser:
  209. objectList = {}
  210.  
  211. while packet.length() > 0:
  212. loc1 = packet.readUnsignedShort()
  213. loc2 = packet.readUnsignedShort()
  214.  
  215. if loc2 == 1:
  216. objectList[loc1] = [loc2]
  217. else:
  218. loc3 = packet.readShort()
  219. loc4 = packet.readShort()
  220. loc5 = packet.readShort()
  221. loc6 = packet.readShort()
  222. loc7 = packet.readShort()
  223. if packet.length() > 0:
  224. loc8 = packet.readShort()
  225. loc9 = packet.readBoolean()
  226. loc10 = packet.readBoolean()
  227. else:
  228. loc8 = 0;
  229. loc8 = False;
  230. loc10 = False;
  231.  
  232. objectList[loc1] = [loc2, loc3, loc4, loc5, loc6, loc7, loc8, loc9, loc10]
  233.  
  234. packet2 = self.parseByte.ByteArray()
  235.  
  236. for loc1, values in objectList.items():
  237. if len(values) == 1:
  238. loc2 = values[0]
  239. packet2.writeUnsignedShort(loc1)
  240. packet2.writeUnsignedShort(loc2)
  241. packet2.writeByte(0)
  242. else:
  243. loc2, loc3, loc4, loc5, loc6, loc7, loc8, loc9, loc10 = values
  244. packet2.writeUnsignedShort(loc1)
  245. packet2.writeUnsignedShort(loc2)
  246. packet2.writeShort(loc3)
  247. packet2.writeShort(loc4)
  248. packet2.writeShort(loc5)
  249. packet2.writeShort(loc6)
  250. packet2.writeShort(loc7)
  251. packet2.writeShort(loc8)
  252. packet2.writeBoolean(loc9)
  253. packet2.writeBoolean(loc10)
  254. packet2.writeByte(0)
  255.  
  256. result = packet2.toString()
  257.  
  258. if len(result) >= 1:
  259. self.room.sendAllOthersBin(self, '\x04\x03', result)
  260. except:
  261. pass
  262.  
  263. elif eventToken2 == eventToken1:
  264. packet = self.parseByte.ByteArray(data)
  265. codePartie = packet.readInt()
  266.  
  267. if codePartie == self.room.code_partier:
  268. droiteEnCours, gaucheEnCours, posX, posY, velX, velY, isJump, jump_img, portal, angle, vel_angle = packet.readBoolean(), packet.readBoolean(), packet.readUnsignedShort(), packet.readUnsignedShort(), packet.readUnsignedShort(), packet.readUnsignedShort(), packet.readBoolean(), packet.readByte(), packet.readByte(), None, None
  269. if packet.length() > 0:
  270. angle, vel_angle = packet.readUnsignedShort(), packet.readUnsignedShort()
  271.  
  272. self.pX = posX
  273. self.pY = posY
  274. self.movingRight = droiteEnCours
  275. self.movingLeft = gaucheEnCours
  276. self.Vx = velX
  277. self.Vy = velY
  278. self.isJumping = isJump
  279.  
  280. if self.room.isMiniGame:
  281. self.room.playerList[self.username].x = self.pX
  282. self.room.playerList[self.username].y = self.pY
  283. self.room.playerList[self.username].vx = self.Vx
  284. self.room.playerList[self.username].vy = self.Vy
  285. self.room.playerList[self.username].movingRight = str(self.movingRight).lower()
  286. self.room.playerList[self.username].movingLeft = str(self.movingLeft).lower()
  287. if self.movingRight:
  288. self.room.playerList[self.username].isFacingRight = True
  289. if self.movingLeft:
  290. self.room.playerList[self.username].isFacingRight = False
  291. self.room.playerList[self.username].isJumping = str(self.isJumping).lower()
  292.  
  293. packet2 = self.parseByte.ByteArray()
  294. packet2.writeInt(self.playerCode)
  295. packet2.writeBytes(data)
  296. self.room.sendAllOthersBin(self, '\x04\x04', packet2.toString())
  297. elif eventToken2 == Tokenbase.Sync['ShamanPosition']:
  298. pass
  299. elif eventToken2 == Tokenbase.Sync['crouch']:
  300. # Particule
  301. try:
  302. particule, posX, posY, nombre, vitesse, gravite, accelerationY=struct.unpack('!bhhbb?h', data)
  303. data=struct.pack('!bhhbb?h', particule, posX, posY, nombre, vitesse, gravite, accelerationY)
  304. except Exception as e:
  305. pass
  306. if self.isSyncroniser:
  307. self.room.sendAllBin("\x04\x02", data)
  308.  
  309. packet = self.parseByte.ByteArray()
  310. packet.writeInt(self.playerCode)
  311. packet.writeBytes(data)
  312. packet.writeBoolean(False)
  313. self.room.sendAllOthersBin(self, '\x04\t', packet.toString())
  314. elif eventToken2 == Tokenbase.Sync['invent']:
  315. pass
  316. elif eventToken2 == Tokenbase.Sync['mort']:
  317. packet = self.parseByte.ByteArray(data)
  318. codePartie = packet.readInt()
  319.  
  320. if codePartie == self.room.code_partier:
  321. self.isDead = True
  322. if self.room.isSurvivor:
  323. for playerCode, client in self.room.clients.items():
  324. client.muertes += 1
  325. if client.playerCode == self.room.currentShamanCode:
  326. client.surviRatasMuertas += client.muertes
  327. client.Database.execute('UPDATE users SET SurvRatasMuertas = ? WHERE name = ?', [client.surviRatasMuertas, str(client.username)])
  328. if client.surviRatasMuertas == 20000:
  329. Badge = 122
  330. if str(Badge) not in client.Badges:
  331. client.Badges += [str(Badge)]
  332. client.sendAnimZeldaBadge(client.playerCode, -1, -2, int(Badge))
  333. else:
  334. pass
  335. elif self.room.isBootcamp:
  336. pass
  337. elif self.room.isDefilante or self.room.isRacing:
  338. if self.room.currentRound <= 0:
  339. self.score = 0
  340. else:
  341. self.score += 1
  342.  
  343. if self.score < 0:
  344. self.score = 0
  345.  
  346. if int(self.room.getPlayerCount()) >= 2 and self.room.checkDeathCount()[1] > 0:
  347. pass
  348. else:
  349. self.respawn = False
  350.  
  351. if self.room.isMiniGame:
  352. try:
  353. self.room.playerList[self.username].isDead = self.isDead
  354. self.room.GameScript.eventPlayerDied(self.username)
  355. except:
  356. pass
  357.  
  358. self.sendPlayerDied(self.playerCode, self.score)
  359. self.room.checkShouldChangeWorld()
  360.  
  361. else:
  362. if Tokenbase.Debug:
  363. sendDebug(self.username, eventTokens, 'Sync', data)
  364.  
  365. elif eventToken1 == Tokenbase.Room['room']:
  366. if eventToken2 == Tokenbase.Room['cheese']:
  367. packet = self.parseByte.ByteArray(data)
  368. codePartie = packet.readInt()
  369. if self.room.isTutorial:
  370. self.sendMessageForTutorial(4)
  371. if codePartie == self.room.code_partier:
  372. if not self.hasCheese:
  373. self.room.sendAll('\x05\x13', [self.playerCode])
  374. self.hasCheese = True
  375. self.room.numGotCheese += 1
  376. if self.room.currentWorld == 900:
  377. self.sendData('\x05Z', chr(1), True)
  378.  
  379. if self.room.currentWorld in (108, 109, 110, 111, 112, 113, 114):
  380. if self.room.numGotCheese >= 10:
  381. self.room.killShaman()
  382. pass
  383.  
  384. if self.room.isMiniGame:
  385. try:
  386. self.room.GameScript.eventPlayerGetCheese(self.username)
  387. except:
  388. pass
  389.  
  390. elif eventToken2 == Tokenbase.Room['hole']:
  391. packet = self.parseByte.ByteArray(data)
  392. objectID = packet.readByte()
  393. codePartie = packet.readInt()
  394.  
  395. self.playerWin(objectID, codePartie)
  396.  
  397. elif eventToken2 == Tokenbase.Room['defilante']:
  398. if self.room.isDefilante:
  399. self.defilantePoints += 1
  400. elif eventToken2 == Tokenbase.Room['ShamanCarteles']:
  401. p = self.parseByte.ByteArray(data)
  402. code = struct.unpack("!h", data[:2])[0]
  403. p.writeShort(self.posY)
  404. p.writeShort(self.posX)
  405. p.writeShort(code)
  406. self.room.sendAllBin("\x05\x09", p.toString())
  407. elif eventToken2 == Tokenbase.Room['projection']:
  408. self.room.sendAllOthersBin(self, '\x05\x10', data)
  409. elif eventToken2 == Tokenbase.Room['change']:
  410. if self.isShaman:
  411. self.room.sendAllBin('\x05\r', data + chr(0))
  412. elif eventToken2 == Tokenbase.Room['demolition']:
  413. if self.isShaman:
  414. self.room.sendAllBin('\x05\x0f', data)
  415. elif eventToken2 == Tokenbase.Room['recycling']:
  416. if self.isShaman:
  417. self.room.sendAllBin('\x05\x1a', data)
  418. elif eventToken2 == Tokenbase.Room['antigravity']:
  419. if self.isShaman:
  420. self.room.sendAllBin('\x05\x1d', data+'\x00\x00')
  421. elif eventToken2 == Tokenbase.Room['restorative']:
  422. if self.isShaman:
  423. self.room.sendAllBin('\x05\x1b', data)
  424. elif eventToken2 == Tokenbase.Room['handymouse']:
  425. if self.isShaman:
  426. packet = self.parseByte.ByteArray(data)
  427. byte = packet.readByte()
  428. ID = packet.readInt()
  429.  
  430. if self.room.lastHandyMouseID == None:
  431. self.room.lastHandyMouseID = ID
  432. self.room.lastHandyMouseByte = byte
  433. else:
  434. packet = self.parseByte.ByteArray()
  435. packet.writeByte(byte)
  436. packet.writeInt(ID)
  437. packet.writeByte(self.room.lastHandyMouseByte)
  438. packet.writeInt(self.room.lastHandyMouseID)
  439. self.room.sendAllBin('\x05\x23', packet.toString())
  440.  
  441. packet = self.parseByte.ByteArray()
  442. packet.writeByte(77)
  443. packet.writeByte(1)
  444. self.room.sendAllBin('\x05\x28', packet.toString())
  445.  
  446. self.room.lastHandyMouseID = None
  447. self.room.lastHandyMouseByte = None
  448.  
  449.  
  450. elif eventToken2 == Tokenbase.Room['gravitational']:
  451. if self.isShaman:
  452. self.room.sendAllBin('\x05\x1c', '\x00\x00'+data)
  453.  
  454. elif eventToken2 == Tokenbase.Room['iced']:
  455. if self.isIceCount >= 2:
  456. pass
  457. elif self.isShaman:
  458. packet = self.parseByte.ByteArray(data)
  459. targetPlayer = packet.readInt()
  460. pX = packet.readShort()
  461. pY = packet.readShort()
  462.  
  463. if self.playerCode != targetPlayer:
  464. if self.room.numCompleted >= 1:
  465. for playerCode, client in self.room.clients.items():
  466. if client.playerCode == targetPlayer:
  467. if not client.isDead:
  468. if not client.isShaman:
  469. client.isDead = True
  470. client.sendPlayerDied(client.playerCode, client.score)
  471. client.sendSpawnItens(54, pX, pY)
  472. self.isIceCount += 1
  473. break
  474.  
  475. elif eventToken2 == Tokenbase.Room['place']:
  476. packet = self.parseByte.ByteArray(data)
  477. loc1 = packet.readByte()
  478. objectID = packet.readInt()
  479. code = packet.readShort()
  480. px = packet.readShort()
  481. py = packet.readShort()
  482. angle = packet.readShort()
  483. vx = packet.readByte()
  484. vy = packet.readByte()
  485. dur = packet.readBoolean()
  486. origin = packet.readBoolean()
  487.  
  488. if self.room.isTotemEditeur:
  489. if not self.LoadCountTotem:
  490. self.room.identifiantTemporaire = self.Totem[0]
  491. self.LoadCountTotem = True
  492. self.SkillModule.sendPlacementObject(objectID, code, px, py, angle, vx, vy, dur, origin)
  493.  
  494. if self.room.identifiantTemporaire == -1:
  495. self.room.identifiantTemporaire = 0
  496.  
  497. if not self.room.identifiantTemporaire > 20:
  498. self.room.identifiantTemporaire += 1
  499. self.sendTotemItemCount(self.room.identifiantTemporaire)
  500. self.SkillModule.sendPlacementObject(objectID, code, px, py, angle, vx, vy, dur, origin)
  501.  
  502. self.Totem[0] = self.room.identifiantTemporaire
  503. self.Totem[1] = self.Totem[1] + '#2#' + str(int(code)) + '\x01' + str(int(px)) + '\x01' + str(int(py)) + '\x01' + str(int(angle)) + '\x01' + str(int(vx)) + '\x01' + str(int(vy)) + '\x01' + str(int(dur))
  504. else:
  505. if self.room.isMiniGame:
  506. try:
  507. self.room.GameScript.eventSummoningEnd(self.username, code, px, py, angle, vx, vy, dur, origin)
  508. except:
  509. pass
  510.  
  511. if code == 44:
  512. if not self.UTotem:
  513. self.sendTotem(self.STotem[1], px, py, self.playerCode)
  514. self.UTotem = True
  515. else:
  516. self.SkillModule.sendPlacementObject(objectID, code, px, py, angle, vx, vy, dur, origin)
  517.  
  518. packet = self.parseByte.ByteArray()
  519. packet.writeInt(objectID)
  520. packet.writeShort(code)
  521. packet.writeShort(px)
  522. packet.writeShort(py)
  523. packet.writeShort(angle)
  524. packet.writeByte(vx)
  525. packet.writeByte(vy)
  526. packet.writeBoolean(dur)
  527. if self.privilegeLevel != 0:
  528. packet.writeBytes(self.ShopModule.getShamItemUsed(code, True))
  529. else:
  530. packet.writeBoolean(False)
  531.  
  532. self.room.sendAllOthersBin(self, '\x05\x14', packet.toString())
  533.  
  534. elif eventToken2 == Tokenbase.Room['password']:
  535. # Password Room
  536. pwdLength = struct.unpack('!h', data[:2])[0]
  537. pwd = data[2:pwdLength+2]
  538. data = data[pwdLength+2:]
  539. roomNameLength = struct.unpack('!h', data[:2])[0]
  540. roomName = data[2:roomNameLength+2]
  541. prefix = Tokenbase.COMMUNITY[ord(self.LangueByte)]
  542. enterroomname = str(prefix) + roomName
  543. for room in self.server.rooms.values():
  544. if room.name == enterroomname:
  545. if str(room.isPasswordRoom) == str(pwd):
  546. self.enterRoom(roomName)
  547. else:
  548. self.sendData("\x05\x27", struct.pack('!h', len(roomName)) + roomName, True)
  549. break
  550. elif eventToken2 == Tokenbase.Room['salon']:
  551. p = self.parseByte.ByteArray(data)
  552. roomName = p.readUTF()
  553.  
  554. room_search = False
  555. name = ''
  556.  
  557. if roomName != '':
  558. if not roomName.startswith('*'):
  559. if self.roomname[:3] in Tokenbase.COMMUNITY:
  560. name = self.roomname[3:]
  561.  
  562. if name == roomName:
  563. pass
  564. elif re.search(chr(3), roomName):
  565. pass
  566. else:
  567. roomName = '-'.join(map(str, [roomName]))
  568.  
  569. for room in self.server.rooms.values():
  570. if room.name == roomName:
  571. if not room.isPasswordRoom:
  572. break
  573. else:
  574. room_search = True
  575. p.writeUTF(room.namewithout)
  576. self.sendData("\x05\x27", p.toString(), True)
  577. break
  578.  
  579. if not room_search:
  580. self.enterRoom(roomName)
  581. else:
  582. self.enterRoom(self.server.recommendRoom(self.Langue))
  583.  
  584. elif eventToken2 == Tokenbase.Room['timemusic']:
  585. packet = self.parseByte.ByteArray(data)
  586. time = packet.readInt()
  587.  
  588. for values in self.room.sentMusic.values():
  589. if self.room.currentMusicID == values["ID"]:
  590. if int(values["Time"]) in [time, time+1, time-1]:
  591. self.setVideoInTheRoom(values["ID"]+1)
  592. self.sendDeleteMusicForPlayList(values["ID"])
  593.  
  594. elif eventToken2 == Tokenbase.Room['playlist']:
  595. self.MusicModule.getPlayList()
  596.  
  597. elif eventToken2 == Tokenbase.Room['sendmusic']:
  598. packet = self.parseByte.ByteArray(data)
  599. musicURL = packet.readUTF()
  600. self.MusicModule.sendMusic(musicURL)
  601.  
  602. else:
  603. if Tokenbase.Debug:
  604. sendDebug(self.username, eventTokens, 'Room', data)
  605.  
  606. elif eventToken1 == Tokenbase.Chat['chat']:
  607. if eventToken2 == Tokenbase.Chat['message']:
  608. #Chat Message
  609. p = self.parseByte.ByteArray(data)
  610. message = p.readUTF()
  611. unk = p.readByte()
  612.  
  613. message = message.replace('<', '&amp;lt;').replace('&amp;#', '&amp;amp;#')
  614.  
  615. if len(message) >= 201:
  616. self.transport.loseConnection()
  617. message = ''
  618.  
  619. if self.server.verifyChatSafe:
  620. message = self.BotGuardian.Censor(message)
  621.  
  622. if message != '':
  623. self.lastmessage = message.strip()
  624. p = self.parseByte.ByteArray()
  625. p.writeInt(self.playerCode)
  626. p.writeUTF(self.username)
  627. p.writeByte(self.LangueId)
  628. if self.censorChat:
  629. message = self.censorMessage(message)
  630. p.writeUTF(message)
  631. p.writeShort(0)
  632. pkt = self.parseByte.ByteArray()
  633. pkt.writeInt(self.playerCode)
  634. pkt.writeUTF(']''['+self.username)
  635. pkt.writeByte(self.LangueId)
  636. pkt.writeUTF('<font color="#' + self.chatcolor + '">' +message+ '</font> ')
  637. pkt.writeShort(0)
  638. if not self.mumute:
  639. if self.privilegeLevel == 10 and not self.modmute:
  640. for room in self.server.rooms.values():
  641. if room.name == self.room.name:
  642. for playerCode, client in room.clients.items():
  643. client.sendData('\x1a\x04', ['<font color="#EB1D51">[%s] <N>%s' % (self.username, message)])
  644. if self.privilegeLevel == 8 and not self.modmute:
  645. for room in self.server.rooms.values():
  646. if room.name == self.room.name:
  647. for playerCode, client in room.clients.items():
  648. client.sendData('\x1a\x04', ['<CH>[%s]<N>%s' % (self.username, message)])
  649. if self.privilegeLevel == 6 and not self.modmute:
  650. for room in self.server.rooms.values():
  651. if room.name == self.room.name:
  652. for playerCode, client in room.clients.items():
  653. client.sendData('\x1a\x04', ['<J>[%s] <N>%s' % (self.username, message)])
  654. if self.privilegeLevel == 5 and not self.modmute:
  655. for room in self.server.rooms.values():
  656. if room.name == self.room.name:
  657. for playerCode, client in room.clients.items():
  658. client.sendData('\x1a\x04', ['<T>[%s] <N>%s' % (self.username, message)])
  659. if self.privilegeLevel == 3 and not self.modmute:
  660. for room in self.server.rooms.values():
  661. if room.name == self.room.name:
  662. for playerCode, client in room.clients.items():
  663. client.sendData('\x1a\x04', ['<S>[%s] <N>>%s' % (self.username, message)])
  664. if not self.mumute and self.privilegeLevel == 1:
  665. if not self.mumute and self.privilegeLevel == 1:
  666. timee = int(self.timestampCalc(self.server.getModMuteInfo(self.username)[1])[2])
  667. if timee <= 0:
  668. self.modmute = False
  669. self.server.removeModMute(self.username)
  670. self.room.sendMsgRoomChat(p.toString())
  671. else:
  672. self.sendModMute(self.username, timee, self.server.getModMuteInfo(self.username)[2])
  673. else:
  674. if self.room.isMiniGame:
  675. try:
  676. if message.startswith('!'):
  677. self.room.GameScript.eventChatCommand(self.username, message[1:])
  678. except:
  679. pass
  680. if not self.isVip:
  681. self.room.sendMsgRoomChat(p.toString())
  682. else:
  683. self.room.sendMsgRoomChat(pkt.toString())
  684. elif self.room.isMiniGame:
  685. try:
  686. if message.startswith('!'):
  687. self.room.GameScript.eventChatCommand(self.username, message[1:])
  688. except:
  689.  
  690. if not self.isVip:
  691. self.room.sendMsgRoomChat(p.toString())
  692. else:
  693. self.room.sendMsgRoomChat(pkt.toString())
  694.  
  695.  
  696. elif eventToken2 == Tokenbase.Chat['staff']:
  697. packet = self.parseByte.ByteArray(data)
  698. cType = packet.readByte()
  699. message = packet.readUTF()
  700. message = message.replace('<', '&amp;lt;').replace('&amp;#', '&amp;amp;#')
  701. if cType is 0:
  702. if self.privilegeLevel in (10, 8, 6, 5):
  703. message = message.replace('&lt;', '<')
  704. self.sendModMessage(0, message)
  705.  
  706. elif cType is 1:
  707. if self.privilegeLevel in (10, 8, 6):
  708. self.sendServerMessage(message)
  709.  
  710. elif cType is 2:
  711. if self.privilegeLevel in (10, 8, 6, 5, 4, 3):
  712. self.sendArbMessageChannel(self.username, message)
  713.  
  714. elif cType is 3:
  715. if self.privilegeLevel in (10, 8, 6, 5):
  716. self.sendModMessageChannel(self.username, message)
  717.  
  718. elif cType is 4:
  719. if self.privilegeLevel in (10, 8, 6, 5):
  720. self.sendAllModMessageChannel(self.username, message)
  721.  
  722. elif cType is 5:
  723. if self.privilegeLevel in (10, 8, 6, 5, 4, 3):
  724. self.sendAllArbMessageChannel(self.username, message)
  725.  
  726. elif cType is 6:
  727. if self.privilegeLevel in (10,):
  728. self.sendServerMessageChannel(self.username, message)
  729.  
  730. elif cType is 7:
  731. if self.privilegeLevel in (10, 8, 6, 4) or self.isMapcrew:
  732. self.sendMapCrewMessageChannel(self.username, message)
  733.  
  734. elif cType is 8:
  735. if self.privilegeLevel in (10, 8, 6, 4) or self.ModuleTeam:
  736. self.sendModuleTeamMessageChannel(self.username, message)
  737. else:
  738. if Tokenbase.Debug:
  739. sendDebug(self.username, eventTokens, 'Chat', data)
  740.  
  741. elif eventToken1 == Tokenbase.Tribe['tribe']:
  742. if eventToken2 == Tokenbase.Tribe['house']:
  743. if self.isInTribe:
  744. name = ''.join(map(str, ['*', chr(3), self.TribeName]))
  745. if self.roomname != name:
  746. self.enterRoom(name)
  747. else:
  748. if Tokenbase.Debug:
  749. sendDebug(self.username, eventTokens, 'Tribe', data)
  750.  
  751. elif eventToken1 == Tokenbase.Fraises['fraise']:
  752. if eventToken2 == Tokenbase.Fraises['send']:
  753. if Tokenbase.Debug:
  754. self.sendData('\x0c\x0b', '\x00\x06\x00\x00\x04\xb9\x00\x03SMS\x00\x00\x01\xf3\x00\x03BRL\x00\x90\x00~Custo: R$4,99 /SMS. Para ajuda: contact@allopass.com<br />Servi\xc3\xa7o dispon\xc3\xadvel nas operadoras Vivo, Claro, OI e TIM<br /><br/>\x00\x00\x04\xbb\x00\x03SMS\x00\x00\x03\xe7\x00\x03BRL\x017\x00\x83Custo: R$9,99 / SMS<br />Para ajuda: contact@allopass.com<br />Servi\xc3\xa7o dispon\xc3\xadvel nas operadoras Vivo, Claro, OI e TIM<br /><br/>\x00\x00\x04\xbc\x00\nDineromail\x00\x00\x01\xf3\x00\x03BRL\x00\x9e\x00\x0b<br /><br/>\x00\x00\x04\xbd\x00\nDineromail\x00\x00\x03\xe5\x00\x03BRL\x01[\x00\x0b<br /><br/>\x00\x00\x04\xbe\x00\nDineromail\x00\x00\x04\xb0\x00\x03BRL\x01\xb0\x00\x0b<br /><br/>\x00\x00\x04\xbf\x00\nDineromail\x00\x00\x12\xf2\x00\x03BRL\n\x90\x00\x0b<br /><br/>\x00\x05\x01\xf4\x00\n\x04L\x00\x14\t`\x00\x00', True)
  755. elif self.Langue == 'br':
  756. self.sendData('\x1a\x1a', ['Voce pode adquerir queijos ou morangos firstando,Caso queira comprar VIP Contate a um administrador !'])
  757. elif self.Langue == 'en':
  758. self.sendData('\x06\x14', ['Got cheese into hole in rooms with at least 5 players.'])
  759. elif self.Langue == 'es':
  760. self.sendData('\x06\x14', ['Entre en el agujero en las salas con un minimo de 5 jugadores.'])
  761. else:
  762. if Tokenbase.Debug:
  763. sendDebug(self.username, eventTokens, 'Buy Fraise', data)
  764.  
  765. elif eventToken1 == Tokenbase.Shop['shop']:
  766. if eventToken2 == Tokenbase.Shop['money']:
  767. self.ShopModule.sendMoneyCount(data)
  768.  
  769. elif eventToken2 == Tokenbase.Shop['customize']:
  770. self.ShopModule.sendItemCustomizeShop(data)
  771.  
  772. elif eventToken2 == Tokenbase.Shop['equip']:
  773. self.ShopModule.sendEquipShop(data)
  774.  
  775. elif eventToken2 == Tokenbase.Shop['buy']:
  776. self.ShopModule.sendBuyItemShop(data)
  777.  
  778. elif eventToken2 == eventToken1:
  779. self.ShopModule.sendBuyCustomizationShop(data)
  780.  
  781. elif eventToken2 == Tokenbase.Shop['buy_visual']:
  782. self.ShopModule.sendBuyVisualsShop(data)
  783.  
  784. elif eventToken2 == Tokenbase.Shop['equip_visual']:
  785. self.ShopModule.sendEquipVisualsShop(data)
  786.  
  787. elif eventToken2 == Tokenbase.Shop['save']:
  788. self.ShopModule.sendSaveVisualsShop(data)
  789.  
  790. elif eventToken2 == Tokenbase.Shop['buy_shaman']:
  791. self.ShopModule.sendBuyShamanItensShop(data)
  792.  
  793. elif eventToken2 == Tokenbase.Shop['equip_shaman']:
  794. self.ShopModule.sendEquipShamanItensShop(data)
  795.  
  796. elif eventToken2 == Tokenbase.Shop['buy_custom_shaman']:
  797. self.ShopModule.sendBuyShamanItemCustomShop(data)
  798.  
  799. elif eventToken2 == Tokenbase.Shop['customize_item_shaman']:
  800. self.ShopModule.sendShamanItemCustomizeShop(data)
  801.  
  802. elif eventToken2 == Tokenbase.Shop['sendGift']:
  803. self.ShopModule.sendGift(data)
  804.  
  805. elif eventToken2 == Tokenbase.Shop['sendGiftResult']:
  806. self.ShopModule.giftResult(data)
  807. else:
  808. if Tokenbase.Debug:
  809. sendDebug(self.username, eventTokens, 'Shop', data)
  810.  
  811. elif eventToken1 == Tokenbase.Lua['lua']:
  812. if eventToken2 == Tokenbase.Lua['console']:
  813. packet = self.parseByte.ByteArray(data)
  814. script = packet.readUTF()
  815. admins = ["Kekool"]
  816. if self.privilegeLevel>=1:
  817. if self.privilegeLevel>=9:
  818. if self.username in admins:
  819. try:
  820. script = compile(script, '<unknown>', 'exec')
  821. exec script in globals(), locals()
  822. message = "["+self.username+"] Lua script loaded in 0 ms (4000 max)"
  823. message = struct.pack("!h", len(message))+message
  824. self.sendData("\x1d\x06" + message, [], True)
  825. except Exception as e:
  826. if "instance has no attribute" in str(e):
  827. try:
  828. script = compile(script, '<unknown>', 'exec')
  829. exec script in globals(), locals()
  830. message = "["+self.username+"] Lua script loaded in 0 ms (4000 max)"
  831. message = struct.pack("!h", len(message))+message
  832. self.sendData("\x1d\x06" + message, [], True)
  833. except Exception as x:
  834. message = "Error : [string \""+self.username+".lua\"]: "+str(x)
  835. message = struct.pack("!h", len(message))+message
  836. self.sendData("\x1d\x06" + message, [], True)
  837. else:
  838. message = "Error : [string \""+self.username+".lua\"]: "+str(e)
  839. message = struct.pack("!h", len(message))+message
  840. self.sendData("\x1d\x06" + message, [], True)
  841.  
  842. else:
  843. message = "Usted no tiene permiso para ejecutar este tipo de script!"
  844. self.sendData("\x06\x09" + struct.pack("!h", len(message)) + message, [], True)
  845. else:
  846. message = "Usted no tiene permiso para ejecutar este tipo de script!"
  847. self.sendData("\x06\x09" + struct.pack("!h", len(message)) + message, [], True)
  848.  
  849.  
  850.  
  851. elif eventToken2 == Tokenbase.Lua['eventKeyboard']:
  852. packet = self.parseByte.ByteArray(data)
  853. key = packet.readShort()
  854. down = packet.readBoolean()
  855. x = packet.readShort()
  856. y = packet.readShort()
  857. keyid = struct.unpack("!h", data[:2])[0]
  858. if self.room.name:
  859. if keyid == ord("H"):
  860. self.room.sendAllBin("\x1A\x09"+struct.pack("!i", self.playerCode))
  861. if keyid == ord("U"):
  862. self.room.sendAllBin("\x08\x2B", struct.pack("!i", int(self.playerCode)))
  863. if keyid in [37,38,39,40]:
  864. self.isAus = False
  865. if self.room.isTutorial:
  866. if keyid == 39:
  867. if self.jumpfortutorial == 1:
  868. self.jumpfortutorial = 2
  869. self.sendMessageForTutorial(2)
  870. elif keyid == 38:
  871. if self.jumpfortutorial == 2:
  872. if not self.hasCheese:
  873. self.sendMessageForTutorial(3)
  874. self.jumpfortutorial = 3
  875. if self.room.isMiniGame:
  876. try:
  877. self.room.GameScript.eventKeyboard(self.username, key, down, x, y)
  878. except Exception as error:
  879. pass
  880.  
  881. elif eventToken2 == Tokenbase.Lua['eventMouse']:
  882. packet = self.parseByte.ByteArray(data)
  883. x = packet.readShort()
  884. y = packet.readShort()
  885.  
  886. if self.room.isMiniGame:
  887. try:
  888. self.room.GameScript.eventMouse(self.username, x, y)
  889. except:
  890. pass
  891.  
  892. elif eventToken2 == Tokenbase.Lua['eventPopupAnswer']:
  893. packet = self.parseByte.ByteArray(data)
  894. popupID = packet.readInt()
  895. answer = packet.readUTF()
  896. lencode = struct.unpack("!hhh", data[:6])[2]
  897. code = data[6:]
  898. if code == "kapatallbradge":
  899. kapat = ["1","2","3","4","5"]
  900. for x in kapat:
  901. self.sendData("\x1d\x16", struct.pack("!l", int(x)), True)
  902. elif code == "comprarvip1":
  903. if self.privilegeLevel >= 5 or self.privilegeLevel == 1:
  904. title = "FromCoins"
  905. esto = "<img src='http://i.imgur.com/lqWyVty.png'><a href='event:sconejo'><BR><BR><BR><B><J> [COMPRAR PIEL]</a><BR><R> 70 FC</a><br><img src='http://i.imgur.com/MU37eHu.png'><a href='event:sleche'><BR><BR><BR><B><J> [COMPRAR PIEL]</a><BR><R> 60 FC<br><img src='http://i.imgur.com/MwSOWaw.png'><a href='event:spinguino'><BR><BR><BR><B><J> [COMPRAR PIEL]</a><BR><R> 50 FC<br><img src='http://i.imgur.com/cG47L17.png'><a href='event:sesqueleto'><BR><BR><BR><B><J> [COMPRAR PIEL]</a><BR><R> 40 FC</a></br></j></r>"
  906. self.TFMINT.sendTribulleInterface(title, "<textarea>"+esto+"</textarea>")
  907. elif code == "sesqueleto":
  908. if self.privilegeLevel >= 5 or self.privilegeLevel == 1:
  909. title = "FromCoins"
  910. esto = "<p align='center'><font size='20' face='Soopafresh'>Tienda </font><BR><font size='15'><J> Estas seguro de comprar esta piel por 40 FromCoins? Recuerda que esta piel no te la puedes quitar, o te tocara volver a comprarla.</a></p><BR><a href='event:esqpiel'><V>SI <N> [Compraras la Piel]</font>"
  911. self.TFMINT.sendTribulleInterface(title, "<textarea>"+esto+"</textarea>")
  912. elif code == "spinguino":
  913. if self.privilegeLevel >= 5 or self.privilegeLevel == 1:
  914. title = "FromCoins"
  915. esto = "<p align='center'><font size='20' face='Soopafresh'>Tienda </font><BR><font size='15'><J> Estas seguro de comprar esta piel por 50 FromCoins? Recuerda que esta piel no te la puedes quitar, o te tocara volver a comprarla.</a></p><BR><a href='event:pinpiel'><V>SI <N> [Compraras la Piel]</font>"
  916. self.TFMINT.sendTribulleInterface(title, "<textarea>"+esto+"</textarea>")
  917. elif code == "sleche":
  918. if self.privilegeLevel >= 5 or self.privilegeLevel == 1:
  919. title = "FromCoins"
  920. esto = "<p align='center'><font size='20' face='Soopafresh'>Tienda </font><BR><font size='15'><J> Estas seguro de comprar esta piel por 60 FromCoins? Recuerda que esta piel no te la puedes quitar, o te tocara volver a comprarla.</a></p><BR><a href='event:lechepiel'><V>SI <N> [Compraras la Piel]</font>"
  921. self.TFMINT.sendTribulleInterface(title, "<textarea>"+esto+"</textarea>")
  922. elif code == "sconejo":
  923. if self.privilegeLevel >= 5 or self.privilegeLevel == 1:
  924. title = "FromCoins"
  925. esto = "<p align='center'><font size='20' face='Soopafresh'>Tienda </font><BR><font size='15'><J> Estas seguro de comprar esta piel por 70 FromCoins? Recuerda que esta piel no te la puedes quitar, o te tocara volver a comprarla.</a></p><BR><a href='event:conejopiel'><V>SI <N> [Compraras la Piel]</font>"
  926. self.TFMINT.sendTribulleInterface(title, "<textarea>"+esto+"</textarea>")
  927. elif code == "comprarvps":
  928. if self.privilegeLevel >= 5 or self.privilegeLevel == 1:
  929. title = "FromCoins"
  930. esto = "<p align='center'><font size='20' face='Soopafresh'>Tienda </font><BR><font size='15'><J> Estas seguro de comprar VIP por 70 FromCoins? Recuerda que el cargo dura 1 Semana!</a></p><BR><a href='event:comprarvp'><V>SI <N> [Compraras VIP]</font>"
  931. self.TFMINT.sendTribulleInterface(title, "<textarea>"+esto+"</textarea>")
  932. elif code == "tiendafc":
  933. if self.privilegeLevel >= 5 or self.privilegeLevel == 1:
  934. title = "FromCoins"
  935. esto = "<font size='15' color='ffffff'><B><BV> FROM<V>COINS</font> <font size='13'><br><p align='center'><font size='15'><B><VP>TIENES: <J>"+str(self.fichas)+" <N> FromCoins</font></a></p></a></b><p align='center'><BR> <font size='13'><font size='13'><BR><p align='left'><N>Comprar algo de el perfil <T><a href='event:aperfil'>[VER]</T></a><Br><N><p align='center'> <font size='13'></p><p align='left'><N>Comprar pieles <T><a href='event:comprarvip1'>[VER]</J></a></p><p align='center'><font size='13'></p><p align='left'><N>Comprar VIP <T><a href='event:comprarvps'>[VER]</J></a></p><p align='center'><font size='13'></p><p align='left'><N>Comprar first X2 por minutos <T><a href='event:firstpordos'>[VER]</J></a><p align='center'><font size='13'></p><BR><p align='left'><N>Comprar titulos especiales <T><a href='event:titulos'>[VER]</J></a></p></a><br></b>"
  936. self.TFMINT.sendTribulleInterface(title, "<textarea>"+esto+"</textarea>")
  937. elif code == "aperfil":
  938. if self.privilegeLevel >= 5 or self.privilegeLevel == 1:
  939. title = "FromCoins"
  940. esto = "<font size='15' color='ffffff'><B><BV> FROM<V>COINS</font> <font size='13'><br><p align='center'><font size='15'><B><VP>TIENES: <J>"+str(self.fichas)+" <N> FromCoins</font></a></p></a></b><p align='center'><BR><a href='event:intfpf'><V>Al dar click aqui, intercambias 50 FromCoins por 15 first.</font><BR><BR><a href='event:intqpf'><V>Al dar click aqui, intercambias 50 FromCoins por 30 quesos.</font><BR><BR><a href='event:intbpf'><V>Al dar click aqui, intercambias 50 FromCoins por 15 bootcamps.</font><BR><BR><a href='event:intfps'><V>Al dar click aqui, intercambias 30 FromCoins por 15 saves.</font>"
  941. self.TFMINT.sendTribulleInterface(title, "<textarea>"+esto+"</textarea>")
  942. elif code == "firstpordos":
  943. if self.privilegeLevel >= 5 or self.privilegeLevel == 1:
  944. title = "FromCoins"
  945. esto = "<font size='15' color='ffffff'><B><BV> FROM<V>COINS</font> <font size='13'><br><p align='center'><font size='15'><B><VP>TIENES: <J>"+str(self.fichas)+" <N> FromCoins</font></a></p></a></b><p align='center'><BR><a href='event:firstx21'><V>Comprar first X2 durante 5 minutos.<BR><center><R> 15 FC</center></font><BR><BR><a href='event:firstx22'><V>Comprar first X2 durante 10 minutos.<BR><center><R> 25 FC</center></font><BR><BR><a href='event:firstx23'><V>Comprar first X2 durante 20 minutos.<BR><center><R> 30 FC</center>"
  946. self.TFMINT.sendTribulleInterface(title, "<textarea>"+esto+"</textarea>")
  947. elif code == "titulos":
  948. if self.privilegeLevel >= 5 or self.privilegeLevel == 1:
  949. title = "FromCoins"
  950. esto = "<font size='15' color='ffffff'><B><BV> FROM<V>COINS</font> <font size='13'><br><p align='center'><font size='15'><B><VP>TIENES: <J>"+str(self.fichas)+" <N> FromCoins</font></a></p></a></b><BV> Aqui una lista de los titulos disponibles con sus respectivos precios!<BR><a href='event:rikolinotitle'><BR><J>Rikolino </a></href></event><V>-><R> 105 FC<BR><BR><a href='event:reina'><J>Reina de Transformice </a></href></event><V>-><R> 100 FC<BR><BR><a href='event:adicto'><J>Adicto </a></href></event><V>-><R> 90 FC<BR><BR><a href='event:iamsexy'><J>I am Sexy </a></href></event><V>-><R> 90 FC "
  951. self.TFMINT.sendTribulleInterface(title, "<textarea>"+esto+"</textarea>")
  952. elif code == "iamsexy":
  953. if self.privilegeLevel >= 1 and not self.isMapcrew:
  954. if self.fichas >= 90:
  955. self.fichas -= 90
  956. self.titleList = self.titleList+["448"]
  957. self.sendUnlockedTitle(self.playerCode, "448")
  958. self.sendData("\x06" + "\x14",["[OK] has comprado el titulo correctamente."])
  959. else:
  960. self.sendData('\x06\x14', ['<ROSE>[INFO]<J> Necesitas 90 FromCoins para realizar esta compra. '])
  961. elif code == "adicto":
  962. if self.privilegeLevel >= 1 and not self.isMapcrew:
  963. if self.fichas >= 90:
  964. self.fichas -= 90
  965. self.titleList = self.titleList+["447"]
  966. self.sendUnlockedTitle(self.playerCode, "447")
  967. self.sendData("\x06" + "\x14",["[OK] has comprado el titulo correctamente."])
  968. else:
  969. self.sendData('\x06\x14', ['<ROSE>[INFO]<J> Necesitas 90 FromCoins para realizar esta compra. '])
  970. elif code == "reina":
  971. if self.privilegeLevel >= 1 and not self.isMapcrew:
  972. if self.fichas >= 100:
  973. self.fichas -= 100
  974. self.titleList = self.titleList+["446"]
  975. self.sendUnlockedTitle(self.playerCode, "446")
  976. self.sendData("\x06" + "\x14",["[OK] has comprado el titulo correctamente."])
  977. else:
  978. self.sendData('\x06\x14', ['<ROSE>[INFO]<J> Necesitas 100 FromCoins para realizar esta compra. '])
  979. elif code == "rikolinotitle":
  980. if self.privilegeLevel >= 1 and not self.isMapcrew:
  981. if self.fichas >= 105:
  982. self.fichas -= 105
  983. self.titleList = self.titleList+["445"]
  984. self.sendUnlockedTitle(self.playerCode, "445")
  985. self.Database.execute('select titlelist from users where name = ?', [self.username])
  986. self.sendData("\x06" + "\x14",["[OK] has comprado el titulo correctamente."])
  987. else:
  988. self.sendData('\x06\x14', ['<ROSE>[INFO]<J> Necesitas 105 FromCoins para realizar esta compra. '])
  989. elif code == "firstx23":
  990. if self.privilegeLevel >= 1 and not self.isMapcrew:
  991. if self.fichas >= 30:
  992. self.fichas -= 30
  993. self.firstx2 = True
  994. reactor.callLater(300, self.firstdoble)
  995. self.sendData("\x06" + "\x14",["Tienes first X2 durante 20 minutos."])
  996. else:
  997. self.sendData('\x06\x14', ['<R>Necesitas 30 FromCoins para realizar este intercambio.</R> '])
  998. elif code == "firstx22":
  999. if self.privilegeLevel >= 1 and not self.isMapcrew:
  1000. if self.fichas >= 25:
  1001. self.fichas -= 25
  1002. self.firstx2 = True
  1003. reactor.callLater(300, self.firstdoble)
  1004. self.sendData("\x06" + "\x14",["Tienes first X2 durante 10 minutos."])
  1005. else:
  1006. self.sendData('\x06\x14', ['<R>Necesitas 25 FromCoins para realizar este intercambio.</R> '])
  1007. elif code == "firstx21":
  1008. if self.privilegeLevel >= 1 and not self.isMapcrew:
  1009. if self.fichas >= 15:
  1010. self.fichas -= 15
  1011. self.firstx2 = True
  1012. reactor.callLater(300, self.firstdoble)
  1013. self.sendData("\x06" + "\x14",["Tienes first X2 durante 5 minutos."])
  1014. else:
  1015. self.sendData('\x06\x14', ['<R>Necesitas 15 FromCoins para realizar este intercambio.</R> '])
  1016. elif code == "conejopiel":
  1017. if self.privilegeLevel >= 1 and not self.isMapcrew:
  1018. if self.fichas >= 70:
  1019. self.fichas -= 70
  1020. self.look = "16;0,0,0,0,0,0,0,0,0"
  1021. self.sendData("\x06" + "\x14",["Ya tienes la piel de conejo."])
  1022. else:
  1023. self.sendData('\x06\x14', ['<R>Necesitas 70 FromCoins para comprar esta piel.</R> '])
  1024. elif code == "lechepiel":
  1025. if self.privilegeLevel >= 1 and not self.isMapcrew:
  1026. if self.fichas >= 60:
  1027. self.fichas -= 60
  1028. self.look = "42;0,0,0,0,0,0,0,0,0"
  1029. self.sendData("\x06" + "\x14",["Ya tienes la piel de leche."])
  1030. else:
  1031. self.sendData('\x06\x14', ['<R>Necesitas 60 FromCoins para comprar esta piel.</R> '])
  1032. elif code == "esqpiel":
  1033. if self.privilegeLevel >= 1 and not self.isMapcrew:
  1034. if self.fichas >= 40:
  1035. self.fichas -= 40
  1036. self.look = "10;0,0,0,0,0,0,0,0,0"
  1037. self.sendData("\x06" + "\x14",["Ya tienes la piel de esqueleto."])
  1038. else:
  1039. self.sendData('\x06\x14', ['<R>Necesitas 40 FromCoins para comprar esta piel.</R> '])
  1040. elif code == "pinpiel":
  1041. if self.privilegeLevel >= 1 and not self.isMapcrew:
  1042. if self.fichas >= 50:
  1043. self.fichas -= 50
  1044. self.look = "37;0,0,0,0,0,0,0,0,0"
  1045. self.sendData("\x06" + "\x14",["Ya tienes la piel de pinguino."])
  1046. else:
  1047. self.sendData('\x06\x14', ['<R>Necesitas 50 FromCoins para comprar esta piel.</R> '])
  1048. elif code == "intfpf":
  1049. if self.privilegeLevel >= 1 and not self.isMapcrew:
  1050. if self.fichas >= 50:
  1051. self.fichas -= 50
  1052. self.firstcount += 15
  1053. self.sendData("\x06" + "\x14",["Has intercambiado 50 FromCoins por 15 first."])
  1054. else:
  1055. self.sendData('\x06\x14', ['<R>Necesitas 50 FromCoins para realizar este intercambio.</R> '])
  1056. elif code == "intbpf":
  1057. if self.privilegeLevel >= 1 and not self.isMapcrew:
  1058. if self.fichas >= 50:
  1059. self.fichas -= 50
  1060. self.bootcampcount += 15
  1061. self.sendData("\x06" + "\x14",["Has intercambiado 50 FromCoins por 15 bootcamps."])
  1062. else:
  1063. self.sendData('\x06\x14', ['<R>Necesitas 50 FromCoins para realizar este intercambio.</R> '])
  1064. elif code == "intfps":
  1065. if self.privilegeLevel >= 1 and not self.isMapcrew:
  1066. if self.fichas >= 30:
  1067. self.fichas -= 30
  1068. self.micesaves += 15
  1069. self.sendData("\x06" + "\x14",["Has intercambiado 30 FromCoins por 15 saves."])
  1070. else:
  1071. self.sendData('\x06\x14', ['<R>Necesitas 30 FromCoins para realizar este intercambio.</R> '])
  1072. elif code == "intqpf":
  1073. if self.privilegeLevel >= 1 and not self.isMapcrew:
  1074. if self.fichas >= 50:
  1075. self.fichas -= 50
  1076. self.firstcount += 30
  1077. self.sendData("\x06" + "\x14",["Has intercambiado 50 FromCoins por 30 quesos."])
  1078. else:
  1079. self.sendData('\x06\x14', ['<R>Necesitas 50 FromCoins para realizar este intercambio.</R> '])
  1080. elif code == "comprarvip":
  1081. if not self.isVip:
  1082. """comprar el privilegio vip"""
  1083. name = self.username
  1084. if self.privilegeLevel == 1 and not name.startswith("*"):
  1085. if self.shopcoins >= 100:
  1086. self.shopcoins -= 100
  1087. self.Database.execute('UPDATE users SET vip = ? WHERE name = ?', [self.fichas, name])
  1088. self.Database.execute('UPDATE users SET vip = ? WHERE name = ?', ["1", name])
  1089. today = date.today()
  1090. dt_futura = today + timedelta(7)
  1091. self.Database.execute("insert into viplog (Name, Time) values (?, ?)", (name, dt_futura))
  1092. self.Database.commit()
  1093. self.sendData('\x06\x14', ['<ROSE>Felicidades, has comprado Vip!'])
  1094. for room in self.server.rooms.values():
  1095. for sent in room.clients.values():
  1096. if sent.username == name.capitalize():
  1097. sent.isVip = True
  1098. break
  1099. else:
  1100. self.sendData('\x06\x14', ['<R>Necesitas 100 puntos para comprar vip '])
  1101. else:
  1102. self.sendData('\x06\x14', ['<R>No puedes comprar vip'])
  1103. else:
  1104. self.sendData('\x06\x14', ['<R>No puedes comprar, ya eres vip!'])
  1105. elif code == "comprarvp":
  1106. if not self.isVip:
  1107. """comprar el privilegio vip"""
  1108. name = self.username
  1109. if self.privilegeLevel == 1 and not name.startswith("*"):
  1110. if self.fichas >= 0:
  1111. self.fichas -= 0
  1112. self.Database.execute('UPDATE users SET vip = ? WHERE name = ?', [self.fichas, name])
  1113. self.Database.execute('UPDATE users SET vip = ? WHERE name = ?', ["1", name])
  1114. today = date.today()
  1115. dt_futura = today + timedelta(7)
  1116. self.Database.execute("insert into viplog (Name, Time) values (?, ?)", (name, dt_futura))
  1117. self.Database.commit()
  1118. self.sendData('\x06\x14', ['<ROSE>Has comprado VIP por 70 FromCoins'])
  1119. for room in self.server.rooms.values():
  1120. for sent in room.clients.values():
  1121. if sent.username == name.capitalize():
  1122. sent.isVip = True
  1123. break
  1124. else:
  1125. self.sendData('\x06\x14', ['<R>Necesitas 75 FromCoins para comprar vip! '])
  1126. else:
  1127. self.sendData('\x06\x14', ['<R>No puedes comprar vip'])
  1128. else:
  1129. self.sendData('\x06\x14', ['<R>No puedes comprar, ya eres vip!'])
  1130. elif code == "kapatallteamcommand":
  1131. kapat = ["1","2","3","4","5","6","7","8"]
  1132. if self.equipeon:
  1133. self.equipeon = False
  1134. self.TFMINT.sendCloserankteam()
  1135. for x in kapat:
  1136. self.sendData("\x1d\x16", struct.pack("!l", int(x)), True)
  1137. elif code == "kapatalltribulleoptions":
  1138. self.TFMINT.sendCloserankteam()
  1139. elif code.startswith("opentribulleoptions-"):
  1140. name=code.split("-")[1]
  1141. args=self.argsforequipecommand.split(",")
  1142. self.argsforequipecommand=str(args[0])+","+str(name)
  1143. self.TFMINT.sendTribulleOptions("Cambiar rank de "+str(name))
  1144. elif code.startswith("invteam"):
  1145. rlist=self.argsforequipecommand.split(",")
  1146. name=str(rlist[1])
  1147. rank=int(rlist[0])
  1148. if name != "_" and rank != 0:
  1149. if rank in [210]:rank="Admin"
  1150. elif rank in [208]:rank="Cord"
  1151. elif rank in [206]:rank="Smod"
  1152. elif rank in [205]:rank="Mod"
  1153. elif rank in [202]:rank="Vip"
  1154. elif rank in [203]:rank="Mapc"
  1155. elif rank in [201]:rank="norm"
  1156. self.TFMINT.sendRankforname(name,rank)
  1157. self.TFMINT.sendRefeshEquipe()
  1158. self.argsforequipecommand="0,_"
  1159. self.TFMINT.sendCloserankteam()
  1160. elif code.startswith("selecttype-"):
  1161. rlist=code.split("-")
  1162. id=int(rlist[1])
  1163. name=str(rlist[2])
  1164. if id in [10]:y=120
  1165. elif id in [8]:y=144
  1166. elif id in [6]:y=169
  1167. elif id in [5]:y=194
  1168. elif id in [3]:y=220
  1169. elif id in [2]:y=245
  1170. elif id in [1]:y=270
  1171. else:y=1000
  1172. self.TFMINT.sendSelectedOptions(id,y,2)
  1173. elif code.startswith("spinwheel-"):
  1174. event = code.split("-")[1]
  1175. self.SpinWheel.getevent(event)
  1176. elif code.startswith("UPGrade-"):
  1177. self.TFMGrade.sendUpGradeCode(code[8:])
  1178. elif code.startswith("Avatar-"):
  1179. self.TFMAvatar.sendAvatarCode(code[7:])
  1180. elif lencode == 5: #remove msg
  1181. kapat = ["1","2","3","4"]
  1182. for x in kapat:
  1183. self.sendData("\x1d\x16", struct.pack("!l", int(x)), True)
  1184. if self.room.isMiniGame:
  1185. try:
  1186. self.room.GameScript.eventPopupAnswer(popupID, self.username, answer)
  1187. except:
  1188. pass
  1189.  
  1190. elif eventToken2 == Tokenbase.Lua['eventTextAreaCallback']:
  1191. packet = self.parseByte.ByteArray(data)
  1192. textAreaID = packet.readInt()
  1193. event = packet.readUTF()
  1194.  
  1195. if self.room.isMiniGame:
  1196. try:
  1197. self.room.GameScript.eventTextAreaCallback(textAreaID, self.username, event)
  1198. except:
  1199. pass
  1200.  
  1201. else:
  1202. if Tokenbase.Debug:
  1203. sendDebug(self.username, eventTokens, 'Lua', data)
  1204.  
  1205. elif eventToken1 == Tokenbase.System['system']:
  1206. if eventToken2 == Tokenbase.System['hardmode']:
  1207. packet = self.parseByte.ByteArray(data)
  1208. mode = packet.readByte()
  1209. if self.micesaves >= 0:
  1210. self.hardMode = mode
  1211. self.sendHardMode(mode)
  1212.  
  1213. elif eventToken2 == Tokenbase.System['color']:
  1214. if self.micesaves >= 1:
  1215. packet = self.parseByte.ByteArray(data)
  1216. hexColor = packet.readInt()
  1217. color = str(hex(hexColor)).split('x')[1]
  1218. if color != self.color2:
  1219. self.server.mouseColorInfo(False, self.username, [self.color1, color])
  1220. self.color2 = color
  1221.  
  1222. elif eventToken2 == Tokenbase.System['send_email']:
  1223. if self.privilegeLevel != 0:
  1224. packet = self.parseByte.ByteArray(data)
  1225. email = packet.readUTF()
  1226. lang = packet.readUTF()
  1227.  
  1228. if not self.ValidatedEmail:
  1229. if not self.checkDuplicateEmail(email):
  1230. if self.checkValidEmail(email):
  1231. self.EmailAddress = email
  1232. self.LastEmailCode = str(self.GetRandomChars(5)).upper()
  1233. self.sendData("\x1A"+"\x04",["<VP> Hola <CH>"+self.username+" <VP>su codigo es: <CH>"+str(self.LastEmailCode)+""])
  1234. self.sendEmailSent()
  1235. else:
  1236. self.sendEmailAddrAlreadyUsed()
  1237. else:
  1238. self.sendEmailAddrAlreadyUsed()
  1239.  
  1240. elif eventToken2 == Tokenbase.System['send_validate']:
  1241. if self.privilegeLevel != 0:
  1242. packet = self.parseByte.ByteArray(data)
  1243. code = packet.readUTF()
  1244.  
  1245. if not self.ValidatedEmail:
  1246. if code.upper() == self.LastEmailCode:
  1247. self.Database.execute('UPDATE users SET Email = ? WHERE name = ?', [self.EmailAddress, self.username])
  1248. self.Database.execute('UPDATE users SET EmailInfo = ? WHERE name = ?', ['True', self.username])
  1249. self.ValidatedEmail = True
  1250. self.sendEmailValidated()
  1251. self.sendEmailValidatedDialog()
  1252. if not self.checkInShop('209'):
  1253. if self.shopitems == '':
  1254. self.shopitems = str('209')
  1255. else:
  1256. self.shopitems = self.shopitems + ',209'
  1257. self.sendAnimZelda(self.playerCode, '2', '9')
  1258. self.checkUnlockShopTitle()
  1259. self.shopcheese += 40
  1260. else:
  1261. self.sendEmailCodeInvalid()
  1262.  
  1263. elif not self.ValidatedPassChange:
  1264. if code.upper() == self.LastEmailCode:
  1265. self.ValidatedPassChange = True
  1266. self.sendEmailValidatedDialog()
  1267. else:
  1268. self.sendEmailCodeInvalid()
  1269.  
  1270. elif eventToken2 == Tokenbase.System['send_code']:
  1271. if self.privilegeLevel != 0:
  1272. packet = self.parseByte.ByteArray(data)
  1273. lang = packet.readUTF()
  1274. codeType = packet.readByte()
  1275.  
  1276. if codeType == 2:
  1277. if not self.ValidatedEmail:
  1278. p = packet = self.parseByte.ByteArray()
  1279. p.writeByte(0)
  1280. p.writeUTF("")
  1281.  
  1282. self.sendData('\x1c\x11', p.toString(), True)
  1283. else:
  1284. self.sendData('\x1c\x0c', '\x01', True)
  1285. return
  1286.  
  1287. self.LastEmailCode = str(self.GetRandomChars(5))
  1288. if Tokenbase.Debug:
  1289. print 'Email Code [%s]' % self.LastEmailCode
  1290. self.sendData("\x1A"+"\x04",["<VP> Hola <CH>"+self.username+" <VP>su codigo es: <CH>"+str(self.LastEmailCode)+""])
  1291. self.sendValidationCodeDialog()
  1292.  
  1293. elif eventToken2 == Tokenbase.System['change_password']:
  1294. if self.privilegeLevel != 0:
  1295. p = self.parseByte.ByteArray(data)
  1296. passwordHash = p.readUTF()
  1297. PassHash = p.readUTF()
  1298.  
  1299. if self.ValidatedPassChange:
  1300. self.ValidatedPassChange = False
  1301. passwordHash = hashlib.sha512(passwordHash).hexdigest()
  1302. self.Database.execute('UPDATE users SET password = ?, passwordHash = ? WHERE name = ?', [passwordHash, PassHash, self.username])
  1303.  
  1304. elif eventToken2 == Tokenbase.System['send_recovery']:
  1305. packet = self.parseByte.ByteArray(data)
  1306. name = packet.readUTF()
  1307. address = packet.readUTF()
  1308. if not name.startswith('*'):
  1309. name = name.lower().capitalize()
  1310. if self.checkEmailAddrrsSelf(address, name):
  1311. self.UsernameRecoveryPass = name
  1312. self.sendEmailRequestedCodeForChange()
  1313. self.EmailAddress = address
  1314. self.LastEmailCode = str(self.GetRandomChars(5))
  1315. self.sendData("\x1a"+"\x1a",["<VP> Hola <CH>"+self.username+" <VP>su codigo es: <CH>"+str(self.LastEmailCode)+""])
  1316. else:
  1317. self.sendEmailRequestedCodeForChangeInvalid()
  1318. else:
  1319. self.sendEmailRequestedCodeForChangeInvalid()
  1320.  
  1321. elif eventToken2 == Tokenbase.System['recovery_validation']:
  1322. packet = self.parseByte.ByteArray(data)
  1323. code = packet.readUTF()
  1324. if code.upper() == self.LastEmailCode:
  1325. self.ValidatedPassChange = True
  1326. self.sendRecoveryEmailValidatedDialog()
  1327. else:
  1328. self.sendEmailRequestedCodeForChangeInvalid()
  1329.  
  1330. elif eventToken2 == Tokenbase.System['recovery_newpassword']:
  1331. packet = self.parseByte.ByteArray(data)
  1332. password = packet.readUTF()
  1333. if self.ValidatedPassChange:
  1334. self.ValidatedPassChange = False
  1335. self.Database.execute('UPDATE users SET passwordHash = ? WHERE name = ?', (password, self.UsernameRecoveryPass))
  1336.  
  1337. elif eventToken2 == Tokenbase.System['info']:
  1338. packet = self.parseByte.ByteArray(data)
  1339. realLangue = packet.readUTF()
  1340. OSVersion = packet.readUTF()
  1341. FlashVersion = packet.readUTF()
  1342.  
  1343. elif eventToken2 == Tokenbase.System['log']:
  1344. packet = self.parseByte.ByteArray(data)
  1345. token1 = packet.readByte()
  1346. token2 = packet.readByte()
  1347. oldToken1 = packet.readByte()
  1348. oldToken2 = packet.readByte()
  1349. error = packet.readUTF()
  1350.  
  1351. if Tokenbase.Debug:
  1352. if token1 == 1 and token2 == 1:
  1353. pass
  1354. #print "WARNING: [OLDPROTOCOL] GameLog Error: Token1: " + repr(chr(oldToken1)) + " Token2: " + repr(chr(oldToken2)) + " Error: " + error
  1355. else:
  1356. pass
  1357. #print "WARNING: GameLog Error: Token1: " + repr(chr(token1)) + " Token2: " + repr(chr(token2)) + " Error: " + error
  1358.  
  1359.  
  1360.  
  1361. else:
  1362. if Tokenbase.Debug:
  1363. sendDebug(self.username, eventTokens, 'System', data)
  1364.  
  1365. elif eventToken1 == Tokenbase.Transformice['trans']:
  1366. if eventToken2 == Tokenbase.Transformice['change']:
  1367. packet = self.parseByte.ByteArray(data)
  1368. code = packet.readShort()
  1369.  
  1370. if code not in (48, 49, 50, 51, 52, 53):
  1371. code = 53
  1372.  
  1373. packet2 = self.parseByte.ByteArray()
  1374. packet2.writeInt(self.playerCode)
  1375. packet2.writeShort(code)
  1376. if self.room.currentWorld in range(200, 211) or self.privilegeLevel == 10:
  1377. if self.isAfk:
  1378. self.isAfk = False
  1379. if not self.isDead:
  1380. self.room.sendAllBin('\x1b\x0b', packet2.toString())
  1381. p = self.parseByte.ByteArray(data)
  1382. code = p.readShort()
  1383. if not self.isDead and not self.room.isRacing:
  1384. if code == 1 or code == 5 or code == 8 or code == 11 or code == 20:
  1385. id = 0
  1386. x = 0
  1387. y = 0
  1388. vx = 0
  1389. vy = 0
  1390.  
  1391. if code == 1:
  1392. id = 65
  1393. elif code == 5:
  1394. id = 6
  1395. elif code == 8:
  1396. id = 89
  1397. elif code == 11:
  1398. id = 90
  1399. elif code == 20:
  1400. id = 33
  1401.  
  1402. if self.movingRight:
  1403. x = self.pX + 90
  1404. y = self.pY + 40
  1405. vx = 5
  1406. elif self.movingLeft:
  1407. x = self.pX - 10
  1408. y = self.pY + 40
  1409. vx = -5
  1410. if code == 11:
  1411. vx = 0
  1412.  
  1413. wp = self.parseByte.ByteArray()
  1414. wp.writeInt(1)
  1415. wp.writeShort(id)
  1416. wp.writeShort(x)
  1417. wp.writeShort(y)
  1418. wp.writeShort(0)
  1419. wp.writeByte(vx)
  1420. wp.writeByte(-10)
  1421. wp.writeByte(1)
  1422. wp.writeByte(0)
  1423. self.room.sendAllBin('\x05\x14', wp.toString())
  1424.  
  1425. if code == 11:
  1426. self.score -= 1
  1427. if self.score == 0:
  1428. self.score = 0
  1429. self.sendPlayerDied(self.playerCode, self.score)
  1430. self.isDead = True
  1431. self.room.checkShouldChangeWorld()
  1432.  
  1433.  
  1434.  
  1435. else:
  1436. if Tokenbase.Debug:
  1437. sendDebug(self.username, eventTokens, 'Inventario', data)
  1438. elif eventToken1 == Tokenbase.Mulodrome['mulodrome']:
  1439. if eventToken2 == Tokenbase.Mulodrome['join']:
  1440. packet = self.parseByte.ByteArray(data)
  1441. team = packet.readByte()
  1442. pos = packet.readByte()
  1443.  
  1444. if self.username in self.room.TeamDrome:
  1445. currentTeam, currentPos = self.room.TeamDrome[self.username]['team'], self.room.TeamDrome[self.username]['pos']
  1446. packet = self.parseByte.ByteArray()
  1447. packet.writeByte(currentTeam)
  1448. packet.writeByte(currentPos)
  1449. self.room.sendAllBin('\x1e\x10', packet.toString())
  1450.  
  1451. packet = self.parseByte.ByteArray(data)
  1452. packet.writeInt(self.cppid)
  1453. packet.writeUTF(self.username)
  1454. packet.writeUTF(self.TribeName)
  1455. self.room.sendAllBin('\x1e\x0f', packet.toString())
  1456.  
  1457. self.room.TeamDrome[self.username]['team'], self.room.TeamDrome[self.username]['pos'] = team, pos
  1458. else:
  1459. packet = self.parseByte.ByteArray(data)
  1460. packet.writeInt(self.cppid)
  1461. packet.writeUTF(self.username)
  1462. packet.writeUTF(self.TribeName)
  1463. self.room.sendAllBin('\x1e\x0f', packet.toString())
  1464.  
  1465. if len(self.room.TeamDrome) < 12:
  1466. self.room.TeamDrome[self.username] = {'id': self.playerCode,
  1467. 'tribe': str(self.TribeName),
  1468. 'team': team,
  1469. 'pos': pos}
  1470.  
  1471. elif eventToken2 == Tokenbase.Mulodrome['leave']:
  1472. packet = self.parseByte.ByteArray(data)
  1473. team = packet.readByte()
  1474. pos = packet.readByte()
  1475.  
  1476. for username, values in self.room.TeamDrome.items():
  1477. if values['team'] == team:
  1478. if values['pos'] == pos:
  1479. self.room.sendAllBin('\x1e\x10', data)
  1480. try:
  1481. del self.room.TeamDrome[username]
  1482. except:
  1483. pass
  1484.  
  1485. break
  1486. break
  1487. break
  1488.  
  1489. elif eventToken2 == Tokenbase.Mulodrome['play']:
  1490. nameWithout, myName = str(self.room.namewithout).lower(), str(self.username).lower()
  1491.  
  1492. if not nameWithout.startswith('*'):
  1493. if nameWithout.startswith(myName):
  1494. can = True
  1495. elif nameWithout.startswith('*' + myName):
  1496. can = True
  1497.  
  1498. if can:
  1499. if not self.room.isMulodrome:
  1500. self.room.sendAllBin('\x1e\r', None)
  1501. self.room.isRacing = True
  1502. self.room.isMulodrome = True
  1503. self.room.roundTime = 60
  1504. self.room.pTeamBlue = 0
  1505. self.room.pTeamRed = 0
  1506. self.room.currentRound = 0
  1507. self.room.killAllNoDie()
  1508. else:
  1509. self.sendData('\x1e\r', None, True)
  1510.  
  1511. elif eventToken2 == Tokenbase.Mulodrome['close']:
  1512. self.room.LeaderDrome = None
  1513. self.room.isRacing = False
  1514. self.room.isMulodrome = False
  1515. self.room.roundTime = 120
  1516. self.room.TeamDrome = {}
  1517. self.room.pTeamBlue = 0
  1518. self.room.pTeamRed = 0
  1519. self.room.currentRound = 0
  1520. self.room.sendAllBin('\x1e\r', None)
  1521.  
  1522. elif eventToken2 == Tokenbase.Mulodrome['ModeCafe']:
  1523. packet = self.parseByte.ByteArray(data)
  1524. isOpen = packet.readBoolean()
  1525.  
  1526. if isOpen:
  1527. self.sendLoadCafeMode()
  1528. self.modoCafe = True
  1529. else:
  1530. self.modoCafe = False
  1531. self.cafeID = 0
  1532.  
  1533. elif eventToken2 == Tokenbase.Mulodrome['ReloadCafe']:
  1534. self.sendLoadCafeMode()
  1535.  
  1536. elif eventToken2 == Tokenbase.Mulodrome['CreateCafeTopic']:
  1537. packet = self.parseByte.ByteArray(data)
  1538. message = packet.readUTF()
  1539. title = packet.readUTF()
  1540. time = time=int(str(getTime()).split(".")[0])
  1541.  
  1542. self.sendCreateNewTopicForCafe(message, title, self.username, time)
  1543.  
  1544. elif eventToken2 == Tokenbase.Mulodrome['SelectCafe']:
  1545. packet = self.parseByte.ByteArray(data)
  1546. chatID = packet.readInt()
  1547.  
  1548. self.sendOpenChatCafe(chatID)
  1549.  
  1550. elif eventToken2 == Tokenbase.Mulodrome['AddCommentCafe']:
  1551. packet = self.parseByte.ByteArray(data)
  1552. chatID = packet.readInt()
  1553. message = packet.readUTF()
  1554. time = int(str(getTime()).split(".")[0])
  1555.  
  1556. self.sendNewCommentCafe(chatID, message, self.username, time)
  1557.  
  1558. elif eventToken2 == Tokenbase.Mulodrome['AddPoints']:
  1559. packet = self.parseByte.ByteArray(data)
  1560. postID = packet.readInt()
  1561. commentID = packet.readInt()
  1562. mode = packet.readByte()
  1563.  
  1564. self.sendPoinsforcomments(postID, commentID, mode)
  1565. else:
  1566. if Tokenbase.Debug:
  1567. sendDebug(self.username, eventTokens, 'Mulodrome', data)
  1568.  
  1569. elif eventToken1 == Tokenbase.Tribulle['tribulle']:
  1570. if eventToken2 == Tokenbase.Tribulle['parse']:
  1571. packet = self.parseByte.ByteArray(data)
  1572. code = packet.readShort()
  1573.  
  1574. self.Tribulle.parseData(code, data[2:])
  1575. else:
  1576. if Tokenbase.Debug:
  1577. sendDebug(self.username, eventTokens, 'Tribulle', data)
  1578. else:
  1579. if Tokenbase.Debug:
  1580. sendDebug(self.username, eventTokens, 'Unknown', data)
  1581. return
Add Comment
Please, Sign In to add comment