Введение в SourcePawn программирование

R1KO

fuck society
Команда форума
Сообщения
9,016
Реакции
6,897
AlmazON, видимо на ветке 1.5.0 много чего добавили и я этого не видел
 

R1KO

fuck society
Команда форума
Сообщения
9,016
Реакции
6,897
Может кто знает как можно проверить плагин на утечки?
 

R1KO

fuck society
Команда форума
Сообщения
9,016
Реакции
6,897
wanted241, Теперь бы разобраться как понять где есть утечка, а где нет:
Handle Owner Type Memory
--------------------------------------------------------------------------
0x00010001 NONE Identity -1
0x00030003 NONE BitBufReader 24
0x00050005 NONE ConVar 92
0x000b000b PLUGINSYS Plugin 10172
0x000d000d PLUGINSYS Plugin 10207
0x00130013 PLUGINSYS Plugin 10172
0x00150015 PLUGINSYS Plugin 10172
0x00170017 PLUGINSYS Plugin 10172
0x00190019 PLUGINSYS Plugin 10180
0x001b001b PLUGINSYS Plugin 10172
0x001d001d PLUGINSYS Plugin 10172
0x001f001f PLUGINSYS Plugin 10172
0x00210021 PLUGINSYS Plugin 10172
0x00230023 PLUGINSYS Plugin 10172
0x00250025 PLUGINSYS Plugin 10172
0x00270027 PLUGINSYS Plugin 10172
0x00290029 PLUGINSYS Plugin 10181
0x002b002b PLUGINSYS Plugin 10172
0x002d002d PLUGINSYS Plugin 10172
0x002f002f PLUGINSYS Plugin 10172
0x00310031 PLUGINSYS Plugin 10208
0x00320032 shop.smx CellArray 16
0x00330033 shop.smx CellArray 16
0x00340034 shop.smx CellArray 16
0x00350035 shop.smx Trie 8512
0x00360036 shop.smx KeyValues 32
0x00380038 PLUGINSYS Plugin 10172
0x003a003a PLUGINSYS Plugin 10172
0x003b003b vip/VIP_Core.smx CellArray 48
0x003c003c vip/VIP_Core.smx CellArray 16
0x003d003d vip/VIP_Core.smx Trie 8512
0x003e003e NONE ConVar 92
0x003f003f NONE ConVar 92
0x00400040 NONE ConVar 92
0x00410041 NONE ConVar 92
0x00420042 vip/VIP_Core.smx GlobalFwd 16
0x00430043 vip/VIP_Core.smx GlobalFwd 16
0x00440044 vip/VIP_Core.smx GlobalFwd 4
0x00450045 vip/VIP_Core.smx GlobalFwd 4
0x00460046 vip/VIP_Core.smx GlobalFwd 16
0x00470047 ent_control.smx IBaseMenu 726
0x00480048 ent_control.smx IBaseMenu 716
0x00490049 ent_control.smx IBaseMenu 716
0x004a004a NONE ConVar 92
0x004b004b NONE ConVar 92
0x004c004c NONE ConVar 92
0x004d004d NONE ConVar 92
0x004e004e NONE ConVar 92
0x004f004f NONE ConVar 92
0x00500050 NONE ConVar 92
0x00510051 NONE ConVar 92
0x00520052 basecommands.smx IBaseMenu 21703
0x00530053 basecommands.smx Trie 8512
0x00540054 adminmenu.smx GlobalFwd 4
0x00550055 adminmenu.smx GlobalFwd 52
0x00560056 NONE ConVar 92
0x00570057 AdminInfo.smx IMenuPanel 338
0x00580058 shop.smx DataPack -1
0x005b0059 dbi.sqlite.ext.so IDriver -1
0x005a005a shop.smx IDatabase -1
0x00a4005b basecommands.smx CellArray 131088
0x005d005c shop.smx GlobalFwd 4
0x005e005d shop.smx GlobalFwd 4
0x005f005e shop.smx GlobalFwd 4
0x0060005f shop.smx GlobalFwd 4
0x00610060 shop.smx GlobalFwd 4
0x00620061 shop.smx GlobalFwd 4
0x00630062 shop.smx GlobalFwd 4
0x00640063 shop.smx GlobalFwd 4
0x00650064 shop.smx GlobalFwd 4
0x00660065 shop.smx GlobalFwd 4
0x00670066 shop.smx GlobalFwd 4
0x00680067 shop.smx GlobalFwd 4
0x00690068 shop.smx GlobalFwd 4
0x006a0069 shop.smx GlobalFwd 4
0x006b006a shop.smx GlobalFwd 4
0x006c006b shop.smx GlobalFwd 4
0x006d006c shop.smx GlobalFwd 4
0x006e006d shop.smx GlobalFwd 4
0x006f006e NONE ConVar 92
0x0070006f NONE ConVar 92
0x00710070 NONE ConVar 92
0x00720071 shop.smx KeyValues 79
0x00730072 NONE ConVar 92
0x00740073 NONE ConVar 92
0x00750074 shop.smx Timer -1
0x00760075 NONE ConVar 92
0x00770076 NONE ConVar 92
0x00780077 NONE ConVar 92
0x007b0078 NONE ConVar 92
0x007a0079 shop.smx IBaseMenu 692
0x007c007a NONE ConVar 92
0x007d007b NONE ConVar 92
0x007e007c basevotes.smx CellArray 16
0x007f007d basevotes.smx IBaseMenu 21711
0x0080007e NONE ConVar 92
0x0081007f adminmenu.smx ITopMenu 23348
0x00820080 adminmenu.smx CellArray 16
0x00830081 adminmenu.smx KeyValues 35
0x00840082 admin-flatfile.smx SMCParser 32
0x00850083 admin-flatfile.smx SMCParser 32
0x00860084 admin-flatfile.smx SMCParser 32
0x00870085 admin-flatfile.smx SMCParser 32
0x00880086 admin-flatfile.smx CellArray 16
0x008a0087 vip/VIP_Core.smx KeyValues 142
0x008b0088 vip/VIP_Core.smx KeyValues 181
0x008c0089 vip/VIP_Core.smx Cookie -1
0x008d008a vip/VIP_Core.smx CellArray 2064
0x008e008b vip/VIP_Core.smx Cookie -1
0x008f008c vip/VIP_Core.smx CellArray 2064
0x0090008d vip/VIP_Core.smx Cookie -1
0x0091008e vip/VIP_Core.smx CellArray 2064
0x0092008f vip/VIP_Core.smx Cookie -1
0x00930090 vip/VIP_Core.smx CellArray 2064
0x00940091 vip/VIP_Core.smx Cookie -1
0x00950092 vip/VIP_Core.smx CellArray 2064
0x00960093 vip/VIP_Core.smx Cookie -1
0x00970094 vip/VIP_Core.smx CellArray 2064
0x00980095 vip/VIP_Core.smx IMenuPanel 220
0x009a0096 vip/VIP_Core.smx IMenuPanel 225
0x009c0097 vip/VIP_BaseFunction Timer -1
0x009d0098 basecommands.smx SMCParser 32
0x009e0099 basecommands.smx IBaseMenu 641
0x009f009a adminmenu.smx SMCParser 32
0x00a0009b adminmenu.smx CellArray 1040
0x00a1009c adminmenu.smx CellArray 1040
0x00a5009d basevotes.smx CellArray 131088
0x00a6009e shop.smx KeyValues 32
0x00a900a1 vip/VIP_Core.smx CellArray 2064
0x00b100a2 vip/VIP_Core.smx CellArray 2064
0x00ae00a3 vip/VIP_Core.smx Trie 8512
0x00ac00a4 vip/VIP_Core.smx Trie 8512
0x00ad00a5 vip/VIP_Core.smx Trie 8512
0x00af00a6 vip/VIP_Core.smx Trie 8512
0x00b000a7 vip/VIP_Core.smx IBaseMenu 693
0x00b200a8 array_test.smx CellArray 1104
-- Approximately 620166 bytes of memory are in use by Handles.
 

