Иконка ресурса

Ultimate SteamID Protection - No passwords 1.0 R

MARSHAL

Участник
Сообщения
85
Реакции
71
  • Автор ресурса
  • #1
Пользователь MARSHAL разместил новый ресурс:

Ultimate SteamID Protection - No passwords - SteamID Protection - No passwords

Ultimate SteamID Protection - No passwords
Данный плагин предназначен для защиты от подмены SteamID игроков без паролей и работает в автоматическом режиме.

При 1ом заходе игрока в базу данных записываеться его SteamId + IP и генерируеться код (пример 169e6c1499556611ad9d9f168437a12).

Как работает плагин:
! = другой
#= нету

SteamID + IP +...

Узнать больше об этом ресурсе...
 

Акакий

Участник
Сообщения
59
Реакции
4
Я немного не понимаю смысла этого плагина.
Ну типо те читеры которые обходят баны, меняют стимид, то что им составит труда сменить и ип адрес вместе со стимидом и получается новый человек заходит на сервер
 

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
1. У большинства игроков динамический ip(меняется) и статический id(не меняется).
Т. е. такой плагин убьёт онлайн?
2. Читеры обходят бан сразу меняя id и ip. Даже если бы этот плагин не бил онлайн, пользы бы от него было ни много.
 

MARSHAL

Участник
Сообщения
85
Реакции
71
  • Автор ресурса
  • #4
1. У большинства игроков динамический ip(меняется) и статический id(не меняется).
Т. е. такой плагин убьёт онлайн?
2. Читеры обходят бан сразу меняя id и ip. Даже если бы этот плагин не бил онлайн, пользы бы от него было ни много.
Я вкурсе и у меня та же сиутация, c Африканскими странами особенно. Это плагин не для бана читеров, хотя впринципе можно пару штук сделать. А для того чтобы читер не ставил стимid других игроков.

Если смениться у игрока IP то его всё равно пустит так как у него совпадет стим и его личный код. Подробнее посмотри схему как что работает.
 

Акакий

Участник
Сообщения
59
Реакции
4
Я вкурсе и у меня та же сиутация, c Африканскими странами особенно. Это плагин не для бана читеров, хотя впринципе можно пару штук сделать. А для того чтобы читер не ставил стимid других игроков.

Если смениться у игрока IP то его всё равно пустит так как у него совпадет стим и его личный код. Подробнее посмотри схему как что работает.
Код куда-то записывает игроку ?
Или игрок перед входом должен его писать?
 

MARSHAL

Участник
Сообщения
85
Реакции
71
  • Автор ресурса
  • #6
Код записываеться игроку в maps, (по началу было в materials, но так сделали потому что на myarena.ru не было доступа к ним и переделали вот так вот, хотя лично все мы на VDS или дедиках не от арены, просто подумали для других) Игрок вообще ничего не должен делать, кроме как играть) на это и был рассчет, не хотелось никаких паролей и прочих штук чтобы игрок парился.
 

Акакий

Участник
Сообщения
59
Реакции
4
Код записываеться игроку в maps, (по началу было в materials, но так сделали потому что на myarena.ru не было доступа к ним и переделали вот так вот, хотя лично все мы на VDS или дедиках не от арены, просто подумали для других) Игрок вообще ничего не должен делать, кроме как играть) на это и был рассчет, не хотелось никаких паролей и прочих штук чтобы игрок парился.
Ааа, вот как, просто не понимал как сделали запись кода. тогда достаточно годная штука. А расширения необходимы для работы плагина? через них происходит запись?
 

MARSHAL

Участник
Сообщения
85
Реакции
71
  • Автор ресурса
  • #8
Ааа, вот как, просто не понимал как сделали запись кода. тогда достаточно годная штука. А расширения необходимы для работы плагина? через них происходит запись?
Да, вроде через них. Все если что ставить не надо, а надо выбрать одну под свою игру и ОС. Очень годная) просто люди сразу не поняли, у меня на других сайтах те же вопросы, просто наверно я не совсем понятно рассписал
 
