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

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

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

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

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

[ГАЙД] Build Vectors-вращение предметов стройки. Только для P4L 2.34 и выше

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

З.Ы. Как-то давно я психанул и удалил все свои гайды. Пришло время вернуть все на места своя :)

 

Вращение и наклон предметов для стройки.

Как сделать:

 

Скачаем это https://github.com/strikerforce/DayzBuildVectors

 

Все что в папке P4L_Snap_Replacements зальем в папку Custom (внимательно изучите все файлы во всех папках, если у вас стоит SC 2.0 или 3.0 или любой другой скрипт использующий sqf файлы из папки замены нужно перенести изменения из ваших файлов в новые)

 

1. Открываем server_monitor.sqf

 

Ищем:

if (!_wsDone) then {
    if (count _worldspace >= 1) then { _dir = _worldspace select 0; };
    _pos = [getMarkerPos "center",0,4000,10,0,2000,0] call BIS_fnc_findSafePos;
    if (count _pos < 3) then { _pos = [_pos select 0,_pos select 1,0]; };
    diag_log ("MOVED OBJ: " + str(_idKey) + " of class " + _type + " to pos: " + str(_pos));
};

Ниже добавляем:

_vector = [[0,0,0],[0,0,0]];
_vecExists = false;
_ownerPUID = "0";   
if (count _worldspace >= 3) then{
    if(count _worldspace == 3) then{
            if(typename (_worldspace select 2) == "STRING")then{
                _ownerPUID = _worldspace select 2;
            }else{
                 if(typename (_worldspace select 2) == "ARRAY")then{
                    _vector = _worldspace select 2;
                    if(count _vector == 2)then{
                        if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
                            _vecExists = true;
                        };
                    };
                };                  
            };

    }else{
        //Was not 3 elements, so check if 4 or more
        if(count _worldspace == 4) then{
            if(typename (_worldspace select 3) == "STRING")then{
                _ownerPUID = _worldspace select 3;
            }else{
                if(typename (_worldspace select 2) == "STRING")then{
                    _ownerPUID = _worldspace select 2;
                };
            };


            if(typename (_worldspace select 2) == "ARRAY")then{
                _vector = _worldspace select 2;
                if(count _vector == 2)then{
                    if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
                        _vecExists = true;
                    };
                };
            }else{
                if(typename (_worldspace select 3) == "ARRAY")then{
                    _vector = _worldspace select 3;
                    if(count _vector == 2)then{
                        if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
                            _vecExists = true;
                        };
                    };
                };
            };

        }else{
            //More than 3 or 4 elements found
            //Might add a search for the vector, ownerPUID will equal 0
        };
    };
}; 

Далее ищем:

_object setVariable ["ObjectID", _idKey, true];

Ниже добавляем (если есть дописывать не надо):

_object setVariable ["ownerPUID", _ownerPUID, true];

Ищем:

_object setdir _dir;

Ниже добавляем:

if(_vecExists)then{
    _object setVectorDirAndUp _vector;
}; 

Ищем:

