Написание плагинов

Rezder

Участник
Сообщения
153
Реакции
8
@Rezder, там ещё пара строк ниже должна была писаться
L 05/05/2019 - 13:30:23: [SM] Exception reported: Client index 0 is not valid
L 05/05/2019 - 13:30:23: [SM] Blaming: SpecialTeamBalancer_v0.5.0.smx
L 05/05/2019 - 13:30:23: [SM] Call stack trace:
L 05/05/2019 - 13:30:23: [SM] [0] CS_SwitchTeam
L 05/05/2019 - 13:30:23: [SM] [1] Line 88, E:\ CSGO\Server\compile\addons\sourcemod\scripting\SpecialTeamBalancer_v0.5.0.sp::PTB
L 05/05/2019 - 13:30:23: [SM] [2] Line 40, E:\ CSGO\Server\compile\addons\sourcemod\scripting\SpecialTeamBalancer_v0.5.0.sp::RP

Соррь не выделил)
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
L 05/05/2019 - 13:30:23: [SM] Exception reported: Client index 0 is not valid
L 05/05/2019 - 13:30:23: [SM] Blaming: SpecialTeamBalancer_v0.5.0.smx
L 05/05/2019 - 13:30:23: [SM] Call stack trace:
L 05/05/2019 - 13:30:23: [SM] [0] CS_SwitchTeam
L 05/05/2019 - 13:30:23: [SM] [1] Line 88, E:\ CSGO\Server\compile\addons\sourcemod\scripting\SpecialTeamBalancer_v0.5.0.sp::PTB
L 05/05/2019 - 13:30:23: [SM] [2] Line 40, E:\ CSGO\Server\compile\addons\sourcemod\scripting\SpecialTeamBalancer_v0.5.0.sp::RP

Соррь не выделил)
Может, в этой версии всё нормально. Долгое время использую её на разных серверах. Вроде таких ошибок не замечал
 

Вложения

  • SpecialTeamBalancer.sp
    4.5 КБ · Просмотры: 6

Rezder

Участник
Сообщения
153
Реакции
8
Может, в этой версии всё нормально. Долгое время использую её на разных серверах. Вроде таких ошибок не замечал
Ок проверю, спасибо, да с моим тоже норм было но после обновы это появилось
 

Mr.Black

Участник
Сообщения
145
Реакции
61
Добрый день!
Нужен плагин, блокирующий переключение камеры (переключение на вид от третьего лица или полёт камеры) при наблюдении за игроком как в спектрах, так и наблюдая после смерти. Должен быть доступен только вид от первого лица, а также наблюдение как за своими тимейтами, так и за противоположной командой. Был бы крайне признателен.
 

smxnet

Участник
Сообщения
80
Реакции
4
Привет ребят помогите найти плагин или кто может написать небольшой

сделать так, чтобы игроки, заходящие на сервер после 10 секунд от начала раунда, не спавнились (сервер css steam)
 

Туник

Участник
Сообщения
1,281
Реакции
263
@over_trax, У меня стоит на сервере такой плагин, поправь если нужно, тут выдаются мины рандомно игрокам, по 3 шт!
PHP:
#include <sdktools_functions>

#pragma newdecls required

#define GIVE_CHANCE    2

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

public void Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
    for (int i = 1; i <= MaxClients; ++i)
    {
        if (IsClientInGame(i) && IsPlayerAlive(i) && GetRandomInt(0, GIVE_CHANCE)) GivePlayerItem(i, "weapon_bumpmine");
    }
}
 

over_trax

Участник
Сообщения
1,451
Реакции
488
@over_trax, У меня стоит на сервере такой плагин, поправь если нужно, тут выдаются мины рандомно игрокам, по 3 шт!
PHP:
#include <sdktools_functions>

#pragma newdecls required

#define GIVE_CHANCE    2

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

public void Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
    for (int i = 1; i <= MaxClients; ++i)
    {
        if (IsClientInGame(i) && IsPlayerAlive(i) && GetRandomInt(0, GIVE_CHANCE)) GivePlayerItem(i, "weapon_bumpmine");
    }
}
выдается не всем, нужно что бы не со старта, а со второй секунда, к примеру
 

Туник

Участник
Сообщения
1,281
Реакции
263
@over_trax, я тебе же написал что тут рандомно выдаются мины, попроси чтобы поправили как тебе нужно!
 

Rezder

