Coder Social home page Coder Social logo

open-toontown / open-toontown Goto Github PK

View Code? Open in Web Editor NEW
136.0 136.0 67.0 6.86 MB

Open source Toontown Online, based on the latest version of Disney's Toontown Online (sv1.0.47.38).

License: BSD 3-Clause "New" or "Revised" License

PLSQL 0.02% Python 99.95% Shell 0.01% Batchfile 0.01%

open-toontown's Introduction

Open Toontown

This repository contains the code for Open Toontown, based on the latest version of Disney's Toontown Online (sv1.0.47.38).

Setup

After cloning the repository, you will need to clone the resources repository inside the directory where you cloned the source repo.

Secondly, you would have to install and use a specific version of Panda3D, which includes libotp and libtoontown. You can use the prebuilt installers for your operating system here:

Windows

You can install Panda3D SDK through the 32-bit (x86) or 64-bit (x86_64) installers here:

Panda3D SDK for Windows (Python 3.9, x86, Last Updated: January 11, 2023)

Panda3D SDK for Windows (Python 3.9, x86_64, Last Updated: January 11, 2023)

If you install Panda3D outside the default directory (or use the x86 installer), you may have to change the PPYTHON_PATH file located in the root directory and change it to your install directory.

macOS 10.9+

Panda3D Wheel for macOS 10.9+ (Python3.9, x86_64)

Installing the provided Panda3D wheel requires Python 3.9, which is not installed on your system by default whatsoever. We recommend installing Python 3.9 through Homebrew (Make sure that the xcode command line tools are installed first xcode-select --install):

$ brew install [email protected]

(This will symlink Python 3.9 to python3.9 and pip to pip3).

After installing Python 3.9. You can then install the wheel by using pip:

$ pip install panda3d-1.11.0-cp39-cp39-macosx_10_9_x86_64.whl

Linux (Building your own)

If you use Linux, or are interested in building Panda3D yourself, head on over to our Panda3D fork and read the "Building Panda3D" section on the README file there.

Starting the Server and Game

To start the server and run the game locally, go to your platform directory (win32 for Windows, darwin for Mac and linux for Linux), and make sure you start the following scripts in order:

Astron Server -> UberDOG (UD) Server -> AI (District) Server -> Game Client

Be sure to wait till the servers have finished booting before starting the next. If done correctly, you should be able to make your toon and play the game! There is no support for Magic Words (commands) yet, but it is currently in the works!

Contributing

Submitting issues and Pull Requests are encouraged and welcome.

How you commit changes is your choice, but please include what you did and a basic description so that we know exactly what was modified. Here are some examples:

  • minigames: Fix crash when entering the trolley
  • racing: Fix possible race condition when two racers tied
  • golf: Refix wonky physics once and for all (hopefully)

open-toontown's People

Contributors

chxseh avatar comradenapcali avatar crimsonfox762 avatar darthmdev avatar demiurgequantified avatar jwcotejr avatar littletooncat avatar loonaticx avatar nathanx-s avatar opentoontown avatar regdogg avatar samuelt24 avatar thefamiliarscoot avatar toonfisch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

open-toontown's Issues

Impossible to transition to Toontorial

Whether it's a new account or pressing the "Enter Toontorial" button on the make-a-toon screen with other toons, you will always head to Toontown Central and the Toontorial will never show up at all.

AttributeError: 'QuietZoneState' object has no attribute 'fsm'

Reproduction steps:

  • Make a new Toon that can skip the Toontorial, skip it