if (DZE_GodModeBase) then {

Сразу над добавляем:

_object setVariable["memDir",_dir,true];

2. Далее двигаемся в server_functions.sqf

 

Находим:

dayz_objectUID2 = {

И всю эту функция заменяем на:

dayz_objectUID2 = {
    private["_position","_dir","_key","_element","_vector","_set","_vecCnt","_usedVec"];
    _dir = _this select 0;
    _key = "";
    _position = _this select 1;

    if((count _this) == 2) then{
        {
            _x = _x * 10;
            if ( _x < 0 ) then { _x = _x * -10 };
            _key = _key + str(round(_x));
        } count _position;
        _key = _key + str(round(_dir));
    }else{
        _vector = [];
        _usedVec = false;
        {
            _element = _x;
            if(typeName _element == "ARRAY") then{
                _vector = _element;
                if((count _vector) == 2)then{
                    if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
                            {
                                _x = _x * 10;
                                if ( _x < 0 ) then { _x = _x * -10 };
                                _key = _key + str(round(_x));
                            } count _position;

                            _vecCnt = 0;
                            {
                                _set = _x;
                                {
                                    _vecCnt = _vecCnt + (round (_x * 100));

                                } foreach _set;

                            } foreach _vector;
                            if(_vecCnt < 0)then{
                                _vecCnt = ((_vecCnt * -1) * 3);
                            };
                            _key = _key + str(_vecCnt);
                            _usedVec = true;
                    };
                };
            };
        } count _this;

        if!(_usedVec) then{
                {
                    _x = _x * 10;
                    if ( _x < 0 ) then { _x = _x * -10 };
                    _key = _key + str(round(_x));
                } count _position;
                _key = _key + str(round(_dir));
        };


    };
    _key
};

Далее рекомендуется установить вот это: http://epochmod.com/forum/index.php?/topic/15813-release-v104-precise-base-building-persistent-bases-after-restart-updated-021114/ - но не обязательно

 

3. Идем в наш compile.sqf

 

И сразу под первым player_build = добавляем:

fnc_SetPitchBankYaw =       compile preprocessFileLineNumbers "Custom\BuildVectors\fnc_SetPitchBankYaw.sqf";
DZE_build_vector_file =         "Custom\BuildVectors\build_vectors.sqf";
build_vectors =                 compile preprocessFileLineNumbers DZE_build_vector_file;

Перемещаемяся в init.sqf и под DZE_BuildOnRoads вставляем:

DZE_noRotate = []; //Предметы которые нельзя вращать. ПР: DZE_noRotate = ["ItemVault"]
DZE_vectorDegrees = [0.01, 0.1, 1, 5, 15, 45, 90];
DZE_curDegree = 45; //Стартовый угол наклона
DZE_dirWithDegrees = true; //При нажатии Q&E, использовать другие углы наклона

Дабы избежать ошибок в клиентском логе, откройте свой veriables.sqf и в AllowdActions добавте:

s_player_toggleDegree = -1;
s_player_toggleDegrees=[];
degreeActions = -1;
s_player_toggleVector = -1;
s_player_toggleVectors=[];
vectorActions = -1;

 

 

4. Далее, встаем со стула, стучим в шаманско-админский бубен 3 раза, ставим мне +

 

Установка закончена, не выполнив 4-й пункт скрипт не заработает :biggrin:

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

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


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

в  server_monitor.sqf  нужно найти if (DZE_GodModeBase) then { ,а что если нет данной строки??

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


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

123

Изменено пользователем TheFirstNoob
Удаления неизвестной ссылки. Вероятно спам. (история изменений)

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


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

в  server_monitor.sqf  нужно найти if (DZE_GodModeBase) then { ,а что если нет данной строки??

в стоковом сервере есть

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


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

в стоковом сервере есть

у меня не стоковый))без этой строки никак?)

 

в стоковом сервере есть

может подскажите пожалуйста в какую область её можно добавить?

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


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

У меня на сервере установлен уже Snap Pro 1.4

Если установлю этот скрипт, работать будет!?

 

135647.png

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


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

У меня на сервере установлен уже Snap Pro 1.4

Если установлю этот скрипт, работать будет!?

 

 

 

Вам нужно внимательно, аккуратно, любя совместить файлы из архива с тему что у вас уже есть

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


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

Установил по инструкции (ПУНКТ 4 Тоже выполнил)

При стройке появляется инструкция (типа нажмите Q\E для поворота), а в scroll меню нету функции включения прилипания и "Повернуть Объект на "N" градусов

В чем может быть проблема 

 

135647.png

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


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

Отключите в инфистаре блокировку Скролл меню.

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


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

Установил по инструкции (ПУНКТ 4 Тоже выполнил)

При стройке появляется инструкция (типа нажмите Q\E для поворота), а в scroll меню нету функции включения прилипания и "Повернуть Объект на "N" градусов

В чем может быть проблема 

Вариантов уйма, от проверки скролл меню в инфи

До неправильных compile и fn_selfaction

Вы на чистый сервер ставили?

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


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

 

Спасибо.

Антихак я выключил, это ничего не изменило.

 

