Помощь с плагином Blue Screen

Туник

Участник
Сообщения
1,281
Реакции
263
Операционная система
Linux
Добрый день!
Помогите прикрутить флаг (b) для использования плагина только админами

PHP:
#include <sourcemod>
 
public Plugin:myinfo =  
{
 name = "Blue Screen",
 author = "xeon",
 description = "The plugin fades the screen to transparent blue for a second when you kill someone",
 version = "1.0",
 url = "http://johnspade.ru"
}
// Получение события смерти
public OnPluginStart()
{
 HookEvent("player_death", Event_PlayerDeath);
}
// Функция затемнения
PerformFade(client, duration, const color[4]) {
    if (client) {
        new Handle:message = StartMessageOne("Fade", client);

        PbSetInt(message, "duration", duration);
        PbSetInt(message, "hold_time", 0);
        PbSetInt(message, "flags", 0x0001);
        PbSetColor(message, "clr", color);

        EndMessage();
    }
}
// Получение игрока-убийцы, применение к нему функции затемнения
public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
 PerformFade(GetClientOfUserId(GetEventInt(event, "attacker")), 300, {0, 0, 200, 51});
// PerformFade(клиент, продолжительность, {красный, зеленый, синий, прозрачность})
}
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
C-подобный:
#include <sourcemod>
 
public Plugin:myinfo = 
{
 name = "Blue Screen",
 author = "xeon",
 description = "The plugin fades the screen to transparent blue for a second when you kill someone",
 version = "1.0",
 url = "http://johnspade.ru"
}
// Получение события смерти
public OnPluginStart()
{
 HookEvent("player_death", Event_PlayerDeath);
}
// Функция затемнения
PerformFade(client, duration, const color[4]) {
    if (client) {
        new Handle:message = StartMessageOne("Fade", client);

        PbSetInt(message, "duration", duration);
        PbSetInt(message, "hold_time", 0);
        PbSetInt(message, "flags", 0x0001);
        PbSetColor(message, "clr", color);

        EndMessage();
    }
}
// Получение игрока-убийцы, применение к нему функции затемнения
public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
    int iAttacker = GetClientOfUserId(GetEventInt(event, "attacker"));
    int iAccess = GetUserFlagBits(iAttacker);
    //                                                                            PerformFade(клиент, продолжительность, {красный, зеленый, синий, прозрачность})
    if(iAttacker && (iAccess == ADMFLAG_GENERIC || iAccess == ADMFLAG_ROOT))    PerformFade(iAttacker, 300, {0, 0, 200, 51});
}
 
Последнее редактирование:

Туник

Участник
Сообщения
1,281
Реакции
263
C-подобный:
#include <sourcemod>
 
public Plugin:myinfo =
{
 name = "Blue Screen",
 author = "xeon",
 description = "The plugin fades the screen to transparent blue for a second when you kill someone",
 version = "1.0",
 url = "http://johnspade.ru"
}
// Получение события смерти
public OnPluginStart()
{
 HookEvent("player_death", Event_PlayerDeath);
}
// Функция затемнения
PerformFade(client, duration, const color[4]) {
    if (client) {
        new Handle:message = StartMessageOne("Fade", client);

        PbSetInt(message, "duration", duration);
        PbSetInt(message, "hold_time", 0);
        PbSetInt(message, "flags", 0x0001);
        PbSetColor(message, "clr", color);

        EndMessage();
    }
}
// Получение игрока-убийцы, применение к нему функции затемнения
public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
    iAttacker = GetClientOfUserId(GetEventInt(event, "attacker"));
    //                                                ФЛАГ:            PerformFade(клиент, продолжительность, {красный, зеленый, синий, прозрачность})
    if(iAttacker && GetUserFlagBits(iAttacker) == ADMFLAG_GENERIC)    PerformFade(iAttacker, 300, {0, 0, 200, 51});
}
C:\Users\╥шьєЁ\Desktop\Blue_Screen.sp(33) : error 017: undefined symbol "iAttacker"
// C:\Users\╥шьєЁ\Desktop\Blue_Screen.sp(35) : error 017: undefined symbol "iAttacker"
// C:\Users\╥шьєЁ\Desktop\Blue_Screen.sp(35) : error 017: undefined symbol "iAttacker"
//
// 3 Errors.
 

Faya™

Жуестер
Сообщения
867
Реакции
457
C#:
static const int g_iColor[] = { 0, 0, 200, 51 };

public Plugin myinfo = 
{
    name = "Blue Screen",
    author = "xeon",
    description = "The plugin fades the screen to transparent blue for a second when you kill someone",
    version = "1.0",
    url = "http://johnspade.ru"
}

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

public Event_PlayerDeath(Handle hEvent, const char[] name, bool dontBroadcast)
{
    int iAttacker = GetClientOfUserId(GetEventInt(hEvent, "attacker"));

    if(GetUserFlagBits(iAttacker) == ADMFLAG_GENERIC)
    {
        PerformFade(iAttacker, 300);
    }
}

void PerformFade(int client, int duration)
{
    if(client > 0)
    {
        Handle message = StartMessageOne("Fade", client);

        PbSetInt(message, "duration", duration);
        PbSetInt(message, "hold_time", 0);
        PbSetInt(message, "flags", 0x0001);
        PbSetColor(message, "clr", g_iColor);

        EndMessage();
    }
}
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
C:\Users\╥шьєЁ\Desktop\Blue_Screen.sp(33) : error 017: undefined symbol "iAttacker"
// C:\Users\╥шьєЁ\Desktop\Blue_Screen.sp(35) : error 017: undefined symbol "iAttacker"
// C:\Users\╥шьєЁ\Desktop\Blue_Screen.sp(35) : error 017: undefined symbol "iAttacker"
//
// 3 Errors.
На 32-й строке iAttacker заменить на int iAttacker
 

