Подскажите пожалуйста как запретить показ титула над головой когда в спектрах?

santazx

Участник
Сообщения
23
Реакции
5
Подскажите пожалуйста как запретить показ титула над головой игроков когда в спектрах?
Привожу в пример код ниже.

PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <clientprefs>

public Plugin:myinfo = 
{
    name    = "Admin Status",
    author    = "1mpulse",
    version = "0.1",
    url = ""
};

new g_Models[MAXPLAYERS + 1] = {-1, ...};
new Handle:g_hKv;
new String:upstatus_flag[5];
new String:upstatus[PLATFORM_MAX_PATH], String:upstatus2[PLATFORM_MAX_PATH];

public OnPluginStart()
{
    decl String:buffer[256];
    if (g_hKv != INVALID_HANDLE) CloseHandle(g_hKv);
    g_hKv = CreateKeyValues("admin_upstatus");
    BuildPath(Path_SM, buffer, 256, "data/admin_status.ini");
    if (!FileToKeyValues(g_hKv, buffer)) SetFailState("Couldn't parse file %s", buffer);
    KvGetString(g_hKv, "flag", upstatus_flag, sizeof(upstatus_flag), "");
    KvGetString(g_hKv, "status_sprite_vmt", upstatus, PLATFORM_MAX_PATH);
    KvGetString(g_hKv, "status_sprite_vtf", upstatus2, PLATFORM_MAX_PATH);
    HookEvent("player_spawn", Event_PlayerSpawn);
    HookEvent("player_death", Event_PlayerDeath);
}

public OnMapStart()
{
    PrecacheModel(upstatus);
    PrecacheModel(upstatus2);
}

public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontbroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    new AdminId:admin = GetUserAdmin(client);
    if(IsClientInGame(client) && IsPlayerAlive(client) && admin != INVALID_ADMIN_ID)
    {
        if(StrEqual(upstatus_flag, ""))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "a") && GetAdminFlag(admin, Admin_Reservation, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "b") && GetAdminFlag(admin, Admin_Generic, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "c") && GetAdminFlag(admin, Admin_Kick, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "d") && GetAdminFlag(admin, Admin_Ban, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "e") && GetAdminFlag(admin, Admin_Unban, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "f") && GetAdminFlag(admin, Admin_Slay, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }            
        else if(StrEqual(upstatus_flag, "g") && GetAdminFlag(admin, Admin_Changemap, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "h") && GetAdminFlag(admin, Admin_Convars, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "i") && GetAdminFlag(admin, Admin_Config, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "j") && GetAdminFlag(admin, Admin_Chat, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "k") && GetAdminFlag(admin, Admin_Vote, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "l") && GetAdminFlag(admin, Admin_Password, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "m") && GetAdminFlag(admin, Admin_RCON, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "n") && GetAdminFlag(admin, Admin_Cheats, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "o") && GetAdminFlag(admin, Admin_Custom1, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "p") && GetAdminFlag(admin, Admin_Custom2, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "q") && GetAdminFlag(admin, Admin_Custom3, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "r") && GetAdminFlag(admin, Admin_Custom4, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "s") && GetAdminFlag(admin, Admin_Custom5, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }            
        else if(StrEqual(upstatus_flag, "t") && GetAdminFlag(admin, Admin_Custom6, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
        else if(StrEqual(upstatus_flag, "z") && GetAdminFlag(admin, Admin_Root, Access_Effective))
        {
            CreateTimer(0.1, Create_Model, client);
        }
    }
}

public Action:Event_PlayerDeath(Handle:event, const String:name[], bool:dontbroadcast)
{     
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    SafeDelete(g_Models[client]);
    g_Models[client] = -1;
    return Plugin_Continue;
}

public Action:Create_Model(Handle:iTimer, any:client)
{
    SafeDelete(g_Models[client]);
    g_Models[client] = CreateIcon();
    PlaceAndBindIcon(client, g_Models[client]);
}

CreateIcon()
{    
    new sprite = CreateEntityByName("env_sprite_oriented");
    if(sprite == -1)    return -1;

    DispatchKeyValue(sprite, "classname", "env_sprite_oriented");
    DispatchKeyValue(sprite, "spawnflags", "1");
    DispatchKeyValue(sprite, "scale", "0.3");
    DispatchKeyValue(sprite, "rendermode", "1");
    DispatchKeyValue(sprite, "rendercolor", "255 255 255");
    DispatchKeyValue(sprite, "model", upstatus);
    if(DispatchSpawn(sprite))    return sprite;

    return -1;
}

PlaceAndBindIcon(client, entity)
{
    new Float:origin[3];

    if(IsValidEntity(entity)) {
        GetClientAbsOrigin(client, origin);
        origin[2] = origin[2] + 90.0;
        TeleportEntity(entity, origin, NULL_VECTOR, NULL_VECTOR);

        SetVariantString("!activator");
        AcceptEntityInput(entity, "SetParent", client);
    }
}

SafeDelete(entity)
{
    if(IsValidEntity(entity)) {
        AcceptEntityInput(entity, "Kill");
    }
}
 
Последнее редактирование:

santazx

Участник
Сообщения
23
Реакции
5
После этого добавь просто с новой строчки: HookEvent("player_team", Event_PlayerDeath);
Думаю, будет вполне достаточно и целесообразно.

Спасибо попробую с этим :)

Добавлено через 20 минут
AlmazON, подскажите пожалуйста как сделать активацию звука 1 раз на карте даже если другой игрок активирует.

Пример кода ниже заранее спасибо.
PHP:
for (new i = 1; i <= MaxClients; i++){
    if (IsClientInGame(i) && !IsFakeClient(i))
    {
        ClientCommand(i, "play music/event.mp3");
    }
}

Сейчас работает не правильно, игрок активирует и другие повторно.
А нужно активировать 1 раз одним игроком в раунде.
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
нужно активировать 1 раз одним игроком в раунде
PHP:
new bool:MapSoundON = true;

public OnMapEnd() MapSoundON = true;

if (MapSoundON)
{
	for (new i = 1; i <= MaxClients; i++){
    if (IsClientInGame(i) && !IsFakeClient(i))
    {
        ClientCommand(i, "play music/event.mp3");
    }
	MapSoundON = false;
}
 
Сверху Снизу