AlmazON
Не путать с самим yand3xmail
- Сообщения
- 5,099
- Реакции
- 2,756
От довольно частого таймера как ни посмотреть, хуже. А в отслеживании просто плюс/минус от переменной для команды.нагрузка на сервер больше от чего?
От довольно частого таймера как ни посмотреть, хуже. А в отслеживании просто плюс/минус от переменной для команды.нагрузка на сервер больше от чего?
Это если бы в таймере что-то просто сохранять. А тут: считается количество в команде и соответствие каждый раз + похоже, сохраняется (ожидание смерти игрока), либо сразу переброска мёртвых (цикл тоже вносит свой вклад).то это не большая нагрузка
Тут самую большую нагрузку внесёт лишь сам Event: получение с него команды игрока, да его индекс. А дальше лишь простейшая манипуляция переменными +/-.много будет переходить с одной команду в другую и часто, если при подключение, то так же если сразу несколько человек выйдет или зайдёт
Откуда Event? Или это профессиональный сленг? У меня SM стоит :no:....Тут самую большую нагрузку внесёт лишь сам Event: получение с него команды игрока, да его индекс. А дальше лишь простейшая манипуляция переменными +/-.
Александр Гужов, ОффтопА нечего там смотреть - он для паблика, не соответствует DM/GG.
Нужен плагин, который будет через определённый промежуток времени проверять переменную fps_max и если значение будет ниже 60 плагин должен поменять это значение у игрока (если это возможно) если нет, то просто кикнуть с причиной (изменить переменную... Бла бла) да я знаю, что существует zblock там или кас, но мне нужен именно отдельный плагин. Если кому-то не трудно)
Добавлено через 9 часов 52 минуты
Актуально ^
Добавлено через 9 часов 54 минуты
Сможешь написать такой плагин? Если платно цену скажи)
#include <sourcemod>
#define PLUGIN_NAME "MinFPS"
#define PLUGIN_AUTHOR "Tony G."
#define PLUGIN_DESCRIPTION "Kicks a player if his/her fps_max convar value is below the value of 72."
#define PLUGIN_VERSION "1.0"
#define PLUGIN_URL "http://www.sourcemod.net/"
public Plugin:myinfo = {name = PLUGIN_NAME, author = PLUGIN_AUTHOR, description = PLUGIN_DESCRIPTION, version = PLUGIN_VERSION, url = PLUGIN_URL};
public OnPluginStart()
{
CreateConVar("sm_minfps_version", PLUGIN_VERSION, "MinFPS", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
CreateTimer(10.0, TriggerFPSCheck, _, TIMER_REPEAT);
}
public OnClientPostAdminCheck(client)
{
QueryClientConVar(client, "fps_max", ConVarQueryFinished:FPSCheck, client);
}
public Action:TriggerFPSCheck(Handle:timer)
{
for (new client = 1; client <= MaxClients; client++)
{
if (IsClientInGame(client) && !IsClientObserver(client))
{
QueryClientConVar(client, "fps_max", ConVarQueryFinished:FPSCheck, client);
}
}
return Plugin_Continue;
}
public FPSCheck(QueryCookie:cookie, client, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[])
{
if (IsClientConnected(client))
{
new fps_max = StringToInt(cvarValue);
if (fps_max < 72 && fps_max != 0)
{
KickClient(client, "Please set your fps_max value to at least 72");
}
}
}
PHP:#include <sourcemod> #define PLUGIN_NAME "MinFPS" #define PLUGIN_AUTHOR "Tony G." #define PLUGIN_DESCRIPTION "Kicks a player if his/her fps_max convar value is below the value of 72." #define PLUGIN_VERSION "1.0" #define PLUGIN_URL "http://www.sourcemod.net/" public Plugin:myinfo = {name = PLUGIN_NAME, author = PLUGIN_AUTHOR, description = PLUGIN_DESCRIPTION, version = PLUGIN_VERSION, url = PLUGIN_URL}; public OnPluginStart() { CreateConVar("sm_minfps_version", PLUGIN_VERSION, "MinFPS", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY); CreateTimer(10.0, TriggerFPSCheck, _, TIMER_REPEAT); } public OnClientPostAdminCheck(client) { QueryClientConVar(client, "fps_max", ConVarQueryFinished:FPSCheck, client); } public Action:TriggerFPSCheck(Handle:timer) { for (new client = 1; client <= MaxClients; client++) { if (IsClientInGame(client) && !IsClientObserver(client)) { QueryClientConVar(client, "fps_max", ConVarQueryFinished:FPSCheck, client); } } return Plugin_Continue; } public FPSCheck(QueryCookie:cookie, client, ConVarQueryResult:result, const String:cvarName[], const String:cvarValue[]) { if (IsClientConnected(client)) { new fps_max = StringToInt(cvarValue); if (fps_max < 72 && fps_max != 0) { KickClient(client, "Please set your fps_max value to at least 72"); } } }
Либо лыжи не едут, либо лето наступило :).Александр Гужов, пробуй мой. Это ещё бета. Настроен по умолчанию по таймеру, перемещает после смерти человека. Квары смотри в исходнике, прописывай если что в server.cfg
Да, забил в консоли сервера, получилАлександр Гужов, это серверная переменная нужно водить через ркон чтоб увидеть его значение, пример "sm_rcon sm_bal_metod"
На сервере перебрал все 110 плагинов, не нашёл как я понял это самопис.
"PlayerCommands"
{
"admin" "sm_ban"
"Сменить ник"
{
"cmd" "sm_rename #1 #2"
"execute" "player"
"1"
{
"type" "player"
"method" "userid"
"title" "Игроки:"
}
"2"
{
"type" "list"
"title" "Ник"
"1" "♒•РуКи⇒ЖоПы•♒"
"2" "♒СмеНи НиК♒"
"3" "♒Я ГоВно ЧиТеР♒"
"4" "♒Я НуБ ЧиТеР♒"
"5" "♒Я ВХ НуБ♒"
"6" "♒Я НуБяРа♒"
"7" "♒ДуРьМо⇒уШаМи♒"
"8" "☣НуБьЁ☣"
"9" "*ټ*ЧиТеР*ټ*"
"10" "♒ДуРьМо СпаМеР♒"
}
}
}
"item" "Сменить ник"
public Action:OnTouch(medkit, entity)
{
if (entity < 1 || entity > MaxClients || !IsClientInGame(entity) || !IsPlayerAlive(entity) || GetEntProp(medkit, Prop_Send, "m_PredictableID") == entity || GetClientHealth(entity) == 100) {
return;
}
SetEntityHealth(entity, GetEntProp(entity, Prop_Data, "m_iMaxHealth"));
new Float:origin[3];
EmitSoundToAll(HEALTHKIT_SOUND, entity, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 1.0, SNDPITCH_NORMAL, -1, origin, NULL_VECTOR, true, 0.0);
AcceptEntityInput(medkit, "Kill");
if (g_hMedKitTimer[medkit] != INVALID_HANDLE)
CloseHandle(g_hMedKitTimer[medkit]);
g_hMedKitTimer[medkit] = INVALID_HANDLE;
}
public Action:OnTouch(medkit, entity)
{
if (entity < 1 || entity > MaxClients || !IsClientInGame(entity) || !IsPlayerAlive(entity) || GetEntProp(medkit, Prop_Send, "m_PredictableID") == entity || GetClientHealth(entity) == 100) {
SetEntProp(medkit, Prop_Data, "m_CollisionGroup", 2);
return;
}
SetEntityHealth(entity, GetEntProp(entity, Prop_Data, "m_iMaxHealth"));
new Float:origin[3];
EmitSoundToAll(HEALTHKIT_SOUND, entity, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 1.0, SNDPITCH_NORMAL, -1, origin, NULL_VECTOR, true, 0.0);
AcceptEntityInput(medkit, "Kill");
if (g_hMedKitTimer[medkit] != INVALID_HANDLE)
CloseHandle(g_hMedKitTimer[medkit]);
g_hMedKitTimer[medkit] = INVALID_HANDLE;
}
чтобы не создавать новую тему пишу сюда, имеется код аптечки, проблема в том, что игроки застревают в ней, когда она на землеПытаюсь исправить этимPHP:public Action:OnTouch(medkit, entity) { if (entity < 1 || entity > MaxClients || !IsClientInGame(entity) || !IsPlayerAlive(entity) || GetEntProp(medkit, Prop_Send, "m_PredictableID") == entity || GetClientHealth(entity) == 100) { return; } SetEntityHealth(entity, GetEntProp(entity, Prop_Data, "m_iMaxHealth")); new Float:origin[3]; EmitSoundToAll(HEALTHKIT_SOUND, entity, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 1.0, SNDPITCH_NORMAL, -1, origin, NULL_VECTOR, true, 0.0); AcceptEntityInput(medkit, "Kill"); if (g_hMedKitTimer[medkit] != INVALID_HANDLE) CloseHandle(g_hMedKitTimer[medkit]); g_hMedKitTimer[medkit] = INVALID_HANDLE; }игроки перестают застревать, но аптечка перестает выполнять свою функцию лечить игроков, она просто лежит на земле, что я делаю не так?PHP:public Action:OnTouch(medkit, entity) { if (entity < 1 || entity > MaxClients || !IsClientInGame(entity) || !IsPlayerAlive(entity) || GetEntProp(medkit, Prop_Send, "m_PredictableID") == entity || GetClientHealth(entity) == 100) { SetEntProp(medkit, Prop_Data, "m_CollisionGroup", 2); return; } SetEntityHealth(entity, GetEntProp(entity, Prop_Data, "m_iMaxHealth")); new Float:origin[3]; EmitSoundToAll(HEALTHKIT_SOUND, entity, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 1.0, SNDPITCH_NORMAL, -1, origin, NULL_VECTOR, true, 0.0); AcceptEntityInput(medkit, "Kill"); if (g_hMedKitTimer[medkit] != INVALID_HANDLE) CloseHandle(g_hMedKitTimer[medkit]); g_hMedKitTimer[medkit] = INVALID_HANDLE; }
чтобы не создавать новую тему пишу сюда, имеется код аптечки, проблема в том, что игроки застревают в ней, когда она на землеПытаюсь исправить этимPHP:public Action:OnTouch(medkit, entity) { if (entity < 1 || entity > MaxClients || !IsClientInGame(entity) || !IsPlayerAlive(entity) || GetEntProp(medkit, Prop_Send, "m_PredictableID") == entity || GetClientHealth(entity) == 100) { return; } SetEntityHealth(entity, GetEntProp(entity, Prop_Data, "m_iMaxHealth")); new Float:origin[3]; EmitSoundToAll(HEALTHKIT_SOUND, entity, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 1.0, SNDPITCH_NORMAL, -1, origin, NULL_VECTOR, true, 0.0); AcceptEntityInput(medkit, "Kill"); if (g_hMedKitTimer[medkit] != INVALID_HANDLE) CloseHandle(g_hMedKitTimer[medkit]); g_hMedKitTimer[medkit] = INVALID_HANDLE; }игроки перестают застревать, но аптечка перестает выполнять свою функцию лечить игроков, она просто лежит на земле, что я делаю не так?PHP:public Action:OnTouch(medkit, entity) { if (entity < 1 || entity > MaxClients || !IsClientInGame(entity) || !IsPlayerAlive(entity) || GetEntProp(medkit, Prop_Send, "m_PredictableID") == entity || GetClientHealth(entity) == 100) { SetEntProp(medkit, Prop_Data, "m_CollisionGroup", 2); return; } SetEntityHealth(entity, GetEntProp(entity, Prop_Data, "m_iMaxHealth")); new Float:origin[3]; EmitSoundToAll(HEALTHKIT_SOUND, entity, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 1.0, SNDPITCH_NORMAL, -1, origin, NULL_VECTOR, true, 0.0); AcceptEntityInput(medkit, "Kill"); if (g_hMedKitTimer[medkit] != INVALID_HANDLE) CloseHandle(g_hMedKitTimer[medkit]); g_hMedKitTimer[medkit] = INVALID_HANDLE; }
if (DispatchSpawn(entity)) {
SetEntProp(entity, Prop_Send, "m_usSolidFlags", 8);
SetEntProp(entity, Prop_Send, "m_nSolidType", 6);
}
копай в эту сторону