Fast Reload | Быстрая перезарядка [CSS/CS:GO]

Drumanid

Нестандартное звание
Сообщения
1,863
Реакции
1,748
Быстрая перезарядка:


PHP:
#include <sdkhooks>

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

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

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

public Action TimerFastReload(Handle hTimer, any iWeapon)
{
    if(IsValidEntity(iWeapon))
    {
        int 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;
}
 

FurFur

Участник
Сообщения
153
Реакции
85
Неплохо, такое же можно сделать и в обратную сторону, +5 скиллов на wcs
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,458
Реакции
7,789
  • Команда форума
  • #3
@Lisoh, жду для вип (с возможностью регулировки) и шоп
 

Boeing 767

заскамили мамонта ни за что, ни про что
Сообщения
524
Реакции
913
Подобное кому-то уже писал для вип, с немного другой реализацией, а так же ускоренной визуальной перезарядкой.
PHP:
#include <sdktools_functions>
#include <sdkhooks>
#include <vip_core>

#pragma newdecls required
#pragma semicolon 1

#define VIP_FASTRELOAD                "fastreload"

public Plugin myinfo =
{
    name    = "[VIP] Fast Weapon Reload",
    author    = "asdf",
    version = "1.0"
}

public void OnPluginStart()
{
    if(VIP_IsVIPLoaded())
        VIP_OnVIPLoaded();
}

public void OnEntityCreated(int entity, const char[] classname)
{
    if(strncmp(classname, "weapon_", 7) == 0)
        SDKHook(entity, SDKHook_ReloadPost, WeaponReloadPost);
}

public void WeaponReloadPost(int weapon, bool bSuccess)
{
    if(!bSuccess)
        return;
    int client = GetEntPropEnt(weapon, Prop_Data, "m_hOwner");
    if(client == -1)
        return;
    if(VIP_IsClientVIP(client) && VIP_IsClientFeatureUse(client, VIP_FASTRELOAD))
    {
        int viewmodel = GetEntPropEnt(client, Prop_Data, "m_hViewModel");
        if(viewmodel != -1)
        SetEntPropFloat(viewmodel, Prop_Data, "m_flPlaybackRate", 10.0);
        SetEntPropFloat(weapon, Prop_Data, "m_flPlaybackRate", 10.0);
        float nextattack = GetEntPropFloat(weapon, Prop_Data, "m_flNextPrimaryAttack")-GetGameTime();
        SetEntPropFloat(weapon, Prop_Data, "m_flNextPrimaryAttack", (nextattack/10.0)+GetGameTime());
        nextattack = GetEntPropFloat(client, Prop_Data, "m_flNextAttack")-GetGameTime();
        SetEntPropFloat(client, Prop_Data, "m_flNextAttack", (nextattack/10.0)+GetGameTime());
    }
}

public int VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(VIP_FASTRELOAD,BOOL);
}

public void OnPluginEnd()
{
    if(CanTestFeatures() && GetFeatureStatus(FeatureType_Native, "VIP_UnregisterFeature") == FeatureStatus_Available)
        VIP_UnregisterFeature(VIP_FASTRELOAD);
}
 
Последнее редактирование:

Kruzya

Участник
Сообщения
12,973
Реакции
10,927
  • Команда форума
  • #5
@Samoletik1337, а не проще один раз получить игровое время, чем постоянно дёргать движок?
PHP:
        float flGameTime = GetGameTime();
        float nextattack = GetEntPropFloat(weapon, Prop_Data, "m_flNextPrimaryAttack")-flGameTime;
        SetEntPropFloat(weapon, Prop_Data, "m_flNextPrimaryAttack", (nextattack/10.0)+flGameTime);
        nextattack = GetEntPropFloat(client, Prop_Data, "m_flNextAttack")-flGameTime;
        SetEntPropFloat(client, Prop_Data, "m_flNextAttack", (nextattack/10.0)+flGameTime);
 

