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

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

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

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

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

Extra_RC дополнение для ключей.

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

Как то встала задача, чтобы в ExtraRC (ПКМ опциях), были кликабельны ВСЕ ключи.

т.е. - при клике на любой ключ, появлялись пункты меню...

Сам ExtraRC в том виде, в котором он есть, данного не позволяет, а ключей несколько сотен, и добавлять каждый это гиблое дело...

Но решить проблемку можно достаточно просто, - для этого дела, нам понадобится слегка модернизировать файл

ui_selectSlot.sqf

Сам файл теперь будет выглядеть так:

private ["_control","_button","_parent","_group","_pos","_item","_subItem","_conf","_name","_cfgActions","_numActions","_height","_menu","_config","_type","_script","_outputOriented","_compile","_array","_outputClass","_outputType","_erc_cfgActions", "_erc_numActions"];
disableSerialization;
_control	=	(_this select 0);
_button		=	(_this select 1);
_parent		=	findDisplay 106;
if (_button == 1) then
	{
		_group	=	_parent displayCtrl 6902;
		_pos	=	ctrlPosition _group;
		_pos set [0, ((_this select 2) + 0.48)];
		_pos set [1, ((_this select 3) + 0.07)];
		_item	=	gearSlotData _control;
		_conf	=	configFile >> "cfgMagazines" >> _item;
		if (!isClass _conf) then
			{_conf	=	configFile >> "cfgWeapons" >> _item;};
		_name		=	getText(_conf >> "displayName");
		_cfgActions	=	_conf >> "ItemActions";
		_numActions	=	(count _cfgActions);
		_height		=	0;
		for "_i" from 0 to (_numActions - 1) do 
			{
				_menu			=	_parent displayCtrl (1600 + _i);
				_menu ctrlShow true;
				_config			=	(_cfgActions select _i);
				_type			=	getText	(_config >> "text");
				_script			=	getText	(_config >> "script");
				_outputOriented	=	getNumber	(_config >> "outputOriented") == 1;
				_height			=	_height + (0.025 * safezoneH);
				_compile		=	format["_id = '%2' %1;",_script,_item];
				uiNamespace setVariable ['uiControl', _control];
				if (_outputOriented) then
					{		
						_array			=	getArray (_config >> "output");
						_outputClass	=	(_array select 0);
						_outputType		=	(_array select 1);
						_name			=	getText (configFile >> _outputType >> _outputClass >> "displayName");
						_compile		=	 format["_id = ['%2',%3] %1;",_script,_item,_array];
					};
				_menu ctrlSetText format[_type, _name];
				_menu ctrlSetEventHandler ["ButtonClick", _compile];
			};
		//	Ключи
		_subItem	=	_item;
		_subItem	=	toArray _subItem;
		if ( (count _subItem) > 7 ) then
			{_subItem resize 7;};
		_subItem	=	toString _subItem;
		if (_subItem == "ItemKey") then
			{_erc_cfgActions	=	(missionConfigFile >> "ExtraRc" >> _subItem);}
		else
			{_erc_cfgActions	=	(missionConfigFile >> "ExtraRc" >> _item);};
		_erc_numActions	=	(count _erc_cfgActions);
		if (isClass _erc_cfgActions) then
			{
				for "_j" from 0 to (_erc_numActions - 1) do 
					{
						_menu	=	_parent displayCtrl (1600 + _j + _numActions);
						_menu ctrlShow true;
						_config	=	(_erc_cfgActions select _j);
						_text	=	getText	(_config >> "text");
						_script	=	getText	(_config >> "script");
						_height	=	_height + (0.025 * safezoneH);
						uiNamespace setVariable ['uiControl', _control];
						_menu ctrlSetText _text;
						_compile=	format["_item = '%2'; %1", _script, _item];
						_menu ctrlSetEventHandler ["ButtonClick", _compile];
					};
			};
		_pos set [3,_height];
		_group ctrlShow true;
		ctrlSetFocus _group;
		_group ctrlSetPosition _pos;
		_group ctrlCommit 0;
	};

А чтобы добавить пункты ко всем ключам, в самом ExtraRC прописываем так:

	class ItemKey
            {
                class Ultima_Client_ExtraRC_Vehicle_Find_By_Key
                    {
                        text = "Найти технику";
						script	=	"[] spawn Ultima_Client_Procedure_Vehicle_Find_By_Key;";
					};
                class Ultima_Client_ExtraRC_Vehicle_Set_Alarm
                    {
                        text = "Поставить на сигнализацию";
						script	=	"[] spawn Ultima_Client_Procedure_Vehicle_Set_Alarm;";
                    };
			};

*Пункты приведены для примера.

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


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



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

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

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

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

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

Войти

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

