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

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
Здрасьте. Хз как сделать, чтобы одному игроку отправило об объекте информацию одно, а другому игроку другую
 

over_trax

Участник
Сообщения
1,451
Реакции
488
Нужен маленький плагин для ксго, который запретит обычным игрокам заходить за наблюдателей
 

alexmy

Участник
Сообщения
284
Реакции
13
Всем привет, вообщем не могу понять почему так. Хочу изменить регистрационый ввод команды с /rank на !rank. Как бы и нету команды...
 

Вложения

  • hlstatsx.sp
    51.4 КБ · Просмотры: 4

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@alexmy,
upload_2018-4-23_1-59-52.png
И хлстатс конкретно !rank не отлавливает. Только rank.
 
F

FBI

Может кто написать простой плагин?
Чтобы игрокам показывало в HUD сообщении что остался последний игрок в противоположной команде.

Пример контров 2 а теров 1 показывает контрам, и наоборот, надеюсь понятно написал!
 

alexmy

Участник
Сообщения
284
Реакции
13

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Может кто написать простой плагин?
Чтобы игрокам показывало в HUD сообщении что остался последний игрок в противоположной команде.

Пример контров 2 а теров 1 показывает контрам, и наоборот, надеюсь понятно написал!
PHP:
// ** Тип сообщения
#define TYPEMESSAGE 2    // 1 - Чат | 2 - Худ


// ** Показывать ли сообщение еще раз в раунде, если уже когда-то было покзано
#define RESET 0            // 1 - Показывать | Любое другое значение запретит


// ** Продолжительность худ сообщения (сколько секунд показывать худ сообщения игрокам?)
#define TIME 5.0


// ** Координаты худ сообщения, когда остался последний...
#define POSTX 0.005        // Террорист >> вправо|влево
#define POSTY 0.52        // Террорист >> вверх|вниз
#define POSCTX 0.005    // Контр-террорист >> вправо|влево
#define POSCTY 0.48        // Контр-террорист >> вверх|вниз


// ** Цвет (RGB) худ сообщения...
#define COLOR_T_R GetRandomInt(0, 255)        // Террорист >> красный (В данный момент рандом)
#define COLOR_T_G GetRandomInt(0, 255)        // Террорист >> зеленый (В данный момент рандом)
#define COLOR_T_B GetRandomInt(0, 255)        // Террорист >> синий (В данный момент рандом)
#define COLOR_CT_R GetRandomInt(0, 255)        // Контр-террорист >> красный (В данный момент рандом)
#define COLOR_CT_G GetRandomInt(0, 255)        // Контр-террорист >> зеленый (В данный момент рандом)
#define COLOR_CT_B GetRandomInt(0, 255)        // Контр-террорист >> синий (В данный момент рандом)


// ** Текст сообщения, когда остался последний... | * '%N' - ник последнего игрока
#define MESSAGETT "Остался последний террорист: %N"            // Террорист
#define MESSAGECT "Остался последний контр-террорист: %N"    // Контр-террорист





// =================================================================== CODE ===================================================================

#include <sdktools_gamerules>

public Plugin myinfo =
{
    name = "Message - PlayerLast",
    author = "Drumanid",
    version = "1.0"
}

#define LC(%0) for(int %0 = 1; %0 <= MaxClients; ++%0) if(IsClientInGame(%0))
#define TEAM_T 2
#define TEAM_CT 3

bool g_bUse[2] = false;
EngineVersion g_Game;

public void OnPluginStart()
{
    g_Game = GetEngineVersion();

    HookEvent("round_start", RoundStart, EventHookMode_PostNoCopy);
    HookEvent("player_death", PlayerDeath, EventHookMode_PostNoCopy);
 
    HookEvent("player_spawn", PlayerSpawn);
}

public void RoundStart(Event event, const char[] name, bool dbc)
{
    for(int i; i < 2; i++) g_bUse[i] = false;
}

public void PlayerDeath(Event event, const char[] name, bool dbc)
{
    if(g_Game == Engine_CSGO) if(GameRules_GetProp("m_bWarmupPeriod")) return;
 
    int iTt, iCt, iClient[2];
    LC(i)
    {
        if(IsPlayerAlive(i))
        {
            switch(GetClientTeam(i))
            {
                case TEAM_T: if(++iTt < 2) iClient[0] = i;
                case TEAM_CT: if(++iCt < 2) iClient[1] = i;
            }
        }
    }
 
    if(iTt == 1 && !g_bUse[0])
    {
        SendMessage(iClient[0], TEAM_T);
        g_bUse[0] = true;
    }
    else if(iCt == 1 && !g_bUse[1])
    {
        SendMessage(iClient[1], TEAM_CT);
        g_bUse[1] = true;
    }
}