Traceback (most recent call last):
File "F:\Work Folder\Toontown\dev\forks\open-toontown_contrib\otp\launcher\LauncherBase.py", line 150, in mainLoop
self._runTaskManager()
File "F:\Work Folder\Toontown\dev\forks\open-toontown_contrib\otp\launcher\LauncherBase.py", line 130, in _runTaskManager
taskMgr.run()
File "C:\Panda3D-1.11.0-opentoontown\direct\task\Task.py", line 540, in run
self.step()
File "C:\Panda3D-1.11.0-opentoontown\direct\task\Task.py", line 494, in step
self.mgr.poll()
File "C:\Panda3D-1.11.0-opentoontown\direct\distributed\ConnectionRepository.py", line 612, in readerPollUntilEmpty
while self.readerPollOnce():
File "C:\Panda3D-1.11.0-opentoontown\direct\distributed\ConnectionRepository.py", line 619, in readerPollOnce
self.handleDatagram(self.private__di)
File "F:\Work Folder\Toontown\dev\forks\open-toontown_contrib\otp\distributed\OTPClientRepository.py", line 2118, in handleDatagram
self.handleMessageType(msgType, di)
File "F:\Work Folder\Toontown\dev\forks\open-toontown_contrib\otp\distributed\OTPClientRepository.py", line 1997, in handleMessageType
self.handleUpdateField(di)
File "C:\Panda3D-1.11.0-opentoontown\direct\distributed\ClientRepositoryBase.py", line 439, in handleUpdateField
self.__doUpdate(doId, di, ovUpdated)
File "C:\Panda3D-1.11.0-opentoontown\direct\distributed\ClientRepositoryBase.py", line 447, in __doUpdate
do.dclass.receiveUpdate(do, di)
File "F:\Work Folder\Toontown\dev\forks\open-toontown_contrib\toontown\ai\WelcomeValleyManager.py", line 38, in requestZoneIdResponse
self.doCallbackContext(context, [zoneId])
File "C:\Panda3D-1.11.0-opentoontown\direct\distributed\DistributedObject.py", line 428, in doCallbackContext
callback(*completeArgs)
File "F:\Work Folder\Toontown\dev\forks\open-toontown_contrib\toontown\hood\QuietZoneState.py", line 270, in gotZoneRedirect
self.fsm.request('waitForSetZoneResponse')
AttributeError: 'QuietZoneState' object has no attribute 'fsm'
Press any key to continue . . .

Sending a friend request to another player causes "Unexpected error"; player boot

Whenever a player sends a friend request to another player, the sender is immediately booted out of the game with error code 117. Nothing happens to the receiver.
image

:07-06-2021 21:55:51 OTPClientRepository(warning): Server is booting us out (117): Client tried to send update to nonexistent object 4501
:07-06-2021 21:55:51 OTPClientRepository(warning): Lost connection to gameserver.
:07-06-2021 21:55:51 Playground: Unloading Place (22000). Fsm in final
:07-06-2021 21:55:51 OTPClientRepository(warning): unclean exit, abandoning shard
ignoring InputState-forward
:07-06-2021 21:55:52 OTPClientRepository: sending clientLogout
:07-06-2021 21:55:52 LocalAvatar(warning): redundant call to stopUpdateSmartCamera
:07-06-2021 21:55:52 Launcher: New Disconnect Details: 117 - An unexpected problem has occurred (error code 117).  Your connection has been lost, but you should be able to connect again and go right back into the game.
:07-06-2021 21:55:52 OTPClientRepository(warning): Lost connection to server. Notifying user.
:07-06-2021 21:55:52 OTPClientRepository(warning): Server is booting us out (106): Datagram contains excess data.
:07-06-2021 21:55:52 OTPClientRepository(warning): Lost connection to gameserver.
:07-06-2021 21:55:52 :downloader(warning): Windows error code: 10053
:07-06-2021 21:55:52 OTPClientRepository(warning): Lost connection to gameserver.

Licensing

Usual disclaimers: IANAL, TINLA, &c.

I hate to be a nit-picky jerk, but I think this is particularly important in this case: currently it appears that you don’t have any licensing information anywhere in the repo. Thanks to the Berne Convention, this effectively makes your code not open source, but merely “source-available”. In order to ensure that your code is actually open source, you’ll need to pick a license. Ideally the license should be approved by the OSI and also approved by the FSF and GPL-compatible.

If I had to make a recommendation (again, just a recommendation), I would suggest the BSD 3-clause license, because

  • Panda3D and Astron already use this license.
  • The OSI lists it under “Licenses that are ‘popular and widely-used or with strong communities’”.
  • It is FSF-approved and GPL-compatible.

For the things in here that are not code, but are just resources that are (I assume) actually Disney’s assets (stuff in phase files, whatever), I would recommend at least giving a disclaimer in the README that these certain assets belong to Disney. Even better would be to move them entirely into their own separate repositor(y/ies) and then only give users of Open Toontown a bit of a “nudge” towards that repository, saying that it consists entirely of Disney’s assets and thus distance Open Toontown from that content (for the obvious legal reasons).

Additionally, I can see that there are probably some other binary blobs in here that are actually code (for example, the libpandadna.so in the root directory). I’m sure that (or at least, I hope that) these things have their corresponding source code elsewhere in the Open Toontown GitHub organization, but still, it would be nice to be super crisp and clear about where each corresponding source code is, how to reproduce the binaries, &c. Of course, ideally you shouldn’t really have binary blobs in source code repos anyways if you can avoid it without causing too much trouble.

Bug: Clicking on a rejected toon's name crashes the build.

gif

Crash Log:

:07-08-2021 07:41:15 OTPClientRepository: *** ACCOUNT INFO ***
:07-08-2021 07:41:15 OTPClientRepository: username: dev2
:07-08-2021 07:41:15 StateData: AvatarChooser.enter
:07-08-2021 07:41:15 DisplayOptions: settingsFullScreen = False, embedded = False width=800 height=600
:07-08-2021 07:41:15 StateData: calling self.displayOptions.restrictToEmbedded(False)
:07-08-2021 07:41:23 OTPClientRepository: ================
:07-08-2021 07:41:23 OTPClientRepository: Chose avatar id: 100000004
:07-08-2021 07:41:23 OTPClientRepository: Chose avatar name: John
:07-08-2021 07:41:23 OTPClientRepository: ================
Traceback (most recent call last):
	File "C:\Panda3D-1.11.0-x64\direct\showbase\EventManager.py", line 50, in eventLoopTask
		self.doEvents()
	File "C:\Panda3D-1.11.0-x64\direct\showbase\EventManager.py", line 44, in doEvents
		processFunc(dequeueFunc())
	File "C:\Panda3D-1.11.0-x64\direct\showbase\EventManager.py", line 100, in processEvent
		messenger.send(eventName, paramList)
	File "C:\Panda3D-1.11.0-x64\direct\showbase\Messenger.py", line 335, in send
		self.__dispatch(acceptorDict, event, sentArgs, foundWatch)
	File "C:\Panda3D-1.11.0-x64\direct\showbase\Messenger.py", line 420, in __dispatch
		result = method (*(extraArgs + sentArgs))
	File "C:\Panda3D-1.11.0-x64\direct\gui\DirectButton.py", line 107, in commandFunc
		self['command'](*self['extraArgs'])
	File "C:\Panda3D-1.11.0-x64\direct\gui\DirectDialog.py", line 180, in <lambda>
		command = lambda s = self, v = value: s.buttonCommand(v)
	File "C:\Panda3D-1.11.0-x64\direct\gui\DirectDialog.py", line 339, in buttonCommand
		self['command'](value, *self['extraArgs'])
	File "C:\Users\User\Documents\GitHub\open-toontown\otp\otpgui\OTPDialog.py", line 110, in handleButton
		messenger.send(self.__doneEvent)
	File "C:\Panda3D-1.11.0-x64\direct\showbase\Messenger.py", line 335, in send
		self.__dispatch(acceptorDict, event, sentArgs, foundWatch)
	File "C:\Panda3D-1.11.0-x64\direct\showbase\Messenger.py", line 420, in __dispatch
		result = method (*(extraArgs + sentArgs))
	File "C:\Users\User\Documents\GitHub\open-toontown\toontown\distributed\ToontownClientRepository.py", line 214, in __handleReject
		self.astronLoginManager.sendAcknowledgeAvatarName(avId, lambda: self.loginFSM.request('waitForAvatarList'))
NameError: name 'avId' is not defined
:07-08-2021 07:41:25 Launcher: setting panda error code to 12
:07-08-2021 07:41:25 Launcher(warning): Handling Python exception.
:07-08-2021 07:41:25 OTPClientRepository: Sent disconnect message to server
:07-08-2021 07:41:25 OTPClientRepository: Closing connection to server.
:07-08-2021 07:41:25 Launcher: Exception exit.
Traceback (most recent call last):
	File "C:\Users\User\Documents\GitHub\open-toontown\otp\launcher\LauncherBase.py", line 152, in mainLoop
		self._runTaskManager()
	File "C:\Users\User\Documents\GitHub\open-toontown\otp\launcher\LauncherBase.py", line 132, in _runTaskManager
		taskMgr.run()
	File "C:\Panda3D-1.11.0-x64\direct\task\Task.py", line 540, in run
		self.step()
	File "C:\Panda3D-1.11.0-x64\direct\task\Task.py", line 494, in step
		self.mgr.poll()
	File "C:\Panda3D-1.11.0-x64\direct\showbase\EventManager.py", line 50, in eventLoopTask
		self.doEvents()
	File "C:\Panda3D-1.11.0-x64\direct\showbase\EventManager.py", line 44, in doEvents
		processFunc(dequeueFunc())
	File "C:\Panda3D-1.11.0-x64\direct\showbase\EventManager.py", line 100, in processEvent
		messenger.send(eventName, paramList)
	File "C:\Panda3D-1.11.0-x64\direct\showbase\Messenger.py", line 335, in send
		self.__dispatch(acceptorDict, event, sentArgs, foundWatch)
	File "C:\Panda3D-1.11.0-x64\direct\showbase\Messenger.py", line 420, in __dispatch
		result = method (*(extraArgs + sentArgs))
	File "C:\Panda3D-1.11.0-x64\direct\gui\DirectButton.py", line 107, in commandFunc
		self['command'](*self['extraArgs'])
	File "C:\Panda3D-1.11.0-x64\direct\gui\DirectDialog.py", line 180, in <lambda>
		command = lambda s = self, v = value: s.buttonCommand(v)
	File "C:\Panda3D-1.11.0-x64\direct\gui\DirectDialog.py", line 339, in buttonCommand
		self['command'](value, *self['extraArgs'])
	File "C:\Users\User\Documents\GitHub\open-toontown\otp\otpgui\OTPDialog.py", line 110, in handleButton
		messenger.send(self.__doneEvent)
	File "C:\Panda3D-1.11.0-x64\direct\showbase\Messenger.py", line 335, in send
		self.__dispatch(acceptorDict, event, sentArgs, foundWatch)
	File "C:\Panda3D-1.11.0-x64\direct\showbase\Messenger.py", line 420, in __dispatch
		result = method (*(extraArgs + sentArgs))
	File "C:\Users\User\Documents\GitHub\open-toontown\toontown\distributed\ToontownClientRepository.py", line 214, in __handleReject
		self.astronLoginManager.sendAcknowledgeAvatarName(avId, lambda: self.loginFSM.request('waitForAvatarList'))
