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

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
Подскажите пожалуйста, как проверить какое оружие в руках но не по имени а по айди оружия, так как плагин new weapons каждому скину свое название дает.
У того плагина должно быть API на подобные случаи
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
@Paranoiiik, Мне для своего. Хочу сделать проверку какое оружие в руки. Такой способ
GetClientWeapon(client, nameweapon, 32);
if(StrEqual(nameweapon, "weapon_ak47", true))
не подойдет. Как проверить по айди?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@KiKiEEKi, GetEntProp(entity, Prop_Send, "m_iItemDefinitionIndex") должен возвращать CSWeaponID, который можно глянуть в инклюде cstrike.inc самого SM.
Но что он буде возвращать для кастомных стволов я хз.
cstrike.inc:
enum CSWeaponID
{
    CSWeapon_NONE = 0,
    CSWeapon_P228,
    CSWeapon_GLOCK,
    CSWeapon_SCOUT,
    CSWeapon_HEGRENADE,
    CSWeapon_XM1014,
    CSWeapon_C4,
    CSWeapon_MAC10,
    CSWeapon_AUG,
    CSWeapon_SMOKEGRENADE,
    CSWeapon_ELITE,
    CSWeapon_FIVESEVEN,
    CSWeapon_UMP45,
    CSWeapon_SG550,
    CSWeapon_GALIL,
    CSWeapon_FAMAS,
    CSWeapon_USP,
    CSWeapon_AWP,
    CSWeapon_MP5NAVY,
    CSWeapon_M249,
    CSWeapon_M3,
    CSWeapon_M4A1,
    CSWeapon_TMP,
    CSWeapon_G3SG1,
    CSWeapon_FLASHBANG,
    CSWeapon_DEAGLE,
    CSWeapon_SG552,
    CSWeapon_AK47,
    CSWeapon_KNIFE,
    CSWeapon_P90,
    CSWeapon_SHIELD,
    CSWeapon_KEVLAR,
    CSWeapon_ASSAULTSUIT,
    CSWeapon_NIGHTVISION, //Anything below is CS:GO ONLY
    CSWeapon_GALILAR,
    CSWeapon_BIZON,
    CSWeapon_MAG7,
    CSWeapon_NEGEV,
    CSWeapon_SAWEDOFF,
    CSWeapon_TEC9,
    CSWeapon_TASER,
    CSWeapon_HKP2000,
    CSWeapon_MP7,
    CSWeapon_MP9,
    CSWeapon_NOVA,
    CSWeapon_P250,
    CSWeapon_SCAR17,
    CSWeapon_SCAR20,
    CSWeapon_SG556,
    CSWeapon_SSG08,
    CSWeapon_KNIFE_GG,
    CSWeapon_MOLOTOV,
    CSWeapon_DECOY,
    CSWeapon_INCGRENADE,
    CSWeapon_DEFUSER,
    CSWeapon_HEAVYASSAULTSUIT,
    //The rest are actual item definition indexes for CS:GO
    CSWeapon_CUTTERS = 56,
    CSWeapon_HEALTHSHOT = 57,
    CSWeapon_KNIFE_T = 59,
    CSWeapon_M4A1_SILENCER = 60,
    CSWeapon_USP_SILENCER = 61,
    CSWeapon_CZ75A = 63,
    CSWeapon_REVOLVER = 64,
    CSWeapon_TAGGRENADE = 68,
    CSWeapon_FISTS = 69,
    CSWeapon_BREACHCHARGE = 70,
    CSWeapon_TABLET = 72,
    CSWeapon_MELEE = 74,
    CSWeapon_AXE = 75,
    CSWeapon_HAMMER = 76,
    CSWeapon_SPANNER = 78,
    CSWeapon_KNIFE_GHOST = 80,
    CSWeapon_FIREBOMB = 81,
    CSWeapon_DIVERSION = 82,
    CSWeapon_FRAGGRENADE = 83,
    CSWeapon_SNOWBALL = 84,
    CSWeapon_BUMPMINE = 85,
    CSWeapon_MAX_WEAPONS_NO_KNIFES, // Max without the knife item defs, useful when treating all knives as a regular knife.
    CSWeapon_BAYONET = 500,
    CSWeapon_KNIFE_CLASSIC = 503,
    CSWeapon_KNIFE_FLIP = 505,
    CSWeapon_KNIFE_GUT = 506,
    CSWeapon_KNIFE_KARAMBIT = 507,
    CSWeapon_KNIFE_M9_BAYONET = 508,
    CSWeapon_KNIFE_TATICAL = 509,
    CSWeapon_KNIFE_FALCHION = 512,
    CSWeapon_KNIFE_SURVIVAL_BOWIE = 514,
    CSWeapon_KNIFE_BUTTERFLY = 515,
    CSWeapon_KNIFE_PUSH = 516,
    CSWeapon_KNIFE_CORD = 517,
    CSWeapon_KNIFE_CANIS = 518,
    CSWeapon_KNIFE_URSUS = 519,
    CSWeapon_KNIFE_GYPSY_JACKKNIFE = 520,
    CSWeapon_KNIFE_OUTDOOR = 521,
    CSWeapon_KNIFE_STILETTO = 522,
    CSWeapon_KNIFE_WIDOWMAKER = 523,
    CSWeapon_KNIFE_SKELETON = 525,
    CSWeapon_MAX_WEAPONS //THIS MUST BE LAST, EASY WAY TO CREATE LOOPS. When looping, do CS_IsValidWeaponID(i), to check.
};
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
Подскажите пожалуйста как скрыть ошибку в консоле?
Ошибка: Failed to load sound ".wav", file probably missing from disk/repository
 