Участник
Сообщения
153
Реакции
8
Помогите пофиксить ошибку пж
L 05/07/2019 - 19:01:17: [SM] Blaming: drapi_show_damage.smx
L 05/07/2019 - 19:01:17: [SM] Call stack trace:
L 05/07/2019 - 19:01:17: [SM] [0] PrintHintText
L 05/07/2019 - 19:01:17: [SM] [1] Line 704, C:\Users\josaf\Google Drive\ZK Servidores\Addons\Counter Strike Global Offensive\Editar Plugins\addons\sourcemod\scripting\drapi_show_damage.sp::ShowDamage
L 05/07/2019 - 19:01:17: [SM] [2] Line 617, C:\Users\josaf\Google Drive\ZK Servidores\Addons\Counter Strike Global Offensive\Editar Plugins\addons\sourcemod\scripting\drapi_show_damage.sp::TimerData_ShowDamage
 

Вложения

  • drapi_show_damage.sp
    29.1 КБ · Просмотры: 5

Mr_panica

XenForo one 💖
Сообщения
921
Реакции
435
Помогите пофиксить ошибку пж
L 05/07/2019 - 19:01:17: [SM] Blaming: drapi_show_damage.smx
L 05/07/2019 - 19:01:17: [SM] Call stack trace:
L 05/07/2019 - 19:01:17: [SM] [0] PrintHintText
L 05/07/2019 - 19:01:17: [SM] [1] Line 704, C:\Users\josaf\Google Drive\ZK Servidores\Addons\Counter Strike Global Offensive\Editar Plugins\addons\sourcemod\scripting\drapi_show_damage.sp::ShowDamage
L 05/07/2019 - 19:01:17: [SM] [2] Line 617, C:\Users\josaf\Google Drive\ZK Servidores\Addons\Counter Strike Global Offensive\Editar Plugins\addons\sourcemod\scripting\drapi_show_damage.sp::TimerData_ShowDamage
Почему вы всегда кидаете неполные логи?
Одной строчков выше кинь.
 

Rezder

Участник
Сообщения
153
Реакции
8
Почему вы всегда кидаете неполные логи?
Одной строчков выше кинь.
Там выше ошибка другого плагина я о нём позже думаю написать, хотя мб отсутствие натива и к этому относится, вот полностью ошибка
L 05/07/2019 - 19:01:17: [SM] Exception reported: Native is not bound
L 05/07/2019 - 19:01:17: [SM] Blaming: Blue Fade.smx
L 05/07/2019 - 19:01:17: [SM] Call stack trace:
L 05/07/2019 - 19:01:17: [SM] [1] BfWriteShort
L 05/07/2019 - 19:01:17: [SM] [2] Line 17, C:\Users\danii\Desktop\scripting\Blue Fade.sp::PerformFade
L 05/07/2019 - 19:01:17: [SM] [3] Line 32, C:\Users\danii\Desktop\scripting\Blue Fade.sp::Event_PlayerDeath
L 05/07/2019 - 19:01:17: [SM] Blaming: drapi_show_damage.smx
L 05/07/2019 - 19:01:17: [SM] Call stack trace:
L 05/07/2019 - 19:01:17: [SM] [0] PrintHintText
L 05/07/2019 - 19:01:17: [SM] [1] Line 704, C:\Users\josaf\Google Drive\ZK Servidores\Addons\Counter Strike Global Offensive\Editar Plugins\addons\sourcemod\scripting\drapi_show_damage.sp::ShowDamage
L 05/07/2019 - 19:01:17: [SM] [2] Line 617, C:\Users\josaf\Google Drive\ZK Servidores\Addons\Counter Strike Global Offensive\Editar Plugins\addons\sourcemod\scripting\drapi_show_damage.sp::TimerData_ShowDamage
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
а как у тебя в файле перевода drapi/drapi_show_damage.phrases.txt переводится текст "Show damage hit message body"

@Rezder, и как, SourceGuard работает?
--- Добавлено позже ---
Вообще попробуй Show Damage(RUS)
 

Rezder

Участник
Сообщения
153
Реакции
8
а как у тебя в файле перевода drapi/drapi_show_damage.phrases.txt переводится текст "Show damage hit message body"