NameError: name 'avId' is not defined

Non ascii letters are not showing up

While testing I noticed that non English ascii letters are not showing up, it only shows 2 block holes (I tested it with a Toontown Germany DNA file so I can guess it is the same with France and Japan)
Screenshot_222222

Setting up DNA parser issue

Hello, I had attempted to get this project up and running the other day, and though I was able to get the server's started, the client logged in, to the pick-a-toon screen, and sucessfully create a toon, I was unable to get this software to be capable of parsing DNA files without modifying it (pdna files specifically), I was wondering if I could get some information on this?

I think this is a fantastic project, and once I get it up and running, would love to help out where I can. Thank you.

Running into issues when running on Ubuntu

Howdy!

Want to say a great project y'all are doing.

I gotten the 3 main scripts for Ubuntu running, and built a release version of Astron.

However, when starting the game, uberdog quits when trying to log in the client.

The error that occurs is name File "open-toontown/otp/login/AstronLoginManagerUD.py", line 223, in __handleSetAccount
self.loginManager.air.ourChannel, CLIENTAGENT_EJECT)' CLIENTAGENT_EJECT not defined"

Doing some research it looks like this correlates to an issue with Astron connection, I have a sole Astron release binary that was compiled so unsure if there should be other files or if a debugging binary should be compiled instead.

I'm not sure why it jumps immediately to ejecting as uberdog doesn't show any errors before then, and Astron mentions that the connection was lost due to end of file.

Appreciate all the help!

How to implement Magic Words?

Tried to copy the File to "toontown" directory, but still it does not work. The README.md says to add it to the astrondb 'dclass' file, but the file is not located. So can someone explain how to get it implemented and how to max your toon.

Crash when trying to go in tutorial

  File "open-toontown\toontown\hood\QuietZoneState.py", line 156, in handleWaitForQuietZoneResponse
    self.notify.debug('handleWaitForQuietZoneResponse(' + 'msgType=' + str(msgType) + ', di=' + str(di) + ')')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc6 in position 162: invalid continuation byte

Will disabled minigames be able to be toggled on or off?

In the final years of Toontown Online, both Photo Fun, and Trolley Tracks were disabled for unclear reasons.

Looking at the code, the assets, and code to make these work is still present, but goes unused.

Seeing as you updated code for both Photo Fun, and Trolley Tracks, does this mean the minigames will be in Open Toontown, and how will they be added in (maybe a toggle server wise to enable or disable them?)

Estate Issue

When I enter the estate, the houses appear blank and none of the fishing docks work.

Containerize setup process

current setup documentation is lacking in a couple of places.

moving stuff to Docker would be awesome for quick local setup

Open Toontown development stream VODs?

This is one of those issues where i have to say that this issue is only here because i've yet to find any other way to contact the person(s) involved!

It seems that the "Sparky Rewritten" Youtube channel no longer exists! It seems the Open Toontown dev streams were uploaded there. And, according to hearsay, although i'm not sure myself, other similarly informational toontown-related content was hosted there.

Perhaps it was deleted by Youtube administration? I cannot say, but it would be very nice to have a resource to at least know how to get a local copy of this thing up and running, if nothing else. Perhaps the videos are mirrored somewhere else? Or perhaps someone here can give an executive summary....

A few technical questions

Not exactly an issue, but here goes.

My first question is, will the game support Direct X rendering, if desired? If I can recall, Direct X rendering under TTO has less issues, compared to OpenGL, so it would be nice to have it back as an option.