Войти сейчас

  • Похожие публикации

    • Автор: BR0wi
      Подскажите где найти людей, которые делаю моды на заказ. К кому вообще обращаться? Или что бы реализовать свои идеи нужно самому "год" сидеть и изучать все механики модинга?
    • Автор: CubeIn
      Приветствую господа, хочу создать новый проект, уникальный, но для этого нужен маппер.
      Я оставлю здесь свой дискрод, напишите в лс, кто готов взяться за крупный проект.
      4me#4542
    • Автор: 123new
      Вижу крайне много любопытных вопросов по поводу идентификаторов игрока в игре. Что же, разжую для не знающих немного.
       
      В игре есть следующие типы идентификаторов:
      1. Steam64ID идентификатор профиля игрока (на пиратках его UID называют), примерно такой: 765475....65 (17 цифр).
      2. Так называемый мною, BIS ID - uid из окна (консоли) сервера игры и ADM-файлов логов сервера, который пишется самой игрой
      3. Battleye GUID игрока.
       
      Первый идентификатор (Steam64ID) на ПК является прямым идентификатором стим-профиля игрока, уникальным у каждого игрока. Т.е. публичным идентификатором вашего профиля для большинства стим-игр (например, Counter-Strike).
      Второй идентификатор (BIS ID) является определенной хеш-суммой, полученной из Steam64ID посредством конвертации сначала в sha256, а затем в base64. Спасибо за это разъяснение и пример кода-конвертации авторам игры на своем официальном форуме.
      Третий идентификатор (Battleye GUID) является публичным идентификатором Battleye античита, получаемый также из Steam64ID поcредством получения его хеш-суммы MD5. Этот же идентификатор есть в логах сервера от Battleye, в любых RCON-приложениях (DART, BEC и т.п.), также его можно конвертировать самим.
       
      Так вот, как же получить Steam64ID:
      1. Зайти на любой ресурс, предназначенный для сбора таких данных. например на: https://steamid.io/
      2. Ввести ссылку на ваш стим-профиль
      3. Получить результат из кучи данных, одно поле из которых и будет содержать ваш Steam64ID
       
      Как получить BIS ID:
      1. Открыть любой Phyton v2.7 -конвертер в интернете, например: https://onecompiler.com/python2/3ycz55xew
      2. Ввести в него следующий код:
      # Hello World program in Python from hashlib import sha256 from base64 import b64encode def construct_bi_uid(steam_id): hashed = sha256() hashed.update(str(steam_id)) return b64encode(hashed.digest()) print construct_bi_uid(76514925976798981) 3. заменить 76514925976798981 на ваш Steam64ID
      4. Отправить код в исполнение, нажав Execute.
      5. Получить результат
       

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      [Альтернатива] Метод на основе PHP:
      <?php /** * This is how you get user id (bohemia id) like you see in .ADM files from steam id. */ $steam_id = "76514925976798981"; $user_id = base64url_encode(hash('sha256', $steam_id, true)); function base64url_encode($data) { $b64 = base64_encode($data); if ($b64 === false) { return false; } $url = strtr($b64, '+/', '-_'); return $url; } echo $user_id; [Альтернатива] Метод для javascript - node.js:
      var crypto = require('crypto'); var body = "76514925976798981"; var hash = crypto.createHash("sha256"); var hash_result = hash.update(body, 'utf8').digest('base64'); console.log(hash_result);  
      Как получить Battleye GUID:
      1. Открыть любой ресурс с готовой формой конвертирования, например:
      https://armstalker.com/guid/
      https://dayzrussia.com/f/index.php?pages/dayzguid/
      либо написать свою, на основе данных, предложенных на странице Github
      https://gist.github.com/chris579/53053b6d6438df9a9718c23c0d6bbd69
      Оставлю ниже код для Phyton:
      # Thanks to gunlinux import md5 steamid=76514925976798981 temp = "" for i in range(8): temp += chr((steamid & 0xFF)) steamid >>= 8 m = md5.new("BE"+temp) print m.hexdigest() Код для PHP:
      var crypto = require('crypto'); var body = "76514925976798981"; var hash = crypto.createHash("sha256"); var hash_result = hash.update(body, 'utf8').digest('base64'); console.log(hash_result); '2. Вставить в поле ввода UID(Steam64ID) ваш Steam64ID
      3. Нажать кнопку конвертирования или исполнить код, и получить в готовом виде Battleye GUID
       
      Возможно имеются и другие методы и наработки в получении данных идентификаторов более простыми методами, на других языках, либо автоматически. Я описал лишь известные мне.
      Все желающие могут добавить в комментариях свои способы конвертаций, возможно это поможет кому-либо.
    • Автор: 6agu
      Поставил
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
  • Наш выбор

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

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

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