Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # # # # # # # # PyQt5 # # # # # # # #
- from PyQt5 import QtCore, QtGui, QtWidgets
- from PyQt5.QtCore import QThread, pyqtSignal
- from PyQt5.QtWidgets import QWidget, QProgressBar, QPushButton, QApplication
- from PyQt5.QtCore import QBasicTimer
- from gui import MainInterface
- import asyncio, sys, re, logging, signal, discord, csv, config
- from discord.ext import commands
- from datetime import datetime
- from valve.source.a2s import ServerQuerier, NoResponseError
- from subsidiary import pkill as PLAYER_KILL
- from subsidiary import revent as REWARD_EVENT
- from subsidiary import cevent as CONNECT_EVENT
- from subsidiary import pdeath as PLAYER_DEATH
- from subsidiary import server_name as SERVER_NAME
- from subsidiary import log as SERVER_LOG
- from subsidiary import dlog as PLAYERS_LOG
- from subsidiary import rlog as REWARDS_LOG
- from subsidiary import path_player as PATH_PLAYER
- from subsidiary import path_death as PATH_DEATH
- from subsidiary import path_killed as PATH_KILLED
- from subsidiary import path_reward as PATH_REWARD
- from subsidiary import path_yaml as PATH_YAML
- from config import file as LOG
- from config import rewards_log as LOG_REWARDS
- from config import players_log as LOG_PLAYERS
- from config import server_log as LOG_SERVER
- from config import BOT_TOKEN as TOKEN
- from config import SERVER_NAME
- from config import LOGCHAN_ID as lchanID
- from config import VCHANNEL_ID as chanID
- from config import KILLEDCHAN_ID as kchadID
- from config import REWARDCHAN_ID as rchanID
- from config import EVENTCHAN_ID as echanID
- from config import SERVERCHAN_ID as schanID
- from config import MAX_PLAYERS as max_players
- now = datetime.now()
- gettime = now.strftime("%d/%m/%Y | %H:%M:%S > ")
- bot = commands.Bot(command_prefix=';', help_command=None)
- async def writecsv():
- while True:
- try:
- with ServerQuerier(config.SERVER_ADDRESS) as server:
- with open('csv/playerstats.csv', 'a', newline='') as f:
- csvup = csv.writer(f, delimiter=',')
- players = server.info()['player_count']
- csvup.writerow([gettime, players])
- log(f"{gettime}Player count: {players}")
- except NoResponseError:
- with open('csv/playerstats.csv', 'a', newline='') as f:
- csvup = csv.writer(f, delimiter=',')
- players = '0'
- csvup.writerow([gettime, players])
- log(f'{gettime}Unable to connect to server')
- await asyncio.sleep(60)
- async def deathcount():
- while True:
- with open(log, encoding='utf-8', mode='r') as f:
- f.seek(0,2)
- while True:
- line = f.readline()
- if(re.search(PLAYER_DEATH, line)):
- pname = re.search(PLAYER_DEATH, line).group(1)
- with open('csv/deathlog.csv', 'a', newline='', encoding='utf-8') as dl:
- deathup = csv.writer(dl, delimiter=',')
- deathup.writerow([gettime, pname])
- log(f"{gettime}{pname} ΡΠΌΠ΅Ρ!")
- await asyncio.sleep(0.2)
- def log(log):
- logging.info(log)
- class QTextEditLogger(logging.Handler):
- def __init__(self, parent):
- super().__init__()
- self.PVELogs = QtWidgets.QPlainTextEdit(parent.centralwidget)
- self.PVELogs.setGeometry(QtCore.QRect(40, 50, 801, 491))
- font = QtGui.QFont()
- font.setFamily("Consolas")
- font.setPointSize(10)
- self.PVELogs.setFont(font)
- self.PVELogs.setStyleSheet("background-color: rgb(30, 30, 30); color: rgb(255, 255, 255);")
- self.PVELogs.setReadOnly(True)
- self.PVELogs.setPlainText("")
- self.PVELogs.setObjectName("PVELogs")
- def emit(self, record):
- msg = self.format(record)
- self.PVELogs.appendPlainText(msg)
- class PVP(QtWidgets.QMainWindow, QWidget, MainInterface):
- def __init__(self):
- super().__init__()
- self.setupUi(self) #init gui
- # logging
- logTextBox = QTextEditLogger(self)
- #logTextBox.setFormatter(logging.Formatter(f'{gettime}%(message)s'))
- logging.getLogger().addHandler(logTextBox)
- logging.getLogger().setLevel(logging.DEBUG)
- root_logger= logging.getLogger()
- root_logger.setLevel(logging.DEBUG)
- handler = logging.FileHandler('PVPLog.log', 'w', 'utf-8')
- handler.setFormatter(logging.Formatter('%(name)s, %(asctime)s, [%(levelname)s], %(message)s'))
- root_logger.addHandler(handler)
- self.PVELogs.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse)
- self.thread = WorkThread()
- self.thread.threadSignal.connect(self.func2)
- self.onPVE.clicked.connect(self.func1)
- log(" ========================================== VALHEIMBY LOGS - v1.0.0 ===========================================")
- log(" ==============================================================================================================\n")
- def func1(self):
- self.thread.start()
- def func2(self, value):
- pass
- class WorkThread(QtCore.QThread):
- threadSignal = QtCore.pyqtSignal(int)
- def __init__(self):
- super().__init__()
- def run(self):
- for i in range(10):
- self.msleep(200)
- self.threadSignal.emit(i)
- if __name__ == "__main__":
- app = QtWidgets.QApplication(sys.argv)
- mw = PVP()
- mw.show()
- sys.exit(app.exec())
- loop = asyncio.new_event_loop()
- loop.create_task(deathcount())
- asyncio.set_event_loop(loop)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement