mirror of
https://github.com/azerothcore/mod-anticheat.git
synced 2026-01-13 00:58:35 +00:00
Upgrade module (#124)
This commit is contained in:
8
.editorconfig
Normal file
8
.editorconfig
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
tab_width = 4
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
max_line_length = 80
|
||||||
105
.gitattributes
vendored
Normal file
105
.gitattributes
vendored
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
## AUTO-DETECT
|
||||||
|
## Handle line endings automatically for files detected as
|
||||||
|
## text and leave all files detected as binary untouched.
|
||||||
|
## This will handle all files NOT defined below.
|
||||||
|
* text=auto eol=lf
|
||||||
|
|
||||||
|
# Text
|
||||||
|
*.conf text
|
||||||
|
*.conf.dist text
|
||||||
|
*.cmake text
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
*.sh text
|
||||||
|
*.fish text
|
||||||
|
*.lua text
|
||||||
|
|
||||||
|
## SQL
|
||||||
|
*.sql text
|
||||||
|
|
||||||
|
## C++
|
||||||
|
*.c text
|
||||||
|
*.cc text
|
||||||
|
*.cxx text
|
||||||
|
*.cpp text
|
||||||
|
*.c++ text
|
||||||
|
*.hpp text
|
||||||
|
*.h text
|
||||||
|
*.h++ text
|
||||||
|
*.hh text
|
||||||
|
|
||||||
|
|
||||||
|
## For documentation
|
||||||
|
|
||||||
|
# Documents
|
||||||
|
*.doc diff=astextplain
|
||||||
|
*.DOC diff=astextplain
|
||||||
|
*.docx diff=astextplain
|
||||||
|
*.DOCX diff=astextplain
|
||||||
|
*.dot diff=astextplain
|
||||||
|
*.DOT diff=astextplain
|
||||||
|
*.pdf diff=astextplain
|
||||||
|
*.PDF diff=astextplain
|
||||||
|
*.rtf diff=astextplain
|
||||||
|
*.RTF diff=astextplain
|
||||||
|
|
||||||
|
## DOCUMENTATION
|
||||||
|
*.markdown text
|
||||||
|
*.md text
|
||||||
|
*.mdwn text
|
||||||
|
*.mdown text
|
||||||
|
*.mkd text
|
||||||
|
*.mkdn text
|
||||||
|
*.mdtxt text
|
||||||
|
*.mdtext text
|
||||||
|
*.txt text
|
||||||
|
AUTHORS text
|
||||||
|
CHANGELOG text
|
||||||
|
CHANGES text
|
||||||
|
CONTRIBUTING text
|
||||||
|
COPYING text
|
||||||
|
copyright text
|
||||||
|
*COPYRIGHT* text
|
||||||
|
INSTALL text
|
||||||
|
license text
|
||||||
|
LICENSE text
|
||||||
|
NEWS text
|
||||||
|
readme text
|
||||||
|
*README* text
|
||||||
|
TODO text
|
||||||
|
|
||||||
|
## GRAPHICS
|
||||||
|
*.ai binary
|
||||||
|
*.bmp binary
|
||||||
|
*.eps binary
|
||||||
|
*.gif binary
|
||||||
|
*.ico binary
|
||||||
|
*.jng binary
|
||||||
|
*.jp2 binary
|
||||||
|
*.jpg binary
|
||||||
|
*.jpeg binary
|
||||||
|
*.jpx binary
|
||||||
|
*.jxr binary
|
||||||
|
*.pdf binary
|
||||||
|
*.png binary
|
||||||
|
*.psb binary
|
||||||
|
*.psd binary
|
||||||
|
*.svg text
|
||||||
|
*.svgz binary
|
||||||
|
*.tif binary
|
||||||
|
*.tiff binary
|
||||||
|
*.wbmp binary
|
||||||
|
*.webp binary
|
||||||
|
|
||||||
|
|
||||||
|
## ARCHIVES
|
||||||
|
*.7z binary
|
||||||
|
*.gz binary
|
||||||
|
*.jar binary
|
||||||
|
*.rar binary
|
||||||
|
*.tar binary
|
||||||
|
*.zip binary
|
||||||
|
|
||||||
|
## EXECUTABLES
|
||||||
|
*.exe binary
|
||||||
|
*.pyc binary
|
||||||
4
.github/README.md
vendored
4
.github/README.md
vendored
@@ -4,7 +4,9 @@
|
|||||||
|
|
||||||
## Anticheat Module
|
## Anticheat Module
|
||||||
|
|
||||||
- Latest build status with AzerothCore: [](https://github.com/azerothcore/mod-anticheat)
|
- Latest build status with AzerothCore:
|
||||||
|
|
||||||
|
[](https://github.com/azerothcore/mod-anticheat)
|
||||||
|
|
||||||
This is a port of the PassiveAnticheat Script from lordpsyan's repo to [AzerothCore](http://www.azerothcore.org)
|
This is a port of the PassiveAnticheat Script from lordpsyan's repo to [AzerothCore](http://www.azerothcore.org)
|
||||||
|
|
||||||
|
|||||||
19
.github/workflows/core_codestyle.yml
vendored
Normal file
19
.github/workflows/core_codestyle.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
name: Codestyle Checks
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-codestyle:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
name: Check Codestyling
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Check Codestyling
|
||||||
|
run: source ./apps/ci/ci-codestyle.sh
|
||||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2022 AzerothCore
|
Copyright (c) 2023 AzerothCore
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
0
apps/.gitkeep
Normal file
0
apps/.gitkeep
Normal file
0
apps/ci/.gitkeep
Normal file
0
apps/ci/.gitkeep
Normal file
40
apps/ci/ci-codestyle.sh
Normal file
40
apps/ci/ci-codestyle.sh
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Codestyle check script:"
|
||||||
|
echo
|
||||||
|
|
||||||
|
declare -A singleLineRegexChecks=(
|
||||||
|
["LOG_.+GetCounter"]="Use ObjectGuid::ToString().c_str() method instead of ObjectGuid::GetCounter() when logging. Check the lines above"
|
||||||
|
["[[:blank:]]$"]="Remove whitespace at the end of the lines above"
|
||||||
|
["\t"]="Replace tabs with 4 spaces in the lines above"
|
||||||
|
)
|
||||||
|
|
||||||
|
for check in ${!singleLineRegexChecks[@]}; do
|
||||||
|
echo " Checking RegEx: '${check}'"
|
||||||
|
|
||||||
|
if grep -P -r -I -n ${check} src; then
|
||||||
|
echo
|
||||||
|
echo "${singleLineRegexChecks[$check]}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
declare -A multiLineRegexChecks=(
|
||||||
|
["LOG_[^;]+GetCounter"]="Use ObjectGuid::ToString().c_str() method instead of ObjectGuid::GetCounter() when logging. Check the lines above"
|
||||||
|
["\n\n\n"]="Multiple blank lines detected, keep only one. Check the files above"
|
||||||
|
)
|
||||||
|
|
||||||
|
for check in ${!multiLineRegexChecks[@]}; do
|
||||||
|
echo " Checking RegEx: '${check}'"
|
||||||
|
|
||||||
|
if grep -Pzo -r -I ${check} src; then
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo "${multiLineRegexChecks[$check]}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Everything looks good"
|
||||||
0
conf/.gitkeep
Normal file
0
conf/.gitkeep
Normal file
@@ -1,12 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
## CUSTOM SQL - Important file used by the db_assembler.sh
|
|
||||||
## Keep only the required variables (base sql files or updates, depending on the DB)
|
|
||||||
|
|
||||||
|
|
||||||
## BASE SQL
|
|
||||||
|
|
||||||
DB_CHARACTERS_CUSTOM_PATHS+=(
|
|
||||||
"$MOD_ANTICHEAT_ROOT/sql/characters/base/"
|
|
||||||
)
|
|
||||||
|
|
||||||
0
data/.gitkeep
Normal file
0
data/.gitkeep
Normal file
47
data/sql/db-characters/base/charactersdb_anticheat.sql
Normal file
47
data/sql/db-characters/base/charactersdb_anticheat.sql
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
DROP TABLE IF EXISTS `daily_players_reports`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `daily_players_reports` (
|
||||||
|
`guid` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`creation_time` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`average` float NOT NULL DEFAULT '0',
|
||||||
|
`total_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`speed_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`fly_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`jump_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`waterwalk_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`teleportplane_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`climb_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`teleport_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`ignorecontrol_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`zaxis_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`antiswim_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`gravity_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`antiknockback_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`no_fall_damage_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`op_ack_hack_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`counter_measures_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
PRIMARY KEY (`guid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `players_reports_status`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `players_reports_status` (
|
||||||
|
`guid` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`creation_time` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`average` float NOT NULL DEFAULT '0',
|
||||||
|
`total_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`speed_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`fly_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`jump_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`waterwalk_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`teleportplane_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`climb_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`teleport_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`ignorecontrol_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`zaxis_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`antiswim_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`gravity_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`antiknockback_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`no_fall_damage_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`op_ack_hack_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`counter_measures_reports` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
PRIMARY KEY (`guid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
0
data/sql/db-characters/updates/.gitkeep
Normal file
0
data/sql/db-characters/updates/.gitkeep
Normal file
@@ -1,43 +0,0 @@
|
|||||||
DROP TABLE IF EXISTS `daily_players_reports`;
|
|
||||||
CREATE TABLE IF NOT EXISTS `daily_players_reports` (
|
|
||||||
`guid` int unsigned NOT NULL DEFAULT 0,
|
|
||||||
`creation_time` int unsigned NOT NULL DEFAULT 0,
|
|
||||||
`average` float NOT NULL DEFAULT 0,
|
|
||||||
`total_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`speed_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`fly_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`jump_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`waterwalk_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`teleportplane_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`climb_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`teleport_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`ignorecontrol_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`zaxis_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`antiswim_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`gravity_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`antiknockback_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`no_fall_damage_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
PRIMARY KEY (`guid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `players_reports_status`;
|
|
||||||
CREATE TABLE IF NOT EXISTS `players_reports_status` (
|
|
||||||
`guid` int unsigned NOT NULL DEFAULT 0,
|
|
||||||
`creation_time` int unsigned NOT NULL DEFAULT 0,
|
|
||||||
`average` float NOT NULL DEFAULT 0,
|
|
||||||
`total_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`speed_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`fly_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`jump_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`waterwalk_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`teleportplane_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`climb_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`teleport_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`ignorecontrol_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`zaxis_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`antiswim_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`gravity_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`antiknockback_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
`no_fall_damage_reports` bigint unsigned NOT NULL DEFAULT 0,
|
|
||||||
PRIMARY KEY (`guid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
-- run on character db
|
|
||||||
|
|
||||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
|
||||||
DELIMITER //
|
|
||||||
CREATE PROCEDURE updatemodanticheatdb()
|
|
||||||
proc:BEGIN
|
|
||||||
SELECT COUNT(*) INTO @COLEXISTS
|
|
||||||
FROM information_schema.COLUMNS
|
|
||||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'daily_players_reports' AND COLUMN_NAME = 'no_fall_damage_reports';
|
|
||||||
IF @COLEXISTS = 1 THEN LEAVE proc; END IF;
|
|
||||||
START TRANSACTION;
|
|
||||||
|
|
||||||
ALTER TABLE `daily_players_reports`
|
|
||||||
ADD COLUMN `no_fall_damage_reports` BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER `antiknockback_reports`;
|
|
||||||
|
|
||||||
END //
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
||||||
CALL updatemodanticheatdb();
|
|
||||||
|
|
||||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
|
||||||
DELIMITER //
|
|
||||||
CREATE PROCEDURE updatemodanticheatdb()
|
|
||||||
proc:BEGIN
|
|
||||||
SELECT COUNT(*) INTO @COLEXISTS
|
|
||||||
FROM information_schema.COLUMNS
|
|
||||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'players_reports_status' AND COLUMN_NAME = 'no_fall_damage_reports';
|
|
||||||
IF @COLEXISTS = 1 THEN LEAVE proc; END IF;
|
|
||||||
START TRANSACTION;
|
|
||||||
|
|
||||||
ALTER TABLE `players_reports_status`
|
|
||||||
ADD COLUMN `no_fall_damage_reports` BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER `antiknockback_reports`;
|
|
||||||
|
|
||||||
END //
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
||||||
CALL updatemodanticheatdb();
|
|
||||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
-- run on Characters DB
|
|
||||||
|
|
||||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
|
||||||
DELIMITER //
|
|
||||||
CREATE PROCEDURE updatemodanticheatdb()
|
|
||||||
proc:BEGIN
|
|
||||||
SELECT COUNT(*) INTO @COLEXISTS
|
|
||||||
FROM information_schema.COLUMNS
|
|
||||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'daily_players_reports' AND COLUMN_NAME = 'op_ack_hack_reports';
|
|
||||||
IF @COLEXISTS = 1 THEN LEAVE proc; END IF;
|
|
||||||
START TRANSACTION;
|
|
||||||
|
|
||||||
ALTER TABLE `daily_players_reports`
|
|
||||||
ADD COLUMN `op_ack_hack_reports` BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER `no_fall_damage_reports`;
|
|
||||||
|
|
||||||
END //
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
||||||
CALL updatemodanticheatdb();
|
|
||||||
|
|
||||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
|
||||||
DELIMITER //
|
|
||||||
CREATE PROCEDURE updatemodanticheatdb()
|
|
||||||
proc:BEGIN
|
|
||||||
SELECT COUNT(*) INTO @COLEXISTS
|
|
||||||
FROM information_schema.COLUMNS
|
|
||||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'players_reports_status' AND COLUMN_NAME = 'op_ack_hack_reports';
|
|
||||||
IF @COLEXISTS = 1 THEN LEAVE proc; END IF;
|
|
||||||
START TRANSACTION;
|
|
||||||
|
|
||||||
ALTER TABLE `players_reports_status`
|
|
||||||
ADD COLUMN `op_ack_hack_reports` BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER `no_fall_damage_reports`;
|
|
||||||
|
|
||||||
END //
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
||||||
CALL updatemodanticheatdb();
|
|
||||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
-- run on Characters DB
|
|
||||||
|
|
||||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
|
||||||
DELIMITER //
|
|
||||||
CREATE PROCEDURE updatemodanticheatdb()
|
|
||||||
proc:BEGIN
|
|
||||||
SELECT COUNT(*) INTO @COLEXISTS
|
|
||||||
FROM information_schema.COLUMNS
|
|
||||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'daily_players_reports' AND COLUMN_NAME = 'counter_measures_reports';
|
|
||||||
IF @COLEXISTS = 1 THEN LEAVE proc; END IF;
|
|
||||||
START TRANSACTION;
|
|
||||||
|
|
||||||
ALTER TABLE `daily_players_reports`
|
|
||||||
ADD COLUMN `counter_measures_reports` BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER `op_ack_hack_reports`;
|
|
||||||
|
|
||||||
END //
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
||||||
CALL updatemodanticheatdb();
|
|
||||||
|
|
||||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
|
||||||
DELIMITER //
|
|
||||||
CREATE PROCEDURE updatemodanticheatdb()
|
|
||||||
proc:BEGIN
|
|
||||||
SELECT COUNT(*) INTO @COLEXISTS
|
|
||||||
FROM information_schema.COLUMNS
|
|
||||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'players_reports_status' AND COLUMN_NAME = 'counter_measures_reports';
|
|
||||||
IF @COLEXISTS = 1 THEN LEAVE proc; END IF;
|
|
||||||
START TRANSACTION;
|
|
||||||
|
|
||||||
ALTER TABLE `players_reports_status`
|
|
||||||
ADD COLUMN `counter_measures_reports` BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER `op_ack_hack_reports`;
|
|
||||||
|
|
||||||
END //
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
||||||
CALL updatemodanticheatdb();
|
|
||||||
DROP PROCEDURE IF EXISTS `updatemodanticheatdb`;
|
|
||||||
10
include.sh
10
include.sh
@@ -1,10 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
## GETS THE CURRENT MODULE ROOT DIRECTORY
|
|
||||||
MOD_ANTICHEAT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )/" && pwd )"
|
|
||||||
|
|
||||||
source "$MOD_ANTICHEAT_ROOT/conf/conf.sh.dist"
|
|
||||||
|
|
||||||
if [ -f "$MOD_ANTICHEAT_ROOT/conf/conf.sh" ]; then
|
|
||||||
source "$MOD_ANTICHEAT_ROOT/conf/conf.sh"
|
|
||||||
fi
|
|
||||||
|
|||||||
Reference in New Issue
Block a user