public void PlayerSpawn(Event event, const char[] name, bool dbc)
{
    if(RESET == 1 && !g_bUse[0] || !g_bUse[1])
    {
        switch(GetClientTeam(GetClientOfUserId(event.GetInt("userid"))))
        {
            case TEAM_T: g_bUse[0] = false;
            case TEAM_CT: g_bUse[1] = false;
        }
    }
}

void SendMessage(int iClient, int iTeam)
{
    if(iClient > 0 && IsClientInGame(iClient)/* && IsPlayerAlive(iClient)*/)
    {
        char sBuffer[128];
        switch(iTeam)
        {
            case TEAM_T: FormatEx(sBuffer, sizeof(sBuffer), MESSAGETT, iClient);
            case TEAM_CT: FormatEx(sBuffer, sizeof(sBuffer), MESSAGECT, iClient);
        }
    
        switch(TYPEMESSAGE)
        {
            case 1:
            {
                LC(i) PrintToChat(i, sBuffer);
            }
            case 2:
            {
                switch(iTeam)
                {
                    case TEAM_T: SetHudTextParams(POSTX, POSTY, TIME, COLOR_T_R, COLOR_T_G, COLOR_T_B, 255, 1, 1.0, 1.0, 1.0);
                    case TEAM_CT: SetHudTextParams(POSCTX, POSCTY, TIME, COLOR_CT_R, COLOR_CT_G, COLOR_CT_B, 255, 1, 1.0, 1.0, 1.0);
                }
            
                LC(i) ShowHudText(i, -1, sBuffer);
            }
        }
    }
}
 

Вложения

  • MessagePlayerLast.smx
    5.2 КБ · Просмотры: 6
  • MessagePlayerLast.sp
    4.4 КБ · Просмотры: 13
F

FBI

@Lisoh, спасибо сейчас проверю!
блин работает всё просто класс, но есть одно Но,может я ошибся и написал не правильно, как переместить в центр это сообщение? Это типо же худ чата? указать чат надо или я опять ошибаюсь, прикрепил скрин!
 

Вложения

  • Снимок.PNG
    Снимок.PNG
    350.2 КБ · Просмотры: 86
Последнее редактирование модератором:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@FBI,
PHP:
// ** Координаты худ сообщения
#define POSTX 0.005        // Террорист >> вправо|влево
#define POSTY 0.52        // Террорист >> вверх|вниз
#define POSCTX 0.005    // Контр-террорист >> вправо|влево
#define POSCTY 0.48        // Контр-террорист >> вверх|вниз
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
т.е нужно сделать:
x (положение по горизонтали) = -1.0 (по центру)
y (положение по вертикали) = 0.95
с высотой поиграйся сам (может это значение размещать слишком высоко)
 
F

FBI

@Grey83, а вот смотри примерное расположение как в плагине на рекламу там как раз то самое место.
 

over_trax

Участник
Сообщения
1,451
Реакции
488
Нужен простой плагин для Ability Levels v1.1.2 - Форум
Функционал: вместо клан-тэга нужно выводить название выбранного игроком класса (если это возможно)
 

Вложения

  • ability_levels.inc
    3.5 КБ · Просмотры: 9

alexmy

Участник
Сообщения
284
Реакции
13
Всем привет, не могу понять почему на последней версии компиляторе вылазиет ошибка 092, что не так?
PHP:
public void Ability_Use(Event event, const char [] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));

    if (bSuperTanksEnabled)
    {
        if (client > 0)
        {
            if (IsClientInGame(client))
            {
                if (IsTank(client))
                {
                    int index = GetSuperTankByRenderColor(GetEntityRenderColor(client)); // тут ошибка
                    if (index >= 0 && index <= 16)
                    {
                        if (index != 0 || (index == 0 && bDefaultOverride))
                        {
                            ResetInfectedAbility(client, flTankThrow[index]);
                        }
                    }
                }
            }
        }
    }
}
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@alexmy, покажите функцию GetSuperTankByRenderColor().
 

alexmy

Участник
Сообщения
284
Реакции
13
@alexmy, покажите функцию GetSuperTankByRenderColor().
stock GetSuperTankByRenderColor(color)
{
switch(color)
{
//Fire Tank
case 12800: return 7;
//Gravity Tank
case 333435: return 16;
//Ice Tank
case 0100170: return 8;
//Cobalt Tank
case 0105255: return 14;
//Meteor Tank
case 1002525: return 4;
//Jumper Tank
case 2002550: return 15;
//Jockey Tank
case 2552000: return 9;
//Smasher Tank
case 7080100: return 2;
//Spawn Tank
case 7595105: return 1;
//Spitter Tank
case 12115128: return 5;
//Heal Tank
case 100255200: return 6;
//Ghost Tank
case 100100100: return 10;
//Shock Tank
case 100165255: return 11;
//Warp Tank
case 130130255: return 3;
//Shield Tank
case 135205255: return 13;
//Witch Tank
case 255200255: return 12;
//Default Tank
case 255255255: return 0;

}
return -1;
}
 
Сверху Снизу