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

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

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

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

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

AdminBookMenu для DayZ 0.62

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

И снвова здравствуйте, товарищи!

Думаю, многие из вас уже натыкались на BookMenu в сборках серверной части 0.62 в сети, но большинство не смогло их установить. В данной теме я опишу гайд, который поможет вам установить похожее меню на свой сервер, созданный на основе серверных файлов моей сборки:

 

Начнем:

1. Скачиваем архив: https://yadi.sk/d/tLLdv6vJRoYThQ

https://mega.nz/#!6CoyiCbY!FlMeng4M3ZtSQk1ttjim1-AD-_J8AerXrqK7VK0FWRI

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

2. Помещаем файл AdminBook.c по пути: scripts\4_World\Entities\ItemBase

3. Открываем в Notepad++: scripts\4_World\Entities\ManBase\PlayerBase.c
4. Находим:

void OnGetActions (ActionMenuContext ctx, Man player)
	{  	
		super.OnGetActions(ctx, player);
		if ( GetDayZGame().IsNewPlayer() && GetGame().IsServer() && m_ActionManager ) m_ActionManager.OnGetActions(ctx);
	}

И меняем на

void OnGetActions (ActionMenuContext ctx, Man player)
	{  	
		super.OnGetActions(ctx, player);
		if ( GetDayZGame().IsNewPlayer() && GetGame().IsServer() && m_ActionManager ) m_ActionManager.OnGetActions(ctx);

		float mySwitch;
		player.GetVariable ("toggleFreeCamOptions", mySwitch);
		
		if ( mySwitch == 1) //Shows actions on player only if switch is toggled on//set to 1 if 0 then does not show it!
		{
			ctx.AddAction("EXIT", 					1, 	NULL, 	1, 	true, 	true);
			// ctx.AddAction("TELEPORT TO PLAYER", 	2, 	NULL, 	1, 	true, 	true);
			// ctx.AddAction("MY ACTION #3", 		2, 	NULL, 	1, 	true, 	true);
			// ctx.AddAction("MY ACTION #4", 		2, 	NULL, 	1, 	true, 	true);
		}
		
	}

А также находим:

bool OnAction(int action_id, Man player, ParamsReadContext ctx)
	{
		super.OnAction(action_id, player, ctx);
		if( GetDayZGame().IsNewPlayer() && action_id == 109 && GetGame().IsServer() &&  m_ActionManager) m_ActionManager.OnAction();
	}

и меняем на

bool OnAction(int action_id, Man player, ParamsReadContext ctx)
	{
		super.OnAction(action_id, player, ctx);
		if( GetDayZGame().IsNewPlayer() && action_id == 109 && GetGame().IsServer() &&  m_ActionManager) m_ActionManager.OnAction();
		
		if ( GetGame().IsServer() )
		{
			switch (action_id)
			{
				case 1:
					
					string PlayerAdmin;
					player.GetVariable ( "PlayerName", PlayerAdmin );
					
					string cameraCode = "{ if (name _x == '" + PlayerAdmin + "') then {(owner _x) SpawnForClient { _cam = 'camconstruct' camCreate [0,0,0]; _cam CameraEffect ['Terminate', 'Back']; camDestroy _cam; }; }; }forEach players;";
										
					GetGame().ExecuteSQF(cameraCode);

					player.SetVariable( "toggleFreeCamOptions", 0);

					break;
					
				case 2:
				
					string freeCamTeleportPos;
					player.GetVariable ( "freeCamTeleportPos", freeCamTeleportPos );
					
					vector teleportLocation = freeCamTeleportPos.ToVector();
					
					player.SetPosition(teleportLocation);

					break;
					
			};
		};
	}

P.S. Это необходимые опции для выхода с режима наблюдения

5. Открываем файл: MPMissions\dayz_Auto.ChernarusPlus\scripts\init\init_newBody.sqf  и находим строки:

playerBodies set [count playerBodies,_agent];
	_agent setVariable ["UID",_uid];

Добавляем ниже строки

_agent setVariable ["toggleFreeCamOptions",0];
	_agent setVariable ["freeCamTeleportPos",0];

Там же находим строку

myNotifiers = _agent getVariable ["myNotifiers",[]];

и добавляем ниже

_agent setVariable ["playerName",name _agent];

6. Открываем: scripts\DataBase\DataBase.h