My second question is regarding audio. I know audio isnt being worked on for the moment, however, I was recently made aware that the Factories had ambient noises that no longer play. A user named Dank Mickey shows these off in action, and seems to offer code in the description to add this to a server. Here is a link to that: https://www.youtube.com/watch?v=-IC-9yX97wI&feature=youtu.be So, is it possible to also add this in, once you get around to audio?

Game crash when trying to enter the estate

Explanation

Trying to go to your estate as a new toon will crash your game.

Output + Example

Traceback (most recent call last):
  File "G:\Work Folder\Toontown\dev\forks\open-toontown\otp\launcher\LauncherBase.py", line 152, in mainLoop
    self._runTaskManager()
  File "G:\Work Folder\Toontown\dev\forks\open-toontown\otp\launcher\LauncherBase.py", line 132, in _runTaskManager
    taskMgr.run()
  File "C:\Panda3D-1.11.0-opentoontown\direct\task\Task.py", line 540, in run
    self.step()
  File "C:\Panda3D-1.11.0-opentoontown\direct\task\Task.py", line 494, in step
    self.mgr.poll()
  File "C:\Panda3D-1.11.0-opentoontown\direct\showbase\ShowBase.py", line 2090, in __ivalLoop
    IntervalManager.ivalMgr.step()
  File "C:\Panda3D-1.11.0-opentoontown\direct\interval\IntervalManager.py", line 95, in step
    self.__doPythonCallbacks()
  File "C:\Panda3D-1.11.0-opentoontown\direct\interval\IntervalManager.py", line 131, in __doPythonCallbacks
    self.MyEventmanager.doEvents()
  File "C:\Panda3D-1.11.0-opentoontown\direct\showbase\EventManager.py", line 44, in doEvents
    processFunc(dequeueFunc())
  File "C:\Panda3D-1.11.0-opentoontown\direct\showbase\EventManager.py", line 100, in processEvent
    messenger.send(eventName, paramList)
  File "C:\Panda3D-1.11.0-opentoontown\direct\showbase\Messenger.py", line 335, in send
    self.__dispatch(acceptorDict, event, sentArgs, foundWatch)
  File "C:\Panda3D-1.11.0-opentoontown\direct\showbase\Messenger.py", line 420, in __dispatch
    result = method (*(extraArgs + sentArgs))
  File "G:\Work Folder\Toontown\dev\forks\open-toontown\toontown\toon\Toon.py", line 1844, in finishTeleportOut
    callback(*extraArgs)
  File "G:\Work Folder\Toontown\dev\forks\open-toontown\toontown\safezone\Playground.py", line 610, in __teleportOutDone
    self.getEstateZoneAndGoHome(requestStatus)
  File "G:\Work Folder\Toontown\dev\forks\open-toontown\toontown\hood\Place.py", line 645, in getEstateZoneAndGoHome
    base.cr.estateMgr.getLocalEstateZone(base.localAvatar.getDoId())
AttributeError: 'ToontownClientRepository' object has no attribute 'estateMgr'
Press any key to continue . . .

https://youtu.be/kR4BnjcMy2Q?t=298

Steps to reproduce

  1. Make a new toon, don't think it matters whether or not you choose to do the tutorial or not
  2. Go into your sthickerbook and press "Go Home"

Crash when trying to teleport to Toon Escape

How to reproduce:
run the following spellbook command:
mg teleport 2d

Expected behavior:
the Toon Escape trolley game begins

Actual behavior:
the game client crashes with the following traceback:

