Fast Reload

Mensi1337

Участник
Сообщения
242
Реакции
16
Добрый вечер форумчата, хотел узнать есть ли плагин быстрой перезарядки для CS:S v34
Не которые находил, но они не работают.
 

Mensi1337

Участник
Сообщения
242
Реакции
16
На старом синтаксе не компилируется
 

Вложения

  • 1.png
    1.png
    3.5 КБ · Просмотры: 47

Mensi1337

Участник
Сообщения
242
Реакции
16
Подключен
PHP:
#include <sdkhooks>

public OnEntityCreated(iEntity, const String:sClassname[])
{
    if(StrContains(sClassname, "weapon_", false) != -1) SDKHook(iEntity, SDKHook_Reload, Reload);
}

/*public OnEntityDestroyed(iEntity)
{
    SDKUnhook(iEntity, SDKHook_Reload, Reload);
}*/

public Action:Reload(iWeapon)
{
    CreateTimer(0.0, TimerFastReload, iWeapon);
}

public Action:TimerFastReload(Handle:hTimer, any:iWeapon)
{
    if(IsValidEntity(iWeapon))
    {
        new iClient = GetEntPropEnt(iWeapon, Prop_Send, "m_hOwnerEntity");
 
        if(IsClientInGame(iClient) && IsPlayerAlive(iClient))
        {
            SetEntPropFloat(iWeapon, Prop_Send, "m_flTimeWeaponIdle", 0.0);
            SetEntPropFloat(iWeapon, Prop_Send, "m_flNextPrimaryAttack", 0.0);
            SetEntPropFloat(iClient, Prop_Send, "m_flNextAttack", 0.0);
        }
    }
 
    return Plugin_Stop;
}
 

Faya™

Жуестер
Сообщения
867
Реакции
458
Подключен
PHP:
#include <sdkhooks>

public OnEntityCreated(iEntity, const String:sClassname[])
{
    if(StrContains(sClassname, "weapon_", false) != -1) SDKHook(iEntity, SDKHook_Reload, Reload);
}

/*public OnEntityDestroyed(iEntity)
{
    SDKUnhook(iEntity, SDKHook_Reload, Reload);
}*/

public Action:Reload(iWeapon)
{
    CreateTimer(0.0, TimerFastReload, iWeapon);
}

public Action:TimerFastReload(Handle:hTimer, any:iWeapon)
{
    if(IsValidEntity(iWeapon))
    {
        new iClient = GetEntPropEnt(iWeapon, Prop_Send, "m_hOwnerEntity");
 
        if(IsClientInGame(iClient) && IsPlayerAlive(iClient))
        {
            SetEntPropFloat(iWeapon, Prop_Send, "m_flTimeWeaponIdle", 0.0);
            SetEntPropFloat(iWeapon, Prop_Send, "m_flNextPrimaryAttack", 0.0);
            SetEntPropFloat(iClient, Prop_Send, "m_flNextAttack", 0.0);
        }
    }
 
    return Plugin_Stop;
}
Все компилируеться
upload_2018-11-22_20-9-57.png
 

Вложения

  • sm.smx
    4 КБ · Просмотры: 16

Mensi1337

Участник
Сообщения
242
Реакции
16
Заработал, извини за беспокойство) Что то с компилятором было
--- Добавлено позже ---
Ошибку почему то выдает

L 11/22/2018 - 22:03:46: [SM] Native "SDKHook" reported: Hook type not supported on this game
L 11/22/2018 - 22:03:46: [SM] Displaying call stack trace for plugin "fr.smx":
L 11/22/2018 - 22:03:46: [SM] [0] Line 5, D:\Oleg\USB\Ю\^\Compiled\fr.sp::OnEntityCreated()
 
Последнее редактирование:

Серый™

CS:S Server
Сообщения
2,925
Реакции
1,379
@Mensi1337, судя по ошибке этот код не работает на старой ксс.

PHP:
#include <sdkhooks>

public Action:OnPlayerRunCmd(iClient, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon) 
{
    if (buttons & IN_RELOAD) 
        CreateTimer(0.0, TimerFastReload, weapon);

    return Plugin_Continue; 
}

public Action:TimerFastReload(Handle:hTimer, any:iWeapon)
{
    if(IsValidEntity(iWeapon))
    {
        new iClient = GetEntPropEnt(iWeapon, Prop_Send, "m_hOwnerEntity");
 
        if(IsClientInGame(iClient) && IsPlayerAlive(iClient))
        {
            SetEntPropFloat(iWeapon, Prop_Send, "m_flTimeWeaponIdle", 0.0);
            SetEntPropFloat(iWeapon, Prop_Send, "m_flNextPrimaryAttack", 0.0);
            SetEntPropFloat(iClient, Prop_Send, "m_flNextAttack", 0.0);
        }
    }
 
    return Plugin_Stop;
}
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,828
Реакции
5,267
@Серый™, я бы добавил запоминание предыдущего состояния кнопки перезарядки (с твоим кодом можно зажать эту кнопку и оружие будет всё время перезаряжаться, т.е. для этого человека каждый тик будет запускаться таймер, пока он кнопку не отпустит)
PHP:
#include <sdktools_hooks>

