chatfilter , team character , auto ban ,welcome msg , profanity check

This commit is contained in:
imayushsaini 2021-11-26 13:18:24 +05:30
parent 69a910aa0f
commit a11d0a7a33
57 changed files with 427 additions and 601 deletions

View file

@ -8,7 +8,7 @@ from typing import TYPE_CHECKING, TypeVar, overload
import ba import ba
from bastd.actor.spaz import Spaz from bastd.actor.spaz import Spaz
from spazmod import modifyspaz
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any, Sequence, Optional, Literal from typing import Any, Sequence, Optional, Literal
@ -56,6 +56,7 @@ class PlayerSpaz(Spaz):
Note: this does not wire up any controls; Note: this does not wire up any controls;
you must call connect_controls_to_player() to do so. you must call connect_controls_to_player() to do so.
""" """
character=modifyspaz.getCharacter(player,character)
super().__init__(color=color, super().__init__(color=color,
highlight=highlight, highlight=highlight,
@ -70,7 +71,7 @@ class PlayerSpaz(Spaz):
self.last_player_held_by: Optional[ba.Player] = None self.last_player_held_by: Optional[ba.Player] = None
self._player = player self._player = player
self._drive_player_position() self._drive_player_position()
from spazmod import modifyspaz
modifyspaz.main(self, self.node, self._player) modifyspaz.main(self, self.node, self._player)
# Overloads to tell the type system our return type based on doraise val. # Overloads to tell the type system our return type based on doraise val.

View file

@ -1,460 +0,0 @@
# -*- coding: utf-8 -*-
# ba_meta require api 6
from __future__ import annotations
from typing import TYPE_CHECKING
import _ba,ba,bastd
from bastd.actor.spazappearance import *
if TYPE_CHECKING:
from typing import List, Optional, Tuple
def add_characters():
# Zoe #######################################
t = Appearance('Zoe_mod')
t.color_texture = 'zoeColor'
t.color_mask_texture = 'zoeColorMask'
t.default_color = (0.6, 0.6, 0.6)
t.default_highlight = (0, 1, 0)
t.icon_texture = 'zoeIcon'
t.icon_mask_texture = 'zoeIconColorMask'
t.head_model = 'zoeHead'
t.torso_model = 'zoeTorso'
t.pelvis_model = 'zoePelvis'
t.upper_arm_model = 'zoeUpperArm'
t.forearm_model = 'zoeForeArm'
t.hand_model = 'zoeHand'
t.upper_leg_model = 'zoeUpperLeg'
t.lower_leg_model = 'zoeLowerLeg'
t.toes_model = 'zoeToes'
t.jump_sounds = ['zoeJump01', 'zoeJump02', 'zoeJump03']
t.attack_sounds = [
'zoeAttack01', 'zoeAttack02', 'zoeAttack03', 'zoeAttack04'
]
t.impact_sounds = [
'zoeImpact01', 'zoeImpact02', 'zoeImpact03', 'zoeImpact04'
]
t.death_sounds = ['zoeDeath01']
t.pickup_sounds = ['zoePickup01']
t.fall_sounds = ['zoeFall01']
t.style = 'female'
# Ninja ##########################################
t = Appearance('Snake Shadow_mod')
t.color_texture = 'ninjaColor'
t.color_mask_texture = 'ninjaColorMask'
t.default_color = (1, 1, 1)
t.default_highlight = (0.55, 0.8, 0.55)
t.icon_texture = 'ninjaIcon'
t.icon_mask_texture = 'ninjaIconColorMask'
t.head_model = 'ninjaHead'
t.torso_model = 'ninjaTorso'
t.pelvis_model = 'ninjaPelvis'
t.upper_arm_model = 'ninjaUpperArm'
t.forearm_model = 'ninjaForeArm'
t.hand_model = 'ninjaHand'
t.upper_leg_model = 'ninjaUpperLeg'
t.lower_leg_model = 'ninjaLowerLeg'
t.toes_model = 'ninjaToes'
ninja_attacks = ['ninjaAttack' + str(i + 1) + '' for i in range(7)]
ninja_hits = ['ninjaHit' + str(i + 1) + '' for i in range(8)]
ninja_jumps = ['ninjaAttack' + str(i + 1) + '' for i in range(7)]
t.jump_sounds = ninja_jumps
t.attack_sounds = ninja_attacks
t.impact_sounds = ninja_hits
t.death_sounds = ['ninjaDeath1']
t.pickup_sounds = ninja_attacks
t.fall_sounds = ['ninjaFall1']
t.style = 'ninja'
# Barbarian #####################################
t = Appearance('Kronk_mod')
t.color_texture = 'kronk'
t.color_mask_texture = 'kronkColorMask'
t.default_color = (0.4, 0.5, 0.4)
t.default_highlight = (1, 0.5, 0.3)
t.icon_texture = 'kronkIcon'
t.icon_mask_texture = 'kronkIconColorMask'
t.head_model = 'kronkHead'
t.torso_model = 'kronkTorso'
t.pelvis_model = 'kronkPelvis'
t.upper_arm_model = 'kronkUpperArm'
t.forearm_model = 'kronkForeArm'
t.hand_model = 'kronkHand'
t.upper_leg_model = 'kronkUpperLeg'
t.lower_leg_model = 'kronkLowerLeg'
t.toes_model = 'kronkToes'
kronk_sounds = [
'kronk1', 'kronk2', 'kronk3', 'kronk4', 'kronk5', 'kronk6', 'kronk7',
'kronk8', 'kronk9', 'kronk10'
]
t.jump_sounds = kronk_sounds
t.attack_sounds = kronk_sounds
t.impact_sounds = kronk_sounds
t.death_sounds = ['kronkDeath']
t.pickup_sounds = kronk_sounds
t.fall_sounds = ['kronkFall']
t.style = 'kronk'
# Chef ###########################################
t = Appearance('Mel_mod')
t.color_texture = 'melColor'
t.color_mask_texture = 'melColorMask'
t.default_color = (1, 1, 1)
t.default_highlight = (0.1, 0.6, 0.1)
t.icon_texture = 'melIcon'
t.icon_mask_texture = 'melIconColorMask'
t.head_model = 'melHead'
t.torso_model = 'melTorso'
t.pelvis_model = 'kronkPelvis'
t.upper_arm_model = 'melUpperArm'
t.forearm_model = 'melForeArm'
t.hand_model = 'melHand'
t.upper_leg_model = 'melUpperLeg'
t.lower_leg_model = 'melLowerLeg'
t.toes_model = 'melToes'
mel_sounds = [
'mel01', 'mel02', 'mel03', 'mel04', 'mel05', 'mel06', 'mel07', 'mel08',
'mel09', 'mel10'
]
t.attack_sounds = mel_sounds
t.jump_sounds = mel_sounds
t.impact_sounds = mel_sounds
t.death_sounds = ['melDeath01']
t.pickup_sounds = mel_sounds
t.fall_sounds = ['melFall01']
t.style = 'mel'
# Pirate #######################################
t = Appearance('Jack Morgan_mod')
t.color_texture = 'jackColor'
t.color_mask_texture = 'jackColorMask'
t.default_color = (1, 0.2, 0.1)
t.default_highlight = (1, 1, 0)
t.icon_texture = 'jackIcon'
t.icon_mask_texture = 'jackIconColorMask'
t.head_model = 'jackHead'
t.torso_model = 'jackTorso'
t.pelvis_model = 'kronkPelvis'
t.upper_arm_model = 'jackUpperArm'
t.forearm_model = 'jackForeArm'
t.hand_model = 'jackHand'
t.upper_leg_model = 'jackUpperLeg'
t.lower_leg_model = 'jackLowerLeg'
t.toes_model = 'jackToes'
hit_sounds = [
'jackHit01', 'jackHit02', 'jackHit03', 'jackHit04', 'jackHit05',
'jackHit06', 'jackHit07'
]
sounds = ['jack01', 'jack02', 'jack03', 'jack04', 'jack05', 'jack06']
t.attack_sounds = sounds
t.jump_sounds = sounds
t.impact_sounds = hit_sounds
t.death_sounds = ['jackDeath01']
t.pickup_sounds = sounds
t.fall_sounds = ['jackFall01']
t.style = 'pirate'
# Santa ######################################
t = Appearance('Santa Claus_mod')
t.color_texture = 'santaColor'
t.color_mask_texture = 'santaColorMask'
t.default_color = (1, 0, 0)
t.default_highlight = (1, 1, 1)
t.icon_texture = 'santaIcon'
t.icon_mask_texture = 'santaIconColorMask'
t.head_model = 'santaHead'
t.torso_model = 'santaTorso'
t.pelvis_model = 'kronkPelvis'
t.upper_arm_model = 'santaUpperArm'
t.forearm_model = 'santaForeArm'
t.hand_model = 'santaHand'
t.upper_leg_model = 'santaUpperLeg'
t.lower_leg_model = 'santaLowerLeg'
t.toes_model = 'santaToes'
hit_sounds = ['santaHit01', 'santaHit02', 'santaHit03', 'santaHit04']
sounds = ['santa01', 'santa02', 'santa03', 'santa04', 'santa05']
t.attack_sounds = sounds
t.jump_sounds = sounds
t.impact_sounds = hit_sounds
t.death_sounds = ['santaDeath']
t.pickup_sounds = sounds
t.fall_sounds = ['santaFall']
t.style = 'santa'
# Snowman ###################################
t = Appearance('Frosty_mod')
t.color_texture = 'frostyColor'
t.color_mask_texture = 'frostyColorMask'
t.default_color = (0.5, 0.5, 1)
t.default_highlight = (1, 0.5, 0)
t.icon_texture = 'frostyIcon'
t.icon_mask_texture = 'frostyIconColorMask'
t.head_model = 'frostyHead'
t.torso_model = 'frostyTorso'
t.pelvis_model = 'frostyPelvis'
t.upper_arm_model = 'frostyUpperArm'
t.forearm_model = 'frostyForeArm'
t.hand_model = 'frostyHand'
t.upper_leg_model = 'frostyUpperLeg'
t.lower_leg_model = 'frostyLowerLeg'
t.toes_model = 'frostyToes'
frosty_sounds = [
'frosty01', 'frosty02', 'frosty03', 'frosty04', 'frosty05'
]
frosty_hit_sounds = ['frostyHit01', 'frostyHit02', 'frostyHit03']
t.attack_sounds = frosty_sounds
t.jump_sounds = frosty_sounds
t.impact_sounds = frosty_hit_sounds
t.death_sounds = ['frostyDeath']
t.pickup_sounds = frosty_sounds
t.fall_sounds = ['frostyFall']
t.style = 'frosty'
# Skeleton ################################
t = Appearance('Bones_mod')
t.color_texture = 'bonesColor'
t.color_mask_texture = 'bonesColorMask'
t.default_color = (0.6, 0.9, 1)
t.default_highlight = (0.6, 0.9, 1)
t.icon_texture = 'bonesIcon'
t.icon_mask_texture = 'bonesIconColorMask'
t.head_model = 'bonesHead'
t.torso_model = 'bonesTorso'
t.pelvis_model = 'bonesPelvis'
t.upper_arm_model = 'bonesUpperArm'
t.forearm_model = 'bonesForeArm'
t.hand_model = 'bonesHand'
t.upper_leg_model = 'bonesUpperLeg'
t.lower_leg_model = 'bonesLowerLeg'
t.toes_model = 'bonesToes'
bones_sounds = ['bones1', 'bones2', 'bones3']
bones_hit_sounds = ['bones1', 'bones2', 'bones3']
t.attack_sounds = bones_sounds
t.jump_sounds = bones_sounds
t.impact_sounds = bones_hit_sounds
t.death_sounds = ['bonesDeath']
t.pickup_sounds = bones_sounds
t.fall_sounds = ['bonesFall']
t.style = 'bones'
# Bear ###################################
t = Appearance('Bernard_mod')
t.color_texture = 'bearColor'
t.color_mask_texture = 'bearColorMask'
t.default_color = (0.7, 0.5, 0.0)
t.icon_texture = 'bearIcon'
t.icon_mask_texture = 'bearIconColorMask'
t.head_model = 'bearHead'
t.torso_model = 'bearTorso'
t.pelvis_model = 'bearPelvis'
t.upper_arm_model = 'bearUpperArm'
t.forearm_model = 'bearForeArm'
t.hand_model = 'bearHand'
t.upper_leg_model = 'bearUpperLeg'
t.lower_leg_model = 'bearLowerLeg'
t.toes_model = 'bearToes'
bear_sounds = ['bear1', 'bear2', 'bear3', 'bear4']
bear_hit_sounds = ['bearHit1', 'bearHit2']
t.attack_sounds = bear_sounds
t.jump_sounds = bear_sounds
t.impact_sounds = bear_hit_sounds
t.death_sounds = ['bearDeath']
t.pickup_sounds = bear_sounds
t.fall_sounds = ['bearFall']
t.style = 'bear'
# Penguin ###################################
t = Appearance('Pascal_mod')
t.color_texture = 'penguinColor'
t.color_mask_texture = 'penguinColorMask'
t.default_color = (0.3, 0.5, 0.8)
t.default_highlight = (1, 0, 0)
t.icon_texture = 'penguinIcon'
t.icon_mask_texture = 'penguinIconColorMask'
t.head_model = 'penguinHead'
t.torso_model = 'penguinTorso'
t.pelvis_model = 'penguinPelvis'
t.upper_arm_model = 'penguinUpperArm'
t.forearm_model = 'penguinForeArm'
t.hand_model = 'penguinHand'
t.upper_leg_model = 'penguinUpperLeg'
t.lower_leg_model = 'penguinLowerLeg'
t.toes_model = 'penguinToes'
penguin_sounds = ['penguin1', 'penguin2', 'penguin3', 'penguin4']
penguin_hit_sounds = ['penguinHit1', 'penguinHit2']
t.attack_sounds = penguin_sounds
t.jump_sounds = penguin_sounds
t.impact_sounds = penguin_hit_sounds
t.death_sounds = ['penguinDeath']
t.pickup_sounds = penguin_sounds
t.fall_sounds = ['penguinFall']
t.style = 'penguin'
# Ali ###################################
t = Appearance('Taobao Mascot_mod')
t.color_texture = 'aliColor'
t.color_mask_texture = 'aliColorMask'
t.default_color = (1, 0.5, 0)
t.default_highlight = (1, 1, 1)
t.icon_texture = 'aliIcon'
t.icon_mask_texture = 'aliIconColorMask'
t.head_model = 'aliHead'
t.torso_model = 'aliTorso'
t.pelvis_model = 'aliPelvis'
t.upper_arm_model = 'aliUpperArm'
t.forearm_model = 'aliForeArm'
t.hand_model = 'aliHand'
t.upper_leg_model = 'aliUpperLeg'
t.lower_leg_model = 'aliLowerLeg'
t.toes_model = 'aliToes'
ali_sounds = ['ali1', 'ali2', 'ali3', 'ali4']
ali_hit_sounds = ['aliHit1', 'aliHit2']
t.attack_sounds = ali_sounds
t.jump_sounds = ali_sounds
t.impact_sounds = ali_hit_sounds
t.death_sounds = ['aliDeath']
t.pickup_sounds = ali_sounds
t.fall_sounds = ['aliFall']
t.style = 'ali'
# cyborg ###################################
t = Appearance('B-9000_mod')
t.color_texture = 'cyborgColor'
t.color_mask_texture = 'cyborgColorMask'
t.default_color = (0.5, 0.5, 0.5)
t.default_highlight = (1, 0, 0)
t.icon_texture = 'cyborgIcon'
t.icon_mask_texture = 'cyborgIconColorMask'
t.head_model = 'cyborgHead'
t.torso_model = 'cyborgTorso'
t.pelvis_model = 'cyborgPelvis'
t.upper_arm_model = 'cyborgUpperArm'
t.forearm_model = 'cyborgForeArm'
t.hand_model = 'cyborgHand'
t.upper_leg_model = 'cyborgUpperLeg'
t.lower_leg_model = 'cyborgLowerLeg'
t.toes_model = 'cyborgToes'
cyborg_sounds = ['cyborg1', 'cyborg2', 'cyborg3', 'cyborg4']
cyborg_hit_sounds = ['cyborgHit1', 'cyborgHit2']
t.attack_sounds = cyborg_sounds
t.jump_sounds = cyborg_sounds
t.impact_sounds = cyborg_hit_sounds
t.death_sounds = ['cyborgDeath']
t.pickup_sounds = cyborg_sounds
t.fall_sounds = ['cyborgFall']
t.style = 'cyborg'
# Agent ###################################
t = Appearance('Agent Johnson_mod')
t.color_texture = 'agentColor'
t.color_mask_texture = 'agentColorMask'
t.default_color = (0.3, 0.3, 0.33)
t.default_highlight = (1, 0.5, 0.3)
t.icon_texture = 'agentIcon'
t.icon_mask_texture = 'agentIconColorMask'
t.head_model = 'agentHead'
t.torso_model = 'agentTorso'
t.pelvis_model = 'agentPelvis'
t.upper_arm_model = 'agentUpperArm'
t.forearm_model = 'agentForeArm'
t.hand_model = 'agentHand'
t.upper_leg_model = 'agentUpperLeg'
t.lower_leg_model = 'agentLowerLeg'
t.toes_model = 'agentToes'
agent_sounds = ['agent1', 'agent2', 'agent3', 'agent4']
agent_hit_sounds = ['agentHit1', 'agentHit2']
t.attack_sounds = agent_sounds
t.jump_sounds = agent_sounds
t.impact_sounds = agent_hit_sounds
t.death_sounds = ['agentDeath']
t.pickup_sounds = agent_sounds
t.fall_sounds = ['agentFall']
t.style = 'agent'
# Wizard ###################################
t = Appearance('Grumbledorf_mod')
t.color_texture = 'wizardColor'
t.color_mask_texture = 'wizardColorMask'
t.default_color = (0.2, 0.4, 1.0)
t.default_highlight = (0.06, 0.15, 0.4)
t.icon_texture = 'wizardIcon'
t.icon_mask_texture = 'wizardIconColorMask'
t.head_model = 'wizardHead'
t.torso_model = 'wizardTorso'
t.pelvis_model = 'wizardPelvis'
t.upper_arm_model = 'wizardUpperArm'
t.forearm_model = 'wizardForeArm'
t.hand_model = 'wizardHand'
t.upper_leg_model = 'wizardUpperLeg'
t.lower_leg_model = 'wizardLowerLeg'
t.toes_model = 'wizardToes'
wizard_sounds = ['wizard1', 'wizard2', 'wizard3', 'wizard4']
wizard_hit_sounds = ['wizardHit1', 'wizardHit2']
t.attack_sounds = wizard_sounds
t.jump_sounds = wizard_sounds
t.impact_sounds = wizard_hit_sounds
t.death_sounds = ['wizardDeath']
t.pickup_sounds = wizard_sounds
t.fall_sounds = ['wizardFall']
t.style = 'spaz'
# Pixie ###################################
t = Appearance('Pixel_mod')
t.color_texture = 'pixieColor'
t.color_mask_texture = 'pixieColorMask'
t.default_color = (0, 1, 0.7)
t.default_highlight = (0.65, 0.35, 0.75)
t.icon_texture = 'pixieIcon'
t.icon_mask_texture = 'pixieIconColorMask'
t.head_model = 'pixieHead'
t.torso_model = 'pixieTorso'
t.pelvis_model = 'pixiePelvis'
t.upper_arm_model = 'pixieUpperArm'
t.forearm_model = 'pixieForeArm'
t.hand_model = 'pixieHand'
t.upper_leg_model = 'pixieUpperLeg'
t.lower_leg_model = 'pixieLowerLeg'
t.toes_model = 'pixieToes'
pixie_sounds = ['pixie1', 'pixie2', 'pixie3', 'pixie4']
pixie_hit_sounds = ['pixieHit1', 'pixieHit2']
t.attack_sounds = pixie_sounds
t.jump_sounds = pixie_sounds
t.impact_sounds = pixie_hit_sounds
t.death_sounds = ['pixieDeath']
t.pickup_sounds = pixie_sounds
t.fall_sounds = ['pixieFall']
t.style = 'pixie'
# Bunny ###################################
t = Appearance('Easter Bunny_mod')
t.color_texture = 'bunnyColor'
t.color_mask_texture = 'bunnyColorMask'
t.default_color = (1, 1, 1)
t.default_highlight = (1, 0.5, 0.5)
t.icon_texture = 'bunnyIcon'
t.icon_mask_texture = 'bunnyIconColorMask'
t.head_model = 'bunnyHead'
t.torso_model = 'bunnyTorso'
t.pelvis_model = 'bunnyPelvis'
t.upper_arm_model = 'bunnyUpperArm'
t.forearm_model = 'bunnyForeArm'
t.hand_model = 'bunnyHand'
t.upper_leg_model = 'bunnyUpperLeg'
t.lower_leg_model = 'bunnyLowerLeg'
t.toes_model = 'bunnyToes'
bunny_sounds = ['bunny1', 'bunny2', 'bunny3', 'bunny4']
bunny_hit_sounds = ['bunnyHit1', 'bunnyHit2']
t.attack_sounds = bunny_sounds
t.jump_sounds = ['bunnyJump']
t.impact_sounds = bunny_hit_sounds
t.death_sounds = ['bunnyDeath']
t.pickup_sounds = bunny_sounds
t.fall_sounds = ['bunnyFall']
t.style = 'bunny'
# ba_meta export plugin
class unlock_characters(ba.Plugin):
def on_app_launch(self):
add_characters()

View file

@ -8,12 +8,12 @@ from .commands import Cheats
from .Handlers import clientid_to_accountid from .Handlers import clientid_to_accountid
from .Handlers import check_permissions from .Handlers import check_permissions
from chatHandle.chatFilter import ChatFilter
import ba, _ba import ba, _ba
import setting import setting
from serverData import serverdata from serverData import serverdata
settings = setting.get_settings_data()
def command_type(command): def command_type(command):
""" """
@ -88,7 +88,8 @@ def Command(msg, clientid):
_ba.screenmessage("access denied", transient=True, clients=[clientid]) _ba.screenmessage("access denied", transient=True, clients=[clientid])
settings = setting.get_settings_data()
if accountid in serverdata.clients: if accountid in serverdata.clients:
if serverdata.clients[accountid]["isMuted"]: if serverdata.clients[accountid]["isMuted"]:
_ba.screenmessage("You are on mute", transient=True, clients=[clientid]) _ba.screenmessage("You are on mute", transient=True, clients=[clientid])

View file

@ -3,7 +3,7 @@ from playersData import pdata
from tools.whitelist import add_to_white_list, add_commit_to_logs from tools.whitelist import add_to_white_list, add_commit_to_logs
from serverData import serverdata from serverData import serverdata
import ba, _ba, time, setting import ba, _ba, time, setting
import _thread
Commands = ['ban','kick', 'remove', 'end', 'quit', 'mute', 'unmute', 'slowmo', 'nv', 'dv', 'pause', 'cameramode', 'createrole', 'addrole', 'removerole', 'addcommand', 'addcmd', 'removecommand','getroles', 'removecmd', 'changetag','customtag','customeffect','add', 'spectators', 'lobbytime'] Commands = ['ban','kick', 'remove', 'end', 'quit', 'mute', 'unmute', 'slowmo', 'nv', 'dv', 'pause', 'cameramode', 'createrole', 'addrole', 'removerole', 'addcommand', 'addcmd', 'removecommand','getroles', 'removecmd', 'changetag','customtag','customeffect','add', 'spectators', 'lobbytime']
CommandAliases = ['rm', 'next', 'restart', 'mutechat', 'unmutechat', 'sm', 'slow', 'night', 'day', 'pausegame', 'camera_mode', 'rotate_camera', 'whitelist','effect'] CommandAliases = ['rm', 'next', 'restart', 'mutechat', 'unmutechat', 'sm', 'slow', 'night', 'day', 'pausegame', 'camera_mode', 'rotate_camera', 'whitelist','effect']
@ -119,7 +119,8 @@ def ban(arguments):
ac_id="" ac_id=""
for ros in _ba.get_game_roster(): for ros in _ba.get_game_roster():
if ros["client_id"]==cl_id: if ros["client_id"]==cl_id:
pdata.ban_player(ros['account_id']) _thread.start_new_thread(pdata.ban_player,(ros['account_id'],))
ac_id=ros['account_id'] ac_id=ros['account_id']
if ac_id in serverdata.clients: if ac_id in serverdata.clients:
serverdata.clients[ac_id]["isBan"]=True serverdata.clients[ac_id]["isBan"]=True
@ -142,7 +143,8 @@ def mute(arguments):
ac_id="" ac_id=""
for ros in _ba.get_game_roster(): for ros in _ba.get_game_roster():
if ros["client_id"]==cl_id: if ros["client_id"]==cl_id:
pdata.mute(ros['account_id']) _thread.start_new_thread(pdata.mute,(ros['account_id'],))
ac_id=ros['account_id'] ac_id=ros['account_id']
if ac_id in serverdata.clients: if ac_id in serverdata.clients:
serverdata.clients[ac_id]["isMuted"]=True serverdata.clients[ac_id]["isMuted"]=True

View file

@ -1,5 +1,57 @@
# Released under the MIT License. See LICENSE for details. # Released under the MIT License. See LICENSE for details.
import ba, _ba import ba, _ba
from serverData import serverdata
from tools import profanity
from tools import servercheck
import time
import setting
import _thread
settings = setting.get_settings_data()
def filter(msg,pb_id,client_id):
new_msg=profanity.censor(msg)
if new_msg!=msg:
addWarn(pb_id,client_id)
now = time.time()
if "lastMsg" in serverdata.clients[pb_id]:
count=serverdata.clients[pb_id]["cMsgCount"]
if now - serverdata.clients[pb_id]["lastMsg"] < 5:
count+=1
if count >=2:
addWarn(pb_id,client_id)
count =0
else:
count =0
serverdata.clients[pb_id]['cMsgCount']=count
serverdata.clients[pb_id]['lastMsg']=now
else:
serverdata.clients[pb_id]['cMsgCount']=0
serverdata.clients[pb_id]['lastMsg']=now
return new_msg
def addWarn(pb_id,client_id):
now=time.time()
player=serverdata.clients[pb_id]
warn=player['warnCount']
if now - player['lastWarned'] <= settings["WarnCooldownMinutes"]*60:
warn+=1
if warn > settings["maxWarnCount"]:
_ba.screenmessage(settings["afterWarnKickMsg"],color=(1,0,0),transient=True,clients=[client_id])
_ba.disconnect_client(client_id)
_thread.start_new_thread(servercheck.reportSpam,(pb_id,))
else:
_ba.screenmessage(settings["warnMsg"],color=(1,0,0),transient=True,clients=[client_id])
else:
warn=0
serverdata.clients[pb_id]["warnCount"]=warn
serverdata.clients[pb_id]['lastWarned']=now
def isAbuse(msg):
pass

View file

@ -4,7 +4,7 @@ from playersData import pdata
from serverData import serverdata from serverData import serverdata
from chatHandle.ChatCommands import Main from chatHandle.ChatCommands import Main
from tools import Logger, servercheck from tools import Logger, servercheck
from chatHandle import chatFilter from chatHandle.chatFilter import ChatFilter
import ba, _ba import ba, _ba
import setting import setting
@ -22,8 +22,7 @@ def filter_chat_message(msg, client_id):
acid = i['account_id'] acid = i['account_id']
Logger.log(acid+" | "+msg,"chat") Logger.log(acid+" | "+msg,"chat")
if acid in serverdata.clients: if acid in serverdata.clients and serverdata.clients[acid]["verified"]:
if serverdata.clients[acid]["isMuted"]: if serverdata.clients[acid]["isMuted"]:
_ba.screenmessage("You are on mute", transient=True, clients=[client_id]) _ba.screenmessage("You are on mute", transient=True, clients=[client_id])
return None return None
@ -31,9 +30,10 @@ def filter_chat_message(msg, client_id):
_ba.screenmessage("New accounts not allowed to chat here", transient=True, clients=[client_id]) _ba.screenmessage("New accounts not allowed to chat here", transient=True, clients=[client_id])
return None return None
else: else:
return msg return ChatFilter.filter(msg,acid,client_id)
else: else:
_ba.screenmessage("Fetching your account info , Wait a minute", transient=True, clients=[client_id]) _ba.screenmessage("Fetching your account info , Wait a minute", transient=True, clients=[client_id])
return None return None

View file

@ -4,11 +4,18 @@ import _ba
from chatHandle import handlechat from chatHandle import handlechat
import setting import setting
from tools import servercheck from tools import servercheck
from tools import ServerUpdate
import _thread import _thread
from stats import mystats from stats import mystats
from datetime import datetime from datetime import datetime
from ba import _activity from ba import _activity
from typing import Optional, Any
from spazmod import modifyspaz
from bastd.activity import dualteamscore
from bastd.activity import multiteamscore
from bastd.actor.zoomtext import ZoomText
# from tools import fireflies
settings = setting.get_settings_data() settings = setting.get_settings_data()
def filter_chat_message(msg, client_id): def filter_chat_message(msg, client_id):
@ -21,6 +28,8 @@ def on_app_launch():
whitelist.Whitelist() whitelist.Whitelist()
bootstraping() bootstraping()
servercheck.checkserver().start() servercheck.checkserver().start()
ServerUpdate.check()
#something #something
@ -55,15 +64,18 @@ def new_disconnect(clid,duration=120):
_ba.ban_client(clid,duration) _ba.ban_client(clid,duration)
org_begin=ba._activity.Activity.on_begin org_begin=ba._activity.Activity.on_begin
def new_begin(self): def new_begin(self):
org_begin(self) org_begin(self)
night_mode() night_mode()
ba._activity.Activity.on_begin=new_begin ba._activity.Activity.on_begin=new_begin
org_end=ba._activity.Activity.end
def new_end(self,results:Any=None,delay:float=0.0,force:bool=False):
org_end(self,results,delay,force)
ba._activity.Activity.end=new_end
def night_mode(): def night_mode():
@ -75,4 +87,11 @@ def night_mode():
if now.time() > start.time() or now.time() < end.time(): if now.time() > start.time() or now.time() < end.time():
activity = _ba.get_foreground_host_activity() activity = _ba.get_foreground_host_activity()
activity.globalsnode.tint = (0.5, 0.7, 1.0)
activity.globalsnode.tint = (0.5, 0.7, 1.0)
# if settings['autoNightMode']['fireflies']:
# fireflies.factory()

View file

@ -2,7 +2,7 @@
import _ba, os, json import _ba, os, json
from serverData import serverdata from serverData import serverdata
import time import time
import _thread
roles = {} roles = {}
data = {} data = {}
custom = {} custom = {}
@ -42,6 +42,8 @@ def add_profile(id,display_string,currentname,age):
"accountAge":age, "accountAge":age,
"registerOn":time.time(), "registerOn":time.time(),
"canStartKickVote":True, "canStartKickVote":True,
"spamCount":0,
"lastSpam":time.time(),
"totaltimeplayer":0, "totaltimeplayer":0,
"lastseen":0} "lastseen":0}
@ -82,26 +84,35 @@ def ban_player(id):
profiles= get_profiles() profiles= get_profiles()
if id in profiles: if id in profiles:
profiles[id]['isBan']=True profiles[id]['isBan']=True
commit_profiles(profiles) _thread.start_new_thread(commit_profiles,(profiles,))
# commit_profiles(profiles)
def mute(id): def mute(id):
profiles=get_profiles() profiles=get_profiles()
if id in profiles: if id in profiles:
profiles[id]["isMuted"]=True profiles[id]["isMuted"]=True
commit_profiles(profiles) _thread.start_new_thread(commit_profiles,(profiles,))
# commit_profiles(profiles)
def unmute(id): def unmute(id):
profiles=get_profiles() profiles=get_profiles()
if id in profiles: if id in profiles:
profiles[id]["isMuted"]=False profiles[id]["isMuted"]=False
_thread.start_new_thread(commit_profiles,(profiles,))
# commit_profiles(profiles)
def updateSpam(id,spamCount,lastSpam):
profiles=get_profiles()
if id in profiles:
profiles[id]["spamCount"]=spamCount
profiles[id]["lastSpam"]=lastSpam
commit_profiles(profiles) commit_profiles(profiles)
#================ ROLES ========================== #================ ROLES ==========================
def commit_roles(data): def commit_roles(data):