Traceback (most recent call last):
  File "open-toontown\otp\launcher\LauncherBase.py", line 150, in mainLoop
    self._runTaskManager()
  File "open-toontown\otp\launcher\LauncherBase.py", line 130, in _runTaskManager
    taskMgr.run()
  File "Panda3D-1.11.0-x64\direct\task\Task.py", line 546, in run
    self.step()
  File "Panda3D-1.11.0-x64\direct\task\Task.py", line 497, in step
    self.mgr.poll()
  File "Panda3D-1.11.0-x64\direct\distributed\ConnectionRepository.py", line 613, in readerPollUntilEmpty
    while self.readerPollOnce():
  File "Panda3D-1.11.0-x64\direct\distributed\ConnectionRepository.py", line 620, in readerPollOnce
    self.handleDatagram(self.private__di)
  File "open-toontown\otp\distributed\OTPClientRepository.py", line 2120, in handleDatagram
    self.handler(msgType, di)
  File "open-toontown\otp\distributed\OTPClientRepository.py", line 1674, in handlePlayGame
    self.handleMessageType(msgType, di)
  File "open-toontown\otp\distributed\OTPClientRepository.py", line 2003, in handleMessageType
    self.gotInterestDoneMessage(di)
  File "open-toontown\otp\distributed\OTPClientRepository.py", line 2039, in gotInterestDoneMessage
    self.__playBackGenerates(handle)
  File "open-toontown\otp\distributed\OTPClientRepository.py", line 2312, in __playBackGenerates
    self.__generateObject(doId, parentId, zoneId, classId, di, other)
  File "open-toontown\otp\distributed\OTPClientRepository.py", line 2379, in __generateObject
    distObj = self.generateWithRequiredFields(dclass, doId, di, parentId, zoneId)
  File "Panda3D-1.11.0-x64\direct\distributed\ClientRepositoryBase.py", line 268, in generateWithRequiredFields
    distObj.updateRequiredFields(dclass, di)
  File "Panda3D-1.11.0-x64\direct\distributed\DistributedObject.py", line 343, in updateRequiredFields
    self.announceGenerate()
  File "open-toontown\toontown\minigame\DistributedMinigame.py", line 106, in announceGenerate
    self.load()
  File "open-toontown\toontown\minigame\DistributedTwoDGame.py", line 56, in load
    self.assetMgr = ToonBlitzAssetMgr.ToonBlitzAssetMgr(self)
  File "open-toontown\toontown\minigame\ToonBlitzAssetMgr.py", line 14, in __init__
    self.load()
  File "open-toontown\toontown\minigame\ToonBlitzAssetMgr.py", line 71, in load
    for n in range(ToonBlitzGlobals.NumSections[self.game.getSafezoneId()] + 1):
KeyError: 22000

Suggestion: FMOD Audio Support

If possible, I think it would be nice to have FMOD as an optional audio engine, for a few reasons.

First reason is MIDI support. If one wanted to continue using MIDI in the game, I think this would be a nice option to have.

Secondly is in relation to looping audio. In other game engines with FMOD support, its possible to set something called loop points, which tells the engine to loop a specific part of an audio file, which is much more flexible than the end to end playback Open AL uses. If FMOD in Panda also supports this, then I think it would be a great option to have.

Regarding Handling of Top Toons

This might be out of scope for this project, but if it is something that is covered at some point, I wanted to let something be known about Top Toons.

When the official source code for Toontown Online leaked, included was the code used for generating the Top Toons you used to be able to see on Disney's old website for the game. One of the things this code would access would be this website: https://www.etc.cmu.edu/projects/panda3d/downloads/

However, sometime after the leak came out, and people started to access the browse the contents of this area, it eventually was blocked off from public access, giving a 403 Forbidden error, meaning the files needed for this specific code are no longer accessible...

Is what I originally thought, but, it seems someone had the foresight to actually archive the page, and the assets Top Toons would have used can still be found here: https://web.archive.org/web/20200926231443/https://www.etc.cmu.edu/projects/panda3d/

Again, I don't think this is something that will be worked on in any way, but I wanted to have this be known, to anyone who wanted to work on this specific function of the game, that if you are seeking the files it would have used, they're still here, on archive.org.

Uberdog Server Issue

When trying to start the uberdog server for win32, the console is saying it is not finding the pytz module in the ToontownTimeManager.py file. I'm not too familiar with python, I only know C, but I looked inside that file to try and troubleshoot. Is pytz just a module that is not used anymore, but the "import pytz" line of code was not commented out, or is there maybe a file I am missing on my computer that didn't download when I downloaded all of the files? Any help is appreciated, thank you!

Client immediately crashes upon entering any interior

This seems to be caused by references to globalClock recently being replaced with base.clock, when ToonBase doesn't have a clock attribute.

  File "D:\PycharmProjects\open-toontown\toontown\building\ToonInterior.py", line 116, in enterTutorial
    base.clock.tick()
AttributeError: 'ToonBase' object has no attribute 'clock'

ToonInterior isn't the only file these references have been changed, so it likely causes crashes in other places too. This particular crash is caused by 1e4a749. I'm unsure of the intent of these changes, so I don't know how best to fix it - is this relying on unpushed changes to ToonBase?

Bug: It is impossible to purchase Doodles. (Intentional?)

As it says on the tin. If you go to the Pet Shop and try to talk to the Pet Shop Clerk, the game will softlock after the camera transition to the Clerk since the GUI doesn't show up. I am sure this is likely intentional due to Doodles not being coded in, but wouldn't it make more sense to disable the Clerks like how the Fishermen are disabled?

Crash Lawbot

