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

Тема в разделе "Общие вопросы", создана пользователем TheRunningMan, 29 окт 2011.

  1. TheRunningMan

    TheRunningMan

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

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

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

    FrozDark Команда сайта HLMod Модератор

    Сообщения:
    1.761
    Симпатии:
    1.915
    Re: [Sourcepawn]Кнопки на карте

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

    TheRunningMan

    Сообщения:
    163
    Симпатии:
    9
    Re: [Sourcepawn]Кнопки на карте

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

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

    FrozDark Команда сайта HLMod Модератор

    Сообщения:
    1.761
    Симпатии:
    1.915
    Re: [Sourcepawn]Кнопки на карте

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

    PHP:
    #pragma semicolon 1

    #include <sourcemod>
    #include <sdktools>

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

    public 
    ButtonPressed(const String:output[], calleractivatorFloat:delay)
    {
        new 
    Float:pos[3];
        
    GetEntPropVector(callerProp_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 и NagarD нравится это.
  5. TheRunningMan

    TheRunningMan

    Сообщения:
    163
    Симпатии:
    9
    Re: [Sourcepawn]Кнопки на карте

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

    FrozDark Команда сайта HLMod Модератор

    Сообщения:
    1.761
    Симпатии:
    1.915
    Re: [Sourcepawn]Кнопки на карте

    PHP:
    #pragma semicolon 1

    #include <sourcemod>
    #include <sdktools>

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

    public 
    ButtonPressed(const String:output[], calleractivatorFloat:delay)
    {
        new 
    Float:pos[3];
        
    GetEntPropVector(callerProp_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 нравится это.
  7. TheRunningMan

    TheRunningMan

    Сообщения:
    163
    Симпатии:
    9
    Re: [Sourcepawn]Кнопки на карте

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

    maza511

    Сообщения:
    927
    Симпатии:
    456
    Re: [Sourcepawn]Кнопки на карте

    PHP:
    pos[0] = RoundToCeil(pos[0]);
    Но проще по названию кнопки все таки.
    PHP:
    decl String:TarName[64];
    GetEntPropString(callerProp_Data"m_iName"TarNamesizeof(TarName));
    По моему так..
     
    TheRunningMan нравится это.
  9. TheRunningMan

    TheRunningMan

    Сообщения:
    163
    Симпатии:
    9
    Re: [Sourcepawn]Кнопки на карте

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

    maza511

    Сообщения:
    927
    Симпатии:
    456
    Re: [Sourcepawn]Кнопки на карте

    PHP:
    decl String:TarName[64]; 
    GetEntPropString(callerProp_Data"m_iName"TarNamesizeof(TarName));

    if(
    StrEqual(TarName"NameButton")
    {
        
    //...
    }
     
    FrozDark и TheRunningMan нравится это.