-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 5fc1f87
Showing
40 changed files
with
5,030 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python: | ||
import os | ||
|
||
# Here only one sdk should be available to generate only one executable in the end, | ||
# as multi-sdk loading isn't supported out of the box by metamod, and would require specifying the full path in the vdf | ||
# which in the end would ruin the multi-platform (unix, win etc) loading by metamod as it won't be able to append platform specific extension | ||
# so just fall back to the single binary. | ||
# Multi-sdk solutions should be manually loaded with a custom plugin loader (examples being sourcemod, stripper:source) | ||
for sdk_name in MMSPlugin.sdks: | ||
for cxx in MMSPlugin.all_targets: | ||
sdk = MMSPlugin.sdks[sdk_name] | ||
|
||
if not cxx.target.arch in sdk.platformSpec[cxx.target.platform]: | ||
continue | ||
|
||
binary = MMSPlugin.HL2Library(builder, cxx, MMSPlugin.plugin_name, sdk) | ||
|
||
binary.compiler.cxxincludes += [ | ||
os.path.join(builder.sourcePath, 'include'), | ||
] | ||
|
||
binary.sources += [ | ||
'levels_ranks.cpp', | ||
os.path.join('sdk', 'schemasystem.cpp'), | ||
os.path.join('sdk', 'module.cpp'), | ||
os.path.join('sdk', 'memaddr.cpp') | ||
] | ||
|
||
if sdk_name in ['dota', 'cs2']: | ||
binary.sources += [ | ||
os.path.join(sdk.path, 'tier1', 'convar.cpp'), | ||
os.path.join(sdk.path, 'tier1', 'generichash.cpp'), | ||
os.path.join(sdk.path, 'entity2', 'entitysystem.cpp'), | ||
os.path.join(sdk.path, 'public', 'tier0', 'memoverride.cpp') | ||
] | ||
|
||
if cxx.target.arch == 'x86': | ||
binary.sources += ['sourcehook/sourcehook_hookmangen.cpp'] | ||
nodes = builder.Add(binary) | ||
MMSPlugin.binaries += [nodes] | ||
|
||
break |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# vim: set ts=2 sw=2 tw=99 noet ft=python: | ||
import os | ||
|
||
builder.SetBuildFolder('package') | ||
|
||
metamod_folder = builder.AddFolder(os.path.join('addons', 'metamod')) | ||
bin_folder_path = os.path.join('addons', MMSPlugin.plugin_name) | ||
bin_folder = builder.AddFolder(bin_folder_path) | ||
|
||
for cxx in MMSPlugin.all_targets: | ||
if cxx.target.arch == 'x86_64': | ||
bin64_folder_path = os.path.join('addons', MMSPlugin.plugin_name) | ||
bin64_folder = builder.AddFolder(bin64_folder_path) | ||
|
||
pdb_list = [] | ||
for task in MMSPlugin.binaries: | ||
# This hardly assumes there's only 1 targetted platform and would be overwritten | ||
# with whatever comes last if multiple are used! | ||
with open(os.path.join(builder.buildPath, MMSPlugin.plugin_name + '.vdf'), 'w') as fp: | ||
fp.write('"Metamod Plugin"\n') | ||
fp.write('{\n') | ||
fp.write(f'\t"alias"\t"{MMSPlugin.plugin_alias}"\n') | ||
if task.target.arch == 'x86_64': | ||
fp.write(f'\t"file"\t"{os.path.join(bin64_folder_path, MMSPlugin.plugin_name)}"\n') | ||
else: | ||
fp.write(f'\t"file"\t"{os.path.join(bin_folder_path, MMSPlugin.plugin_name)}"\n') | ||
fp.write('}\n') | ||
|
||
if task.target.arch == 'x86_64': | ||
builder.AddCopy(task.binary, bin64_folder) | ||
else: | ||
builder.AddCopy(task.binary, bin_folder) | ||
|
||
if task.debug: | ||
pdb_list.append(task.debug) | ||
|
||
builder.AddCopy(os.path.join(builder.buildPath, MMSPlugin.plugin_name + '.vdf'), metamod_folder) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,164 @@ | ||
"LR_Settings" | ||
{ | ||
"MainSettings" | ||
{ | ||
////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
// | ||
// (***) Наименование таблицы в базе данных (только латиница и не больше 32 символов). | ||
// Если вы имеете несколько серверов в проекте, но хотите, чтобы у каждого сервера была собственная статистика, то меняйте название таблицы на любое другое. | ||
// Необходим для тех случаев, когда вы храните разные статистики на одной базе данных. | ||
// | ||
////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
"lr_table" "lvl_base" | ||
|
||
////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
// | ||
// Какой Заголовок у меню плагина должен быть, предназначено для более продвинутых проектов | ||
// которые любят кастомизировать свои сервера. | ||
// | ||
// ВНИМАНИЕ: все префиксы в чате (Пример: [LR]), вы также можете поменять в файле перевода. | ||
// | ||
////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
"lr_plugin_title" "Levels Ranks" | ||
|
||
// Минимальное количество игроков, необходимое для выдачи очков опыта. | ||
// Количество игроков проверяется при старте раунда. | ||
"lr_minplayers_count" "4" | ||
|
||
// Включить возможность игрокам сбросить свою статистику в меню "Статистика"? [ 0 - нет, 1 - да ]. | ||
"lr_show_resetmystats" "1" | ||
|
||
////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
// | ||
// Как показывать сообщения игроку о получении очков опыта? | ||
// | ||
// 0 - не показывать | ||
// 1 - показывать за каждое действие игрока | ||
// 2 - показывать в конце раунда суммарное изменение | ||
// | ||
////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
"lr_show_usualmessage" "1" | ||
|
||
// Количество выводимых игроков при вводе команды !top и !toptime | ||
"lr_top_count" "5" | ||
|
||
// Показывать ли сообщения от плагина, при каждом возрождении? [ 0 - нет, 1 - да ] | ||
"lr_show_spawnmessage" "1" | ||
|
||
// Показывать ли сообщения всем о том, что кто-то поднял свое звание? [ 0 - нет, 1 - да ] | ||
"lr_show_levelup_message" "1" | ||
|
||
// Показывать ли сообщения всем о том, что кто-то потерял свое звание? [ 0 - нет, 1 - да ] | ||
"lr_show_leveldown_message" "1" | ||
|
||
// Показывать ли всем сообщение о том, какое место занимает игрок, после того, как он написал команду rank? [ 0 - нет, 1 - да ] | ||
"lr_show_rankmessage" "1" | ||
|
||
// Показывать ли в меню статистики пункт "Все звания"? [ 0 - нет, 1 - да ] | ||
"lr_show_ranklist" "1" | ||
|
||
// Разрешить ли игрокам получать/терять очки опыта, когда раунд завершился? [ 0 - нет, 1 - да ] | ||
"lr_giveexp_roundend" "1" | ||
|
||
// Выдавать ли игрокам очки опыта во время разминки? [ 0 - да, 1 - нет ] | ||
"lr_block_warmup" "1" | ||
|
||
// Считать ли убийство товарищей по команде за TeamKill? [ 0 - да, 1 - нет (нужно для серверов с режимом "Все против Всех") ] | ||
"lr_allagainst_all" "0" | ||
|
||
// Сколько игрок должен отсутствовать дней, чтобы его скрыло из статистики? | ||
// Если вы хотите отключить автоматическое скрытие, поставьте значение 0. | ||
"lr_cleandb_days" "30" | ||
|
||
////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
// | ||
// Как сохранять данные игрока? | ||
// | ||
// 0 - только при выходе из сервера | ||
// Рекомендется для снижения нагрузки на WEB-хостинг при большом арсенале игровых серверов или игровых событий | ||
// | ||
// 1 - при выходе из сервера, при повышении/понижении ранга, в конце раунда если живой или при смерти | ||
// Рекомендется для получения актуальных данных | ||
// | ||
////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
"lr_db_savedataplayer_mode" "1" | ||
|
||
// (***) Записывать ли в MySQL базу 4-ёх байтные символы (применение кодировки utf8mb4) из никнеймов игроков? [ 0 - будет использоваться utf8, 1 - да ] | ||
// Некоторые WEB-хостинги не предоставляют поддержку кодировки utf8mb4 для MySQL баз или имеют с ней проблемы. | ||
"lr_db_allow_utf8mb4" "1" | ||
|
||
// (***) Тип кодировки в таблице. | ||
// 0 - utf8(mb4)_general_ci . | ||
// 1 - utf8(mb4)_unicode_ci (Рекомендуется для MySQL 8.0+). | ||
"lr_db_character_type" "0" | ||
|
||
|
||
|
||
// SOON... | ||
// Какие флаги должен иметь администратор, чтобы иметь доступ к Панели Администратора? | ||
// "lr_flag_adminmenu" "z" | ||
// Сколько секунд должно пройти, чтобы можно было повторно сбросить свою статистику? | ||
// "lr_resetmystats_cooldown" "86400" | ||
// Скрывать ли игрока в статистике, если он был забанен? [ 0 - нет, 1 - да ] | ||
// "lr_cleandb_banclient" "1" | ||
} | ||
"Ranks" | ||
{ | ||
"rank_1" "0" //НЕ ТРОГАТЬ! | ||
"rank_2" "10" // сколько очков опыта требуется для достижения ранга | ||
"rank_3" "25" | ||
"rank_4" "50" | ||
"rank_5" "75" | ||
"rank_6" "100" | ||
"rank_7" "150" | ||
"rank_8" "200" | ||
"rank_9" "300" | ||
"rank_10" "500" | ||
"rank_11" "750" | ||
"rank_12" "1000" | ||
"rank_13" "1500" | ||
"rank_14" "2000" | ||
"rank_15" "3000" | ||
"rank_16" "5000" | ||
"rank_17" "7500" | ||
"rank_18" "10000" | ||
} | ||
"Points" | ||
{ | ||
// Для отключения выдачи очков опыта за конкретное действие, напишите 0 в нужном вам параметре | ||
// Сколько очков опыта игрок: | ||
"lr_kill" "5" // получит за убийство | ||
"lr_kill_is_bot" "5" // получит за убийство бота | ||
"lr_death" "5" // потеряет за свою смерть | ||
"lr_death_is_bot" "5" // потеряет за свою смерть от бота | ||
"lr_headshot" "1" // получит за убийств в голову | ||
"lr_assist" "1" // получит за помощь в убийстве | ||
"lr_suicide" "6" // потеряет за суицид | ||
"lr_teamkill" "6" // потеряет за убийство товарища по команде | ||
"lr_winround" "2" // получит за победу в раунде | ||
"lr_loseround" "2" // потеряет за проигрыш в раунде | ||
"lr_mvpround" "3" // получит за лучшую результативность в раунде (MVP) | ||
"lr_bombplanted" "2" // получит за установку бомбы | ||
"lr_bombdefused" "2" // получит за разминирование бомбы | ||
"lr_bombdropped" "1" // потеряет за потерю бомбы | ||
"lr_bombpickup" "1" // получит за поднятие бомбы | ||
"lr_hostagekilled" "4" // потеряет за убийство заложника | ||
"lr_hostagerescued" "3" // получит за спасение заложника | ||
} | ||
"Points_Bonuses" | ||
{ | ||
// Для отключения выдачи очков опыта за конкретное действие, напишите в кавычках 0 | ||
|
||
"lr_bonus_1" "2" // DoubleKill | ||
"lr_bonus_2" "3" // TripleKill | ||
"lr_bonus_3" "4" // Domination | ||
"lr_bonus_4" "5" // Rampage | ||
"lr_bonus_5" "6" // MegaKill | ||
"lr_bonus_6" "7" // Ownage | ||
"lr_bonus_7" "8" // UltraKill | ||
"lr_bonus_8" "9" // KillingSpree | ||
"lr_bonus_9" "10" // MonsterKill | ||
"lr_bonus_10" "11" // Unstoppable | ||
"lr_bonus_11" "12" // GodLike | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
# vim: set sts=2 ts=8 sw=2 tw=99 et: | ||
import sys | ||
try: | ||
from ambuild2 import run, util | ||
except: | ||
try: | ||
import ambuild | ||
sys.stderr.write('It looks like you have AMBuild 1 installed, but this project uses AMBuild 2.\n') | ||
sys.stderr.write('Upgrade to the latest version of AMBuild to continue.\n') | ||
except: | ||
sys.stderr.write('AMBuild must be installed to build this project.\n') | ||
sys.stderr.write('http://www.alliedmods.net/ambuild\n') | ||
sys.exit(1) | ||
|
||
# Hack to show a decent upgrade message, which wasn't done until 2.2. | ||
ambuild_version = getattr(run, 'CURRENT_API', '2.1') | ||
if ambuild_version.startswith('2.1'): | ||
sys.stderr.write("AMBuild 2.2 or higher is required; please update\n") | ||
sys.exit(1) | ||
|
||
parser = run.BuildParser(sourcePath=sys.path[0], api='2.2') | ||
parser.options.add_argument('-n', '--plugin-name', type=str, dest='plugin_name', default=None, | ||
help='Plugin name') | ||
parser.options.add_argument('-a', '--plugin-alias', type=str, dest='plugin_alias', default=None, | ||
help='Plugin alias') | ||
parser.options.add_argument('--hl2sdk-root', type=str, dest='hl2sdk_root', default=None, | ||
help='Root search folder for HL2SDKs') | ||
parser.options.add_argument('--mms_path', type=str, dest='mms_path', default=None, | ||
help='Metamod:Source source tree folder') | ||
parser.options.add_argument('--enable-debug', action='store_const', const='1', dest='debug', | ||
help='Enable debugging symbols') | ||
parser.options.add_argument('--enable-optimize', action='store_const', const='1', dest='opt', | ||
help='Enable optimization') | ||
parser.options.add_argument('-s', '--sdks', default='all', dest='sdks', | ||
help='Build against specified SDKs; valid args are "all", "present", or ' | ||
'comma-delimited list of engine names (default: "all")') | ||
parser.options.add_argument('--targets', type=str, dest='targets', default=None, | ||
help="Override the target architecture (use commas to separate multiple targets).") | ||
parser.Configure() |
Oops, something went wrong.