Revival

Samlam

Участник
Сообщения
4
Реакции
0
компилировать нужно именно тем компилятором, который идёт с тем SM, что используется на сервере, особенно если это SM для CSSv34
Подскажите как это сделать? Где найти компилятор подходящий? Или так сказать ткните носом куда смотреть?))
У себя в папках на сервере не нашел компилятора к сожалению...
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Samlam, в папке .../addons/sourcemod/scripting/ находится утилита compile.exe в случае винды и скрипт compile.sh в случае линуха.
 

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
Подскажите как это сделать? Где найти компилятор подходящий? Или так сказать ткните носом куда смотреть?))
У себя в папках на сервере не нашел компилятора к сожалению...
 

Samlam

Участник
Сообщения
4
Реакции
0
Вот же засада всплыла!!!
Оказывается это "Metamod:Source 1.10.4". Только понял что SourceMod Version: 1.6.3
Тогда вопрос в другом. Какая версия Revival подойдет под SourceMod Version: 1.6.3 ?

Накатить новый SourceMod не получается на арене. Сервер криво работать начинает и команды не принимает. Обновлений из панели тоже нет там.

Получается вариант у меня остается только один, искать плагин что бы работал на SourceMod Version: 1.6.3
 

Вложения

  • Безымянный2.jpg
    Безымянный2.jpg
    25.8 КБ · Просмотры: 13
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Samlam, самая свежая версия на старом синтаксисе - это 1.0.9
Больше я на старый синтаксис не переписывал (тогда было 800+ строк кода, сейчас же - почти 2000).
 

Endless Moon.

Что-то да умею..
Сообщения
368
Реакции
69
компилировать нужно именно тем компилятором, который идёт с тем SM, что используется на сервере, особенно если это SM для CSSv34
Помню компилил некоторые плагины другим билдом(который старее), но версия самого см. была такая же. Ну и плагины работали нормально. 🙃
Сообщения автоматически склеены:

Вот же засада всплыла!!!
Оказывается это "Metamod:Source 1.10.4". Только понял что SourceMod Version: 1.6.3
Тогда вопрос в другом. Какая версия Revival подойдет под SourceMod Version: 1.6.3 ?

Накатить новый SourceMod не получается на арене. Сервер криво работать начинает и команды не принимает. Обновлений из панели тоже нет там.

Получается вариант у меня остается только один, искать плагин что бы работал на SourceMod Version: 1.6.3
Бывает такое. Наверное, слоты.
Берите версию с форума арены и см. + мм 1.11. Не знаю, почему, но с их форума 1.11 работает нормально. Было такое же, пока не взял у них с форума.
 

Samlam

Участник
Сообщения
4
Реакции
0
@Samlam, самая свежая версия на старом синтаксисе - это 1.0.9
Больше я на старый синтаксис не переписывал (тогда было 800+ строк кода, сейчас же - почти 2000).
Огромное спасибо!!!
Всё получилось и заработало. Теперь буду тему изучать по плагину. Хочу поставить что бы возрождение было не по кнопке, а если в круг заходишь, автоматом поднимал игроков. И поставить иконки вместо цветных шаров. В остальном всё чётко! За плагин спасибо отдельное и огромное! Я новичок на форуме, если тут как то можно благодарность выразить подскажите какие варианты есть)
Сообщения автоматически склеены:

Помню компилил некоторые плагины другим билдом(который старее), но версия самого см. была такая же. Ну и плагины работали нормально. 🙃
Сообщения автоматически склеены:


Бывает такое. Наверное, слоты.
Берите версию с форума арены и см. + мм 1.11. Не знаю, почему, но с их форума 1.11 работает нормально. Было такое же, пока не взял у них с форума.
Спасибо за совет!!! Немного сервер обкатаю и думаю уже на 1.11 переходить пробовать. На 1.6.3 долго всё не продержится, да и плагины под новые делаются уже
 

Endless Moon.

Что-то да умею..
Сообщения
368
Реакции
69
Версия SM: 1.11
Версия плагина: "Revival" (1.1.5_17.10.2021) by Grey83"

Обнаружен баг, который довольно таки сильно портит игру.

После воскрешения игрока, возродившемуся игроку даётся блок на пару секунд(чтобы не застрял в земле), после окончания раунда - блок остаётся. Причём, он остаётся как в следующем раунде, так и в последующем и вообще, всегда... На сервере стоит NoBlock и логично, что игроки все проходят сквозь друг друга, но игрок, которого возродили - с блоком по кд. И получается так, что он может пройти сквозь игроков, а игроки нет. Тем самым, он может спокойно встать в игрока, а тот не сможет двигаться.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Endless Moon., какое значение вот этого квара в конфиге?
C-подобный:
sm_revival_noblock_time - длительность ноблока в секундах для воскрешённого (0 - ноблок выключен)
 

Endless Moon.