View file

@ -6,7 +6,9 @@
"isBan": false, "isBan": false,
"isMuted": false, "isMuted": false,
"totaltimeplayer": 0, "totaltimeplayer": 0,
"lastseen": 0 "lastseen": 0,
"spamCount": 0,
"lastSpam": 1637911682.2054627
}, },
"pb-IF5XUm9eAg==": { "pb-IF5XUm9eAg==": {
"display_string": [ "display_string": [
@ -14,12 +16,14 @@
], ],
"profiles": [], "profiles": [],
"name": "\ue030PC402015", "name": "\ue030PC402015",
"isBan": false, "isBan": true,
"isMuted": false, "isMuted": false,
"accountAge": "2021-11-12 20:30:30", "accountAge": "2021-11-12 20:30:30",
"registerOn": 1636801177.809589, "registerOn": 1636801177.809589,
"canStartKickVote":true, "canStartKickVote": true,
"totaltimeplayer": 0, "totaltimeplayer": 0,
"lastseen": 0 "lastseen": 0,
"spamCount": 4,
"lastSpam": 1637912278.8745685
} }
} }

View file

@ -8,3 +8,14 @@
2021-10-23 15:53:34.357371: pb-JiNJARBaXEFBVF9HFkNXXF1EF0ZaRlZE | 7 2021-10-23 15:53:34.357371: pb-JiNJARBaXEFBVF9HFkNXXF1EF0ZaRlZE | 7
2021-10-23 15:53:38.152627: pb-JiNJARBaXEFBVF9HFkNXXF1EF0ZaRlZE | 8 2021-10-23 15:53:38.152627: pb-JiNJARBaXEFBVF9HFkNXXF1EF0ZaRlZE | 8
2021-10-23 15:53:41.077009: pb-JiNJARBaXEFBVF9HFkNXXF1EF0ZaRlZE | 9 2021-10-23 15:53:41.077009: pb-JiNJARBaXEFBVF9HFkNXXF1EF0ZaRlZE | 9
2021-11-25 22:15:06.477416: pb-IF5XUm9eAg== | ohh fuck
2021-11-25 22:15:10.409848: pb-IF5XUm9eAg== | shit
2021-11-25 22:15:14.275920: pb-IF5XUm9eAg== | bye
2021-11-25 22:15:16.296385: pb-IF5XUm9eAg== | no
2021-11-25 22:15:21.839111: pb-IF5XUm9eAg== | no
2021-11-25 22:15:24.687210: pb-IF5XUm9eAg== | fuck
2021-11-25 22:15:27.920635: pb-IF5XUm9eAg== | fuck
2021-11-25 22:15:30.901683: pb-IF5XUm9eAg== | uck
2021-11-25 22:15:33.372142: pb-IF5XUm9eAg== | fuck
2021-11-25 22:15:36.348450: pb-IF5XUm9eAg== | fuck
2021-11-25 22:15:39.339904: pb-IF5XUm9eAg== | okokoko