И добавляем в конце файла следующее:

// InGame AdminMenu 'AdminBook' by 123new
	static const string AdminMenu_adminList = "76561200555123705,UID4,UID5"; 
	static const string AdminMenu_ModerList = "UID1,UID2,UID3";

Где, как вы уже догадались, в указанном формате UID модеров и админов на сервере

P.S. Соблюдайте, чтобы UID в списке админов не дублировался в списке модераторов, и наоборот

7. Запускаем сервер,добавляем в лут себе объект с id "BookTheThreeMusketeers" и проверяем то что мы сделали!
Меню будет на правой кнопке мышки на книжке, если вы прописали верно ваш UID.

 

У администрации доступно:
1. Изменение погоды
2. Выдача 3 наборов с лутом в качестве примера (сами потом редактируйте, на enscript) (при выдаче лута скидывайте книгу на землю!!!)
3. Наблюдение за игроками (дистанция ограничена дальностью отрисовки и синхронизации объектов на стороне клиента игры)

У модерации доступно:
1. Наблюдение за игроками (дистанция ограничена дальностью отрисовки и синхронизации объектов на стороне клиента игры)

Замеченные недостатки:
Поскольку меню работает по никам игроков, то возможны проблемы, поскольку некоторые символы могут не восприняться enscript текущей версии игры и вызывать проблемы скрипта.
Дальность наблюдения ограничена (см выше)
Поскольку Enscript 0.62 версии игры крайне сырой, возможны 'убегания' меню за экран

Где редактировать меню?
Все просто, тут весь код: scripts\4_World\Entities\ItemBase\AdminBook.c

Благодарности: Автору uhneb за его вариант с рабочим меню, которые сделал он, либо комьюнити, с которым он работал
Работоспособность: DayZ 0.62

Возможно, можно сделать эти меню более граммотно с нынешними знаниями по 0.63, но я считаю это уже нецелесообразным!

 

Чужая наработка автора BorizK (за что и благодарим его) на базе этого меню:

Описание имеется там же несколькими сообщениями ниже!

 

Замечу, что данный гайд основывается именно на мою версию сборки серверных файлов игры DayZ 0.62, но не исключено, что может подходить и к вашим серверным файлам! Также, возможно дорабатывать и изменять опционал меню, используя привычные sqf-функции. Для этого создавайте эти функции в sqf из mpmission, а затем дорабатывайте само book-menu под нужные вам опции. Пример исполнения sqf-кода на enscript (только для dayz 0.62) имеется в опции наблюдения!

Изменено пользователем 123new (история изменений)

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


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



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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: radical
      Доброго времени суток! Хотел вот поинтересоваться, плюс по возможности чтобы растолковали что к чему.
      Суть вопроса: хочу на сервер сделать те же самые ванильные вещи, но, кхм, размер клеточек у ванильных по меньше прописать, чтоб в инвентаре поместились. Как это сделать я примерно понял, config.cpp я поправлю, но встал вопрос ребром:  но кроме этого файла, что надо делать. Вопросов много появляется, а в интернете информацию сложно накопать. Решил попросить помощи у знающих людей.
      1. По возможности хотелось бы от начала до конца увидеть весь путь изменения одного ванильного предмета
      2. Из просьбы что выше появляется вопрос: с остальными ванильными предметами такое же решение делать? ( Это при условии, если тема 1 решится)
       
      P.S. Если будут какие то файлы, ссылки, да даже просто объяснения, это меня сдвинет с мёртвой точки, а то завис)
    • Автор: fedotovyasha
      Где можно достать карту в очень высоком разрешении, все в интернете такого себе качества. Хочу сделать свою карту
    • Автор: fedotovyasha
      Есть ли возможность сгенерировать и отобразить в ui qr код? Если да, то как?
    • Автор: fedotovyasha
      Хочу сделать возможность передачи данных об каждом игроке в программу на c#. Есть ли возможность как-то завязаться на rcon или с помощью кастомного сокета?
       
      Пока сделал часть с помощью текстового документа: сервер сохраняет данные в файл, а программа читает этот файл и получает необходимые данные, но это костыль, хотелось бы сделать нормально.
    • Автор: paranoyk
      Нужно чисто серверное решение, привыходе игроков в определенной зоне следующий респавн  их был по прописанным точкам
  • Наш выбор

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

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

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