mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-24 04:02:40 -06:00
More name changing
god fucking damn voltage
This commit is contained in:
parent
b23c33c957
commit
834e0f4385
29 changed files with 94 additions and 95 deletions
|
@ -1,6 +1,6 @@
|
||||||
# src #
|
# src #
|
||||||
|
|
||||||
The source code for Toontown United.
|
The source code for Toontown Stride.
|
||||||
|
|
||||||
### What is this repository for? ###
|
### What is this repository for? ###
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ read -p "Base channel (DEFAULT: 401000000): " BASE_CHANNEL
|
||||||
BASE_CHANNEL=${BASE_CHANNEL:-401000000}
|
BASE_CHANNEL=${BASE_CHANNEL:-401000000}
|
||||||
|
|
||||||
echo "==============================="
|
echo "==============================="
|
||||||
echo "Starting Toontown United AI server..."
|
echo "Starting Toontown Stride AI server..."
|
||||||
echo "District name: $DISTRICT_NAME"
|
echo "District name: $DISTRICT_NAME"
|
||||||
echo "Base channel: $BASE_CHANNEL"
|
echo "Base channel: $BASE_CHANNEL"
|
||||||
echo "Max channels: $MAX_CHANNELS"
|
echo "Max channels: $MAX_CHANNELS"
|
||||||
|
|
|
@ -12,7 +12,7 @@ read -p "Base channel (DEFAULT: 1000000): " BASE_CHANNEL
|
||||||
BASE_CHANNEL=${BASE_CHANNEL:-1000000}
|
BASE_CHANNEL=${BASE_CHANNEL:-1000000}
|
||||||
|
|
||||||
echo "==============================="
|
echo "==============================="
|
||||||
echo "Starting Toontown United UberDOG server..."
|
echo "Starting Toontown Stride UberDOG server..."
|
||||||
echo "Base channel: $BASE_CHANNEL"
|
echo "Base channel: $BASE_CHANNEL"
|
||||||
echo "Max channels: $MAX_CHANNELS"
|
echo "Max channels: $MAX_CHANNELS"
|
||||||
echo "State Server: $STATESERVER"
|
echo "State Server: $STATESERVER"
|
||||||
|
|
|
@ -5,18 +5,18 @@ export DYLD_LIBRARY_PATH=`pwd`/Libraries.bundle
|
||||||
export DYLD_FRAMEWORK_PATH="Frameworks"
|
export DYLD_FRAMEWORK_PATH="Frameworks"
|
||||||
|
|
||||||
# Get the user input:
|
# Get the user input:
|
||||||
read -p "Username: " ttuUsername
|
read -p "Username: " ttsUsername
|
||||||
|
|
||||||
# Export the environment variables:
|
# Export the environment variables:
|
||||||
export ttuUsername=$ttuUsername
|
export ttsUsername=$ttsUsername
|
||||||
export ttuPassword="password"
|
export ttsPassword="password"
|
||||||
export TTU_PLAYCOOKIE=$ttuUsername
|
export TTS_PLAYCOOKIE=$ttsUsername
|
||||||
export TTU_GAMESERVER="127.0.0.1"
|
export TTS_GAMESERVER="127.0.0.1"
|
||||||
|
|
||||||
echo "==============================="
|
echo "==============================="
|
||||||
echo "Starting Toontown United..."
|
echo "Starting Toontown Stride..."
|
||||||
echo "Username: $ttuUsername"
|
echo "Username: $ttsUsername"
|
||||||
echo "Gameserver: $TTU_GAMESERVER"
|
echo "Gameserver: $TTS_GAMESERVER"
|
||||||
echo "==============================="
|
echo "==============================="
|
||||||
|
|
||||||
ppython -m toontown.toonbase.ClientStart
|
ppython -m toontown.toonbase.ClientStart
|
||||||
|
|
|
@ -5,22 +5,22 @@ export DYLD_LIBRARY_PATH=`pwd`/Libraries.bundle
|
||||||
export DYLD_FRAMEWORK_PATH="Frameworks"
|
export DYLD_FRAMEWORK_PATH="Frameworks"
|
||||||
|
|
||||||
# Get the user input:
|
# Get the user input:
|
||||||
read -p "Username: " ttuUsername
|
read -p "Username: " ttsUsername
|
||||||
read -s -p "Password: " ttuPassword
|
read -s -p "Password: " ttsPassword
|
||||||
echo
|
echo
|
||||||
read -p "Gameserver (DEFAULT: 167.114.28.238): " TTU_GAMESERVER
|
read -p "Gameserver (DEFAULT: 167.114.28.238): " TTS_GAMESERVER
|
||||||
TTU_GAMESERVER=${TTU_GAMESERVER:-"167.114.28.238"}
|
TTS_GAMESERVER=${TTS_GAMESERVER:-"167.114.28.238"}
|
||||||
|
|
||||||
# Export the environment variables:
|
# Export the environment variables:
|
||||||
export ttuUsername=$ttuUsername
|
export ttsUsername=$ttsUsername
|
||||||
export ttuPassword=$ttuPassword
|
export ttsPassword=$ttsPassword
|
||||||
export TTU_PLAYCOOKIE=$ttuUsername
|
export TTS_PLAYCOOKIE=$ttsUsername
|
||||||
export TTU_GAMESERVER=$TTU_GAMESERVER
|
export TTS_GAMESERVER=$TTS_GAMESERVER
|
||||||
|
|
||||||
echo "==============================="
|
echo "==============================="
|
||||||
echo "Starting Toontown United..."
|
echo "Starting Toontown Stride..."
|
||||||
echo "Username: $ttuUsername"
|
echo "Username: $ttsUsername"
|
||||||
echo "Gameserver: $TTU_GAMESERVER"
|
echo "Gameserver: $TTS_GAMESERVER"
|
||||||
echo "==============================="
|
echo "==============================="
|
||||||
|
|
||||||
ppython -m toontown.toonbase.ClientStartRemoteDB
|
ppython -m toontown.toonbase.ClientStartRemoteDB
|
||||||
|
|
|
@ -5,20 +5,20 @@ export DYLD_LIBRARY_PATH=`pwd`/Libraries.bundle
|
||||||
export DYLD_FRAMEWORK_PATH="Frameworks"
|
export DYLD_FRAMEWORK_PATH="Frameworks"
|
||||||
|
|
||||||
# Get the user input:
|
# Get the user input:
|
||||||
read -p "Username: " ttuUsername
|
read -p "Username: " ttsUsername
|
||||||
read -p "Gameserver (DEFAULT: 167.114.28.238): " TTU_GAMESERVER
|
read -p "Gameserver (DEFAULT: 167.114.28.238): " TTS_GAMESERVER
|
||||||
TTU_GAMESERVER=${TTU_GAMESERVER:-"167.114.28.238"}
|
TTS_GAMESERVER=${TTS_GAMESERVER:-"167.114.28.238"}
|
||||||
|
|
||||||
# Export the environment variables:
|
# Export the environment variables:
|
||||||
export ttuUsername=$ttuUsername
|
export ttsUsername=$ttsUsername
|
||||||
export ttuPassword="password"
|
export ttsPassword="password"
|
||||||
export TTU_PLAYCOOKIE=$ttuUsername
|
export TTS_PLAYCOOKIE=$ttsUsername
|
||||||
export TTU_GAMESERVER=$TTU_GAMESERVER
|
export TTS_GAMESERVER=$TTS_GAMESERVER
|
||||||
|
|
||||||
echo "==============================="
|
echo "==============================="
|
||||||
echo "Starting Toontown United..."
|
echo "Starting Toontown Stride..."
|
||||||
echo "Username: $ttuUsername"
|
echo "Username: $ttsUsername"
|
||||||
echo "Gameserver: $TTU_GAMESERVER"
|
echo "Gameserver: $TTS_GAMESERVER"
|
||||||
echo "==============================="
|
echo "==============================="
|
||||||
|
|
||||||
ppython -m toontown.toonbase.ClientStart
|
ppython -m toontown.toonbase.ClientStart
|
||||||
|
|
8
deployment/.gitignore
vendored
8
deployment/.gitignore
vendored
|
@ -1,7 +1,7 @@
|
||||||
unitedcipher
|
stridecipher
|
||||||
unitedcipher.exe
|
stridecipher.exe
|
||||||
united
|
stride
|
||||||
united.exe
|
stride.exe
|
||||||
upx.exe
|
upx.exe
|
||||||
src
|
src
|
||||||
build
|
build
|
||||||
|
|
|
@ -26,7 +26,7 @@ print 'Starting the deployment process...'
|
||||||
|
|
||||||
# Stop the user if they are missing vital files:
|
# Stop the user if they are missing vital files:
|
||||||
missingFiles = []
|
missingFiles = []
|
||||||
for filename in ('deploy.json', 'unitedcipher'):
|
for filename in ('deploy.json', 'stridecipher'):
|
||||||
if sys.platform == 'win32':
|
if sys.platform == 'win32':
|
||||||
# On the Windows platform, if there is no extension, we must infer that
|
# On the Windows platform, if there is no extension, we must infer that
|
||||||
# this is an executable file. Therefore, let's append '.exe':
|
# this is an executable file. Therefore, let's append '.exe':
|
||||||
|
@ -229,9 +229,9 @@ os.system(cmd)
|
||||||
# ...and encrypt the product:
|
# ...and encrypt the product:
|
||||||
os.chdir('build')
|
os.chdir('build')
|
||||||
if sys.platform == 'win32':
|
if sys.platform == 'win32':
|
||||||
os.system('..\\unitedcipher.exe %s GameData.bin' % output)
|
os.system('..\\stridecipher.exe %s GameData.bin' % output)
|
||||||
else:
|
else:
|
||||||
os.system('../unitedcipher %s GameData.bin' % output)
|
os.system('../stridecipher %s GameData.bin' % output)
|
||||||
|
|
||||||
# Copy the necessary patcher includes:
|
# Copy the necessary patcher includes:
|
||||||
for include in patcherIncludes:
|
for include in patcherIncludes:
|
||||||
|
@ -346,7 +346,7 @@ for filepath in updatedFiles:
|
||||||
print 'Compressing %s...' % filepath
|
print 'Compressing %s...' % filepath
|
||||||
compressFile(os.path.join('build', filepath))
|
compressFile(os.path.join('build', filepath))
|
||||||
|
|
||||||
print 'Uploading files to download.toontownunited.com...'
|
print 'Uploading files to download.toontownstride.com...'
|
||||||
ftp = ftplib.FTP(ftpAddress, ftpUsername, ftpPassword)
|
ftp = ftplib.FTP(ftpAddress, ftpUsername, ftpPassword)
|
||||||
ftp.cwd(deployToken)
|
ftp.cwd(deployToken)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Building
|
Building
|
||||||
========
|
========
|
||||||
These documents outline everything you need to know for building a Toontown United client.
|
These documents outline everything you need to know for building a Toontown Stride client.
|
||||||
|
|
||||||
- - -
|
- - -
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Toontown United Style Guidelines
|
Toontown Stride Style Guidelines
|
||||||
==================================
|
==================================
|
||||||
Code and documentation in the master and release branches of the Toontown United repositories must conform to these guidelines. Any code submitted that is not properly formated will be rejected, as it is best to keep a readable, and consistent style for future contributors to read, and understand the code. Don't, however, blindly follow these guidelines into writing unreadable code. Sometimes it is best to use your own judgement.
|
Code and documentation in the master and release branches of the Toontown Stride repositories must conform to these guidelines. Any code submitted that is not properly formated will be rejected, as it is best to keep a readable, and consistent style for future contributors to read, and understand the code. Don't, however, blindly follow these guidelines into writing unreadable code. Sometimes it is best to use your own judgement.
|
||||||
|
|
||||||
- - -
|
- - -
|
||||||
|
|
||||||
|
|
|
@ -135,7 +135,7 @@ class DistributedPlayer(DistributedAvatar.DistributedAvatar, PlayerBase.PlayerBa
|
||||||
|
|
||||||
def whisperSCTo(self, msgIndex, sendToId):
|
def whisperSCTo(self, msgIndex, sendToId):
|
||||||
messenger.send('wakeup')
|
messenger.send('wakeup')
|
||||||
base.cr.ttuFriendsManager.d_whisperSCTo(sendToId, msgIndex)
|
base.cr.ttsFriendsManager.d_whisperSCTo(sendToId, msgIndex)
|
||||||
|
|
||||||
def setWhisperSCFrom(self, fromId, msgIndex):
|
def setWhisperSCFrom(self, fromId, msgIndex):
|
||||||
handle = base.cr.identifyAvatar(fromId)
|
handle = base.cr.identifyAvatar(fromId)
|
||||||
|
@ -149,7 +149,7 @@ class DistributedPlayer(DistributedAvatar.DistributedAvatar, PlayerBase.PlayerBa
|
||||||
|
|
||||||
def whisperSCCustomTo(self, msgIndex, sendToId):
|
def whisperSCCustomTo(self, msgIndex, sendToId):
|
||||||
messenger.send('wakeup')
|
messenger.send('wakeup')
|
||||||
base.cr.ttuFriendsManager.d_whisperSCCustomTo(sendToId, msgIndex)
|
base.cr.ttsFriendsManager.d_whisperSCCustomTo(sendToId, msgIndex)
|
||||||
|
|
||||||
def _isValidWhisperSource(self, source):
|
def _isValidWhisperSource(self, source):
|
||||||
return True
|
return True
|
||||||
|
@ -171,7 +171,7 @@ class DistributedPlayer(DistributedAvatar.DistributedAvatar, PlayerBase.PlayerBa
|
||||||
|
|
||||||
def whisperSCEmoteTo(self, emoteId, sendToId):
|
def whisperSCEmoteTo(self, emoteId, sendToId):
|
||||||
messenger.send('wakeup')
|
messenger.send('wakeup')
|
||||||
base.cr.ttuFriendsManager.d_whisperSCEmoteTo(sendToId, emoteId)
|
base.cr.ttsFriendsManager.d_whisperSCEmoteTo(sendToId, emoteId)
|
||||||
|
|
||||||
def setWhisperSCEmoteFrom(self, fromId, emoteId):
|
def setWhisperSCEmoteFrom(self, fromId, emoteId):
|
||||||
handle = base.cr.identifyAvatar(fromId)
|
handle = base.cr.identifyAvatar(fromId)
|
||||||
|
@ -302,7 +302,7 @@ class DistributedPlayer(DistributedAvatar.DistributedAvatar, PlayerBase.PlayerBa
|
||||||
|
|
||||||
self.lastTeleportQuery = time.time()
|
self.lastTeleportQuery = time.time()
|
||||||
|
|
||||||
base.cr.ttuFriendsManager.d_teleportQuery(sendToId)
|
base.cr.ttsFriendsManager.d_teleportQuery(sendToId)
|
||||||
|
|
||||||
def teleportQuery(self, requesterId):
|
def teleportQuery(self, requesterId):
|
||||||
avatar = base.cr.identifyFriend(requesterId)
|
avatar = base.cr.identifyFriend(requesterId)
|
||||||
|
@ -337,7 +337,7 @@ class DistributedPlayer(DistributedAvatar.DistributedAvatar, PlayerBase.PlayerBa
|
||||||
shardId, hoodId, zoneId, sendToId),)
|
shardId, hoodId, zoneId, sendToId),)
|
||||||
)
|
)
|
||||||
|
|
||||||
base.cr.ttuFriendsManager.d_teleportResponse(sendToId, available,
|
base.cr.ttsFriendsManager.d_teleportResponse(sendToId, available,
|
||||||
shardId, hoodId, zoneId
|
shardId, hoodId, zoneId
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -351,7 +351,7 @@ class DistributedPlayer(DistributedAvatar.DistributedAvatar, PlayerBase.PlayerBa
|
||||||
def d_teleportGiveup(self, requesterId, sendToId):
|
def d_teleportGiveup(self, requesterId, sendToId):
|
||||||
teleportNotify.debug('sending teleportGiveup(%s) to %s' % (requesterId, sendToId))
|
teleportNotify.debug('sending teleportGiveup(%s) to %s' % (requesterId, sendToId))
|
||||||
|
|
||||||
base.cr.ttuFriendsManager.d_teleportGiveup(sendToId)
|
base.cr.ttsFriendsManager.d_teleportGiveup(sendToId)
|
||||||
|
|
||||||
def teleportGiveup(self, requesterId):
|
def teleportGiveup(self, requesterId):
|
||||||
teleportNotify.debug('received teleportGiveup(%s)' % (requesterId,))
|
teleportNotify.debug('received teleportGiveup(%s)' % (requesterId,))
|
||||||
|
|
|
@ -160,7 +160,7 @@ def maintenance(minutes):
|
||||||
dg = PyDatagram()
|
dg = PyDatagram()
|
||||||
dg.addServerHeader(10, simbase.air.ourChannel, CLIENTAGENT_EJECT)
|
dg.addServerHeader(10, simbase.air.ourChannel, CLIENTAGENT_EJECT)
|
||||||
dg.addUint16(154)
|
dg.addUint16(154)
|
||||||
dg.addString('Toontown United is now closed for maintenance.')
|
dg.addString('Toontown Stride is now closed for maintenance.')
|
||||||
simbase.air.send(dg)
|
simbase.air.send(dg)
|
||||||
return Task.done
|
return Task.done
|
||||||
|
|
||||||
|
|
|
@ -418,7 +418,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.ttsFriendsManager.sendUpdate('sendTalkWhisper', [receiverAvId, message])
|
||||||
|
|
||||||
def sendOpenSpeedChat(self, type, messageIndex):
|
def sendOpenSpeedChat(self, type, messageIndex):
|
||||||
error = None
|
error = None
|
||||||
|
|
|
@ -99,7 +99,7 @@ CRBootedReasons = {100: 'You have been disconnected because someone else just lo
|
||||||
101: 'Please relaunch the game from the official launcher.',
|
101: 'Please relaunch the game from the official launcher.',
|
||||||
102: 'You are not authorized to use administrator privileges.',
|
102: 'You are not authorized to use administrator privileges.',
|
||||||
103: 'You were banned by a moderator.\n\nBehave next time!',
|
103: 'You were banned by a moderator.\n\nBehave next time!',
|
||||||
105: 'Toontown United is now temporarily closed for maintenance. Everyone who was playing has been disconnected from the game.\n\nFor more information, please visit the Toontown United website.',
|
105: 'Toontown Stride is now temporarily closed for maintenance. Everyone who was playing has been disconnected from the game.\n\nFor more information, please visit the Toontown Stride website.',
|
||||||
153: 'The district you were playing on has been reset. Everyone who was playing on that district has been disconnected. However, you should be able to connect again and go right back into the game.'}
|
153: 'The district you were playing on has been reset. Everyone who was playing on that district has been disconnected. However, you should be able to connect again and go right back into the game.'}
|
||||||
CRBootedReasonUnknownCode = 'An unexpected problem has occurred (error code %s). Your connection has been lost, but you should be able to connect again and go right back into the game.'
|
CRBootedReasonUnknownCode = 'An unexpected problem has occurred (error code %s). Your connection has been lost, but you should be able to connect again and go right back into the game.'
|
||||||
CRTryConnectAgain = '\n\nTry to connect again?'
|
CRTryConnectAgain = '\n\nTry to connect again?'
|
||||||
|
@ -107,8 +107,8 @@ CRToontownUnavailable = 'The server appears to be temporarily unavailable, still
|
||||||
CRToontownUnavailableCancel = lCancel
|
CRToontownUnavailableCancel = lCancel
|
||||||
CRNameCongratulations = 'CONGRATULATIONS!!'
|
CRNameCongratulations = 'CONGRATULATIONS!!'
|
||||||
CRNameAccepted = 'Your name has been\napproved by the Toon Council.\n\nFrom this day forth\nyou will be named\n"%s"'
|
CRNameAccepted = 'Your name has been\napproved by the Toon Council.\n\nFrom this day forth\nyou will be named\n"%s"'
|
||||||
CRMaintenanceCountdownMessage = 'Attention Toons! Toontown United will be going down for maintenance in %d minutes.'
|
CRMaintenanceCountdownMessage = 'Attention Toons! Toontown Stride will be going down for maintenance in %d minutes.'
|
||||||
CRMaintenanceMessage = 'Attention Toons! Toontown United is now going down for maintenance.'
|
CRMaintenanceMessage = 'Attention Toons! Toontown Stride is now going down for maintenance.'
|
||||||
AfkForceAcknowledgeMessage = 'Your toon got sleepy and went to bed.'
|
AfkForceAcknowledgeMessage = 'Your toon got sleepy and went to bed.'
|
||||||
CREnteringToontown = 'Entering...'
|
CREnteringToontown = 'Entering...'
|
||||||
DialogSpecial = 'ooo'
|
DialogSpecial = 'ooo'
|
||||||
|
|
|
@ -2,7 +2,7 @@ import urllib2
|
||||||
|
|
||||||
def executeHttpRequest(url, agent, **extras):
|
def executeHttpRequest(url, agent, **extras):
|
||||||
request = urllib2.Request('http://127.0.0.1:45749/' + url)
|
request = urllib2.Request('http://127.0.0.1:45749/' + url)
|
||||||
request.add_header('User-Agent', 'TTU-' + agent)
|
request.add_header('User-Agent', 'TTS-' + agent)
|
||||||
request.add_header('Secret-Key', '1X5oN69^#0^fCw7s#uyQTWYJ!8m9z!6Midphf90gMQYl*L5Uy!Ri5KTP6@BbZ5#Tlm37bJAI')
|
request.add_header('Secret-Key', '1X5oN69^#0^fCw7s#uyQTWYJ!8m9z!6Midphf90gMQYl*L5Uy!Ri5KTP6@BbZ5#Tlm37bJAI')
|
||||||
for k, v in extras.items():
|
for k, v in extras.items():
|
||||||
request.add_header(k, v)
|
request.add_header(k, v)
|
||||||
|
|
|
@ -26,7 +26,7 @@ secret = os.urandom(BLOCK_SIZE)
|
||||||
cipher = AES.new( secret, AES.MODE_CBC, secret )
|
cipher = AES.new( secret, AES.MODE_CBC, secret )
|
||||||
|
|
||||||
# encode a string
|
# encode a string
|
||||||
encoded = EncodeAES(cipher, 'tturpclib691256')
|
encoded = EncodeAES(cipher, 'ttsrpclib691256')
|
||||||
print 'Encrypted string:', encoded
|
print 'Encrypted string:', encoded
|
||||||
|
|
||||||
# decode the encoded string
|
# decode the encoded string
|
||||||
|
|
|
@ -2,7 +2,7 @@ import urllib2
|
||||||
|
|
||||||
def executeHttpRequest(url, agent, **extras):
|
def executeHttpRequest(url, agent, **extras):
|
||||||
request = urllib2.Request('http://127.0.0.1:45749/' + url)
|
request = urllib2.Request('http://127.0.0.1:45749/' + url)
|
||||||
request.add_header('User-Agent', 'TTU-' + agent)
|
request.add_header('User-Agent', 'TTS-' + agent)
|
||||||
request.add_header('Secret-Key', '1X5oN69^#0^fCw7s#uyQTWYJ!8m9z!6Midphf90gMQYl*L5Uy!Ri5KTP6@BbZ5#Tlm37bJAI')
|
request.add_header('Secret-Key', '1X5oN69^#0^fCw7s#uyQTWYJ!8m9z!6Midphf90gMQYl*L5Uy!Ri5KTP6@BbZ5#Tlm37bJAI')
|
||||||
for k, v in extras.items():
|
for k, v in extras.items():
|
||||||
request.add_header(k, v)
|
request.add_header(k, v)
|
||||||
|
|
|
@ -54,7 +54,7 @@ def saveChanges():
|
||||||
LOCAL_LIST = WhiteListData.WHITELIST
|
LOCAL_LIST = WhiteListData.WHITELIST
|
||||||
|
|
||||||
|
|
||||||
print 'Welcome to the Toontown United Whitelist Tool!'
|
print 'Welcome to the Toontown Stride Whitelist Tool!'
|
||||||
print 'Type any word you want to add to the whitelist.'
|
print 'Type any word you want to add to the whitelist.'
|
||||||
print 'If you wish to remove a word, type "r <word>".'
|
print 'If you wish to remove a word, type "r <word>".'
|
||||||
print 'When you are done and want to save your changes, type "exit()".'
|
print 'When you are done and want to save your changes, type "exit()".'
|
||||||
|
|
|
@ -8,19 +8,19 @@ import xml.etree.ElementTree as ET
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('--build-dir', default='build',
|
parser.add_argument('--build-dir', default='build',
|
||||||
help='The directory of the Toontown United build.')
|
help='The directory of the Toontown Stride build.')
|
||||||
parser.add_argument('--dest-dir', default='.',
|
parser.add_argument('--dest-dir', default='.',
|
||||||
help='The directory in which to store the patcher.')
|
help='The directory in which to store the patcher.')
|
||||||
parser.add_argument('--output', default='patcher.xml',
|
parser.add_argument('--output', default='patcher.xml',
|
||||||
help='The name of the output file.')
|
help='The name of the output file.')
|
||||||
parser.add_argument('--launcher-version', default='united-dev',
|
parser.add_argument('--launcher-version', default='stride-dev',
|
||||||
help='The current version of the Toontown United launcher.')
|
help='The current version of the Toontown Stride launcher.')
|
||||||
parser.add_argument('--account-server', default='toontownunited.com',
|
parser.add_argument('--account-server', default='toontownstride.com',
|
||||||
help='The address of the Toontown United account server.')
|
help='The address of the Toontown Stride account server.')
|
||||||
parser.add_argument('--client-agent', default='192.99.200.107',
|
parser.add_argument('--client-agent', default='192.99.200.107',
|
||||||
help='The IP address of the Client Agent to connect to.')
|
help='The IP address of the Client Agent to connect to.')
|
||||||
parser.add_argument('--server-version', default='united-dev',
|
parser.add_argument('--server-version', default='stride-dev',
|
||||||
help='The current version of the Toontown United game.')
|
help='The current version of the Toontown Stride game.')
|
||||||
parser.add_argument('--resources-revision', default='',
|
parser.add_argument('--resources-revision', default='',
|
||||||
help='The current revision of the resources repository.')
|
help='The current revision of the resources repository.')
|
||||||
parser.add_argument('includes', nargs='*', default=['GameData.bin'],
|
parser.add_argument('includes', nargs='*', default=['GameData.bin'],
|
||||||
|
@ -71,7 +71,7 @@ print 'Writing %s...' % args.output
|
||||||
# First, add the element:
|
# First, add the element:
|
||||||
patcher = ET.Element('patcher')
|
patcher = ET.Element('patcher')
|
||||||
|
|
||||||
# Next, add the Toontown United launcher version:
|
# Next, add the Toontown Stride launcher version:
|
||||||
launcher_version = ET.SubElement(patcher, 'launcher-version')
|
launcher_version = ET.SubElement(patcher, 'launcher-version')
|
||||||
launcher_version.text = args.launcher_version
|
launcher_version.text = args.launcher_version
|
||||||
|
|
||||||
|
|
|
@ -33158,8 +33158,8 @@ WHITELIST = [
|
||||||
'toonter',
|
'toonter',
|
||||||
'toontorial',
|
'toontorial',
|
||||||
'toontown',
|
'toontown',
|
||||||
'toontownunited',
|
'toontownstride',
|
||||||
'toontownunited.com',
|
'toontownstride.com',
|
||||||
'toontrooper',
|
'toontrooper',
|
||||||
'toontroopers',
|
'toontroopers',
|
||||||
'toonup',
|
'toonup',
|
||||||
|
@ -33719,8 +33719,8 @@ WHITELIST = [
|
||||||
'tti',
|
'tti',
|
||||||
'tto',
|
'tto',
|
||||||
'ttr',
|
'ttr',
|
||||||
'ttu',
|
'tts',
|
||||||
'ttunited',
|
'ttstride',
|
||||||
'ttyl',
|
'ttyl',
|
||||||
'tub',
|
'tub',
|
||||||
'tuba',
|
'tuba',
|
||||||
|
@ -36176,7 +36176,7 @@ WHITELIST = [
|
||||||
'wut',
|
'wut',
|
||||||
'wwod',
|
'wwod',
|
||||||
'www.toonhq.org',
|
'www.toonhq.org',
|
||||||
'www.toontownunited.com',
|
'www.toontownstride.com',
|
||||||
"wyatt's",
|
"wyatt's",
|
||||||
'wyda',
|
'wyda',
|
||||||
'wynken',
|
'wynken',
|
||||||
|
|
|
@ -40,26 +40,26 @@ class FriendHandle:
|
||||||
return idString + '-' + str(self.getDoId())
|
return idString + '-' + str(self.getDoId())
|
||||||
|
|
||||||
def d_battleSOS(self, sendToId):
|
def d_battleSOS(self, sendToId):
|
||||||
base.cr.ttuFriendsManager.d_battleSOS(self.doId)
|
base.cr.ttsFriendsManager.d_battleSOS(self.doId)
|
||||||
|
|
||||||
def d_teleportQuery(self, requesterId):
|
def d_teleportQuery(self, requesterId):
|
||||||
teleportNotify.debug('sending d_teleportQuery(%s)' % (requesterId,))
|
teleportNotify.debug('sending d_teleportQuery(%s)' % (requesterId,))
|
||||||
|
|
||||||
base.cr.ttuFriendsManager.d_teleportQuery(self.doId)
|
base.cr.ttsFriendsManager.d_teleportQuery(self.doId)
|
||||||
|
|
||||||
def d_teleportResponse(self, avId, available, shardId, hoodId, zoneId):
|
def d_teleportResponse(self, avId, available, shardId, hoodId, zoneId):
|
||||||
teleportNotify.debug('sending teleportResponse%s' % ((avId, available,
|
teleportNotify.debug('sending teleportResponse%s' % ((avId, available,
|
||||||
shardId, hoodId, zoneId),)
|
shardId, hoodId, zoneId),)
|
||||||
)
|
)
|
||||||
|
|
||||||
base.cr.ttuFriendsManager.d_teleportResponse(self.doId, available,
|
base.cr.ttsFriendsManager.d_teleportResponse(self.doId, available,
|
||||||
shardId, hoodId, zoneId
|
shardId, hoodId, zoneId
|
||||||
)
|
)
|
||||||
|
|
||||||
def d_teleportGiveup(self, requesterId):
|
def d_teleportGiveup(self, requesterId):
|
||||||
teleportNotify.debug('sending d_teleportGiveup(%s)' % (requesterId,))
|
teleportNotify.debug('sending d_teleportGiveup(%s)' % (requesterId,))
|
||||||
|
|
||||||
base.cr.ttuFriendsManager.d_teleportGiveup(self.doId)
|
base.cr.ttsFriendsManager.d_teleportGiveup(self.doId)
|
||||||
|
|
||||||
def isUnderstandable(self):
|
def isUnderstandable(self):
|
||||||
if self.commonChatFlags & base.localAvatar.commonChatFlags & ToontownGlobals.CommonChat:
|
if self.commonChatFlags & base.localAvatar.commonChatFlags & ToontownGlobals.CommonChat:
|
||||||
|
|
|
@ -697,7 +697,7 @@ PhaseToMusicData = {3.5: {'TC_SZ.ogg': [TTLocalizer.MusicTcSz, 57]},
|
||||||
PhaseToMusicData40 = {3.5: {'encntr_general_bg.ogg': [TTLocalizer.MusicEncntrGeneralBg, 30],
|
PhaseToMusicData40 = {3.5: {'encntr_general_bg.ogg': [TTLocalizer.MusicEncntrGeneralBg, 30],
|
||||||
'TC_SZ.ogg': [TTLocalizer.MusicTcSz, 57]},
|
'TC_SZ.ogg': [TTLocalizer.MusicTcSz, 57]},
|
||||||
3: {'create_a_toon.ogg': [TTLocalizer.MusicCreateAToon, 175],
|
3: {'create_a_toon.ogg': [TTLocalizer.MusicCreateAToon, 175],
|
||||||
'tt_theme.ogg': [TTLocalizer.MusicTtuTheme, 51]},
|
'tt_theme.ogg': [TTLocalizer.MusicTtsTheme, 51]},
|
||||||
4: {'minigame_race.ogg': [TTLocalizer.MusicMinigameRace, 77],
|
4: {'minigame_race.ogg': [TTLocalizer.MusicMinigameRace, 77],
|
||||||
'TC_nbrhood.ogg': [TTLocalizer.MusicTcNbrhood, 59],
|
'TC_nbrhood.ogg': [TTLocalizer.MusicTcNbrhood, 59],
|
||||||
'MG_TwoDGame.ogg': [TTLocalizer.MusicMgTwodgame, 60],
|
'MG_TwoDGame.ogg': [TTLocalizer.MusicMgTwodgame, 60],
|
||||||
|
|
|
@ -207,7 +207,7 @@ class ToontownRPCConnection:
|
||||||
|
|
||||||
# Add the standard headers:
|
# Add the standard headers:
|
||||||
response += 'Date: %s\r\n' % time.strftime('%a, %d %b %Y %H:%M:%S GMT', time.gmtime())
|
response += 'Date: %s\r\n' % time.strftime('%a, %d %b %Y %H:%M:%S GMT', time.gmtime())
|
||||||
response += 'Server: TTU-RPCServer/0.1\r\n'
|
response += 'Server: TTS-RPCServer/0.1\r\n'
|
||||||
|
|
||||||
# Add the content headers:
|
# Add the content headers:
|
||||||
response += 'Content-Length: %d\r\n' % len(body)
|
response += 'Content-Length: %d\r\n' % len(body)
|
||||||
|
|
|
@ -22,7 +22,6 @@ class PhotoAlbumPage(ShtikerPage.ShtikerPage):
|
||||||
self.photos = {}
|
self.photos = {}
|
||||||
self.selectedFileName = None
|
self.selectedFileName = None
|
||||||
self.selectedFilePath = None
|
self.selectedFilePath = None
|
||||||
#TODO: Localizer support for screenshot storing and names
|
|
||||||
self.installPath = os.getcwd()
|
self.installPath = os.getcwd()
|
||||||
self.photoPath = TTLocalizer.ScreenshotPath
|
self.photoPath = TTLocalizer.ScreenshotPath
|
||||||
self.photoIndex = 0
|
self.photoIndex = 0
|
||||||
|
@ -232,7 +231,7 @@ class PhotoAlbumPage(ShtikerPage.ShtikerPage):
|
||||||
files = os.listdir(self.photoPath)
|
files = os.listdir(self.photoPath)
|
||||||
photos = []
|
photos = []
|
||||||
for fileName in files:
|
for fileName in files:
|
||||||
if fileName[0:17] == 'united-screenshot' and fileName[-4:] == '.jpg':
|
if fileName[0:17] == 'stride-screenshot' and fileName[-4:] == '.jpg':
|
||||||
photos.append(fileName)
|
photos.append(fileName)
|
||||||
|
|
||||||
return photos
|
return photos
|
||||||
|
|
|
@ -369,7 +369,7 @@ class DistributedToon(DistributedPlayer.DistributedPlayer, Toon.Toon, Distribute
|
||||||
ResistanceChat.doEffect(msgIndex, self, nearbyToons)
|
ResistanceChat.doEffect(msgIndex, self, nearbyToons)
|
||||||
|
|
||||||
def d_battleSOS(self, sendToId):
|
def d_battleSOS(self, sendToId):
|
||||||
self.cr.ttuFriendsManager.d_battleSOS(sendToId)
|
self.cr.ttsFriendsManager.d_battleSOS(sendToId)
|
||||||
|
|
||||||
def battleSOS(self, requesterId):
|
def battleSOS(self, requesterId):
|
||||||
avatar = base.cr.identifyAvatar(requesterId)
|
avatar = base.cr.identifyAvatar(requesterId)
|
||||||
|
@ -471,7 +471,7 @@ class DistributedToon(DistributedPlayer.DistributedPlayer, Toon.Toon, Distribute
|
||||||
print ':%s: setTalk: %r, %r, %r' % (timestamp, fromAV, avatarName, chat)
|
print ':%s: setTalk: %r, %r, %r' % (timestamp, fromAV, avatarName, chat)
|
||||||
if base.config.GetBool('want-sleep-reply-on-regular-chat', 0):
|
if base.config.GetBool('want-sleep-reply-on-regular-chat', 0):
|
||||||
if base.localAvatar.sleepFlag == 1:
|
if base.localAvatar.sleepFlag == 1:
|
||||||
base.cr.ttuFriendsManager.d_sleepAutoReply(fromAV)
|
base.cr.ttsFriendsManager.d_sleepAutoReply(fromAV)
|
||||||
newText, scrubbed = self.scrubTalk(chat, mods)
|
newText, scrubbed = self.scrubTalk(chat, mods)
|
||||||
self.displayTalk(newText)
|
self.displayTalk(newText)
|
||||||
base.talkAssistant.receiveOpenTalk(fromAV, avatarName, fromAC, None, newText)
|
base.talkAssistant.receiveOpenTalk(fromAV, avatarName, fromAC, None, newText)
|
||||||
|
@ -489,7 +489,7 @@ class DistributedToon(DistributedPlayer.DistributedPlayer, Toon.Toon, Distribute
|
||||||
return
|
return
|
||||||
if base.localAvatar.sleepFlag == 1:
|
if base.localAvatar.sleepFlag == 1:
|
||||||
if not base.cr.identifyAvatar(fromAV) == base.localAvatar:
|
if not base.cr.identifyAvatar(fromAV) == base.localAvatar:
|
||||||
base.cr.ttuFriendsManager.d_sleepAutoReply(fromAV)
|
base.cr.ttsFriendsManager.d_sleepAutoReply(fromAV)
|
||||||
newText, scrubbed = self.scrubTalk(chat, mods)
|
newText, scrubbed = self.scrubTalk(chat, mods)
|
||||||
self.displayTalkWhisper(fromAV, avatarName, chat, mods)
|
self.displayTalkWhisper(fromAV, avatarName, chat, mods)
|
||||||
timestamp = time.strftime('%m-%d-%Y %H:%M:%S', time.localtime())
|
timestamp = time.strftime('%m-%d-%Y %H:%M:%S', time.localtime())
|
||||||
|
@ -516,7 +516,7 @@ class DistributedToon(DistributedPlayer.DistributedPlayer, Toon.Toon, Distribute
|
||||||
return
|
return
|
||||||
if base.localAvatar.sleepFlag == 1:
|
if base.localAvatar.sleepFlag == 1:
|
||||||
if not base.cr.identifyAvatar(fromId) == base.localAvatar:
|
if not base.cr.identifyAvatar(fromId) == base.localAvatar:
|
||||||
base.cr.ttuFriendsManager.d_sleepAutoReply(fromId)
|
base.cr.ttsFriendsManager.d_sleepAutoReply(fromId)
|
||||||
chatString = SCDecoders.decodeSCEmoteWhisperMsg(emoteId, handle.getName())
|
chatString = SCDecoders.decodeSCEmoteWhisperMsg(emoteId, handle.getName())
|
||||||
if chatString:
|
if chatString:
|
||||||
self.displayWhisper(fromId, chatString, WTEmote)
|
self.displayWhisper(fromId, chatString, WTEmote)
|
||||||
|
@ -537,7 +537,7 @@ class DistributedToon(DistributedPlayer.DistributedPlayer, Toon.Toon, Distribute
|
||||||
return
|
return
|
||||||
if base.localAvatar.sleepFlag == 1:
|
if base.localAvatar.sleepFlag == 1:
|
||||||
if not base.cr.identifyAvatar(fromId) == base.localAvatar:
|
if not base.cr.identifyAvatar(fromId) == base.localAvatar:
|
||||||
base.cr.ttuFriendsManager.d_sleepAutoReply(fromId)
|
base.cr.ttsFriendsManager.d_sleepAutoReply(fromId)
|
||||||
chatString = SCDecoders.decodeSCStaticTextMsg(msgIndex)
|
chatString = SCDecoders.decodeSCStaticTextMsg(msgIndex)
|
||||||
if chatString:
|
if chatString:
|
||||||
self.displayWhisper(fromId, chatString, WTQuickTalker)
|
self.displayWhisper(fromId, chatString, WTQuickTalker)
|
||||||
|
@ -556,7 +556,7 @@ class DistributedToon(DistributedPlayer.DistributedPlayer, Toon.Toon, Distribute
|
||||||
def whisperSCToontaskTo(self, taskId, toNpcId, toonProgress, msgIndex, sendToId):
|
def whisperSCToontaskTo(self, taskId, toNpcId, toonProgress, msgIndex, sendToId):
|
||||||
messenger.send('wakeup')
|
messenger.send('wakeup')
|
||||||
|
|
||||||
base.cr.ttuFriendsManager.d_whisperSCToontaskTo(sendToId, taskId,
|
base.cr.ttsFriendsManager.d_whisperSCToontaskTo(sendToId, taskId,
|
||||||
toNpcId, toonProgress, msgIndex
|
toNpcId, toonProgress, msgIndex
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,7 @@ class ToonTeleportPanel(DirectFrame):
|
||||||
|
|
||||||
def enterCheckAvailability(self):
|
def enterCheckAvailability(self):
|
||||||
myId = base.localAvatar.getDoId()
|
myId = base.localAvatar.getDoId()
|
||||||
base.cr.ttuFriendsManager.d_teleportQuery(self.avId)
|
base.cr.ttsFriendsManager.d_teleportQuery(self.avId)
|
||||||
self['text'] = TTLocalizer.TeleportPanelCheckAvailability % self.avName
|
self['text'] = TTLocalizer.TeleportPanelCheckAvailability % self.avName
|
||||||
self.accept('teleportResponse', self.__teleportResponse)
|
self.accept('teleportResponse', self.__teleportResponse)
|
||||||
self.bCancel.show()
|
self.bCancel.show()
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#!/usr/bin/env python2
|
#!/usr/bin/env python2
|
||||||
# This is the "main" module that will start a production copy of
|
# This is the "main" module that will start a production copy of
|
||||||
# Toontown United.
|
# Toontown Stride.
|
||||||
|
|
||||||
# This is a temp patch.
|
# This is a temp patch.
|
||||||
# It should really be done by the runtime (e.g. united.exe):
|
# It should really be done by the runtime (e.g. stride.exe):
|
||||||
import sys
|
import sys
|
||||||
sys.path = ['.']
|
sys.path = ['.']
|
||||||
|
|
||||||
|
|
|
@ -2715,7 +2715,7 @@ SuitAttackTaunts = {'Audit': ["I believe your books don't balance.",
|
||||||
"You aren't above the law!",
|
"You aren't above the law!",
|
||||||
'There should be a law against you.',
|
'There should be a law against you.',
|
||||||
"There's no ex post facto with me!",
|
"There's no ex post facto with me!",
|
||||||
"The opinions expressed in this attack are not those of Toontown United.",
|
"The opinions expressed in this attack are not those of Toontown Stride.",
|
||||||
'We cannot be held responsible for damages suffered in this attack.',
|
'We cannot be held responsible for damages suffered in this attack.',
|
||||||
'Your results for this attack may vary.',
|
'Your results for this attack may vary.',
|
||||||
'This attack is void where prohibited.',
|
'This attack is void where prohibited.',
|
||||||
|
@ -3425,7 +3425,7 @@ MusicEncntrGeneralBg = 'Encounter With Cogs'
|
||||||
MusicTcSzActivity = 'Toontorial Medley'
|
MusicTcSzActivity = 'Toontorial Medley'
|
||||||
MusicTcSz = 'Strolling Along'
|
MusicTcSz = 'Strolling Along'
|
||||||
MusicCreateAToon = 'The New Toon in Town'
|
MusicCreateAToon = 'The New Toon in Town'
|
||||||
MusicTtuTheme = 'The Toontown United Theme'
|
MusicTtsTheme = 'The Toontown Stride Theme'
|
||||||
MusicTtTheme = 'The Toontown Theme'
|
MusicTtTheme = 'The Toontown Theme'
|
||||||
MusicMinigameRace = 'Slow and Steady'
|
MusicMinigameRace = 'Slow and Steady'
|
||||||
MusicTcNbrhood = 'Toontown Central'
|
MusicTcNbrhood = 'Toontown Central'
|
||||||
|
@ -6891,7 +6891,7 @@ TipDict = {TIP_NONE: ('',),
|
||||||
'Open or close your Shticker Book by pressing the "F8" key.',
|
'Open or close your Shticker Book by pressing the "F8" key.',
|
||||||
'You can look up by pressing the "Page Up" key and look down by pressing the "Page Down" key.',
|
'You can look up by pressing the "Page Up" key and look down by pressing the "Page Down" key.',
|
||||||
'Press the "Control" key to jump.',
|
'Press the "Control" key to jump.',
|
||||||
'Press the "F9" key to take a screenshot, which will be saved in your Toontown United folder on your computer.',
|
'Press the "F9" key to take a screenshot, which will be saved in your Toontown Stride folder on your computer.',
|
||||||
'You can change your screen resolution, adjust audio, and control other options on the Options Page in the Shticker Book.',
|
'You can change your screen resolution, adjust audio, and control other options on the Options Page in the Shticker Book.',
|
||||||
"Try on your friend's clothing at the closet in their house.",
|
"Try on your friend's clothing at the closet in their house.",
|
||||||
'You can go to your house using the "Go Home" button on your map.',
|
'You can go to your house using the "Go Home" button on your map.',
|
||||||
|
@ -6905,7 +6905,7 @@ TipDict = {TIP_NONE: ('',),
|
||||||
'Change to different views of your Toon by pressing the Tab Key.',
|
'Change to different views of your Toon by pressing the Tab Key.',
|
||||||
'Sometimes you can find several different ToonTasks offered for the same reward. Shop around!',
|
'Sometimes you can find several different ToonTasks offered for the same reward. Shop around!',
|
||||||
'Finding friends with similar ToonTasks is a fun way to progress through the game.',
|
'Finding friends with similar ToonTasks is a fun way to progress through the game.',
|
||||||
'You never need to save your Toontown progress. The Toontown United servers continually save all the necessary information.',
|
'You never need to save your Toontown progress. The Toontown Stride servers continually save all the necessary information.',
|
||||||
'You can whisper to other Toons either by clicking on them or by selecting them from your Friends List.',
|
'You can whisper to other Toons either by clicking on them or by selecting them from your Friends List.',
|
||||||
'Some SpeedChat phrases play emotion animations on your Toon.',
|
'Some SpeedChat phrases play emotion animations on your Toon.',
|
||||||
'If the area you are in is crowded, try changing Districts. Go to the District Page in the Shticker Book and select a different one.',
|
'If the area you are in is crowded, try changing Districts. Go to the District Page in the Shticker Book and select a different one.',
|
||||||
|
|
|
@ -39,7 +39,7 @@ http.setVerifySsl(0)
|
||||||
|
|
||||||
def executeHttpRequest(url, extras):
|
def executeHttpRequest(url, extras):
|
||||||
request = urllib2.Request(accountServerEndpoint + url)
|
request = urllib2.Request(accountServerEndpoint + url)
|
||||||
request.add_header('User-Agent', 'TTU-Game')
|
request.add_header('User-Agent', 'TTS-Game')
|
||||||
request.add_header('Secret-Key', accountServerSecret)
|
request.add_header('Secret-Key', accountServerSecret)
|
||||||
for k, v in extras.items():
|
for k, v in extras.items():
|
||||||
request.add_header(k, v)
|
request.add_header(k, v)
|
||||||
|
@ -84,7 +84,7 @@ def judgeName(name):
|
||||||
|
|
||||||
|
|
||||||
# --- ACCOUNT DATABASES ---
|
# --- ACCOUNT DATABASES ---
|
||||||
# These classes make up the available account databases for Toontown United.
|
# These classes make up the available account databases for Toontown Stride.
|
||||||
# Databases with login tokens use the PyCrypto module for decrypting them.
|
# Databases with login tokens use the PyCrypto module for decrypting them.
|
||||||
# DeveloperAccountDB is a special database that accepts a username, and assigns
|
# DeveloperAccountDB is a special database that accepts a username, and assigns
|
||||||
# each user with 700 access automatically upon login.
|
# each user with 700 access automatically upon login.
|
||||||
|
@ -898,7 +898,7 @@ class UnloadAvatarFSM(OperationFSM):
|
||||||
def enterUnloadAvatar(self):
|
def enterUnloadAvatar(self):
|
||||||
channel = self.csm.GetAccountConnectionChannel(self.target)
|
channel = self.csm.GetAccountConnectionChannel(self.target)
|
||||||
|
|
||||||
# Tell TTUFriendsManager somebody is logging off:
|
# Tell TTSFriendsManager somebody is logging off:
|
||||||
self.csm.air.friendsManager.toonOffline(self.avId)
|
self.csm.air.friendsManager.toonOffline(self.avId)
|
||||||
|
|
||||||
# Clear off POSTREMOVE:
|
# Clear off POSTREMOVE:
|
||||||
|
|
Loading…
Reference in a new issue