View file

@ -4,15 +4,9 @@
"spectators": false, "spectators": false,
"lobbychecktime": 1 "lobbychecktime": 1
}, },
"ChatCommands": { "ChatCommands": {
"BrodcastCommand": true "BrodcastCommand": true
}, },
"textonmap": { "textonmap": {
"top watermark": "Welcome to server \n ip 192.168.0.1", "top watermark": "Welcome to server \n ip 192.168.0.1",
"bottom left watermark": "Owner : <owner-name> \nEditor : <bablu>\nScripts : BCS1.3.2", "bottom left watermark": "Owner : <owner-name> \nEditor : <bablu>\nScripts : BCS1.3.2",
@ -25,9 +19,12 @@
"autoNightMode":{ "autoNightMode":{
"enable":true, "enable":true,
"startTime":"18:30", "startTime":"18:30",
"endTime":"06:00" "endTime":"06:00",
"fireflies":true
}, },
"HostDeviceName":"v1.3.1", "sameCharacterForTeam":false,
"newResultBoard":true,
"HostDeviceName":"v1.3.2",
"HostName":"BCS", "HostName":"BCS",
"ShowKickVoteStarterName":true, "ShowKickVoteStarterName":true,
"KickVoteMsgType":"chat", "KickVoteMsgType":"chat",
@ -35,6 +32,10 @@
"minAgeToJoinInHours":24, "minAgeToJoinInHours":24,
"maxWarnCount":2, "maxWarnCount":2,
"WarnCooldownMinutes":30, "WarnCooldownMinutes":30,
"warnMsg":"WARNING !!!",
"afterWarnKickMsg":"Enough warnings, Goodbye have a nice day :)",
"firstTimeJoinMsg":"Welcome to the server,we r saving all your account details and chats",
"regularWelcomeMsg":"Welcome Back",
"enabletags": true, "enabletags": true,
"enablehptag": true, "enablehptag": true,
"enablerank": true, "enablerank": true,

View file

@ -1,6 +1,10 @@
from spazmod import tag from spazmod import tag
from spazmod import effects from spazmod import effects
import setting import setting
from random import randint
import _ba,ba
_setting=setting.get_settings_data()
def update_name(): def update_name():
import _ba import _ba
@ -17,7 +21,7 @@ def update_name():
# all activites related to modify spaz by any how will be here # all activites related to modify spaz by any how will be here
def main(spaz, node, player): def main(spaz, node, player):
_setting=setting.get_settings_data()
if _setting['enablehptag']: if _setting['enablehptag']:
tag.addhp(spaz) tag.addhp(spaz)
if _setting['enabletags']: if _setting['enabletags']:
@ -26,4 +30,41 @@ def main(spaz, node, player):
tag.addrank(node,player) tag.addrank(node,player)
if _setting['enableeffects']: if _setting['enableeffects']:
effects.Effect(spaz,player) effects.Effect(spaz,player)
update_name()
#update_name() will add threading here later . it was adding delay on game start
def getCharacter(player,character):
if _setting["sameCharacterForTeam"]:
if "character" in player.team.sessionteam.customdata:
return player.team.sessionteam.customdata["character"]
return character
def getRandomCharacter(otherthen):
characters=list(ba.app.spaz_appearances.keys())
invalid_characters=["Snake Shadow","Lee","Zola","Butch","Witch","Middle-Man","Alien","OldLady","Wrestler","Gretel","Robot"]
while True:
val=randint(0,len(characters)-1)
ch=characters[val]
if ch not in invalid_characters and ch not in otherthen:
return ch
def setTeamCharacter():
if not _setting["sameCharacterForTeam"]:
return
used=[]
teams=_ba.get_foreground_host_session().sessionteams
if len(teams) < 10:
for team in teams:
character=getRandomCharacter(used)
used.append(character)
team.name=character
team.customdata["character"]=character

View file

@ -120,7 +120,7 @@
"aid": "pb-IF4VVUgJVw==" "aid": "pb-IF4VVUgJVw=="
}, },
"pb-IF4gVU0BCg==": { "pb-IF4gVU0BCg==": {
"rank": 53, "rank": 52,
"name": "\ue020Dewanggaming", "name": "\ue020Dewanggaming",
"scores": 43, "scores": 43,
"total_damage": 0.0, "total_damage": 0.0,
@ -132,7 +132,7 @@
"aid": "pb-IF4gVU0BCg==" "aid": "pb-IF4gVU0BCg=="
}, },
"pb-IF4FVXkZDQ==": { "pb-IF4FVXkZDQ==": {
"rank": 27, "rank": 26,
"name": "\ue020lllBOLTlll", "name": "\ue020lllBOLTlll",
"scores": 151, "scores": 151,
"total_damage": 0.0, "total_damage": 0.0,
@ -156,7 +156,7 @@
"aid": "pb-IF42VUpaDg==" "aid": "pb-IF42VUpaDg=="
}, },
"pb-IF4iVUNSIw==": { "pb-IF4iVUNSIw==": {
"rank": 48, "rank": 47,
"name": "default", "name": "default",
"scores": 56, "scores": 56,
"total_damage": 0.0, "total_damage": 0.0,
@ -168,7 +168,7 @@
"aid": "pb-IF4iVUNSIw==" "aid": "pb-IF4iVUNSIw=="
}, },
"pb-IF4PVGcSJw==": { "pb-IF4PVGcSJw==": {
"rank": 42, "rank": 41,
"name": "\ue030Android29104233", "name": "\ue030Android29104233",
"scores": 84, "scores": 84,
"total_damage": 0.0, "total_damage": 0.0,
@ -180,7 +180,7 @@
"aid": "pb-IF4PVGcSJw==" "aid": "pb-IF4PVGcSJw=="
}, },
"pb-IF4eVVMkMw==": { "pb-IF4eVVMkMw==": {
"rank": 30, "rank": 29,
"name": "\ue030Android52887552", "name": "\ue030Android52887552",
"scores": 101, "scores": 101,
"total_damage": 0.0, "total_damage": 0.0,
@ -240,7 +240,7 @@
"aid": "pb-IF4PVVIeHw==" "aid": "pb-IF4PVVIeHw=="
}, },
"pb-IF4AVXAmPA==": { "pb-IF4AVXAmPA==": {
"rank": 50, "rank": 49,
"name": "\ue020ESZ\u4e5bOptimusOp\u4e44", "name": "\ue020ESZ\u4e5bOptimusOp\u4e44",
"scores": 56, "scores": 56,
"total_damage": 0.0, "total_damage": 0.0,
@ -252,7 +252,7 @@
"aid": "pb-IF4AVXAmPA==" "aid": "pb-IF4AVXAmPA=="
}, },
"pb-IF4AVVEPNw==": { "pb-IF4AVVEPNw==": {
"rank": 31, "rank": 30,
"name": "\ue020StealthyFelicity14", "name": "\ue020StealthyFelicity14",
"scores": 96, "scores": 96,
"total_damage": 0.0, "total_damage": 0.0,
@ -288,7 +288,7 @@
"aid": "pb-IF4DVEkPEg==" "aid": "pb-IF4DVEkPEg=="
}, },
"pb-IF4TVVNeMg==": { "pb-IF4TVVNeMg==": {
"rank": 46, "rank": 45,
"name": "\ue030Android52880740", "name": "\ue030Android52880740",
"scores": 61, "scores": 61,
"total_damage": 0.0, "total_damage": 0.0,
@ -312,7 +312,7 @@
"aid": "pb-IF4yVUcgBg==" "aid": "pb-IF4yVUcgBg=="
}, },
"pb-IF4IVUUJMg==": { "pb-IF4IVUUJMg==": {
"rank": 40, "rank": 39,
"name": "\ue030Android51464300", "name": "\ue030Android51464300",
"scores": 90, "scores": 90,
"total_damage": 0.0, "total_damage": 0.0,
@ -336,7 +336,7 @@
"aid": "pb-IF4tVUwGVA==" "aid": "pb-IF4tVUwGVA=="
}, },
"pb-IF48NmQO": { "pb-IF48NmQO": {
"rank": 59, "rank": 58,
"name": "default", "name": "default",
"scores": 6, "scores": 6,
"total_damage": 0.0, "total_damage": 0.0,
@ -348,7 +348,7 @@
"aid": "pb-IF48NmQO" "aid": "pb-IF48NmQO"
}, },
"pb-IF4UVUQaAw==": { "pb-IF4UVUQaAw==": {
"rank": 41, "rank": 40,
"name": "\ue020LikelyTour25", "name": "\ue020LikelyTour25",
"scores": 85, "scores": 85,
"total_damage": 0.0, "total_damage": 0.0,
@ -384,7 +384,7 @@
"aid": "pb-JiNJARBcV0FDXV1DGU5ZXV1FEUFWRVJC" "aid": "pb-JiNJARBcV0FDXV1DGU5ZXV1FEUFWRVJC"
}, },
"pb-IF4OVVMsDQ==": { "pb-IF4OVVMsDQ==": {
"rank": 49, "rank": 48,
"name": "\ue030Android52893090", "name": "\ue030Android52893090",
"scores": 56, "scores": 56,
"total_damage": 0.0, "total_damage": 0.0,
@ -408,7 +408,7 @@
"aid": "pb-IF5VVU4aFg==" "aid": "pb-IF5VVU4aFg=="
}, },
"pb-IF4SVW9dEg==": { "pb-IF4SVW9dEg==": {
"rank": 51, "rank": 50,
"name": "\ue020PROFFESOR9", "name": "\ue020PROFFESOR9",
"scores": 48, "scores": 48,
"total_damage": 0.0, "total_damage": 0.0,
@ -420,7 +420,7 @@
"aid": "pb-IF4SVW9dEg==" "aid": "pb-IF4SVW9dEg=="
}, },
"pb-IF4SVVMtDg==": { "pb-IF4SVVMtDg==": {
"rank": 38, "rank": 37,
"name": "\ue020OrtigozaRafa2000", "name": "\ue020OrtigozaRafa2000",
"scores": 92, "scores": 92,
"total_damage": 0.0, "total_damage": 0.0,
@ -432,7 +432,7 @@
"aid": "pb-IF4SVVMtDg==" "aid": "pb-IF4SVVMtDg=="
}, },
"pb-IF4cVVMhKg==": { "pb-IF4cVVMhKg==": {
"rank": 29, "rank": 28,
"name": "\ue020jonyteoba100", "name": "\ue020jonyteoba100",
"scores": 106, "scores": 106,
"total_damage": 0.0, "total_damage": 0.0,
@ -456,7 +456,7 @@
"aid": "pb-IF4gVRlbXQ==" "aid": "pb-IF4gVRlbXQ=="
}, },
"pb-IF4dVVAMUg==": { "pb-IF4dVVAMUg==": {
"rank": 39, "rank": 38,
"name": "\ue030Android52657984", "name": "\ue030Android52657984",
"scores": 91, "scores": 91,
"total_damage": 0.0, "total_damage": 0.0,
@ -468,7 +468,7 @@
"aid": "pb-IF4dVVAMUg==" "aid": "pb-IF4dVVAMUg=="
}, },
"pb-JiNJVxFfUEFDWFtCFEdXVl1FF0FaTllC": { "pb-JiNJVxFfUEFDWFtCFEdXVl1FF0FaTllC": {
"rank": 58, "rank": 57,
"name": "default", "name": "default",
"scores": 10, "scores": 10,
"total_damage": 0.0, "total_damage": 0.0,
@ -480,7 +480,7 @@
"aid": "pb-JiNJVxFfUEFDWFtCFEdXVl1FF0FaTllC" "aid": "pb-JiNJVxFfUEFDWFtCFEdXVl1FF0FaTllC"
}, },
"pb-IF40VU4TAQ==": { "pb-IF40VU4TAQ==": {
"rank": 36, "rank": 35,
"name": "default", "name": "default",
"scores": 96, "scores": 96,
"total_damage": 0.0, "total_damage": 0.0,
@ -504,7 +504,7 @@
"aid": "pb-IF5QVVUkLw==" "aid": "pb-IF5QVVUkLw=="
}, },
"pb-IF5RVUkZKg==": { "pb-IF5RVUkZKg==": {
"rank": 57, "rank": 56,
"name": "\ue020ThreateningOddball34", "name": "\ue020ThreateningOddball34",
"scores": 16, "scores": 16,
"total_damage": 0.0, "total_damage": 0.0,
@ -516,7 +516,7 @@
"aid": "pb-IF5RVUkZKg==" "aid": "pb-IF5RVUkZKg=="
}, },
"pb-IF5VVVEnVQ==": { "pb-IF5VVVEnVQ==": {
"rank": 47, "rank": 46,
"name": "\ue030Android52446817", "name": "\ue030Android52446817",
"scores": 59, "scores": 59,
"total_damage": 0.0, "total_damage": 0.0,
@ -528,7 +528,7 @@
"aid": "pb-IF5VVVEnVQ==" "aid": "pb-IF5VVVEnVQ=="
}, },
"pb-JiNJARBaVUpHWl1BGUBVVFZAEkZeR1FE": { "pb-JiNJARBaVUpHWl1BGUBVVFZAEkZeR1FE": {
"rank": 33, "rank": 32,
"name": "\ue020CreepyJourney52261", "name": "\ue020CreepyJourney52261",
"scores": 96, "scores": 96,
"total_damage": 0.0, "total_damage": 0.0,
@ -540,7 +540,7 @@
"aid": "pb-JiNJARBaVUpHWl1BGUBVVFZAEkZeR1FE" "aid": "pb-JiNJARBaVUpHWl1BGUBVVFZAEkZeR1FE"
}, },
"pb-IF5QVVZTAA==": { "pb-IF5QVVZTAA==": {
"rank": 45, "rank": 44,
"name": "default", "name": "default",
"scores": 64, "scores": 64,
"total_damage": 0.0, "total_damage": 0.0,
@ -552,7 +552,7 @@
"aid": "pb-IF5QVVZTAA==" "aid": "pb-IF5QVVZTAA=="
}, },
"pb-IF5dVU0tPw==": { "pb-IF5dVU0tPw==": {
"rank": 37, "rank": 36,
"name": "\ue030Android52110513", "name": "\ue030Android52110513",
"scores": 93, "scores": 93,
"total_damage": 0.0, "total_damage": 0.0,
@ -564,7 +564,7 @@
"aid": "pb-IF5dVU0tPw==" "aid": "pb-IF5dVU0tPw=="
}, },
"pb-IF4PVUovCQ==": { "pb-IF4PVUovCQ==": {
"rank": 55, "rank": 54,
"name": "\ue020Phriedbean", "name": "\ue020Phriedbean",
"scores": 20, "scores": 20,
"total_damage": 0.0, "total_damage": 0.0,
@ -588,7 +588,7 @@
"aid": "pb-IF4sVRU8IA==" "aid": "pb-IF4sVRU8IA=="
}, },
"pb-IF4zVUYjPA==": { "pb-IF4zVUYjPA==": {
"rank": 26, "rank": 25,
"name": "\ue030Android51693156", "name": "\ue030Android51693156",
"scores": 152, "scores": 152,
"total_damage": 0.0, "total_damage": 0.0,
@ -600,7 +600,7 @@
"aid": "pb-IF4zVUYjPA==" "aid": "pb-IF4zVUYjPA=="
}, },
"pb-IF4PVVJSNg==": { "pb-IF4PVVJSNg==": {
"rank": 35, "rank": 34,
"name": "default", "name": "default",
"scores": 96, "scores": 96,
"total_damage": 0.0, "total_damage": 0.0,
@ -612,7 +612,7 @@
"aid": "pb-IF4PVVJSNg==" "aid": "pb-IF4PVVJSNg=="
}, },
"pb-IF4qVVMuIA==": { "pb-IF4qVVMuIA==": {
"rank": 32, "rank": 31,
"name": "\ue020TacitAnthropology26", "name": "\ue020TacitAnthropology26",
"scores": 96, "scores": 96,
"total_damage": 0.0, "total_damage": 0.0,
@ -648,7 +648,7 @@
"aid": "pb-IF4-VWItPA==" "aid": "pb-IF4-VWItPA=="
}, },
"pb-IF5VVxI5Fg==": { "pb-IF5VVxI5Fg==": {
"rank": 44, "rank": 43,
"name": "\ue020JinaYumnam1234", "name": "\ue020JinaYumnam1234",
"scores": 76, "scores": 76,
"total_damage": 0.0, "total_damage": 0.0,
@ -672,7 +672,7 @@
"aid": "pb-IF4lVUskVg==" "aid": "pb-IF4lVUskVg=="
}, },
"pb-IF4vVVAiKw==": { "pb-IF4vVVAiKw==": {
"rank": 34, "rank": 33,
"name": "default", "name": "default",
"scores": 96, "scores": 96,
"total_damage": 0.0, "total_damage": 0.0,
@ -696,7 +696,7 @@
"aid": "pb-IF5RVU0vKg==" "aid": "pb-IF5RVU0vKg=="
}, },
"pb-IF4JVWseCg==": { "pb-IF4JVWseCg==": {
"rank": 43, "rank": 42,
"name": "\ue020CapillaryJaguar7", "name": "\ue020CapillaryJaguar7",
"scores": 77, "scores": 77,
"total_damage": 0.0, "total_damage": 0.0,
@ -720,7 +720,7 @@
"aid": "pb-IF4HVVAkEg==" "aid": "pb-IF4HVVAkEg=="
}, },
"pb-JiNJARFTUUBCXFhJE0NUVFdCEERbT1dK": { "pb-JiNJARFTUUBCXFhJE0NUVFdCEERbT1dK": {
"rank": 56, "rank": 55,
"name": "\ue020snehil7701", "name": "\ue020snehil7701",
"scores": 20, "scores": 20,
"total_damage": 0.0, "total_damage": 0.0,
@ -804,7 +804,7 @@
"aid": "pb-IF5cVEMNNA==" "aid": "pb-IF5cVEMNNA=="
}, },
"pb-IF4PVEEnBA==": { "pb-IF4PVEEnBA==": {
"rank": 28, "rank": 27,
"name": "\ue020Deadly\u30c4TusKeR", "name": "\ue020Deadly\u30c4TusKeR",
"scores": 128, "scores": 128,
"total_damage": 0.0, "total_damage": 0.0,
@ -816,7 +816,7 @@
"aid": "pb-IF4PVEEnBA==" "aid": "pb-IF4PVEEnBA=="
}, },
"pb-IF4RVVMDVQ==": { "pb-IF4RVVMDVQ==": {
"rank": 54, "rank": 53,
"name": "\ue030Android52942930", "name": "\ue030Android52942930",
"scores": 37, "scores": 37,
"total_damage": 0.0, "total_damage": 0.0,
@ -828,7 +828,7 @@
"aid": "pb-IF4RVVMDVQ==" "aid": "pb-IF4RVVMDVQ=="
}, },
"pb-IF43VVJSAg==": { "pb-IF43VVJSAg==": {
"rank": 52, "rank": 51,
"name": "\ue020RANDOMGOD2011", "name": "\ue020RANDOMGOD2011",
"scores": 44, "scores": 44,
"total_damage": 0.0, "total_damage": 0.0,
@ -840,15 +840,15 @@
"aid": "pb-IF43VVJSAg==" "aid": "pb-IF43VVJSAg=="
}, },
"pb-IF5XUm9eAg==": { "pb-IF5XUm9eAg==": {
"rank": 25, "rank": 59,
"name": "\ue030PC402015", "name": "\ue030PC402015",
"scores": 152, "scores": 5,
"total_damage": 0.0, "total_damage": 0.0,
"kills": 0, "kills": 8,
"deaths": 10, "deaths": 75,
"games": 21, "games": 93,
"kd": 0.0, "kd": 0.106,
"avg_score": 7.238, "avg_score": 0.053,
"aid": "pb-IF5XUm9eAg==" "aid": "pb-IF5XUm9eAg=="
} }
} }