Последнее редактирование:

Акакий

Участник
Сообщения
59
Реакции
4
Да, через них. Все если что ставить не надо, а надо выбрать одно под сво игру и ОС. Очень годная) просто люди сразу не поняли, у меня на других сайтах те же вопросы, просто наверно я не совсем понятно рассписал
Да не совсем понятен был смысл. но теперь все понятно мне, спасибо за разъяснение
 

MARSHAL

Участник
Сообщения
85
Реакции
71
  • Автор ресурса
  • #11
Очень даже интересно, попробуем в работе)
Если что пишите, мы тестили на 3 серверах (1 слотовый myarena, 1 vps от одного хоста, 1 dedicated soyoustart/ovh) тестировали на CS Source v90, но я уверен что на других играх тоже должен работать, если же нет пишите, исправим.
 

Boeing 767

заскамили мамонта ни за что, ни про что
Сообщения
524
Реакции
913
То же не удивил к сожалению, примерно такой же плагин писал Крузя года полтора назад мб и раньше, чтобы просто не играли больше чем с 1 акка на его сервере в тф2 вроде, если не ошибаюсь. Дальше если на клиенте sv_allowupload и cl_allowupload установлены 0 (он может и сам не знать об этом), то FNM_RequestFile (запрос сервера на скачку файла у клиента) , вернет FNM_OnFileDenied(отказ в доступе к файлам клиента) , и его кикнет , раньше когда у меня был сервер у некоторых игроков этот квар мог быть спокойно в 0 , и у меня не было доступа к файлам. Так же не всегда файл отправляется на клиент, не знаю с чем связанно, но у меня такое бывало. Поэтому это не особо надежный метод проверки принадлежит ли стим ид игроку по файлу, который может иногда просто не создастся или еще что-нибудь произойдет. Ну и в ксго не будет работать т.к загрузку файлов таким способом клиенту на ксго убрали . А свою "затычку "от спуферов , я почти доделал , разве что нужно все же найти нормальный способ загрузки любого файла куда-угодно в пределах игры. Можешь глянуть 37.230.228.43:27305 , на него только через connect могу зайти, в поиске почему-то нет , через часов 10 он выключится, тестовый брал, от спуфера на все 100% не защищает , но менять стим ид тяжелее, и сменить на конкретный стим ид нельзя , ну и работает вместе со старым эмулятором , что означает что онлайн не потеряется.
 
Последнее редактирование:

MARSHAL

Участник
Сообщения
85
Реакции
71
  • Автор ресурса
  • #13
То же не удивил к сожалению, примерно такой же плагин писал Крузя года полтора назад мб и раньше, чтобы просто не играли больше чем с 1 акка на его сервере в тф2 вроде, если не ошибаюсь.

Как ты хотел чтобы я тебя удивил тем что я писал до этого в другой теме и где ТЫ комментировал? XD
По поводу Крузи, он тоже в той теме писал и по своему плагину он ничего не сказал как и ты

Дальше если на клиенте sv_allowupload и cl_allowupload установлены 0 (он может и сам не знать об этом), то FNM_RequestFile (запрос сервера на скачку файла у клиента) , вернет FNM_OnFileDenied(отказ в доступе к файлам клиента) , и его кикнет , раньше когда у меня был сервер у некоторых игроков этот квар мог быть спокойно в 0 , и у меня не было доступа к файлам.
А на счет sv_allowupload "1" я бы проверил, да и это дело настроек самого сервера, если я скажем уберу file permissions на 0 то вуаля даже твой плагин не заработает. В общем это проверим и навсякий случай предупредим если будет блочить.

