Иконка ресурса

knife speed 1.0

Dima56

Участник
Сообщения
58
Реакции
36
  • Автор ресурса
  • #1
Необходимо: SDKHooks

Описание:Изменение скорости бега с ножом

Установка:Скопируйте файл knife_speed.smx в папку plugins

Cvars: Создается автоматически в /cfg/sourcemod/plugin.knife_speed.cfg

Default: "1.0"
sm_knife_speed "1.0"
 
Последнее редактирование модератором:

SenatoR

Участник
Сообщения
773
Реакции
344
Не проще с зриот итегрировать?
 

FORYOU145

Участник
Сообщения
39
Реакции
16
Плагин не работает, мб кто выложит рабочую?
 

zaigrovas

Участник
Сообщения
51
Реакции
1
[SM] Native "SetEntPropFloat" reported: Entity 1 (1) is invalid
[SM] Displaying call stack trace for plugin "knife_speed.smx":
[SM] [0] Line 24,
C:\Users\Dima\Desktop\compile\addons\sourcemod\scripting\knife_speed.sp::OnWeapon()
что это за лог и как его вылечить?
 

Felton

Участник
Сообщения
799
Реакции
59
А как это исправить? (Css-34)
L 10/15/2015 - 17:58:06: SourceMod error session started
L 10/15/2015 - 17:58:06: Info (map "de_dust2") (file "errors_20151015.log")
L 10/15/2015 - 17:58:06: [SM] Native "SetEntPropFloat" reported: Entity 1 (1) is invalid
L 10/15/2015 - 17:58:06: [SM] Displaying call stack trace for plugin "knife_speed.smx":
L 10/15/2015 - 17:58:06: [SM] [0] Line 24, C:\Users\Dima\Desktop\compile\addons\sourcemod\scripting\knife_speed.sp::OnWeapon()
L 10/15/2015 - 17:58:06: [SM] Native "SetEntPropFloat" reported: Entity 1 (1) is invalid
L 10/15/2015 - 17:58:06: [SM] Displaying call stack trace for plugin "knife_speed.smx":
L 10/15/2015 - 17:58:06: [SM] [0] Line 24, C:\Users\Dima\Desktop\compile\addons\sourcemod\scripting\knife_speed.sp::OnWeapon()
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
А как это исправить? (Css-34)
L 10/15/2015 - 17:58:06: SourceMod error session started
L 10/15/2015 - 17:58:06: Info (map "de_dust2") (file "errors_20151015.log")
L 10/15/2015 - 17:58:06: [SM] Native "SetEntPropFloat" reported: Entity 1 (1) is invalid
L 10/15/2015 - 17:58:06: [SM] Displaying call stack trace for plugin "knife_speed.smx":
L 10/15/2015 - 17:58:06: [SM] [0] Line 24, C:\Users\Dima\Desktop\compile\addons\sourcemod\scripting\knife_speed.sp::OnWeapon()
L 10/15/2015 - 17:58:06: [SM] Native "SetEntPropFloat" reported: Entity 1 (1) is invalid
L 10/15/2015 - 17:58:06: [SM] Displaying call stack trace for plugin "knife_speed.smx":
L 10/15/2015 - 17:58:06: [SM] [0] Line 24, C:\Users\Dima\Desktop\compile\addons\sourcemod\scripting\knife_speed.sp::OnWeapon()

Оффтоп
 

Felton

Участник
Сообщения
799
Реакции
59
Hejter,
ни чё не понял что ты написал?
 

babka68

Участник
Сообщения
2,124
Реакции
956
- прописать в server.cfg
C-подобный:
sm_knife_speed "1.1" // Значение скорости с ножом,чем выше тем быстрее (По умолчанию 1.0)
- Новый синтаксис:
#include <sdkhooks>
#pragma semicolon 1
#pragma newdecls required
float g_fCvarKnifeSpeed;

public void OnPluginStart() {
   ConVar cvar;
   cvar = CreateConVar("sm_knife_speed", "1.1", "Значение скорости с ножом,чем выше тем быстрее (По умолчанию 1.0)");
   cvar.AddChangeHook(CVarChanged_Speed_Value);
   g_fCvarKnifeSpeed = cvar.FloatValue;
}

public void CVarChanged_Speed_Value(ConVar CVar, const char[] oldValue, const char[] newValue) {
   g_fCvarKnifeSpeed = CVar.FloatValue;
}

public void OnClientPutInServer(int client) {
   SDKHook(client, SDKHook_WeaponSwitch, OnWeapon);
}