16:11:40 :loader(error): Couldn't load file phase_4/models/questmap/cog_hq_lawbot_maps.bam: not found on model path (currently: "resources;/d/toontown/toontown/launcher;/c/Panda3D-1.11.0-x64/etc/..;/c/Panda3D-1.11.0-x64/etc/../models")
:06-19-2022 16:11:41 :loader(error): Couldn't load file phase_4/models/questmap/cog_hq_lawbot_maps.bam: not found on model path (currently: "resources;/d/toontown/toontown/launcher;/c/Panda3D-1.11.0-x64/etc/..;/c/Panda3D-1.11.0-x64/etc/../models")

Sellbot Factory Crash Missing Unused Model?

:07-20-2023 14:42:58 :loader(error): Couldn't load file phase_4/models/questmap/cog_hq_sellbot_maps.bam: not found on model path (currently: "resources;/h/work/cyndanera/Projects/toontown/server/toontown/launcher;/c/Panda3D-1.11.0-x64/etc/..;/c/Panda3D-1.11.0-x64/etc/../models")
:07-20-2023 14:42:59 OTPClientRepository: Sending heartbeat mid-frame.
:07-20-2023 14:43:02 :loader(error): Couldn't load file phase_4/models/questmap/cog_hq_sellbot_maps.bam: not found on model path (currently: "resources;/h/work/cyndanera/Projects/toontown/server/toontown/launcher;/c/Panda3D-1.11.0-x64/etc/..;/c/Panda3D-1.11.0-x64/etc/../models")
:07-20-2023 14:43:09 SellbotCogHQLoader: loadPlaceGeom: 11200
:07-20-2023 14:43:09 SellbotHQExterior: Unloading Place (11000). Fsm in final
:07-20-2023 14:43:09 DistributedObject: DistributedSuitPlanner 401002912: disabling
:07-20-2023 14:43:09 OTPClientRepository: dumpAllSubShardObjects: defaultShard is 401000001
:07-20-2023 14:43:09 OTPClientRepository: dumpAllSubShardObjects: CentralLogger 4688 parent 0 is not defaultShard
:07-20-2023 14:43:09 OTPClientRepository: dumpAllSubShardObjects: AstronLoginManager 4670 parent 0 is not defaultShard
:07-20-2023 14:43:09 OTPClientRepository: dumpAllSubShardObjects: TTPlayerFriendsManager 4687 parent 0 is not defaultShard
:07-20-2023 14:43:09 OTPClientRepository: dumpAllSubShardObjects: TTSpeedchatRelay 4712 parent 0 is not defaultShard
:07-20-2023 14:43:09 OTPClientRepository(warning): dumpAllSubShardObjects: neverDisable set for DistributedInGameNewsMgr 401000006
:07-20-2023 14:43:09 OTPClientRepository: dumpAllSubShardObjects: doIds left: [4688, 4670, 4686, 4687, 4712, 4683, 4695, 4501, 401000001, 100000001, 401000003, 401000005, 401000010, 401000004, 401000009, 401000011, 401000007, 401000008, 401000012, 401000006]
:07-20-2023 14:43:09 DistributedObject: DistributedSuitPlanner 401002913: generating
:07-20-2023 14:43:09 DistributedObject: zone 11200 has 2 disconnected suit paths.
:07-20-2023 14:43:09 DistributedToon: calling LocalAvatar.startchat
:07-20-2023 14:43:09 :loader(error): Couldn't load file phase_4/models/questmap/cog_hq_sellbot_maps.bam: not found on model path (currently: "resources;/h/work/cyndanera/Projects/toontown/server/toontown/launcher;/c/Panda3D-1.11.0-x64/etc/..;/c/Panda3D-1.11.0-x64/etc/../models")
:07-20-2023 14:43:12 :loader(error): Couldn't load file phase_4/models/questmap/cog_hq_sellbot_maps.bam: not found on model path (currently: "resources;/h/work/cyndanera/Projects/toontown/server/toontown/launcher;/c/Panda3D-1.11.0-x64/etc/..;/c/Panda3D-1.11.0-x64/etc/../models")
:07-20-2023 14:43:42 DistributedObject: DistributedSuitPlanner 401002913: disabling
:07-20-2023 14:43:42 OTPClientRepository(warning): Server is booting us out (153): The session object with id 100000001 has been unexpectedly deleted.
:07-20-2023 14:43:42 OTPClientRepository(warning): Lost connection to gameserver.
:07-20-2023 14:43:42 FactoryExterior: Unloading Place (11200). Fsm in final
:07-20-2023 14:43:42 OTPClientRepository(warning): unclean exit, abandoning shard
ignoring InputState-forward
:07-20-2023 14:43:42 OTPClientRepository: sending clientLogout
:07-20-2023 14:43:42 LocalAvatar(warning): redundant call to stopUpdateSmartCamera
:07-20-2023 14:43:42 Launcher: New Disconnect Details: 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.
:07-20-2023 14:43:42 OTPClientRepository(warning): Lost connection to server. Notifying user.
:07-20-2023 14:43:42 OTPClientRepository(warning): Disable failed. DistObj 401003684 is not in dictionary, ownerView=False
:07-20-2023 14:43:42 OTPClientRepository(warning): Disable failed. DistObj 401003685 is not in dictionary, ownerView=False
:07-20-2023 14:43:42 OTPClientRepository(warning): Disable failed. DistObj 401003686 is not in dictionary, ownerView=False
:07-20-2023 14:43:42 OTPClientRepository(warning): Disable failed. DistObj 401003779 is not in dictionary, ownerView=False
:07-20-2023 14:43:42 OTPClientRepository(warning): Disable failed. DistObj 401003781 is not in dictionary, ownerView=False
:07-20-2023 14:43:42 OTPClientRepository(warning): Disable failed. DistObj 401003827 is not in dictionary, ownerView=False
:07-20-2023 14:43:42 OTPClientRepository(warning): Disable failed. DistObj 401003877 is not in dictionary, ownerView=False
:07-20-2023 14:43:42 OTPClientRepository(warning): Disable failed. DistObj 401003924 is not in dictionary, ownerView=False
:07-20-2023 14:43:42 OTPClientRepository(warning): Disable failed. DistObj 401003933 is not in dictionary, ownerView=False
:07-20-2023 14:43:42 :downloader(warning): Windows error code: 0
:07-20-2023 14:43:42 OTPClientRepository(warning): Lost connection to gameserver.
:07-20-2023 14:55:32 OTPClientRepository: Exiting cleanly
:07-20-2023 14:55:32 ToonBase: Exiting Toontown: errorCode = None
:07-20-2023 14:55:32 Launcher: setting panda error code to 0
:07-20-2023 14:55:33 Launcher: Normal exit.
Press any key to continue . . .