wanted241

Real-Gamer.Ru
Заблокирован
Сообщения
432
Реакции
163
C-подобный:
0x00a4005b	basecommands.smx CellArray 131088

Не слишком ли много?Оо
 

Vit_ amin

Участник
Сообщения
1,316
Реакции
495
Пытался сделать блок на status и ping, но походу я забыл как это делается (но вроде всё правильно сделал) ...
PHP:
...
	AddCommandListener(Undef_command, "status");
	AddCommandListener(Undef_command, "ping");
...
public Action:Undef_command(client, const String:command[], argc)
{
	if (client && !(GetUserFlagBits(client) & ADMFLAG_ROOT))
	{
		ReplyToCommand(client, "[SM] %t", "Block Command");
		return Plugin_Handled;
	}
	return Plugin_Continue
}
 

R1KO

fuck society
Команда форума
Сообщения
9,016
Реакции
6,897
Vit_ amin, по-моему на в34 работатать не будет. На об хз
 

Vit_ amin

Участник
Сообщения
1,316
Реакции
495
Ну я смотрел к примеру status protect, и вприцнипе так же сделал, создавал RegConsoleCmd ...
 

DarklSide

Участник
Сообщения
932
Реакции
417
Осталось узнать индекс передаваемого клиента в листене.
 

DarklSide

