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

alexmy

Участник
Сообщения
284
Реакции
13
Всем привет, помогите не могу допилить. Команда для активации "Вид третьего лица" всегда включается с второй попытке что не так?
Оффтоп
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
public OnClientPostAdminCheck(client)
{
ClientCommand(client, "bind z sm_3");
}
Работает? О_о
Оффтоп

А по теме, даже не знаю:(
 

alexmy

Участник
Сообщения
284
Реакции
13
Работает? О_о
Оффтоп

А по теме, даже не знаю:(
Bind да работает, плагин я нашел, выбросил лишний мусор и запустил, на счет этого "thirdpersonshoulder", не я писал. Я дописал на размер прицела и на отключение и включение лазера.
 

alexmy

Участник
Сообщения
284
Реакции
13
Это в TF? А если просто прописывать команду в чат, всегда "схватывает"?
Нет L4D. Ну так я в чат и прописывал переключается с второго вода команды, ну если не трогать bind. Уже полностью все по выбрасывал.
Оффтоп
 

AlmazON

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

alexmy

Участник
Сообщения
284
Реакции
13
Такие команды я даже в качестве теста не рекомендую, лучше ограничиваться лишь латинскими буквами и некоторыми символами (например, подчёркивание).
Насчёт последнего кода: с исполняемыми командами не знаком, как они должны правильно отсылаться. Это и серверные квары? Можно попробовать тоже через FakeClientCommand, а квары через SendConVarValue.
Также советую добавить PrintToChat в обратном вызове регистрации команды, чтобы точно убедиться в её работоспособности. Оффтоп
Если сообщения всегда видны, а все варианты не действуют должном образом, то, пожалуй, это баг. Решается костылём: создаём таймер с задержкой 0.1 и повторно исполняем глючную команду.
Исправил, также команда вводится с второго раза, следующие раза ввода с первого раза :D. Квары клиентские, ну если я правильно это понял "CLIENTDLL|ARCHIVE ". Добавил PrintToChat, на счет
PHP:
FakeClientCommand(client, "sm_laser off");
это идет команда к другому плагину чтоб вырубился лазер. Я только учу помаленьку sourcepawn и с таймерами сильно не знаком.
Оффтоп Оффтоп
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
Исправил, также команда вводится с второго раза, следующие раза ввода с первого раза
Т.е. результаты стали получше? Оставить тогда самое эффективное. Оффтоп
Можно попробовать схитрить: вместо таймера отсылать глючную команду игроку сразу, при полном подключении. А дальше всё будет срабатывать по "плану".
 

alexmy

Участник
Сообщения
284
Реакции
13
Т.е. результаты стали получше? Оставить тогда самое эффективное. Оффтоп
Можно попробовать схитрить: вместо таймера отсылать глючную команду игроку сразу, при полном подключении. А дальше всё будет срабатывать по "плану".
Результат не изменился, оно так и работало=). На счет сообщение при вводе команды в чат оба раза в чате отображаются. Можно поподробней, как схитрить?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
Можно поподробней, как схитрить?
Что-то вроде:
PHP:
#include <sourcemod>
#include <colors>

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

public void EventRoundStart(Handle event, const char[] name, bool dontBroadcast)
{
	CreateTimer(120.0, SayStuff, _, 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 client, int 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(client, 1.0);                     //Уставливаемая гравитация. Зачем?
    SetEntityRenderMode(client, RENDER_TRANSCOLOR);   
    SetEntityRenderColor(client, 255, 255, 255, 90);//Цвет.
    CPrintToChat(client, "{blue}Выключить Вид {green}!1.");
    return Plugin_Handled;
}

public Action FirstPerson(int client, int 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(client, 1.0);						//Уставливаемая гравитация, то же значение. Зачем?
    SetEntityRenderMode(client, RENDER_TRANSCOLOR);
    SetEntityRenderColor(client, 255, 255, 255, 255); //Цвет.
    return Plugin_Handled;
}
 

alexmy

Участник
Сообщения
284
Реакции
13
Что-то вроде:
PHP:
#include <sourcemod>
#include <colors>

public void OnPluginStart()
{
    HookEvent("round_start", EventRoundStart, EventHookMode_PostNoCopy);

    RegConsoleCmd("sm_third", ThirdPerson); //Включаем.
    RegConsoleCmd("sm_first", FirstPerson); //Отключаем.
}

public void EventRoundStart(Handle event, const char[] name, bool dontBroadcast)
{
    CreateTimer(120.0, SayStuff, _, 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 client, int 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(client, 1.0);                     //Уставливаемая гравитация. Зачем?
    SetEntityRenderMode(client, RENDER_TRANSCOLOR);
    SetEntityRenderColor(client, 255, 255, 255, 90);//Цвет.
    CPrintToChat(client, "{blue}Выключить Вид {green}!1.");
    return Plugin_Handled;
}

public Action FirstPerson(int client, int 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(client, 1.0);                        //Уставливаемая гравитация, то же значение. Зачем?
    SetEntityRenderMode(client, RENDER_TRANSCOLOR);
    SetEntityRenderColor(client, 255, 255, 255, 255); //Цвет.
    return Plugin_Handled;
}
Спасибо большое, вы исправили этот баг.
--- Добавлено позже ---
Что-то вроде:
PHP:
#include <sourcemod>
#include <colors>

public void OnPluginStart()
{
    HookEvent("round_start", EventRoundStart, EventHookMode_PostNoCopy);

    RegConsoleCmd("sm_third", ThirdPerson); //Включаем.
    RegConsoleCmd("sm_first", FirstPerson); //Отключаем.
}

public void EventRoundStart(Handle event, const char[] name, bool dontBroadcast)
{
    CreateTimer(120.0, SayStuff, _, 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 client, int 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(client, 1.0);                     //Уставливаемая гравитация. Зачем?
    SetEntityRenderMode(client, RENDER_TRANSCOLOR);  
    SetEntityRenderColor(client, 255, 255, 255, 90);//Цвет.
    CPrintToChat(client, "{blue}Выключить Вид {green}!1.");
    return Plugin_Handled;
}

public Action FirstPerson(int client, int 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(client, 1.0);                        //Уставливаемая гравитация, то же значение. Зачем?
    SetEntityRenderMode(client, RENDER_TRANSCOLOR);
    SetEntityRenderColor(client, 255, 255, 255, 255); //Цвет.
    return Plugin_Handled;
}
Привет, можешь еще помочь? Как говорится беда не приходит одна :D. При подключение у не которых игроков автоматически включается вид от третьего лица.
 
Последнее редактирование:
Сверху Снизу