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

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

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

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

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

[Change clothes Clan] - Скины для кланов

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

Описание:

 

Допустим, на вашем сервере играет много человек и есть отряды, которые хотели бы как-то между собой выделяться, чтобы не путаться в какой-нибудь перестрелке. Данный вопрос поднимался в теме помощи и, подумав, я смастерил переодевание для кланов в скины, которые они хотят. За основу я использовал этот скрипт: http://epochmod.com/forum/index.php?/topic/12378-release-skin-trader-06-buy-any-arma-skin/

 

Плюсы:

  • - Гибкая настройка, возможность добавлять кланам несколько скинов на переодевание.
  • - Возможность добавлять сколько угодно человек в клан, которые смогут переодеться.
  • - Удобная система переодевания через объект.
  • - Скин сохраняется.

 

Минусы:

  • - Игроки не смогут переодеться в скин, если они пытаются переодеться через пакет с одеждой (Для этого я добавил возможность обратно переодеться в Survivior).

 

Установка:

 

Открываем корневой каталог миссии и разорхивируем туда это.

Открываем кастомный variables.sqf (если нет, то делаем его) и заменяем:

 

//Model Variables
Bandit1_DZ =     "Bandit1_DZ";
Bandit2_DZ =     "Bandit2_DZ";
BanditW1_DZ =     "BanditW1_DZ";
BanditW2_DZ =     "BanditW2_DZ";
Survivor1_DZ =     "Survivor2_DZ";
Survivor2_DZ =     "Survivor2_DZ";
SurvivorW2_DZ = "SurvivorW2_DZ";
SurvivorW3_DZ = "SurvivorW2_DZ";
Sniper1_DZ =     "Sniper1_DZ";
Camo1_DZ =         "Camo1_DZ";
Soldier1_DZ =     "Soldier1_DZ";
Rocket_DZ =     "Rocket_DZ";

AllPlayers = ["Survivor2_DZ","SurvivorWcombat_DZ","SurvivorWdesert_DZ","SurvivorWurban_DZ","SurvivorWsequishaD_DZ","SurvivorWsequisha_DZ","SurvivorWpink_DZ","SurvivorW3_DZ","SurvivorW2_DZ","Bandit1_DZ","Bandit2_DZ","BanditW1_DZ","BanditW2_DZ","Soldier_Crew_PMC","Sniper1_DZ","Camo1_DZ","Soldier1_DZ","Rocket_DZ","Rocker1_DZ","Rocker2_DZ","Rocker3_DZ","Rocker4_DZ","Priest_DZ","Functionary1_EP1_DZ","GUE_Commander_DZ","Ins_Soldier_GL_DZ","Haris_Press_EP1_DZ","Pilot_EP1_DZ","RU_Policeman_DZ","pz_policeman","pz_suit1","pz_suit2","pz_worker1","pz_worker2","pz_worker3","pz_doctor","pz_teacher","pz_hunter","pz_villager1","pz_villager2","pz_villager3","pz_priest","Soldier_TL_PMC_DZ","Soldier_Sniper_PMC_DZ","Soldier_Bodyguard_AA12_PMC_DZ","Drake_Light_DZ","CZ_Special_Forces_GL_DES_EP1_DZ","TK_INS_Soldier_EP1_DZ","TK_INS_Warlord_EP1_DZ","FR_OHara_DZ","FR_Rodriguez_DZ","CZ_Soldier_Sniper_EP1_DZ","Graves_Light_DZ","GUE_Soldier_MG_DZ","GUE_Soldier_Sniper_DZ","GUE_Soldier_Crew_DZ","GUE_Soldier_CO_DZ","GUE_Soldier_2_DZ","TK_Special_Forces_MG_EP1_DZ","TK_Soldier_Sniper_EP1_DZ","TK_Commander_EP1_DZ","RU_Soldier_Crew_DZ","INS_Lopotev_DZ","INS_Soldier_AR_DZ","INS_Soldier_CO_DZ","INS_Bardak_DZ","INS_Worker2_DZ"];
 

На

 

 

AllPlayers set [count AllPlayers, "Bandit1_DZ",
                    "Bandit2_DZ",
                    "BanditW1_DZ",
                    "BanditW2_DZ",
                    "Survivor2_DZ",
                    "SurvivorW2_DZ",
                    "Sniper1_DZ",
                    "Camo1_DZ",
                    "Soldier1_DZ",
                    "Rocket_DZ"];
 

 

Открываем description.ext и в самом низу пишем:

 

 

 

#include "Wardrobe\dialog\common.hpp"
#include "Wardrobe\dialog\SkinGui.hpp"
 

 

Далее, идем в кастомный fn_selfactions.sqf (Если нет, то создаем) и в самом низу пишем:

 

 

isWardrobe = ["MAP_almara","MAP_case_wooden_b","MAP_Dhangar_borwnskrin","MAP_Skrin_opalena"];
_isWardrobeItem = (typeOf cursorTarget) in isWardrobe;

if((_isWardrobeItem and (player distance cursorTarget <= 2)) and _canDo) then {
if (s_player_Wardrobeclan < 0) then {
        s_player_Wardrobeclan = player addaction [("<t color=""#fff000"">" + ("Change clothes Clan") +"</t>"),"Wardrobe\open_dialog.sqf"];
    };
} else {
    player removeAction s_player_Wardrobeclan;
    s_player_Wardrobeclan = -1;
};
 

Теперь, идем в mission.sqm находим строчку

class Vehicles
    {

};

И под ней пишем:

 

        items=1;
        class Item0
        {
            position[]={11939.576,158.99182,12719.386}; //координаты
            azimut=110.47251;
            id=102;
            side="EMPTY";
            vehicle="MAP_almara";
            skill=0.2;
            init="";
        };
 

 

Получится так:

 

class Vehicles
    {
        items=1;
        class Item0
        {
            position[]={11939.576,158.99182,12719.386}; //координаты шкафа
            azimut=110.47251;
            id=102;
            side="EMPTY";
            vehicle="MAP_almara";
            skill=0.2;
            init="";
        };
};
 

Опять же: Если у вас уже поставлены какие-то объекты на карту через mission.sqm, то надо учитывать переменную items и номер (Item0)

 

Теперь, открываем папку Wardrobe. Открываем файл Clothing_Men.sqf и видим:

 

 

if ((getPlayerUID player) in ["0","0","0"]) then { //Определяем UID клановцев
Men_Clothing = [ //Определяем их одеждку, в которую они могут одеваться
    "Survivor2_DZ",
    "MVD_Soldier",
  "US_Soldier_AA_EP1",
  "TK_Aziz_EP1"
];
} else {
if ((getPlayerUID player) in ["0","0","0"]) then {
Men_Clothing = [
    "Survivor2_DZ",
  "0",
  "0"
];
} else {
cutText ["You not allowed to wardrobe", "PLAIN"]; //Обычные игроки не смогут одеться.
};
};
 

если вы хотите добавить еще один клан, то вам надо вместо

 

cutText ["You not allowed to wardrobe", "PLAIN"]; //Обычные игроки не смогут одеться.
 

Написать:

 

if ((getPlayerUID player) in ["0","0","0"]) then {
Men_Clothing = [
    "Survivor2_DZ",
  "0",
  "0"
];
} else {
cutText ["You not allowed to wardrobe", "PLAIN"]; //Обычные игроки не смогут одеться.
};
 

Для тех, у кого стоит Infistar:

 

Открыть AHconfig.sqf, найти там строчку:

 

_ALLOWED_Dialogs = [];
 

Дописать туда id диалогов:

 

20001,20002,20003,20004,20005,20006
 

Затем, найти строчку:

 

 

