mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-23 11:42:39 -06:00
Made it not crash uberdog lel
This commit is contained in:
parent
d251898a11
commit
72b6ef5afd
6 changed files with 119 additions and 44 deletions
|
@ -43,9 +43,9 @@ def chatmode(mode=-1):
|
||||||
return "You are currently talking in the %s chat mode." % mode2name.get(base.cr.chatAgent.chatMode, "N/A")
|
return "You are currently talking in the %s chat mode." % mode2name.get(base.cr.chatAgent.chatMode, "N/A")
|
||||||
if not 0 <= mode <= 3:
|
if not 0 <= mode <= 3:
|
||||||
return "Invalid chat mode specified."
|
return "Invalid chat mode specified."
|
||||||
if mode == 3 and spellbook.getInvoker().getAdminAccess() < 500:
|
if mode == 3 and spellbook.getInvoker().getAdminAccess() < 600:
|
||||||
return "Chat mode 3 is reserved for system administrators."
|
return "Chat mode 3 is reserved for system administrators."
|
||||||
if mode == 2 and spellbook.getInvoker().getAdminAccess() < 400:
|
if mode == 2 and spellbook.getInvoker().getAdminAccess() < 500:
|
||||||
return "Chat mode 2 is reserved for administrators."
|
return "Chat mode 2 is reserved for administrators."
|
||||||
if mode == 1 and spellbook.getInvoker().getAdminAccess() < 200:
|
if mode == 1 and spellbook.getInvoker().getAdminAccess() < 200:
|
||||||
# Like this will ever happen, but whatever.
|
# Like this will ever happen, but whatever.
|
||||||
|
|
|
@ -27,17 +27,7 @@ class ChatAgentUD(DistributedObjectGlobalUD):
|
||||||
2 : "[ADMIN] ",
|
2 : "[ADMIN] ",
|
||||||
3 : "[SYSADMIN] ",
|
3 : "[SYSADMIN] ",
|
||||||
}
|
}
|
||||||
|
|
||||||
self.muted = {}
|
|
||||||
|
|
||||||
def muteAccount(self, account, howLong):
|
|
||||||
print ['muteAccount', account, howLong]
|
|
||||||
self.muted[account] = int(time.time()/60) + howLong
|
|
||||||
|
|
||||||
def unmuteAccount(self, account):
|
|
||||||
print ['unmuteAccount', account]
|
|
||||||
if account in self.muted:
|
|
||||||
del self.muted[account]
|
|
||||||
# Open chat
|
# Open chat
|
||||||
def chatMessage(self, message, chatMode):
|
def chatMessage(self, message, chatMode):
|
||||||
sender = self.air.getAvatarIdFromSender()
|
sender = self.air.getAvatarIdFromSender()
|
||||||
|
@ -46,9 +36,6 @@ class ChatAgentUD(DistributedObjectGlobalUD):
|
||||||
issue='Account sent chat without an avatar', message=message)
|
issue='Account sent chat without an avatar', message=message)
|
||||||
return
|
return
|
||||||
|
|
||||||
if sender in self.muted and int(time.time()/60) < self.muted[sender]:
|
|
||||||
return
|
|
||||||
|
|
||||||
if self.wantWhitelist:
|
if self.wantWhitelist:
|
||||||
cleanMessage, modifications = self.cleanWhitelist(message)
|
cleanMessage, modifications = self.cleanWhitelist(message)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -4,6 +4,10 @@ from direct.fsm import State
|
||||||
from direct.gui.DirectGui import *
|
from direct.gui.DirectGui import *
|
||||||
from direct.showbase import DirectObject
|
from direct.showbase import DirectObject
|
||||||
from pandac.PandaModules import *
|
from pandac.PandaModules import *
|
||||||
|
|
||||||
|
from otp.login import LeaveToPayDialog
|
||||||
|
from otp.login import PrivacyPolicyPanel
|
||||||
|
from otp.login import SecretFriendsInfoPanel
|
||||||
from otp.otpbase import OTPLocalizer
|
from otp.otpbase import OTPLocalizer
|
||||||
from toontown.chat.ChatGlobals import *
|
from toontown.chat.ChatGlobals import *
|
||||||
|
|
||||||
|
@ -45,13 +49,17 @@ class ChatManager(DirectObject.DirectObject):
|
||||||
self.__normalObscured = 0
|
self.__normalObscured = 0
|
||||||
self.openChatWarning = None
|
self.openChatWarning = None
|
||||||
self.unpaidChatWarning = None
|
self.unpaidChatWarning = None
|
||||||
|
self.teaser = None
|
||||||
self.paidNoParentPassword = None
|
self.paidNoParentPassword = None
|
||||||
self.noSecretChatAtAll = None
|
self.noSecretChatAtAll = None
|
||||||
self.noSecretChatAtAllAndNoWhitelist = None
|
self.noSecretChatAtAllAndNoWhitelist = None
|
||||||
self.noSecretChatWarning = None
|
self.noSecretChatWarning = None
|
||||||
self.activateChatGui = None
|
self.activateChatGui = None
|
||||||
|
self.chatMoreInfo = None
|
||||||
|
self.chatPrivacyPolicy = None
|
||||||
self.secretChatActivated = None
|
self.secretChatActivated = None
|
||||||
self.problemActivatingChat = None
|
self.problemActivatingChat = None
|
||||||
|
self.leaveToPayDialog = None
|
||||||
self.fsm = ClassicFSM.ClassicFSM('chatManager', [State.State('off', self.enterOff, self.exitOff),
|
self.fsm = ClassicFSM.ClassicFSM('chatManager', [State.State('off', self.enterOff, self.exitOff),
|
||||||
State.State('mainMenu', self.enterMainMenu, self.exitMainMenu),
|
State.State('mainMenu', self.enterMainMenu, self.exitMainMenu),
|
||||||
State.State('speedChat', self.enterSpeedChat, self.exitSpeedChat),
|
State.State('speedChat', self.enterSpeedChat, self.exitSpeedChat),
|
||||||
|
@ -62,6 +70,7 @@ class ChatManager(DirectObject.DirectObject):
|
||||||
State.State('whisperSpeedChat', self.enterWhisperSpeedChat, self.exitWhisperSpeedChat),
|
State.State('whisperSpeedChat', self.enterWhisperSpeedChat, self.exitWhisperSpeedChat),
|
||||||
State.State('whisperSpeedChatPlayer', self.enterWhisperSpeedChatPlayer, self.exitWhisperSpeedChatPlayer),
|
State.State('whisperSpeedChatPlayer', self.enterWhisperSpeedChatPlayer, self.exitWhisperSpeedChatPlayer),
|
||||||
State.State('openChatWarning', self.enterOpenChatWarning, self.exitOpenChatWarning),
|
State.State('openChatWarning', self.enterOpenChatWarning, self.exitOpenChatWarning),
|
||||||
|
State.State('leaveToPayDialog', self.enterLeaveToPayDialog, self.exitLeaveToPayDialog),
|
||||||
State.State('unpaidChatWarning', self.enterUnpaidChatWarning, self.exitUnpaidChatWarning),
|
State.State('unpaidChatWarning', self.enterUnpaidChatWarning, self.exitUnpaidChatWarning),
|
||||||
State.State('noSecretChatAtAll', self.enterNoSecretChatAtAll, self.exitNoSecretChatAtAll),
|
State.State('noSecretChatAtAll', self.enterNoSecretChatAtAll, self.exitNoSecretChatAtAll),
|
||||||
State.State('noSecretChatAtAllAndNoWhitelist', self.enterNoSecretChatAtAllAndNoWhitelist, self.exitNoSecretChatAtAllAndNoWhitelist),
|
State.State('noSecretChatAtAllAndNoWhitelist', self.enterNoSecretChatAtAllAndNoWhitelist, self.exitNoSecretChatAtAllAndNoWhitelist),
|
||||||
|
@ -69,11 +78,14 @@ class ChatManager(DirectObject.DirectObject):
|
||||||
State.State('noFriendsWarning', self.enterNoFriendsWarning, self.exitNoFriendsWarning),
|
State.State('noFriendsWarning', self.enterNoFriendsWarning, self.exitNoFriendsWarning),
|
||||||
State.State('otherDialog', self.enterOtherDialog, self.exitOtherDialog),
|
State.State('otherDialog', self.enterOtherDialog, self.exitOtherDialog),
|
||||||
State.State('activateChat', self.enterActivateChat, self.exitActivateChat),
|
State.State('activateChat', self.enterActivateChat, self.exitActivateChat),
|
||||||
|
State.State('chatMoreInfo', self.enterChatMoreInfo, self.exitChatMoreInfo),
|
||||||
|
State.State('chatPrivacyPolicy', self.enterChatPrivacyPolicy, self.exitChatPrivacyPolicy),
|
||||||
State.State('secretChatActivated', self.enterSecretChatActivated, self.exitSecretChatActivated),
|
State.State('secretChatActivated', self.enterSecretChatActivated, self.exitSecretChatActivated),
|
||||||
State.State('problemActivatingChat', self.enterProblemActivatingChat, self.exitProblemActivatingChat),
|
State.State('problemActivatingChat', self.enterProblemActivatingChat, self.exitProblemActivatingChat),
|
||||||
State.State('whiteListOpenChat', self.enterWhiteListOpenChat, self.exitWhiteListOpenChat),
|
State.State('whiteListOpenChat', self.enterWhiteListOpenChat, self.exitWhiteListOpenChat),
|
||||||
State.State('whiteListAvatarChat', self.enterWhiteListAvatarChat, self.exitWhiteListAvatarChat),
|
State.State('whiteListAvatarChat', self.enterWhiteListAvatarChat, self.exitWhiteListAvatarChat),
|
||||||
State.State('whiteListPlayerChat', self.enterWhiteListPlayerChat, self.exitWhiteListPlayerChat)], 'off', 'off')
|
State.State('whiteListPlayerChat', self.enterWhiteListPlayerChat, self.exitWhiteListPlayerChat),
|
||||||
|
State.State('trueFriendTeaserPanel', self.enterTrueFriendTeaserPanel, self.exitTrueFriendTeaserPanel)], 'off', 'off')
|
||||||
self.fsm.enterInitialState()
|
self.fsm.enterInitialState()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -93,6 +105,10 @@ class ChatManager(DirectObject.DirectObject):
|
||||||
self.payButton = None
|
self.payButton = None
|
||||||
self.unpaidChatWarning.destroy()
|
self.unpaidChatWarning.destroy()
|
||||||
self.unpaidChatWarning = None
|
self.unpaidChatWarning = None
|
||||||
|
if self.teaser:
|
||||||
|
self.teaser.cleanup()
|
||||||
|
self.teaser.unload()
|
||||||
|
self.teaser = None
|
||||||
if self.noSecretChatAtAll:
|
if self.noSecretChatAtAll:
|
||||||
self.noSecretChatAtAll.destroy()
|
self.noSecretChatAtAll.destroy()
|
||||||
self.noSecretChatAtAll = None
|
self.noSecretChatAtAll = None
|
||||||
|
@ -105,6 +121,12 @@ class ChatManager(DirectObject.DirectObject):
|
||||||
if self.activateChatGui:
|
if self.activateChatGui:
|
||||||
self.activateChatGui.destroy()
|
self.activateChatGui.destroy()
|
||||||
self.activateChatGui = None
|
self.activateChatGui = None
|
||||||
|
if self.chatMoreInfo:
|
||||||
|
self.chatMoreInfo.destroy()
|
||||||
|
self.chatMoreInfo = None
|
||||||
|
if self.chatPrivacyPolicy:
|
||||||
|
self.chatPrivacyPolicy.destroy()
|
||||||
|
self.chatPrivacyPolicy = None
|
||||||
if self.secretChatActivated:
|
if self.secretChatActivated:
|
||||||
self.secretChatActivated.destroy()
|
self.secretChatActivated.destroy()
|
||||||
self.secretChatActivated = None
|
self.secretChatActivated = None
|
||||||
|
@ -196,6 +218,8 @@ class ChatManager(DirectObject.DirectObject):
|
||||||
if self.wantBackgroundFocus:
|
if self.wantBackgroundFocus:
|
||||||
self.chatInputNormal.chatEntry['backgroundFocus'] = 1
|
self.chatInputNormal.chatEntry['backgroundFocus'] = 1
|
||||||
self.acceptOnce('enterNormalChat', self.fsm.request, ['normalChat'])
|
self.acceptOnce('enterNormalChat', self.fsm.request, ['normalChat'])
|
||||||
|
if not self.wantBackgroundFocus:
|
||||||
|
self.accept('t', messenger.send, ['enterNormalChat'])
|
||||||
|
|
||||||
def checkObscurred(self):
|
def checkObscurred(self):
|
||||||
if not self.__scObscured:
|
if not self.__scObscured:
|
||||||
|
@ -387,6 +411,19 @@ class ChatManager(DirectObject.DirectObject):
|
||||||
def exitOpenChatWarning(self):
|
def exitOpenChatWarning(self):
|
||||||
self.notify.error('called exitOpenChatWarning() on parent class')
|
self.notify.error('called exitOpenChatWarning() on parent class')
|
||||||
|
|
||||||
|
def enterLeaveToPayDialog(self):
|
||||||
|
if self.leaveToPayDialog == None:
|
||||||
|
self.leaveToPayDialog = LeaveToPayDialog.LeaveToPayDialog(self.paidNoParentPassword)
|
||||||
|
self.leaveToPayDialog.setCancel(self.__handleLeaveToPayCancel)
|
||||||
|
self.leaveToPayDialog.show()
|
||||||
|
return
|
||||||
|
|
||||||
|
def exitLeaveToPayDialog(self):
|
||||||
|
if self.leaveToPayDialog:
|
||||||
|
self.leaveToPayDialog.destroy()
|
||||||
|
self.leaveToPayDialog = None
|
||||||
|
return
|
||||||
|
|
||||||
def enterUnpaidChatWarning(self):
|
def enterUnpaidChatWarning(self):
|
||||||
self.notify.error('called enterUnpaidChatWarning() on parent class')
|
self.notify.error('called enterUnpaidChatWarning() on parent class')
|
||||||
|
|
||||||
|
@ -429,6 +466,30 @@ class ChatManager(DirectObject.DirectObject):
|
||||||
def exitOtherDialog(self):
|
def exitOtherDialog(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def enterChatMoreInfo(self):
|
||||||
|
if self.chatMoreInfo == None:
|
||||||
|
self.chatMoreInfo = SecretFriendsInfoPanel.SecretFriendsInfoPanel('secretFriendsInfoDone')
|
||||||
|
self.chatMoreInfo.show()
|
||||||
|
self.accept('secretFriendsInfoDone', self.__secretFriendsInfoDone)
|
||||||
|
return
|
||||||
|
|
||||||
|
def exitChatMoreInfo(self):
|
||||||
|
self.chatMoreInfo.hide()
|
||||||
|
self.ignore('secretFriendsInfoDone')
|
||||||
|
|
||||||
|
def enterChatPrivacyPolicy(self):
|
||||||
|
if self.chatPrivacyPolicy == None:
|
||||||
|
self.chatPrivacyPolicy = PrivacyPolicyPanel.PrivacyPolicyPanel('privacyPolicyDone')
|
||||||
|
self.chatPrivacyPolicy.show()
|
||||||
|
self.accept('privacyPolicyDone', self.__privacyPolicyDone)
|
||||||
|
return
|
||||||
|
|
||||||
|
def exitChatPrivacyPolicy(self):
|
||||||
|
cleanupDialog('privacyPolicyDialog')
|
||||||
|
self.chatPrivacyPolicy = None
|
||||||
|
self.ignore('privacyPolicyDone')
|
||||||
|
return
|
||||||
|
|
||||||
def enterSecretChatActivated(self):
|
def enterSecretChatActivated(self):
|
||||||
self.notify.error('called enterSecretChatActivated() on parent class')
|
self.notify.error('called enterSecretChatActivated() on parent class')
|
||||||
|
|
||||||
|
@ -439,4 +500,19 @@ class ChatManager(DirectObject.DirectObject):
|
||||||
self.notify.error('called enterProblemActivatingChat() on parent class')
|
self.notify.error('called enterProblemActivatingChat() on parent class')
|
||||||
|
|
||||||
def exitProblemActivatingChat(self):
|
def exitProblemActivatingChat(self):
|
||||||
self.notify.error('called exitProblemActivatingChat() on parent class')
|
self.notify.error('called exitProblemActivatingChat() on parent class')
|
||||||
|
|
||||||
|
def enterTrueFriendTeaserPanel(self):
|
||||||
|
self.notify.error('called enterTrueFriendTeaserPanel () on parent class')
|
||||||
|
|
||||||
|
def exitTrueFriendTeaserPanel(self):
|
||||||
|
self.notify.error('called exitTrueFriendTeaserPanel () on parent class')
|
||||||
|
|
||||||
|
def __handleLeaveToPayCancel(self):
|
||||||
|
self.fsm.request('mainMenu')
|
||||||
|
|
||||||
|
def __secretFriendsInfoDone(self):
|
||||||
|
self.fsm.request('activateChat')
|
||||||
|
|
||||||
|
def __privacyPolicyDone(self):
|
||||||
|
self.fsm.request('activateChat')
|
||||||
|
|
|
@ -574,6 +574,10 @@ class TalkAssistant(DirectObject.DirectObject):
|
||||||
def sendOpenTalk(self, message):
|
def sendOpenTalk(self, message):
|
||||||
error = None
|
error = None
|
||||||
doId = base.localAvatar.doId
|
doId = base.localAvatar.doId
|
||||||
|
try:
|
||||||
|
message.encode('ascii')
|
||||||
|
except UnicodeEncodeError:
|
||||||
|
return
|
||||||
if base.config.GetBool('want-talkative-tyler', False):
|
if base.config.GetBool('want-talkative-tyler', False):
|
||||||
if base.localAvatar.zoneId == 2000:
|
if base.localAvatar.zoneId == 2000:
|
||||||
tyler = base.cr.doFind('Talkative Tyler')
|
tyler = base.cr.doFind('Talkative Tyler')
|
||||||
|
@ -606,7 +610,7 @@ class TalkAssistant(DirectObject.DirectObject):
|
||||||
|
|
||||||
message, scrubbed = base.localAvatar.scrubTalk(cleanMessage, modifications)
|
message, scrubbed = base.localAvatar.scrubTalk(cleanMessage, modifications)
|
||||||
|
|
||||||
base.cr.ttuFriendsManager.sendUpdate('sendTalkWhisper', [receiverAvId, message])
|
base.cr.ttiFriendsManager.sendUpdate('sendTalkWhisper', [receiverAvId, message])
|
||||||
|
|
||||||
def sendAccountTalk(self, message, receiverAccount):
|
def sendAccountTalk(self, message, receiverAccount):
|
||||||
error = None
|
error = None
|
||||||
|
@ -667,8 +671,24 @@ class TalkAssistant(DirectObject.DirectObject):
|
||||||
return error
|
return error
|
||||||
|
|
||||||
def sendPlayerWhisperSpeedChat(self, type, messageIndex, receiverId):
|
def sendPlayerWhisperSpeedChat(self, type, messageIndex, receiverId):
|
||||||
# TODO: Remove Player system
|
error = None
|
||||||
return None
|
if type == SPEEDCHAT_NORMAL:
|
||||||
|
base.cr.speedchatRelay.sendSpeedchat(receiverId, messageIndex)
|
||||||
|
message = self.SCDecoder.decodeSCStaticTextMsg(messageIndex)
|
||||||
|
elif type == SPEEDCHAT_EMOTE:
|
||||||
|
base.cr.speedchatRelay.sendSpeedchatEmote(receiverId, messageIndex)
|
||||||
|
message = self.SCDecoder.decodeSCEmoteWhisperMsg(messageIndex, localAvatar.getName())
|
||||||
|
return
|
||||||
|
elif type == SPEEDCHAT_CUSTOM:
|
||||||
|
base.cr.speedchatRelay.sendSpeedchatCustom(receiverId, messageIndex)
|
||||||
|
message = self.SCDecoder.decodeSCCustomMsg(messageIndex)
|
||||||
|
if self.logWhispers:
|
||||||
|
receiverName = self.findName(receiverId, 1)
|
||||||
|
newMessage = TalkMessage(self.countMessage(), self.stampTime(), message, localAvatar.doId, localAvatar.getName(), localAvatar.DISLid, localAvatar.DISLname, None, None, receiverId, receiverName, TALK_ACCOUNT, None)
|
||||||
|
self.historyComplete.append(newMessage)
|
||||||
|
self.addToHistoryDoId(newMessage, localAvatar.doId)
|
||||||
|
messenger.send('NewOpenMessage', [newMessage])
|
||||||
|
return error
|
||||||
|
|
||||||
def sendGuildSpeedChat(self, type, msgIndex):
|
def sendGuildSpeedChat(self, type, msgIndex):
|
||||||
error = None
|
error = None
|
||||||
|
|
|
@ -1,41 +1,27 @@
|
||||||
from bisect import bisect_left
|
from bisect import bisect_left
|
||||||
import string
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
|
|
||||||
class WhiteList:
|
class WhiteList:
|
||||||
|
def __init__(self, words):
|
||||||
def __init__(self, wordlist):
|
self.words = words
|
||||||
self.words = []
|
|
||||||
for line in wordlist:
|
|
||||||
self.words.append(line.strip('\n\r').lower())
|
|
||||||
|
|
||||||
self.words.sort()
|
|
||||||
self.numWords = len(self.words)
|
self.numWords = len(self.words)
|
||||||
|
|
||||||
def cleanText(self, text):
|
def cleanText(self, text):
|
||||||
text = text.strip('.,?!')
|
text = text.strip('.,?!')
|
||||||
text = text.lower()
|
return text.lower()
|
||||||
return text
|
|
||||||
|
|
||||||
def isWord(self, text):
|
def isWord(self, text):
|
||||||
try:
|
return self.cleanText(text) in self.words
|
||||||
text = self.cleanText(text)
|
|
||||||
i = bisect_left(self.words, text)
|
|
||||||
if i == self.numWords:
|
|
||||||
return False
|
|
||||||
return self.words[i] == text
|
|
||||||
except UnicodeDecodeError:
|
|
||||||
return False # Lets not open ourselves up to obscure keyboards...
|
|
||||||
|
|
||||||
|
|
||||||
def isPrefix(self, text):
|
def isPrefix(self, text):
|
||||||
text = self.cleanText(text)
|
text = self.cleanText(text)
|
||||||
i = bisect_left(self.words, text)
|
i = bisect_left(self.words, text)
|
||||||
|
|
||||||
if i == self.numWords:
|
if i == self.numWords:
|
||||||
return False
|
return False
|
||||||
return self.words[i].startswith(text)
|
|
||||||
|
|
||||||
|
return self.words[i].startswith(text)
|
||||||
|
|
||||||
def prefixCount(self, text):
|
def prefixCount(self, text):
|
||||||
text = self.cleanText(text)
|
text = self.cleanText(text)
|
||||||
i = bisect_left(self.words, text)
|
i = bisect_left(self.words, text)
|
||||||
|
@ -52,4 +38,4 @@ class WhiteList:
|
||||||
while j < self.numWords and self.words[j].startswith(text):
|
while j < self.numWords and self.words[j].startswith(text):
|
||||||
j += 1
|
j += 1
|
||||||
|
|
||||||
return self.words[i:j]
|
return self.words[i:j]
|
||||||
|
|
|
@ -101,6 +101,12 @@ class AccountDB:
|
||||||
def lookup(self, username, callback):
|
def lookup(self, username, callback):
|
||||||
pass # Inheritors should override this.
|
pass # Inheritors should override this.
|
||||||
|
|
||||||
|
def persistMessage(self, category, description, sender, receiver):
|
||||||
|
print ['persistMessage', category, description, sender, receiver]
|
||||||
|
|
||||||
|
def persistChat(self, sender, message, channel):
|
||||||
|
pass
|
||||||
|
|
||||||
def storeAccountID(self, userId, accountId, callback):
|
def storeAccountID(self, userId, accountId, callback):
|
||||||
self.dbm[str(userId)] = str(accountId) # anydbm only allows strings.
|
self.dbm[str(userId)] = str(accountId) # anydbm only allows strings.
|
||||||
if getattr(self.dbm, 'sync', None):
|
if getattr(self.dbm, 'sync', None):
|
||||||
|
|
Loading…
Reference in a new issue