View file

@ -211,14 +211,6 @@
</tr> </tr>
<tr> <tr>
<td>25</td> <td>25</td>
<td style="text-align:center">PC402015</td>
<td>152</td>
<td>0</td>
<td>10</td>
<td>21</td>
</tr>
<tr>
<td>26</td>
<td style="text-align:center">Android51693156</td> <td style="text-align:center">Android51693156</td>
<td>152</td> <td>152</td>
<td>0</td> <td>0</td>
@ -226,7 +218,7 @@
<td>3</td> <td>3</td>
</tr> </tr>
<tr> <tr>
<td>27</td> <td>26</td>
<td style="text-align:center">lllBOLTlll</td> <td style="text-align:center">lllBOLTlll</td>
<td>151</td> <td>151</td>
<td>9</td> <td>9</td>
@ -234,7 +226,7 @@
<td>3</td> <td>3</td>
</tr> </tr>
<tr> <tr>
<td>28</td> <td>27</td>
<td style="text-align:center">DeadlyツTusKeR</td> <td style="text-align:center">DeadlyツTusKeR</td>
<td>128</td> <td>128</td>
<td>3</td> <td>3</td>
@ -242,7 +234,7 @@
<td>3</td> <td>3</td>
</tr> </tr>
<tr> <tr>
<td>29</td> <td>28</td>
<td style="text-align:center">jonyteoba100</td> <td style="text-align:center">jonyteoba100</td>
<td>106</td> <td>106</td>
<td>2</td> <td>2</td>
@ -250,7 +242,7 @@
<td>4</td> <td>4</td>
</tr> </tr>
<tr> <tr>
<td>30</td> <td>29</td>
<td style="text-align:center">Android52887552</td> <td style="text-align:center">Android52887552</td>
<td>101</td> <td>101</td>
<td>0</td> <td>0</td>
@ -258,7 +250,7 @@
<td>6</td> <td>6</td>
</tr> </tr>
<tr> <tr>
<td>31</td> <td>30</td>
<td style="text-align:center">StealthyFelicity14</td> <td style="text-align:center">StealthyFelicity14</td>
<td>96</td> <td>96</td>
<td>0</td> <td>0</td>
@ -266,7 +258,7 @@
<td>1</td> <td>1</td>
</tr> </tr>
<tr> <tr>
<td>32</td> <td>31</td>
<td style="text-align:center">TacitAnthropology26</td> <td style="text-align:center">TacitAnthropology26</td>
<td>96</td> <td>96</td>
<td>0</td> <td>0</td>
@ -274,13 +266,21 @@
<td>1</td> <td>1</td>
</tr> </tr>
<tr> <tr>
<td>33</td> <td>32</td>
<td style="text-align:center">CreepyJourney52261</td> <td style="text-align:center">CreepyJourney52261</td>
<td>96</td> <td>96</td>
<td>0</td> <td>0</td>
<td>0</td> <td>0</td>
<td>1</td> <td>1</td>
</tr> </tr>
<tr>
<td>33</td>
<td style="text-align:center">default</td>
<td>96</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr> <tr>
<td>34</td> <td>34</td>
<td style="text-align:center">default</td> <td style="text-align:center">default</td>
@ -299,14 +299,6 @@
</tr> </tr>
<tr> <tr>
<td>36</td> <td>36</td>
<td style="text-align:center">default</td>
<td>96</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>37</td>
<td style="text-align:center">Android52110513</td> <td style="text-align:center">Android52110513</td>
<td>93</td> <td>93</td>
<td>0</td> <td>0</td>
@ -314,7 +306,7 @@
<td>2</td> <td>2</td>
</tr> </tr>
<tr> <tr>
<td>38</td> <td>37</td>
<td style="text-align:center">OrtigozaRafa2000</td> <td style="text-align:center">OrtigozaRafa2000</td>
<td>92</td> <td>92</td>
<td>4</td> <td>4</td>
@ -322,7 +314,7 @@
<td>4</td> <td>4</td>
</tr> </tr>
<tr> <tr>
<td>39</td> <td>38</td>
<td style="text-align:center">Android52657984</td> <td style="text-align:center">Android52657984</td>
<td>91</td> <td>91</td>
<td>0</td> <td>0</td>
@ -330,7 +322,7 @@
<td>2</td> <td>2</td>
</tr> </tr>
<tr> <tr>
<td>40</td> <td>39</td>
<td style="text-align:center">Android51464300</td> <td style="text-align:center">Android51464300</td>
<td>90</td> <td>90</td>
<td>0</td> <td>0</td>
@ -338,7 +330,7 @@
<td>2</td> <td>2</td>
</tr> </tr>
<tr> <tr>
<td>41</td> <td>40</td>
<td style="text-align:center">LikelyTour25</td> <td style="text-align:center">LikelyTour25</td>
<td>85</td> <td>85</td>
<td>11</td> <td>11</td>
@ -346,7 +338,7 @@
<td>2</td> <td>2</td>
</tr> </tr>
<tr> <tr>
<td>42</td> <td>41</td>
<td style="text-align:center">Android29104233</td> <td style="text-align:center">Android29104233</td>
<td>84</td> <td>84</td>
<td>7</td> <td>7</td>
@ -354,7 +346,7 @@
<td>2</td> <td>2</td>
</tr> </tr>
<tr> <tr>
<td>43</td> <td>42</td>
<td style="text-align:center">CapillaryJaguar7</td> <td style="text-align:center">CapillaryJaguar7</td>
<td>77</td> <td>77</td>
<td>7</td> <td>7</td>
@ -362,7 +354,7 @@
<td>3</td> <td>3</td>
</tr> </tr>
<tr> <tr>
<td>44</td> <td>43</td>
<td style="text-align:center">JinaYumnam1234</td> <td style="text-align:center">JinaYumnam1234</td>
<td>76</td> <td>76</td>
<td>0</td> <td>0</td>
@ -370,7 +362,7 @@
<td>1</td> <td>1</td>
</tr> </tr>
<tr> <tr>
<td>45</td> <td>44</td>
<td style="text-align:center">default</td> <td style="text-align:center">default</td>
<td>64</td> <td>64</td>
<td>0</td> <td>0</td>
@ -378,7 +370,7 @@
<td>1</td> <td>1</td>
</tr> </tr>
<tr> <tr>
<td>46</td> <td>45</td>
<td style="text-align:center">Android52880740</td> <td style="text-align:center">Android52880740</td>
<td>61</td> <td>61</td>
<td>0</td> <td>0</td>
@ -386,7 +378,7 @@
<td>2</td> <td>2</td>
</tr> </tr>
<tr> <tr>
<td>47</td> <td>46</td>
<td style="text-align:center">Android52446817</td> <td style="text-align:center">Android52446817</td>
<td>59</td> <td>59</td>
<td>2</td> <td>2</td>
@ -394,7 +386,7 @@
<td>2</td> <td>2</td>
</tr> </tr>
<tr> <tr>
<td>48</td> <td>47</td>
<td style="text-align:center">default</td> <td style="text-align:center">default</td>
<td>56</td> <td>56</td>
<td>2</td> <td>2</td>
@ -402,7 +394,7 @@
<td>1</td> <td>1</td>
</tr> </tr>
<tr> <tr>
<td>49</td> <td>48</td>
<td style="text-align:center">Android52893090</td> <td style="text-align:center">Android52893090</td>
<td>56</td> <td>56</td>
<td>0</td> <td>0</td>
@ -410,7 +402,7 @@
<td>2</td> <td>2</td>
</tr> </tr>
<tr> <tr>
<td>50</td> <td>49</td>
<td style="text-align:center">ESZ乛OptimusOp乄</td> <td style="text-align:center">ESZ乛OptimusOp乄</td>
<td>56</td> <td>56</td>
<td>0</td> <td>0</td>
@ -418,7 +410,7 @@
<td>2</td> <td>2</td>
</tr> </tr>
<tr> <tr>
<td>51</td> <td>50</td>
<td style="text-align:center">PROFFESOR9</td> <td style="text-align:center">PROFFESOR9</td>
<td>48</td> <td>48</td>
<td>0</td> <td>0</td>
@ -426,7 +418,7 @@
<td>5</td> <td>5</td>
</tr> </tr>
<tr> <tr>
<td>52</td> <td>51</td>
<td style="text-align:center">RANDOMGOD2011</td> <td style="text-align:center">RANDOMGOD2011</td>
<td>44</td> <td>44</td>
<td>3</td> <td>3</td>
@ -434,7 +426,7 @@
<td>2</td> <td>2</td>
</tr> </tr>
<tr> <tr>
<td>53</td> <td>52</td>
<td style="text-align:center">Dewanggaming</td> <td style="text-align:center">Dewanggaming</td>
<td>43</td> <td>43</td>
<td>3</td> <td>3</td>
@ -442,7 +434,7 @@
<td>3</td> <td>3</td>
</tr> </tr>
<tr> <tr>
<td>54</td> <td>53</td>
<td style="text-align:center">Android52942930</td> <td style="text-align:center">Android52942930</td>
<td>37</td> <td>37</td>
<td>1</td> <td>1</td>
@ -450,7 +442,7 @@
<td>1</td> <td>1</td>
</tr> </tr>
<tr> <tr>
<td>55</td> <td>54</td>
<td style="text-align:center">Phriedbean</td> <td style="text-align:center">Phriedbean</td>
<td>20</td> <td>20</td>
<td>2</td> <td>2</td>
@ -458,7 +450,7 @@
<td>2</td> <td>2</td>
</tr> </tr>
<tr> <tr>
<td>56</td> <td>55</td>
<td style="text-align:center">snehil7701</td> <td style="text-align:center">snehil7701</td>
<td>20</td> <td>20</td>
<td>2</td> <td>2</td>
@ -466,7 +458,7 @@
<td>1</td> <td>1</td>
</tr> </tr>
<tr> <tr>
<td>57</td> <td>56</td>
<td style="text-align:center">ThreateningOddball34</td> <td style="text-align:center">ThreateningOddball34</td>
<td>16</td> <td>16</td>
<td>1</td> <td>1</td>
@ -474,7 +466,7 @@
<td>2</td> <td>2</td>
</tr> </tr>
<tr> <tr>
<td>58</td> <td>57</td>
<td style="text-align:center">default</td> <td style="text-align:center">default</td>
<td>10</td> <td>10</td>
<td>1</td> <td>1</td>
@ -482,13 +474,21 @@
<td>1</td> <td>1</td>
</tr> </tr>
<tr> <tr>
<td>59</td> <td>58</td>
<td style="text-align:center">default</td> <td style="text-align:center">default</td>
<td>6</td> <td>6</td>
<td>0</td> <td>0</td>
<td>1</td> <td>1</td>
<td>1</td> <td>1</td>
</tr> </tr>
<tr>
<td>59</td>
<td style="text-align:center">PC402015</td>
<td>5</td>
<td>8</td>
<td>75</td>
<td>93</td>
</tr>
<tr> <tr>
<td>60</td> <td>60</td>
<td style="text-align:center">default</td> <td style="text-align:center">default</td>