Что-то да умею..
Сообщения
368
Реакции
69
@Endless Moon., какое значение вот этого квара в конфиге?
C-подобный:
sm_revival_noblock_time - длительность ноблока в секундах для воскрешённого (0 - ноблок выключен)
sm_revival_noblock_time "2" - дефолтное значение.

Чтобы было меньше вопросов касательно команд - прикрепляю конфиг. Что надо, смотрите.
 

Вложения

  • revival.cfg
    10.1 КБ · Просмотры: 4

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Endless Moon., ну так выключи ноблок в revival. Это одна из причин почему я добавил этот квар, а не захардкодил длительность ноблока в исходнике.
Это не баг, а банальное нежелание читать описания кваров.
cvar = CreateConVar("sm_revival_noblock_time", "2", "Noblocking time after respawn (set 0 if you have any noblock plugin)", _, true);
 

Endless Moon.

Что-то да умею..
Сообщения
368
Реакции
69
@Endless Moon., ну так выключи ноблок в revival. Это одна из причин почему я добавил этот квар, а не захардкодил длительность ноблока в исходнике.
Это не баг, а банальное нежелание читать описания кваров.
cvar = CreateConVar("sm_revival_noblock_time", "2", "Noblocking time after respawn (set 0 if you have any noblock plugin)", _, true);
Так может стоит банально об этом написать в описании ресурса? Команды и их описание же дали. Или вы думаете, что каждый пользователь, который в этом не разбирается заходит и смотрит значение кваров в исходниках? Если я конкретно в этом не особо понимаю, то какие ко мне могут быть претензии? Я скачиваю ресурс и перед установкой полностью провожу ознакомление с описанием, требованием и прочим. Я не скачиваю ресурс для того, чтобы рыться в исходных файлов, что-то менять/добавлять или удалять(бывает, но очень редко).
Я мог точно также просто выключить эту функцию, ибо понятно было что из-за неё случается такое. Но я написал сюда, чтобы дали возможность оставить её включенной и исправили проблему с блоком в последующих раундах.
 

babka68

Участник
Сообщения
2,124
Реакции
956
Так может стоит банально об этом написать в описании ресурса? Команды и их описание же дали. Или вы думаете, что каждый пользователь, который в этом не разбирается заходит и смотрит значение кваров в исходниках? Если я конкретно в этом не особо понимаю, то какие ко мне могут быть претензии? Я скачиваю ресурс и перед установкой полностью провожу ознакомление с описанием, требованием и прочим. Я не скачиваю ресурс для того, чтобы рыться в исходных файлов, что-то менять/добавлять или удалять(бывает, но очень редко).
Причём тут исходник?
Все настраивается в конфигурационном файле
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Endless Moon., а банальная логика не подсказывала Вам, что если использовать больше одного плагина, который реализует ноблок, то могут возникнуть проблемы с коллизией?
Сообщения автоматически склеены:

Или вы думаете, что каждый пользователь, который в этом не разбирается заходит и смотрит значение кваров в исходниках?
revival.cfg:
// Noblocking time after respawn(set at 0 if you have any noblock plugin)
// -
// Default: "2"
// Minimum: "0.000000"
sm_revival_noblock_time "2"
 

Endless Moon.

Что-то да умею..
Сообщения
368
Реакции
69
@Endless Moon., а банальная логика не подсказывала Вам, что если использовать больше одного плагина, который реализует ноблок, то могут возникнуть проблемы с коллизией?
Но ведь это можно решить не выключая квар или нет? Будет какое-то обновление, которое излечит данную проблему или придётся забыть об этом кваре?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
кроме того описание можно посмотреть если просто вбить в консоль сервера строку sm_revival_noblock_time
Сообщения автоматически склеены:

@Endless Moon., скорей всего не будет никакого обновления решающего проблему: слишком геморно подстраиваться под всевозможные плагины и их настройки (не везде, кстати, коллизия меняется через изменение значения параметра m_CollisionGroup).
 

CTe6eJIeK_vRn

Участник
Сообщения
2,114
Реакции
1,867
кроме того описание можно посмотреть если просто вбить в консоль сервера строку sm_revival_noblock_time
Сообщения автоматически склеены:

@Endless Moon., скорей всего не будет никакого обновления решающего проблему: слишком геморно подстраиваться под всевозможные плагины и их настройки (не везде, кстати, коллизия меняется через изменение значения параметра m_CollisionGroup).
с этим фиксом Set Collision Group FIX, вроде не замечал багов :)


На другом сервере стоит такой(даже взял не помню где, что-то может сам поправлял):
C-подобный:
#include <sourcemod>

int g_offsCollisionGroup;
ConVar sm_noblock;
ConVar sm_noblock_nade;

public Plugin myinfo =
{
    name = "NoBlock",
    author = "Otstrel.ru Team, Xines",
    description = "Removes player collisions!",
    version = "2.0",
    url = ""
};