Так же не всегда файл отправляется на клиент, не знаю с чем связанно, но у меня такое бывало. Поэтому это не особо надежный метод проверки принадлежит ли стим ид игроку по файлу, который может иногда просто не создастся или еще что-нибудь произойдет.
Не совсем понял, ты говоришь о прошлом опыте или конкретно сейчас о нашем плагине?
Код у меня создавался 10 из 10, да и потом даже если это каким образом и выйдет то он всё равно будет действовать по схеме. То есть посчитает его новым юзером, впустит и впихнет код.

Ну и свою "затычку "от спуферов , я почти доделал , разве что нужно все же найти нормальный способ загрузки любого файла куда-угодно в пределах игры. Можешь глянуть 37.230.228.43:27305 , через часов 10 он выключится, тестовый брал, от спуфера на все 100% не защищает , но менять стим ид тяжелее, и сменить на конкретный стим ид нельзя , ну и работает вместе со старым эмулятором , что означает что онлайн не потеряется

Да я тебе верю) я не говорил что мой плагин прям панацея и всех вылечит, от спуффера ничего 100% не защитит, так сказал bitryk и я по его аргументам верю.
В любом случае закончишь свой плагин выложишь глянем. А или ты его же продавать собрался?)
 

Boeing 767

заскамили мамонта ни за что, ни про что
Сообщения
524
Реакции
913
Как ты хотел чтобы я тебя удивил тем что я писал до этого в другой теме и где ТЫ комментировал? XD
По поводу Крузи, он тоже в той теме писал и по своему плагину он ничего не сказал как и ты


А на счет sv_allowupload "1" я бы проверил, да и это дело настроек самого сервера, если я скажем уберу file permissions на 0 то вуаля даже твой плагин не заработает. В общем это проверим и навсякий случай предупредим если будет блочить.


Не совсем понял, ты говоришь о прошлом опыте или конкретно сейчас о нашем плагине?
Код у меня создавался 10 из 10, да и потом даже если это каким образом и выйдет то он всё равно будет действовать по схеме. То есть посчитает его новым юзером, впустит и впихнет код.



Да я тебе верю) я не говорил что мой плагин прям панацея и всех вылечит, от спуффера ничего 100% не защитит, так сказал bitryk и я по его аргументам верю.
В любом случае закончишь свой плагин выложишь глянем. А или ты его же продавать собрался?)
Ну насчет sv_allowupload , несмотря на начало sv_ , этот квар не FCVAR_REPLICATED (что означает что значение не синхронизируется с сервером, то есть может спокойно отличаться) , и может быть что на сервере sv_allowupload 1, а на клиенте sv_allowupload 0. О затычке , это только под продажу, т.к потратил время на реверс эмулятора, немного движка игры ну и на само написание со всеми тестами. Насчет способа загрузки файлов, я не думаю что он будет зависеть от чего-то.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #15
примерно такой же плагин писал Крузя года полтора назад мб и раньше
upload_2019-6-27_10-31-57.png

Уже почти два года прошло)

По поводу Крузи, он тоже в той теме писал и по своему плагину он ничего не сказал как и ты
Потому что задумка моего плагина была изначально другой:
чтобы просто не играли больше чем с 1 акка на его сервере в тф2

тестировали на CS Source v90, но я уверен что на других играх тоже должен работать
Когда я писал написанный Самолётом плагин от мультиакков, я его так же тестировал на нескольких играх, помимо TF2. Интереснее всего реагирует CS:GO.
Клиент просто дисконнектится с сервера автоматически, если загрузки с сервера разрешены.