Участник
Сообщения
932
Реакции
417
Имелось ввиду, что в v34 передается 0, поэтому и был дан первый и #132 пост.
 

DarklSide

Участник
Сообщения
932
Реакции
417
Репит: тогда осталось узнать с какой версии engine, передается индекс выше нуля.
 

Vit_ amin

Участник
Сообщения
1,316
Реакции
495
У меня код с RegConsoleCmd работает, но он к примеру не посылает сообщение через ReplyToCommand, а только блокирует status/ping. Значало идет ReplyToCommand(...); потом return Plugin_Handled;
 

Vit_ amin

Участник
Сообщения
1,316
Реакции
495
Есть код:
PHP:
#undef REQUIRE_PLUGIN
#include <adminmenu>

TopMenu h_AdminMenu;
TopMenuObject h_AdminMenu_Object;

public Plugin Myinfo =
{
    name = "L4D AdminMenu Extension",
    author = "Vitamin" ,
    description = "Extend Admin Menu for Others Commands",
    version = "1.0",
    url = "http://l4d-zone.ru"
}

public void OnPluginStart()
{
	if (LibraryExists("adminmenu"))
	{
		OnAdminMenuReady(GetAdminTopMenu());
	}
}

public void OnLibraryRemoved(const char[] name)
{
	if (StrEqual(name, "adminmenu"))
	{
		h_AdminMenu = null;
	}
}

public void OnAdminMenuReady(TopMenu topmenu)
{
	if (topmenu == null || topmenu == h_AdminMenu)
	{
		return;
	}
	
	h_AdminMenu = topmenu;
	
	TopMenuObject h_AdminMenu_Object_Buffer = FindTopMenuCategory(h_AdminMenu, ADMINMENU_PLAYERCOMMANDS);
	if (h_AdminMenu_Object_Buffer == INVALID_TOPMENUOBJECT)
	{
		return;
	}
	
	h_AdminMenu_Object = AddToTopMenu(h_AdminMenu, "AdminMenu_Extension", TopMenuObject_Item, Item_CallBack, h_AdminMenu_Object_Buffer, "sm_kick", ADMFLAG_KICK);
}

public void Item_CallBack(TopMenu topmenu, TopMenuAction action, TopMenuObject object_id, int client, char[] buffer, int maxlength)
{
	if (action == TopMenuAction_DisplayOption)
	{
		Format(buffer, maxlength, "Test");
	}
	else if (action == TopMenuAction_DisplayTitle)
	{
		Format(buffer, maxlength, "Выберите опцию:");
	}
}
Не понимаю почему компилятор ругается:
//SourceMod Batch Compiler
// by the SourceMod Dev Team


//// l4d_adminmenu.sp
//
// C:\Program Files\valve\left4dead\left4dead\addons\sourcemod\scripting\l4d_adm
inmenu.sp(32) : error 181: function argument named 'topmenu' differs from protot
ype
// C:\Program Files\valve\left4dead\left4dead\addons\sourcemod\scripting\l4d_adm
inmenu.sp(47) : error 100: function prototypes do not match
// C:\Program Files\valve\left4dead\left4dead\addons\sourcemod\scripting\l4d_adm
inmenu.sp(47) : warning 204: symbol is assigned a value that is never used: "h_A
dminMenu_Object"
//
// 2 Errors.
//
// Compilation Time: 0,23 sec
// ----------------------------------------

Press enter to exit ...
 

Vit_ amin

Участник
Сообщения
1,316
Реакции
495
А даже в API:
PHP:
void OnAdminMenuReady(Handle topmenu)
Исправил но осталось все равно 1 ошибка:
//SourceMod Batch Compiler
// by the SourceMod Dev Team


//// l4d_adminmenu.sp
//
// C:\Program Files\valve\left4dead\left4dead\addons\sourcemod\scripting\l4d_adm
inmenu.sp(47) : error 100: function prototypes do not match
// C:\Program Files\valve\left4dead\left4dead\addons\sourcemod\scripting\l4d_adm
inmenu.sp(47) : warning 204: symbol is assigned a value that is never used: "h_A
dminMenu_Object"
//
// 1 Error.
//
// Compilation Time: 0,12 sec
// ----------------------------------------

Press enter to exit ...
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,127
Реакции
2,338
C-подобный:
([B]TopMenu[/B] topmenu, TopMenuAction action, TopMenuObject object_id, int client, char[] buffer, int maxlength)
Это тоже не то:
PHP:
(Handle topmenu, TopMenuAction action, TopMenuObject topobj_id, int param, char[] buffer, int maxlength)
(47) : warning 204: symbol is assigned a value that is never used: "h_AdminMenu_Object"
Так и будет, пока не уберёшь переменную или не станешь её использовать.
 
Сверху