FokS

Участник
Сообщения
422
Реакции
52
Всем привет. Может кто написать плагин, когда КТ разминировал бомбу, то чтобы воспроизводился свой звук ?
 

Grey83

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

#include <sdktools_sound>
#include <sdktools_stringtables>

bool
    bCSGO;
float
    fPos[3];
char
    sCvarPath[PLATFORM_MAX_PATH],
    sSound[PLATFORM_MAX_PATH];

public void OnPluginStart()
{
    bCSGO = GetEngineVersion() == Engine_CSGO;

    ConVar cvar = CreateConVar("sm_defused_sound", "ui/achievement_earned.wav", "", FCVAR_PRINTABLEONLY);
    cvar.AddChangeHook(CVarChanged_Sound);
    cvar.GetString(sCvarPath, sizeof(sCvarPath));

    HookEvent("bomb_begindefuse", Event_Defuse);
    HookEvent("bomb_defused", Event_Defused, EventHookMode_PostNoCopy);
}

public void CVarChanged_Sound(ConVar cvar, const char[] oldVal, const char[] newVal)
{
    cvar.GetString(sCvarPath, sizeof(sCvarPath));

    int len = strlen(sCvarPath) - 4;
    if(len < 1 || strcmp(sCvarPath[len], ".mp3", false) && strcmp(sCvarPath[len], ".wav", false))
        sCvarPath[0] = sSound[0] = 0;
    else AddSound();
}

public void OnMapStart()
{
    if(sCvarPath[0]) AddSound();
}

stock void AddSound()
{
    FormatEx(sSound, sizeof(sSound), "sound/%s", sCvarPath);
    AddFileToDownloadsTable(sSound);

    if(bCSGO)
    {
        FormatEx(sSound, sizeof(sSound), "*%s", sCvarPath);
        AddToStringTable(FindStringTable("soundprecache"), sSound);
        return;
    }

    FormatEx(sSound, sizeof(sSound), "%s", sCvarPath);
    PrecacheSound(sSound, true);
}

public void Event_Defuse(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    if(client && IsClientInGame(client)) GetClientAbsOrigin(client, fPos);
}

public void Event_Defused(Event event, const char[] name, bool dontBroadcast)
{
    if(sSound[0]) EmitAmbientSound(sSound, fPos);
}
 
  • Мне нравится
Реакции: FokS

FokS

Участник
Сообщения
422
Реакции
52
@✖ FokS ✖, примерно так:
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sdktools_sound>
#include <sdktools_stringtables>

bool
    bCSGO;
float
    fPos[3];
char
    sCvarPath[PLATFORM_MAX_PATH],
    sSound[PLATFORM_MAX_PATH];

public void OnPluginStart()
{
    bCSGO = GetEngineVersion() == Engine_CSGO;

    ConVar cvar = CreateConVar("sm_defused_sound", "ui/achievement_earned.wav", "", FCVAR_PRINTABLEONLY);
    cvar.AddChangeHook(CVarChanged_Sound);
    cvar.GetString(sCvarPath, sizeof(sCvarPath));

    HookEvent("bomb_begindefuse", Event_Defuse);
    HookEvent("bomb_defused", Event_Defused, EventHookMode_PostNoCopy);
}

public void CVarChanged_Sound(ConVar cvar, const char[] oldVal, const char[] newVal)
{
    cvar.GetString(sCvarPath, sizeof(sCvarPath));

    int len = strlen(sCvarPath) - 4;
    if(len < 1 || strcmp(sCvarPath[len], ".mp3", false) && strcmp(sCvarPath[len], ".wav", false))
        sCvarPath[0] = sSound[0] = 0;
    else AddSound();
}

public void OnMapStart()
{
    if(sCvarPath[0]) AddSound();
}

stock void AddSound()
{
    FormatEx(sSound, sizeof(sSound), "sound/%s", sCvarPath);
    AddFileToDownloadsTable(sSound);

    if(bCSGO)
    {
        FormatEx(sSound, sizeof(sSound), "*%s", sCvarPath);
        AddToStringTable(FindStringTable("soundprecache"), sSound);
        return;
    }

    FormatEx(sSound, sizeof(sSound), "%s", sCvarPath);
    PrecacheSound(sSound, true);
}

public void Event_Defuse(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    if(client && IsClientInGame(client)) GetClientAbsOrigin(client, fPos);
}