@Rezder, и как, SourceGuard работает?
--- Добавлено позже ---
Вообще попробуй Show Damage(RUS)
Перевод завтра гляну, эта ошибка вместе с плагином на синий экран при убийстве, т.е плагин на синий экран крашит сервер, лезет ошибкв и от второго плагина т.к они оба регистрируют попадания
--- Добавлено позже ---
а как у тебя в файле перевода drapi/drapi_show_damage.phrases.txt переводится текст "Show damage hit message body"

@Rezder, и как, SourceGuard работает?
--- Добавлено позже ---
Вообще попробуй Show Damage(RUS)
#include <sourcemod>
new bool:g_bPlayerEnable[MAXPLAYERS + 1] = {false, true,...};

// Получение события смерти
public OnPluginStart()
{
HookEvent("player_death", Event_PlayerDeath);
HookEvent("player_disconnect", Event_PlayerDisconnect);
RegConsoleCmd("sm_fade", SwitchFade, "Включения/отключения эффекта.");
}
// Функция затемнения
PerformFade(client, duration, const color[4]) {
if (g_bPlayerEnable[client] && client) {
new Handle:message = StartMessageOne("Fade", client);

BfWriteShort(message, duration);
BfWriteShort(message, holdtime);
BfWriteShort(message, 0x0001);
BfWriteByte(message, color[0]);
BfWriteByte(message, color[1]);
BfWriteByte(message, color[2]);
BfWriteByte(message, color[3]);

EndMessage();
}
}

// Получение игрока-убийцы, применение к нему функции затемнения
public Event_PlayerDeath(Handle:event, String:name[], bool:dontBroadcast)
{
PerformFade(GetClientOfUserId(GetEventInt(event, "attacker")), 300, {0, 0, 200, 51});
// PerformFade(клиент, продолжительность, {красный, зеленый, синий, прозрачность})
}

public Event_PlayerDisconnect(Handle:event, String:name[], bool:dontBroadcast) g_bPlayerEnable[GetClientOfUserId(GetEventInt(event, "userid"))] = true;

public Action:SwitchFade(client, args)
{
if (client)
{
PrintToChat(client, "\04[BlueScreen] \x01Вы %sключили синий экран при убийстве.", (g_bPlayerEnable[client] = !g_bPlayerEnable[client]) ? "в":"от");
}
return Plugin_Handled;
}
--- Добавлено позже ---
Перевод завтра гляну, эта ошибка вместе с плагином на синий экран при убийстве, т.е плагин на синий экран крашит сервер, лезет ошибкв и от второго плагина т.к они оба регистрируют попадания
--- Добавлено позже ---

#include <sourcemod>
new bool:g_bPlayerEnable[MAXPLAYERS + 1] = {false, true,...};

// Получение события смерти
public OnPluginStart()
{
HookEvent("player_death", Event_PlayerDeath);
HookEvent("player_disconnect", Event_PlayerDisconnect);
RegConsoleCmd("sm_fade", SwitchFade, "Включения/отключения эффекта.");
}
// Функция затемнения
PerformFade(client, duration, const color[4]) {
if (g_bPlayerEnable[client] && client) {
new Handle:message = StartMessageOne("Fade", client);

BfWriteShort(message, duration);
BfWriteShort(message, holdtime);
BfWriteShort(message, 0x0001);
BfWriteByte(message, color[0]);
BfWriteByte(message, color[1]);
BfWriteByte(message, color[2]);
BfWriteByte(message, color[3]);

EndMessage();
}
}

// Получение игрока-убийцы, применение к нему функции затемнения
public Event_PlayerDeath(Handle:event, String:name[], bool:dontBroadcast)
{
PerformFade(GetClientOfUserId(GetEventInt(event, "attacker")), 300, {0, 0, 200, 51});
// PerformFade(клиент, продолжительность, {красный, зеленый, синий, прозрачность})
}

public Event_PlayerDisconnect(Handle:event, String:name[], bool:dontBroadcast) g_bPlayerEnable[GetClientOfUserId(GetEventInt(event, "userid"))] = true;

public Action:SwitchFade(client, args)
{
if (client)
{
PrintToChat(client, "\04[BlueScreen] \x01Вы %sключили синий экран при убийстве.", (g_bPlayerEnable[client] = !g_bPlayerEnable[client]) ? "в":"от");
}
return Plugin_Handled;
}
Выше ошибка при краше от этого плагина, мб его получится фиксануть?
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Rezder, а игра у тебя какая, CSGO?
Если да, то синий экран у тебя и не должен вообще работать, т.к. CSGO поддерживает только Protobuf, а плагин юзает BitBuf
--- Добавлено позже ---
Да ещё в коде нет всех необходимых проверок в обработке события player_death
--- Добавлено позже ---
@Rezder, вот этот код должен работать и на CSGO, и на CSS
 

