mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-24 04:02:40 -06:00
Reporting!
This commit is contained in:
parent
71f72ef913
commit
3ce32fe9d5
21 changed files with 117 additions and 369 deletions
|
@ -13,12 +13,9 @@ from otp.friends import PlayerFriendsManager/UD
|
||||||
from otp.friends import GuildManager/AI/UD
|
from otp.friends import GuildManager/AI/UD
|
||||||
from otp.friends import FriendInfo
|
from otp.friends import FriendInfo
|
||||||
from otp.friends import AvatarFriendInfo
|
from otp.friends import AvatarFriendInfo
|
||||||
from otp.distributed import ObjectServer/AI/UD
|
|
||||||
from otp.distributed import DistributedDistrict/AI/UD
|
from otp.distributed import DistributedDistrict/AI/UD
|
||||||
from otp.distributed import DistributedDirectory/AI
|
from otp.distributed import DistributedDirectory/AI
|
||||||
from otp.distributed import DistributedTestObject/AI
|
|
||||||
from otp.chat import ChatAgent/UD
|
from otp.chat import ChatAgent/UD
|
||||||
from otp.distributed import CentralLogger/AI/UD
|
|
||||||
from otp.avatar import AvatarHandle
|
from otp.avatar import AvatarHandle
|
||||||
|
|
||||||
typedef uint8 bool;
|
typedef uint8 bool;
|
||||||
|
@ -57,19 +54,6 @@ dclass DistributedObject {
|
||||||
broadcastMessage() broadcast;
|
broadcastMessage() broadcast;
|
||||||
};
|
};
|
||||||
|
|
||||||
dclass DistributedTestObject : DistributedObject {
|
|
||||||
uint32 AutoInterest[];
|
|
||||||
setParentingRules(string, string) broadcast ram;
|
|
||||||
setRequiredField(uint32) required broadcast ram;
|
|
||||||
setB(uint32) broadcast;
|
|
||||||
setBA(uint32) broadcast airecv;
|
|
||||||
setBO(uint32) broadcast ownsend;
|
|
||||||
setBR(uint32) broadcast ram;
|
|
||||||
setBRA(uint32) broadcast ram airecv;
|
|
||||||
setBRO(uint32) broadcast ram ownsend;
|
|
||||||
setBROA(uint32) broadcast ram ownsend airecv;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct OSInfo {
|
struct OSInfo {
|
||||||
string name;
|
string name;
|
||||||
int16 platform;
|
int16 platform;
|
||||||
|
@ -103,12 +87,6 @@ dclass TimeManager : DistributedObject {
|
||||||
checkAvOnDistrictResult(uint32 context, DoId av, bool isOnDistrict);
|
checkAvOnDistrictResult(uint32 context, DoId av, bool isOnDistrict);
|
||||||
};
|
};
|
||||||
|
|
||||||
dclass ObjectServer {
|
|
||||||
setName(string) airecv ram required;
|
|
||||||
setDcHash(uint32) ram required;
|
|
||||||
setDateCreated(uint32) airecv;
|
|
||||||
};
|
|
||||||
|
|
||||||
dclass DistributedDirectory : DistributedObject {
|
dclass DistributedDirectory : DistributedObject {
|
||||||
setParentingRules(string, string) broadcast ram;
|
setParentingRules(string, string) broadcast ram;
|
||||||
};
|
};
|
||||||
|
@ -414,11 +392,6 @@ dclass PlayerFriendsManager : DistributedObject, TalkPath_account {
|
||||||
removePlayerFriend(uint32);
|
removePlayerFriend(uint32);
|
||||||
};
|
};
|
||||||
|
|
||||||
dclass CentralLogger : DistributedObject {
|
|
||||||
sendMessage(string(0-256), string(0-1024), uint32, uint32) clsend;
|
|
||||||
logAIGarbage() airecv;
|
|
||||||
};
|
|
||||||
|
|
||||||
dclass CallbackObject {
|
dclass CallbackObject {
|
||||||
callback(uint32, bool, uint8);
|
callback(uint32, bool, uint8);
|
||||||
};
|
};
|
||||||
|
@ -581,6 +554,7 @@ from toontown.suit import DistributedGridGoon/AI
|
||||||
from toontown.coghq import BattleBlocker/AI
|
from toontown.coghq import BattleBlocker/AI
|
||||||
from toontown.ai import DistributedAprilToonsMgr/AI
|
from toontown.ai import DistributedAprilToonsMgr/AI
|
||||||
from toontown.ai import DistributedBlackCatMgr/AI
|
from toontown.ai import DistributedBlackCatMgr/AI
|
||||||
|
from toontown.ai import DistributedReportMgr/AI
|
||||||
from toontown.ai import DistributedPolarBearMgr/AI
|
from toontown.ai import DistributedPolarBearMgr/AI
|
||||||
from toontown.ai import DistributedPolarPlaceEffectMgr/AI
|
from toontown.ai import DistributedPolarPlaceEffectMgr/AI
|
||||||
from toontown.ai import DistributedGreenToonEffectMgr/AI
|
from toontown.ai import DistributedGreenToonEffectMgr/AI
|
||||||
|
@ -849,6 +823,7 @@ dclass DistributedToon : DistributedPlayer {
|
||||||
setExperience(blob = [0*14]) required broadcast db;
|
setExperience(blob = [0*14]) required broadcast db;
|
||||||
setTrueFriends(uint32[]) required ownrecv db;
|
setTrueFriends(uint32[]) required ownrecv db;
|
||||||
setIgnored(uint32[]) required clsend airecv ownrecv db;
|
setIgnored(uint32[]) required clsend airecv ownrecv db;
|
||||||
|
setReported(uint32[]) required clrecv db;
|
||||||
setMaxCarry(uint8 = 20) required ownrecv db;
|
setMaxCarry(uint8 = 20) required ownrecv db;
|
||||||
setTrackAccess(uint16[] = [0,0,0,0,1,1,0]) required broadcast ownrecv db;
|
setTrackAccess(uint16[] = [0,0,0,0,1,1,0]) required broadcast ownrecv db;
|
||||||
setTrackProgress(int8 = -1, uint32 = 0) required ownrecv db;
|
setTrackProgress(int8 = -1, uint32 = 0) required ownrecv db;
|
||||||
|
@ -2746,6 +2721,10 @@ dclass DistributedBlackCatMgr : DistributedObject {
|
||||||
requestBlackCatTransformation() airecv clsend;
|
requestBlackCatTransformation() airecv clsend;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dclass DistributedReportMgr : DistributedObject {
|
||||||
|
sendRequest(uint32, string) airecv;
|
||||||
|
};
|
||||||
|
|
||||||
dclass DistributedPolarBearMgr : DistributedObject {
|
dclass DistributedPolarBearMgr : DistributedObject {
|
||||||
doPolarBearTransformation(uint32 avId) broadcast;
|
doPolarBearTransformation(uint32 avId) broadcast;
|
||||||
requestPolarBearTransformation() airecv clsend;
|
requestPolarBearTransformation() airecv clsend;
|
||||||
|
|
|
@ -60,7 +60,6 @@ class AIBase:
|
||||||
__builtins__['hidden'] = self.hidden
|
__builtins__['hidden'] = self.hidden
|
||||||
AIBase.notify.info('__dev__ == %s' % __dev__)
|
AIBase.notify.info('__dev__ == %s' % __dev__)
|
||||||
PythonUtil.recordFunctorCreationStacks()
|
PythonUtil.recordFunctorCreationStacks()
|
||||||
__builtins__['wantTestObject'] = self.config.GetBool('want-test-object', 0)
|
|
||||||
self.wantStats = self.config.GetBool('want-pstats', 0)
|
self.wantStats = self.config.GetBool('want-pstats', 0)
|
||||||
Task.TaskManager.pStatsTasks = self.config.GetBool('pstats-tasks', 0)
|
Task.TaskManager.pStatsTasks = self.config.GetBool('pstats-tasks', 0)
|
||||||
taskMgr.resumeFunc = PStatClient.resumeAfterPause
|
taskMgr.resumeFunc = PStatClient.resumeAfterPause
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
from direct.distributed.DistributedObjectGlobal import DistributedObjectGlobal
|
|
||||||
|
|
||||||
|
|
||||||
REPORT_PLAYER = 'report-player'
|
|
||||||
ReportFoulLanguage = 'foul-language'
|
|
||||||
ReportPersonalInfo = 'personal-info'
|
|
||||||
ReportRudeBehavior = 'rude-behavior'
|
|
||||||
ReportBadName = 'bad-name'
|
|
||||||
ReportHacking = 'hacking'
|
|
||||||
|
|
||||||
|
|
||||||
class CentralLogger(DistributedObjectGlobal):
|
|
||||||
PlayersReportedThisSession = {}
|
|
||||||
|
|
||||||
def hasReportedPlayer(self, targetDISLId, targetAvId):
|
|
||||||
return (targetDISLId, targetAvId) in self.PlayersReportedThisSession
|
|
||||||
|
|
||||||
def reportPlayer(self, category, targetDISLId, targetAvId, description='None'):
|
|
||||||
if self.hasReportedPlayer(targetDISLId, targetAvId):
|
|
||||||
return False
|
|
||||||
self.PlayersReportedThisSession[targetDISLId, targetAvId] = 1
|
|
||||||
self.sendUpdate('sendMessage', [category, REPORT_PLAYER, targetDISLId, targetAvId])
|
|
||||||
return True
|
|
||||||
|
|
||||||
def writeClientEvent(self, eventString, sender=0, receiver=0):
|
|
||||||
self.sendUpdate('sendMessage', ['client-event', eventString, sender, receiver])
|
|
|
@ -1,12 +0,0 @@
|
||||||
from direct.directnotify import DirectNotifyGlobal
|
|
||||||
from direct.distributed.DistributedObjectAI import DistributedObjectAI
|
|
||||||
|
|
||||||
class CentralLoggerAI(DistributedObjectAI):
|
|
||||||
notify = DirectNotifyGlobal.directNotify.newCategory("CentralLoggerAI")
|
|
||||||
|
|
||||||
def sendMessage(self, todo0, todo1, todo2, todo3):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def logAIGarbage(self):
|
|
||||||
pass
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
from direct.distributed.DistributedObjectUD import DistributedObjectUD
|
|
||||||
|
|
||||||
|
|
||||||
class CentralLoggerUD(DistributedObjectUD):
|
|
||||||
def sendMessage(self, category, description, sender, receiver):
|
|
||||||
self.air.writeServerEvent(category, sender, receiver, description)
|
|
||||||
|
|
||||||
def logAIGarbage(self):
|
|
||||||
pass
|
|
|
@ -2,7 +2,7 @@
|
||||||
from pandac.PandaModules import *
|
from pandac.PandaModules import *
|
||||||
|
|
||||||
|
|
||||||
hashVal = 348191280
|
hashVal = 3777956254L
|
||||||
|
|
||||||
|
|
||||||
from toontown.coghq import DistributedCashbotBossSafe, DistributedCashbotBossCrane, DistributedBattleFactory, DistributedCashbotBossTreasure, DistributedCogHQDoor, DistributedSellbotHQDoor, DistributedFactoryElevatorExt, DistributedMintElevatorExt, DistributedLawOfficeElevatorExt, DistributedLawOfficeElevatorInt, LobbyManager, DistributedMegaCorp, DistributedFactory, DistributedLawOffice, DistributedLawOfficeFloor, DistributedLift, DistributedDoorEntity, DistributedSwitch, DistributedButton, DistributedTrigger, DistributedCrushableEntity, DistributedCrusherEntity, DistributedStomper, DistributedStomperPair, DistributedLaserField, DistributedGolfGreenGame, DistributedSecurityCamera, DistributedMover, DistributedElevatorMarker, DistributedBarrelBase, DistributedGagBarrel, DistributedBeanBarrel, DistributedHealBarrel, DistributedGrid, ActiveCell, DirectionalCell, CrusherCell, DistributedCrate, DistributedSinkingPlatform, BattleBlocker, DistributedMint, DistributedMintRoom, DistributedMintBattle, DistributedStage, DistributedStageRoom, DistributedStageBattle, DistributedLawbotBossGavel, DistributedLawbotCannon, DistributedLawbotChair, DistributedCogKart, DistributedCountryClub, DistributedCountryClubRoom, DistributedMoleField, DistributedCountryClubBattle, DistributedMaze, DistributedFoodBelt, DistributedBanquetTable, DistributedGolfSpot
|
from toontown.coghq import DistributedCashbotBossSafe, DistributedCashbotBossCrane, DistributedBattleFactory, DistributedCashbotBossTreasure, DistributedCogHQDoor, DistributedSellbotHQDoor, DistributedFactoryElevatorExt, DistributedMintElevatorExt, DistributedLawOfficeElevatorExt, DistributedLawOfficeElevatorInt, LobbyManager, DistributedMegaCorp, DistributedFactory, DistributedLawOffice, DistributedLawOfficeFloor, DistributedLift, DistributedDoorEntity, DistributedSwitch, DistributedButton, DistributedTrigger, DistributedCrushableEntity, DistributedCrusherEntity, DistributedStomper, DistributedStomperPair, DistributedLaserField, DistributedGolfGreenGame, DistributedSecurityCamera, DistributedMover, DistributedElevatorMarker, DistributedBarrelBase, DistributedGagBarrel, DistributedBeanBarrel, DistributedHealBarrel, DistributedGrid, ActiveCell, DirectionalCell, CrusherCell, DistributedCrate, DistributedSinkingPlatform, BattleBlocker, DistributedMint, DistributedMintRoom, DistributedMintBattle, DistributedStage, DistributedStageRoom, DistributedStageBattle, DistributedLawbotBossGavel, DistributedLawbotCannon, DistributedLawbotChair, DistributedCogKart, DistributedCountryClub, DistributedCountryClubRoom, DistributedMoleField, DistributedCountryClubBattle, DistributedMaze, DistributedFoodBelt, DistributedBanquetTable, DistributedGolfSpot
|
||||||
|
@ -14,7 +14,7 @@ from otp.level import DistributedLevel, DistributedEntity, DistributedInteractiv
|
||||||
from toontown.shtiker import DeleteManager, PurchaseManager, NewbiePurchaseManager
|
from toontown.shtiker import DeleteManager, PurchaseManager, NewbiePurchaseManager
|
||||||
from toontown.groups import GroupManager
|
from toontown.groups import GroupManager
|
||||||
from toontown.uberdog.ClientServicesManager import ClientServicesManager
|
from toontown.uberdog.ClientServicesManager import ClientServicesManager
|
||||||
from toontown.ai import WelcomeValleyManager, NewsManager, DistributedAprilToonsMgr, DistributedBlackCatMgr, DistributedPolarBearMgr, DistributedPolarPlaceEffectMgr, DistributedGreenToonEffectMgr, DistributedResistanceEmoteMgr, DistributedScavengerHuntTarget, DistributedTrickOrTreatTarget, DistributedWinterCarolingTarget, DistributedSillyMeterMgr
|
from toontown.ai import WelcomeValleyManager, NewsManager, DistributedAprilToonsMgr, DistributedBlackCatMgr, DistributedReportMgr, DistributedPolarBearMgr, DistributedPolarPlaceEffectMgr, DistributedGreenToonEffectMgr, DistributedResistanceEmoteMgr, DistributedScavengerHuntTarget, DistributedTrickOrTreatTarget, DistributedWinterCarolingTarget, DistributedSillyMeterMgr
|
||||||
from otp.chat import ChatAgent
|
from otp.chat import ChatAgent
|
||||||
from toontown.parties.GlobalPartyManager import GlobalPartyManager
|
from toontown.parties.GlobalPartyManager import GlobalPartyManager
|
||||||
from toontown.racing.DistributedStartingBlock import DistributedViewingBlock
|
from toontown.racing.DistributedStartingBlock import DistributedViewingBlock
|
||||||
|
@ -33,7 +33,7 @@ from toontown.friends.TrueFriendsMgr import TrueFriendsMgr
|
||||||
from toontown.coghq.InGameEditorDCImports import *
|
from toontown.coghq.InGameEditorDCImports import *
|
||||||
from toontown.friends import TTPlayerFriendsManager, TTUFriendsManager
|
from toontown.friends import TTPlayerFriendsManager, TTUFriendsManager
|
||||||
from toontown.cogdominium import DistributedCogdoInterior, DistributedCogdoBattleBldg, DistributedCogdoElevatorExt, DistributedCogdoElevatorInt, DistributedCogdoBarrel, DistCogdoGame, DistCogdoLevelGame, DistCogdoBoardroomGame, DistCogdoCraneGame, DistCogdoMazeGame, DistCogdoFlyingGame, DistCogdoCrane, DistCogdoCraneMoneyBag, DistCogdoCraneCog
|
from toontown.cogdominium import DistributedCogdoInterior, DistributedCogdoBattleBldg, DistributedCogdoElevatorExt, DistributedCogdoElevatorInt, DistributedCogdoBarrel, DistCogdoGame, DistCogdoLevelGame, DistCogdoBoardroomGame, DistCogdoCraneGame, DistCogdoMazeGame, DistCogdoFlyingGame, DistCogdoCrane, DistCogdoCraneMoneyBag, DistCogdoCraneCog
|
||||||
from otp.distributed import Account, ObjectServer, DistributedDistrict, DistributedDirectory, DistributedTestObject, CentralLogger
|
from otp.distributed import Account, DistributedDistrict, DistributedDirectory
|
||||||
from toontown.estate import DistributedCannon, DistributedTarget, EstateManager, DistributedEstate, DistributedHouse, DistributedHouseInterior, DistributedGarden, DistributedHouseDoor, DistributedMailbox, DistributedFurnitureManager, DistributedFurnitureItem, DistributedBank, DistributedCloset, DistributedTrunk, DistributedPhone, DistributedFireworksCannon, DistributedLawnDecor, DistributedGardenPlot, DistributedGardenBox, DistributedFlower, DistributedGagTree, DistributedStatuary, DistributedToonStatuary, DistributedChangingStatuary, DistributedAnimatedStatuary, DistributedPlantBase, DistributedLawnDecor
|
from toontown.estate import DistributedCannon, DistributedTarget, EstateManager, DistributedEstate, DistributedHouse, DistributedHouseInterior, DistributedGarden, DistributedHouseDoor, DistributedMailbox, DistributedFurnitureManager, DistributedFurnitureItem, DistributedBank, DistributedCloset, DistributedTrunk, DistributedPhone, DistributedFireworksCannon, DistributedLawnDecor, DistributedGardenPlot, DistributedGardenBox, DistributedFlower, DistributedGagTree, DistributedStatuary, DistributedToonStatuary, DistributedChangingStatuary, DistributedAnimatedStatuary, DistributedPlantBase, DistributedLawnDecor
|
||||||
from toontown.toon import DistributedToon, DistributedNPCToonBase, DistributedNPCToon, DistributedSmartNPC, DistributedSmartNPC, DistributedNPCSpecialQuestGiver, DistributedNPCFlippyInToonHall, DistributedNPCScientist, DistributedNPCClerk, DistributedNPCTailor, DistributedNPCBlocker, DistributedNPCFisherman, DistributedNPCPartyPerson, DistributedNPCPetclerk, DistributedNPCKartClerk, DistributedNPCGlove
|
from toontown.toon import DistributedToon, DistributedNPCToonBase, DistributedNPCToon, DistributedSmartNPC, DistributedSmartNPC, DistributedNPCSpecialQuestGiver, DistributedNPCFlippyInToonHall, DistributedNPCScientist, DistributedNPCClerk, DistributedNPCTailor, DistributedNPCBlocker, DistributedNPCFisherman, DistributedNPCPartyPerson, DistributedNPCPetclerk, DistributedNPCKartClerk, DistributedNPCGlove
|
||||||
from toontown.tutorial import DistributedBattleTutorial, TutorialManager
|
from toontown.tutorial import DistributedBattleTutorial, TutorialManager
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
from direct.distributed import DistributedObject
|
|
||||||
|
|
||||||
class DistributedTestObject(DistributedObject.DistributedObject):
|
|
||||||
|
|
||||||
def setRequiredField(self, r):
|
|
||||||
self.requiredField = r
|
|
||||||
|
|
||||||
def setB(self, B):
|
|
||||||
self.B = B
|
|
||||||
|
|
||||||
def setBA(self, BA):
|
|
||||||
self.BA = BA
|
|
||||||
|
|
||||||
def setBO(self, BO):
|
|
||||||
self.BO = BO
|
|
||||||
|
|
||||||
def setBR(self, BR):
|
|
||||||
self.BR = BR
|
|
||||||
|
|
||||||
def setBRA(self, BRA):
|
|
||||||
self.BRA = BRA
|
|
||||||
|
|
||||||
def setBRO(self, BRO):
|
|
||||||
self.BRO = BRO
|
|
||||||
|
|
||||||
def setBROA(self, BROA):
|
|
||||||
self.BROA = BROA
|
|
||||||
|
|
||||||
def gotNonReqThatWasntSet(self):
|
|
||||||
for field in ('B', 'BA', 'BO', 'BR', 'BRA', 'BRO', 'BROA'):
|
|
||||||
if hasattr(self, field):
|
|
||||||
return True
|
|
||||||
|
|
||||||
return False
|
|
|
@ -1,33 +0,0 @@
|
||||||
from direct.directnotify import DirectNotifyGlobal
|
|
||||||
from direct.distributed.DistributedObjectAI import DistributedObjectAI
|
|
||||||
|
|
||||||
class DistributedTestObjectAI(DistributedObjectAI):
|
|
||||||
notify = DirectNotifyGlobal.directNotify.newCategory("DistributedTestObjectAI")
|
|
||||||
|
|
||||||
def setParentingRules(self, todo0, todo1):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def setRequiredField(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def setB(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def setBA(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def setBO(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def setBR(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def setBRA(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def setBRO(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def setBROA(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
|
@ -1,133 +0,0 @@
|
||||||
from direct.directnotify.DirectNotifyGlobal import directNotify
|
|
||||||
from direct.showbase import DirectObject, TaskThreaded
|
|
||||||
|
|
||||||
class GameServerTestSuite(DirectObject.DirectObject, TaskThreaded.TaskThreaded):
|
|
||||||
notify = directNotify.newCategory('GarbageReport')
|
|
||||||
|
|
||||||
def __init__(self, cr):
|
|
||||||
self.cr = cr
|
|
||||||
TaskThreaded.TaskThreaded.__init__(self, self.__class__.__name__)
|
|
||||||
|
|
||||||
class TimeoutTest(DirectObject.DirectObject):
|
|
||||||
Timeout = 10
|
|
||||||
|
|
||||||
def _getTaskName(self, name):
|
|
||||||
return '%s-timeout-%s' % (self.__class__.__name__, name)
|
|
||||||
|
|
||||||
def startTimeout(self, name):
|
|
||||||
self.stopTimeout(name)
|
|
||||||
_taskName = self._getTaskName(name)
|
|
||||||
taskMgr.doMethodLater(self.Timeout, Functor(self._timeout, _taskName), _taskName)
|
|
||||||
|
|
||||||
def stopTimeout(self, name):
|
|
||||||
_taskName = self._getTaskName(name)
|
|
||||||
taskMgr.remove(_taskName)
|
|
||||||
|
|
||||||
def _timeout(self, taskName, task = None):
|
|
||||||
self.parent.notify.warning('TEST TIMED OUT: %s' % taskName)
|
|
||||||
import pdb
|
|
||||||
pdb.set_trace()
|
|
||||||
|
|
||||||
class MsgHandlerTest:
|
|
||||||
|
|
||||||
def installMsgHandler(self):
|
|
||||||
self.oldHandler = self.parent.handler
|
|
||||||
self.parent.handler = self.handleMsg
|
|
||||||
|
|
||||||
def removeMsgHandler(self):
|
|
||||||
self.parent.handler = self.oldHandler
|
|
||||||
del self.oldHandler
|
|
||||||
|
|
||||||
def handleMsg(self, msgType, di):
|
|
||||||
self.parent.cr.handler(msgType, di)
|
|
||||||
|
|
||||||
class TestGetAvatars(TaskThreaded.TaskThread, TimeoutTest, MsgHandlerTest):
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
self.state = 'request'
|
|
||||||
self.installMsgHandler()
|
|
||||||
|
|
||||||
def handleMsg(self, msgType, di):
|
|
||||||
if msgType == CLIENT_GET_AVATARS_RESP:
|
|
||||||
self.finished()
|
|
||||||
else:
|
|
||||||
MsgHandlerTest.handleMsg(self, msgType, di)
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
if self.state == 'request':
|
|
||||||
self.parent.cr.sendGetAvatarsMsg()
|
|
||||||
self.startTimeout('getAvatarList')
|
|
||||||
self.state = 'waitForList'
|
|
||||||
|
|
||||||
def tearDown(self):
|
|
||||||
self.stopTimeout('getAvatarList')
|
|
||||||
self.removeMsgHandler()
|
|
||||||
|
|
||||||
class TestInterestOpenAndClose(TaskThreaded.TaskThread, TimeoutTest):
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
self.state = 'open'
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
if self.state == 'open':
|
|
||||||
|
|
||||||
def openInterestDone():
|
|
||||||
self.stopTimeout(self.timeoutName)
|
|
||||||
self.state = 'modify'
|
|
||||||
|
|
||||||
doneEvent = uniqueName('openInterest')
|
|
||||||
self.acceptOnce(doneEvent, openInterestDone)
|
|
||||||
openInterestDone = None
|
|
||||||
self.timeoutName = 'openInterest'
|
|
||||||
self.startTimeout(self.timeoutName)
|
|
||||||
self.handle = self.parent.cr.addInterest(self.parent.cr.GameGlobalsId, 91504, 'testInterest', doneEvent)
|
|
||||||
self.state = 'waitOpenComplete'
|
|
||||||
elif self.state == 'modify':
|
|
||||||
|
|
||||||
def modifyInterestDone():
|
|
||||||
self.stopTimeout(self.timeoutName)
|
|
||||||
self.state = 'close'
|
|
||||||
|
|
||||||
doneEvent = uniqueName('openInterest')
|
|
||||||
self.acceptOnce(doneEvent, modifyInterestDone)
|
|
||||||
modifyInterestDone = None
|
|
||||||
self.timeoutName = 'modifyInterest'
|
|
||||||
self.startTimeout(self.timeoutName)
|
|
||||||
self.parent.cr.alterInterest(self.handle, self.parent.cr.GameGlobalsId, 91506, 'testInterest', doneEvent)
|
|
||||||
self.state = 'waitModifyComplete'
|
|
||||||
elif self.state == 'close':
|
|
||||||
|
|
||||||
def closeInterestDone():
|
|
||||||
self.stopTimeout(self.timeoutName)
|
|
||||||
self.state = 'done'
|
|
||||||
|
|
||||||
doneEvent = uniqueName('closeInterest')
|
|
||||||
self.acceptOnce(doneEvent, closeInterestDone)
|
|
||||||
closeInterestDone = None
|
|
||||||
self.timeoutName = 'closeInterest'
|
|
||||||
self.startTimeout(self.timeoutName)
|
|
||||||
self.handle = self.parent.cr.removeInterest(self.handle, doneEvent)
|
|
||||||
self.state = 'waitCloseComplete'
|
|
||||||
elif self.state == 'done':
|
|
||||||
self.finished()
|
|
||||||
return
|
|
||||||
|
|
||||||
class TestNonRequiredNonSetFields(TaskThreaded.TaskThread, TimeoutTest):
|
|
||||||
Timeout = 60
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
self.timeoutName = 'lookForObj'
|
|
||||||
self.startTimeout(self.timeoutName)
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
testObj = self.parent.cr.doFind('DistributedTestObject')
|
|
||||||
if testObj is not None:
|
|
||||||
self.finished()
|
|
||||||
return
|
|
||||||
|
|
||||||
def tearDown(self):
|
|
||||||
self.stopTimeout(self.timeoutName)
|
|
||||||
del self.timeoutName
|
|
||||||
|
|
||||||
self.scheduleThread(TestInterestOpenAndClose())
|
|
||||||
self.scheduleThread(TestNonRequiredNonSetFields())
|
|
|
@ -261,7 +261,6 @@ class OTPClientRepository(ClientRepositoryBase):
|
||||||
self.__pendingMessages = {}
|
self.__pendingMessages = {}
|
||||||
self.__doId2pendingInterest = {}
|
self.__doId2pendingInterest = {}
|
||||||
|
|
||||||
self.centralLogger = self.generateGlobalObject(OtpDoGlobals.OTP_DO_ID_CENTRAL_LOGGER, 'CentralLogger')
|
|
||||||
self.chatAgent = self.generateGlobalObject(OtpDoGlobals.OTP_DO_ID_CHAT_MANAGER, 'ChatAgent')
|
self.chatAgent = self.generateGlobalObject(OtpDoGlobals.OTP_DO_ID_CHAT_MANAGER, 'ChatAgent')
|
||||||
self.csm = None # To be set by subclass.
|
self.csm = None # To be set by subclass.
|
||||||
|
|
||||||
|
@ -530,9 +529,6 @@ class OTPClientRepository(ClientRepositoryBase):
|
||||||
@report(types=['args', 'deltaStamp'], dConfigParam='teleport')
|
@report(types=['args', 'deltaStamp'], dConfigParam='teleport')
|
||||||
def waitForGetGameListResponse(self):
|
def waitForGetGameListResponse(self):
|
||||||
if self.isGameListCorrect():
|
if self.isGameListCorrect():
|
||||||
if base.config.GetBool('game-server-tests', 0):
|
|
||||||
from otp.distributed import GameServerTestSuite
|
|
||||||
GameServerTestSuite.GameServerTestSuite(self)
|
|
||||||
self.loginFSM.request('waitForShardList')
|
self.loginFSM.request('waitForShardList')
|
||||||
else:
|
else:
|
||||||
self.loginFSM.request('missingGameRootObject')
|
self.loginFSM.request('missingGameRootObject')
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
from direct.directnotify import DirectNotifyGlobal
|
|
||||||
from direct.distributed import DistributedObject
|
|
||||||
|
|
||||||
class ObjectServer(DistributedObject.DistributedObject):
|
|
||||||
notify = DirectNotifyGlobal.directNotify.newCategory('ObjectServer')
|
|
||||||
|
|
||||||
def __init__(self, cr):
|
|
||||||
DistributedObject.DistributedObject.__init__(self, cr)
|
|
||||||
|
|
||||||
def setName(self, name):
|
|
||||||
self.name = name
|
|
|
@ -1,15 +0,0 @@
|
||||||
from direct.directnotify import DirectNotifyGlobal
|
|
||||||
from direct.distributed.DistributedObjectAI import DistributedObjectAI
|
|
||||||
|
|
||||||
class ObjectServerAI(DistributedObjectAI):
|
|
||||||
notify = DirectNotifyGlobal.directNotify.newCategory("ObjectServerAI")
|
|
||||||
|
|
||||||
def setName(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def setDcHash(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def setDateCreated(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
from direct.directnotify import DirectNotifyGlobal
|
|
||||||
from direct.distributed.DistributedObjectUD import DistributedObjectUD
|
|
||||||
|
|
||||||
class ObjectServerUD(DistributedObjectUD):
|
|
||||||
notify = DirectNotifyGlobal.directNotify.newCategory("ObjectServerUD")
|
|
||||||
|
|
||||||
def setName(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def setDcHash(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def setDateCreated(self, todo0):
|
|
||||||
pass
|
|
||||||
|
|
|
@ -24,9 +24,6 @@ class DistributedBlackCatMgr(DistributedObject.DistributedObject):
|
||||||
neverDisable = 1
|
neverDisable = 1
|
||||||
notify = DirectNotifyGlobal.directNotify.newCategory('DistributedBlackCatMgr')
|
notify = DirectNotifyGlobal.directNotify.newCategory('DistributedBlackCatMgr')
|
||||||
|
|
||||||
def __init__(self, cr):
|
|
||||||
DistributedObject.DistributedObject.__init__(self, cr)
|
|
||||||
|
|
||||||
def announceGenerate(self):
|
def announceGenerate(self):
|
||||||
DistributedObject.DistributedObject.announceGenerate(self)
|
DistributedObject.DistributedObject.announceGenerate(self)
|
||||||
base.cr.blackCatMgr = self
|
base.cr.blackCatMgr = self
|
||||||
|
|
20
toontown/ai/DistributedReportMgr.py
Normal file
20
toontown/ai/DistributedReportMgr.py
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
from direct.directnotify import DirectNotifyGlobal
|
||||||
|
from direct.distributed import DistributedObject
|
||||||
|
|
||||||
|
class DistributedReportMgr(DistributedObject.DistributedObject):
|
||||||
|
neverDisable = 1
|
||||||
|
notify = DirectNotifyGlobal.directNotify.newCategory('DistributedReportMgr')
|
||||||
|
|
||||||
|
def __init__(self, cr):
|
||||||
|
DistributedObject.DistributedObject.__init__(self, cr)
|
||||||
|
|
||||||
|
def announceGenerate(self):
|
||||||
|
DistributedObject.DistributedObject.announceGenerate(self)
|
||||||
|
base.cr.reportMgr = self
|
||||||
|
|
||||||
|
def delete(self):
|
||||||
|
base.cr.reportMgr = None
|
||||||
|
DistributedObject.DistributedObject.delete(self)
|
||||||
|
|
||||||
|
def sendReport(self, avId, category):
|
||||||
|
self.sendUpdate('sendReport', [avId, category])
|
37
toontown/ai/DistributedReportMgrAI.py
Normal file
37
toontown/ai/DistributedReportMgrAI.py
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
from direct.directnotify import DirectNotifyGlobal
|
||||||
|
from direct.distributed.DistributedObjectAI import DistributedObjectAI
|
||||||
|
from toontown.uberdog.ClientServicesManagerUD import executeHttpRequestAndLog
|
||||||
|
import ReportGlobals, threading
|
||||||
|
|
||||||
|
class DistributedReportMgrAI(DistributedObjectAI):
|
||||||
|
notify = DirectNotifyGlobal.directNotify.newCategory("DistributedReportMgrAI")
|
||||||
|
|
||||||
|
def __init__(self, air):
|
||||||
|
DistributedObjectAI.DistributedObjectAI(self, air)
|
||||||
|
self.reports = []
|
||||||
|
self.interval = config.GetInt('report-interval', 600)
|
||||||
|
self.scheduleReport()
|
||||||
|
|
||||||
|
def scheduleReport(self):
|
||||||
|
threading.Timer(self.interval, self.sendAllReports)
|
||||||
|
|
||||||
|
def sendReport(self, avId, category):
|
||||||
|
if not ReportGlobals.isValidCategoryName(category) or not len(str(avId)) == 9:
|
||||||
|
return
|
||||||
|
|
||||||
|
reporterId = self.air.getAvatarIdFromSender()
|
||||||
|
reporter = self.air.doId2do.get(reporterId)
|
||||||
|
|
||||||
|
if not reporter or reporter.isReported(avId):
|
||||||
|
return
|
||||||
|
|
||||||
|
timestamp = int(round(time.time() * 1000))
|
||||||
|
self.reports.append('%s|%s|%s|%s' % (timestamp, reporterId, avId, category))
|
||||||
|
|
||||||
|
def sendAllReports(self):
|
||||||
|
if not self.reports:
|
||||||
|
return
|
||||||
|
|
||||||
|
executeHttpRequestAndLog('report', reports=','.join(self.reports))
|
||||||
|
self.reports = []
|
||||||
|
self.scheduleReport()
|
10
toontown/ai/ReportGlobals.py
Normal file
10
toontown/ai/ReportGlobals.py
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
categories = ['foul-language', 'greening', 'rude-behavior', 'bad-name', 'hacking']
|
||||||
|
|
||||||
|
def isValidCategory(value):
|
||||||
|
return value < len(categories)
|
||||||
|
|
||||||
|
def isValidCategoryName(value):
|
||||||
|
return value in categories
|
||||||
|
|
||||||
|
def getCategory(value):
|
||||||
|
return categories[value]
|
|
@ -4,7 +4,7 @@ from direct.showbase import DirectObject
|
||||||
from otp.avatar import AvatarPanel
|
from otp.avatar import AvatarPanel
|
||||||
from toontown.toonbase import TTLocalizer
|
from toontown.toonbase import TTLocalizer
|
||||||
from toontown.toontowngui import TTDialog
|
from toontown.toontowngui import TTDialog
|
||||||
from otp.distributed import CentralLogger
|
from toontown.ai import ReportGlobals
|
||||||
IGNORE_SCALE = 0.06
|
IGNORE_SCALE = 0.06
|
||||||
STOP_IGNORE_SCALE = 0.04
|
STOP_IGNORE_SCALE = 0.04
|
||||||
|
|
||||||
|
@ -24,9 +24,7 @@ class AvatarPanelBase(AvatarPanel.AvatarPanel):
|
||||||
|
|
||||||
def handleIgnore(self):
|
def handleIgnore(self):
|
||||||
isAvatarFriend = base.cr.isFriend(self.avatar.doId)
|
isAvatarFriend = base.cr.isFriend(self.avatar.doId)
|
||||||
isPlayerFriend = base.cr.playerFriendsManager.isAvatarOwnerPlayerFriend(self.avatar.doId)
|
if isAvatarFriend:
|
||||||
isFriend = isAvatarFriend or isPlayerFriend
|
|
||||||
if isFriend:
|
|
||||||
self.dialog = TTDialog.TTGlobalDialog(
|
self.dialog = TTDialog.TTGlobalDialog(
|
||||||
style=TTDialog.CancelOnly,
|
style=TTDialog.CancelOnly,
|
||||||
text=TTLocalizer.IgnorePanelAddFriendAvatar % self.avName,
|
text=TTLocalizer.IgnorePanelAddFriendAvatar % self.avName,
|
||||||
|
@ -93,13 +91,13 @@ class AvatarPanelBase(AvatarPanel.AvatarPanel):
|
||||||
self.freeLocalAvatar()
|
self.freeLocalAvatar()
|
||||||
|
|
||||||
def handleReport(self):
|
def handleReport(self):
|
||||||
if base.cr.centralLogger.hasReportedPlayer(self.playerId, self.avId):
|
if base.localAvatar.isReported(self.avId):
|
||||||
self.alreadyReported()
|
self.alreadyReported()
|
||||||
else:
|
else:
|
||||||
self.confirmReport()
|
self.confirmReport()
|
||||||
|
|
||||||
def confirmReport(self):
|
def confirmReport(self):
|
||||||
if base.cr.isFriend(self.avId) or base.cr.playerFriendsManager.isPlayerFriend(self.avId):
|
if base.cr.isFriend(self.avId):
|
||||||
string = TTLocalizer.ReportPanelBodyFriends
|
string = TTLocalizer.ReportPanelBodyFriends
|
||||||
titlePos = 0.41
|
titlePos = 0.41
|
||||||
else:
|
else:
|
||||||
|
@ -135,7 +133,7 @@ class AvatarPanelBase(AvatarPanel.AvatarPanel):
|
||||||
DirectLabel(parent=self.dialog, relief=None, pos=(0, 0, 0.225), text=TTLocalizer.ReportPanelTitle, textMayChange=0, text_scale=0.08)
|
DirectLabel(parent=self.dialog, relief=None, pos=(0, 0, 0.225), text=TTLocalizer.ReportPanelTitle, textMayChange=0, text_scale=0.08)
|
||||||
guiButton = loader.loadModel('phase_3/models/gui/quit_button')
|
guiButton = loader.loadModel('phase_3/models/gui/quit_button')
|
||||||
DirectButton(parent=self.dialog, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(2.125, 1.0, 1.0), text=TTLocalizer.ReportPanelCategoryLanguage, text_scale=0.06, text_pos=(0, -0.0124), pos=(0, 0, -0.3), command=self.handleReportCategory, extraArgs=[0])
|
DirectButton(parent=self.dialog, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(2.125, 1.0, 1.0), text=TTLocalizer.ReportPanelCategoryLanguage, text_scale=0.06, text_pos=(0, -0.0124), pos=(0, 0, -0.3), command=self.handleReportCategory, extraArgs=[0])
|
||||||
DirectButton(parent=self.dialog, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(2.15, 1.0, 1.0), text=TTLocalizer.ReportPanelCategoryPii, text_scale=0.06, text_pos=(0, -0.0125), pos=(0, 0, -0.425), command=self.handleReportCategory, extraArgs=[1])
|
DirectButton(parent=self.dialog, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(2.15, 1.0, 1.0), text=TTLocalizer.ReportPanelCategoryGreening, text_scale=0.06, text_pos=(0, -0.0125), pos=(0, 0, -0.425), command=self.handleReportCategory, extraArgs=[1])
|
||||||
DirectButton(parent=self.dialog, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(2.125, 1.0, 1.0), text=TTLocalizer.ReportPanelCategoryRude, text_scale=0.06, text_pos=(0, -0.0125), pos=(0, 0, -0.55), command=self.handleReportCategory, extraArgs=[2])
|
DirectButton(parent=self.dialog, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(2.125, 1.0, 1.0), text=TTLocalizer.ReportPanelCategoryRude, text_scale=0.06, text_pos=(0, -0.0125), pos=(0, 0, -0.55), command=self.handleReportCategory, extraArgs=[2])
|
||||||
DirectButton(parent=self.dialog, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(2.125, 1.0, 1.0), text=TTLocalizer.ReportPanelCategoryName, text_scale=0.06, text_pos=(0, -0.0125), pos=(0, 0, -0.675), command=self.handleReportCategory, extraArgs=[3])
|
DirectButton(parent=self.dialog, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(2.125, 1.0, 1.0), text=TTLocalizer.ReportPanelCategoryName, text_scale=0.06, text_pos=(0, -0.0125), pos=(0, 0, -0.675), command=self.handleReportCategory, extraArgs=[3])
|
||||||
DirectButton(parent=self.dialog, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(2.125, 1.0, 1.0), text=TTLocalizer.ReportPanelCategoryHacking, text_scale=0.06, text_pos=(0, -0.0125), pos=(0, 0, -0.8), command=self.handleReportCategory, extraArgs=[4])
|
DirectButton(parent=self.dialog, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(2.125, 1.0, 1.0), text=TTLocalizer.ReportPanelCategoryHacking, text_scale=0.06, text_pos=(0, -0.0125), pos=(0, 0, -0.8), command=self.handleReportCategory, extraArgs=[4])
|
||||||
|
@ -147,13 +145,8 @@ class AvatarPanelBase(AvatarPanel.AvatarPanel):
|
||||||
|
|
||||||
def handleReportCategory(self, value):
|
def handleReportCategory(self, value):
|
||||||
self.cleanupDialog()
|
self.cleanupDialog()
|
||||||
if value >= 0:
|
if value >= 0 and ReportGlobals.isValidCategory(value):
|
||||||
cat = [CentralLogger.ReportFoulLanguage,
|
self.category = ReportGlobals.getCategory(value)
|
||||||
CentralLogger.ReportPersonalInfo,
|
|
||||||
CentralLogger.ReportRudeBehavior,
|
|
||||||
CentralLogger.ReportBadName,
|
|
||||||
CentralLogger.ReportHacking]
|
|
||||||
self.category = cat[value]
|
|
||||||
self.confirmReportCategory(value)
|
self.confirmReportCategory(value)
|
||||||
else:
|
else:
|
||||||
self.requestWalk()
|
self.requestWalk()
|
||||||
|
@ -170,32 +163,22 @@ class AvatarPanelBase(AvatarPanel.AvatarPanel):
|
||||||
def handleReportCategoryConfirm(self, value):
|
def handleReportCategoryConfirm(self, value):
|
||||||
self.cleanupDialog()
|
self.cleanupDialog()
|
||||||
removed = 0
|
removed = 0
|
||||||
isPlayer = 0
|
|
||||||
if value > 0:
|
if value > 0:
|
||||||
if self.category == CentralLogger.ReportHacking:
|
|
||||||
base.cr.centralLogger.reportPlayer(self.category, self.playerId, self.avId)
|
|
||||||
self.category = CentralLogger.ReportRudeBehavior
|
|
||||||
base.cr.centralLogger.reportPlayer(self.category, self.playerId, self.avId)
|
|
||||||
if base.cr.isFriend(self.avId):
|
if base.cr.isFriend(self.avId):
|
||||||
base.cr.removeFriend(self.avId)
|
base.cr.removeFriend(self.avId)
|
||||||
removed = 1
|
removed = 1
|
||||||
if base.cr.playerFriendsManager.isPlayerFriend(self.playerId):
|
|
||||||
if self.playerId:
|
base.cr.reportMgr.sendReport(self.avId, self.category)
|
||||||
base.cr.playerFriendsManager.sendRequestRemove(self.playerId)
|
self.reportComplete(removed)
|
||||||
removed = 1
|
|
||||||
isPlayer = 1
|
|
||||||
self.reportComplete(removed, isPlayer)
|
|
||||||
else:
|
else:
|
||||||
self.requestWalk()
|
self.requestWalk()
|
||||||
|
|
||||||
def reportComplete(self, removed, isPlayer):
|
def reportComplete(self, removed):
|
||||||
string = TTLocalizer.ReportPanelThanks
|
string = TTLocalizer.ReportPanelThanks
|
||||||
titlePos = 0.25
|
titlePos = 0.25
|
||||||
if removed:
|
if removed:
|
||||||
if isPlayer:
|
string += ' ' + TTLocalizer.ReportPanelRemovedFriend % self.avName
|
||||||
string += ' ' + TTLocalizer.ReportPanelRemovedPlayerFriend % self.playerId
|
|
||||||
else:
|
|
||||||
string += ' ' + TTLocalizer.ReportPanelRemovedFriend % self.avName
|
|
||||||
titlePos = 0.3
|
titlePos = 0.3
|
||||||
self.dialog = TTDialog.TTGlobalDialog(style=TTDialog.Acknowledge, text=string, text_wordwrap=18.5, text_scale=0.06, topPad=0.1, doneEvent='ReportComplete', command=self.handleReportComplete)
|
self.dialog = TTDialog.TTGlobalDialog(style=TTDialog.Acknowledge, text=string, text_wordwrap=18.5, text_scale=0.06, topPad=0.1, doneEvent='ReportComplete', command=self.handleReportComplete)
|
||||||
DirectLabel(parent=self.dialog, relief=None, pos=(0, 0, titlePos), text=TTLocalizer.ReportPanelTitle, textMayChange=0, text_scale=0.08)
|
DirectLabel(parent=self.dialog, relief=None, pos=(0, 0, titlePos), text=TTLocalizer.ReportPanelTitle, textMayChange=0, text_scale=0.08)
|
||||||
|
|
|
@ -188,6 +188,7 @@ class DistributedToon(DistributedPlayer.DistributedPlayer, Toon.Toon, Distribute
|
||||||
self.redeemedCodes = []
|
self.redeemedCodes = []
|
||||||
self.trueFriends = []
|
self.trueFriends = []
|
||||||
self.ignored = []
|
self.ignored = []
|
||||||
|
self.reported = []
|
||||||
|
|
||||||
def disable(self):
|
def disable(self):
|
||||||
for soundSequence in self.soundSequenceList:
|
for soundSequence in self.soundSequenceList:
|
||||||
|
@ -2635,6 +2636,16 @@ class DistributedToon(DistributedPlayer.DistributedPlayer, Toon.Toon, Distribute
|
||||||
if self.isIgnored(doId):
|
if self.isIgnored(doId):
|
||||||
self.ignored.remove(doId)
|
self.ignored.remove(doId)
|
||||||
self.d_setIgnored(self.ignored)
|
self.d_setIgnored(self.ignored)
|
||||||
|
|
||||||
|
def setReported(self, reported):
|
||||||
|
self.reported = reported
|
||||||
|
|
||||||
|
def isReported(self, doId):
|
||||||
|
return doId in self.reported
|
||||||
|
|
||||||
|
def addReport(self, doId):
|
||||||
|
if not self.isReported(doId):
|
||||||
|
self.reported.append(doId)
|
||||||
|
|
||||||
def applyBuffs(self):
|
def applyBuffs(self):
|
||||||
for id, timestamp in enumerate(self.buffs):
|
for id, timestamp in enumerate(self.buffs):
|
||||||
|
|
|
@ -191,6 +191,7 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
|
||||||
self.redeemedCodes = []
|
self.redeemedCodes = []
|
||||||
self.trueFriends = []
|
self.trueFriends = []
|
||||||
self.ignored = []
|
self.ignored = []
|
||||||
|
self.reported = []
|
||||||
|
|
||||||
def generate(self):
|
def generate(self):
|
||||||
DistributedPlayerAI.DistributedPlayerAI.generate(self)
|
DistributedPlayerAI.DistributedPlayerAI.generate(self)
|
||||||
|
@ -477,8 +478,14 @@ class DistributedToonAI(DistributedPlayerAI.DistributedPlayerAI, DistributedSmoo
|
||||||
def getIgnored(self):
|
def getIgnored(self):
|
||||||
return self.ignored
|
return self.ignored
|
||||||
|
|
||||||
def isIgnored(self, doId):
|
def setReported(self, reported):
|
||||||
return doId in self.ignored
|
self.reported = reported
|
||||||
|
|
||||||
|
def getReported(self):
|
||||||
|
return self.reported
|
||||||
|
|
||||||
|
def isReported(self, doId):
|
||||||
|
return doId in self.reported
|
||||||
|
|
||||||
def b_setInventory(self, inventory):
|
def b_setInventory(self, inventory):
|
||||||
self.setInventory(inventory)
|
self.setInventory(inventory)
|
||||||
|
|
|
@ -1924,33 +1924,30 @@ AvatarPanelGroupMerge = 'Resulting in'
|
||||||
AvatarPanelGroupRetract = 'Retract Invitation'
|
AvatarPanelGroupRetract = 'Retract Invitation'
|
||||||
AvatarPanelGroupMember = 'Already In Group'
|
AvatarPanelGroupMember = 'Already In Group'
|
||||||
AvatarPanelGroupMemberKick = 'Remove'
|
AvatarPanelGroupMemberKick = 'Remove'
|
||||||
ReportPanelTitle = 'Report A Player'
|
ReportPanelTitle = 'Report A Toon'
|
||||||
ReportPanelBody = 'This feature will send a complete report to a Moderator. Instead of sending a report, you might choose to do one of the following:\n\n - Teleport to another district\n - Use "Ignore" on the toon\'s panel\n\nDo you really want to report %s to a Moderator?'
|
ReportPanelBody = 'This feature will send a complete report to a Moderator. Instead of sending a report, you might choose to do one of the following:\n\n - Teleport to another district\n - Use "Ignore" on the toon\'s panel\n\nDo you really want to report %s to a Moderator?'
|
||||||
ReportPanelBodyFriends = 'This feature will send a complete report to a Moderator. Instead of sending a report, you might choose to do one of the following:\n\n - Teleport to another district\n - Break your friendship\n\nDo you really want to report %s to a Moderator?\n\n(This will also break your friendship)'
|
ReportPanelBodyFriends = 'This feature will send a complete report to a Moderator. Instead of sending a report, you might choose to do one of the following:\n\n - Teleport to another district\n - Break your friendship\n\nDo you really want to report %s to a Moderator?\n\n(This will also break your friendship)'
|
||||||
ReportPanelCategoryBody = 'You are about to report %s. A Moderator will be alerted to your complaint and will take appropriate action for anyone breaking our rules. Please choose the reason you are reporting %s:'
|
ReportPanelCategoryBody = 'You are about to report %s. A Moderator will be alerted to your complaint and will take appropriate action for anyone breaking our rules. Please choose the reason you are reporting %s:'
|
||||||
ReportPanelBodyPlayer = 'This feature is stilling being worked on and will be coming soon. In the meantime you can do the following:\n\n - Go to DXD and break the friendship there.\n - Tell a parent about what happened.'
|
ReportPanelCategoryLanguage = 'Inappropriate Language'
|
||||||
ReportPanelCategoryLanguage = 'Foul Language'
|
|
||||||
ReportPanelCategoryPii = 'Sharing/Requesting Personal Info'
|
|
||||||
ReportPanelCategoryRude = 'Rude or Mean Behavior'
|
ReportPanelCategoryRude = 'Rude or Mean Behavior'
|
||||||
ReportPanelCategoryName = 'Bad Name'
|
ReportPanelCategoryName = 'Bad Name'
|
||||||
ReportPanelCategoryHacking = 'Hacking'
|
ReportPanelCategoryHacking = 'Hacking'
|
||||||
|
ReportPanelCategoryGreening = 'Greening'
|
||||||
ReportPanelConfirmations = ('You are about to report that %s has used obscene, bigoted or sexually explicit language.',
|
ReportPanelConfirmations = ('You are about to report that %s has used obscene, bigoted or sexually explicit language.',
|
||||||
'You are about to report that %s is being unsafe by giving out or requesting a phone number, address, last name, email address, password or account name.',
|
'You are about to report that %s has disrupted your experience by intentionally causing your toon to go sad.',
|
||||||
'You are about to report that %s is bullying, harassing, or using extreme behavior to disrupt the game.',
|
'You are about to report that %s is bullying, harassing, or using extreme behavior to disrupt the game.',
|
||||||
"You are about to report that %s has created a name that does not follow the Toontown United rules.",
|
"You are about to report that %s has created a name that does not follow the rules.",
|
||||||
'You are about to report that %s has hacked/tampered with the game or used third party software.')
|
'You are about to report that %s has hacked/tampered with the game or used third party software.')
|
||||||
ReportPanelWarning = "We take reporting very seriously. Your report will be viewed by a Moderator who will take appropriate action for anyone breaking our rules. If your account is found to have participated in breaking the rules, or if you make false reports or abuse the 'Report a Player' system, a Moderator may take action against your account. Are you absolutely sure you want to report this player?"
|
ReportPanelWarning = "We take reporting very seriously. Your report will be viewed by a Moderator who will take appropriate action for anyone breaking our rules. If your account is found to have participated in breaking the rules, or if you make false reports or abuse the 'Report a Toon' system, a Moderator may take action against your account. Are you absolutely sure you want to report this toon?"
|
||||||
ReportPanelThanks = 'Thank you! Your report has been sent to a Moderator for review. There is no need to contact us again about the issue. The moderation team will take appropriate action for a player found breaking our rules.'
|
ReportPanelThanks = 'Thank you! Your report has been sent to a Moderator for review. There is no need to contact us again about the issue. The moderation team will take appropriate action for a toon found breaking our rules.'
|
||||||
ReportPanelRemovedFriend = 'We have automatically removed %s from your Toon Friends List.'
|
ReportPanelRemovedFriend = 'We have automatically removed %s from your Toon Friends List.'
|
||||||
ReportPanelRemovedPlayerFriend = 'We have automatically removed %s as a Player friend so as such you will not see them as your friend in any Toontown United product.'
|
|
||||||
ReportPanelAlreadyReported = 'You have already reported %s during this session. A Moderator will review your previous report.'
|
ReportPanelAlreadyReported = 'You have already reported %s during this session. A Moderator will review your previous report.'
|
||||||
IgnorePanelTitle = 'Ignore A Player'
|
IgnorePanelTitle = 'Ignore A PToon'
|
||||||
IgnorePanelAddIgnore = 'Would you like to ignore %s?'
|
IgnorePanelAddIgnore = 'Would you like to ignore %s?'
|
||||||
IgnorePanelIgnore = 'You are now ignoring %s.'
|
IgnorePanelIgnore = 'You are now ignoring %s.'
|
||||||
IgnorePanelRemoveIgnore = 'Would you like to stop ignoring %s?'
|
IgnorePanelRemoveIgnore = 'Would you like to stop ignoring %s?'
|
||||||
IgnorePanelEndIgnore = 'You are no longer ignoring %s.'
|
IgnorePanelEndIgnore = 'You are no longer ignoring %s.'
|
||||||
IgnorePanelAddFriendAvatar = '%s is your friend, you cannot ignore them while you are friends.'
|
IgnorePanelAddFriendAvatar = '%s is your friend, you cannot ignore them while you are friends.'
|
||||||
IgnorePanelAddFriendPlayer = '%s (%s)is your friend, you cannot ignore them while you are friends.'
|
|
||||||
PetPanelFeed = 'Feed'
|
PetPanelFeed = 'Feed'
|
||||||
PetPanelCall = 'Call'
|
PetPanelCall = 'Call'
|
||||||
PetPanelGoTo = 'Go To'
|
PetPanelGoTo = 'Go To'
|
||||||
|
|
Loading…
Reference in a new issue