Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 0
nike871

Сообщение в чат через VPPAdminTools

Приветствую. Извиняюсь за нелепые вопросы, я новичок в этом деле.

Суть, при выполнении DisableBuildingStaticMisc.SelfChatMessage(#login") в чат падает сообщение, белого цвета (примерно такого формата: ": здесь строится нельзя")

SelfChatMessage как я понимаю - это собственное сообщение. в данном случае сообщение ни от кого. Т.Е нет идентификатора отправителя.

modded class ActionDeployObject
{
	override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
	{
 		if (super.ActionCondition(player, target, item))
		{
			if (GetGame().IsClient())
			{
				if ((!player.GetDisableBuildManager().CanBuildInThisZone(item) && !player.GetDisableBuildManager().HasAllowItem(item)))
				{
					player.CancelPlacing();
					return false;
				}
			}
		}
		return super.ActionCondition(player, target, item);
	}
}
modded class ActionTogglePlaceObject
{
	override void Start( ActionData action_data ) //Setup on start of action
	{
		PlayerBase player = PlayerBase.Cast(action_data.m_Player);
		if (!player.GetDisableBuildManager().CanBuildInThisZone() && !player.GetDisableBuildManager().HasAllowItem(action_data.m_MainItem))
		{
			DisableBuildingStaticMisc.SelfChatMessage(#login");
			return;
		}
		else
		{
			super.Start( action_data );
		}
	}
}	

 

Далее, есть кусок кода где реализовано такое же сообщение, но уже через средства VPPAdminTools (т.е как я понимаю используются уведомления VPPAdminTools)

 

ref NoBuildZonesSettings m_NoBuildZonesSettings;

class NoBuildZonesSettings
{
    protected static string NoBZ_CONFIG = "$profile:NoBuildZones.json";

    bool EnableMessages = true;
    bool UseNotifications = true;
    float RefreshTimer = 1;
    static string Prefix = "NO BUILD ZONE";
    static string WarningMessage = "You are too close to $$0$$ to build.";
    ref array<string> IgnoredItems;
    ref array<ref NoBZ_Location> NoBuildZones;

    void NoBuildZonesSettings()
    {
        IgnoredItems = new ref array<string>;
        NoBuildZones = new ref array<ref NoBZ_Location>;
    }

    static string GetWarningMessage( string Description = "" )
    {
        string NewWarningMessage = m_NoBuildZonesSettings.WarningMessage;
        NewWarningMessage.Replace( "$$0$$", Description );
        return NewWarningMessage;
    }

    void SendWarningMessage( PlayerBase player )
    {
        bool NotificationWasSent = false;
        string message = GetWarningMessage( player.GetNoBZDesc() );
        if ( EnableMessages )
        {
            if ( UseNotifications )
            {
                string icon = "nobuild/Data/NoBuildZoneIcon.edds";
                PlayerIdentity sender = player.GetIdentity();
                #ifdef JM_COT
                if ( !NotificationWasSent )
                {
                    NotificationSystem.CreateNotification( new StringLocaliser( m_NoBuildZonesSettings.Prefix ), new StringLocaliser( message ), icon, ARGB( 255, 231, 76, 60 ), 7, sender );
                    NotificationWasSent = false;
                }
                #endif
                #ifdef VPPADMINTOOLS
                if ( !NotificationWasSent && GetGame().IsClient() )
                {
                    VPPNotificationManager.SendMessage( new VPPMessageProps( m_NoBuildZonesSettings.Prefix, message, 5.0, 1.0, icon ), sender );
                    NotificationWasSent = false;
                }
                #endif
                if ( !NotificationWasSent ) SendChatMessage( player )

            } else {
                SendChatMessage( player );
            }
        }
    }

    void SendChatMessage( PlayerBase player )
    {
        Param2<string, string> NoBZVars = new Param2<string, string>( player.GetNoBZName(), player.GetNoBZDesc() );
        ScriptRPC rpc = new ScriptRPC();
        GetGame().RPCSingleParam( player, NOBUILDZONE.NOBZ_MESSAGE, NoBZVars, true, player.GetIdentity() ) ;
    }

    bool ShouldUseNotifications()
    {
        if ( UseNotifications )
        {
            #ifdef JM_COT
            return UseNotifications;
            #endif
            #ifdef VPPADMINTOOLS
            return UseNotifications;
            #endif
            return false;
        }
        return true;
    }

    vector NoBZLocationToVector( float x, float y )
    {
        string sPosition = "" + x + " " + GetGame().SurfaceY(x, y) + " " + y;
        return sPosition.ToVector();
    }

    void Load()
    {
        ref NoBuildZonesSettings settings = new NoBuildZonesSettings();

        if ( FileExist( NoBZ_CONFIG ) )
        {
            JsonFileLoader<NoBuildZonesSettings>.JsonLoadFile( NoBZ_CONFIG, this );
        } else {
            IgnoredItems.Insert( "Fireplace" );
            NoBuildZones.Insert( new ref NoBZ_Location( "No build zone 1 exmaple", "zone 1 example", 7500, 7500, 1000 ) );
            JsonFileLoader<NoBuildZonesSettings>.JsonSaveFile( NoBZ_CONFIG, this );
        }
    }
}

static ref NoBuildZonesSettings NoBZ()
{
    if (!m_NoBuildZonesSettings)
    {
        m_NoBuildZonesSettings = new NoBuildZonesSettings;
        m_NoBuildZonesSettings.Load();
    }
    return m_NoBuildZonesSettings;
};

При выполнении этого кода, в чат падает сообщение красного цвета (примерно такое " [NoBuild]: запрещено строиться тут, отойдите чуть дальше.

 

Кто нибудь, ткните носом куда копать. Хотелось было переделать  DisableBuildingStaticMisc.SelfChatMessage(#login")  под уведомления VPPAdminTools. 

Сильно тапками не кидайте...Только только пытаюсь раскурить что и к чему.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

Нет ответов на вопрос

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.