RegConsoleCmd Команда включается с второго раза.

Тема в разделе "Общие вопросы", создана пользователем alexmy, 24 мар 2016.

  1. alexmy

    alexmy

    Сообщения:
    68
    Симпатии:
    4
    Всем привет, помогите не могу допилить. Команда для активации "Вид третьего лица" всегда включается с второй попытке что не так?
    Оффтоп
     
    White Wolf нравится это.
  2. Саша Шеин

    Саша Шеин

    Сообщения:
    1.258
    Симпатии:
    191
    Работает? О_о
    Оффтоп

    А по теме, даже не знаю:(
     
    White Wolf нравится это.
  3. alexmy

    alexmy

    Сообщения:
    68
    Симпатии:
    4
    Bind да работает, плагин я нашел, выбросил лишний мусор и запустил, на счет этого "thirdpersonshoulder", не я писал. Я дописал на размер прицела и на отключение и включение лазера.
     
    White Wolf нравится это.
  4. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.590
    Симпатии:
    1.995
    Это в TF? А если просто прописывать команду в чат, всегда "схватывает"?
     
    White Wolf нравится это.
  5. alexmy

    alexmy

    Сообщения:
    68
    Симпатии:
    4
    Нет L4D. Ну так я в чат и прописывал переключается с второго вода команды, ну если не трогать bind. Уже полностью все по выбрасывал.
    Оффтоп
     
  6. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.590
    Симпатии:
    1.995
    Такие команды я даже в качестве теста не рекомендую, лучше ограничиваться лишь латинскими буквами и некоторыми символами (например, подчёркивание).
    Насчёт последнего кода: с исполняемыми командами не знаком, как они должны правильно отсылаться. Это и серверные квары? Можно попробовать тоже через FakeClientCommand, а квары через SendConVarValue.
    Также советую добавить PrintToChat в обратном вызове регистрации команды, чтобы точно убедиться в её работоспособности. Оффтоп
    Если сообщения всегда видны, а все варианты не действуют должном образом, то, пожалуй, это баг. Решается костылём: создаём таймер с задержкой 0.1 и повторно исполняем глючную команду.
     
  7. alexmy

    alexmy

    Сообщения:
    68
    Симпатии:
    4
    Исправил, также команда вводится с второго раза, следующие раза ввода с первого раза :D. Квары клиентские, ну если я правильно это понял "CLIENTDLL|ARCHIVE ". Добавил PrintToChat, на счет
    PHP:
    FakeClientCommand(client"sm_laser off"); 
    это идет команда к другому плагину чтоб вырубился лазер. Я только учу помаленьку sourcepawn и с таймерами сильно не знаком.
    Оффтоп Оффтоп
     
  8. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.590
    Симпатии:
    1.995
    Т.е. результаты стали получше? Оставить тогда самое эффективное. Оффтоп
    Можно попробовать схитрить: вместо таймера отсылать глючную команду игроку сразу, при полном подключении. А дальше всё будет срабатывать по "плану".
     
  9. alexmy

    alexmy

    Сообщения:
    68
    Симпатии:
    4
    Результат не изменился, оно так и работало=). На счет сообщение при вводе команды в чат оба раза в чате отображаются. Можно поподробней, как схитрить?
     
  10. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.590
    Симпатии:
    1.995
    Что-то вроде:
    PHP:
    #include <sourcemod>
    #include <colors>

    public void OnPluginStart()
    {
        
    HookEvent("round_start"EventRoundStartEventHookMode_PostNoCopy);
     
        
    RegConsoleCmd("sm_third"ThirdPerson); //Включаем.
        
    RegConsoleCmd("sm_first"FirstPerson); //Отключаем.
    }

    public 
    void EventRoundStart(Handle event, const char[] namebool dontBroadcast)
    {
        
    CreateTimer(120.0SayStuff_TIMER_FLAG_NO_MAPCHANGE);
    }

    public 
    Action SayStuff(Handle timer)
    {
        
    CPrintToChatAll("{green}Бла {blue}Бла");
        return 
    Plugin_Stop;
    }

    public 
    void OnClientPostAdminCheck(int client)
    {
        
    ClientCommand(client"thirdpersonshoulder");
        
    ClientCommand(client"c_thirdpersonshoulderoffset 0");
        
    ClientCommand(client"c_thirdpersonshoulderaimdist 720");
    }

    public 
    Action ThirdPerson(int clientint args)
    {
        
    OnClientPostAdminCheck(client);
        
    ClientCommand(client"cl_crosshair_dynamic 0");   // При значении 0 прицел двигаться не будет
        
    ClientCommand(client"cl_crosshair_thickness 1"); //Размер прицела 1, 2, 3, 4, 5.
        
    FakeClientCommand(client"sm_laser off");         //Отключаем лазер
        //Функция отвечающая за прозрачность Бота от третьего лица.
        
    SetEntityGravity(client1.0);                     //Уставливаемая гравитация. Зачем?
        
    SetEntityRenderMode(clientRENDER_TRANSCOLOR);   
        
    SetEntityRenderColor(client25525525590);//Цвет.
        
    CPrintToChat(client"{blue}Выключить Вид {green}!1.");
        return 
    Plugin_Handled;
    }

    public 
    Action FirstPerson(int clientint args)
    {
        
    ClientCommand(client"thirdpersonshoulder");
        
    ClientCommand(client"c_thirdpersonshoulder 0");
        
    ClientCommand(client"cl_crosshair_dynamic 1");   // При значении 0 прицел двигаться не будет
        
    ClientCommand(client"cl_crosshair_thickness 3"); //Размер прицела 1, 2, 3, 4, 5.
        
    FakeClientCommand(client"sm_laser on");          //Включам лазер
        //Функция отвечающая за прозрачность Бота от первого лица. 
        
    SetEntityGravity(client1.0);                        //Уставливаемая гравитация, то же значение. Зачем?
        
    SetEntityRenderMode(clientRENDER_TRANSCOLOR);
        
    SetEntityRenderColor(client255255255255); //Цвет.
        
    return Plugin_Handled;
    }
     
    alexmy нравится это.
  11. alexmy

    alexmy

    Сообщения:
    68
    Симпатии:
    4
    Спасибо большое, вы исправили этот баг.
    --- Добавлено позже ---
    Привет, можешь еще помочь? Как говорится беда не приходит одна :D. При подключение у не которых игроков автоматически включается вид от третьего лица.
     
    Последнее редактирование: 26 мар 2016