- Переход со стима вида U: на вид STEAM_. Кто-то точно кидался помидорами за старый вид стим айдишников игроков, вот, держите.
- Наконец запоминается путь по менюшкам (фиксилось с 16 апреля, сообщил тогда MrQout), теперь при нажатии "назад" действительно возвращает назад.![]()
![]()
Удобно, когда смотришь статистику игроков в клане, а при нажатии "закрыть" возвращало в главное меню, например
- Появилось время последнего захода игрока (показывает в статистике игрока на сервере еще)
столбец в базе данных - player_lastjoin в таблице players_table
Идем по пути оптимизации и снижении нагрузки с базы:![]()
![]()
- Кэш убийств/смертей:
Теперь убийства/смерти кэшируются на сервере, т.е. теперь при каждом убийстве данные не будут обновляться в базе.
Они обновятся только тогда, когда игрок отключится от сервера.
- Статистика игроков:
Берутся данные из кэша, если игрок онлайн. Очень полезно, когда на сервере игроки любят тыкать свою статистику по кд (ведь больше запросов в базу не будет)
- Получение данных с кэша в API
Раньше различные функции по типу Clans_GetClientClan брали данные с базы, теперь появился флажок взятия информации из кэша, если игрок с нужным айдишником онлайн.
Старый вид: int Clans_GetClientClan(int clientID)
Новый вид: int Clans_GetClientClan(int clientID, bool bFromDB = false)
Прошу заметить, по умолчанию в приложенном инклуде стоит значение false, т.е. данные в случае чего будут браться непосредственно с кэша сервера в первую очередь, если это возможно!!!
- Удаление из базы данных таких столбцов как members, date_creation из таблицы clans_table.
ДОБАВИТЬ в clans_menus.phrases.txt
C-подобный:"ActiveNow" { "en" "ONLINE ヽ(°□° )ノ" "ru" "ОНЛАЙН ヽ(°□° )ノ" } "LongTimeNoVisit" { "en" "hasn't join for a long time (︶︹︺)" "ru" "давно не видели (︶︹︺)" }
Фиксы:
- Изменен размер буффера для лога с 100 до 512 (простыми словами, раньше он логировал малое число символов, из-за чего, например, сообщение в чате клана в логах показывало не полностью)
- Удален супер-дебаг сообщение, когда переименовывали клан (и ведь никто даже не замечал, видимо)
- Поправил лог чата клана: раньше он логировал столько раз, сколько было игроков в клане онлайн
- CSS34: когда клан переименовывали, вызывалась функция для обновления клан-тега, чего в CSS34 и нет..
- Название клана было не полностью написано в меню статистики (9 символов вместо 10)
Forwards (API):
Фиксы:
Clans_OnClientAdded теперь содержит еще и индекс игрока, который был добавлен в какой-то клан (-1, если игрок оффлайн)
Clans_OnClientDeleted теперь содержит индекс игрока, который покинул (кикнули) клан (-1, если игрок оффлайн)
Новое:
Clans_GetClientTimeToCreateClan - вернет время до создания нового клана (в минутах)
Clans_GetClientClanName - получить название клана игрока (берется с буфера на сервере, так что, если переименовать в базе, то только со следующей загрузки игрока клан тег будет актуален. Но, вроде, так никто не делает)
Фикс, когда был включен режим лога в файл, а использовался метод для базы данных:
[SM] Call stack trace:
[SM] [0] Database.Escape
[SM] [1] Line 249, clans/logging.sp::DB_LogCallback
Теперь в базу данных данные должны вбиваться нормально (речь про ники со спец символами)
Замена NameToDB на Database.Escape (:
А еще, с какой-то версии порезалось число символов на клан тег до 9, вернулось 10
Теперь в базу данных данные должны вбиваться нормально (речь про ники со спец символами)
- Самое, пожалуй, важное - поправил утечку памяти, вроде везде (спасибо inklesspen)
- Вернул лог в файл (еще в добавок сделал 2 вида: писать все в один файл (это значение 3) или писать в файл, в имени которого отражается дата лога (это значение 2)). В связи с этим же теперь директория для linux создается так, как надо.
- Вернул лог убийств (см. help_ru/help_en)
- Поправил sm_clans_noclan_notag (раньше при 1 он работал некорректно)
- Поправил натив (раньше в inc файле было написано, что возвращает bool, а должен int)
int Clans_GetClientTimeInClan(int clientID); // Получить время, которое игрок уже в клане (в секундах)
- Добавил натив, который позволяет узнать, использует ли игрок тег серверных кланов:
bool Clans_UseClanTag(int client);
- Добавил форвард, вызываемый после загрузки игрока (используется в новом магазине клановом точно):
Clans_OnClientLoaded(int iClient, int iClientID, int iClanid);
Кстати, клановый магазин и дуэли доступны в дискорде (пока в бете, но функционал основной готов)
Изменение CVar sm_clans_noclan_notag:
CVar sm_clans_noclan_notag теперь имеет значения не 0 и 1, а 0-2. Для удобства решил не переименовывать его, просто доработал следующим образом:
Теперь он может принимать значение: 2 - изменять клан тег всегда, 1 - изменять клан тег, если игрок в клане, 0 - изменять клан тег, если игрок хочет этого
Фиксы:
1. Раньше можно было обойти флаг на самостоятельную смену лидера через смену роли
(когда лидер не мог поставить нового лидера через пункт "Поставить нового лидера", он мог сделать это, выбрав игроку роль "лидер" в пункте "изменить роль игроку")
2. Теперь клану нельзя уйти в минус по убийствам, монетам или смертям (имеется в виду случаи, когда через функцию выдачи,
например, монет можно было указать число, которое больше текущего счета клана. В таком случае клан мог увязнуть в долгах, теперь не должен)
Изменение:
Теперь в ядре по умолчанию нельзя создавать клан. Выдачу права на создание теперь выдают модули (модуль на выдачу права всем идет в комплекте с ядром, пока не появится ресурс)
Забыл добавить свою менюшку установки клан тега в 1.8 (в этой версии оно находится в !settings)
Закинул теперь свою менюшку, поэтому нужно будет добавить пару строк в файлы перевода:
C-подобный:"c_ClanTagSetSuccess" { "en" "{green}[CLANS]{lightgreen} You successfully changed clan tag setting." "ru" "{green}[CLANS]{lightgreen} Вы успешно изменили настройку установки клан тега." }
C-подобный:"m_ClanTagSetTitle" { "en" "Do you want to set clan system clan tag?\nIf you are in clan, your clan tag is your clan's name\nElse your clan tag will be empty" "ru" "Вы хотите установить клан тег клановой системы?\nЕсли Вы в клане, то Ваш тег - название Вашего клана\nИначе Ваш тег будет пустым" }
Некое обновление с заделкой под будущее...
Думаю, не всем всегда было удобно смотреть, какой роли какая циферка соответствует...
Теперь можно указывать в cvar прав не цифрами, а буквами!
Старейшина - 1 (e), зам. лидера - 2 (c), лидер - 4 (l)
Например вместо sm_clans_inviteperm "6" можно вписать sm_clans_inviteperm "elc"
Примечание: указывать можно в любом порядке: ecl, cel, lec, lceРаньше по самым загадочным (будем считать это именно таким) обстоятельствам игроку писалось, что ему сменили роль на лидера.
Причем про настоящую роль, которую дали игроку, никто не говорил. Приходилось самому в статистике своей смотреть.
Так вот, теперь такого нет, оповещение корректно отображает выданную рольТеперь игрок может менять другому роль в клане по следующим правилам:
1. Можно менять роль только тем игрокам, чья роль меньше
2. Повысить игрока можно только до своего звания, выше - нельзя
(да-да, раньше при выставленном флаге соруководитель мог устроить революцию и свергнуть лидера через 3-е лицо)
Также, теперь можно изгнать только тех игроков, чья роль ниже игрока, который изгоняетДавно кто-то просил, наконец сделал флаги для кланового чата:
convar: sm_clans_chatfilter "a" //По умолчанию оставлю комбо 1 и 2
1 (d) - мертвые могут общаться с живыми
2 (t) - люди с разных команд видят сообщения друг друга
3 (a) - комбо из 1 и 2
0 (n) - не 1 и не 2Добавил парочку нативов:
int Clans_GetClanType(int clanid) //Получение тип клана
void Clans_SetClanType(int clanid, int type) //Установить тип клана
void Clans_GiveClanCoins(int clanid, int coins, bool givenByAdmin = false) //Выдать клану монеты. Можно поставить флажок, что выдано админом (мало ли кому нужна будет эта информация)
void Clans_OnClanCoinsGive(int clanid, int& coins, bool givenByAdmin); //Вызывается, когда клану вот-вот начислят монетки. Можно всячески изменять значение coins. Ну и флаг, выдал администратор или нет
То, что сейчас выдается через админ меню (входящее изменение монет в ядро) не вызывает этот форвард!