Твой пост нерабочие 2 метода,а ниже версия с киком :/
#include <sdktools_hooks>
public Action OnPlayerRunCmd(int client, int &buttons)
{
static bool block;
block = false;
if(buttons & IN_LEFT)
{
buttons &= ~IN_LEFT;
block = true;
}
if(buttons & IN_RIGHT)
{
buttons &= ~IN_RIGHT;
block = true;
}
return block ? Plugin_Changed : Plugin_Continue;
}
Делал когда-то давно , не самый оптимальный вариант :|, но в ксс рабочий точно, проверь на ксгоТвой пост нерабочие 2 метода,а ниже версия с киком :/
#include <sdktools>
public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3])
{
static float LAngels[65];
if(IsPlayerAlive(client) && !IsFakeClient(client) && (buttons & IN_LEFT) > 0 || (buttons & IN_RIGHT) > 0 )
{
angles[1] = LAngels[client];
TeleportEntity(client, NULL_VECTOR, angles, NULL_VECTOR);
}
LAngels[client] = angles[1];
}
#include <sdktools>
public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3])
{
static float lang[65];
if(IsPlayerAlive(client) && (buttons & IN_LEFT) > 0 || (buttons & IN_RIGHT) > 0 )
angles[1] = lang[client];
lang[client] = angles[1];
}
Не блочит.@Oligarx1488, так тебе +left и +right или +moveleft и +moveright?
Если первое то вот это будет блочить срабатывание этих команд:PHP:#include <sdktools_hooks> public Action OnPlayerRunCmd(int client, int &buttons) { static bool block; block = false; if(buttons & IN_LEFT) { buttons &= ~IN_LEFT; block = true; } if(buttons & IN_RIGHT) { buttons &= ~IN_RIGHT; block = true; } return block ? Plugin_Changed : Plugin_Continue; }
Твой вариант самолетик вроде рабочий.Делал когда-то давно , не самый оптимальный вариант :|, но в ксс рабочий точно, проверь на ксго
Визуально у игрока экран то же не поворачивается , но при этом экран игрока трясет.
PHP:#include <sdktools> public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3]) { static float LAngels[65]; if(IsPlayerAlive(client) && !IsFakeClient(client) && (buttons & IN_LEFT) > 0 || (buttons & IN_RIGHT) > 0 ) { angles[1] = LAngels[client]; TeleportEntity(client, NULL_VECTOR, angles, NULL_VECTOR); } LAngels[client] = angles[1]; }
Без тряски экрана, при +left или +right игрок якобы поворачивает , но на деле просто прыгает вперед.
PHP:#include <sdktools> public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3]) { static float lang[65]; if(IsPlayerAlive(client) && (buttons & IN_LEFT) > 0 || (buttons & IN_RIGHT) > 0 ) angles[1] = lang[client]; lang[client] = angles[1]; }
какая игра, какая версия SM? Должно блочить на SM1.7+Не блочит.
+jump это и есть обычный прыжок (сам посмотри в клиенте по пути ...\cfg\config.cfg), разве что можно сделать кулдаун на использование команды, чтобы не срабатывало чаще, чем пропишешь в конфигечтобы обычный прыжок работал а +jump нет
можно: просто удаляешь проверку buttons & IN_LEFTМожно ли сделать чтобы +left к примеру не работало а +right работало.
csgo,sm 1.9какая игра, какая версия SM? Должно блочить на SM1.7+
+jump это и есть обычный прыжок (сам посмотри в клиенте по пути ...\cfg\config.cfg), разве что можно сделать кулдаун на использование команды, чтобы не срабатывало чаще, чем пропишешь в конфигеможно: просто удаляешь проверку buttons & IN_LEFT
Если стоит випка риковская, то там есть модуль, которые позволяет настроить наносимый, и входящий урон.Напишите пожалуйста пример добавления/уменьшения урона для админа (по админу), пример :
Админ с флагом Z наносит урон по игроку и он умножается (урон 100 * 1.5 = 150)
Игрок наносит урон по админу с флагом Z то урон делиться (урон 100 / 1.5 = 66.666666)
Игра [csgo], спасибо.
#include <sdkhooks>
static const float fDmgMult = 1.5;
public void OnClientPostAdminCheck(int client)
{
SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}
public Action OnTakeDamage(int victim, int& attacker, int& inflictor, float& damage, int& damagetype)
{
if(!attacker || !victim || victim == attacker) return Plugin_Continue;
static AdminId aid, vid;
if((aid = GetUserAdmin(attacker)) == INVALID_ADMIN_ID && (vid = GetUserAdmin(victim)) != INVALID_ADMIN_ID)
damage /= fDmgMult;
else if(aid != INVALID_ADMIN_ID && vid == INVALID_ADMIN_ID)
damage *= fDmgMult;
else return Plugin_Continue;
return Plugin_Changed;
}
PHP:#define PATH "" // путь к звуку public void OnPluginStart() { HookEvent("player_death", view_as<EventHook>(PlayerDeath)); } void PlayerDeath(Event hEvent) { ClientCommand(GetClientOfUserId(hEvent.GetInt("attacker")), "play %s", PATH); }
stuck sourcemod | Давай я поищу в Google вместо тебя
Появляется проблема, (если стоят плагины типа round end sound) :
Последнему игроку убившего врага не воспроизводиться музыка. как будто "play %s" все перебивает...
#define PATH "" // путь к звуку
public void OnPluginStart()
{
HookEvent("player_death", view_as<EventHook>(PlayerDeath));
}
void PlayerDeath(Event hEvent)
{
if(isLastAlive())
return;
ClientCommand(GetClientOfUserId(hEvent.GetInt("attacker")), "play %s", PATH);
}
bool isLastAlive()
{
int count;
for(int i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && IsPlayerAlive(i))
count++;
}
return count < 2;
}
скорей всего так и естькак будто "play %s" все перебивает