Voice Manager

Voice Manager 1.4 Fix - Grey83

Grey83

не пишу плагины с весны 2022
Сообщения
8,552
Реакции
5,029
Весь OnPluginEnd() можно удалять, т.к. при завершении работа плагина SM и так удалит ArrayList и Database из памяти.
When a plugin unloads, all of its Handles are automatically destroyed.
Вики SM
Сообщения автоматически склеены:

Создаёшь строковые переменные каждые итерации цикла.

Ну и ещё БД нужно лочить во время обращения к ней.
В одном и том же соединении можно запускать как поточные, так и не-поточные запросы.
Однако без надлежащих мер предосторожности вы можете повредить сетевой поток (даже если он локальный), поврежденную память или иным образом вызвать сбой в драйвере SQL.
Чтобы решить эту проблему, SourceMod имеет блокировку базы данных.
Блокировка выполняется через SQL_LockDatabase и SQL_UnlockDatabase.

Всякий раз, когда выполняется какая-либо из следующих операций, не связанных с потоком в базе данных, абсолютно необходимо заключить всю операцию с блокировкой:

  • Сопряжения SQL_QuerySQL_FetchMoreResults)
  • SQL_FastQuery
  • SQL_PrepareQuery
  • Сопряжения SQL_Bind и SQL_Execute
Эмпирическое правило: если ваша операция будет использоваться для подключения к базе данных, она должна быть заблокирована до завершения операции.
У тебя метод Database.Query() используется в 4 функциях.

И вообще для чего было добавлять инклюд clientprefs и использовать вместо него функционал dbi?
Сообщения автоматически склеены:

Немного почистил и оптимизировал код.
OnClientPostAdminCheck() заменено на OnClientAuthorized() (потому что только так можно использовать GetClientAuthId()).
Настройка голосового чата с ботами убрана (они будут игнорироваться кодом).
Теперь при неудачном коннекте к БД будет выполняться весь код, кроме взаимодействия с БД.
Код взаимодействия с БД не менял.

В общем как-то так.
SM1.13:
//// voice_users 1.4.sp
//
// Z:\voice_users 1.4.sp(169) : warning 209: function has explicit 'int' tag but does not return a value
//    169 | public int MenuHandler_VoiceMenu(Menu menu, MenuAction action, int param1, int param2)
// --------------------^
//
// Z:\voice_users 1.4.sp(169) : warning 209: function has explicit 'int' tag but does not return a value
//    169 | public int MenuHandler_VoiceMenu(Menu menu, MenuAction action, int param1, int param2)
// --------------------^
// Code size:         16024 bytes
// Data size:         4644 bytes
// Stack/heap size:      17560 bytes
// Total requirements:   38228 bytes
//
// 2 Warnings.
//
// Compilation Time: 0,66 sec
// ----------------------------------------

//// voice_users 1.4_fix.sp
//
// Code size:         15552 bytes
// Data size:         4484 bytes
// Stack/heap size:      17216 bytes
// Total requirements:   37252 bytes
//
// Compilation Time: 0,08 sec
// ----------------------------------------
 

Вложения

  • voice_users 1.4_fix.sp
    11.7 КБ · Просмотры: 5
Последнее редактирование:

suicide_xD

Участник
Сообщения
216
Реакции
14
Весь OnPluginEnd() можно удалять, т.к. при завершении работа плагина SM и так удалит ArrayList и Database из памяти.

Вики SM
Сообщения автоматически склеены:

Создаёшь строковые переменные каждые итерации цикла.

Ну и ещё БД нужно лочить во время обращения к ней.

У тебя метод Database.Query() используется в 4 функциях.

И вообще для чего было добавлять инклюд clientprefs и использовать вместо него функционал dbi?
Сообщения автоматически склеены:

Немного почистил и оптимизировал код.
OnClientPostAdminCheck() заменено на OnClientAuthorized() (потому что только так можно использовать GetClientAuthId()).
Настройка голосового чата с ботами убрана (они будут игнорироваться кодом).
Теперь при неудачном коннекте к БД будет выполняться весь код, кроме взаимодействия с БД.
Код взаимодействия с БД не менял.

В общем как-то так.
SM1.13:
//// voice_users 1.4.sp
//
// Z:\voice_users 1.4.sp(169) : warning 209: function has explicit 'int' tag but does not return a value
//    169 | public int MenuHandler_VoiceMenu(Menu menu, MenuAction action, int param1, int param2)
// --------------------^
//
// Z:\voice_users 1.4.sp(169) : warning 209: function has explicit 'int' tag but does not return a value
//    169 | public int MenuHandler_VoiceMenu(Menu menu, MenuAction action, int param1, int param2)
// --------------------^
// Code size:         16024 bytes
// Data size:         4644 bytes
// Stack/heap size:      17560 bytes
// Total requirements:   38228 bytes
//
// 2 Warnings.
//
// Compilation Time: 0,66 sec
// ----------------------------------------

//// voice_users 1.4_fix.sp
//
// Code size:         15552 bytes
// Data size:         4484 bytes
// Stack/heap size:      17216 bytes
// Total requirements:   37252 bytes
//
// Compilation Time: 0,08 sec
// ----------------------------------------
Приветствую. Работает ли на v34?
 
Сверху Снизу