[Sourcepawn] Кнопки на карте

TheRunningMan

Участник
Сообщения
147
Реакции
10
Подскажите разбирающиеся люди имеющие опыт в программировании для игры CS Source!
Вот мэппер создал кнопки(не важно какого вида) одной дал имя Левая, другой Правая...
Ни каких действий к ним не привязаны просто кнопка да кнопка....
Игрок подходит и жмет к примеру Правую, в это время плагин ловит это событие что да, игрок действительно нажал Правую кнопку и ему должно высветиться в чате "Вы нажали правую кнопку".
Внимание вопрос:
Как это сделать?

Я использовал функцию
PHP:
HookEntityOutput( "func_button" , "OnPressed", ButtonPressed );
но тут используется имя класса, т.е. неважно какую я кнопку нажму(если конечно они обе из этого класса) все равно выведется сообщение "Вы нажали Правую кнопку"

P.S. Не надо писать что это невозможно, я это не сам тут сижу придумываю, все видел в живую на сервере, плагин писали они сами для себя....
 

FrozDark

Участник
Сообщения
1,769
Реакции
2,052
Re: [Sourcepawn]Кнопки на карте

найди координаты правой кнопки, и тогда смогу помочь
 

TheRunningMan

Участник
Сообщения
147
Реакции
10
Re: [Sourcepawn]Кнопки на карте

м..Про правую и Левую кнопку, я написал, чтоб вы поняли чего я хочу)))
Нельзя ли просто общий принцип показать...
Есть ли такая функция чтоб получить координаты объекта, или надо все таки декомпилировать карту и там уже смотреть, если не то и не то, то тогда каким способом?

Добавлено через 46 минут
Ну вот допустим
-2586
-1374
353
 
Последнее редактирование:

FrozDark

Участник
Сообщения
1,769
Реакции
2,052
Re: [Sourcepawn]Кнопки на карте

Заодно, этим плагином можешь проверить позицию этой кнопки

PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>

public OnPluginStart()
{
	HookEntityOutput("func_button" , "OnPressed", ButtonPressed);
}

public ButtonPressed(const String:output[], caller, activator, Float:delay)
{
	new Float:pos[3];
	GetEntPropVector(caller, Prop_Send, "m_vecOrigin", pos);
	
	PrintToChat(activator, "X: %.1f", pos[0]);
	PrintToChat(activator, "Y: %.1f", pos[1]);
	PrintToChat(activator, "Z: %.1f", pos[2]);
	
	if (pos[0] == -2586.0 && pos[1] == -1374.0 && pos[2] == 353.0)
		OnRightButtonPressed(activator);
}

OnRightButtonPressed(client)
{
	PrintToChatAll("%N нажал на правую кнопку", client);
}
 

TheRunningMan

Участник
Сообщения
147
Реакции
10
Re: [Sourcepawn]Кнопки на карте

Можно еще маленький вопрос, а можно ли координату как-нибудь округлить, просто у меня получается 10 цифр после запятой и я даже не знаю есть ли конец им....
 
Последнее редактирование:

FrozDark

Участник
Сообщения
1,769
Реакции
2,052
Re: [Sourcepawn]Кнопки на карте

PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>

public OnPluginStart()
{
	HookEntityOutput("func_button" , "OnPressed", ButtonPressed);
}

public ButtonPressed(const String:output[], caller, activator, Float:delay)
{
	new Float:pos[3];
	GetEntPropVector(caller, Prop_Send, "m_vecOrigin", pos);
	
	PrintToChat(activator, "X: %4.2f", pos[0]);
	PrintToChat(activator, "Y: %4.2f", pos[1]);
	PrintToChat(activator, "Z: %4.2f", pos[2]);
	
	if (pos[0] == -2586.0 && pos[1] == -1374.0 && pos[2] == 353.0)
		OnRightButtonPressed(activator);
}

OnRightButtonPressed(client)
{
	PrintToChatAll("%N нажал на правую кнопку", client);
}
 

TheRunningMan

Участник
Сообщения
147
Реакции
10
Re: [Sourcepawn]Кнопки на карте

м..получается что вы округлили координату для печати, но не окрглили для определения....
 

maza511

Участник
Сообщения
882
Реакции
407
Re: [Sourcepawn]Кнопки на карте

м..получается что вы округлили координату для печати, но не окрглили для определения....
PHP:
pos[0] = RoundToCeil(pos[0]);
Но проще по названию кнопки все таки.
PHP:
decl String:TarName[64];
GetEntPropString(caller, Prop_Data, "m_iName", TarName, sizeof(TarName));
По моему так..
 

TheRunningMan

Участник
Сообщения
147
Реакции
10
Re: [Sourcepawn]Кнопки на карте

PHP:
pos[0] = RoundToCeil(pos[0]);
Но проще по названию кнопки все таки.
PHP:
decl String:TarName[64];
GetEntPropString(caller, Prop_Data, "m_iName", TarName, sizeof(TarName));
По моему так..

Не у всех кнопок есть названия имхо)
Напрмиер получил имя кнопки как его использовать в условии?
 

maza511

Участник
Сообщения
882
Реакции
407
Сверху Снизу