Boeing 767

заскамили мамонта ни за что, ни про что
Сообщения
524
Реакции
913
@Samoletik1337, а не проще один раз получить игровое время, чем постоянно дёргать движок?
PHP:
        float flGameTime = GetGameTime();
        float nextattack = GetEntPropFloat(weapon, Prop_Data, "m_flNextPrimaryAttack")-flGameTime;
        SetEntPropFloat(weapon, Prop_Data, "m_flNextPrimaryAttack", (nextattack/10.0)+flGameTime);
        nextattack = GetEntPropFloat(client, Prop_Data, "m_flNextAttack")-flGameTime;
        SetEntPropFloat(client, Prop_Data, "m_flNextAttack", (nextattack/10.0)+flGameTime);
Давно писал, уж не помню зачем так вообще делал ¯\_(ツ)_/¯ .
 

Drumanid

Нестандартное звание
Сообщения
1,863
Реакции
1,748
Давно писал, уж не помню зачем так вообще делал ¯\_(ツ)_/¯ .
PHP:
#include <sdktools_functions>
Видно) Тоже там не нужно)

@Lisoh, жду для вип (с возможностью регулировки) и шоп
А нужно ли? Кстати, у меня есть слегка другой код, с анимацией, более такой реалистичный.


PHP:
#include <sdktools>
#include <sdkhooks>
/*#include <vip_core>

static const char g_sFeature[] = "FastReload";

public void OnPluginStart()
{
    if(VIP_IsVIPLoaded()) VIP_OnVIPLoaded();
}

public int VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(g_sFeature, BOOL);
}*/

public void OnEntityCreated(int iEntity, const char[] sClassname)
{
    if(StrContains(sClassname, "weapon_", false) != -1) SDKHook(iEntity, SDKHook_ReloadPost, ReloadPost);
}

public void ReloadPost(int iWeapon, bool bSuccess)
{
    if(bSuccess && IsValidEntity(iWeapon))
    {
        int iClient = GetEntPropEnt(iWeapon, Prop_Data, "m_hOwner");
     
        if(IsClientInGame(iClient) && IsPlayerAlive(iClient)/* && VIP_IsClientFeatureUse(iClient, g_sFeature)*/)
        {
            SetEntPropFloat(iClient, Prop_Data, "m_flNextAttack", 0.0);
         
            DataPack hPack = new DataPack();
            hPack.WriteCell(iClient);
            hPack.WriteCell(iWeapon);
         
            CreateTimer(0.0, TimerFastReload, hPack);
        }
    }
}

public Action TimerFastReload(Handle hTimer, any hDataPack)
{
    DataPack hPack = view_as<DataPack>(hDataPack);
    hPack.Reset();
 
    int iClient = hPack.ReadCell();
 
    if(IsClientInGame(iClient) && IsPlayerAlive(iClient)) // пусть будет
    {
        int iWeapon = hPack.ReadCell();
     
        if(IsValidEntity(iWeapon)) // это тоже, на всякий случай, мне так спокойнее
        {
            RemovePlayerItem(iClient, iWeapon);
            EquipPlayerWeapon(iClient, iWeapon);
        }
    }
 
    delete hPack;
    return Plugin_Stop;
}

/*public void OnPluginEnd()
{
    if(CanTestFeatures() && GetFeatureStatus(FeatureType_Native, "VIP_UnregisterFeature") == FeatureStatus_Available)
    {
        VIP_UnregisterFeature(g_sFeature);
    }
}*/
 
Последнее редактирование модератором:

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,491
Подобное кому-то уже писал для вип, с немного другой реализацией, а так же ускоренной визуальной перезарядкой.
PHP:
#include <sdktools_functions>
#include <sdkhooks>
#include <vip_core>

#pragma newdecls required
#pragma semicolon 1

#define VIP_FASTRELOAD                "fastreload"

public Plugin myinfo =
{
    name    = "[VIP] Fast Weapon Reload",
    author    = "asdf",
    version = "1.0"
}