Сейчас обратил внимание на приписку в названии темы "Только для P4L 2.34

и выше" и меня осинило, может нужно поставить что-то что всем этим руководит

так сказать?Этот P4L, или внутри архива\инструкции и так всё было уже?

эта версия именно под p4l. если вы его не используете, соответственно и ставить вам это не надо.

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


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

 

После установки, перестали работать сейфы, даже через админку, меню не появляется, кто-нибудь сталкивался?

P4L ставил по этому гайду

http://epochmod.com/forum/index.php?/topic/11042-release-a-plot-for-life-v25-keep-your-buildables-on-death-take-plot-ownership/

Build Vectors по этому гайду

fn_selfactions смотрите

в клиентский лог смотрите. там всё будет.

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

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


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

поправьте гайд.

"2.34 и выше" - не корректно, с 2.5 работать не будет.

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


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

с 2.5 работает прекрасно

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


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

с 2.5 работает прекрасно

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

как бы намекает.

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


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

как бы я сам проверял

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


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

Я пытался ставить с 2.5, в процессе установки ошибок скорее всего не было, так как все действия по установке я скрупулёзно повторил 6 раз, на своей и на чистой сборках, результат описан выше.

 

я устанавливал VB на все версии P4L, ушел с версии 2.5 только потому что не работает KeyChange а его переписывать влом

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


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

Да.

Эта проблема возникла не только у него. Установил поверх снапа 1.4 если не ошибаюсь. И возникла таже самоя проблема антихак купленый на оф сайте, функция AllowedActions выключена по умолчанию. Устонавливал без дополнительного. Щас занемаюсь этой проблемой, если найду ошибку, дам всем исправленую версию

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


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

Кривой гайд. или Скрипт. Все работает, А СНАП НЕ ПАШЕТ. Я его добавил в меню скрол но он не заработал, пытаюсь исправить...

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


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

Кривой гайд. или Скрипт. Все работает, А СНАП НЕ ПАШЕТ. Я его добавил в меню скрол но он не заработал, пытаюсь исправить...

Все рабочее ибо мною проверялось по этому гайду. Скролл меню инфи блочит по умолчанию. В AHconfig.sqf отключите проверку скролла или исключите.

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


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

Все рабочее ибо мною проверялось по этому гайду. Скролл меню инфи блочит по умолчанию. В AHconfig.sqf отключите проверку скролла или исключите.

Да отключена эта функция. Если она отключена значит она отключена. Исключение тут не поможет.

 

Доказательство :

/*  Check Actions ?       */ /* _CSA = false; */	/* true or false */	/* this checks mousewheel actions */

И если вы сами не покупали никогда инфистар то не нужно говорить что там какие-то функции включены либо не включены по умолчанию.

У меня по умолчанию строка была точно такая же только без знаков "Каментариев"  

 

/* Знаки которые компелятор распознает как знаки закомментированный текст  */

Это можно найти в любой книге программирования на коде C++ c# на первых 20 страницах.
Подведем итог! 
 
Исключения функции - Actions не помогло.

 

9302581_m.jpg

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

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


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

Да отключена эта функция. Если она отключена значит она отключена. Исключение тут не поможет.

 

Доказательство :

/*  Check Actions ?       */ /* _CSA = false; */	/* true or false */	/* this checks mousewheel actions */

И если вы сами не покупали никогда инфистар то не нужно говорить что там какие-то функции включены либо не включены по умолчанию.

У меня по умолчанию строка была точно такая же только без знаков "Каментариев"  

 

/* Знаки которые компелятор распознает как знаки закомментированный текст  */

Это можно найти в любой книге программирования на коде C++ c# на первых 20 страницах.
Подведем итог! 
 
Исключения функции - Actions не помогло.

 

9302581_m.jpg

Учить кодингу меня не надо, побольше вас знаю.

У инфи по разному, что-то включено, а что-то нет + у меня каждая версия инфи есть и я вкурсе всех его изменений и т.п. Я сказал вам возможный ответ по шаблону.

Лог Клиента смотрели на Ошибки?

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


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

