Guest User

Untitled

a guest
Jul 1st, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 101.74 KB | None | 0 0
  1. #coding: utf-8
  2. import time, re, random, json, os, glob, sys, urllib2, urllib, logging, struct, platform, subprocess, binascii, base64, hashlib
  3. from datetime import datetime
  4. from datetime import timedelta
  5. from twisted.internet import reactor
  6.  
  7. class ParseCommands:
  8. def __init__(self, c):
  9. self.c = c
  10. self.parseByte = c.parseByte
  11. self.Database = c.Database
  12. self.admins = c.server.ParseBase.admins
  13. self.currentArgsCount = 0
  14.  
  15. def requireLevel(self, level, InList = False, IsMC = False):
  16. if not InList:
  17. if not IsMC:
  18. if self.c.privilegeLevel < level:
  19. raise UserWarning
  20. else:
  21. return True
  22. elif self.c.privilegeLevel < level:
  23. raise UserWarning
  24. else:
  25. return True
  26. elif self.c.username in self.admins:
  27. if not IsMC:
  28. if self.c.privilegeLevel < level:
  29. raise UserWarning
  30. else:
  31. return True
  32. elif self.c.privilegeLevel < level:
  33. raise UserWarning
  34. else:
  35. return True
  36.  
  37. def lenEvent(self, n, InType = False):
  38. if not InType:
  39. return self.eventCount is n
  40. for x in n:
  41. return self.eventCount is x
  42.  
  43. def getMessage(self, ID):
  44. return open('./files/text_tools/commands/#%s.lua' % ID).read()
  45.  
  46. def requireNoSouris(self, playerName):
  47. if playerName.startswith("*"):
  48. raise UserWarning
  49. else:
  50. return True
  51.  
  52. def requireArgs(self, argsCount):
  53. if self.currentArgsCount < argsCount:
  54. raise UserWarning
  55. else:
  56. return True
  57.  
  58. def parseCommand(self, event, event_raw, EVENTRAWSPLIT, EVENTCOUNT):
  59. if self.c.cheesecount >= 5:
  60. values = event.split(" ")
  61. event = values[0].lower()
  62. args = values[1:]
  63. argsCount = len(args)
  64. argsNotSplited = " ".join(args)
  65. self.currentArgsCount = argsCount
  66. self.eventCount = len(values)
  67.  
  68. if argsCount == 0:
  69. if event in ('vanilla', 'bootcamp', 'racing', 'defilante', 'tutorial', 'survivor', 'editeur', 'totem', 'modemusique', 'village'):
  70. if event == 'tutorial':
  71. message = '{p}[Tutorial] {n}'.format(p=chr(3), n=self.c.username)
  72. self.c.enterRoom(message)
  73. elif event == 'editeur' or event == 'editor':
  74. self.requireLevel(1)
  75. message = '{p}[Editeur] {n}'.format(p=chr(3), n=self.c.username)
  76. self.c.enterRoom(message)
  77. self.c.sendData('\x0e\x0e', [])
  78. elif event == 'totem':
  79. self.requireLevel(1)
  80. if self.c.micesaves >= 1:
  81. message = '{p}[Totem] {n}'.format(p=chr(3), n=self.c.username)
  82. self.c.enterRoom(message)
  83. elif event == 'modemusique':
  84. self.c.enterRoom(self.c.server.recommendRoomPrefixed(self.c.Langue, 'music'))
  85. else:
  86. self.c.enterRoom(self.c.server.recommendRoomPrefixed(self.c.Langue, event))
  87. elif event == 'pw':
  88. roomname, username = str(self.c.room.namewithout).lower(), str(self.c.username).lower()
  89. if not roomname.startswith('*'):
  90. if roomname.startswith(username):
  91. self.c.room.isPasswordRoom = False
  92. self.c.sendMessage('Password disabled.')
  93. elif roomname.startswith('*' + username):
  94. self.c.room.isPasswordRoom = False
  95. self.c.sendMessage('Password disabled.')
  96. elif event in ('mulodrome', 'teamversus', 'muldrome'):
  97. can = False
  98. roomname, username = str(self.c.room.namewithout).lower(), str(self.c.username).lower()
  99. if not roomname.startswith('*'):
  100. if roomname.startswith(username):
  101. can = True
  102. elif roomname.startswith('*' + username):
  103. can = True
  104. if can:
  105. if self.c.room.LeaderDrome is None:
  106. self.c.sendData('\x1e\x0e', chr(1), True)
  107. self.c.room.LeaderDrome = self.c.username
  108. for playerCode, client in self.c.room.clients.items():
  109. if client.username != self.c.username:
  110. client.sendData('\x1e\x0e', chr(0), True)
  111. else:
  112. self.c.sendMessage('<J>•<N> A sala precisa iniciar com o seu nome para iniciar um mulodrome.\nExemplo: <ROSE>/sala '+username+'\n<N>Depois basta digitar /mulodrome novamente.\n\n<J>Caso tenha dúvidas, digite: /ajudamulodrome.')
  113. elif event in ('np', 'map', 'nexmap', 'killall'):
  114. if not self.c.room.votingMode:
  115. if self.c.privilegeLevel >= 4:
  116. self.c.room.killAll()
  117. elif self.c.room.isTribehouseMap:
  118. if self.c.isInTribe:
  119. if self.c.TribeInfo[9] in '1' or self.c.TribeInfo[8] in '1':
  120. self.c.room.killAll()
  121. else:
  122. self.c.sendTribePermisson()
  123. elif event in ('vamp', 'zumbi'):
  124. if self.c.privilegeLevel >= 2:
  125. packet = self.parseByte.ByteArray()
  126. packet.writeInt(self.c.playerCode)
  127. self.c.room.sendAllBin('\x08B', packet.toString())
  128. self.c.sendMessage('<J>•<N> Agora você é um vampiro.')
  129. elif event in ('modehide', 'modeunhide'):
  130. self.requireLevel(5)
  131. if event == 'modeunhide':
  132. if self.c.privilegeLevel in (8, 6, 5, 4):
  133. if self.c.Langue in self.c.server.ModList:
  134. if self.c.username in self.c.server.ModList[self.c.Langue]:
  135. pass
  136. else:
  137. self.c.server.ModList[self.c.Langue].append(self.c.username)
  138. else:
  139. self.c.server.ModList[self.c.Langue] = [self.c.username]
  140. message = '<T>%s <PS>unhide the account in moderator list.' % self.c.username
  141. self.c.sendAllModMessageChannel('Servidor', message)
  142. else:
  143. try:
  144. if self.c.Langue in self.c.server.ModList:
  145. self.c.server.ModList[self.c.Langue].remove(self.c.username)
  146. self.c.server.checkIfModOnlines()
  147. except:
  148. self.c.server.checkIfModOnlines()
  149. message = '<T>%s <PS>hide the account in moderator list.' % self.c.username
  150. self.c.sendAllModMessageChannel('Servidor', message)
  151. elif event == 'blacklist':
  152. if self.c.privilegeLevel >= 5:
  153. message = ''
  154. message += '<p align = \'center\'><font size = \'15\'><N>Blacklist - TopMice </font></p><p align=\'left\'><font size = \"12"><br>'
  155. message += '<J> '+ str(self.c.server.textToolsSiteList['server']['blacklist']) + ' '
  156. self.c.sendLogMessage(message)
  157. elif event == 'whitelist':
  158. if self.c.privilegeLevel >= 5:
  159. message = ''
  160. message += '<p align = \'center\'><font size = \'15\'><N>Whitelist - TopMice </font></p><p align=\'left\'><font size = \"12"><br><br>'
  161. message += '<J> '+ str(self.c.server.textToolsSiteList['server']['whitelist']) + ' '
  162. self.c.sendLogMessage(message)
  163. elif event == 'suspectwords':
  164. if self.c.privilegeLevel >= 5:
  165. message = ''
  166. message += '<p align = \'center\'><font size = \'15\'><N>Palavras Suspeitas - TopMice </font></p><p align=\'left\'><font size = \"12"><br><br>'
  167. message += '<J> '+ str(self.c.server.textToolsSiteList['server']['suspectwords']) + ' '
  168. self.c.sendLogMessage(message)
  169. elif event == 'ipbans':
  170. if self.c.privilegeLevel >= 5:
  171. message = ''
  172. message += '<p align = \'center\'><font size = \'15\'><N>IPs Proibidos - TopMice </font></p><p align=\'left\'><font size = \"12"><br><br>'
  173. message += '<J> '+ str(self.c.server.textToolsSiteList['server']['ipbans']) + ' '
  174. self.c.sendLogMessage(message)
  175. elif event == 'allowdomain':
  176. if self.c.privilegeLevel >= 5:
  177. message = ''
  178. message += '<p align = \'center\'><font size = \'15\'><N>Domínios liberados - TopMice </font></p><p align=\'left\'><font size = \"12"><br><br>'
  179. message += '<J> '+ str(self.c.server.textToolsSiteList['server']['allowdomain']) + ' '
  180. self.c.sendLogMessage(message)
  181. elif event == 'hide':
  182. if self.c.privilegeLevel >= 5:
  183. self.c.isHidden = True
  184. self.c.sendPlayerDisconnect(self.c.playerCode)
  185. self.c.sendData("\x06\x14", ["1", 'Agora você está invisível, digite /unhide para voltar a ser visível.'])
  186. elif event == 'unhide':
  187. if self.c.privilegeLevel >= 5:
  188. self.c.isHidden = False
  189. self.c.enterRoom(self.c.roomname)
  190. self.c.sendData("\x06\x14", ["1", 'Você está visível novamente.'])
  191. elif event == "vsha":
  192. if self.c.privilegeLevel >= 5:
  193. self.c.sendShamanCode(self.c.playerCode)
  194. self.c.isShaman = True
  195. self.c.sendData("\x06" + "\x14", ["1", "<CH>^_^!"])
  196. elif event in ('refshop', 'refshp'):
  197. if self.c.privilegeLevel >= 10:
  198. self.c.server.parseShopFile()
  199. self.c.server.parseShamanShopFile()
  200. self.c.server.sendRefreshShop()
  201. self.c.sendMessage('<J>•<N> Shop atualizado.')
  202. elif event == "ls":
  203. if self.c.privilegeLevel >= 4:
  204. data = {}
  205. count = [0, 0]
  206. for room in self.c.server.rooms.values():
  207. for sent in room.clients.values():
  208. count[0] += 1
  209. if room.name.startswith("*") and not room.name.startswith("*\x03"):
  210. rooms = [["ALL", room.name], room.getPlayerCount()]
  211. elif room.name.startswith("\x03") or room.name.startswith("*\x03"):
  212. if room.name.startswith("*\x03"):
  213. rooms = [["TRIBEHOUSE", room.name[1:]], room.getPlayerCount()]
  214. else:
  215. rooms = [["PRIVATE", room.name[1:]], room.getPlayerCount()]
  216. else:
  217. rooms = [room.name.split("-"), room.getPlayerCount()]
  218. data[rooms[0][1]] = "%s : %s" %(rooms[0][0], rooms[1])
  219. count[1] += 1
  220. new = ""
  221. for roomname, info in data.items():
  222. info = info.split(" : ")
  223. language = info[0]
  224. thecount = info[1]
  225. new += "[<J>%s<BL>] <b>%s</b> : %s\n" %(language, roomname, thecount)
  226. new = new + "<font color='#00C0FF'>Total de onlines/salas : </font><J><b>%i</b><font color='#00C0FF'>/</font><J><b>%i</b>" % (count[0], count[1])
  227. self.c.sendMessage(new)
  228. else:
  229. self.c.sendMessage("<ROSE>[OPS] <N>Comando apenas para Equipe")
  230. elif event in ('musique', 'music', 'stop'):
  231. if self.c.privilegeLevel >= 4:
  232. self.c.sendStopMusic()
  233. elif self.c.room.isTribehouseMap:
  234. if self.c.isInTribe:
  235. if self.c.TribeInfo[7] in '1':
  236. self.c.sendStopMusic()
  237. elif event == 'meep':
  238. if self.c.privilegeLevel >= 2:
  239. if self.c.isShaman:
  240. self.c.sendData("\x08'", binary=True)
  241. self.c.canMeep = True
  242. self.c.sendMessage('<J>•<N> Meep foi ativado!')
  243. else:
  244. self.c.sendMessage('<J>•<N> Você não é shaman para ativar este comando.')
  245. elif event == 'lojinha' or event == 'loja':
  246. if self.c.privilegeLevel >= 1:
  247. self.c.sendLoja(0)
  248. elif event == 'ajuda' or event == 'help':
  249. if self.c.privilegeLevel >= 1:
  250. self.c.sendNovidades(0)
  251. elif event == 'novidades':
  252. if self.c.privilegeLevel >= 1:
  253. self.c.sendMessage('<J>•<N> <ROSE>Novidades do servidor:\n<N>Lojinha editada.\nMapEditor Desbugado.\nPrêmio por hora online diminuido.\nComando /novidades adicionado.\n\n')
  254. elif event == 'equipe' or event == 'staff':
  255. if self.c.privilegeLevel >= 1:
  256. self.c.sendEquipe(0)
  257. elif event == 'roleta' or event == 'sorteio':
  258. if self.c.privilegeLevel >= 1:
  259. self.c.sendRoleta(0)
  260. elif event == 'ranking':
  261. self.c.sendRanking(0)
  262. elif event == 'selfie':
  263. if self.c.privilegeLevel >= 1:
  264. self.c.room.sendAllBin('\x1f\x03', struct.pack('!ih', int(self.c.playerCode), 21))
  265. elif event == 'vips':
  266. if self.c.privilegeLevel >= 1:
  267. msg = "<VP>VIPS TOPMICE\n\n"
  268. self.Database.execute('select * from users where privLevel == 2')
  269. rrfRows = self.Database.fetchall()
  270. if rrfRows is None:
  271. Message='Empty'
  272. else:
  273. for rrf in rrfRows:
  274. name=rrf[0]
  275. privlevel=rrf[3]
  276. if privlevel==2:
  277. if self.c.server.checkAlreadyConnectedAccount(name):
  278. status= "<N>[<VP>Online<N>]<N>"
  279. else:
  280. status= "<N>[<R>Offline<N>]<N>"
  281. inf= '\n<V>'+str(name)+' - <N><CH>VIP<V> - '+str(status)+' \n'
  282. msg+=inf
  283. self.c.sendLogMessage(msg)
  284. elif event == 'bcstats':
  285. if self.c.privilegeLevel != 0:
  286. count = self.c.server.getBootcampCount(self.c.username)
  287. if self.c.Langue.lower() == 'br':
  288. self.c.sendMessage('Bootcamps Completados: <J>' + str(count))
  289. else:
  290. self.c.sendMessage('Completed Bootcamps: <J>' + str(count))
  291. elif event == 'cat':
  292. if self.c.privilegeLevel >= 10:
  293. self.c.room.sendAllBin('\x05\x2b' + struct.pack('!ib', self.c.playerCode,1))
  294. elif event == 'sauvertotem':
  295. if self.c.room.isTotemEditeur:
  296. self.c.server.setTotemData(self.c.username, self.c.Totem[0], self.c.Totem[1])
  297. self.c.STotem[0] = self.c.Totem[0]
  298. self.c.STotem[1] = self.c.Totem[1]
  299. self.c.sendPlayerDied(self.c.playerCode, self.c.score)
  300. self.c.enterRoom(self.c.server.recommendRoom(self.c.Langue))
  301. elif event == 'resettotem':
  302. if self.c.room.isTotemEditeur:
  303. self.c.Totem = [0, '']
  304. self.c.RTotem = True
  305. self.c.isDead = True
  306. self.c.sendPlayerDied(self.c.playerCode, self.c.score)
  307. self.c.room.checkShouldChangeWorld()
  308. elif event == 'avl':
  309. if self.c.privilegeLevel >= 4:
  310. self.c.enterRoom('\x03'+'[MAPCREW]')
  311. self.c.sendMessage('<J>•<N> Bem vindo a sala de avaliação de mapas. (Somente mapcrews)')
  312. else:
  313. self.c.sendMessage('<J>•<N> Desculpe, apenas MapCrews podem entrar aqui.')
  314. elif event == "mod" or event == "mods" or event == "modsonline":
  315. if self.c.privilegeLevel != 1:
  316. name = "There isn't any mod online."
  317. for room in self.c.server.rooms.values():
  318. for playerCode, client in room.clients.items():
  319. if not client.username.startswith("Cfmbot"):
  320. if client.privilegeLevel in [5,5]:
  321. if client.username == ", , ":
  322. if name == "There isn't any mod online.":
  323. name = "<CH>"+client.username
  324. else:
  325. name = name+"<ROSE>, <CH>"+client.username
  326. else:
  327. if name == "There isn't any mod online.":
  328. name = "<BV>"+client.username
  329. else:
  330. name = name+"<ROSE>, <R>"+client.username
  331. elif client.privilegeLevel in [5,5]:
  332. if name == "There isn't any mod online.":
  333. name = "<VP>"+client.username
  334. else:
  335. name = name+"<ROSE>, <VP>"+client.username
  336. msg = name
  337. self.c.sendMessage("Moderadores conectados:\n<ROSE>"+msg)
  338. elif event in ('kill', 'suicide', 'bubbles', 'die', 'mort'):
  339. if not self.c.isDead:
  340. self.c.isDead = True
  341. self.c.score -= 1
  342. if self.c.score < 0:
  343. self.c.score = 0
  344. self.c.sendPlayerDied(self.c.playerCode, self.c.score)
  345. self.c.room.checkShouldChangeWorld()
  346. elif event in ('re', 'respawn'):
  347. if self.c.privilegeLevel >= 2:
  348. if self.c.room.isNorm or self.c.room.isRacing or self.c.room.isVanilla or self.c.room.isDefilante:
  349. if self.c.isDead:
  350. self.c.room.respawnSpecific(self.c.username)
  351. self.c.sendMessage("<V>Você reviveu ^_^")
  352. if self.c.room.isSurvivor:
  353. self.c.sendMessage("<V>Comando desabilitado para <b>Modo Survivor</b>!")
  354. else:
  355. self.c.sendMessage("<V>Comando disponível apenas para <b>VIPs</b>.")
  356.  
  357. elif event == 'shutdown':
  358. if self.c.privilegeLevel >= 10:
  359. self.c.updateSelfSQL()
  360. self.c.sendServerMessage('Servidor reiniciará em 40 segundos.')
  361. self.c.sendMessage('Você executou o comando /shutdown, o servidor será reiniciado.')
  362. self.c.rebootTimer = reactor.callLater(20, self.c.server.stopServer)
  363. elif event in ('title', 'titre', 'titulo'):
  364. cdata, tlist = '', ''
  365. count1, count2 = 0, 0
  366. for i in self.c.titleList:
  367. if ',' in str(i):
  368. t, c = str(i).split(',')
  369. cdata += struct.pack("!hb", int(t), int(c))
  370. count2 += 1
  371. else:
  372. tlist += struct.pack("!h", int(i))
  373. count1 += 1
  374. data = struct.pack("!h", count1) + tlist
  375. data += struct.pack("!h", count2) + cdata
  376. self.c.sendData("\x08\x0E", data, True)
  377.  
  378. elif event == 'meusmapas' or event == 'mymaps' or event == 'mismapas':
  379. if self.c.privilegeLevel >= 1:
  380. found = False
  381. result = ''
  382. self.Database.execute('select * from mapeditor where name = ?', [self.c.username])
  383. rrfRows = self.Database.fetchall()
  384. if rrfRows is None:
  385. if self.c.Langue == 'br':
  386. result = 'Voc\xc3\xaa Ainda N\xc3\xa3o Tem Nenhum Mapa.'
  387. elif self.c.Langue == 'en':
  388. result = "You don't have maps."
  389. elif self.c.Langue == 'es':
  390. result = 'Usted no tiene mapas.'
  391. else:
  392. for rrf in rrfRows:
  393. if not found:
  394. result = 'Mapas:'
  395. found = True
  396. result += '<br>@' + str(rrf[1]) + ' - P' + str(rrf[5])
  397. self.c.sendLogMessage(result)
  398.  
  399.  
  400. elif event == 'pp':
  401. if self.c.privilegeLevel >= 3:
  402. self.c.sendMessage('<ROSE>Comandos de MapCrew:')
  403. self.c.sendMessage('Comandos para avaliar mapas:')
  404. self.c.sendMessage('<J>• /p0 <N>- Mapa em rota\xc3\xa7\xc3\xa3o')
  405. self.c.sendMessage('<J>• /p1 <N>- Permanenete')
  406. self.c.sendMessage('<J>• /p2 <N>- Mapas exclusivos (Eventos)')
  407. self.c.sendMessage('<J>• /p3 <N>- BootCamp')
  408. self.c.sendMessage('<J>• /p4 <N>- Mapa de Shaman')
  409. self.c.sendMessage('<J>• /p5 <N>- Arte')
  410. self.c.sendMessage('<J>• /p6 <N>- Mecanismo')
  411. self.c.sendMessage('<J>• /p7 <N>- Mapa sem Shaman (Racing, Normal)')
  412. self.c.sendMessage('<J>• /p8 <N>- Mapa de cooperação (Dois Shamans)')
  413. self.c.sendMessage('<J>• /p9 <N>- Mapa diverso (Que não se encaixa em nenhuma categoria)')
  414. self.c.sendMessage('<J>• /p10 <N>- Survivor')
  415. self.c.sendMessage('<J>• /p11 <N>- Vampire')
  416. self.c.sendMessage('<J>• /p17 <N>- Racing')
  417. self.c.sendMessage('<J>• /p18 <N>- Defilante')
  418. self.c.sendMessage('<J>• /p22 <N>- Cafofo de Tribo')
  419. self.c.sendMessage('<J>• /p43 <N>- Deletado (Ofensivo)')
  420. self.c.sendMessage('<J>• /p44 <N>- Deletado\n')
  421. self.c.sendMessage('<J>Comandos para deletar mapas:')
  422. self.c.sendMessage('<J>• /del <N>- Deletar Mapa')
  423. self.c.sendMessage('<J>• /harddel <N>- Deletar mapa da DB (Somente para administradores)')
  424. elif event == 'limparchat' or event == 'clear':
  425. if self.c.privilegeLevel >= 5:
  426. self.c.sendAllMessage('\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<N>Chat limpo pelo jogador <V>'+username+'.')
  427. elif event == 'mapranking':
  428. UserList = []
  429. self.Database.execute('select code, yesvotes from mapeditor')
  430. rrfRows = self.Database.fetchall()
  431. if rrfRows is None:
  432. pass
  433. else:
  434. for rrf in rrfRows:
  435. UserList.append(rrf)
  436. MapList = {}
  437. mapListDisp = []
  438. for user in UserList:
  439. MapList[user[0]] = user[1]
  440. mSL = max(MapList.iterkeys(), key=lambda k: MapList[k])
  441. mapListDisp.append([1, mSL, MapList[mSL]])
  442. del MapList[mSL]
  443. mSL = max(MapList.iterkeys(), key=lambda k: MapList[k])
  444. mapListDisp.append([2, mSL, MapList[mSL]])
  445. del MapList[mSL]
  446. mSL = max(MapList.iterkeys(), key=lambda k: MapList[k])
  447. mapListDisp.append([3, mSL, MapList[mSL]])
  448. del MapList[mSL]
  449. mSL = max(MapList.iterkeys(), key=lambda k: MapList[k])
  450. mapListDisp.append([4, mSL, MapList[mSL]])
  451. del MapList[mSL]
  452. mSL = max(MapList.iterkeys(), key=lambda k: MapList[k])
  453. mapListDisp.append([5, mSL, MapList[mSL]])
  454. del MapList[mSL]
  455. mSL = max(MapList.iterkeys(), key=lambda k: MapList[k])
  456. mapListDisp.append([6, mSL, MapList[mSL]])
  457. del MapList[mSL]
  458. mSL = max(MapList.iterkeys(), key=lambda k: MapList[k])
  459. mapListDisp.append([7, mSL, MapList[mSL]])
  460. del MapList[mSL]
  461. mSL = max(MapList.iterkeys(), key=lambda k: MapList[k])
  462. mapListDisp.append([8, mSL, MapList[mSL]])
  463. del MapList[mSL]
  464. mSL = max(MapList.iterkeys(), key=lambda k: MapList[k])
  465. mapListDisp.append([9, mSL, MapList[mSL]])
  466. del MapList[mSL]
  467. mSL = max(MapList.iterkeys(), key=lambda k: MapList[k])
  468. mapListDisp.append([10, mSL, MapList[mSL]])
  469. del MapList[mSL]
  470. self.c.sendData('\x1a' + '\x1a', ["<TI>Ranking De Mapas</TI><br><br><font color='#FFFFFF'>1 - " + str(mapListDisp[0][1]) + ' - ' + str(mapListDisp[0][2]) + '<br><br><J>2 - ' + str(mapListDisp[1][1]) + ' - ' + str(mapListDisp[1][2]) + '<br><br><J>3 - ' + str(mapListDisp[2][1]) + ' - ' + str(mapListDisp[2][2]) + '<br><br><J>4 - ' + str(mapListDisp[3][1]) + ' - ' + str(mapListDisp[3][2]) + '<br><br><J>5 - ' + str(mapListDisp[4][1]) + ' - ' + str(mapListDisp[4][2]) + '<br><br><J>6 - ' + str(mapListDisp[5][1]) + ' - ' + str(mapListDisp[5][2]) + '<br><br><J>7 - ' + str(mapListDisp[6][1]) + ' - ' + str(mapListDisp[6][2]) + '<br><br><J>8 - ' + str(mapListDisp[7][1]) + ' - ' + str(mapListDisp[7][2]) + '<br><br><J>9 - ' + str(mapListDisp[8][1]) + ' - ' + str(mapListDisp[8][2]) + '<br><br><J>10 - ' + str(mapListDisp[9][1]) + ' - ' + str(mapListDisp[9][2]) + '</font>'])
  471. elif event == 'bcranking':
  472. UserList = []
  473. self.Database.execute('select name, bootcamp from users')
  474. rrfRows = self.Database.fetchall()
  475. if rrfRows is None:
  476. pass
  477. else:
  478. for rrf in rrfRows:
  479. UserList.append(rrf)
  480. bcList = {}
  481. bcListDisp = []
  482. for user in UserList:
  483. bcList[user[0]] = user[1]
  484. mSL = max(bcList.iterkeys(), key=lambda k: bcList[k])
  485. bcListDisp.append([1, mSL, bcList[mSL]])
  486. del bcList[mSL]
  487. mSL = max(bcList.iterkeys(), key=lambda k: bcList[k])
  488. bcListDisp.append([2, mSL, bcList[mSL]])
  489. del bcList[mSL]
  490. mSL = max(bcList.iterkeys(), key=lambda k: bcList[k])
  491. bcListDisp.append([3, mSL, bcList[mSL]])
  492. del bcList[mSL]
  493. mSL = max(bcList.iterkeys(), key=lambda k: bcList[k])
  494. bcListDisp.append([4, mSL, bcList[mSL]])
  495. del bcList[mSL]
  496. mSL = max(bcList.iterkeys(), key=lambda k: bcList[k])
  497. bcListDisp.append([5, mSL, bcList[mSL]])
  498. del bcList[mSL]
  499. mSL = max(bcList.iterkeys(), key=lambda k: bcList[k])
  500. bcListDisp.append([6, mSL, bcList[mSL]])
  501. del bcList[mSL]
  502. mSL = max(bcList.iterkeys(), key=lambda k: bcList[k])
  503. bcListDisp.append([7, mSL, bcList[mSL]])
  504. del bcList[mSL]
  505. mSL = max(bcList.iterkeys(), key=lambda k: bcList[k])
  506. bcListDisp.append([8, mSL, bcList[mSL]])
  507. del bcList[mSL]
  508. mSL = max(bcList.iterkeys(), key=lambda k: bcList[k])
  509. bcListDisp.append([9, mSL, bcList[mSL]])
  510. del bcList[mSL]
  511. mSL = max(bcList.iterkeys(), key=lambda k: bcList[k])
  512. bcListDisp.append([10, mSL, bcList[mSL]])
  513. del bcList[mSL]
  514. self.c.sendData('\x1a' + '\x1a', ["<TI>Ranking De Bootcamp</TI><br><br><font color='#FFFFFF'>1 - " + str(bcListDisp[0][1]) + ' - ' + str(bcListDisp[0][2]) + '<br><br><J>2 - ' + str(bcListDisp[1][1]) + ' - ' + str(bcListDisp[1][2]) + '<br><br><J>3 - ' + str(bcListDisp[2][1]) + ' - ' + str(bcListDisp[2][2]) + '<br><br><J>4 - ' + str(bcListDisp[3][1]) + ' - ' + str(bcListDisp[3][2]) + '<br><br><J>5 - ' + str(bcListDisp[4][1]) + ' - ' + str(bcListDisp[4][2]) + '<br><br><J>6 - ' + str(bcListDisp[5][1]) + ' - ' + str(bcListDisp[5][2]) + '<br><br><J>7 - ' + str(bcListDisp[6][1]) + ' - ' + str(bcListDisp[6][2]) + '<br><br><J>8 - ' + str(bcListDisp[7][1]) + ' - ' + str(bcListDisp[7][2]) + '<br><br><J>9 - ' + str(bcListDisp[8][1]) + ' - ' + str(bcListDisp[8][2]) + '<br><br><J>10 - ' + str(bcListDisp[9][1]) + ' - ' + str(bcListDisp[9][2]) + '</font>'])
  515.  
  516. elif event in ('p0', 'p1', 'p2', 'p3', 'p4', 'p5', 'p6', 'p7', 'p8', 'p9', 'p10', 'p11', 'p13', 'p17', 'p18', 'p19', 'p20', 'p22', 'p31', 'p32', 'p41', 'p42', 'p43', 'p44', 'p50', 'p51', 'p52', 'p60', 'p169', 'p170', 'p222'):
  517. if self.c.privilegeLevel >= 4:
  518. perma = str(event).replace('p', '')
  519. canExec = False
  520. self.Database.execute('select * from mapeditor where code = ? AND perma != 22 AND perma != 44 AND perma != 1 AND perma != 2 AND perma != 43 AND name != ?', [self.c.room.ISCM, self.c.username])
  521. rrfRows = self.Database.fetchall()
  522. if rrfRows is None:
  523. canExec = False
  524. else:
  525. for rrf in rrfRows:
  526. canExec = True
  527.  
  528. if canExec or self.c.privilegeLevel >= 4:
  529. perm = perma
  530. name = 'None'
  531. if self.c.room.ISCM != 0:
  532. self.Database.execute('UPDATE mapeditor SET perma = ? WHERE code = ?', [perm, self.c.room.ISCM])
  533. if perm == '0':
  534. name = 'Normal'
  535. elif perm == '1':
  536. name = 'Mapa Protegido'
  537. elif perm == '2':
  538. name = 'Oficial'
  539. elif perm == '3':
  540. name = 'Mapa de Bootcamp'
  541. elif perm == '4':
  542. name = 'Mapa de Shaman'
  543. elif perm == '5':
  544. name = 'Mapa de Arte'
  545. elif perm == '6':
  546. name = 'Mapa de Mecanismo'
  547. elif perm == '7':
  548. name = 'Mapa Racing (Sem shaman)'
  549. elif perm == '8':
  550. name = 'Cooperação - Dois Shamans'
  551. elif perm == '9':
  552. name = 'Mapa Variado'
  553. elif perm == '10':
  554. name = 'Survivor'
  555. elif perm == '11':
  556. name = 'Mapa Vampire'
  557. elif perm == '13':
  558. name = 'Mapa Bootcamp'
  559. elif perm == '17':
  560. name = 'Mapa Racing'
  561. elif perm == '18':
  562. name = 'Mapa Defilante'
  563. elif perm == '19':
  564. name = 'Mapa Music'
  565. elif perm == '22':
  566. name = 'Mapa Cafofo'
  567. elif perm == '32':
  568. name = 'Cooperação - N\xc3\xa3o Est\xc3\xa1 em Rota\xc3\xa7\xc3\xa3o'
  569. elif perm == '42':
  570. name = 'Racing - N\xc3\xa3o Est\xc3\xa1 em Rota\xc3\xa7\xc3\xa3o'
  571. elif perm == '43':
  572. name = 'Deletado - Ofensivo'
  573. elif perm == '44':
  574. name = 'Deletado'
  575. elif perm == '50':
  576. name = 'Modo Ratapult'
  577. elif perm == '51':
  578. name = 'Ratapult Room'
  579. elif perm == '52':
  580. name = 'Music Room'
  581. elif perm == '169':
  582. name = 'Habbit Room'
  583. elif perm == '170':
  584. name = 'Foot Room'
  585. elif perm == '222':
  586. name = 'Mae Day'
  587. self.c.sendAllMessage('Servidor', '<J>' + self.c.username + '<N> validou o mapa de <J>' + str(self.c.server.getMapName(self.c.room.ISCM)) + ' <N>@<J>' + str(self.c.room.ISCM) + '<N> para a categoria <J>' + str(name) + '<N> (P' + str(perm) + ')')
  588. elif event == 'onlines':
  589. if self.c.privilegeLevel >= 1:
  590. self.c.sendMessage('<N>Total de jogadores onlines: <font color="#00BFFF">' + str(self.c.server.getConnectedPlayerCount()) + '')
  591. elif event == 'clearipbans':
  592. if self.c.privilegeLevel >= 10:
  593. self.Database.execute('DELETE FROM ippermaban')
  594. self.c.server.tempIPBanList = []
  595. self.c.server.IPPermaBanCache = []
  596. self.c.sendAllChannel('Servidor', 'Todos ips banidos foram removidos por ' + self.c.username)
  597. elif event == 'log':
  598. if self.c.privilegeLevel >= 5:
  599. loglist = []
  600. self.Database.execute('select * from BanLog')
  601. rrfRows = self.Database.fetchall()
  602. if rrfRows is None:
  603. pass
  604. else:
  605. rrfRowsCopy = (rrfRows)
  606. rrfRowsCopy.reverse()
  607. Row = 0
  608. for rrf in rrfRowsCopy:
  609. Row += 1
  610. fillString = rrf[5]
  611. rrf5=fillString+''.join(["0" for x in range(len(fillString),13)])
  612. if rrf[6]=="Unban":
  613. loglist = loglist+[rrf[1], "", rrf[2], "", "", rrf5]
  614. else:
  615. loglist = loglist+[rrf[1], rrf[8], rrf[2], rrf[3], rrf[4], rrf5]
  616. if Row==200:
  617. break
  618. self.c.sendData('\x1a' + '\x17', loglist)
  619. elif event in ('lsp0', 'lsp1', 'lsp2', 'lsp3', 'lsp4', 'lsp5', 'lsp6', 'lsp7', 'lsp8', 'lsp9', 'lsp10', 'lsp11', 'lsp13', 'lsp17', 'lsp18', 'lsp20', 'lsp22', 'lsp31', 'lsp32', 'lsp41', 'lsp42', 'lsp43', 'lsp44', 'lsp50', 'lsp51', 'lsp52', 'lsp60', 'lsp222'):
  620. if self.c.privilegeLevel>=4:
  621. ident = str(event).replace("lsp", "")
  622. show = False
  623. Perma = ident
  624. mapslist = ""
  625. self.Database.execute('select * from mapeditor where perma = ?', [Perma])
  626. rrfRows = self.Database.fetchall()
  627. if rrfRows is None:
  628. mapslist = "Empty list."
  629. else:
  630. for rrf in rrfRows:
  631. totalvotes = rrf[3] + rrf[4]
  632. if totalvotes == 0:totalvotes = 1
  633. rating = (1.0 * rrf[3] / totalvotes) * 100
  634. rating = str(rating)
  635. rating, adecimal, somejunk = rating.partition(".")
  636. if not show:
  637. mapslist = "<ROSE><TI>Lista de Mapas<BV>(P%s):" % (Perma)
  638. mapslist += "<br>------------------------------------------------"
  639. show = True
  640. mapslist += "<br><J>"+str(rrf[0])+" <BL>- <VP>@"+str(rrf[1])+"<BL> - <J>"+str(totalvotes)+"<BL> - <VP>"+str(rating)+"% <BL>- <R>P"+str(rrf[5])
  641. self.c.sendLogMessage(mapslist)
  642. elif event == 'lsmaps':
  643. if self.c.privilegeLevel >= 4:
  644. mapList = []
  645. self.Database.execute('select code from mapeditor')
  646. rrfRows = self.Database.fetchall()
  647. if rrfRows is None:
  648. pass
  649. else:
  650. for rrf in rrfRows:
  651. mapList.append(rrf[0])
  652. mapsList = str(json.dumps(mapList)).replace('[', '').replace(']', '').replace('"', '').replace(' ', '').replace(',', ',')
  653. if mapsList == '':
  654. mapsList = 'Lista vazia.'
  655. self.c.sendData('\x1a\x1a', [mapsList])
  656. elif event == 'validatemap':
  657. if self.c.privilegeLevel >= 5:
  658. if self.c.room.isEditeur:
  659. if self.c.room.ISCMVdata[7] == 0 and self.c.room.ISCMV != 0:
  660. self.c.room.ISCMVdata[7] = 1
  661. self.c.sendMapValidated()
  662. elif event == "onlines":
  663. self.c.sendMessage('<N>Há atualmente: <font color="#00BFFF">' + str(self.c.server.getConnectedPlayerCount()) + ' onlines.')
  664. elif event == 'perfil':
  665. self.c.sendProfile(self.c.username)
  666. elif event == 'selfie':
  667. if self.c.privilegeLevel >= 1:
  668. self.c.room.sendAllBin("\x1f\x03", struct.pack("!ih", int(self.c.playerCode), 21))
  669.  
  670. else:
  671. if event == "profil" or event == "perfil" or event == "profile":
  672. username = self.c.TFMUtils.parsePlayerName(args[0])
  673. self.c.sendProfile(username)
  674.  
  675. elif event == "pw":
  676. password = args[0]
  677. roomname, username = str(self.c.room.namewithout).lower(), str(self.c.username).lower()
  678. if not username.startswith('*'):
  679. if roomname.startswith(username):
  680. self.c.room.isPasswordRoom = str(password)
  681. self.c.sendMessage('Password : {pw}'.format(pw=str(password)))
  682. elif roomname.startswith('*' + username):
  683. self.c.room.isPasswordRoom = str(password)
  684. self.c.sendMessage('Password : {pw}'.format(pw=str(password)))
  685.  
  686. elif event == "vamp" or event == "zumbie":
  687. self.requireLevel(8)
  688. if self.lenEvent(2):
  689. name = self.c.TFMUtils.parsePlayerName(args[0])
  690. playerCode = self.c.room.getPlayerCode(name.lower().capitalize(), True)
  691. if playerCode != 0:
  692. packet = self.parseByte.ByteArray()
  693. packet.writeInt(playerCode)
  694. self.c.room.sendAllBin('\x08B', packet.toString())
  695. else:
  696. self.c.sendMessage('Fail!')
  697.  
  698. elif event == "ban" or event == "iban":
  699. if self.c.privilegeLevel >= 5:
  700. playerName, hours, reason = '', 0, ''
  701. if EVENTCOUNT == 2:
  702. _, playerName = event_raw.split(' ', 1)
  703. elif EVENTCOUNT == 3:
  704. _, playerName, hours = event_raw.split(' ', 2)
  705. else:
  706. _, playerName, hours, reason = event_raw.split(' ', 3)
  707.  
  708. if _ == 'iban':
  709. reason = chr(3) + reason
  710. if str(hours).isdigit():
  711. hours = int(hours)
  712. else:
  713. hours = 0
  714. if self.c.privilegeLevel in (3,):
  715. if hours >= 2:
  716. hours = 2
  717. if not playerName.startswith('*'):
  718. playerName = playerName.lower().capitalize()
  719. if playerName in self.c.server.ParseBase.admins:
  720. playerName = self.username
  721. hours = 365
  722. reason = 'Por tentar banir um administrador.'
  723. if hours > 2147483647:
  724. self.c.sendMessage("Falta parâmetros!")
  725. elif self.c.server.banPlayer(playerName, hours, reason, self.c.username, True):
  726. message = '%s banned %s for %s hours. Reason: %s' % (self.c.username, playerName, hours, reason)
  727. self.c.sendAllChannel('Servidor', ''+ message +'.')
  728. else:
  729. self.c.sendMessage("O nome de jogador: <V>"+ playerName +"<BL> não existe.")
  730. else:
  731. playerName, reason = '', ''
  732. if EVENTCOUNT == 2:
  733. playerName = event_raw.split(' ', 1)[1]
  734. else:
  735. _, playerName, reason = event_raw.split(' ', 2)
  736. if not playerName.startswith('*'):
  737. playerName = playerName.lower().capitalize()
  738.  
  739. if self.c.server.checkAlreadyConnectedAccount(playerName):
  740. self.c.sendBanConsideration()
  741. self.c.server.doVoteBan(playerName, self.c.address[0], self.c.username)
  742. else:
  743. self.c.sendBanNotExist()
  744.  
  745.  
  746. elif event == "rank" or event == "cargo":
  747. if self.c.privilegeLevel >= 8:
  748. if self.lenEvent(3):
  749. _, rank, playerName = event_raw.split(' ', 2)
  750. rank = str(rank).lower()
  751. if not playerName.startswith('*'):
  752. playerName = playerName.lower().capitalize()
  753. rankID = None
  754. if rank in ('admingeral', 'admgeral', '10'):
  755. rankID = 10
  756. if rank in ('admin', 'adm', '8'):
  757. rankID = 8
  758. if rank in ('smod', '6'):
  759. rankID = 6
  760. if rank in ('mod', '5', 'mode', 'promotion'):
  761. rankID = 5
  762. if rank in ('mapcrew', '4', 'darmc', 'darmapc'):
  763. rankID = 4
  764. if rank in ('3', 'helper', 'darp'):
  765. rankID = 3
  766. if rank in ('vip', 'viper', '2'):
  767. rankID = 2
  768. if rank in ('norm', 'depromotion', '1'):
  769. rankID = 1
  770. if rank in ('invalid', 'block'):
  771. rankID = -1
  772. elif rankID is not None:
  773. self.c.server.changePrivLevel(playerName, rankID)
  774. self.Database.execute('UPDATE users SET privlevel = ? WHERE name = ?', [str(rankID), playerName])
  775. self.c.sendMessage("Servidor", "<J>"+self.c.username+"<N> deu o cargo de <J>"+rank+"<N> para <J>"+playerName+"<N>.")
  776. elif event == "unban" or event == "deban":
  777. if self.c.privilegeLevel >= 3:
  778. if self.lenEvent(2):
  779. found = False
  780. playerName = self.c.TFMUtils.parsePlayerName(args[0])
  781. if not playerName.startswith('*'):
  782. playerName = playerName.lower().capitalize()
  783. self.Database.execute('select * from userpermaban where name = ?', [playerName])
  784. rrfRows = self.Database.fetchone()
  785. if rrfRows is None:
  786. pass
  787. else:
  788. self.Database.execute('DELETE FROM userpermaban WHERE name = ?', [playerName])
  789. self.Database.execute('UPDATE users SET totalban = ? WHERE name = ?', ['0', playerName])
  790. found = True
  791. if playerName in self.c.server.tempAccountBanList:
  792. self.c.server.tempAccountBanList.remove(playerName)
  793. self.Database.execute('UPDATE users SET totalban = ? WHERE name = ?', ['0', playerName])
  794. found = True
  795. if self.c.server.checkTempBan(playerName):
  796. self.c.server.removeTempBan(playerName)
  797. self.Database.execute('UPDATE users SET totalban = ? WHERE name = ?', ['0', playerName])
  798. found = True
  799. if self.c.server.checkExistingUsers(playerName):
  800. self.Database.execute('UPDATE users SET totalban = ? WHERE name = ?', ['0', playerName])
  801. if found:
  802. self.Database.execute('INSERT INTO BanLog (Name, BannedBy, Time, Reason, Date, Status, Room, IP) values (?, ?, ?, ?, ?, ?, ?, ?)', (playerName,self.c.username,'','',int(str(self.c.getTimer())[:-4]),'Unban','',''))
  803. self.c.sendMessage("Servidor", "<N><b>"+ self.c.username + "</b> <V>desbaniu o jogador <N><b>" + playerName + "</b>.")
  804.  
  805. elif event == "info":
  806. if self.c.privilegeLevel >= 4:
  807. mapcode = args[0]
  808. mapcode = mapcode.replace('@', '')
  809. self.Database.execute('select * from mapeditor where code = ?', [mapcode])
  810. rrf = self.Database.fetchone()
  811. if rrf is None:
  812. self.c.sendMessage('<R>Mapa não encontrado.')
  813. else:
  814. yesvotes = int(rrf[3])
  815. novotes = int(rrf[4])
  816. mapname = str(rrf[0])
  817. perma = str(rrf[5])
  818. totalvotes = yesvotes + novotes
  819. if totalvotes == 0:
  820. totalvotes = 1
  821. rating = 1.0 * yesvotes / totalvotes * 100
  822. rating = str(rating)
  823. rating, adecimal, somejunk = rating.partition(".")
  824. self.c.sendMessage(str(mapname) + ' - @' + str(mapcode) + ' - ' + str(totalvotes) + ' - ' + str(rating) + '% - P' + str(perma))
  825.  
  826. elif event == "give":
  827. if self.c.privilegeLevel >= 10:
  828. arguments, username, values = event_raw.split(' ', 3)[1:]
  829. cheese, fraises, coins, saves, bootcamp, first, cheesecount, shopfichas = 0, 0, 0, 0, 0, 0, 0, 0
  830. if arguments in ["cheese"]:
  831. cheese = int(values)
  832. if arguments in ["fichas", "shopfichas", "tokens"]:
  833. shopfichas = int(values)
  834. if arguments in ["fraises", "morangos"]:
  835. fraises = int(values)
  836. if arguments in ["coins", "monedas", "moedas"]:
  837. coins = int(values)
  838. if arguments in ["saves", "save", "micesaves"]:
  839. saves = int(values)
  840. if arguments in ["bootcamp", "bootcamps", "bc"]:
  841. bootcamp = int(values)
  842. if arguments in ["first"]:
  843. first = int(values)
  844. if arguments in ["queijos", "cheesecount"]:
  845. cheesecount = int(values)
  846. for room in self.c.server.rooms.values():
  847. for sent in room.clients.values():
  848. if cheese and username.capitalize() == sent.username:
  849. sent.shopcheese += cheese
  850. sent.sendMessage("<ROSE>[+] <N>Vocé ganhou <ROSE>"+str(cheese)+" <N>Queijos na Loja")
  851. if coins and username.capitalize() == sent.username:
  852. sent.shopcoins += coins
  853. sent.sendMessage("<ROSE>[+] <N>Vocé ganhou <ROSE>"+str(coins)+" <N>Moedas")
  854. if saves and username.capitalize() == sent.username:
  855. sent.micesaves += saves
  856. sent.sendMessage("<ROSE>[+] <N>Vocé ganhou <ROSE>"+str(saves)+" <N>Saves")
  857. if bootcamp and username.capitalize() == sent.username:
  858. sent.bootcampcount += bootcamp
  859. sent.sendMessage("<ROSE>[+] <N>Vocé ganhou <ROSE>"+str(bootcamp)+" <N>Bootcamps")
  860. if cheesecount and username.capitalize() == sent.username:
  861. sent.cheesecount += cheesecount
  862. sent.sendMessage("<ROSE>[+] <N>Vocé ganhou <ROSE>"+str(cheesecount)+" <N>Queijos")
  863. if first and username.capitalize() == sent.username:
  864. sent.firstcount += first
  865. sent.sendMessage("<ROSE>[+] <N>Vocé ganhou <ROSE>"+str(first)+" <N>First")
  866. if fraises and username.capitalize() == sent.username:
  867. sent.shopfraises += fraises
  868. sent.sendMessage("<ROSE>[+] <N>Vocé ganhou <ROSE>"+str(fraises)+" <N>Morangos na Loja")
  869. if shopfichas and username.capitalize() == sent.username:
  870. sent.shopfichas += shopfichas
  871. sent.sendMessage("<ROSE>[+] <N>Vocé ganhou <ROSE>"+str(shopfichas)+" <N>Fichas")
  872.  
  873. elif event == "morangos" or event == "freefraises":
  874. if self.c.privilegeLevel >= 10:
  875. amount = args[0]
  876. for room in self.c.server.rooms.values():
  877. for client in room.clients.values():
  878. client.shopfraises += int(amount)
  879. if client.shopfraises >= 9999999:
  880. client.shopfraises = 9999999
  881. sent.sendMessage('<N>Você enviou <J>%s <N>morangos na loja.' % amount)
  882.  
  883. elif event == "queijos" or event == "freecheese":
  884. if self.c.privilegeLevel >= 10:
  885. amount = args[0]
  886. for room in self.c.server.rooms.values():
  887. for client in room.clients.values():
  888. client.shopcheese += int(amount)
  889. if client.shopcheese >= 9999999:
  890. client.shopcheese = 9999999
  891. sent.sendMessage('<N>Você enviou <J>%s <N>queijos na loja.' % amount)
  892.  
  893. elif event == "moedas" or event == "freecoins":
  894. if self.c.privilegeLevel >= 10:
  895. amount = args[0]
  896. for room in self.c.server.rooms.values():
  897. for client in room.clients.values():
  898. client.shopcoins += int(amount)
  899. if client.shopcoins >= 9999999:
  900. client.shopcoins = 9999999
  901. sent.sendMessage('<N>Você enviou <J>%s <N>moedas na /lojinha.' % amount)
  902.  
  903. elif event == "saves" or event == "freesaves":
  904. if self.c.privilegeLevel >= 10:
  905. amount = args[0]
  906. for room in self.c.server.rooms.values():
  907. for client in room.clients.values():
  908. client.micesaves += int(amount)
  909. if client.micesaves >= 9999999:
  910. client.micesaves = 9999999
  911. sent.sendMessage('<N>Você enviou <J>%s <N>saves coletados no perfil.' % amount)
  912.  
  913.  
  914. elif event == "bootcamp" or event == "freebc":
  915. if self.c.privilegeLevel >= 10:
  916. amount = args[0]
  917. for room in self.c.server.rooms.values():
  918. for client in room.clients.values():
  919. client.bootcampcount += int(amount)
  920. if client.bootcampcount >= 9999999:
  921. client.bootcampcount = 9999999
  922. sent.sendMessage('<N>Você enviou <J>%s <N>bootcamps coletados no perfil.' % amount)
  923.  
  924. elif event == "queijoscoletados" or event == "freecheesecount":
  925. if self.c.privilegeLevel >= 10:
  926. amount = args[0]
  927. for room in self.c.server.rooms.values():
  928. for client in room.clients.values():
  929. client.cheesecount += int(amount)
  930. if client.cheesecount >= 9999999:
  931. client.cheesecount = 9999999
  932. sent.sendMessage('<N>Você enviou <J>%s <N>queijos coletados no perfil.' % amount)
  933.  
  934. elif event == "first" or event == "freefirst":
  935. if self.c.privilegeLevel >= 10:
  936. amount = args[0]
  937. for room in self.c.server.rooms.values():
  938. for client in room.clients.values():
  939. client.firstcount += int(amount)
  940. if client.firstcount >= 9999999:
  941. client.firstcount = 9999999
  942. sent.sendMessage('<N>Você enviou <J>%s <N>firsts coletados no perfil.' % amount)
  943.  
  944. elif event == "denunciarbug":
  945. message = argsNotSplited
  946. self.c.sendMessage('<J>•<N> Seu report foi enviado.')
  947. self.c.sendAllModMessageChannel('Servidor', 'O jogador <J>'+self.c.username+' <N>denunciou o seguinte bug: <J>'+message+'')
  948.  
  949. elif event == "enviarmap":
  950. message = argsNotSplited
  951. self.c.sendMessage('<J>•<N> Seu mapa foi enviado.')
  952. self.c.sendAllModMessageChannel('Servidor', 'O jogador <J>'+self.c.username+' <N>enviou o mapa para avl: <J>'+message+'')
  953.  
  954. elif event == "reportmod":
  955. message = argsNotSplited
  956. self.c.sendMessage('<J>•<N> Seu report foi enviado.')
  957. self.c.sendAllModMessageChannel('Servidor', 'O jogador <J>'+self.c.username+' <N>reportou á um moderador: <J>'+message+'')
  958.  
  959. elif event == "color":
  960. if self.c.privilegeLevel >= 2:
  961. value = args[0]
  962. if value == "azul":
  963. if not self.c.cor:
  964. self.c.cor = True
  965. self.c.color1 = "102CFF"
  966. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Aguarde a próxima rodada para ficar com a cor! Para desativar digite novamente /color '+value+'')
  967. else:
  968. if self.c.cor:
  969. self.c.cor = False
  970. self.c.color1 = "78583a"
  971. self.c.sendMessage('<J>•<N> Cor desativada.')
  972. elif value == "amarelo":
  973. if not self.c.cor:
  974. self.c.cor = True
  975. self.c.color1 = "FFF700"
  976. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Aguarde a próxima rodada para ficar com a cor! Para desativar digite novamente /color '+value+'')
  977. else:
  978. if self.c.cor:
  979. self.c.cor = False
  980. self.c.color1 = "78583a"
  981. self.c.sendMessage('<J>•<N> Cor desativada.')
  982. elif value == "vermelho":
  983. if not self.c.cor:
  984. self.c.cor = True
  985. self.c.color1 = "DF0101"
  986. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Aguarde a próxima rodada para ficar com a cor! Para desativar digite novamente /color '+value+'')
  987. else:
  988. if self.c.cor:
  989. self.c.cor = False
  990. self.c.color1 = "78583a"
  991. self.c.sendMessage('<J>•<N> Cor desativada.')
  992. elif value == "rosa":
  993. if not self.c.cor:
  994. self.c.cor = True
  995. self.c.color1 = "EF00FF"
  996. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Aguarde a próxima rodada para ficar com a cor! Para desativar digite novamente /color '+value+'')
  997. else:
  998. if self.c.cor:
  999. self.c.cor = False
  1000. self.c.color1 = "78583a"
  1001. self.c.sendMessage('<J>•<N> Cor desativada.')
  1002. elif value == "verde":
  1003. if not self.c.cor:
  1004. self.c.cor = True
  1005. self.c.color1 = "00FF11"
  1006. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Aguarde a próxima rodada para ficar com a cor! Para desativar digite novamente /color '+value+'')
  1007. else:
  1008. if self.c.cor:
  1009. self.c.cor = False
  1010. self.c.color1 = "78583a"
  1011. self.c.sendMessage('<J>•<N> Cor desativada.')
  1012. elif value == "laranja":
  1013. if not self.c.cor:
  1014. self.c.cor = True
  1015. self.c.color1 = "FFB700"
  1016. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Aguarde a próxima rodada para ficar com a cor! Para desativar digite novamente /color '+value+'')
  1017. else:
  1018. if self.c.cor:
  1019. self.c.cor = False
  1020. self.c.color1 = "78583a"
  1021. self.c.sendMessage('<J>•<N> Cor desativada.')
  1022. elif value == "azul claro":
  1023. if not self.c.cor:
  1024. self.c.cor = True
  1025. self.c.color1 = "00FFFC"
  1026. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Aguarde a próxima rodada para ficar com a cor! Para desativar digite novamente /color '+value+'')
  1027. else:
  1028. if self.c.cor:
  1029. self.c.cor = False
  1030. self.c.color1 = "78583a"
  1031. self.c.sendMessage('<J>•<N> Cor desativada.')
  1032. elif value == "branco":
  1033. if not self.c.cor:
  1034. self.c.cor = True
  1035. self.c.color1 = "FFFFFF"
  1036. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Aguarde a próxima rodada para ficar com a cor! Para desativar digite novamente /color '+value+'')
  1037. else:
  1038. if self.c.cor:
  1039. self.c.cor = False
  1040. self.c.color1 = "78583a"
  1041. self.c.sendMessage('<J>•<N> Cor desativada.')
  1042. elif value == "preto":
  1043. if not self.c.cor:
  1044. self.c.cor = True
  1045. self.c.color1 = "00000"
  1046. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Aguarde a próxima rodada para ficar com a cor! Para desativar digite novamente /color '+value+'')
  1047. else:
  1048. if self.c.cor:
  1049. self.c.cor = False
  1050. self.c.color1 = "78583a"
  1051. self.c.sendMessage('<J>•<N> Cor desativada.')
  1052. else: self.c.sendMessage('<J>•<N> A cor desejada não existe.')
  1053. else: self.c.sendMessage('<J>•<N> <R>Você não é um <J>vip<N>!')
  1054.  
  1055. elif event == "namecor":
  1056. if self.c.privilegeLevel >= 2:
  1057. value = args[0]
  1058. if value == "azul":
  1059. if not self.c.cor:
  1060. self.cor = True
  1061. self.c.room.sendAllBin("\x1d\x04", struct.pack("!i", int(self.c.playerCode))+struct.pack('!i', int("102CFF", 16)))
  1062. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Para desativar digite novamente /namecor '+value+'')
  1063. else:
  1064. if self.c.cor:
  1065. self.c.cor = False
  1066. self.c.sendMessage('<J>•<N> Cor desativada.')
  1067.  
  1068. elif value == "amarelo":
  1069. if not self.c.cor:
  1070. self.c.cor = True
  1071. self.c.room.sendAllBin("\x1d\x04", struct.pack("!i", int(self.c.playerCode))+struct.pack('!i', int("FFF700", 16)))
  1072. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Para desativar digite novamente /namecor '+value+'')
  1073. else:
  1074. if self.c.cor:
  1075. self.c.cor = False
  1076. self.c.sendMessage('<J>•<N> Cor desativada.')
  1077.  
  1078. elif value == "vermelho":
  1079. if not self.c.cor:
  1080. self.c.cor = True
  1081. self.c.room.sendAllBin("\x1d\x04", struct.pack("!i", int(self.c.playerCode))+struct.pack('!i', int("DF0101", 16)))
  1082. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Para desativar digite novamente /namecor '+value+'')
  1083. else:
  1084. if self.c.cor:
  1085. self.c.cor = False
  1086. self.c.sendMessage('<J>•<N> Cor desativada.')
  1087.  
  1088. elif value == "rosa":
  1089. if not self.c.cor:
  1090. self.c.cor = True
  1091. self.c.room.sendAllBin("\x1d\x04", struct.pack("!i", int(self.c.playerCode))+struct.pack('!i', int("EF00FF", 16)))
  1092. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Para desativar digite novamente /namecor '+value+'')
  1093. else:
  1094. if self.c.cor:
  1095. self.c.cor = False
  1096. self.c.sendMessage('<J>•<N> Cor desativada.')
  1097.  
  1098. elif value == "verde":
  1099. if not self.c.cor:
  1100. self.c.cor = True
  1101. self.c.room.sendAllBin("\x1d\x04", struct.pack("!i", int(self.c.playerCode))+struct.pack('!i', int("00FF11", 16)))
  1102. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Para desativar digite novamente /namecor '+value+'')
  1103. else:
  1104. if self.c.cor:
  1105. self.c.cor = False
  1106. self.c.sendMessage('<J>•<N> Cor desativada.')
  1107.  
  1108. elif value == "laranja":
  1109. if not self.c.cor:
  1110. self.c.cor = True
  1111. self.c.room.sendAllBin("\x1d\x04", struct.pack("!i", int(self.c.playerCode))+struct.pack('!i', int("FFB700", 16)))
  1112. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Para desativar digite novamente /namecor '+value+'')
  1113. else:
  1114. if self.c.cor:
  1115. self.c.cor = False
  1116. self.c.sendMessage('<J>•<N> Cor desativada.')
  1117.  
  1118. elif value == "azul claro":
  1119. if not self.c.cor:
  1120. self.c.cor = True
  1121. self.c.room.sendAllBin("\x1d\x04", struct.pack("!i", int(self.c.playerCode))+struct.pack('!i', int("00FFFC", 16)))
  1122. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Para desativar digite novamente /namecor '+value+'')
  1123. else:
  1124. if self.c.cor:
  1125. self.c.cor = False
  1126. self.c.sendMessage('<J>•<N> Cor desativada.')
  1127.  
  1128. elif value == "branco":
  1129. if not self.c.cor:
  1130. self.c.cor = True
  1131. self.c.room.sendAllBin("\x1d\x04", struct.pack("!i", int(self.c.playerCode))+struct.pack('!i', int("FFFFFF", 16)))
  1132. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Para desativar digite novamente /namecor '+value+'')
  1133. else:
  1134. if self.c.cor:
  1135. self.c.cor = False
  1136. self.c.sendMessage('<J>•<N> Cor desativada.')
  1137.  
  1138. elif value == "preto":
  1139. if not self.c.cor:
  1140. self.c.cor = True
  1141. self.c.room.sendAllBin("\x1d\x04", struct.pack("!i", int(self.c.playerCode))+struct.pack('!i', int("000000", 16)))
  1142. self.c.sendMessage('<J>•<N> Agora você está utilizando a cor '+value+'. Para desativar digite novamente /namecor '+value+'')
  1143. else:
  1144. if self.c.cor:
  1145. self.c.cor = False
  1146. self.c.sendMessage('<J>•<N> Cor desativada.')
  1147. else: self.c.sendMessage('<J>•<N> A cor desejada não existe.')
  1148. else: self.c.sendMessage('<J>•<N> Você ainda não é um VIP.')
  1149.  
  1150. elif event == "unlockedtitle":
  1151. if self.c.privilegeLevel >= 5:
  1152. unlockedTitle = args[0]
  1153. self.c.sendUnlockedTitle(self.c.playerCode, unlockedTitle)
  1154.  
  1155. elif event == "mute":
  1156. if self.c.privilegeLevel >= 5:
  1157. playerName = self.c.TFMUtils.parsePlayerName(args[0])
  1158. time = args[1] if (argsCount >= 2) else "1"
  1159. reason = argsNotSplited.split(" ", 2)[2] if (argsCount >= 3) else ""
  1160. hours = int(time) if (time.isdigit()) else 1
  1161. self.requireNoSouris(playerName)
  1162. hours = 500 if (hours > 500) else hours
  1163. hours = 24 if (self.c.privilegeLevel <= 4 and hours > 24) else hours
  1164. self.c.server.sendModMute(playerName, hours, reason, self.c.username)
  1165.  
  1166. elif event == "unmute":
  1167. if self.c.privilegeLevel >= 5:
  1168. if EVENTCOUNT == 2:
  1169. username = event_raw.split(' ', 1)[1]
  1170. if not username.startswith('*'):
  1171. username = username.lower().capitalize()
  1172. if self.c.server.checkAlreadyConnectedAccount(username):
  1173. self.Database.execute('DELETE FROM UserTempMute WHERE name = ?', [username])
  1174. self.c.sendAllModMessageChannel('Servidor', '<J>' + self.c.username + ' <N>tirou o mute de <J>' + username +'.')
  1175. self.c.server.sendMuMute(username, self.c.username)
  1176.  
  1177. elif event == "nextsham" or event == "ch":
  1178. if self.c.privilegeLevel >= 5:
  1179. username = self.c.TFMUtils.parsePlayerName(args[0])
  1180. if not username.startswith('*'):
  1181. username = username.lower().capitalize()
  1182. if self.c.room.getPlayerCode(username) != 0:
  1183. self.c.room.forceNextShaman = self.c.room.getPlayerCode(username)
  1184. self.c.sendMessage(username + ' será o próximo shaman!')
  1185.  
  1186. elif event == "title":
  1187. if self.c.privilegeLevel >= 1:
  1188. titlenumber = args[0]
  1189. if titlenumber.isdigit() and not titlenumber in str(self.c.titleNumber) and not self.c.privilegeLevel == 0:
  1190. titleD = titlenumber
  1191. can = False
  1192. titre = None
  1193. for title in self.c.titleList:
  1194. if "." in str(title):
  1195. if titlenumber == title.split(".")[0]:
  1196. titleD = title.split(".")[0]
  1197. can = True
  1198. titre = title
  1199. break
  1200. if titlenumber == str(title):
  1201. titleD = titleD
  1202. can = False
  1203. titre = title
  1204. break
  1205. if titre:
  1206. self.c.sendNewTitle(titleD)
  1207. if can:
  1208. self.c.titleNumber = float(titre)
  1209. else:self.c.titleNumber = int(titre)
  1210. self.Database.execute('UPDATE users SET currenttitle = ? WHERE name = ?', [self.c.titleNumber, self.c.username])
  1211. elif event == "avatar":
  1212. avaid = args[0]
  1213. if avaid.isdigit():
  1214. avaid = int(avaid)
  1215. if self.c.avatar != avaid:
  1216. if avaid !=0:
  1217. self.Database.execute('UPDATE users SET avatar = ? WHERE name = ?', [avaid, self.c.username])
  1218. self.c.avatar = avaid
  1219. self.c.sendMessage("Você alterou seu avatar com sucesso: [<J>%r<BL>]." % (avaid))
  1220. else:self.c.sendMessage("<R>[Atelier801]<VP> Já está utilizando o avatar número: [<J>%s<BL>]" % (str(avaid)))
  1221. elif event == "mjj":
  1222. roomName = args[0]
  1223. if roomName.startswith("#"):
  1224. self.c.enterRoom(roomName)
  1225. else:
  1226. self.c.enterRoom((""if self.c.lastGameMode == 1 else "vanilla" if self.c.lastGameMode == 3 else "survivor" if self.c.lastGameMode == 8 else "racing" if self.c.lastGameMode == 9 else "music" if self.c.lastGameMode == 11 else "bootcamp" if self.c.lastGameMode == 2 else "defilante" if self.c.lastGameMode == 12 else "village") + roomName)
  1227. elif event == "kick" or event == "delavatar":
  1228. if self.c.privilegeLevel >= 3:
  1229. message = args[0]
  1230. username = self.c.TFMUtils.parsePlayerName(args[0])
  1231. canUse = True
  1232. self.c.server.delavaPlayer(username, self)
  1233. self.c.sendAllModMessageChannel('Servidor', '<V>'+self.c.username+'<BL> expulsou o jogador <V>'+username+'<BL> do servidor.')
  1234. elif event == "clearban":
  1235. if self.c.privilegeLevel >= 10:
  1236. username = self.c.TFMUtils.parsePlayerName(args[0])
  1237. self.c.server.clearVoteBan(self, username)
  1238. self.c.sendAllModMessageChannel('Servidor', '<V>'+self.c.username+'<BL> limpou os logs de banimento de <V>'+username+'<BL>.')
  1239. elif event == "call":
  1240. if self.c.privilegeLevel >= 6:
  1241. _, message = event_raw.split(' ', 1)
  1242. packet = self.c.parseByte.ByteArray()
  1243. packet.writeShort(self.c.Tribulle.Tribulle['ET_RecoitMessagePrive'])
  1244. packet.writeUTF(self.c.username)
  1245. packet.writeUTF(str(message))
  1246. packet.writeBytes(self.c.LangueByte)
  1247. packet.writeBoolean(False)
  1248. for room in self.c.server.rooms.values():
  1249. for client in room.clients.values():
  1250. client.sendData('<\x01', packet.toString(), True)
  1251. elif event == "mm":
  1252. if self.c.privilegeLevel >= 5:
  1253. message = argsNotSplited
  1254. self.c.sendStaffMessage("<ROSE>[Moderação] "+message)
  1255. elif event == "admin" or event == "adm":
  1256. if self.c.privilegeLevel >= 10:
  1257. message = argsNotSplited
  1258. self.c.sendStaffMessage("<V>• <font color='#FF0000'>[Fundador <b>"+self.c.username+"</b>]</font> <N>"+message)
  1259. elif event == "smn" or event == "smc":
  1260. if self.c.privilegeLevel >= 5:
  1261. message = argsNotSplited
  1262. sendAllModMessageChannel("<V>• <ROSE>[<b>"+self.c.username+"</b>] "+message)
  1263. elif event == "vip":
  1264. if self.c.privilegeLevel >= 2:
  1265. message = argsNotSplited
  1266. self.c.sendVipMessage("<V>• <font color='#FFD700'>[VIP <b>"+self.c.username+"</b>]</font> <N>"+message)
  1267. if self.c.modmute:
  1268. self.c.modmute = False
  1269. self.c.sendMessage("<ROSE><b>[~Moderador]</b> Você foi mutado, global VIP offline até terminar o tempo de mute")
  1270. elif event == "coord" or event == "ccm":
  1271. if self.c.privilegeLevel >= 8:
  1272. message = argsNotSplited
  1273. self.c.sendStaffMessage("<V>• <font color='#00FF7F'>[Coordenador <b>"+self.c.username+"</b>]</font> <N>"+message)
  1274. elif event == "smod" or event == "sms":
  1275. if self.c.privilegeLevel >= 6:
  1276. message = argsNotSplited
  1277. self.c.sendStaffMessage("<V>• <font color='#4E4ED0'>[Super Moderador <b>"+self.c.username+"</b>]</font> <N>"+message)
  1278. elif event == "mod":
  1279. if self.c.privilegeLevel >= 5:
  1280. message = argsNotSplited
  1281. self.c.sendStaffMessage("<V>• <font color='#FE9A2E'>[Moderador <b>"+self.c.username+"</b>]</font> <N>"+message)
  1282. elif event == "mcrew" or event == "mpc":
  1283. if self.c.privilegeLevel >= 4:
  1284. message = argsNotSplited
  1285. self.c.sendStaffMessage("<V>• <font color='#00FFFF'>[Mapcrew <b>"+self.c.username+"</b>]</font> <N>"+message)
  1286. elif event == "helper" or event == "vippremium" or event == "vp":
  1287. if self.c.privilegeLevel >= 3:
  1288. message = argsNotSplited
  1289. self.c.sendStaffMessage("<V>• <font color='#00FF7F'>[VIP Premium <b>"+self.c.username+"</b>]</font> <N>"+message)
  1290.  
  1291. elif event == "respawn" or event == "revive" or event == "re":
  1292. if self.c.privilegeLevel >= 10:
  1293. username = self.c.TFMUtils.parsePlayerName(args[0])
  1294. self.c.room.respawnSpecific(username)
  1295. elif event == "join":
  1296. if self.c.privilegeLevel >= 5:
  1297. username = self.c.TFMUtils.parsePlayerName(args[0])
  1298. username = username.lower().capitalize()
  1299. if self.c.room.checkRoomInvite(self, username):
  1300. self.c.enterRoom('\x03[Private] ' + username)
  1301. elif self.c.privilegeLevel >= 3:
  1302. self.c.enterRoom('\x03[Private] ' + username)
  1303. elif event == "mjoin":
  1304. if self.c.privilegeLevel >= 5:
  1305. username = self.c.TFMUtils.parsePlayerName(args[0])
  1306. if not username.startswith('*'):
  1307. username = username.lower().capitalize()
  1308. room = self.c.server.getFindPlayerRoom(username)
  1309. if room:
  1310. if room.startswith(self.c.Langue + '_' + '\x03' + '[Editeur] '):
  1311. pass
  1312. elif room.startswith(self.c.Langue + '_' + '\x03' + '[Totem] '):
  1313. pass
  1314. else:
  1315. self.c.enterRoom(room)
  1316. elif event == "map" or event == "np":
  1317. if not self.c.room.votingMode:
  1318. if self.c.privilegeLevel >= 4:
  1319. mapnumber = args[0]
  1320. if mapnumber.startswith('@'):
  1321. mapnumber = mapnumber.replace('@', '')
  1322. if mapnumber.isdigit():
  1323. self.Database.execute('select * from mapeditor where code = ?', [mapnumber])
  1324. rrf = self.Database.fetchone()
  1325. if rrf is None:
  1326. if self.c.Langue == 'fr':
  1327. self.c.sendMessage('Carte introuvable.')
  1328. elif self.c.Langue == 'br':
  1329. self.c.sendMessage('Este mapa \xc3\xa9 inv\xc3\xa1lido.')
  1330. elif self.c.Langue == 'ru':
  1331. self.c.sendMessage('\xd0\x92\xd0\xb2\xd0\xb5\xd0\xb4\xd1\x91\xd0\xbd \xd0\xbd\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xba\xd0\xbe\xd0\xb4.')
  1332. elif self.c.Langue == 'tr':
  1333. self.c.sendMessage('Bu harita ge\xc3\xa7ersiz.')
  1334. elif self.c.Langue == 'cn':
  1335. self.c.sendMessage('\xe5\x9c\xb0\xe5\x9b\xbe\xe6\x97\xa0\xe6\x95\x88.')
  1336. elif self.c.Langue == 'es':
  1337. self.c.sendMessage('Mapa no encontrado.')
  1338. elif self.c.Langue == 'en':
  1339. self.c.sendMessage('Map not found.')
  1340. else:
  1341. self.c.sendMessage('Map not found.')
  1342. else:
  1343. self.c.isDead = True
  1344. self.c.sendPlayerDied(self.c.playerCode, self.c.score)
  1345. self.c.room.worldChangeSpecific(mapnumber, True)
  1346. elif self.c.Langue == 'fr':
  1347. self.c.sendMessage('Carte introuvable.')
  1348. elif self.c.Langue == 'br':
  1349. self.c.sendMessage('Este mapa \xc3\xa9 inv\xc3\xa1lido.')
  1350. elif self.c.Langue == 'ru':
  1351. self.c.sendMessage('\xd0\x92\xd0\xb2\xd0\xb5\xd0\xb4\xd1\x91\xd0\xbd \xd0\xbd\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xba\xd0\xbe\xd0\xb4.')
  1352. elif self.c.Langue == 'tr':
  1353. self.c.sendMessage('Bu harita ge\xc3\xa7ersiz.')
  1354. elif self.c.Langue == 'cn':
  1355. self.c.sendMessage('\xe5\x9c\xb0\xe5\x9b\xbe\xe6\x97\xa0\xe6\x95\x88.')
  1356. elif self.c.Langue == 'en':
  1357. self.c.sendMessage('Map not found.')
  1358. elif self.c.Langue == 'es':
  1359. self.c.sendMessage('Mapa no encontrado.')
  1360. else:
  1361. self.c.sendMessage('Map not found.')
  1362.  
  1363. elif mapnumber.isdigit():
  1364. self.c.isDead = True
  1365. self.c.sendPlayerDied(self.c.playerCode, self.c.score)
  1366. self.c.room.worldChangeSpecific(mapnumber)
  1367.  
  1368. elif self.c.room.isTribehouse:
  1369. if event == "np":
  1370. if self.c.isInTribe:
  1371. if self.c.TribeInfo[8] == "1":
  1372. mapnumber = args[0]
  1373. if mapnumber.startswith('@'):
  1374. mapnumber = mapnumber.replace('@', '')
  1375. if mapnumber.isdigit():
  1376. self.Database.execute('select * from mapeditor where code = ?', [mapnumber])
  1377. rrf = self.Database.fetchone()
  1378. if rrf is None:
  1379. if self.c.Langue == 'fr':
  1380. self.c.sendMessage('Carte introuvable.')
  1381. elif self.c.Langue == 'br':
  1382. self.c.sendMessage('Este mapa \xc3\xa9 inv\xc3\xa1lido.')
  1383. elif self.c.Langue == 'ru':
  1384. self.c.sendMessage('\xd0\x92\xd0\xb2\xd0\xb5\xd0\xb4\xd1\x91\xd0\xbd \xd0\xbd\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xba\xd0\xbe\xd0\xb4.')
  1385. elif self.c.Langue == 'tr':
  1386. self.c.sendMessage('Bu harita ge\xc3\xa7ersiz.')
  1387. elif self.c.Langue == 'cn':
  1388. self.c.sendMessage('\xe5\x9c\xb0\xe5\x9b\xbe\xe6\x97\xa0\xe6\x95\x88.')
  1389. elif self.c.Langue == 'en':
  1390. self.c.sendMessage('Map not found.')
  1391. elif self.c.Langue == 'es':
  1392. self.c.sendMessage('Mapa no encontrado.')
  1393. else:
  1394. self.c.sendMessage('Map not found.')
  1395. else:
  1396. self.c.isDead = True
  1397. self.c.sendPlayerDied(self.c.playerCode, self.c.score)
  1398. self.c.room.worldChangeSpecific(mapnumber, True)
  1399. elif mapnumber.isdigit():
  1400. if int(mapnumber) in LEVEL_LIST:
  1401. self.c.isDead = True
  1402. self.c.sendPlayerDied(self.c.playerCode, self.c.score)
  1403. self.c.room.worldChangeSpecific(mapnumber)
  1404. elif self.c.Langue == 'fr':
  1405. self.c.sendMessage('Carte introuvable.')
  1406. elif self.c.Langue == 'br':
  1407. self.c.sendMessage('Este mapa \xc3\xa9 inv\xc3\xa1lido.')
  1408. elif self.c.Langue == 'ru':
  1409. self.c.sendMessage('\xd0\x92\xd0\xb2\xd0\xb5\xd0\xb4\xd1\x91\xd0\xbd \xd0\xbd\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xba\xd0\xbe\xd0\xb4.')
  1410. elif self.c.Langue == 'tr':
  1411. self.c.sendMessage('Bu harita ge\xc3\xa7ersiz.')
  1412. elif self.c.Langue == 'cn':
  1413. self.c.sendMessage('\xe5\x9c\xb0\xe5\x9b\xbe\xe6\x97\xa0\xe6\x95\x88.')
  1414. elif self.c.Langue == 'en':
  1415. self.c.sendMessage('Map not found.')
  1416. elif self.c.Langue == 'es':
  1417. self.c.sendMessage('Mapa no encontrado.')
  1418. else:
  1419. self.c.sendMessage('Map not found.')
  1420. elif event == "npp":
  1421. if self.c.privilegeLevel >= 4:
  1422. mapnumber = args[0]
  1423. if mapnumber.startswith('@'):
  1424. test = mapnumber.replace('@', '')
  1425. if test.isdigit():
  1426. self.Database.execute('select * from mapeditor where code = ?', [test])
  1427. rrf = self.Database.fetchone()
  1428. if rrf is None:
  1429. if self.c.Langue == 'fr':
  1430. self.c.sendMessage('Carte introuvable.')
  1431. elif self.c.Langue == 'br':
  1432. self.c.sendMessage('Este mapa \xc3\xa9 inv\xc3\xa1lido.')
  1433. elif self.c.Langue == 'ru':
  1434. self.c.sendMessage('\xd0\x92\xd0\xb2\xd0\xb5\xd0\xb4\xd1\x91\xd0\xbd \xd0\xbd\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xba\xd0\xbe\xd0\xb4.')
  1435. elif self.c.Langue == 'tr':
  1436. self.c.sendMessage('Bu harita ge\xc3\xa7ersiz.')
  1437. elif self.c.Langue == 'cn':
  1438. self.c.sendMessage('\xe5\x9c\xb0\xe5\x9b\xbe\xe6\x97\xa0\xe6\x95\x88.')
  1439. elif self.c.Langue == 'en':
  1440. self.c.sendMessage('Map not found.')
  1441. else:
  1442. self.c.sendMessage('Map not found.')
  1443. else:
  1444. self.c.room.forceNextMap = mapnumber
  1445. self.c.sendMessage('<VP>Pr\xc3\xb3ximo mapa:<R> ' + self.c.room.forceNextMap)
  1446. elif self.c.Langue == 'fr':
  1447. self.c.sendMessage('Carte introuvable.')
  1448. elif self.c.Langue == 'br':
  1449. self.c.sendMessage('Este mapa \xc3\xa9 inv\xc3\xa1lido.')
  1450. elif self.c.Langue == 'ru':
  1451. self.c.sendMessage('\xd0\x92\xd0\xb2\xd0\xb5\xd0\xb4\xd1\x91\xd0\xbd \xd0\xbd\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xba\xd0\xbe\xd0\xb4.')
  1452. elif self.c.Langue == 'tr':
  1453. self.c.sendMessage('Bu harita ge\xc3\xa7ersiz.')
  1454. elif self.c.Langue == 'cn':
  1455. self.c.sendMessage('\xe5\x9c\xb0\xe5\x9b\xbe\xe6\x97\xa0\xe6\x95\x88.')
  1456. elif self.c.Langue == 'en':
  1457. self.c.sendMessage('Map not found.')
  1458. else:
  1459. self.c.sendMessage('Map not found.')
  1460. elif mapnumber.isdigit():
  1461. self.c.room.forceNextMap = mapnumber
  1462. self.c.sendMessage('<VP>Pr\xc3\xb3ximo mapa:<R> ' + self.c.room.forceNextMap)
  1463. elif self.c.room.isTribehouse:
  1464. mapnumber = args[0]
  1465. if mapnumber.startswith('@'):
  1466. test = mapnumber.replace('@', '')
  1467. if test.isdigit():
  1468. self.Database.execute('select * from mapeditor where code = ?', [test])
  1469. rrf = self.Database.fetchone()
  1470. if rrf is None:
  1471. if self.c.Langue == 'fr':
  1472. self.c.sendMessage('Carte introuvable.')
  1473. elif self.c.Langue == 'br':
  1474. self.c.sendMessage('Este mapa \xc3\xa9 inv\xc3\xa1lido.')
  1475. elif self.c.Langue == 'ru':
  1476. self.c.sendMessage('\xd0\x92\xd0\xb2\xd0\xb5\xd0\xb4\xd1\x91\xd0\xbd \xd0\xbd\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xba\xd0\xbe\xd0\xb4.')
  1477. elif self.c.Langue == 'tr':
  1478. self.c.sendMessage('Bu harita ge\xc3\xa7ersiz.')
  1479. elif self.c.Langue == 'cn':
  1480. self.c.sendMessage('\xe5\x9c\xb0\xe5\x9b\xbe\xe6\x97\xa0\xe6\x95\x88.')
  1481. elif self.c.Langue == 'en':
  1482. self.c.sendMessage('Map not found.')
  1483. elif self.c.Langue == 'es':
  1484. self.c.sendMessage('Mapa no encontrado.')
  1485. else:
  1486. self.c.sendMessage('Map not found.')
  1487. else:
  1488. self.room.forceNextMap = mapnumber
  1489. self.c.sendMessage('Next map : ' + self.c.room.forceNextMap)
  1490. elif self.c.Langue == 'fr':
  1491. self.c.sendMessage('Carte introuvable.')
  1492. elif self.c.Langue == 'br':
  1493. self.c.sendMessage('Este mapa \xc3\xa9 inv\xc3\xa1lido.')
  1494. elif self.c.Langue == 'ru':
  1495. self.c.sendMessage('\xd0\x92\xd0\xb2\xd0\xb5\xd0\xb4\xd1\x91\xd0\xbd \xd0\xbd\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xba\xd0\xbe\xd0\xb4.')
  1496. elif self.c.Langue == 'tr':
  1497. self.c.sendMessage('Bu harita ge\xc3\xa7ersiz.')
  1498. elif self.c.Langue == 'cn':
  1499. self.c.sendMessage('\xe5\x9c\xb0\xe5\x9b\xbe\xe6\x97\xa0\xe6\x95\x88.')
  1500. elif self.c.Langue == 'en':
  1501. self.c.sendMessage('Map not found.')
  1502. elif self.c.Langue == 'es':
  1503. self.c.sendMessage('Mapa no encontrado.')
  1504. else:
  1505. self.c.sendMessage('Map not found.')
  1506. elif mapnumber.isdigit():
  1507. if int(mapnumber) in LEVEL_LIST:
  1508. self.c.room.forceNextMap = mapnumber
  1509. self.c.sendMessage('Next map : ' + self.c.room.forceNextMap)
  1510. if self.c.Langue == 'fr':
  1511. self.c.sendMessage('Carte introuvable.')
  1512. elif self.c.Langue == 'br':
  1513. self.c.sendMessage('Este mapa \xc3\xa9 inv\xc3\xa1lido.')
  1514. elif self.c.Langue == 'ru':
  1515. self.c.sendMessage('\xd0\x92\xd0\xb2\xd0\xb5\xd0\xb4\xd1\x91\xd0\xbd \xd0\xbd\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xba\xd0\xbe\xd0\xb4.')
  1516. elif self.c.Langue == 'tr':
  1517. self.c.sendMessage('Bu harita ge\xc3\xa7ersiz.')
  1518. elif self.c.Langue == 'cn':
  1519. self.c.sendMessage('\xe5\x9c\xb0\xe5\x9b\xbe\xe6\x97\xa0\xe6\x95\x88.')
  1520. elif self.c.Langue == 'en':
  1521. self.c.sendMessage('Map not found.')
  1522. elif self.c.Langue == 'es':
  1523. self.c.sendMessage('Mapa no encontrado.')
  1524. else:
  1525. self.c.sendMessage('Map not found.')
  1526. elif event == "sala" or event == "room":
  1527. if self.c.privilegeLevel != 0:
  1528. self.c.enterRoom(roomName)
  1529.  
  1530. elif event == "find" or event == "search" or event == "chercher":
  1531. if self.c.privilegeLevel >= 3:
  1532. self.c.server.getFindPlayerRoomPartial(self, '', True)
  1533.  
  1534. elif event == "ipnom":
  1535. if self.c.privilegeLevel >= 5:
  1536. if self.lenEvent(2):
  1537. ip = event_raw.split(' ', 1)[1]
  1538. self.c.server.IPNomCommand(self, ip)
  1539.  
  1540. elif event == "ip":
  1541. if self.c.privilegeLevel >= 5:
  1542. if self.lenEvent(2):
  1543. username = event_raw.split(' ', 1)[1]
  1544. if not username in self.c.server.ParseBase.admins:
  1545. username = username.lower().capitalize()
  1546. ipaddr = self.c.server.getIPaddress(username)
  1547. if ipaddr:
  1548. message = ''
  1549. message += '<p align = \'center\'><font size = \'15\'><N>IP de '+username+' - TopMice </font></p><p align=\'left\'><font size = \"12"><br><br>'
  1550. message += '<V>IP do Jogador: <N><b>'+username+'</b> : <N><b>'+ipaddr+'</b> <br><V>Mais informações acesse: <N><u>http://cqcounter.com/whois/</u>'
  1551. self.c.sendLogMessage(message)
  1552. else:
  1553. self.c.sendMessage('<BL>O jogador <V><b>'+username+'</b><BL> não está online ou não existe.')
  1554. elif event == "mpush":
  1555. _, username = event_raw.split(' ', 1)
  1556. if self.c.privilegeLevel >= 6:
  1557. for room in self.c.server.rooms.values():
  1558. for playerCode, player in room.clients.items():
  1559. if player.username == username:
  1560. player.enterRoom(self.c.roomname[3:])
  1561. self.c.sendAllModMessageChannel('Servidor', '<V>'+self.c.username+'<BL> puxou o jogador <V>'+username+' <BL>para a sala <V>'+self.c.roomname+'<BL>.')
  1562. else:
  1563. self.c.sendMessage('<BL>O jogador <V><b>'+username+'</b><BL> não está online ou não existe.')
  1564.  
  1565. elif event == "ipnom":
  1566. if self.c.privilegeLevel >= 5:
  1567. if self.lenEvent(2):
  1568. name = event_raw.split(' ', 1)[1]
  1569. if not name.startswith('*'):
  1570. name = name.lower().capitalize()
  1571. self.c.server.nomIPCommand(self, name)
  1572. name = event_raw.split(' ', 1)[1]
  1573.  
  1574.  
  1575. elif event == "addtext" or event == "deltext":
  1576. if self.c.privilegeLevel >= 6:
  1577. if self.lenEvent(3):
  1578. _, list, link = event_raw.split(' ', 2)
  1579. sucess = False
  1580. if list in 'blacklist':
  1581. link = link.replace('https://', '').replace('http://', '').replace('www.', '').split('/')[0]
  1582. if _.startswith('add'):
  1583. if link in self.c.server.textToolsSiteList['server']['blacklist']:
  1584. self.c.sendMessage( 'Domínio adicionado.')
  1585. else:
  1586. self.c.server.textToolsSiteList['server']['blacklist'].append(link)
  1587. self.c.sendMessage('<V>'+link+' <BL>foi adicionado com sucesso na lista!')
  1588. sucess = True
  1589. elif link in self.c.server.textToolsSiteList['server']['blacklist']:
  1590. self.c.server.textToolsSiteList['server']['blacklist'].remove(link)
  1591. self.c.sendMessage("<J>•<N> O link <J>"+link+"<N> foi removido da blacklist.")
  1592. sucess = True
  1593. else:
  1594. self.c.sendMessage('<BL>O domínio não existe!')
  1595. if list in 'whitelist':
  1596. link = link.replace('https://', '').replace('http://', '').replace('www.', '').split('/')[0]
  1597. if _.startswith('add'):
  1598. if link in self.c.server.textToolsSiteList['server']['whitelist']:
  1599. self.c.sendMessage('<V>'+link+' <BL>foi adicionado com sucesso na lista!')
  1600. else:
  1601. self.c.server.textToolsSiteList['server']['whitelist'].append(link)
  1602. self.c.sendMessage('<V>'+link+' <BL>foi adicionado com sucesso na lista!')
  1603. sucess = True
  1604. elif link in self.c.server.textToolsSiteList['server']['whitelist']:
  1605. self.c.server.textToolsSiteList['server']['whitelist'].remove(link)
  1606. self.c.sendMessage('<V>'+link+' <BL>foi removido da lista!')
  1607. sucess = True
  1608. else:
  1609. self.c.sendMessage('<BL>O domínio não existe!')
  1610. if list in 'allowdomain':
  1611. link = link.replace('https://', '').replace('http://', '').replace('www.', '').split('/')[0]
  1612. if _.startswith('add'):
  1613. if link in self.c.server.textToolsSiteList['server']['allowdomain']:
  1614. self.c.sendMessage('<V>'+link+' <BL>foi adicionado com sucesso na lista!')
  1615. else:
  1616. self.c.server.textToolsSiteList['server']['allowdomain'].append(link)
  1617. self.c.sendMessage('<V>'+link+' <BL>foi adicionado com sucesso na lista!')
  1618. sucess = True
  1619. elif link in self.c.server.textToolsSiteList['server']['allowdomain']:
  1620. self.c.server.textToolsSiteList['server']['allowdomain'].remove(link)
  1621. self.c.sendMessage('<V>'+link+' <BL>foi removido da lista!')
  1622. sucess = True
  1623. else:
  1624. self.c.sendMessage('<BL>O domínio não existe!')
  1625. if list in 'ipbans':
  1626. if _.startswith('add'):
  1627. if link in self.c.server.textToolsSiteList['server']['ipbans']:
  1628. self.c.sendMessage('<BL>IP adicionado com sucesso!')
  1629. else:
  1630. self.c.server.textToolsSiteList['server']['ipbans'].append(link)
  1631. self.c.sendMessage('<V>'+link+' <BL>foi adicionado com sucesso na lista!')
  1632. sucess = True
  1633. elif link in self.c.server.textToolsSiteList['server']['ipbans']:
  1634. self.c.server.textToolsSiteList['server']['ipbans'].remove(link)
  1635. self.c.sendMessage('<V>'+link+' <BL>foi removido da lista!')
  1636. sucess = True
  1637. else:
  1638. self.c.sendMessage('<BL>IP não existe!')
  1639. if list in 'suspectwords':
  1640. link = link.replace(' ', '')
  1641. if _.startswith('add'):
  1642. if link in self.c.server.textToolsSiteList['server']['suspectwords']:
  1643. self.c.sendMessage('<BL>Word adicionado!')
  1644. else:
  1645. self.c.server.textToolsSiteList['server']['suspectwords'].append(link)
  1646. self.c.sendMessage('<V>'+link+' <BL>foi adicionado com sucesso na lista!')
  1647. sucess = True
  1648. elif link in self.c.server.textToolsSiteList['server']['suspectwords']:
  1649. self.server.textToolsSiteList['server']['suspectwords'].remove(link)
  1650. self.c.sendMessage('<V>'+link+' <BL>foi removido da lista!')
  1651. sucess = True
  1652. else:
  1653. self.c.sendMessage('<BL>Word não existe!')
  1654. if sucess:
  1655. self.c.server.doSaveTextDictList('siteslist')
  1656.  
  1657. elif self.lenEvent(3):
  1658. _, Type = event_raw.split(' ', 1)
  1659. if Type in ('help', 'ajuda', '?', '!'):
  1660. message = '[<J>Ajuda<BL>] Como usar:'
  1661. message += '\n&gt;&gt; Use: <G>/{c} [List] [Param]'.format(c=_)
  1662. message += '\n<J>&gt;&gt; Exemplo: <G>/{c} [blacklist] [domainname.com]'.format(c=_)
  1663. message += '\n<J>&gt;&gt; List disponíveis: [blacklist, whitelist, allowdomain, ipbans, suspectwords]'
  1664. self.c.sendMessage([message])
  1665.  
  1666. elif event == "unrank":
  1667. if self.c.privilegeLevel >= 10:
  1668. username = self.c.TFMUtils.parsePlayerName(args[0])
  1669. if not self.c.server.checkExistingUsers(username):
  1670. self.c.sendMessage("Não foi possível encontrar o usuário: <V>"+username+"<BL>.")
  1671. else:
  1672. player = self.c.server.players.get(username)
  1673. if player != None:
  1674. player.room.removeClient(player)
  1675. player.transport.loseConnection()
  1676. self.Database.execute("update users set first = 0, cheese = 0, saves = 0, HardModeSaves = 0, DivineModeSaves = 0, bootcamp = 0, shamcheese = 0 where name = ?", [username])
  1677. self.c.sendAllModMessageChannel("Servidor", "<V>"+username+"<BL> foi retirado do ranking por <V>"+self.c.username+"<BL>.")
  1678.  
  1679. elif event == "move":
  1680. if self.c.privilegeLevel >= 5:
  1681. username = self.c.TFMUtils.parsePlayerName(args[0])
  1682. self.c.room.moveAllRoomClients(username, False)
  1683. else:
  1684. self.c.sendMessage('<ROSE>[+] <J>Colete <ROSE><b>5 queijos</b><J> para liberar os comandos. \nVocê possui <b><font color="#66CDAA">'+str(self.c.cheesecount)+'</font></b> <J>queijos coletados.')
  1685.  
  1686. class UserWarning(Exception):
  1687. pass
Add Comment
Please, Sign In to add comment