Вложения

  • blue_fade_kill.sp
    1.7 КБ · Просмотры: 17
Последнее редактирование:

Rezder

Участник
Сообщения
153
Реакции
8
@Rezder, а игра у тебя какая, CSGO?
Если да, то синий экран у тебя и не должен вообще работать, т.к. CSGO поддерживает только Protobuf, а плагин юзает BitBuf
--- Добавлено позже ---
Да ещё в коде нет всех необходимых проверок в обработке события player_death
--- Добавлено позже ---
@Rezder, вот этот код должен работать и на CSGO, и на CSS
Спасибо, сегодня попробую, да кс го, та я искал код/плагин для кс го, нашёл этот только за 2017 год
 

Mr.Black

Участник
Сообщения
145
Реакции
61
Привет!
Помогите, пожалуйста, найти или написать плагин, блокирующий переключение камеры (переключение на вид от третьего лица или полёт камеры) при наблюдении за игроком как в спектрах, так и наблюдая после смерти. Должен быть доступен только вид от первого лица, а также наблюдение как за своими тимейтами, так и за противоположной командой. Был бы крайне признателен.
 

Felton

Участник
Сообщения
799
Реакции
59
Вставьте пожалуйста в этот код квар включения
C-подобный:
/**
 * HpRegeneration plugin by bl4nk
 *
 * Description:
 *   When a player gets hurt, they regenerate 'x' amount of life every 'y' seconds until they reach 'z' health.
 *
 * Commands and Examples:
 *   sm_hpregeneration_enable - Enables the HpRegeneration plugin.
 *     - 0 = off
 *     - 1 = on (default)
 *   sm_hpregeneration_amount - Amount of life to heal per regeneration tick.
 *     - 10 = 10 health per tick (default)
 *     - 25 = 25 health per tick
 *   sm_hpregeneration_health - Health to regenerate to, based on the control mode.
 *     - 100 = Regenerate to 100 health (default)
 *     - 150 = Regenerate to 150 health
 *   sm_hpregeneration_tickrate - Time, in seconds, between each regeneration tick.
 *     - 5 = Regenerate health every 5 seconds
 *     - 10 = Regenerate health every 10 seconds (default)
 *   sm_hpregeneration_respawn - Enables healing through respawns.
 *     - 0 = When a player respawns, their health will stop regenerating (default)
 *     - 1 = When a player respawns, their health will continue to regenerate
 *   sm_hpregeneration_bots - Enables bots regenerating their life.
 *     - 0 = Bots do not regenerate life (default)
 *     - 1 = Bots do regenerate life
 *   sm_hpregeneration_mode - Controls the regeneration mode.
 *     - 1 = Players heal to the amount of life defined by the health cvar (default)
 *     - 2 = Players heal to their default max life plus the amount of life defined by the health cvar
 *
 * Thanks to:
 *   MaTTe (mateo10) for making the original "HP Regeneration" plugin.
 *
 * Changelog at http://forums.alliedmods.net/showthread.php?t=66154
 */

#pragma semicolon 1

#include <sourcemod>

#define PLUGIN_VERSION "1.1.1"

new MaxHealth[MAXPLAYERS + 1];

new bool:isHooked = false;
new bool:Respawn = false;
new bool:Mode = false;

new Handle:cvarEnable;
new Handle:cvarAmount;
new Handle:cvarHealth;
new Handle:cvarTickRate;
new Handle:cvarRespawn;
new Handle:cvarBot;
new Handle:cvarMode;
new Handle:clientTimer[MAXPLAYERS + 1];

new String:modName[32];

public Plugin:myinfo =
{
    name = "HpRegeneration",
    author = "bl4nk",
    description = "After being damaged, regenerate health over time.",
    version = PLUGIN_VERSION,
    url = "http://forums.alliedmods.net"
};