_dayzActions = [
 

и дописать туда

 

s_player_Wardrobeclan
 

 


 

Готово.

 

Теперь о принципе работы:

Вы ставите шкаф, у которого появляется меню "Change clothes Clan". При нажатии, срабатывает проверка, которая смотрит, к какому списку вы относитесь и выводит вам нужный список. Ставить так шкафы не очень удобно, поэтому, как сделать крафт шкафов и много других плюх, я расскажу в гайде завтра. + Будет новый бонус от меня.

 

Скриншоты:

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

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

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

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


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





Исключения CMD (Скролл меню для InfiSTAR).

В _dayzAction добавить переменную:

 

s_player_Wardrobeclan
 

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


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

Тэкс, а скринчики хде?  :happy: Хочу скринчики

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


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

Да, совсем забыл, у меня просто в инфистаре это отключено

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


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

Тэкс, а скринчики хде?  :happy: Хочу скринчики

добавил.

 

П.С. Немного кое-чего подправил, ссылку на новый файл прикрепил туда же

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


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

добавил.

 

П.С. Немного кое-чего подправил, ссылку на новый файл прикрепил туда же

клёво. сделал бы ток по-русски менюшку

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


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

 

клёво. сделал бы ток по-русски менюшку

Да я на скорую руку сделал, в перерыве. Потом мб запарюсь, новый диалог отрисую. P.S. У вас Interior Designer выкладывали? Я не нашел

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


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

Да я на скорую руку сделал, в перерыве. Потом мб запарюсь, новый диалог отрисую. P.S. У вас Interior Designer выкладывали? Я не нашел

Неа. Выложи :3

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


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

А если стоит скрипт который уже при старте выдает рандомный скин при спавне, конфликтовать может?

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: BR0wi
      Подскажите где найти людей, которые делаю моды на заказ. К кому вообще обращаться? Или что бы реализовать свои идеи нужно самому "год" сидеть и изучать все механики модинга?
    • Автор: CubeIn
      Приветствую господа, хочу создать новый проект, уникальный, но для этого нужен маппер.
      Я оставлю здесь свой дискрод, напишите в лс, кто готов взяться за крупный проект.
      4me#4542
    • Автор: 6agu
      Поставил
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • Автор: 123new
      Много вопросов на данную тему наблюдаю от новичков, попробую прояснить немного сей вопрос.
       
      Предположим. что вы уже знаете на каких координатах вам надо спавнить определенное здание или объект\животное\бота, с каким углом поворота. И так. эта тема для вас.
       
      Сразу делаю пометку, метод, который добавили нам разработчики игры в патче 1.15, очень хорошо описал наш товарищ в сообщении форума:
      Рекоммендую вам использовать именно его!
      Ниже опубликованы старые методы.
       
      Если вы с расставили их с модифицированной версии Offline (Offline by Arksenor это называется), то вы получили и нашли код вида:
      GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13260.040039 0.0 3670.984131").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13262.756836 0.0 3645.180176").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13265.441406 0.0 3619.531982").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13268.124023 0.0 3593.995361").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13270.844727 0.0 3568.186523").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13273.514648 0.0 3542.561279").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13276.195313 0.0 3517.048828").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13278.399414 0.0 3496.097900").SetOrientation("-96.000000 0.000000 0.000000"); Здесь (по примеру первой строки) 1 значение в скобках - id постройки/объекта, 2 значение - координаты в формате X Y Z, разделенные пробелом, 3 - значение поворота примерно в том же формате.
      Как это делать в Offline - статья от автора Offine:
      https://github.com/Arkensor/DayZCommunityOfflineMode/wiki/Add-custom-objects-to-your-server-or-mission
       
      И так, инструкция:
      1. Добавляем в начало init.c файла в вашей mpmissions следующий код:
      #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\spawn_buildings.c" 2. Создаем в папке вашей активной mpmissions файлик spawn_buildings.c и заполняем его следующей информацией.
      void SpawnObject( string type, vector position, vector orientation ) { private string NameBlockLog = "[CreateObject] "; private string InfoLog = ""; if(type != "") { auto obj = GetGame().CreateObject( type, "0 0 0" ); if(obj) { if ((position[0] != 0) && (position[1] != 0) && (position[2] != 0)) { obj.SetPosition( position ); obj.SetOrientation( orientation ); obj.Update(); if (obj.CanAffectPathgraph()) { obj.SetAffectPathgraph(true, false); GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(GetGame().UpdatePathgraphRegionByObject, 100, false, obj); } InfoLog = "[Type: '" + obj.GetType() + "' Position: '" + obj.GetPosition().ToString() + "' Orientation: '" + obj.GetOrientation().ToString() + "']"; Write_Log(NameBlockLog + " Object has been created successfully! Info " + InfoLog); } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Incorrect writed position. Info " + InfoLog); } } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Info " + InfoLog); } } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Incorrect writed type. Info " + InfoLog); } } void Write_Log(string message) { Print(String(message)); } 3. Открываем созданный нами файл,  и в конце файла дописываем следующее:
      void SpawnAirfeeldBuildings() { SpawnObject( "Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750", "-96.000000 0.000000 0.000000"); } void SpawnKrasnoBuildings() { SpawnObject( "Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750", "-96.000000 0.000000 0.000000"); } Где после void - название функции идет, а между открытыми скобками вызов спавна самих зданий на указанных координатах.
      На примере 1 строки:
      Land_CementWorks_ExpeditionB - id постройки (type)
      13251.875000 0.0 3748.525879 - координаты в формате X Y Z
      -96.000000 0.000000 0.000000 - значение поворота в формате X Y Z
      Внимание: id постройки и координаты в примере указаны не верные и требуют подключения дополнительной модификации для корректной работы!!! Координаты не соответствуют названию функции!!!
      4. открываем в MpMissions в папке с вашей активной миссией init.c и перед ЗАКРЫВАЮЩЕЙ скобкой '}' дописываем нужную нам функцию (это будет активация спавна на карте):
      SpawnAirfeeldBuildings(); 5. Готово, Запускайте сервер, и в scripts.log вы увидите процедуру спавна ваших зданий и увидите, спавнятся ли они на карте или нет.
      Можно написать конечно и более готовую, универсальную систему спавна на карте со считыванием конфигурации из файла, но я считаю это лишним.
       
      Как заполнить добавленные здания лутом на карте:
      вариант 1:
      https://github.com/Arkensor/DayZCommunityOfflineMode/wiki/Enable-loot-for-custom-placed-objects
      вариант 2: вручную заполнить xml-файл  mapgrouppos.xml в mpmssions данными о местоположении зданий, где rpy - значение поворота здания в формате Z Y X
       
      С помощью данной статьи вы можете разместить любой элемент игры(постройку, животное, зомби, бота), доступный к спавну через любую модификацию-админ. панель. Очень полезный мод в этом смысле BuilderItems, с его помощью можно творить поистину интересные локации!
    • Автор: Venom21
      Появилась такая проблема, нужно закрыть некоторые слоты под одежду, когда на определённый слот одет предмет…
      пример: возьмём экзоскелет от Фидова, там есть две версии которая одеваеться как на тело и ноги, и есть которая одеваться на разгрузку и пояс, так вот, нужно например чтобы при одетом экзаче на тело и ноги слоты под пояс и разгрузку блокировались, либо только под определенные предметы, если есть интерес то цену можем в личке обсудить…
      P.S. Разрешение от Фидова на переделку и переупаковку есть)
  • Наш выбор

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

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

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