Need a plug-in to remove corpses after death as on THE DM - with quartz on turning on and disabling the plug-in
Нужен плагин на удаление трупов после смерти как на DM - с кварам на включение и отключения плагина
// Через сколько секунд растворить труп?
// -
// Default: "2"
// Minimum: "20.000000"
sm_dissolve_delay "2"
// 1 - включить,0 - выключить плагин.
// -
// Default: "0"
// Minimum: "0.000000"
// Maximum: "1.000000"
sm_dissolve_enable "1"
// 0 - растворяется в воздухе, 1 и 2 растворяется на земле, 3 труп быстро растворяется
// -
// Default: "3"
// Minimum: "0.000000"
// Maximum: "3.000000"
sm_dissolve_type "3"
#pragma semicolon 1
#pragma newdecls required
#include <sdktools>
Handle cvDelay = null, cvType = null, bEnable = null;
public Plugin myinfo = {
name = "Dissolving dead/Растворять тела",
author = "L.Duke, babka68",
description = "Dissolves dead bodies/Растворяет мертвые тела",
version = "1.1",
url = "lduke.com, tmb-css.ru, helper-source.ru"
};
public void OnPluginStart()
{
HookEvent("player_death", PlayerDeath);
bEnable = CreateConVar("sm_dissolve_enable", "0", "1 - включить,0 - выключить плагин.", _, true, 0.0, true, 1.0);
cvDelay = CreateConVar("sm_dissolve_delay", "2", "Через сколько секунд растворить труп?");
cvType = CreateConVar("sm_dissolve_type", "3", "0 - растворяется в воздухе, 1 и 2 растворяется на земле, 3 труп быстро растворяется");
AutoExecConfig(true, "dissolve");
}
public void OnEventShutdown()
{
UnhookEvent("player_death", PlayerDeath);
}
public Action PlayerDeath(Handle event, const char[] name, bool dontBroadcast)
{
if (!GetConVarBool(bEnable))
{
return Plugin_Continue;
}
int client;
client = GetClientOfUserId(GetEventInt(event, "userid"));
float delay = GetConVarFloat(cvDelay);
if (delay > 0.0)
{
CreateTimer(delay, Dissolve, client);
}
else
{
Dissolve(null, client);
}
return Plugin_Continue;
}
public Action Dissolve(Handle timer, any client)
{
if (!IsValidEntity(client))
{
return;
}
int ragdoll = GetEntPropEnt(client, Prop_Send, "m_hRagdoll");
if (ragdoll < 0)
{
PrintToServer("[DISSOLVE] Не удалось получить тряпичную куклу для игрока!");
return;
}
char dname[32], dtype[32];
Format(dname, sizeof(dname), "dis_%d", client);
Format(dtype, sizeof(dtype), "%d", GetConVarInt(cvType));
int ent = CreateEntityByName("env_entity_dissolver");
if (ent > 0)
{
DispatchKeyValue(ragdoll, "targetname", dname);
DispatchKeyValue(ent, "dissolvetype", dtype);
DispatchKeyValue(ent, "target", dname);
AcceptEntityInput(ent, "Dissolve");
AcceptEntityInput(ent, "kill");
}
}
[DISSOLVE] Не удалось получить тряпичную куклу для игрока!Пробуйте,после 1 запуска палагина создастся конфиг по пути /cfg/sourcemod/dissolve.cfg
C-подобный:// Через сколько секунд растворить труп? // - // Default: "2" // Minimum: "20.000000" sm_dissolve_delay "2" // 1 - включить,0 - выключить плагин. // - // Default: "0" // Minimum: "0.000000" // Maximum: "1.000000" sm_dissolve_enable "1" // 0 - растворяется в воздухе, 1 и 2 растворяется на земле, 3 труп быстро растворяется // - // Default: "3" // Minimum: "0.000000" // Maximum: "3.000000" sm_dissolve_type "3"
C-подобный:#pragma semicolon 1 #pragma newdecls required #include <sdktools> Handle cvDelay = null, cvType = null, bEnable = null; public Plugin myinfo = { name = "Dissolving dead/Растворять тела", author = "L.Duke, babka68", description = "Dissolves dead bodies/Растворяет мертвые тела", version = "1.1", url = "lduke.com, tmb-css.ru, helper-source.ru" }; public void OnPluginStart() { HookEvent("player_death", PlayerDeath); bEnable = CreateConVar("sm_dissolve_enable", "0", "1 - включить,0 - выключить плагин.", _, true, 0.0, true, 1.0); cvDelay = CreateConVar("sm_dissolve_delay", "2", "Через сколько секунд растворить труп?"); cvType = CreateConVar("sm_dissolve_type", "3", "0 - растворяется в воздухе, 1 и 2 растворяется на земле, 3 труп быстро растворяется"); AutoExecConfig(true, "dissolve"); } public void OnEventShutdown() { UnhookEvent("player_death", PlayerDeath); } public Action PlayerDeath(Handle event, const char[] name, bool dontBroadcast) { if (!GetConVarBool(bEnable)) { return Plugin_Continue; } int client; client = GetClientOfUserId(GetEventInt(event, "userid")); float delay = GetConVarFloat(cvDelay); if (delay > 0.0) { CreateTimer(delay, Dissolve, client); } else { Dissolve(null, client); } return Plugin_Continue; } public Action Dissolve(Handle timer, any client) { if (!IsValidEntity(client)) { return; } int ragdoll = GetEntPropEnt(client, Prop_Send, "m_hRagdoll"); if (ragdoll < 0) { PrintToServer("[DISSOLVE] Не удалось получить тряпичную куклу для игрока!"); return; } char dname[32], dtype[32]; Format(dname, sizeof(dname), "dis_%d", client); Format(dtype, sizeof(dtype), "%d", GetConVarInt(cvType)); int ent = CreateEntityByName("env_entity_dissolver"); if (ent > 0) { DispatchKeyValue(ragdoll, "targetname", dname); DispatchKeyValue(ent, "dissolvetype", dtype); DispatchKeyValue(ent, "target", dname); AcceptEntityInput(ent, "Dissolve"); AcceptEntityInput(ent, "kill"); } }
Да,и лежат до конца раунда@Bason, ну так во время игры трупы вообще появляются?
Они должны или лежать до конца раунда или даже не появляться, емнип.
Плагины могут убирать их через время или сразу.
В КСГО есть клиентский квар cl_disable_ragdolls, который должен убирать рэгдоллы в клиенте.
#pragma semicolon 1
#pragma newdecls required
#include <sdktools_entinput>
#include <sdktools_functions>
#if SOURCEMOD_V_MINOR >= 9
#include <sdktools_variant_t>
#endif
bool
bEnable;
int
iType;
float
fDelay;
public void OnPluginStart()
{
ConVar cvar;
cvar = CreateConVar("sm_dissolve_enable", "0", "1 - включить,0 - выключить плагин.", _, true, _, true, 1.0);
cvar.AddChangeHook(CVarChanged_Enable);
CVarChanged_Enable(cvar, NULL_STRING, NULL_STRING);
cvar = CreateConVar("sm_dissolve_delay", "2", "Через сколько секунд растворить труп?", _, true);
cvar.AddChangeHook(CVarChanged_Delay);
fDelay = cvar.FloatValue;
// тип исчезновения: 0 - Energy, 1 - Heavy electrical, 2 - Light electrical, 3 - Core effect
cvar = CreateConVar("sm_dissolve_type", "3", "0 - растворяется в воздухе, 1 и 2 растворяется на земле, 3 труп быстро растворяется", _, true, _, true, 3.0);
cvar.AddChangeHook(CVarChanged_Type);
iType = cvar.IntValue;
AutoExecConfig(true, "dissolve");
}
public void CVarChanged_Enable(ConVar cvar, const char[] oldValue, const char[] newValue)
{
bEnable = cvar.BoolValue;
static bool hooked;
if(hooked == bEnable) return;
if((hooked = !hooked)) HookEvent("player_death", Event_Death);
else UnhookEvent("player_death", Event_Death);
}
public void CVarChanged_Delay(ConVar cvar, const char[] oldValue, const char[] newValue)
{
fDelay = cvar.FloatValue;
}
public void CVarChanged_Type(ConVar cvar, const char[] oldValue, const char[] newValue)
{
iType = cvar.IntValue;
}
public void Event_Death(Event event, const char[] name, bool dontBroadcast)
{
CreateTimer(fDelay, Dissolve, event.GetInt("userid"));
}
public Action Dissolve(Handle timer, any client)
{
if(!(client = GetClientOfUserId(client)))
return Plugin_Stop;
static int offset = -1;
if(offset == -1 && (offset = FindSendPropInfo("CCSPlayer", "m_hRagdoll")) == -1)
{
PrintToServer("[DISSOLVE] Unable to find offset \"CCSPlayer::m_hRagdoll!\"");
return Plugin_Stop;
}
int ragdoll = GetEntPropEnt(client, Prop_Send, "m_hRagdoll");
if(ragdoll == -1 || !IsValidEntity(ragdoll))
{
PrintToServer("[DISSOLVE] Unable to find player's ragdoll!");
return Plugin_Stop;
}
int ent = CreateEntityByName("env_entity_dissolver");
if(ent == -1)
{
AcceptEntityInput(ragdoll, "Kill");
return Plugin_Stop;
}
char buffer[16];
FormatEx(buffer, sizeof(buffer), "dis_%d", ragdoll);
DispatchKeyValue(ragdoll, "targetname", buffer);
DispatchKeyValue(ent, "target", buffer);
FormatEx(buffer, sizeof(buffer), "%d", iType);
DispatchKeyValue(ent, "dissolvetype", buffer);
SetVariantString("!activator");
AcceptEntityInput(ent, "SetParent", ragdoll, ent, 0);
AcceptEntityInput(ent, "Dissolve");
return Plugin_Stop;
}
Проверь папку со звуком(у себя и на сервере), возможно там не тот лежитЗдравствуйте! Когда мяч приземляется, издается звук гранаты, не могли бы исправить?
Заменял на звук и проблема остается таже.
Посмотреть вложение 77346
Как звучит на сервере - Action 05-05-2021 15-16-21.mp4
Как должен -
Это?Можно очистить игровой чат от сообщений? Не перехватом заблокировать сообщения, а очистка как clear в консоле
Нет, прям очистка(удаление) сообщений. Но как я понял это не возможно, что такой супер мини плагин добавили в ресурсы. Наверное и приветствие в чат есть в ресурсах который в 1 строку кода. А как мой chat bot добавить так это фигня.
никак. а влепить кучу строк пустых сообщений в чат якобы как чистка тоже не рекомендую. через пару таких манипуляций игра начнет намертво замирать при открытии чата а под конец и крашнет.(это для тех, кто предложит такой вариант).Можно очистить игровой чат от сообщений? Не перехватом заблокировать сообщения, а очистка как clear в консоле
FakeClients в гуглеНужен плагин который будет держать ботов в рабстве (в спектаторах) и при достижении на сервере n кол-ва игроков кикать их всех (cvar)
Попробуйпривет всем
можно как то сделать в плагине,чтоб осмотр модели был и с переди тоже?
А то получается осмотр модели идет только зад)
то-есть чтоб повернул в какое положения тебе надо,Он в том и остался.
Ну если можно сделать так конечно
заранее благодарю
думаю много кому пригодится такой