Всё неплохо, за исключением динамических массивов. Интересно даже то, что авторы не понимают сколько памяти выделяется под массив. К тому же не стоит держать всё в массивах, лучше использовать временную базу на sqlite.
Возьмём за пример g_hData массив. То-есть в массив, размером 125*8=1000 байт вы пушите переменную, которая занимает 8 байт. Итого просирание памяти на каждый пуш равно 992 байта. Памяти, которое мало того, что не нужна, но ещё и не используется.
Чтобы ты понимал, в один сеll влазит 4 строковых символа. Используй функцию ByteCountToCells(size), чтобы точно определять нужный размер массива, раз уж ты их часто используешь.
Кстати, с сорсмодом 1.7+ размер типов может поменяться. Я в этой не на 100% уверен, правда, но меня смущает тот факт, что это не задокументировано. Приведу простой пример.
PHP:
DataPack hPack = new DataPack();
hPack.WriteCell(10);
hPack.WriteCell(11);
hPack.WriteCell(12);
hPack.Position = 16; // Ставим по старой схеме позицию на 3-й целл (смещение кратное 8)
int iThirdValue = hPack.ReadCell(); // Не правильно, вернёт 0
hPack.Position = 18; // Ставим по новой схеме позицию на 3-й целл (смещение какого-то хрена теперь у нас 9)
iThirdValue = hPack.ReadCell(); // Правильно, вернёт цифру 12
delete hPack;
То-есть с приходом нового синтаксиса и версии сорсмода скорей всего изменился размер для стандартных типов. Для int, Handle и float он теперь, вероятно, равен 9 байтам.
Я объяснял сколько массив выделяет под любой из типов.
Но вообще мне кажется программист любого языка должен иметь представление сколько выделяется памяти под его программу, а не только С++ программисты.
float - 8 bytes
int - 4 bytes
char - 2 bytes.
Handle - целое число, тоже будет занимать 4 байта.
bool - 1 byte.
function - 4 bytes.
Но этот плагин переделайте. Он из себя представляет просто безобразие. И переделать лучше с использованием sqlite.
И кстати, используйте запрос "Vacuum" после удаления большого количества записей из sqlite базы. Ну или хотя бы время от времени.
Просто бывает глянешь что там народ понаписывал и замечание едва ли не к каждой третьей строке, и целый шкаф аргументов почему так не стоит делать. А ведь это всего лишь сорспавн.
А чему ты удивляешься. Всем же впадлу прочитать документацию sqlite. В общем, при удалении записи из базы, в файле определённое место, где собственно и была запись, просто забивается нулями. Вот что делает VACUUM. Я только раз видел, чтобы кто-то использовал этот запрос. Кажется старый плагин savescore.
В логах нету ошибки.
Ставил последнюю версию(1.6) и версию 1.4, тоже самое.
Добавлено через 47 секунд
Игрока, которого я выбирал - точно не было на сервере, 100%.
Жду ответа! :)
Добавлено через 2 минуты
>sm plugins list
[SM] Listing 60 plugins:
01 "GunGame:SM Afk Management" (1.2.16.0) by teame06-hat, Liam, Otstrel.ru Team
02 "Basic Info Triggers" (1.7.2) by AlliedModders LLC
03 "DeathMatch:SM First Spawn" (1.8.0) by Otstrel.ru Team
04 "SMAC Rcon Locker" (0.8.5.1) by SMAC Development Team
05 "Player Commands" (1.7.2) by AlliedModders LLC
06 "Client Preferences" (1.7.2) by AlliedModders LLC
07 "DeathMatch:SM Elimination" (1.8.0) by Otstrel.ru Team
08 "GunGame:SM Winner Logger" (1.2.16.0) by teame06-hat, Liam, Otstrel.ru Team
09 "Basic Chat" (1.7.2) by AlliedModders LLC
10 "Admin Menu" (1.7.2) by AlliedModders LLC
11 "MapChooser" (1.7.2) by AlliedModders LLC
12 "Map Nominations" (1.7.2) by AlliedModders LLC
13 "Nextmap" (1.7.2) by AlliedModders LLC
14 "GunGame:SM Display Winner" (1.2.16.0) by bl4nk, Otstrel.ru Team
15 "Anti-Flood" (1.7.2) by AlliedModders LLC
16 "DeathMatch:SM Preset Spawns" (1.8.0) by Otstrel.ru Team, TigerOx, TechKnow
17 "Basic Votes" (1.7.2) by AlliedModders LLC
18 "NoBlock" (1.3.0) by Otstrel.ru Team
19 "Rock The Vote" (1.7.2) by AlliedModders LLC
20 "Fun Commands" (1.7.2) by AlliedModders LLC
21 "Sound Commands" (1.7.2) by AlliedModders LLC
22 "Admin Help" (1.7.2) by AlliedModders LLC
23 "SMAC Command Monitor" (0.8.5.1) by SMAC Development Team
24 "Resetscore+" (1.5.1) by AlmazON
25 "SourceComms" (0.9.266) by Alex
26 "SMAC ConVar Checker" (0.8.5.1) by SMAC Development Team
27 "SMAC Aimbot Detector" (0.8.5.1) by SMAC Development Team
28 "Basic Comm Control" (1.7.2) by AlliedModders LLC
29 "Admin File Reader" (1.7.2) by AlliedModders LLC
30 "GunGame:SM Stats" (1.2.16.0) by teame06-hat, Liam, Otstrel.ru Team
31 "Reserved Slots" (1.7.2) by AlliedModders LLC
32 "Show Damage" (1.0.7) by exvel
33 "GunGame:SM Bot Protection" (1.2.16.0) by teame06-hat, Liam, Otstrel.ru Team
34 "DeathMatch:SM Spawn Protection" (1.8.0) by Otstrel.ru Team, TigerOx, TechKnow
35 "Basic Commands" (1.7.2) by AlliedModders LLC
36 "Players Votes" (1.5.0) by The Resident, pZv!
37 "GunGame:SM" (1.2.16.0) by teame06-hat, Liam, Otstrel.ru Team
38 "DeathMatch:SM Ragdoll Remover" (1.8.0) by Otstrel.ru Team, TigerOx, TechKnow
39 "SourceMod Anti-Cheat" (0.8.5.1) by SMAC Development Team
40 "GunGame:SM Map Vote Starter" (1.2.16.0) by teame06-hat, Liam, Otstrel.ru Team
41 "GunGame:SM TK Management" (1.2.16.0) by teame06-hat, Liam, Otstrel.ru Team
42 "DeathMatch:SM Weapons Remover" (1.8.0) by Otstrel.ru Team, TigerOx, TechKnow
43 "GunGame:SM Winner Effects" (1.2.16.0) by teame06-hat, Liam, Otstrel.ru Team
44 "SMAC Client Protection" (0.8.5.1) by SMAC Development Team
45 "SMAC Anti-Speedhack" (0.8.5.1) by SMAC Development Team
46 "Fun Votes" (1.7.2) by AlliedModders LLC
47 "SourceBans" (1.4.11) by SourceBans Development Team
48 "SMAC Eye Angle Test" (0.8.5.1) by SMAC Development Team
49 "gameME Plugin" (4.5.1) by TTS Oetzel & Goerz GmbH
50 "DeathMatch:SM" (1.8.0) by Otstrel.ru Team, TigerOx, TechKnow
51 "GunGame:SM Config Reader" (1.2.16.0) by teame06-hat, Liam, Otstrel.ru Team
52 "SMAC AutoTrigger Detector" (0.8.5.1) by SMAC Development Team
53 "GunGame:SM Warmup Configs Execution" (1.2.16.0) by teame06-hat, Liam, Otstrel.ru Team
54 "Advertisements" (0.6 CSGO-1.1) by Tsunami (CSGO FIX Феникс)
55 "Offline Ban list" (1.7) by Grey™ & R1KO
56 "Admin List" (2.1e) by Samantha & AlmazON edition
57 "Client Execute" (1.0.0.3) by dubbeh
58 Disabled: "SMAC CS:S Exploit Fixes" (0.8.5.1) by SMAC Development Team
59 Disabled: "SMAC CS:S Anti-Smoke" (0.8.5.1) by SMAC Development Team
60 Disabled: "SMAC CS:S Anti-Flash" (0.8.5.1) by SMAC Development Team
L 07/05/2015 - 21:13:21: rcon from "46.17.40.12:53930": command "sm plugins list"
>meta list
Listing 4 plugins:
[01] SourceMod (1.7.2) by AlliedModders LLC
[02] CS Tools (1.7.2) by AlliedModders LLC
[03] SDK Tools (1.7.2) by AlliedModders LLC
[04] SDK Hooks (1.7.2) by AlliedModders LLC
L 07/05/2015 - 21:13:47: rcon from "46.17.40.12:53963": command "meta list"
Добавлено через 3 минуты
Попробовал переустановить, поставил 1.4 версию:
Вот что пишет в логах:
L 07/05/2015 - 21:14:43: SourceMod error session started
L 07/05/2015 - 21:14:43: Info (map "gg_ruins_go") (file "errors_20150705.log")
L 07/05/2015 - 21:14:43: [SM] Plugin encountered error 4: Invalid parameter or parameter type
L 07/05/2015 - 21:14:43: [SM] Native "PrintToChat" reported: Language phrase "Failed to player" not found
L 07/05/2015 - 21:14:43: [SM] Displaying call stack trace for plugin "offlineban.smx":
L 07/05/2015 - 21:14:43: [SM] [0] Line 338, offlineban.sp::MenuHandler_BanList()
L 07/05/2015 - 21:14:49: [SM] Plugin encountered error 4: Invalid parameter or parameter type
L 07/05/2015 - 21:14:49: [SM] Native "PrintToChat" reported: Language phrase "Failed to player" not found
L 07/05/2015 - 21:14:49: [SM] Displaying call stack trace for plugin "offlineban.smx":
L 07/05/2015 - 21:14:49: [SM] [0] Line 338, offlineban.sp::MenuHandler_BanList()
Дак в том то и дело, что игрока не было на сервере и он не перезаходил
Добавлено через 1 минуту
Ну т.е. игрок зашел на сервер и вышел(появился в меню) и я ему даю бан, а мне в ответ идет мол игрок перезашел(хотя он не перезаходил) или ему уже дали бан(хотя ему бан никто еще не давал)