"Logout" button in PAT screen doesn't function as intended

Explanation

When trying to press the "logout" button on the bottom left corner of the pick a toon screen, it instead says:
An unexpected problem has occurred (error code 108). Your connection has been lost, but you should be able to connect again and go back right into the game.
Try to connect again?

Output

Astron outputs these two security warnings as well:

[2021-09-05 15:19:06] SECURITY: Client (127.0.0.1:62293, 1000000005): Ejecting client (108): Message type 1 not valid.
[2021-09-05 15:19:06] SECURITY: Client (127.0.0.1:62293, 1000000005): Ejecting client (106): Datagram contains excess data.

Changing News, Whitelist, and other Internet based things to be Local

So, as it is right now, The Whitelist, News, and maybe other parts of the game, pull data from Disney's old servers.

While this is fine for now, it might be best to get said data, add it to this repo, and then change the code to read the files locally, so that way, the data will not be lost to time, should the Disney servers for said data ever go down.

District reset when i get into the game

File "C:\Users\justi\Desktop\toontown\ttsourcecode\open-toontown-stuff\open-toontown\toontown\building\DistributedToonInteriorAI.py", line 44, in getSavedBy
    for avId, name, dnaTuple in self.building.savedBy:
TypeError: 'NoneType' object is not iterable

Toontown Crashes After Toon Logging Onto Toontown

After I made my Toon, I was teleported to the Toontown Central and the game crashed giving me this error:

File "C:\Toon\open-toontown-develop\toontown\toontowngui\NewsPageButtonManager.py", line 129, in enterNormalWalk if localAvatar.getLastTimeReadNews() < base.cr.inGameNewsMgr.getLatestIssue(): TypeError: '<' not supported between instances of 'NoneType' and 'NoneType'

Please Note: I have copied the 'ToontoonTimeManager.py' File from Toontown Fellowship cause the File that came with the zip seems to have a lot of errors in the code.

See into moving Online aspects to work Offline

Following up the previous issue, I feel it is also important to see into reworking certain aspects to work offline, if possible.

Aspects such as the ingame news, word whitelist and blacklist, are still pulling files from Disney servers. If possible, I would probably look into saving all of the still working links, and redirecting them to point to somewhere else, like the game resources.

Doing this will ensure aspects of the game will work offline, and also will make sure nothing gets lost. These files may not stay up forever, so archiving them now would be the best move, before its too late, I feel.

No astron folder for linux

Every other shell file in the linux folder works (start-ai, start-game, start-uberdog) . However, there is no astron folder for linux to cd into.

Not sure if there was anything wrong when building the panda3d.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.