public Action OnWeapon(int client, int weapon) {
   char classname[64];
   GetEdictClassname(weapon, classname, sizeof(classname));
   if (StrEqual(classname, "weapon_knife"))
       SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", g_fCvarKnifeSpeed);
   else
       SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0); // Значение по умолчанию 1.0
}

Вот ещё поэкспериментировал с define =):
#include <sdkhooks>
#pragma semicolon 1
#pragma newdecls required
#define SPEED_VALUE 1.3 // Значение скорости с ножом

public void OnClientPutInServer(int client) {
   SDKHook(client, SDKHook_WeaponSwitch, OnWeapon);
}

public Action OnWeapon(int client, int weapon) {
   char classname[64];
   GetEdictClassname(weapon, classname, sizeof(classname));
   if (StrEqual(classname, "weapon_knife"))
       SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", SPEED_VALUE);
   else
       SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0); // Значение по умолчанию 1.0
}
 
Последнее редактирование:

suicide_xD

Участник
Сообщения
212
Реакции
14
Плагин работает, все норм. Есть недочет, если раунд закончился и начался новый и у тебя в руках нож, то быстрый бег не сработает, пока не переключить на любое другое оружие - потом сново на нож и все ок. Как исправить?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@suicide_xD, вот так:
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sdkhooks>

#define KNIFE_SPEED    1.3    // Значение скорости с ножом

char sWeapon[16];

public void OnPluginStart()
{
    for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i))
    {
        GetClientWeapon(i, sWeapon, sizeof(sWeapon));
        CheckWeapon(i, sWeapon);
        SDKHook(i, SDKHook_WeaponSwitchPost, OnWeaponSwitch);
    }

    HookEvent("round_freeze_end", Event_Start, EventHookMode_PostNoCopy);
}

public void Event_Start(Event event, const char[] name, bool dontBroadcast)
{
    for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && GetClientTeam(i) > 1 && IsPlayerAlive(i))
    {
        GetClientWeapon(i, sWeapon, sizeof(sWeapon));
        CheckWeapon(i, sWeapon);
    }
}

public void OnClientPutInServer(int client)
{
    SDKHook(client, SDKHook_WeaponSwitchPost, OnWeaponSwitch);
}

public void OnWeaponSwitch(int client, int weapon)
{
    GetEdictClassname(weapon, sWeapon, sizeof(sWeapon));
    CheckWeapon(client, sWeapon);
}

stock void CheckWeapon(int client, const char[] weapon)
{
    // Значение скорости по умолчанию 1.0
    SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", strncmp(weapon, "weapon_knife", 12) ? 1.0 : KNIFE_SPEED);
}

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

suicide_xD

Участник
Сообщения
212
Реакции
14
@suicide_xD, вот так:
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sdkhooks>

#define KNIFE_SPEED    1.3    // Значение скорости с ножом

char sWeapon[16];

public void OnPluginStart()
{
    for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i))
    {
        GetClientWeapon(i, sWeapon, sizeof(sWeapon));
        CheckWeapon(i, sWeapon);
        SDKHook(i, SDKHook_WeaponSwitchPost, OnWeaponSwitch);
    }

    HookEvent("round_freeze_end", Event_Start, EventHookMode_PostNoCopy);
}

public void Event_Start(Event event, const char[] name, bool dontBroadcast)
{
    for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && GetClientTeam(i) > 1 && IsPlayerAlive(i))
    {
        GetClientWeapon(i, sWeapon, sizeof(sWeapon));
        CheckWeapon(i, sWeapon);
    }
}

public void OnClientPutInServer(int client)
{
    SDKHook(client, SDKHook_WeaponSwitchPost, OnWeaponSwitch);
}

public void OnWeaponSwitch(int client, int weapon)
{
    GetEdictClassname(weapon, sWeapon, sizeof(sWeapon));
    CheckWeapon(client, sWeapon);
}

stock void CheckWeapon(int client, const char[] weapon)
{
    // Значение скорости по умолчанию 1.0
    SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", strncmp(weapon, "weapon_knife", 12) ? 1.0 : KNIFE_SPEED);
}

Теперь, кстати, плагин можно загружать в любой момент игры и он сразу должен работать.
Спасибо, друг. Попробую сейчас. Работает исправно!
 

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
Плагин работает, все норм. Есть недочет, если раунд закончился и начался новый и у тебя в руках нож, то быстрый бег не сработает, пока не переключить на любое другое оружие - потом сново на нож и все ок. Как исправить?
А этот не актуальней будет?
 
Сверху Снизу