Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
DrSova

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

Recommended Posts

Описание:

 

Допустим, на вашем сервере играет много человек и есть отряды, которые хотели бы как-то между собой выделяться, чтобы не путаться в какой-нибудь перестрелке. Данный вопрос поднимался в теме помощи и, подумав, я смастерил переодевание для кланов в скины, которые они хотят. За основу я использовал этот скрипт: 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". При нажатии, срабатывает проверка, которая смотрит, к какому списку вы относитесь и выводит вам нужный список. Ставить так шкафы не очень удобно, поэтому, как сделать крафт шкафов и много других плюх, я расскажу в гайде завтра. + Будет новый бонус от меня.

 

Скриншоты:

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

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

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

Share this post


Link to post
Share on other sites







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

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

 

s_player_Wardrobeclan
 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

добавил.

 

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

Share this post


Link to post
Share on other sites

добавил.

 

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

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

Share this post


Link to post
Share on other sites

 

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By 6agu
      Поставил
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • By 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, с его помощью можно творить поистину интересные локации!
    • By Venom21
      Появилась такая проблема, нужно закрыть некоторые слоты под одежду, когда на определённый слот одет предмет…
      пример: возьмём экзоскелет от Фидова, там есть две версии которая одеваеться как на тело и ноги, и есть которая одеваться на разгрузку и пояс, так вот, нужно например чтобы при одетом экзаче на тело и ноги слоты под пояс и разгрузку блокировались, либо только под определенные предметы, если есть интерес то цену можем в личке обсудить…
      P.S. Разрешение от Фидова на переделку и переупаковку есть)
    • By CubeIn
      Здарова, уважаемые знатоки, вопрос.
      Мне скриптер скинул скрипт и сказал закинуть её в северную часть, но не указал куда именно. Подскажите пожалуйста, куда мне её деть? 
    • By CubeIn
      Здарова всем!
      У меня срочный вопрос опытным хозяинам серверостроения. Есть ли возможность настроить холод на карте Namalsk? А то слишком холодновато игрокам, а где это настраивать...
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.