Skip to content

Commit

Permalink
added: species whitelist (#822)
Browse files Browse the repository at this point in the history
<!-- Пишите **НИЖЕ** заголовков и **ВЫШЕ** комментариев, иначе что то
может пойти не так. -->
<!-- Вы можете прочитать Contributing.MD, если хотите узнать больше. -->

## Что этот PR делает
Добавляем ксеномодерацию по приказу генерала Гавса.
<!-- Вкратце опишите изменения, которые вносите. -->
<!-- Опишите **все** изменения, так как противное может сказаться на
рассмотрении этого PR'а! -->
<!-- Если вы исправляете Issue, добавьте "Fixes #1234" (где 1234 - номер
Issue) где-нибудь в описании PR'а. Это автоматически закроет Issue после
принятия PR'а. -->

## Почему это хорошо для игры

<!-- Опишите, почему, по вашему, следует добавить эти изменения в игру.
-->

## Изображения изменений
<!-- Если вы не меняли карту или спрайты, можете опустить эту секцию.
Если хотите, можете вставить видео. -->

## Тестирование
<!-- Как вы тестировали свой PR, если делали это вовсе? -->

## Changelog

:cl:
add: Добавлена возможность включить на сервере ксеномодерацию. (Пока что
ксеномодерация отключена)
/:cl:

<!-- Оба :cl:'а должны быть на месте, что-бы чейнджлог работал! Вы
можете написать свой ник справа от первого :cl:, если хотите. Иначе
будет использован ваш ник на ГитХабе. -->
<!-- Вы можете использовать несколько записей с одинаковым префиксом
(Они используются только для иконки в игре) и удалить ненужные. Помните,
что чейнджлог должен быть понятен обычным игроком. -->
<!-- Если чейнджлог не влияет на игроков(например, это рефактор), вы
можете исключить всю секцию. -->
  • Loading branch information
Legendaxe authored Dec 6, 2023
1 parent 6726275 commit 6c281df
Show file tree
Hide file tree
Showing 10 changed files with 79 additions and 4 deletions.
1 change: 1 addition & 0 deletions SQL/paradise_schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ CREATE TABLE `player` (
`server_region` VARCHAR(32) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
`muted_adminsounds_ckeys` MEDIUMTEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
`viewrange` VARCHAR(5) NOT NULL DEFAULT '19x15' COLLATE 'utf8mb4_general_ci',
`species_whitelist` LONGTEXT COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ckey` (`ckey`),
KEY `lastseen` (`lastseen`),
Expand Down
4 changes: 4 additions & 0 deletions SQL/updates220/53.220.5-53.220.6.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Updating DB from 53.220.5 to 53.220.6
# Adds species whitelist ~legendaxe

ALTER TABLE `player` ADD `species_whitelist` LONGTEXT COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '["human"]';
2 changes: 1 addition & 1 deletion code/__DEFINES/misc_defines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@
#define INVESTIGATE_BOMB "bombs"

// The SQL version required by this version of the code
#define SQL_VERSION 532205 // SS220 EDIT
#define SQL_VERSION 532206 // SS220 EDIT

// Vending machine stuff
#define CAT_NORMAL 1
Expand Down
15 changes: 13 additions & 2 deletions code/game/jobs/whitelist.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,20 @@
if(NOT_SELECTABLE in S.species_traits)
return FALSE

// SS220 EDIT START

// Yes if admin
if(check_rights(R_ADMIN, FALSE))
return TRUE
//if(check_rights(R_ADMIN, FALSE))
// return TRUE

if(GLOB.configuration.species_whitelist.species_whitelist_enabled)
if(!M.client?.prefs?.species_whitelist)
return FALSE

if(!(species in M.client.prefs.species_whitelist))
return FALSE

// SS220 EDIT END

// No if species is blacklisted
if(S.blacklisted)
Expand Down
8 changes: 7 additions & 1 deletion config/example/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ ipc_screens = [
# Enable/disable the database on a whole
sql_enabled = false
# SQL version. If this is a mismatch, round start will be delayed
sql_version = 532205
sql_version = 532206
# SQL server address. Can be an IP or DNS name
sql_address = "127.0.0.1"
# SQL server port
Expand Down Expand Up @@ -895,3 +895,9 @@ ffmpeg_cpuaffinity = ""
force_discord_verification = false

################################################################

[species_whitelist_configuration]

species_whitelist_enabled = false

################################################################
1 change: 1 addition & 0 deletions modular_ss220/modular_ss220.dme
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
#include "mecha_skins/mecha_skins.dme"
#include "queue/_queue.dme"
#include "phrases/_phrases.dme"
#include "species_whitelist/_species_whitelist.dme"

// --- PRIME --- //
// #define MODPACK_MAIN_ONLY
Expand Down
4 changes: 4 additions & 0 deletions modular_ss220/species_whitelist/_species_whitelist.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/datum/modpack/discord_link
name = "Вайтлист на расы"
desc = "Добавление вайтлиста на расы"
author = "legendaxe"
4 changes: 4 additions & 0 deletions modular_ss220/species_whitelist/_species_whitelist.dme
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#include "_species_whitelist.dm"

#include "code/species_whitelist_configuration.dm"
#include "code/species_whitelist_preferences.dm"
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/datum/server_configuration
/// Holder for the gateway configuration datum
var/datum/configuration_section/species_whitelist_configuration/species_whitelist

/datum/server_configuration/load_all_sections()
. = ..()
species_whitelist = new()
safe_load(species_whitelist, "species_whitelist_configuration")

/datum/configuration_section/species_whitelist_configuration
var/species_whitelist_enabled = FALSE

/datum/configuration_section/species_whitelist_configuration/load_data(list/data)
CONFIG_LOAD_BOOL(species_whitelist_enabled, data["species_whitelist_enabled"])
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/datum/preferences
var/species_whitelist

/datum/preferences/proc/get_species_whitelist()
. = TRUE

if(species_whitelist)
return

var/datum/db_query/preferences_query = SSdbcore.NewQuery("SELECT species_whitelist FROM player WHERE ckey=:ckey", list(
"ckey" = parent.ckey
))

if(!preferences_query.warn_execute())
qdel(preferences_query)
return FALSE

while(preferences_query.NextRow())
var/species_whitelist_json = preferences_query.item[1]
if(species_whitelist_json)
species_whitelist = json_decode(preferences_query.item[1])

qdel(preferences_query)

/datum/preferences/load_preferences(datum/db_query/query)
. = ..()
if(!.)
return

return get_species_whitelist()

0 comments on commit 6c281df

Please sign in to comment.