public void OnPluginStart()
{
    if(VIP_IsVIPLoaded())
        VIP_OnVIPLoaded();
}

public void OnEntityCreated(int entity, const char[] classname)
{
    if(strncmp(classname, "weapon_", 7) == 0)
        SDKHook(entity, SDKHook_ReloadPost, WeaponReloadPost);
}

public void WeaponReloadPost(int weapon, bool bSuccess)
{
    if(!bSuccess)
        return;
    int client = GetEntPropEnt(weapon, Prop_Data, "m_hOwner");
    if(client == -1)
        return;
    if(VIP_IsClientVIP(client) && VIP_IsClientFeatureUse(client, VIP_FASTRELOAD))
    {
        int viewmodel = GetEntPropEnt(client, Prop_Data, "m_hViewModel");
        if(viewmodel != -1)
        SetEntPropFloat(viewmodel, Prop_Data, "m_flPlaybackRate", 10.0);
        SetEntPropFloat(weapon, Prop_Data, "m_flPlaybackRate", 10.0);
        float nextattack = GetEntPropFloat(weapon, Prop_Data, "m_flNextPrimaryAttack")-GetGameTime();
        SetEntPropFloat(weapon, Prop_Data, "m_flNextPrimaryAttack", (nextattack/10.0)+GetGameTime());
        nextattack = GetEntPropFloat(client, Prop_Data, "m_flNextAttack")-GetGameTime();
        SetEntPropFloat(client, Prop_Data, "m_flNextAttack", (nextattack/10.0)+GetGameTime());
    }
}

public int VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(VIP_FASTRELOAD,BOOL);
}

public void OnPluginEnd()
{
    if(CanTestFeatures() && GetFeatureStatus(FeatureType_Native, "VIP_UnregisterFeature") == FeatureStatus_Available)
        VIP_UnregisterFeature(VIP_FASTRELOAD);
}
Да-да, мне писал. Версия в этой теме слишком читерская. Насколько понимаю, перезарядка автоматическая, а у меня надо напрячь свою пальчики и самому перезарядиться.
 

Туник

Участник
Сообщения
1,281
Реакции
264
@Paranoiiik, этот модуль даёт возможность всем випам, можно было-бы как нибудь сделать чтобы возможность давать по группам?
Или я чего не понял, поясни суть его работы???
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,491
@Paranoiiik, этот модуль даёт возможность всем випам, можно было-бы как нибудь сделать чтобы возможность давать по группам?
Или я чего не понял, поясни суть его работы???
Я заказывал так, чтобы я сам мог любым VIP-группам давать
 
Сообщения
135
Реакции
2
Оффтоп
пишет что на v34 но не работает, все верно прописал и не работает, нашел какой то модуль для випки с быстрой перезарядки, и он работает но сипит ошибки в логи:
_______________________________________________________________________________________________
L 01/26/2020 - 09:23:28: [SM] Blaming: vip/VIP_Core.smx
L 01/26/2020 - 09:23:28: [SM] Call stack trace:
L 01/26/2020 - 09:23:28: [SM] [0] FormatEx
L 01/26/2020 - 09:23:28: [SM] [1] Line 291, vip/vipmenu.sp::Handler_VIPMenu
L 01/26/2020 - 09:23:28: [SM] [3] DisplayMenuAtItem
L 01/26/2020 - 09:23:28: [SM] [4] Line 352, vip/vipmenu.sp::Handler_VIPMenu
L 01/26/2020 - 09:23:29: [SM] Exception reported: Language phrase "fastreload" not found (arg 6)
 
Сообщения
135
Реакции
2
по этому и ошибки в логах? если да, то можно как-то сделать перевод? что бы не было ошибок в логах, там типа в меню просто пишет "фастролеад" и нету "Оиключить/включить" как у других функциях.
 
Последнее редактирование:
Сверху Снизу