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
  • 0
Sign in to follow this  
Karmagedon

Зоны спавна оружия.

Всем привет! Ребят. Подскажите где кавырнуть что бы к примеру определенный вид оружия спавнился только на тисах! Заранее спасибо!

Share this post


Link to post
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Вообще есть юзверь-флаги, милитари, вилладж и т.д. Спавн привязывается к типу зданий. Кроме того там ещё есть тьеры - уровни экономики. Тисы - это <value name="Tier4"/>. Дописываете этот параметр в types.xml ниже юзер-флага предмета.

Share this post


Link to post
Share on other sites







  • 0

VIRrusR про параметры я знал только вот не понял какой отвечает за тисы.. спасибо

Share this post


Link to post
Share on other sites
  • 0

Там вообще по зонам все Tier1, Tier2 и тп

Что и как - я не разбирался, но мне то же очень интересно это все понять

Потому присоединяюсь к вопросу и предлагаю обсудить все что касается темы тут

 

 

Share this post


Link to post
Share on other sites
  • 0

BorizzK , цена вопроса 1000 р.:wink:

А на самом деле, это нужно в редакторе экономики ихнем смотреть - там оно цветом (вроде) обозначается. Видели параметр color встречается? Вроде как это зоны и есть. Ну, можно ещё тупо экспериментально выявить... Тулзы БИСовские надоть юзать учиться, тогда просто можно вывести нужную территорию из одной зоны в другую, ну или задать собственную. А вручную это делать - я хз... Геммор!

Share this post


Link to post
Share on other sites
  • 0

В дэйз тулз. Там не только мапа редактируется. Но на русском никаких гайдов я не нашёл. А на аглицком - тока какой-то пиндос с одышкой видео выкладывал, как он карту с нуля делал... Кароче, как всё про ДэйЗ - никакой информации...

Share this post


Link to post
Share on other sites
  • 0

По сути...Зоны работают(кажеться)...Четвёртая зона-Тиссы ,до предпоследней обновы вроде вообще не работало.

(для информации-выставить для отдельной вещи степень износа при спавне-не срабатывает:)))

 

Нашёл что в ставить в дэйз туллз для "пробы".Бред.Нужно искать орегенальные файлы,а где их взять....Бегемоты должны быть повешаны!

Share this post


Link to post
Share on other sites
  • 0

paranoyk , да вроде зоны всегда работали?.. Вопрос в том, что облегчив СЕБЕ работу этим зонированием, они лишили нас возможности нормально настроить спавн. Привязали спавн не к точкам, а к типам зданий, да ещё и к зонам. Да, логика стала легче, не нужно прописывать каждые труселя, но... Сами понимаете. Вывести конкретную палатку из тьера - проблема. Проблема, как палатку вывести из типа "милитари"? И как задать ей собственный тип, скажем "эксклюзив"? Или спавни нужный лут вообще во все палатки, или во все палатки тьера...

Edited by VIRrusR (see edit history)

Share this post


Link to post
Share on other sites
  • 0

VIRrusR Я писал как сделать что бы военные палатки на берегу до болот стали "своим классом"....То же самое и с хеликрашами.Долго?Немного,но кто сказал что есть простые решения для Дэйз?

Edited by paranoyk (see edit history)

Share this post


Link to post
Share on other sites
  • 0

paranoyk , когда говорите "я писал" полезно под эти слова сразу ссыль запихнуть... :relaxed: А то мало ли кто где когда чего писал.:wink:

Share this post


Link to post
Share on other sites
  • 0

Извните,работал,есть вот двенадцать часов перекура....заваяем...

 

Начнём с того что ихние зоны понять-нужно что то большее чем логика.Лично я не понял.

Спавн мегафона,зоны 2-3....где они спавняться?Правельноуже в Черногорске и Электрозаводске...Где тогда ПЕРВАЯ зона!!???

 

