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

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Mizuri, ты точно в коде плагина ничего не изменял?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Mizuri, значит нужно тестить (точнее сделать тестовую версию с выводом информации в консоль и смотреть что там показывает)
Как же я не люблю этот долбаный КСГО с его обновлениями.

Ну или попробовать сделать через SDKHooks_TakeDamage
 

Mizuri

Участник
Сообщения
160
Реакции
8
@Mizuri, значит нужно тестить (точнее сделать тестовую версию с выводом информации в консоль и смотреть что там показывает)
Как же я не люблю этот долбаный КСГО с его обновлениями.

Ну или попробовать сделать через SDKHooks_TakeDamage
ну так придумай что нибудь , нельзя просто взять рабочий noscope.smx убрать вывод в чат добавить csay и растояние
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Mizuri, ну так дай ссыль на рабочий носкоп
 

KonveeR

Hanzo hasashi
Сообщения
1,639
Реакции
667
Есть ли плагин , который изменяет FOV у террористов ?
Чет все обыскал , не найду никак (
Игра CS GO
 

KonveeR

Hanzo hasashi
Сообщения
1,639
Реакции
667
@ololoex, У всех , вот только с начала раунда не выйдет , так как при round_start все находятся за кт
Нужно для ZR , так как встроенный там не работает (ну по крайней мере у меня)
 

ololoex

Участник
Сообщения
123
Реакции
51
Флуд/Оффтоп
@ololoex, У всех , вот только с начала раунда не выйдет , так как при round_start все находятся за кт
Нужно для ZR , так как встроенный там не работает (ну по крайней мере у меня)
Попробуй
Оффтоп
 

Вложения

  • zr_change_fov.smx
    5.3 КБ · Просмотры: 5
  • zr_change_fov.sp
    2.5 КБ · Просмотры: 11
Последнее редактирование:

KonveeR

Hanzo hasashi
Сообщения
1,639
Реакции
667
@ololoex, Все отлично ) спасибо большое , а я что то искал и не нашел ( ленивый стал........
 

ololoex

Участник
Сообщения
123
Реакции
51
Флуд/Оффтоп
@ololoex, Все отлично ) спасибо большое , а я что то искал и не нашел ( ленивый стал........
Если что ниже я поправил квар sm_fov_enabled

sm_fov_enabled - Включить/Выключить плагин (Default: 1)
sm_fov_number - Значение FOV (Default: 110)

Оффтоп
 

Вложения

  • zr_change_fov.sp
    2.6 КБ · Просмотры: 6
  • zr_change_fov.smx
    5.3 КБ · Просмотры: 2

Webman

Nevermind
Сообщения
803
Реакции
330
public OnGameFrame()
{
if(gB_PEnabled)
{
for (new i = 1; i <= MaxClients; i++)
{
if (IsValidClient(i) && IsPlayerAlive(i))
{
if(g_Fov)
{
SetEntProp(i, Prop_Send, "m_iDefaultFOV", gI_PFovZombie);
SetEntProp(i, Prop_Send, "m_iFOV", gI_PFovZombie);
}
else
{
SetEntProp(i, Prop_Send, "m_iDefaultFOV", DEFAULT_FOV);
SetEntProp(i, Prop_Send, "m_iFOV", DEFAULT_FOV);
}
}
}
}
}
Без геймфрейма не работает что ли? Если ты поставил FOV игроку после заражения, то зачем ему выставлять значение потом каждый тик??
Цикличная проверка всех игроков 66, 100 (в зависимости от тикрейта) раз В СЕКУНДУ? Это достаточно сильно бьёт по нагрузке.
 

ololoex

Участник
Сообщения
123
Реакции
51
Без геймфрейма не работает что ли? Если ты поставил FOV игроку после заражения, то зачем ему выставлять значение потом каждый тик??
Цикличная проверка всех игроков 66, 100 (в зависимости от тикрейта) раз В СЕКУНДУ? Это достаточно сильно бьёт по нагрузке.
При тесте я заметил что если человек умирает, то ему ставится FOV другой (не знаю с чем связано). Если идет заражение или обратно то все нормально. Конечно можно попробовать через таймер сделать, но в тот когда писал плагин задумывался об этом.
--- Добавлено позже ---
Сделал через таймер и убрал OnGameFrame, теперь работает как надо.

C-подобный:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <zombiereloaded>

public Plugin myinfo =
{
    name            = "[ZR] Change FOV",
    author          = "Extr1m (Michail)",
    description     = "Adds a unique class of zombies",
    version         = "1.1",
    url             = "https://sourcemod.net/"
};

#define DEFAULT_FOV             90

ConVar gCV_PEnabled = null;
ConVar gCV_PFovZombie = null;

bool     gB_PEnabled = true;
int     gI_PFovZombie;

Handle SpawnTimer[MAXPLAYERS+1];

public void OnPluginStart()
{ 
    HookEvent("player_spawn", Event_PlayerSpawn);
  
    gCV_PEnabled     =     CreateConVar("sm_fov_enabled", "1", "Включить/Выключить плагин", 0, true, 0.0, true, 1.0);
    gCV_PFovZombie     =     CreateConVar("sm_fov_number", "110.0", "Значение FOV", 0, true, 0.0, true, 200.0);
  
    gCV_PEnabled.AddChangeHook(ConVarChange);
    gCV_PFovZombie.AddChangeHook(ConVarChange);
  
    gB_PEnabled     = gCV_PEnabled.BoolValue;
    gI_PFovZombie     = gCV_PFovZombie.IntValue;
}

public void OnClientDisconnect(int client)
{
    if (SpawnTimer[client] != null)
    {
        KillTimer(SpawnTimer[client]);
        SpawnTimer[client] = null;
    }
}

public void ConVarChange(ConVar CVar, const char[] oldVal, const char[] newVal)
{
    gB_PEnabled     = gCV_PEnabled.BoolValue;
    gI_PFovZombie     = gCV_PFovZombie.IntValue;
}

public void Event_PlayerSpawn(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(hEvent, "userid"));

    SpawnTimer[client] = CreateTimer(0.2, SpawnPlayer, client);
}