17
dist/ba_root/mods/tools/ServerUpdate.py vendored Normal file
View file

@ -0,0 +1,17 @@
from playersData import pdata
import time
import _thread
def check():
_thread.start_new_thread(updateProfilesJson,())
def updateProfilesJson():
profiles=pdata.get_profiles()
for id in profiles:
if "spamCount" not in profiles[id]:
profiles[id]["spamCount"]=0
profiles[id]["lastSpam"]=time.time()
pdata.commit_profiles(profiles)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

60
dist/ba_root/mods/tools/profanity.py vendored Normal file
View file

@ -0,0 +1,60 @@
# ported from ankit scripts
# need to update in future with easy to add custom list and more deep analysis .
# working on other features rn, will update this later , for now lets use this
import re
PATTERN = (
r"fu+c+k|"
r"fu+c+($|)|"
r"fu+k+($|)|"
r"\w*ph+u*c+k\w*\b|"
r"\b\w+ch+o+d|"
r"randi+|"
r"chu+t\w*\b|"
r"chh+a+k+[ae]|"
r"hijd\w|"
r"lund\b|"
r"\bass\b|"
r"asshole|"
r"bi*tch|"
r"cock|"
r"\bga+nd\b|"
r"ga+ndu|"
r"tharki|"
r"tatti|"
r"lod\w\b|"
r"jha+nt|"
r"pu+s+y|"
r"pu+z+y|"
r"di+c+k|"
r"\b([mb]+c+)+\b|"
r"\b[mb]+[^a-zA-Z]?c+\b|"
r"f.u.c.k|"
r"b\w*s\w?d\w?k|"
r"m.{0,4}d.?a.{0,8}c.?h.?o.?d|"
r"b.+n.?c.?h.?o.?d|"
r"cunt|"
r"my+r+e|"
r"th+y+r|"
r"th+y+i+r|"
r"th+aa+y+o+l+i|"
r"th+a+y+o+l+i|"
r"ku+nn+a+n|"
r"na+y+i+n+t+e|"
r"pu+ll+u|"
r"la+(u|v)+d+\w\b|"
r"chu+d\w*\b|"
"sex+($|)|"
r"bo+b(s|z)|"
r"po+r+n|"
r"ni+p+le+"
)
def censor(message):
censored_message = re.sub(
PATTERN,
lambda match: "*" * len(match.group()),
message,
flags=re.IGNORECASE
)
return censored_message