public void OnPluginStart()
{
    g_offsCollisionGroup = FindSendPropInfo("CBaseEntity", "m_CollisionGroup");
    if (g_offsCollisionGroup == -1) {
        PrintToServer("* FATAL ERROR: Failed to get offset for CBaseEntity::m_CollisionGroup");
    }
    else {
        HookEvent("player_spawn", OnSpawn, EventHookMode_Post);
        sm_noblock = CreateConVar("sm_noblock", "1", "Removes player vs. player collisions", FCVAR_NOTIFY, true, 0.0, true, 1.0);
        sm_noblock_nade = CreateConVar("sm_noblock_nade", "1", "Removes player vs. nade collisions", FCVAR_NOTIFY, true, 0.0, true, 1.0);
        HookConVarChange(sm_noblock, OnConVarChange);
    }
 
    AutoExecConfig(true, "noblock_v2");
}

public void OnConVarChange(Handle cvar, const char[] oldValue, const char[] newValue)
{
    switch (StringToInt(newValue))
    {
        case 0:
        {
            UnhookEvent("player_spawn", OnSpawn, EventHookMode_Post);
            Setblock();
        }
        case 1:
        {
            HookEvent("player_spawn", OnSpawn, EventHookMode_Post);
            Setblock();
        }
    }
}

public void OnEntityCreated(int entity, const char[] classname)
{
    if(GetConVarBool(sm_noblock) && GetConVarBool(sm_noblock_nade))
    {
        if (StrEqual(classname, "hegrenade_projectile") ||
            StrEqual(classname, "flashbang_projectile") ||
            StrEqual(classname, "smokegrenade_projectile")) {
            SetEntData(entity, g_offsCollisionGroup, 2, 4, true);
        }
    }
}

void Setblock()
{
    for (int i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(i) && IsPlayerAlive(i))
        {
            if(!GetConVarBool(sm_noblock)) {
                SetEntData(i, g_offsCollisionGroup, 5, 4, true);
            }
            if(GetConVarBool(sm_noblock)) {
                SetEntData(i, g_offsCollisionGroup, 2, 4, true);
            }
        }
    }
}

public Action OnSpawn(Event event, const char[] name, bool dontBroadcast)
{
    int entity = GetClientOfUserId(event.GetInt("userid"));
    SetEntData(entity, g_offsCollisionGroup, 2, 4, true);
    return Plugin_Continue;
}
):

Конфиг в закрепе. Ни разу не видел блокировку игроков.
 

Вложения

  • revival.cfg
    7.1 КБ · Просмотры: 4

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@CTe6eJIeK_vRn, код неоптимально написан (при каждом включении/выключении ноблока идёт цикл по всем игрокам и для каждого запрашивается значения квара 2 раза и при каждом создании энтити снова же запрашивается значение квара).
Я бы так сделал:
C-подобный:
#pragma semicolon 1

bool
    bHumans,
    bNades;
int
    iOffset;

public Plugin myinfo =
{
    name = "NoBlock",
    author = "Otstrel.ru Team, Xines",
    description = "Removes player collisions!",
    version = "2.0 (rewritten by Grey83)"
}

public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max)
{
    if((iOffset = FindSendPropInfo("CBaseEntity", "m_CollisionGroup")) > 0)
        return APLRes_Success;

    FormatEx(error, err_max, "Unable toi find offset CBaseEntity::m_CollisionGroup!");
    return APLRes_Failure;
}

public void OnPluginStart()
{
    ConVar cvar;
    cvar = CreateConVar("sm_noblock", "1", "Removes player vs. player collisions", _, true, _, true, 1.0);
    cvar.AddChangeHook(CVarChange_Humans);
    CVarChange_Humans(cvar, "", "");

    cvar = CreateConVar("sm_noblock_nade", "1", "Removes player vs. nade collisions", FCVAR_NOTIFY, true, _, true, 1.0);
    bNades = cvar.BoolValue;
    cvar.AddChangeHook(CVarChange_Nades);

    AutoExecConfig(true, "noblock_v2");
}

public void CVarChange_Humans(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    bHumans = cvar.BoolValue;

    static bool hooked;
    if(hooked == bHumans) return;

    if(!(hooked = !hooked))
        UnhookEvent("player_spawn", Event_Spawn);
    else HookEvent("player_spawn", Event_Spawn);

    for(int i = 1, val = bHumans ? 2 : 5; i <= MaxClients; i++)
        if(IsClientInGame(i) && IsPlayerAlive(i)) SetEntData(i, iOffset, val, 4, true);
}

public void CVarChange_Nades(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    bNades = cvar.BoolValue;
}

public void Event_Spawn(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    if(client && IsPlayerAlive(client)) SetEntData(client, iOffset, 2, 4, true);
}

public void OnEntityCreated(int entity, const char[] cls)
{
    if(bHumans && bNades && (!strcmp(cls, "hegrenade_projectile")
    || !strcmp(cls, "flashbang_projectile") || !strcmp(cls, "smokegrenade_projectile")))
        SetEntData(entity, iOffset, 2, 4, true);
}

P.S. Обновил описание и добавил все квары, о которых я забыл при предыдущих обновлениях плагина (таких оказалось 9 штук).
 
Сверху Снизу