public Action SpawnPlayer(Handle timer, any client)
{
    if(gB_PEnabled && IsPlayerAlive(client))
    {
        if(ZR_IsClientHuman(client))
        {
            SetEntProp(client, Prop_Send, "m_iDefaultFOV", DEFAULT_FOV);
            SetEntProp(client, Prop_Send, "m_iFOV", DEFAULT_FOV);
        }
        else
        { 
            SetEntProp(client, Prop_Send, "m_iDefaultFOV", gI_PFovZombie);
            SetEntProp(client, Prop_Send, "m_iFOV", gI_PFovZombie);
        }
    }
}

public ZR_OnClientHumanPost(client, bool:respawn, bool:protect)
{
    if(gB_PEnabled)
    {
        SetEntProp(client, Prop_Send, "m_iDefaultFOV", DEFAULT_FOV);
        SetEntProp(client, Prop_Send, "m_iFOV", DEFAULT_FOV);
    }
}

public ZR_OnClientInfected(client, attacker, bool:motherInfect, bool:respawnOverride, bool:respawn)
{
    if(gB_PEnabled)
    { 
        SetEntProp(client, Prop_Send, "m_iDefaultFOV", gI_PFovZombie);
        SetEntProp(client, Prop_Send, "m_iFOV", gI_PFovZombie);
    }
}
 

Вложения

  • zr_change_fov.smx
    5.2 КБ · Просмотры: 3
  • zr_change_fov.sp
    2.3 КБ · Просмотры: 9
Последнее редактирование:

Hollya

❤ GIRL SCRIPTER ❤
Сообщения
128
Реакции
32
При тесте я заметил что если человек умирает, то ему ставится FOV другой (не знаю с чем связано). Если идет заражение или обратно то все нормально. Конечно можно попробовать через таймер сделать, но в тот когда писал плагин задумывался об этом.
--- Добавлено позже ---
Сделал через таймер и убрал OnGameFrame, теперь работает как надо.

C-подобный:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <zombiereloaded>