public void Event_Defused(Event event, const char[] name, bool dontBroadcast)
{
    if(sSound[0]) EmitAmbientSound(sSound, fPos);
}
Соррян, забыл указать игру. У меня css v91. Для неё сработает?
 

FokS

Участник
Сообщения
422
Реакции
52
Сработает, просто в GO немного по-другому делается, потому так такой код
Да уже проверил, работает.
Сообщения автоматически склеены:

@Grey83, Стандартный звук от игры когда разминировал бомбу не получится отключить ?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@✖ FokS ✖, хз. Если он отлавливается.
Это в ксго, что ли есть стандартный?
 

FokS

Участник
Сообщения
422
Реакции
52
Это в ксго, что ли есть стандартный?
Насчёт кс:го не знаю, у меня нет сервера в этой игре, в css v91 есть, получается воспроизводится сразу 2 звука, мой который добавляю через твой код и стандартный, ну или если можно сделать звук воспроизведение чуть раньше до стандартного, то есть секунды за 3 до разминирования, таймер бомбы стоит 35сек.
 

-=|УЧЕНИК|=-

вся жизнь,сплошной цирк.
Сообщения
876
Реакции
212
Привет всем!
Можно написать простенький плагин,на звук убийств?
Где то видел такой,не нашел.
Чтоб не важно в какую часть тела убьешь,воспроизводился один звук.
Заранее благодарю
версия игры 34
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
Привет всем!
Можно написать простенький плагин,на звук убийств?
Где то видел такой,не нашел.
Чтоб не важно в какую часть тела убьешь,воспроизводился один звук.
Заранее благодарю
версия игры 34
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sdktools_stringtables>
#include <sdktools_sound>

#define SOUND_LOAD    "sound/my_server/play.mp3"
#define SOUND_PLAY    "/my_server/play.mp3"

public void OnPluginStart()
{
    HookEvent("player_death", ePlayerDeath);
}

public void OnMapStart()
{
    PrecacheSound(SOUND_PLAY, true);
    AddFileToDownloadsTable(SOUND_LOAD);
}

public void ePlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    int iAttacker = GetClientOfUserId(event.GetInt("attacker"));
    EmitSoundToClient(iAttacker, SOUND_PLAY, SOUND_FROM_PLAYER, SNDCHAN_STATIC, SNDLEVEL_NORMAL);
}
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
Здравствуйте, как воспроизвести звук всем кроме того игрока кто его воспроизводит(нажал команду в чат допустим) ?
 

Madness aka null138

Участник
Сообщения
713
Реакции
734
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sdktools_stringtables>
#include <sdktools_sound>

#define SOUND_LOAD    "sound/my_server/play.mp3"
#define SOUND_PLAY    "/my_server/play.mp3"

public void OnPluginStart()
{
    HookEvent("player_death", ePlayerDeath);
}

public void OnMapStart()
{
    PrecacheSound(SOUND_PLAY, true);
    AddFileToDownloadsTable(SOUND_LOAD);
}

public void ePlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    int iAttacker = GetClientOfUserId(event.GetInt("attacker"));
    EmitSoundToClient(iAttacker, SOUND_PLAY, SOUND_FROM_PLAYER, SNDCHAN_STATIC, SNDLEVEL_NORMAL);
}
attacker > 0 && attacker <= MaxClients && IsClientInGame(attacker)
 

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
Пример не напишите пожалуйста
Что то типо того

C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sdktools_stringtables>
#include <sdktools_sound>

#define SOUND_LOAD    "sound/my_server/play.mp3"
#define SOUND_PLAY    "/my_server/play.mp3"

public void OnPluginStart()
{
    HookEvent("player_death", ePlayerDeath);
}

public void OnMapStart()
{
    PrecacheSound(SOUND_PLAY, true);
    AddFileToDownloadsTable(SOUND_LOAD);
}

public void ePlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    int iAttacker = GetClientOfUserId(event.GetInt("attacker"));
    for(int i = 1; i >= MaxClients; i++) if(i != iAttacker)
        EmitSoundToClient(i, SOUND_PLAY, SOUND_FROM_PLAYER, SNDCHAN_STATIC, SNDLEVEL_NORMAL);
}
 

-=|УЧЕНИК|=-

вся жизнь,сплошной цирк.
Сообщения
876
Реакции
212
Люди добрые,можно дописать код тут?
Или что нужно сделать,что открывалась меню,при заходе на сервер?
Ну как мне сказали,не хватает якобы,какого-то когда)
Чтоб открывалось меню при заходе на сервер.
 

Вложения

  • menu_creator.sp
    20.7 КБ · Просмотры: 6

Dark_Legend

Добрая душа
Сообщения
9
Реакции
9
Люди добрые,можно дописать код тут?
Или что нужно сделать,что открывалась меню,при заходе на сервер?
Ну как мне сказали,не хватает якобы,какого-то когда)
Чтоб открывалось меню при заходе на сервер.
Попробуй это
 

Вложения

  • menu_creator.sp
    20.8 КБ · Просмотры: 13
Сверху Снизу