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

Svyatoy

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

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Есть моделька гранаты, которая имеет к парент к другой модельке, которая смещается каждые Х секунд на 0,5 юните, так-же есть ещё одна моделька, к которой первая модель движется, как заставить гранату наносить урон так, что бы хук SDKHook_OnTakeDamage сработал на второй модельке когда граната прикоснётся к ней. Хук на прикосновение не подходит! Нужно именно найти позицию урона на теле игрока.

UPD: Решение было обречено на провал из-за кривых хитбоксов, которые не соответствуют ширине меша.
 
Последнее редактирование:

tonline_kms65_1

Участник
Сообщения
565
Реакции
225
Не,в этом суть маленько другая)
Игрок пишет в чате !закуп и у него вылазит вот такое меню,ну там какой оружия выбираешь,то и будет в автозакупе.
Ну удобная штука конечно
ну я так понял что он приватный

Как он может быть приватным? Ворованный и проданный, все как обычно.
Это же выдранный из Баллопановского DM плагина кусок кода. У него пишут /guns, а здесь товарищ изменил сворованное название.
 

tonline_kms65_1

Участник
Сообщения
565
Реакции
225
Есть моделька гранаты, которая имеет к парент к другой модельке, которая смещается каждые Х секунд на 0,5 юните, так-же есть ещё одна моделька, к которой первая модель движется, как заставить гранату наносить урон так, что бы хук SDKHook_OnTakeDamage сработал на второй модельке когда граната прикоснётся к ней. Хук на прикосновение не подходит! Нужно именно найти позицию урона на теле игрока.
Все что описал это цельная 3D модель?
Сообщения автоматически склеены:

Да просто подумал так)
Если есть то поделись
Раз он не приватный
Что там делиться, он в свободном доступе. Ссылку не дам, давно с ним дела не имел, ищи просто что то из разряда cssdm
 

Skvin

Участник
Сообщения
323
Реакции
118
Всем привет.
Может кто сделать громкость звука меньше ?
Сильно громко при попадание.
C-подобный:
#include <sdktools_sound>
#include <sdktools_stringtables>
#pragma newdecls required

#define SOUND_LOAD    "sound/custom/ur.mp3"
#define SOUND_PLAY    "*/custom/ur.mp3"

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

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

public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    if (event.GetBool("headshot"))
    {
        int attacker[1];
        attacker[0] = GetClientOfUserId(event.GetInt("attacker"));
        EmitSound(attacker, 1, SOUND_PLAY);
    }
}
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Всем привет.
Может кто сделать громкость звука меньше ?
Сильно громко при попадание.
C-подобный:
#include <sdktools_sound>
#include <sdktools_stringtables>
#pragma newdecls required

#define SOUND_LOAD    "sound/custom/ur.mp3"
#define SOUND_PLAY    "*/custom/ur.mp3"

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

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

public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    if (event.GetBool("headshot"))
    {
        int attacker[1];
        attacker[0] = GetClientOfUserId(event.GetInt("attacker"));
        EmitSound(attacker, 1, SOUND_PLAY);
    }
}
Читайте EmitSound · sdktools_sound · SourceMod Scripting API Reference
Значения от 1,0 до 0,0

Результат:
#include <sdktools_sound>
#include <sdktools_stringtables>
#pragma newdecls required

#define SOUND_LOAD    "sound/custom/ur.mp3"
#define SOUND_PLAY    "*/custom/ur.mp3"

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

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

public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    if (event.GetBool("headshot"))
    {
        int attacker[1];
        attacker[0] = GetClientOfUserId(event.GetInt("attacker"));
        EmitSound(attacker, 1, SOUND_PLAY, _, _, _, _, 0.5);
    }
}
Сообщения автоматически склеены:

Как отловить Change Callbacks конвара, то-есть как получить Handle плагина, который сменил данный конвар? Нужно это для отлавливания r_screenoverlay у игроков.
 
Последнее редактирование:

Skvin

Участник
Сообщения
323
Реакции
118
Читайте EmitSound · sdktools_sound · SourceMod Scripting API Reference
Значения от 1,0 до 0,0

Результат:
#include <sdktools_sound>
#include <sdktools_stringtables>
#pragma newdecls required

#define SOUND_LOAD    "sound/custom/ur.mp3"
#define SOUND_PLAY    "*/custom/ur.mp3"

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

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

public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    if (event.GetBool("headshot"))
    {
        int attacker[1];
        attacker[0] = GetClientOfUserId(event.GetInt("attacker"));
        EmitSound(attacker, 1, SOUND_PLAY, _, _, _, _, 0.5);
    }
}
Сообщения автоматически склеены:

Как отловить Change Callbacks конвара, то-есть как получить Handle плагина, который сменил данный конвар? Нужно это для отлавливания r_screenoverlay у игроков.
Ты лучший,я выйду за тебя замуж )
Сообщения автоматически склеены:

Читайте EmitSound · sdktools_sound · SourceMod Scripting API Reference
Значения от 1,0 до 0,0

Результат:
#include <sdktools_sound>
#include <sdktools_stringtables>
#pragma newdecls required

#define SOUND_LOAD    "sound/custom/ur.mp3"
#define SOUND_PLAY    "*/custom/ur.mp3"

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

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