public OnPluginStart()
{
    CreateConVar("sm_hpregeneration_version", PLUGIN_VERSION, "HpRegeneration Version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
    cvarEnable = CreateConVar("sm_hpregeneration_enable", "1", "Enables the HpRegeneration plugin.", FCVAR_PLUGIN, true, 0.0, true, 1.0);
    cvarAmount = CreateConVar("sm_hpregeneration_amount", "10", "Amount of life to heal per regeneration tick (Def 10)", FCVAR_PLUGIN, true, 0.0, false, _);
    cvarHealth = CreateConVar("sm_hpregeneration_health", "100", "Health to regenerate to, based on the control mode (Def 100)", FCVAR_PLUGIN, true, 0.0, false, _);
    cvarTickRate = CreateConVar("sm_hpregeneration_tickrate", "10", "Time, in seconds, between each regeneration tick (Def 10)", FCVAR_PLUGIN, true, 1.0, false, _);
    cvarRespawn = CreateConVar("sm_hpregeneration_respawn", "0", "Enables healing through respawns.", FCVAR_PLUGIN, true, 0.0, true, 1.0);
    cvarBot = CreateConVar("sm_hpregeneration_bots", "0", "Enables bots regenerating their life.", FCVAR_PLUGIN, true, 0.0, true, 1.0);
    cvarMode = CreateConVar("sm_hpregeneration_mode", "1", "Controls the regeneration mode (Def 1)", FCVAR_PLUGIN, true, 1.0, true, 2.0);

    AutoExecConfig(true, "plugin.hpregeneration");
    CreateTimer(3.0, OnPluginStart_Delayed);
    GetGameFolderName(modName, sizeof(modName));
}

public Action:OnPluginStart_Delayed(Handle:timer)
{
    if (GetConVarInt(cvarEnable))
    {
        isHooked = true;
        LogMessage("[HpRegeneration] - Loaded");
    }

    if (GetConVarInt(cvarRespawn))
        Respawn = true;

    if (GetConVarInt(cvarMode) == 1)
        Mode = true;

    HookEvent("player_hurt", event_PlayerHurt);
    HookEvent("player_spawn", event_PlayerSpawn);

    HookConVarChange(cvarEnable, CvarChange);
    HookConVarChange(cvarRespawn, CvarChange);
    HookConVarChange(cvarMode, CvarChange);
    HookConVarChange(cvarTickRate, CvarChange);
}


public event_PlayerHurt(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (isHooked)
    {
        new client = GetClientOfUserId(GetEventInt(event, "userid"));

        if (IsFakeClient(client) && !GetConVarInt(cvarBot))
            return;

        if (clientTimer[client] == INVALID_HANDLE)
            clientTimer[client] = CreateTimer(GetConVarFloat(cvarTickRate), RegenTick, client, TIMER_REPEAT);
    }
}

public Action:RegenTick(Handle:timer, any:client)
{
    new clientHp = GetPlayerHealth(client);

    if (Mode)
    {
        if (clientHp < GetConVarInt(cvarHealth))
        {
            if (clientHp + GetConVarInt(cvarAmount) > GetConVarInt(cvarHealth))
            {
                if (strcmp(modName, "tf") == 0)
                    if (clientHp + GetConVarInt(cvarAmount) > MaxHealth[client])
                        SetPlayerHealth(client, GetConVarInt(cvarHealth), true);
                    else
                        SetPlayerHealth(client, GetConVarInt(cvarHealth), true, true);
                else
                    SetPlayerHealth(client, GetConVarInt(cvarHealth));

                KillClientTimer(client);
            }
            else
            {
                if (strcmp(modName, "tf") == 0)
                    if (clientHp + GetConVarInt(cvarAmount) > MaxHealth[client])
                        SetPlayerHealth(client, clientHp + GetConVarInt(cvarAmount), true);
                    else
                        SetPlayerHealth(client, clientHp + GetConVarInt(cvarAmount), true, true);
                else
                    SetPlayerHealth(client, clientHp + GetConVarInt(cvarAmount));
            }
        }
        else
            KillClientTimer(client);
    }
    else
    {
        if (clientHp < MaxHealth[client] + GetConVarInt(cvarHealth))
        {
            if (clientHp + GetConVarInt(cvarAmount) > MaxHealth[client] + GetConVarInt(cvarHealth))
            {
                if (strcmp(modName, "tf") == 0)
                    SetPlayerHealth(client, MaxHealth[client] + GetConVarInt(cvarHealth), true);
                else
                    SetPlayerHealth(client, MaxHealth[client] + GetConVarInt(cvarHealth));

                KillClientTimer(client);
            }
            else if (strcmp(modName, "tf") == 0)
                if (clientHp + GetConVarInt(cvarAmount) > MaxHealth[client])
                    SetPlayerHealth(client, clientHp + GetConVarInt(cvarAmount), true);
                else
                    SetPlayerHealth(client, clientHp + GetConVarInt(cvarAmount), true, true);
            else
                SetPlayerHealth(client, clientHp + GetConVarInt(cvarAmount));
        }
        else
            KillClientTimer(client);
    }
}

public event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    if (client > 0)
        CreateTimer(0.0, getMaxHealth, client);

    if (!Respawn)
    {
        if (clientTimer[client] != INVALID_HANDLE)
            KillClientTimer(client);
    }
}