public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon)
{
    static bool:bInReload[MAXPLAYERS+1];
    if(!bInReload[client] && buttons & IN_RELOAD) CreateTimer(0.0, TimerFastReload, weapon);
    bInReload[client] = bool:(buttons & IN_RELOAD);

    return Plugin_Continue;
}

public Action:TimerFastReload(Handle:hTimer, any:weapon)
{
    static client;
    if(IsValidEntity(weapon) && (client = GetEntPropEnt(weapon, Prop_Send, "m_hOwnerEntity")) > 0 && IsClientInGame(client) && IsPlayerAlive(client))
    {
        SetEntPropFloat(weapon, Prop_Send, "m_flTimeWeaponIdle", 0.0);
        SetEntPropFloat(weapon, Prop_Send, "m_flNextPrimaryAttack", 0.0);
        SetEntPropFloat(client, Prop_Send, "m_flNextAttack", 0.0);
    }
}
 

Вложения

  • fast_reload.sp
    777 байт · Просмотры: 24
  • fast_reload.smx
    3 КБ · Просмотры: 16

Felton

Участник
Сообщения
799
Реакции
59
@Grey83,
Я лично так и не увидел быструю перезарядку.Перезаряжался как обычно.Ошибок нет.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,828
Реакции
5,267
@Felton, анимация перезарядки не менялась
По идее нажал кнопку перезарядки и сразу можно стрелять, не глядя на анимацию
 

Felton

Участник
Сообщения
799
Реакции
59
@Grey83,
Я же и говорю.Когда нажимаеш перезарядку, пока не перезаредиться я стрелять не могу.
 

Mensi1337

Участник
Сообщения
242
Реакции
16
@Grey83, только что проверил тоже так работает, пока анимация не пройдет перезарядиться не могу
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,828
Реакции
5,267
@Mensi1337, обновил бы SM до 1.8, хотя бы и не заморачивался больше
PHP:
#include <sdktools_functions>
#include <sdktools_hooks>

public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon)
{
    static bool:bInReload[MAXPLAYERS+1];
    if(!bInReload[client] && buttons & IN_RELOAD)
    {
        SetEntPropFloat(client, Prop_Data, "m_flNextAttack", 0.0);

        new Handle:pack = CreateDataPack();
        WritePackCell(pack, client);
        WritePackCell(pack, weapon);
        CreateDataTimer(0.0, TimerFastReload, pack, TIMER_DATA_HNDL_CLOSE);
    }
    bInReload[client] = bool:(buttons & IN_RELOAD);

    return Plugin_Continue;
}

public Action:TimerFastReload(Handle:hTimer, Handle:pack)
{
    static client, wpn;
    ResetPack(pack);

    if(IsClientInGame((client = ReadPackCell(pack))) && IsPlayerAlive(client) && IsValidEntity((wpn = ReadPackCell(pack))))
    {
        RemovePlayerItem(client, wpn);
        EquipPlayerWeapon(client, wpn);
    }

    return Plugin_Stop;
}
 

Вложения

  • 111.sp
    906 байт · Просмотры: 11
  • 111.smx
    3.3 КБ · Просмотры: 9

Mensi1337

Участник
Сообщения
242
Реакции
16
Ошибку выдает
 

Вложения

  • 1.png
    1.png
    2.1 КБ · Просмотры: 22

Grey83

не пишу плагины с весны 2022
Сообщения
8,828
Реакции
5,267

Вложения

  • 111.sp
    919 байт · Просмотры: 10
  • 111.smx
    3.3 КБ · Просмотры: 7

Felton

Участник
Сообщения
799
Реакции
59
@Grey83,
Скомпелил без проблем а вот при запуске еррор

L 11/26/2018 - 20:28:00: SourceMod error session started
L 11/26/2018 - 20:28:00: Info (map "de_dust2") (file "errors_20181126.log")
L 11/26/2018 - 20:28:00: [SM] Native "RemovePlayerItem" reported: World not allowed
L 11/26/2018 - 20:28:00: [SM] Displaying call stack trace for plugin "111.smx":
L 11/26/2018 - 20:28:00: [SM] [0] Line 30, 111.sp::TimerFastReload()
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,828
Реакции
5,267

Вложения

  • 111.sp
    942 байт · Просмотры: 16
  • 111.smx
    3.3 КБ · Просмотры: 6
Сверху Снизу