public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    if (event.GetBool("headshot"))
    {
        int attacker[1];
        attacker[0] = GetClientOfUserId(event.GetInt("attacker"));
        EmitSound(attacker, 1, SOUND_PLAY, _, _, _, _, 0.5);
    }
}
Сообщения автоматически склеены:

Как отловить Change Callbacks конвара, то-есть как получить Handle плагина, который сменил данный конвар? Нужно это для отлавливания r_screenoverlay у игроков.
А можно сделать так что-бы
Я хочу поставить звук например 1 хедшот 1 звук второй хедшот,уже другой звук.и всё за один раунд !?
Или хотя-бы можно сделать так например если я попадаю в голову то у меня другой звук ,а тому кому я попал в голову ,звук совсем другой ?!))
 
Последнее редактирование:

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Ты лучший,я выйду за тебя замуж )
Сообщения автоматически склеены:


А можно сделать так что-бы
Я хочу поставить звук например 1 хедшот 1 звук второй хедшот,уже другой звук.и всё за один раунд !?

Типо рандомный звук?

C++:
#include <sdktools_sound>
#include <sdktools_stringtables>
#pragma newdecls required

static const char iSounds[][] =
{
    "custom/ur.mp3",
    "custom/ur2.mp3",
    "custom/ur3.mp3",
    "custom/ur4.mp3",
}

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

public void OnMapStart()
{
    char buff[256];
    for(int poss = 0; poss < sizeof(iSounds); poss++)
    {
          Format(buff, 63, "sound/%s", iSounds[poss]);
        PrecacheSound(buff, true);
        AddFileToDownloadsTable(buff);
    }
}

public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    if(event.GetBool("headshot"))
    {
        int attacker[1];
        attacker[0] = GetClientOfUserId(event.GetInt("attacker"));
        EmitSound(attacker, 1, iSounds[GetRandomInt(0, sizeof(iSounds)-1)], _, _, _, _, 0.5);
    }
}
 

Skvin

Участник
Сообщения
323
Реакции
118
Типо рандомный звук?

C++:
#include <sdktools_sound>
#include <sdktools_stringtables>
#pragma newdecls required

static const char iSounds[][] =
{
    "custom/ur.mp3",
    "custom/ur2.mp3",
    "custom/ur3.mp3",
    "custom/ur4.mp3",
}

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

public void OnMapStart()
{
    char buff[256];
    for(int poss = 0; poss < sizeof(iSounds); poss++)
    {
          Format(buff, 63, "sound/%s", iSounds[poss]);
        PrecacheSound(buff, true);
        AddFileToDownloadsTable(buff);
    }
}

public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    if(event.GetBool("headshot"))
    {
        int attacker[1];
        attacker[0] = GetClientOfUserId(event.GetInt("attacker"));
        EmitSound(attacker, 1, iSounds[GetRandomInt(0, sizeof(iSounds)-1)], _, _, _, _, 0.5);
    }
}
Смотри,я стреляю в голову у меня один звук, а по тому кому я попал именно в голову,у него другой звук
 

s777

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

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Нужно запретить заходить за наблюдателей, если ты уже играешь за КТ или Т. Если ты только подключился к серверу и не выбрал команду, запрета быть не должно. Реализуемо?
C++:
public void OnPluginStart()
{
    AddCommandListener(SelectTeam, "jointeam");
}

public Action SelectTeam(int client, const char[] command, int args)
{
    char sTeam[3];
    GetCmdArg(1, sTeam, sizeof(sTeam));
    int Team = StringToInt(sTeam);

    if(GetClientTeam(client) > 1 && Team == 1)
        return Plugin_Stop;

    return Plugin_Continue;
}
 

s777

Участник
Сообщения
449
Реакции
74
C++:
public void OnPluginStart()
{
    AddCommandListener(SelectTeam, "jointeam");
}

public Action SelectTeam(int client, const char[] command, int args)
{
    char sTeam[3];
    GetCmdArg(1, sTeam, sizeof(sTeam));
    int Team = StringToInt(sTeam);

    if(GetClientTeam(client) > 1 && Team == 1)
        return Plugin_Stop;

    return Plugin_Continue;
}
Не компилится
 

Вложения

  • Скриншот 28-02-2020 195543.png
    Скриншот 28-02-2020 195543.png
    4 КБ · Просмотры: 13

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
можно было так ещё сделать:
C-подобный:
public void OnPluginStart()
{
    AddCommandListener(SelectTeam, "jointeam");
}

public Action SelectTeam(int client, const char[] command, int args)
{
    static char team[4];
    GetCmdArg(1, team, sizeof(team));
    return GetClientTeam(client) > 1 && team[0] == '1' ? Plugin_Stop : Plugin_Continue;
}
 
  • Мне нравится
Реакции: s777

RusJJ

Доброе утро девачьки
Сообщения
2,582
Реакции
1,075
Может у кого есть идеи по изменению размера спрайта? Пиксели глаза выедают, scale менее 0.25 (а может и 1.0) не влияет никак (захардкодили наверное). Найти бы способ уменьшить, ибо просто мда
 

gtixon

Участник
Сообщения
1,078
Реакции
401
1583177525141.png

Почему предупреждает?
1583177568877.png
 

Вложения

  • 1583177543295.png
    1583177543295.png
    4.4 КБ · Просмотры: 3
Сверху Снизу