Поэтому сразу после релиза АКМ и М; тупо костылём убрали с "зоны спавна игроков".

Опишу как сделал на примере одной палатки.

Открываем файл cfglimitsdefinition и вставляем в раздел usageflags

        <usage name="Military_1"/>

(подозреваю,что таких флагов можно позадовать кучу и маленькую тележку,как возможно и categories)

 

В оффлайне ищём обьект, к примеру всем известные бараки в Солнечном

25811305_s.jpg

 

Включаем режим редактирования оффлайна

25811394_m.jpg

 

Барак ID - Land_Mil_Barracks4

Координата Х - 13317......с копейками.

 

Открываем файл mapgroupproto . Ищем Land_Mil_Barracks4

		<group name="Land_Mil_Barracks4" lootmax="8">
				<usage name="Military" />
				<container name="lootFloor" lootmax="5">
						<category name="tools" />
						<category name="containers" />
						<category name="clothes" />
						<tag name="floor" />
						<point pos="-2.389683 -1.465946 -3.167737" range="0.599707" height="1.499268" />
						<point pos="-2.596588 -1.465946 1.887695" range="0.666504" height="1.666260" />
						<point pos="-2.230266 -1.465946 -6.366991" range="0.998779" height="2.000004" />
						<point pos="-0.304303 -1.465946 -3.712077" range="1.070801" height="2.000004" />
						<point pos="2.129097 -1.465946 6.377944" range="1.162109" height="2.000004" />
						<point pos="2.151669 -1.465946 -0.798506" range="1.187256" height="2.000004" />
						<point pos="-0.467666 -1.465946 6.397343" range="1.197998" height="2.000004" />
						<point pos="-0.576743 -1.465946 1.400203" range="1.198730" height="2.000004" />
				</container>
				<container name="lootshelves" lootmax="5">
						<category name="tools" />
						<category name="containers" />
						<category name="clothes" />
						<category name="food" />

						<tag name="shelves" />
						<point pos="-1.430683 -1.143981 -4.067863" range="0.158895" height="0.397238" />
						<point pos="-3.081033 -1.465946 0.948884" range="0.179626" height="0.449065" />
						<point pos="-2.610107 -0.511860 0.737117" range="0.203125" height="0.507767" />
						<point pos="-3.044466 -1.143981 -4.497895" range="0.216370" height="0.540921" />
						<point pos="-2.914064 -1.143981 6.795668" range="0.306250" height="0.765621" />
						<point pos="-2.611123 -1.143981 6.056398" range="0.306250" height="0.765621" />
						<point pos="-2.252968 -1.143981 -4.326309" range="0.443750" height="1.109371" />
				</container>
				<container name="lootweapons" lootmax="5">
						<category name="weapons" />
						<category name="explosives" />
						<point pos="-1.944267 -1.465946 0.558229" range="0.356201" height="0.890502" />
						<point pos="-0.362318 -1.465946 3.361964" range="0.556152" height="1.390380" />
						<point pos="-0.394885 -1.465946 -0.567763" range="0.570557" height="1.426393" />
						<point pos="-1.980269 -1.465946 -1.408943" range="1.200000" height="2.000004" />
						<point pos="-2.029328 -1.465946 4.138081" range="1.200000" height="2.000004" />
				</container>
		</group>

Уже тут можно тупо выкинуть из него оружие или ещё как поизголяться, хоть прописать ему кучу лута или вообще только один какой либо. Всё зависит от вашего желания.

