ВарСимЭдуаДимир
Участник
- Сообщения
- 23
- Реакции
- 1
Добрый день, как отловить например нажатие кнопки "F" когда у игрока нож в руках и запустить таймер CreateTimer
Буду благодарен
Буду благодарен
Если CS:GO - осмотр оружия@ВарСимЭдуаДимир, а какое действие привязано к кнопке F ?
public OnPluginStart()
{
SetMenuTitle(hMBC=CreateMenu(MC), "[ Меню сервера ]\n ");
for(new i, size = sizeof(sCommand); i < size; i++) AddMenuItem(hMBC, "", sDisplay[i]);
AddCommandListener(BL, "nightvision");
}
public OnClientPostAdminCheck(C) DisplayMenu(hMBC, C,60);
public Action:BL(C, String:N[], A)
{
if(C) OnClientPostAdminCheck(C);
return Plugin_Continue;
}
public Action:OnClientSayCommand(C, const String:N[], const String:T[])
{
if(strcmp(T[1], "menu",false) && strcmp(T[1], "меню")) return Plugin_Continue;
OnClientPostAdminCheck(C);
return Plugin_Handled;
}
ну вообще фонарик (з.ы Cs source )@ВарСимЭдуаДимир, а какое действие привязано к кнопке F ?
можно ли посчитать 2 ваших сообщения оффтопами, ибо они не несут смысловой нагрузкисам писал? или скуловский код взял?
--- Добавлено позже ---
название темы просто топ "Отлов нажатия кпопки"
первое сообщение ещё какой смысл несетможно ли посчитать 2 ваших сообщения оффтопами, ибо они не несут смысловой нагрузки
и думаю название темы, должно интересовать в последнюю очередь
К сожалению ZSchool написан расширением и там совершенно другой код.сам писал? или скуловский код взял?
--- Добавлено позже ---
название темы просто топ "Отлов нажатия кпопки"
Попробуй так:Добрый день, как отловить например нажатие кнопки "F" когда у игрока нож в руках и запустить таймер CreateTimer
Буду благодарен
public void OnPluginStart()
{
RegConsoleCmd("impulse", Callback);
}
public Action Callback(int iClient, int iArgs) // реагирует на все impulse
{
static char sWeapon[12];
GetClientWeapon(iClient, sWeapon, sizeof(sWeapon));
if(!strcmp("knife", sWeapon[7]))
{
CreateTimer(...);
}
sWeapon[0] = '\0';
return Plugin_Handled;
}
public void OnPlayerRunCmdPost(int iClient, int iButtons, int iImpulse, const float fVel[3], const float fAngles[3], int iWeapon, int iSubtype, int iCmdnum, int iTickcount, int iSeed, const int iMouse[2])
{
if(iImpulse == 100)
{
static char sWeapon[12];
GetEntityClassname(iWeapon, sWeapon, sizeof(sWeapon));
if(!strcmp("knife", sWeapon[7]))
{
CreateTimer(...);
}
sWeapon[0] = '\0';
}
}
а почему не просто вот так?sWeapon[0] = '\0';
--- Добавлено позже ---sWeapon[0] = 0;
В общем лучше вот так:Return Value
True on success, false if there is no classname set.
public void OnPlayerRunCmdPost(int client, int buttons, int impulse, const float vel[3], const float angles[3], int weapon, int subtype, int cmdnum, int tickcount, int seed, const int mouse[2])
{
static char sWeapon[12];
if(impulse == 100 && GetEntityClassname(weapon, sWeapon, sizeof(sWeapon)) && !strcmp("knife", sWeapon[7]))
CreateTimer(...);
}
Вот только это хранится в памяти после использования, так как это static.да и вообще обнулять строковую переменную в этой функции вообще нет смысла: ты же не используешь Format(sWeapon, sizeof(sWeapon), "%s любой текст"
и что с того? Создание локальной static переменной равнозначно созданию глобальной переменной. Разве что эта переменная не будет видна вне функции.Вот только это хранится в памяти после использования
Ну типо, и что ?Создание локальной static переменной равнозначно созданию глобальной переменной. Разве что эта переменная не будет видна вне функции.
12 байт? серьезно? т.е. выделять её каждый фрейм (условно) для каждого игрока это оптимально, а выделить 12 байт на постоянной основе это дофига. тут как бы не high load система где нужно давиться за каждый байт памяти и каждый использованный тик каждого ядра cpuВот только это хранится в памяти после использования, так как это static.