Код записываеться игроку в maps, (по началу было в materials
Я в настройки в своём плагине выносил.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #17
Такое ощущение, будто плагин писался дилетантом.

C++:
g_sPath[] = "maps/%s.vmt"
Такое обычно выносят в явные константы.
C++:
stock const char g_sPath[] = "maps/%s.vmt";
---
C++:
#define CHECKER(%0) if(!IsClientInGame(%0) && IsFakeClient(%0)) return
Это вообще 10/10. Объясню, что здесь происходит:
  1. Компилятор преобразует вызов всех "магических" функций CHECKER(%0) в указанное выражение на стадии компиляции. Как итог, в плагин попадает код вида:
    C++:
    if (!IsClientInGame(iClient) && IsFakeClient(iClient)) return
  2. На стадии исполнения, срабатывают эти проверки. И дальнейшее развитие событий зависит от того, на сервере ли игрок или нет:
    • Если игрок на сервере - ничего не произойдёт. Выполнение не дойдёт даже до проверки, фейковый ли это игрок, ведь явно стоит операнд отрицания результата, из-за чего ожидается следующий результат (который приведён ниже).
    • Если игрок не на сервере - JIT честно попытается вызвать IsFakeClient(). И здесь выполнение плагина упадёт (и образуется запись в логах ошибок), поскольку игрока на сервере нет, а это так же проверяется самим SM.
Единственно верный фикс такого говнокода без особого вмешательства - изменение операнда && на ||. Скорее всего, автор плагина хотел именно его поставить, судя по отрицанию.
C++:
#define CHECKER(%0) if(!IsClientInGame(%0) || IsFakeClient(%0)) return
---
C++:
    ConVar cvar;
    cvar = CreateConVar("sm_url_contact", "yousite.org or contact", _, _, true);
    GetConVarString(cvar, SZF(g_sContact));
    delete cvar;
Те, кто начали недавно писать на SourcePawn (и, в частности, для SourceMod) явно спросят: "Что здесь не так?". Объясняю.
Указатель на консольную переменную не поддаётся удалению. Можете сами убедиться в документации касательно типов хендлов (англоязычный, оригинальный вариант).
upload_2019-6-27_10-58-5.png

(кто работал с движковым апи напрямую - знают, почему сделано так)
---
C++:
public void OnClientPostAdminCheck(int iClient){
    CHECKER(iClient);
    // ...
    RegAdminCmd("sm_purge", CmdPurgeUser, ADMFLAG_ROOT | ADMFLAG_RCON);
Это вообще побило все рекорды.
Сам SourceMod гарантирует, что игрок будет на сервере в момент вызова этого форварда. Проверка в том виде, в котором она присутствует в исходнике на данный момент, - лишена смысла. Да и вообще имеет смысл просто ручками написать проверку на фэйкового клиента, чем делать ещё один лишний вызов на "наличие на сервере и в игре".
А ещё регистрация команды в каллбеке, который вызывается по несколько раз, что приведёт к дублированию оной...
В общем, это уже не 10/10. Это уже 100/10.
Создание команды необходимо переместить в старт плагина.
---
C++:
public Action CmdPurgeUser(int iClient, int iArgs){
    char sBuffer[128];
    GetCmdArgString(SZF(sBuffer));
    ReplaceString(SZF(sBuffer), "\"", "");   

    char sQuery[128];
    FormatEx(SZF(sQuery), "DELETE FROM `ultimate_protect` WHERE `uid` = '%s'", sBuffer);
    if(!g_hDataBase) LogError("PurgeUser - Error");

    if(!SQL_FastQuery(g_hDataBase, sQuery)) LogError("PurgeUser - error");

    return Plugin_Continue;
}
Я, честно, хотел похвалить автора, увидев функцию ниже этой. Но нет. Он, видимо, не совсем понимает, как работать с базой, да и вообще...
C++:
    ReplaceString(SZF(sBuffer), "\"", "");
Снова 10/10. У объекта базы данных, есть функция, позволяющая делать тоже самое, и даже больше.
C++:
    if(!g_hDataBase) LogError("PurgeUser - Error");

    if(!SQL_FastQuery(g_hDataBase, sQuery)) LogError("PurgeUser - error");
И опять, 10/10. Вместо того, чтобы остановить попытку выполнения запроса, мы запишем в логи инфорамцию об ошибке, и всё равно попытаемся его произвести.
Лучше уж тогда хотя бы какой-нибудь return сделать. Или, если очень хочется, ThrowError().

А ещё есть ошибка с использованием SQL_FastQuery(). О ней - ниже.
---
C++:
    g_hDataBase = SQL_Connect("ultimate_protect", false, sError, 256);
    g_hDataBase.Driver.GetIdentifier(sID, sizeof(sID));
SQL_Connect() может (и вернёт) null в случае неудачи. Но зачем это проверять...

C++:
    SQL_LockDatabase(g_hDataBase);
    switch(sID[0]){
        case 'm': {
            if(!SQL_FastQuery(g_hDataBase, sMysqlTable)) LogError("ConnectDB - could not create table [mysql]");
        }
        case 's': {
            if(!SQL_FastQuery(g_hDataBase, sSqliteTable)) LogError("ConnectDB - could not create table [sqlite]");
        }
        default: LogError("Type database is invalid");
    }
    SQL_UnlockDatabase(g_hDataBase);
Помните, я хотел в функции выше похвалить автора плагина? Вот именно за блокировку базы. Честно, тут всё хорошо. Перед выполнением однопоточного запроса, нужно залочить базу во избежание ошибок. И тут это делается. А вот в удалении игрока из базы - нет.
Ну и опять, LogError() вместо остановки выполнения плагина. Тоже странный код.
Кодировку надо было, кстати, устанавливать перед созданием таблиц. Это влияет на кодировку самих колонок.
---
C++:
    FormatEx(SZF(sQuery), "INSERT INTO `ultimate_protect` (`addr`, `uid`, `code`) VALUES (%d, '%s', '%s')", g_iUIP[iClient], g_sUID[iClient], sCode);
    if(!SQL_FastQuery(g_hDataBase, sQuery)) LogError("CreateUser - error");
Та же ошибка, что и в функции выше: нет блокировки базы.
---
C++:
    FormatEx(SZF(sQuery), "SELECT `addr`, `code` FROM `ultimate_protect` WHERE `uid` = '%s'", g_sUID[iClient]);
    g_hDataBase.Query(SQL_UserSearch, sQuery, iClient);
На самом деле, ошибки тут нет (почти: iClient лучше в UserID конвертировать между функциями, которые вызываются не сразу). Я этот код записал в пост, чтобы попытаться объяснить, зачем нужно блокировать базу перед выполнением запросов через SQL_FastQuery().
SourceMod предоставляет "прозрачную" обёртку для работой с базами данных любых типов, но при этом просит соблюдать правила работы с ними. Одним из таких - правило о однопоточности. Тот же MySQL драйвер не умеет выполнять несколько запросов к одному серверу одновременно из-за вполне очевидных (надеюсь) причин.
Перед выполнением любого запроса в другом потоке, SourceMod блокирует базу данных, а после выполнения - разблокирует. Аналогично должен работать и однопоточный код, работающий с SQL_FastQuery(), SQL_Execute() или SQL_Query().
Зачем блокировать базу данных? Смоделируем ситуацию:
  1. SourceMod начал выполнять наш запрос в другом потоке. База данных "заблокирована".
  2. Вызывается любой наш метод, который работает с базой данных так же в один поток с игровым тиком. База всё ещё заблокирована.
  3. Мы пытаемся сделать запрос без блокировки.
Что произойдёт? DBI честно попытается выполнить запрос, но из-за отсутствия попытки "заблокировать" базу (объяснение, зачем это нужно - ниже) - сервер упадёт, поскольку в сокет, во время получения ответа, может пойти и наш запрос, из-за чего всё смешается и сервер упадёт.
Когда мы пытаемся "заблокировать" базу:
  • Если база уже "заблокирована", SourceMod приостанавливает выполнение нашего кода, пока база не будет "разблокирована". Как только это произойдёт, соединение к базе будет "заблокировано" нашим потоком с игровым тиком, и мы можем безопасно делать запросы к СУБД.
  • Если база не "заблокирована", оно "заблокируется", и... Всё. SourceMod, если у него есть запросы в очереди к этой же базе данных, не будет их выполнять, чтобы не повредить нашему запросу, пока сама база данных не будет "разблокирована".
На этом, пожалуй, всё. Более ошибки блокировки хендла соединения не будут затрагиваться, ибо "надоело".
---
C++:
iRandom = GetRandomInt(9999999,99999999);
10/10 по шкале рандома. Тогда уж бы заюзал магические переменные самого SourcePawn: cellmin и cellmax.
---
Дальше рассматривать нечего. Там идёт просто копипаста инклуды MD5.

Не совсем понял, можно посмотреть его?
Кого его? Плагин?
 

Tomiks

Участник
Сообщения
419
Реакции
288
Оффтоп
 

Dimmer

Юзерок
Сообщения
192
Реакции
25
Оффтоп
--- Добавлено позже ---
Ложит сервер
Последня запись в консоле перед рестартами.
"Add "-debug" to the ./srcds_run command line to generate a debug.log to help with solving this problem
Thu Jun 27 18:20:58 MSK 2019: Server Quit
CRASH: Thu Jun 27 18:20:58 MSK 2019
Thu Jun 27 18:20:58 MSK 2019: Server restart in 5 seconds"
L 06/27/2019 - 16:58:35: [SM] Exception reported: Client 3 is not in game
L 06/27/2019 - 16:58:35: [SM] Blaming: basecomm.smx
L 06/27/2019 - 16:58:35: [SM] Call stack trace:
L 06/27/2019 - 16:58:35: [SM] [0] ThrowNativeError
L 06/27/2019 - 16:58:35: [SM] [1] Line 44, /home/builds/sourcemod/linux-1.9/build/plugins/basecomm/natives.sp::Native_IsClientGagged
L 06/27/2019 - 16:58:35: [SM] [3] BaseComm_IsClientGagged
L 06/27/2019 - 16:58:35: [SM] [4] Line 330, VIP_MuteGagSilence_1.0.0.sp::OnClientSayCommand
L 06/27/2019 - 18:18:41: [SM] Exception reported: Client 6 is not in game
L 06/27/2019 - 18:18:41: [SM] Blaming: shop_games.smx
L 06/27/2019 - 18:18:41: [SM] Call stack trace:
L 06/27/2019 - 18:18:41: [SM] [0] PrintToChat
L 06/27/2019 - 18:18:41: [SM] [1] Line 541, shop_games.sp::OfferToPlay_MenuHandler
L 06/27/2019 - 18:18:41: Error log file session closed.
[SM] Listing 97 plugins:
01 "[Shop] Color Tracers" (2.0.4) by FrozDark & R1KO
02 "Simple Chat Processor (Redux)" (1.1.5) by Simple Plugins, Mini
03 "NoZoom System" (1.0.9) by DUCK (vk.com/geliydaun)
04 "Reserved Slots" (1.9.0.6280) by AlliedModders LLC
05 "[Shop] Trails" (2.2.2) by FrozDark (HLModders LLC)
06 "Weapons & Knives" (1.3.3) by kgns | oyunhost.net
07 "[Shop] Equipments" (2.1.1) by FrozDark
08 "GameVoting" (1.8.8) by Neatek
09 "[OS] Overlay System" (2.0) by suremiur (Sure666), helped Rostu and Discord band.
10 "Chat Colors CSGO" (1.3) by Pheonix (‰7Феникс7‰)
11 "Admin Help" (1.9.0.6280) by AlliedModders LLC
12 "Basic Info Triggers" (1.9.0.6280) by AlliedModders LLC
13 "Реклама" (1.4.1) by Pheonix (‰7Феникс7‰)
14 "[Levels Ranks] Core" (v3.0) by RoadSide Romeo
15 "[Shop] Games" (1.2.1) by Monroe
16 "ExtendedComm" (3.0.8b_fix) by Twisted|Panda edit by Wightjeck
17 "Duel System" (2.0.5) by d4Ck(vk.com/geliydaun)
18 "Admin File Reader" (1.9.0.6280) by AlliedModders LLC
19 "World Text" (1.01) by Deathknife
20 "Gloves" (1.0.1) by kgns - wasdzone
21 "[Shop] BHop" (1.2) by Someone
22 "Too Late To Ban" (1.0.0a) by Shenton
23 "[CS:GO] Spritetrail fix" (1.0.1) by FrozDark
24 "Basic Ban Commands" (1.9.0.6280) by AlliedModders LLC
25 "Fun Commands" (1.9.0.6280) by AlliedModders LLC
26 "Basic Chat" (1.9.0.6280) by AlliedModders LLC
27 "Token Auto Updater" (1.4) by Phoenix (‰7Феникс7‰)
28 "Fun Votes" (1.9.0.6280) by AlliedModders LLC
29 "[Shop] Skins" (2.3.0) by FrozDark Feat R1KO, Tonki_Ton)
30 "[LR] Module - FakeRank" (v3.0) by RoadSide Romeo & Wend4r
31 "[LR] Module - Overlays" (v3.0) by RoadSide Romeo
32 "[Shop] Top10 Function" (2.0.1) by FrozDark
33 "Player Commands" (1.9.0.6280) by AlliedModders LLC
34 "Client Preferences" (1.9.0.6280) by AlliedModders LLC
35 "BlockingZones | Блокирующие зоны" (1.3) by Drumanid
36 "Paintball" (1.2.0) by otstrel.ru Team
37 "[Shop] Core" (3.0D2) by FrozDark (Fork by R1KO & White Wolf)
38 "CS:GO Esl Admin ESP (mmcs.pro)" (2.8) by SAZONISCHE
39 "Admin List" (1.0) by Someone
40 "Admin Menu" (1.9.0.6280) by AlliedModders LLC
41 "Sound Commands" (1.9.0.6280) by AlliedModders LLC
42 "Basic Votes" (1.9.0.6280) by AlliedModders LLC
43 "connect_info_csgo.smx"
44 "Show Credits" (1.0) by Someone
45 "RoundEndSound" (1.1.2) by GoDtm666 (www.MyArena.ru)
46 "[Shop] Case" (1.0.0) by MithatGuner & AlmazON
47 "Roun End Gravity" (0.1) by Muvik
48 "Precache.smx"
49 "HostName Rus" (1.0.0) by GoDtm666
50 "[LK MODULE] Управление доступом (VIP R1KO)" (4.0.0) by 1mpulse (skype:potapovdima1)
51 "[Личный Кабинет] Core" (4.0.2) by 1mpulse
52 "[LK MODULE] Перевод Денег" (4.0.0) by 1mpulse (skype:potapovdima1)
53 "[LK MODULE] Покупка SHOP кредитов" (4.0.0) by 1mpulse (skype:potapovdima1)
54 "[LK MODULE] ТОП10 Донатеров" (4.0.1) by 1mpulse (skype:potapovdima1)
55 "[LK MODULE] Покупка VIP (VIP R1KO 3.0)" (4.0.0) by 1mpulse (skype:potapovdima1)
56 "[LK MODULE] Info Menu" (4.0.0) by 1mpulse (skype:potapovdima1)
57 "[LK MODULE] Админ Меню" (4.0.0) by 1mpulse (skype:potapovdima1)
58 "[VIP] Healthshot" (1.0.1) by R1KO (skype: vova.andrienko1)
59 "[VIP] Ban" (1.0.0) by R1KO (skype: vova.andrienko1)
60 "[VIP] Base Functions" (1.2) by R1KO (skype: vova.andrienko1)
61 "[VIP] Tracers" (1.1) by R1KO
62 "[VIP] CHAT (+scp)" (3.1.1) by R1KO
63 "[VIP] Regen HP" (1.1) by R1KO
64 "[VIP] Time VIP" (1.0) by R1KO
65 "[VIP] Kick" (1.0.3) by R1KO (skype: vova.andrienko1)
66 "[VIP] FastReload" (1.0) by BaFeR
67 "[CS:S/CS:GO] [VIP] Respawn" (1.1) by R1KO
68 "[VIP] Shop Discounts" (1.0.3) by R1KO (skype: vova.andrienko1)
69 "[VIP] Kill Screen" (1.0.2) by R1KO (skype: vova.andrienko1)
70 "[VIP] MuteGagSilence" (1.0.0) by R1KO (skype: vova.andrienko1)
71 "[VIP] Throwing Knives" (1.4) by R1KO
72 "[VIP] Electro Effects" (1.0.3) by R1KO
73 "[VIP] Client Spawn Hook Fix" (1.0) by CrazyHackGUT aka Kruzya
74 "[VIP] Skins" (1.0.5) by R1KO (skype: vova.andrienko1)
75 "[VIP] Core" (3.0 R) by R1KO
76 "[VIP] Bhop" (1.0.1) by KOROVKA
77 "[VIP] Test" (1.0.3) by R1KO (skype: vova.andrienko1)
78 "[VIP] NEON (CSS/CSGO)" (1.2) by R1KO & Pheonix (‰7Феникс7‰)
79 "[VIP] Paint" (1.6) by asdf
80 "Disable Radar" (1.2) by Internet Bully
81 "[Shop] Online Credits" (1.5) by White Wolf (HLModders LLC)
82 "Terrible Enable Full Alltalk" (0.02) by Sheepdude
83 "Basic Comm Control" (1.9.0.6280) by AlliedModders LLC
84 "[Keys] Shop" (1.1) by R1KO
85 "[Keys] Core" (1.4) by R1KO
86 "[Keys] VIP" (1.3) by R1KO
87 "Reset Score" (1.0.3) by GoDtm666 (www.MyArena.ru)
88 "Clean Chat" (1.1) by Monomizer
89 "Chat 2 VK" (1) by XTANCE
90 "Bround" (0.1) by FlexMan
91 "[CS:S / CS:GO] Throwing Knives Core" (1.6) by R1KO
92 "AFK Manager" (3.5.0) by Rothgar
93 "Anti-Flood" (1.9.0.6280) by AlliedModders LLC
94 "[Shop] Money Distributor" (1.4.3) by FrozDark (HLModders LLC)
95 "DR.API SHOW DAMAGE" (1.1.1) by Dr. Api
96 "Basic Commands" (1.9.0.6280) by AlliedModders LLC
97 "BanId Fix" (0.0.5-rc1) by SM9();
 
Последнее редактирование:

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #20
Что и требовалось доказать:
Зачем блокировать базу данных? Смоделируем ситуацию:
  1. SourceMod начал выполнять наш запрос в другом потоке. База данных "заблокирована".
  2. Вызывается любой наш метод, который работает с базой данных так же в один поток с игровым тиком. База всё ещё заблокирована.
  3. Мы пытаемся сделать запрос без блокировки.
Что произойдёт? DBI честно попытается выполнить запрос, но из-за отсутствия попытки "заблокировать" базу (объяснение, зачем это нужно - ниже) - сервер упадёт, поскольку в сокет, во время получения ответа, может пойти и наш запрос, из-за чего всё смешается и сервер упадёт.
Думаю, больше пояснять, чем вредно отсутствие блокировки базы в смешанном плагине (многопоток + однопоток) не надо.

Вы бы лучше из випки убрали все перечисленные Вами функции.
 
Сверху Снизу