для версии  P4L 2.5 гайд не актуальный

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: Troy1
      Всем привет. пишу мод и столкнулся с проблемой в реализации.
      Суть: Пытаюсь сделать проверку, если игрок стоит прям у окна или у дверного проёма он должен получать урон.
      Делал вот так.
      int wallHits = 0; float d = 2.2; // Дистанция до стены. Если стена дальше — считаем, что там окно или проем. // 8 направлений "снежинкой" для проверки стен вокруг игрока // Используем Vector(x, y, z) для точности ref array<vector> checkDirs = { Vector(d,0,0), Vector(-d,0,0), Vector(0,0,d), Vector(0,0,-d), Vector(d,0,d), Vector(-d,0,-d), Vector(d,0,-d), Vector(-d,0,d) }; foreach (vector dir : checkDirs) { // Пускаем горизонтальные лучи от позиции игрока (from) if (DayZPhysics.RayCastBullet(from, from + dir, collisionLayerMask, this, hitObject, hitPosition, hitNormal, hitFraction)) { // ПРОВЕРКА: Это должна быть вертикальная стена (Y нормали < 0.5) // Чтобы не засчитать низкий потолок за стену if (Math.AbsFloat(hitNormal[1]) < 0.5) { wallHits++; } } } // УСЛОВИЕ БЕЗОПАСНОСТИ: // В комнате wallHits будет 6-8. У окна или в проеме — 1-4. if (wallHits < 5) { hasSafeCeiling = false; // Слишком открытое пространство (окно/дверь) } Пытался менять дистанции, но всё ровно не как не хочет работать.
      Что я делаю не так, или я вообще делаю не то?
      Мне нужно проверять игрока, в укрытии он или нет.
      С высотой я разобрался, а вот с боковыми лучами у меня траблы и не во всех помещениях работает как нужно.
      В некоторых помещениях вообще не работает, удаляешь строки проверки, начинает работать и то по высоте.
      Просто забегаешь по навес и игрок под защитой, так не должно быть.
      Помогите пожалуйста  решить задачу.
    • Автор: Troy1
      Всем привет. Суть в чём, пишу мод на событие и когда происходит событие, параллельно должна меняться скорость ветра, не могу понять как заставить скрипт управлять силой ветра. Понижать силу ветра получилось сделать, а вот повышать не как. Только после перезагрузки сервера сила ветра задаётся в нужном значение.
      Как сделать, что бы по вызову функции менялась сила ветра в большую или в меньшую сторону?
      protected void SetWind(float wind, float time) { if (!g_Game) return; Weather m_Weather = g_Game.GetWeather(); if (!m_Weather) return; m_Weather.SetWindMaximumSpeed(wind); m_Weather.SetWind(Vector(1/Math.Sqrt(3), 1/Math.Sqrt(3), 1/Math.Sqrt(3)) * wind); m_Weather.SetWindSpeed(wind); m_Weather.SetWindFunctionParams(1.0, 1.0, -1); } Это скрипт на понижение силы ветра.
      Работает понижение силы ветра в том случае, если до этого сила ветра была выше.
      Пример:
      Изначально на сервере сила ветра = 20 m/s А нужно понизить до 10 m/s
      Только в этом случае сработает скрипт который я приложил выше.
      Помогите пожалуйста решить этот вопрос.
      За ранние благодарю.
    • Автор: Troy1
      Пока ждал помощи, решил вопрос!
      Тема закрыта!!!
    • Автор: magliner
      Привет ! Ну вот моя история с вопросом в конце.. Я фанат Дэйз ванилы черноруси, заколебало сидеть на бездушных серверах со слабой админкой и терять лут от софтеров, решил создать под свои скромные запросы около ванильный сервер.. Нашел хорошего исполнителя, быстро и четко запустили отладили и ВОТ я имею СВОЙ сервер.. клас! вечер восторга и изучения
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • Автор: SemKa1407
      Ссылка на архив: https://disk.yandex.ru/d/WmYW5AcZozGSiA
      Инструкция, написанная на коленке, есть в архиве (для полных нулей).
  • Наш выбор

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

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

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

Поддержка