Далее добавляем всё тоже самое...почти

		<group name="Land_Mil_Barracks4_1" lootmax="8">
				<usage name="Military_1" />
				<container name="lootFloor" lootmax="5">
						<category name="tools" />
						<category name="containers" />
						<category name="clothes" />
						<tag name="floor" />
						<point pos="-2.389683 -1.465946 -3.167737" range="0.599707" height="1.499268" />
						<point pos="-2.596588 -1.465946 1.887695" range="0.666504" height="1.666260" />
						<point pos="-2.230266 -1.465946 -6.366991" range="0.998779" height="2.000004" />
						<point pos="-0.304303 -1.465946 -3.712077" range="1.070801" height="2.000004" />
						<point pos="2.129097 -1.465946 6.377944" range="1.162109" height="2.000004" />
						<point pos="2.151669 -1.465946 -0.798506" range="1.187256" height="2.000004" />
						<point pos="-0.467666 -1.465946 6.397343" range="1.197998" height="2.000004" />
						<point pos="-0.576743 -1.465946 1.400203" range="1.198730" height="2.000004" />
				</container>
				<container name="lootshelves" lootmax="5">
						<category name="tools" />
						<category name="containers" />
						<category name="clothes" />
						<category name="food" />
						<tag name="shelves" />
						<point pos="-1.430683 -1.143981 -4.067863" range="0.158895" height="0.397238" />
						<point pos="-3.081033 -1.465946 0.948884" range="0.179626" height="0.449065" />
						<point pos="-2.610107 -0.511860 0.737117" range="0.203125" height="0.507767" />
						<point pos="-3.044466 -1.143981 -4.497895" range="0.216370" height="0.540921" />
						<point pos="-2.914064 -1.143981 6.795668" range="0.306250" height="0.765621" />
						<point pos="-2.611123 -1.143981 6.056398" range="0.306250" height="0.765621" />
						<point pos="-2.252968 -1.143981 -4.326309" range="0.443750" height="1.109371" />
				</container>
				<container name="lootweapons" lootmax="5">
						<category name="weapons" />
						<category name="explosives" />
						<point pos="-1.944267 -1.465946 0.558229" range="0.356201" height="0.890502" />
						<point pos="-0.362318 -1.465946 3.361964" range="0.556152" height="1.390380" />
						<point pos="-0.394885 -1.465946 -0.567763" range="0.570557" height="1.426393" />
						<point pos="-1.980269 -1.465946 -1.408943" range="1.200000" height="2.000004" />
						<point pos="-2.029328 -1.465946 4.138081" range="1.200000" height="2.000004" />
				</container>
		</group>	

Изменили Land_Mil_Barracks4 на Land_Mil_Barracks4_1 (позвольте, но такого ID нет! Да, нет, но для спавнера лута используеться имя из этого файла,а не ID предмета)

И изменили что этот обьект пренадлежит не Military , а созданому нами "флагу" Military_1

Открываем файл mapgrouppos и вбиваем в поиск     <group name="Land_Mil_Barracks4" pos="13317  (просто копируем любую строчку, вставлем ID и координату Х, для ускорения поиска)

    <group name="Land_Mil_Barracks4" pos="13317.134766 10.804763 6145.750977" rpy="-0.000000 0.000000 80.244263" a="9.755733" />

И просто переделываем в

    <group name="Land_Mil_Barracks4_1" pos="13317.134766 10.804763 6145.750977" rpy="-0.000000 0.000000 80.244263" a="9.755733" />

Далее идём в файл     types и вписываем в нужный для спавна лут класса Military , то есть просто добавляем

        <usage name="Military_1"/> 

(конечно обратите внимание какие категори спавняться в обьекте)