public Plugin myinfo =
{
    name            = "[ZR] Change FOV",
    author          = "Extr1m (Michail)",
    description     = "Adds a unique class of zombies",
    version         = "1.1",
    url             = "https://sourcemod.net/"
};

#define DEFAULT_FOV             90

ConVar gCV_PEnabled = null;
ConVar gCV_PFovZombie = null;

bool     gB_PEnabled = true;
int     gI_PFovZombie;

Handle SpawnTimer[MAXPLAYERS+1];

public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
 
    gCV_PEnabled     =     CreateConVar("sm_fov_enabled", "1", "Включить/Выключить плагин", 0, true, 0.0, true, 1.0);
    gCV_PFovZombie     =     CreateConVar("sm_fov_number", "110.0", "Значение FOV", 0, true, 0.0, true, 200.0);
 
    gCV_PEnabled.AddChangeHook(ConVarChange);
    gCV_PFovZombie.AddChangeHook(ConVarChange);
 
    gB_PEnabled     = gCV_PEnabled.BoolValue;
    gI_PFovZombie     = gCV_PFovZombie.IntValue;
}

public void OnClientDisconnect(int client)
{
    if (SpawnTimer[client] != null)
    {
        KillTimer(SpawnTimer[client]);
        SpawnTimer[client] = null;
    }
}

public void ConVarChange(ConVar CVar, const char[] oldVal, const char[] newVal)
{
    gB_PEnabled     = gCV_PEnabled.BoolValue;
    gI_PFovZombie     = gCV_PFovZombie.IntValue;
}

public void Event_PlayerSpawn(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(hEvent, "userid"));

    SpawnTimer[client] = CreateTimer(0.2, SpawnPlayer, client);
}

public Action SpawnPlayer(Handle timer, any client)
{
    if(gB_PEnabled && IsPlayerAlive(client))
    {
        if(ZR_IsClientHuman(client))
        {
            SetEntProp(client, Prop_Send, "m_iDefaultFOV", DEFAULT_FOV);
            SetEntProp(client, Prop_Send, "m_iFOV", DEFAULT_FOV);
        }
        else
        {
            SetEntProp(client, Prop_Send, "m_iDefaultFOV", gI_PFovZombie);
            SetEntProp(client, Prop_Send, "m_iFOV", gI_PFovZombie);
        }
    }
}

public ZR_OnClientHumanPost(client, bool:respawn, bool:protect)
{
    if(gB_PEnabled)
    {
        SetEntProp(client, Prop_Send, "m_iDefaultFOV", DEFAULT_FOV);
        SetEntProp(client, Prop_Send, "m_iFOV", DEFAULT_FOV);
    }
}

public ZR_OnClientInfected(client, attacker, bool:motherInfect, bool:respawnOverride, bool:respawn)
{
    if(gB_PEnabled)
    {
        SetEntProp(client, Prop_Send, "m_iDefaultFOV", gI_PFovZombie);
        SetEntProp(client, Prop_Send, "m_iFOV", gI_PFovZombie);
    }
}

А зачем используешь ново-старый синтаксис?
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@ololoex, код со старым синтаксисом скоро компилироваться не будет. Вроде как обещали с релизом 1.9
 

KonveeR

Hanzo hasashi
Сообщения
1,639
Реакции
667
@ololoex,
PHP:
L 11/25/2017 - 09:08:32: SourceMod error session started
L 11/25/2017 - 09:08:32: Info (map "zm_dust2v2_v3") (file "errors_20171125.log")
L 11/25/2017 - 09:08:32: [SM] Exception reported: Invalid timer handle 42c039b (error 3)
L 11/25/2017 - 09:08:32: [SM] Blaming: zombiereloaded/zr_change_fov.smx
L 11/25/2017 - 09:08:32: [SM] Call stack trace:
L 11/25/2017 - 09:08:32: [SM]   [0] KillTimer
L 11/25/2017 - 09:08:32: [SM]   [1] Line 43, C:\Users\User\YandexDisk\Mr. GiG Servers\Compil\Компилятор\ZR Compil\zr_change_fov.sp::OnClientDisconnect
 
Сверху Снизу