Как заблочить, меню закупки, и/или мессагу в CS:GO

AMD

Участник
Сообщения
180
Реакции
18
Собственно не выходит заблокировать меню закупки:
PHP:
public OnPluginStart() AddCommandListener(BuyCommand, "buymenu");

public Action:BuyCommand(iClient, const String:command[], args)
{ 
 if(iClient && IsClientInGame(iClient)) 
{
/* Код */
}
 return Plugin_Handled;
}

Тоже не пашет:
PHP:
public OnPluginStart() 
{ 
 HookUserMessage(GetUserMessageId("VGUIMenu"), OnMsgVGUIMenu, true); 
} 

public Action:OnMsgVGUIMenu(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init) 
{ 
 decl String:buffer1[64]; 
 BfReadString(bf, buffer1, sizeof(buffer1)); 
 LogMessage(buffer1);
 return Plugin_Continue; 
}

PHP:
L 08/19/2014 - 18:07:17: [SM] Plugin encountered error 21: Native is not bound
L 08/19/2014 - 18:07:17: [SM] Native "BfReadString" reported: 
L 08/19/2014 - 18:07:17: [SM] Displaying call stack trace for plugin "test.smx":
L 08/19/2014 - 18:07:17: [SM]   [0]  Line 9, D:\cs_go\csgo\addons\sourcemod\scripting\test.sp::OnMsgVGUIMenu()

Ещё не получается отловить MSG, "Время закупки вышло", и "Вы покинули зону закупки".
Как быть не знаю.
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Ну что за люди то?! В го BF НЕ ИСПОЛЬЗУЕТСЯ!!! только protobuf
 

AMD

Участник
Сообщения
180
Реакции
18
Всё ровно не выходит(((

PHP:
#include <sourcemod>
#pragma semicolon 1

public OnPluginStart() 
{ 
	//HookUserMessage(GetUserMessageId("VGUIMenu"), OnMsgVGUIMenu, true);
	HookUserMessage(GetUserMessageId("HudMsg"), OnHudMsg, true); 
	HookUserMessage(GetUserMessageId("TextMsg"), OnTextMsg, true); 
	HookUserMessage(GetUserMessageId("HudText"), OnHudText, true); 
} 

/*public Action:OnMsgVGUIMenu(UserMsg:msg_id, Handle:pb, const players[], playersNum, bool:reliable, bool:init) 
{ 
	decl String:buffer[10];
	PbReadString(pb, "name", buffer, sizeof(buffer));
	if (!strcmp(buffer, "specgui", false))
	{
		LogAction("упс");
		return Plugin_Handled;
	}
	return Plugin_Continue; 
}*/

public Action:OnHudMsg(UserMsg:msg_id, Handle:pb, const players[], playersNum, bool:reliable, bool:init) 
{ 
	decl String:buffer[32];
	PbReadString(pb, "text", buffer, sizeof(buffer));
	LogMessage("OnHudMsg: %s", buffer);
	return Plugin_Continue; 
}

public Action:OnTextMsg(UserMsg:msg_id, Handle:pb, const players[], playersNum, bool:reliable, bool:init) 
{ 
	decl String:buffer[32];
	PbReadInt(pb, "msg_dst");
	PbReadString(pb, "params", buffer, sizeof(buffer));
	LogMessage("OnTextMsg: %s", buffer);
	return Plugin_Continue; 
}

public Action:OnHudText(UserMsg:msg_id, Handle:pb, const players[], playersNum, bool:reliable, bool:init) 
{ 
	decl String:buffer[32];
	PbReadString(pb, "text", buffer, sizeof(buffer));
	LogMessage("OnHudText: %s", buffer);
	return Plugin_Continue; 
}

PHP:
L 08/21/2014 - 02:16:54: [SM] Native "PbReadString" reported: Invalid field "params" for message "CCSUsrMsg_TextMsg"
L 08/21/2014 - 02:16:54: [SM] Displaying call stack trace for plugin "12222.smx":
L 08/21/2014 - 02:16:54: [SM]   [0]  Line 36, D:\cs_go\csgo\addons\sourcemod\scripting\12222.sp::OnTextMsg()
 

TolikCorp

Участник
Сообщения
874
Реакции
334
PHP:
    decl String:text[64];
    PbReadString(pb, "params", text, sizeof(text), 0);
    if (strcmp(text, "#SFUI_Notice_Killed_Teammate") == 0)
        return Plugin_Handled;
    return Plugin_Continue;
 

AMD

Участник
Сообщения
180
Реакции
18
PHP:
#include <sourcemod>
#pragma semicolon 1

public OnPluginStart() 
{ 
 HookUserMessage(GetUserMessageId("HudMsg"), OnHudMsg, true); 
 HookUserMessage(GetUserMessageId("TextMsg"), OnTextMsg, true); 
 HookUserMessage(GetUserMessageId("HudText"), OnHudText, true); 
} 


public Action:OnHudMsg(UserMsg:msg_id, Handle:pb, const players[], playersNum, bool:reliable, bool:init) 
{ 
 decl String:text[64];
 PbReadString(pb, "params", text, sizeof(text), 0);
 LogMessage("OnHudMsg: %s", text);
 return Plugin_Continue; 
}

public Action:OnTextMsg(UserMsg:msg_id, Handle:pb, const players[], playersNum, bool:reliable, bool:init) 
{ 
 decl String:text[64];
 PbReadString(pb, "params", text, sizeof(text), 0);
 LogMessage("OnTextMsg: %s", text);
 return Plugin_Continue; 
}

public Action:OnHudText(UserMsg:msg_id, Handle:pb, const players[], playersNum, bool:reliable, bool:init) 
{ 
 decl String:text[64];
 PbReadString(pb, "params", text, sizeof(text), 0);
 LogMessage("OnHudText: %s", text);
 return Plugin_Continue; 
}
в логах есть только TextMsg, и нужного сообщения нет
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
команда клиентская и сервер её не регистрирует
Тогда удалить зоны закупки. Меню вообще никак не будет отображено, лишь сообщения при нажатии "Покупка" о том, что "Вы не находитесь в зоне покупок".
 

AMD

Участник
Сообщения
180
Реакции
18
Тогда удалить зоны закупки. Меню вообще никак не будет отображено, лишь сообщения при нажатии "Покупка" о том, что "Вы не находитесь в зоне покупок".

всё верно так и сделано, но очень хочется избавится от этого сообщения, а отловить не получается.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #8
AlmazON, и его опять же надо как-то заблочить.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
избавится от этого сообщения
Посмотри исходники всех DM и GG - там же избавились, насколько я помню. Или элементарно замени это сообщение на своё, например, "Все покупки запрещены!". Я так по Hint'у сделал, где писалось о том, что можно закупиться, когда на спавне.
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Вызов меню покупки - это же команда. А не проще отловить вызов этой команды и дальше уже закрывать меню?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Если это клиентский уровень, то нет. Клиент определяет, есть ли на карте зоны закупки и, если их нет - просто не открывает меню. А посылает клиент серверу лишь команды самих покупок, т.е., например "give weapon_deagle". Поскольку самой покупки нет, то и команды серверу тоже.
 

V1adJkee

Участник
Сообщения
148
Реакции
81
Тоже столкнулся с такой проблемой, хочу полностью отключить сообщения (хинт) "Вы покинули зону покупки" и "Период покупки в %s1 с. истек".

Как добиться того, чтобы этих сообщений на сервере никогда не было? Полностью их отключить. Готов заплатить за нужное решение
 
Последнее редактирование:
Сверху Снизу