Туник

Участник
Сообщения
1,281
Реакции
263
Перезагрузка сервера не помогла, ошибок нет, в вип модуль для себя отключил, проверка для админов не прошла.
Сообщения автоматически склеены:

А так? Обновил код в своём посте
минуту перепроверю
Сообщения автоматически склеены:

А так? Обновил код в своём посте
Тоже самое ошибок нет, нет эффекта.
 

Paranoiiik

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


минуту перепроверю
Сообщения автоматически склеены:


Тоже самое ошибок нет, нет эффекта.
У игрока точно флаг есть? Мне начинает казаться, что просто не проверяешь конкретно то, о чём просил в теме.
У убийцы должен быть флаг, чтобы он увидел эффект. Это так?


Ну.. попробуй что ли такой вариант
C-подобный:
#pragma semicolon 1
#pragma newdecls required

static const char    szAccess[]    = "bz";                    // Админские флаги | Если пусто, убийцей может быть любой игрок
static const int    iColor[]    = { 0, 0, 200, 51 };    // Цвет { R, G, B, A }
 
public Plugin myinfo            = 
{
    name                        = "Blue Screen",
    author                        = "xeon",
    description                    = "The plugin fades the screen to transparent blue for a second when you kill someone",
    version                        = "1.0 [HLmod 1.1]",
    url                            = "http://johnspade.ru"
}

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

public void eventPlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    int iAttacker = GetClientOfUserId(event.GetInt("attacker"));
    
    if(iAttacker && ((szAccess[0] && GetUserFlagBits(iAttacker) & ReadFlagString(szAccess)) || !szAccess[0]))
    {
        Handle message = StartMessageOne("Fade", iAttacker);

        PbSetInt(message,    "duration",        300);
        PbSetInt(message,    "hold_time",    0);
        PbSetInt(message,    "flags",        0x0001);
        PbSetColor(message,    "clr",            iColor);

        EndMessage();
    }
}
Проверь только сначала, чтобы в sm plugins list версия плагина была такой - 1.0 [HLmod 1.1]
 

Туник

Участник
Сообщения
1,281
Реакции
263
У игрока точно флаг есть? Мне начинает казаться, что просто не проверяешь конкретно то, о чём просил в теме.
У убийцы должен быть флаг, чтобы он увидел эффект. Это так?


Ну.. попробуй что ли такой вариант
C-подобный:
#pragma semicolon 1
#pragma newdecls required

static const char    szAccess[]    = "bz";                    // Админские флаги | Если пусто, убийцей может быть любой игрок
static const int    iColor[]    = { 0, 0, 200, 51 };    // Цвет { R, G, B, A }
 
public Plugin myinfo            =
{
    name                        = "Blue Screen",
    author                        = "xeon",
    description                    = "The plugin fades the screen to transparent blue for a second when you kill someone",
    version                        = "1.0 [HLmod 1.1]",
    url                            = "http://johnspade.ru"
}

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

public void eventPlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    int iAttacker = GetClientOfUserId(event.GetInt("attacker"));
   
    if(iAttacker && ((szAccess[0] && GetUserFlagBits(iAttacker) & ReadFlagString(szAccess)) || !szAccess[0]))
    {
        Handle message = StartMessageOne("Fade", iAttacker);

        PbSetInt(message,    "duration",        300);
        PbSetInt(message,    "hold_time",    0);
        PbSetInt(message,    "flags",        0x0001);
        PbSetColor(message,    "clr",            iColor);

        EndMessage();
    }
}
Проверь только сначала, чтобы в sm plugins list версия плагина была такой - 1.0 [HLmod 1.1]
флаг выдаёт сб
Сообщения автоматически склеены:

У игрока точно флаг есть? Мне начинает казаться, что просто не проверяешь конкретно то, о чём просил в теме.
У убийцы должен быть флаг, чтобы он увидел эффект. Это так?


Ну.. попробуй что ли такой вариант
C-подобный:
#pragma semicolon 1
#pragma newdecls required

static const char    szAccess[]    = "bz";                    // Админские флаги | Если пусто, убийцей может быть любой игрок
static const int    iColor[]    = { 0, 0, 200, 51 };    // Цвет { R, G, B, A }
 
public Plugin myinfo            =
{
    name                        = "Blue Screen",
    author                        = "xeon",
    description                    = "The plugin fades the screen to transparent blue for a second when you kill someone",
    version                        = "1.0 [HLmod 1.1]",
    url                            = "http://johnspade.ru"
}

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

public void eventPlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    int iAttacker = GetClientOfUserId(event.GetInt("attacker"));
   
    if(iAttacker && ((szAccess[0] && GetUserFlagBits(iAttacker) & ReadFlagString(szAccess)) || !szAccess[0]))
    {
        Handle message = StartMessageOne("Fade", iAttacker);

        PbSetInt(message,    "duration",        300);
        PbSetInt(message,    "hold_time",    0);
        PbSetInt(message,    "flags",        0x0001);
        PbSetColor(message,    "clr",            iColor);

        EndMessage();
    }
}
Проверь только сначала, чтобы в sm plugins list версия плагина была такой - 1.0 [HLmod 1.1]
Не работает)
Подскажи плиз нашел такой модуль, как его в вип меню добавить (пункт) я так понимаю там только команда работает !screen
 
Последнее редактирование:
Сверху Снизу