public Action:getMaxHealth(Handle:timer, any:client)
    MaxHealth[client] = GetPlayerHealth(client, true);

public CvarChange(Handle:convar, const String:oldValue[], const String:newValue[])
{
    if (convar == cvarEnable)
    {
        if (!GetConVarInt(cvarEnable))
        {
            if (isHooked)
            {
                isHooked = false;
                KillClientTimer(_, true);
                LogMessage("[HpRegeneration] - Plugin disabled.");
            }
        }
        else if (!isHooked)
        {
            isHooked = true;
            LogMessage("[HpRegeneration] - Plugin enabled.");
        }
    }
    else if (convar == cvarRespawn)
    {
        if (!GetConVarInt(cvarRespawn))
        {
            if (Respawn)
            {
                Respawn = false;
                LogMessage("[HpRegeneration] - Regeneration through respawn disabled.");
            }
        }
        else if (!Respawn)
        {
            Respawn = true;
            LogMessage("[HpRegeneration] - Regeneration through respawn enabled.");
        }
    }
    else if (convar == cvarMode)
    {
        if (GetConVarInt(cvarMode) == 2)
        {
            if (Mode)
            {
                Mode = false;
                LogMessage("[HpRegeneration] - Regeneration mode changed to 2.");
            }
        }
        else if (!Mode)
        {
            Mode = true;
            LogMessage("[HpRegeneration] - Regeneration mode changed to 1.");
        }
    }
    else if (convar == cvarTickRate)
        ChangeTickRate();
}

public OnClientDisconnect(client)
    if (clientTimer[client] != INVALID_HANDLE)
        KillClientTimer(client);

public OnMapEnd()
    KillClientTimer(_, true);

GetPlayerHealth(entity, bool:maxHealth=false)
{
    if (maxHealth)
    {
        if (strcmp(modName, "tf") == 0)
            return GetEntData(entity, FindDataMapOffs(entity, "m_iMaxHealth"));
        else
            return 100;
    }
    return GetEntData(entity, FindDataMapOffs(entity, "m_iHealth"));
}

SetPlayerHealth(entity, amount, bool:maxHealth=false, bool:ResetMax=false)
{
    if (maxHealth)
        if (ResetMax)
            SetEntData(entity, FindDataMapOffs(entity, "m_iMaxHealth"), MaxHealth[entity], 4, true);
        else
            SetEntData(entity, FindDataMapOffs(entity, "m_iMaxHealth"), amount, 4, true);

    SetEntityHealth(entity, amount);
}

KillClientTimer(client=0, bool:all=false)
{
    if (all)
    {
        for (new i; i <= MAXPLAYERS; i++)
        {
            if (clientTimer[i] != INVALID_HANDLE)
            {
                KillTimer(clientTimer[client]);
                clientTimer[client] = INVALID_HANDLE;
            }
        }
        return;
    }

    KillTimer(clientTimer[client]);
    clientTimer[client] = INVALID_HANDLE;
}

ChangeTickRate()
{
    for (new i; i <= MAXPLAYERS; i++)
    {
        if (clientTimer[i] != INVALID_HANDLE)
        {
            KillClientTimer(i);
            clientTimer[i] = CreateTimer(GetConVarFloat(cvarTickRate), RegenTick, i, TIMER_REPEAT);
        }
    }
}
или отключения админских прав ADMFLAG_BAN
 

ka3a4ok1303

Участник
Сообщения
30
Реакции
0
upload_2019-5-12_10-24-47.png
Чтобы в чат ничего не писалось, нужно просто убрать её? или как отредактировать сообщение в чате?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@ka3a4ok1303, ищи в коде PrintToChat или подобное
если удалишь 27-ю строку, то ты просто не скомпилишь плагин
 
Сверху Снизу