Например

    <type name="AmmoBox_762x39_20Rnd">
        <nominal>40</nominal>
        <lifetime>7200</lifetime>
        <restock>0</restock>
        <min>30</min>
        <quantmin>-1</quantmin>
        <quantmax>-1</quantmax>
        <cost>100</cost>
        <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
        <category name="weapons"/>
        <usage name="Military"/>
		<usage name="Military_1"/>
        <usage name="Hunting"/>
    </type>

 

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
Sign in to follow this  

  • Similar Content

    • By AntonivkA
      Итак, господа. В 1.05 разрабы похоже сломали механику спавна лута. У меня предметы стали спавниться там, где их не должно быть. Заметил сразу, поскольку таблица лута у меня переделана основательно. Например, Песочный барьер у меня прописан только на Военках и Полиц.участке, и все работало корректно до 1.05. Теперь, песочный барьер я нахожу в гаражах, мастерских и жилых домах вокруг полиц. участка и в самом полиц. участке. Помимо этого, ребята стали замечать и скинули инфу, что на СЗ в гаражах и мастерских стал появлятся военный лут, хотя его там не должно быть.
      Кто-что скажет по этому поводу. Заметил ли кто-то подобное у себя?
       
    • By BorizzK
      Как и обещал выкладываю код и небольшой гайд
       
      Собственно речь о функции загрузки UID и координат из файла в массив m_playersSpawnPoints класса миссии, который в последствии можно исполдьзовать в других функциях в классе миссии
       
      Отступление
      массив m_playersSpawnPoints это массив типа map
      В данном случае <string,string> где и индекс и значение текстовые строки
      индексом выступает записанный UID,  а значением координаты, которые перед использованием преобразуются из текста в vector c помощью функции ToVector()
      Но об этом позже
       
      Раздел 1. Подключение
       
      КОд функции:
      //Players personal spawn points (for new connected players) ref map<string,string> m_playersSpawnPoints = new map<string,string>; void LoadPlayersSpawnPoints() { /* Файл playersSpawnPoints.lst кладем в папку указанную в параметре запуска сервера -profiles= тогда путь будет "$Profile:" или если кладем в файл в mpmissions\dayzOffline.chernarusplus\_CONF путь будет "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\" Путь меняется в переменной m_SettingsPath - "$Profile:" или "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\" Можете указать свой путь, но он должен быть либо в $Profiles: либо в $CurrentDir:\\mpmissions\\dayzOffline.chernarusplus Формат файла: Steam UID в привычном виде 17 цифр Координаты Комментарий (через пробелы) Помните любая ошибка может привести к крашу сервера Не желательны пустые строки! Пример: 76562298156537008 1300 0 5600 Дима 76561998116927209 3000 0 3000 Вася из Новороссийска Про массив: ref map<string, string> m_playersSpawnPoints = new map<string, string>; m_playersSpawnPoints тут массив типа map, где каждый элемент массива состоит из 2х ячеек. 1. Индекс - тип string 2. Значение - тип string Пример работы с массивом типа map Запись в массив m_playersSpawnPoints.Insert("76562298156537008", "1300 0 5600"); //записываем первый элемент - индекс dayz, значение 10 m_playersSpawnPoints.Insert("76561998116927209", "3000 0 3000"); //записываем второй элемент - индекс dayzf, значение 17 Чтение из массива: Получаем значение 0го элемента string m = m_playersSpawnPoints.GetElement(0); // = "1300 0 5600" Получаем индекс 0го элемента string name = m_playersSpawnPoints.GetKey(0); / /= "76562298156537008" Получаем значение по индексу (в данном случае нас интерисует именно ЭТО) string n = m_playersSpawnPoints.Get("76561998116927209"); // = "3000 0 3000" //затем n переводим в вектор Usage in CreateCharacter function for change default spawn position: string PlayerUID = identity.GetPlainId(); if (PlayerUID) { if (m_playersSpawnPoints.Contains(PlayerUID) { pos = m_playersSpawnPoints.Get(PlayerUID).ToVector(); } } */ string FileName = "playersSpawnPoints.lst"; string m_SettingsPath = "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\"; //Folder with config files - .ini or .lst // Or "$Profiles:\\" FileHandle file; string file_line; array<string> read_line; int linecount = 0; //Comments check bool skipline = false; bool skipblock = false; //Comments check file = OpenFile(m_SettingsPath + FileName, FileMode.READ); if (file != 0) { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read File: " + m_SettingsPath + FileName + " :::"); while (FGets(file, file_line) >= 0) { linecount++; //Comments check and skip if (file_line.IndexOfFrom(0,"//") == 0 || file_line.IndexOfFrom(0,"#") == 0 || file_line.IndexOfFrom(0," ") == 0 || file_line.Length() <= 0) { skipline = true; } else { skipline = false; } if (file_line.IndexOfFrom(0,"/*") == 0) { skipblock = true; } else if (file_line.IndexOfFrom(0,"*/") == 0) { skipblock = false; skipline = true; } //Comments check if (!skipline && !skipblock) { read_line = new array<string>; file_line.Split(" ",read_line); if (read_line.Count() >= 4) { if (read_line.Get(0).Length() == 17) { if (read_line.Get(1).ToFloat() > 0 && read_line.Get(3).ToFloat() > 0) { if (!m_playersSpawnPoints.Contains(read_line.Get(0))) { m_playersSpawnPoints.Insert(read_line.Get(0), read_line.Get(1) + " " + read_line.Get(2) + " " + read_line.Get(3)); // UID, Position Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " Add UID " + read_line.Get(0) + " spawnpoint: " + read_line.Get(1) + " " + read_line.Get(2) + " " + read_line.Get(3) + " to m_playersSpawnPoints"); } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " UID " + read_line.Get(0) + " duplicated, check file!"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " Position error: '" + read_line.Get(1) + " " + read_line.Get(2) + " " + read_line.Get(3) + "' :::"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " UID error: " + file_line + " :::"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " have errors: " + file_line + " :::"); } } } CloseFile(file); if (m_playersSpawnPoints.Count() > 0) { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Players personal spawn points count: " + m_playersSpawnPoints.Count() + " :::"); } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Players personal spawn points is not loaded! :::"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Error open file: " + m_SettingsPath + FileName + " :::"); } } Комментарии, а так же диагностические принты в лог не убираю сознательно
       
      ПОдключение и использование.
       
      Функцию размещаем в теле класса миссии в init.c или если она вынесена в другой файл (и файл подключени через #include) в том самом файле в теле класса миссии
       
      Вот как-то так:
       
      class CustomMission : MissionServer { //Тут разные функции и определение переменных класса... //Вот тут переопределенный штатно OnInit override void OnInit () { //тут его код ) //Тут определяем наш массив и функцию //Players personal spawn points (for new connected players) ref map<string,string> m_playersSpawnPoints = new map<string,string>; void LoadPlayersSpawnPoints() { //тут ее код } //Тут разные функции... }  
      Ну Вы поняли...
       
      Далее нам надо при запуске и инициализации сервера эту функцию выполнить
      Но прежде надо создать файл по нужному пути в котором будут UID'ы и координаты
      В данной редакции используется путь "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\" и имя файла "playersSpawnPoints.lst"
      те в папке mpmissions\dayzOffline.chernarusplus нужно создать папку _CONF и поместить в нее этот файл
      Но вы можете это переделать как Вам больше нравится
       
      Формат файла:
       
      6561198156925007 2698.36 0 5989.59 USER
      6561198156924007 2698.36 0 5989.59 ВАСЯ
       
      6561198156923007 2698.36 0 5989.59 ПЕТЯ
      //Тут комментарий
      /*
      6561193356923001 3698.36 30 5189.59 ПЕТЯ
      */
       
      //Тут комментарий
      #Тут комментарий
       
      Первое поле - позиция - Это Steam UID (17 цифирь)
      2,3,4 поля позиции числа это координаты X Z Y (Z = высота) - если 0 система поставит перса на землю или ближайшую твердую поверхность под ним
      все что дальше игнорится
       
      Можно каментить строки с помощью // , #
      Можно каментить блоки
      /*
      */
       
      Если первый символ в строке пробел, все остальное то же игнорится
      Пустые строки то же игнорятся
       
      Если в строке с UID и координатами ошибка об этом напишет в лог с указанием номера строки
      Если UID дублируется об этом то же напишет в лог
       
      Ок
      Файл создали
       
      Теперь добавим вызов этой функции в тело функции OnInit в классе миссии (про нее речь шла Выше)
      Функция OnInit ВСЕГДА выполняется при запуске сервера
      Внутрь мы добавим вызов LoadPlayersSpawnPoints()
      В итоге при запуске сервера LoadPlayersSpawnPoints() выполнется и запишет в массив m_playersSpawnPoints UID'ы и координат
       
      Добавляем как-то так:
       
      override void OnInit() { //Тут может быть различный код //Тут вызов нашей функции //Load players personal spawn poins LoadPlayersSpawnPoints(); // => m_playersSpawnPoints // "UID", "Position" //Тут может быть различный код }  
      Запустили  сервер и увидели в логе что файл прочитался и все ок
      .... LoadPlayersSpawnPoints() ::: Players personal spawn points count: итд итп
      Или ошибки
      Если ошибки - читаем все еще раз и/или задаем вопросы в теме (НЕ В ЛИЧКЕ!!!) показывая что куда и как Вы прописали
       
      Отлично
      Тормозим в сервер
       
      Продолжение следует минут через 15
       
       
       
       
    • By BorizzK
      Не изучал эту тему, было не нужно
      Поглядел пару тем включая эту
      И пытаюсь понять
      А как мне увеличить спавн лута, например на базе Павлово + добавить туда спавн лута, который по умолчанию ТАМ не спавнится?
       
      Спасибо!
       
    • By BorizzK
      Автор: Виталий Мизев
       
      Для начала в папке профиля сервера которая указана в параметре запуска сервера -profile=
      создаем 2 файла
      pointPlayerPVP.lst - координаты спавна нового персонажа в формате vector
      playersSetUID.ini - Steam UID игроков | номер комплекта стартового лута для выбора
       
      Пример формата файла pointPlayerPVP.lst
      6010.40 0 7742.71
      6386.92 0 7945.12
      6478.50 0 7874.77
      6044.73 0 7699.81
       
      Пример формата playersSetUID.ini - STEAMUID|номер
      76531195156927007|1
      76561838156127001|2

       
      Игроку с Steam UID 6531195156927007 будет выдат комплект 1, 76561838156127001 комплект 2, если в файле UID нет, то рандомно из остальных комплектов
       
      В файле init.c
       
      в теле класса: class CustomMission: MissionServer
       
      сначала обьявим массивы
       
      ref array<string> m_pointPlayerPVP = new array<string>;;
      ref map<string, int> m_playersSetUID = new map<string, int>;
       
      это массивы глобальны в классе и могут использоваться во всех функциях класса
       
      в теле override void OnInit() (выполняется при запуске сервера)
       
      Чтение координат спавна из файла в массив m_pointPlayerPVP
      string line_content; FileHandle file = OpenFile("$profile:pointPlayerPVP.lst", FileMode.READ); Print("::: OpenFile : pointPlayerPVP.lst : $profile"); if (file != 0) { while ( FGets( file, line_content ) > 0 ) { m_pointPlayerPVP.Insert( line_content); } CloseFile(file); } m_pointPlayerPVP.Debug();  
      Чтение Steam UID и номера из файла в массив m_playersSetUID
      array<string> strFileParam; file = OpenFile("$profile:playersSetUID.ini", FileMode.READ); Print("::: OpenFile : playersSetUID.ini : $profile"); if (file != 0) { while ( FGets( file, line_content ) > 0 ) { strFileParam = new array<string>; line_content.Split( "|", strFileParam ); m_playersSetUID.Insert(strFileParam.Get(0), strFileParam.Get(1).ToInt()); } CloseFile(file); }  
      Далее
      При создании НОВОГО обьекта игрока
       
      сначала ему задаются координаты рандомно выбираясь из массива m_pointPlayerPVP
      см как идет работа с этим массивом
      override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName) { Entity playerEnt; if (m_pointPlayerPVP.Count()>0) { Print (m_pointPlayerPVP.Count()); int maxNum = m_pointPlayerPVP.Count(); int numPoint = Math.RandomInt(0, maxNum - 1); pos = m_pointPlayerPVP.Get(numPoint).ToVector(); } playerEnt = GetGame().CreatePlayer(identity, characterName, pos, 0, "NONE");//Creates random player Class.CastTo(m_player, playerEnt); GetGame().SelectPlayer(identity, m_player); return m_player; }  
      Затем при создании стартового комплекта лута комплект выдается в зависимости от наличия в файле UID и номера после | (комплекта) (в данном случае для номера 1 набор собран (см case :1) , для остальных ничего)
      override void StartingEquipSetup(PlayerBase player, bool clothesChosen) { //По умолчанию номер комплекта выбирается рандомно int numSet = Math.RandomInt(2,6); /// 1 - Админ сет, 2-6 сеты для всех пока пусты EntityAI itemEnt; ItemBase itemBs; //Это тут на всякий случай //Получаем UID //PlayerIdentity p_identity = player.GetIdentity(); //p_identity.GetName(); // Получим имя игрока //p_identity.GetPlainId(); // UID в нашем знакомом виде 7656119********** //p_identity.GetId(); // получим UID в не знакомом виде Ue7dyagee34********* //p_identity.GetPlayerId(); // получим порядковый номер объекта типа игрок PlayerIdentity p_identity = player.GetIdentity(); string p_name = p_identity.GetName(); int p_id = p_identity.GetPlayerId(); if( p_identity ) { string uid_pl = p_identity.GetPlainId(); if (m_playersSetUID.Contains(uid_pl)) { numSet = m_playersSetUID.Get(uid_pl); } } itemEnt = player.GetInventory().CreateInInventory("Rag"); itemBs = ItemBase.Cast(itemEnt); itemBs.SetQuantity(4); SetRandomHealth(itemEnt); itemEnt = player.GetInventory().CreateInInventory("RoadFlare"); itemBs = ItemBase.Cast(itemEnt); switch( numSet ) //Раздаем лут { case 1: //ADMIN { player.RemoveAllItems(); player.GetInventory().CreateInInventory("CoyoteBag_Green"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("TTSKOPants"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("TTsKOJacket_Camo"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("CombatBoots_Black"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("CombatKnife"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("FNX45"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("Mag_AKM_30Rnd"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("Mag_AKM_30Rnd"); itemBs = ItemBase.Cast(itemEnt); itemEnt = player.GetInventory().CreateInInventory( "akm" ); itemEnt.GetInventory().CreateAttachment( "PSO11Optic" ); itemEnt.GetInventory().CreateAttachment( "AK_WoodBttstck" ); itemEnt.GetInventory().CreateAttachment( "AK_WoodHndgrd" ); itemEnt.GetInventory().CreateAttachment( "AK_Suppressor" ); itemEnt = player.GetInventory().CreateInInventory("Rag"); itemBs = ItemBase.Cast(itemEnt); itemBs.SetQuantity(4); itemEnt = player.GetInventory().CreateInInventory("RoadFlare"); itemBs = ItemBase.Cast(itemEnt); player.SetHealth("","",1000); //ТЕСТ //SetAllowDamage НЕ РАБОТАЕТ ДЛЯ ОНЛАЙНА - БОГЕМЦЫ ВЫКЛЮЧИЛИ //Тут обсуждение - https://forums.dayz.com/topic/240028-pve-server-disable-pvp-damage/ //Есть идея насчет доработки кода обрабатывающего нанесение урона player.SetAllowDamage(false); break; } case 2: { break; } case 3: { break; } case 4: { break; } case 5: { break; } case 6: { break; } } } Вот как-то так
       
      На основе этого можно построить свою более развитую систему, например загружая координаты для кастомного спавн лута,  расстановки зданий и тп
       
       
  • 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.