View file

@ -14,6 +14,8 @@ import ba
from ba._general import Call from ba._general import Call
import threading import threading
import setting import setting
import _thread
from tools import profanity
# class ServerChecker: # class ServerChecker:
# def __init__(): # def __init__():
@ -68,10 +70,17 @@ class checkserver(object):
newPlayers.append(ros['account_id']) newPlayers.append(ros['account_id'])
if ros['account_id'] not in self.players and ros['client_id'] !=-1: if ros['account_id'] not in self.players and ros['client_id'] !=-1:
d_str=ros['display_string']
d_str2=profanity.censor(d_str)
if d_str2!=d_str:
_ba.screenmessage("Profanity in Id , change your ID and join back",color=(1,0,0),transient=True,clients=[ros['client_id']])
_ba.disconnect_client(ros['client_id'],1)
return
if ros['account_id'] != None: if ros['account_id'] != None:
if ros['account_id'] in serverdata.clients:
LoadProfile(ros['account_id']).start() on_player_join_server(ros['account_id'],serverdata.clients[ros['account_id']])
else:
LoadProfile(ros['account_id']).start()
self.players=newPlayers self.players=newPlayers
@ -80,8 +89,30 @@ settings = setting.get_settings_data()
def on_player_join_server(pbid,player_data): def on_player_join_server(pbid,player_data):
now=time.time()
#player_data=pdata.get_info(pbid) #player_data=pdata.get_info(pbid)
clid=113
for ros in _ba.get_game_roster():
if ros["account_id"]==pbid:
clid=ros["client_id"]
if pbid in serverdata.clients:
rejoinCount=serverdata.clients[pbid]["rejoincount"]
spamCount=serverdata.clients[pbid]["spamCount"]
if now-serverdata.clients[pbid]["lastJoin"] < 15:
rejoinCount+=1
if rejoinCount >2:
_ba.screenmessage("Joining too fast , slow down dude",color=(1,0,1),transient=True,clients=[clid])
_ba.disconnect_client(clid)
_thread.start_new_thread(reportSpam,(pbid,))
return
else:
rejoinCount=0
serverdata.clients[pbid]["rejoincount"]=rejoinCount
serverdata.clients[pbid]["lastJoin"]=now
if player_data!=None: if player_data!=None:
device_strin="" device_strin=""
@ -89,25 +120,37 @@ def on_player_join_server(pbid,player_data):
for ros in _ba.get_game_roster(): for ros in _ba.get_game_roster():
if ros['account_id']==pbid: if ros['account_id']==pbid:
if not player_data["isBan"]: if not player_data["isBan"]:
_ba.screenmessage("New Accounts not allowed here , come back later",transient=True,clients=[ros['client_id']]) _ba.screenmessage("New Accounts not allowed here , come back later",color=(1,0,0), transient=True,clients=[ros['client_id']])
_ba.disconnect_client(ros['client_id']) _ba.disconnect_client(ros['client_id'])
return return
else: else:
if pbid not in serverdata.clients:
serverdata.clients[pbid]=player_data serverdata.clients[pbid]=player_data
serverdata.clients[pbid]["warnCount"]=0 serverdata.clients[pbid]["warnCount"]=0
serverdata.clients[pbid]["lastWarned"]=time.time() serverdata.clients[pbid]["lastWarned"]=time.time()
if not player_data["canStartKickVote"]: serverdata.clients[pbid]["verified"]=False
_ba.disable_kickvote(pbid) serverdata.clients[pbid]["rejoincount"]=1
serverdata.clients[pbid]["lastJoin"]=time.time()
if not player_data["canStartKickVote"]:
_ba.disable_kickvote(pbid)
verify_account(pbid,player_data) verify_account(pbid,player_data)
cid=113
d_st="xx"
for ros in _ba.get_game_roster():
if ros['account_id']==pbid:
cid=ros['client_id']
d_st=ros['display_string']
_ba.screenmessage(settings["regularWelcomeMsg"]+" "+d_st,color=(0.60,0.8,0.6),transient=True,clients=[cid])
else: else:
d_string="" d_string=""
cid=113
for ros in _ba.get_game_roster(): for ros in _ba.get_game_roster():
if ros['account_id']==pbid: if ros['account_id']==pbid:
d_string=ros['display_string'] d_string=ros['display_string']
cid=ros['client_id']
thread = FetchThread( thread = FetchThread(
target=my_acc_age, target=my_acc_age,
@ -117,6 +160,7 @@ def on_player_join_server(pbid,player_data):
) )
thread.start() thread.start()
_ba.screenmessage(settings["firstTimeJoinMsg"],color=(0.6,0.8,0.6),transient=True,clients=[cid])
@ -137,6 +181,8 @@ def verify_account(pb_id,p_data):
display_string=d_string display_string=d_string
) )
thread2.start() thread2.start()
else:
serverdata.clients[pb_id]["verified"]=True
#============== IGNORE BLOW CODE , ELSE DIE ======================= #============== IGNORE BLOW CODE , ELSE DIE =======================
@ -250,6 +296,9 @@ def save_ids(ids,pb_id,display_string):
if display_string not in ids: if display_string not in ids:
msg="Spoofed Id detected , Goodbye" msg="Spoofed Id detected , Goodbye"
_ba.pushcall(Call(kick_by_pb_id,pb_id,msg),from_other_thread=True) _ba.pushcall(Call(kick_by_pb_id,pb_id,msg),from_other_thread=True)
serverdata.clients[pb_id]["verified"]=False
else:
serverdata.clients[pb_id]["verified"]=True
@ -259,17 +308,30 @@ def kick_by_pb_id(pb_id,msg):
_ba.screenmessage(msg, transient=True, clients=[ros['client_id']]) _ba.screenmessage(msg, transient=True, clients=[ros['client_id']])
_ba.disconnect_client(ros['client_id']) _ba.disconnect_client(ros['client_id'])
_ba.chatmessage("id spoofer kicked") _ba.chatmessage("id spoofer kicked")
def get_account_age(ct): def get_account_age(ct):
creation_time=datetime.datetime.strptime(ct,"%Y-%m-%d %H:%M:%S") creation_time=datetime.datetime.strptime(ct,"%Y-%m-%d %H:%M:%S")
now = datetime.datetime.now() now = datetime.datetime.now()
delta = now - creation_time delta = now - creation_time
delta_hours = delta.total_seconds() / (60 * 60) delta_hours = delta.total_seconds() / (60 * 60)
return delta_hours return delta_hours
def reportSpam(id):
now=time.time()
profiles=pdata.get_profiles()
if id in profiles:
count=profiles[id]["spamCount"]
if now-profiles[id]["lastSpam"] < 2*24*60*60:
count+=1
if count > 3:
profiles[id]["isBan"]=True
else:
count =0
profiles[id]["spamCount"]=count
profiles[id]["lastSpam"]=now
pdata.commit_profiles(profiles)

View file

@ -7,9 +7,13 @@ import ba, _ba
import setting import setting
from stats import mystats from stats import mystats
from datetime import datetime from datetime import datetime
from spazmod import modifyspaz
from tools import fireflies
class textonmap: class textonmap:
def __init__(self): def __init__(self):
modifyspaz.setTeamCharacter()
setti=setting.get_settings_data() setti=setting.get_settings_data()
data = setti['textonmap'] data = setti['textonmap']
left = data['bottom left watermark'] left = data['bottom left watermark']