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
DrTauren

Настройка стартового лута игроков

Recommended Posts

В этом гайде мы разберёмся как настроить стартовый лут на сервере DayZ Standalone. Наверняка многие знают как это сделать, но, думаю, не все :smile:

Инструкция:

1) Открываем файл init.c, который находится в папке mpmissions вашего сервера и ищем такие строки:

EntityAI itemEnt;
ItemBase itemBs;

Сразу после них находится блок примерно такого вида:

itemEnt = player.GetInventory().CreateInInventory("Rag");
itemBs = ItemBase.Cast(itemEnt);
itemBs.SetQuantity(4);
SetRandomHealth(itemEnt);

itemEnt = player.GetInventory().CreateInInventory("RoadFlare");
itemBs = ItemBase.Cast(itemEnt);

Именно здесь и задаётся стартовый лут персонажа. Видим что в стартовом луте прописан фаер и четыре бинта.

  • itemEnt = player.GetInventory().CreateInInventory("Rag"); - Rag это класснейм предмета (бинта)
  • itemBs.SetQuantity(4); - количество бинтов и т.д. в пачке, коробке и т.д.

Эти два блока нам и нужно удалить и заменить на свои.

2) Открываем файл types.xml. В этом файле прописаны класснеймы предметов, имеющихся в игре. Находим нужные и оформляем файл init.c под себя. Добавим, например, рюкзак, бобы, каску, куртку, штаны и колу:

// рюкзак
itemEnt = player.GetInventory().CreateInInventory("AliceBag_Black");
itemBs = ItemBase.Cast(itemEnt);
// бобы
itemEnt = player.GetInventory().CreateInInventory("BakedBeansCan");
itemBs = ItemBase.Cast(itemEnt);
// каска
itemEnt = player.GetInventory().CreateInInventory("BallisticHelmet_Black");
itemBs = ItemBase.Cast(itemEnt);
// куртка
itemEnt = player.GetInventory().CreateInInventory("BomberJacket_Grey");
itemBs = ItemBase.Cast(itemEnt);
// штаны
itemEnt = player.GetInventory().CreateInInventory("CargoPants_Black");
itemBs = ItemBase.Cast(itemEnt);
// кола
itemEnt = player.GetInventory().CreateInInventory("SodaCan_Cola");
itemBs = ItemBase.Cast(itemEnt);

Таким образом, весь файл init.c должен выглядеть примерно так:

Скрытый текст

 


void main()
{

	Hive ce = CreateHive();
	if ( ce )
		ce.InitOffline();

	Weather weather = g_Game.GetWeather();

	weather.GetOvercast().SetLimits( 0.0 , 1.0 );
	weather.GetRain().SetLimits( 0.0 , 1.0 );
	weather.GetFog().SetLimits( 0.0 , 0.25 );

	weather.GetOvercast().SetForecastChangeLimits( 0.0, 0.2 );
	weather.GetRain().SetForecastChangeLimits( 0.0, 0.1 );
	weather.GetFog().SetForecastChangeLimits( 0.15, 0.45 );

	weather.GetOvercast().SetForecastTimeLimits( 1800 , 1800 );
	weather.GetRain().SetForecastTimeLimits( 600 , 600 );
	weather.GetFog().SetForecastTimeLimits( 1800 , 1800 );

	weather.GetOvercast().Set( Math.RandomFloatInclusive(0.0, 0.3), 0, 0);
	weather.GetRain().Set( Math.RandomFloatInclusive(0.0, 0.2), 0, 0);
	weather.GetFog().Set( Math.RandomFloatInclusive(0.0, 0.1), 0, 0);
	
	weather.SetWindMaximumSpeed(15);
	weather.SetWindFunctionParams(0.1, 0.3, 50);
}

class CustomMission: MissionServer
{	
	void SetRandomHealth(EntityAI itemEnt)
	{
		int rndHlt = Math.RandomInt(40,100);
		itemEnt.SetHealth("","",rndHlt);
	}

	override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName)
	{
		Entity playerEnt;
		playerEnt = GetGame().CreatePlayer(identity, characterName, pos, 0, "NONE");//Creates random player
		Class.CastTo(m_player, playerEnt);
		
		GetGame().SelectPlayer(identity, m_player);
		
		return m_player;
	}
	
	override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
	{

		player.RemoveAllItems();
/*
		EntityAI item = player.GetInventory().CreateInInventory(topsArray.GetRandomElement());
		EntityAI item2 = player.GetInventory().CreateInInventory(pantsArray.GetRandomElement());
		EntityAI item3 = player.GetInventory().CreateInInventory(shoesArray.GetRandomElement());
*/
		EntityAI itemEnt;
		ItemBase itemBs;
		
// рюкзак
itemEnt = player.GetInventory().CreateInInventory("AliceBag_Black");
itemBs = ItemBase.Cast(itemEnt);
// бобы
itemEnt = player.GetInventory().CreateInInventory("BakedBeansCan");
itemBs = ItemBase.Cast(itemEnt);
// каска
itemEnt = player.GetInventory().CreateInInventory("BallisticHelmet_Black");
itemBs = ItemBase.Cast(itemEnt);
// куртка
itemEnt = player.GetInventory().CreateInInventory("BomberJacket_Grey");
itemBs = ItemBase.Cast(itemEnt);
// штаны
itemEnt = player.GetInventory().CreateInInventory("CargoPants_Black");
itemBs = ItemBase.Cast(itemEnt);
// кола
itemEnt = player.GetInventory().CreateInInventory("SodaCan_Cola");
itemBs = ItemBase.Cast(itemEnt);

	}
	}
};
  
Mission CreateCustomMission(string path)
{
	return new CustomMission();
}

 

 

 

 

 


Подробности о том как заспавнить оружие с магазинами, машины, предметы и тому подобное написаны в разделе init.c тут:

 

Share this post


Link to post
Share on other sites







Так вроде можно прописать оружие прямо в руки:

 

Цитата

player.GetHumanInventory().CreateInHands("M4A1")

 

 а так добавить магазин к оружию:

 

Цитата

player.GetWeaponManager().AttachMagazine(mag);

 

но еще не чекал.

Edited by Miarcad (see edit history)

Share this post


Link to post
Share on other sites

Miarcad есть правда в твоих словах, но статью ещё не дописал, пометочка об этом стоит. Пока что написал как добавить чисто в инвентарь :smile:

player.GetHumanInventory().CreateInHands("M4A1")

Это работает, да. Единственное, что оружие спавнится при этом без магазина (хотя графически он присутствует), без прицела, цевья и всего остального.

 

С командой:

player.GetWeaponManager().AttachMagazine(mag);

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

Остаётся ждать инфы в этой теме от тех кто уже разобрался, тогда и доделаю гайд по-полной и всё оформлю хорошенько :relieved:

Share this post


Link to post
Share on other sites

Сделал, не спавнит большинство вещей. Что делать?

Share this post


Link to post
Share on other sites

gerFid что-то не так возможно сделал, либо эти вещи вырезаны пока

Share this post


Link to post
Share on other sites

DrTauren Если я пишу: 

itemEnt = player.GetInventory().CreateInInventory("AKM");

itemBs = ItemBase.Cast(itemEnt);

 

то появляется голый калаш. Как заспавнить с цевьем? И т.д.

 

Edited by gerFid (see edit history)

Share this post


Link to post
Share on other sites

 Пожалуйста !!
Я пытаюсь настроить начальную экипировку моего игрока в версии игры 0.62. Но мой документ INIT полностью отличается от вашего ...
view::

Скрытый текст

/*
setTimeForScripts 90;

call compile preprocessFileLineNumbers "\dz\modulesDayZ\init.sqf";

DZ_MP_CONNECT = true;
DZ_MAX_ZOMBIES = 0;
DZ_MAX_ANIMALS = 0;
DZ_PLAYER_COUNT = getServerMaxPlayers;

//----- simple scheduler part -----

connectedPlayers = [];
for "_x" from 0 to (DZ_PLAYER_COUNT-1) do
{
    connectedPlayers set [_x,0];
};


diag_log format ["SCHEDULER: Connected players array init, count %1, %2",count connectedPlayers, connectedPlayers];
//---------------------------------

call dbLoadPlayer;

_humidity = random 0.8;
[0,0] setOvercast _humidity;
simulWeatherSync;

setWindMaxSpeed 10;
setWindSpeedOfChange 50;
setWindFnMin 0.2;
setWindFnMax 1;

_position = [7500,7500,0];
//exportProxies [_position,200000];
//call init_spawnZombies;
//sleep 1;
call init_spawnWildAnimals;
sleep 1;
*/
//remove the event but not forget the positions
//Christmas tree spawning
/*
_treePositions = [
            [6743.83,2577.14],
            [1652.32,14226.36],
            [3801.06,8847.76],
            [9441.43,8826.21],
            [7903.16,12576.52],
            [11617.75,14663.98],
            [12830.08,10115.18],
            [11221.94,12225.89],
            [3471.93,12988.33],
            [13933.42,13228.44],
            [12018.3,9090.9],
            [10468.54,2373.16],
            [2725.48,5288.75]
            ];

{
    _tree = "ChristmasTree" createVehicle _x;
    _tree setPos [ (getPos _tree) select 0, (getPos _tree) select 1, -2.3];

} forEach _treePositions;
*/
/*
//call init_spawnServerEvent;
//dbInitEconomy [];
//dbInitEconomy [];
//dbInitEconomy ["http://localhost:8080/"];
//dbInitEconomy ["http://hive.dankdayz.org:8080/"];// HAHA they dont like our hive
//dbInitEconomy ["http://1ive.dankdayz.org:8080/"];
dbInitEconomy ["http://62.hive.dankdayz.org:8080/"];

setTimeForScripts 0.03;

//----- simple scheduler part -----
index = 0;
indexTarget = DZ_PLAYER_COUNT;
onEachFrame {    
    if (index < DZ_PLAYER_COUNT) then {
        _playerToTick = connectedPlayers select index;    
        //diag_log format ["SCHEDULER: Select clientId to tick %1 on index %2", _playerToTick, index];    
        if (_playerToTick != 0) then {
            _player = playerOn _playerToTick;        
            if ((alive _player) and (isSGTicksEnabled)) then
            {
                //diag_log format ["SCHEDULER: Run ticks for clientId %1 on index %2", _playerToTick, index];
                //[_player,format ["DEBUG: Tick tock... diagFPS %1, indexTarget %2", diag_fps, indexTarget],""] call fnc_playerMessage;
                _player call tick_modifiers;    
                _player call tick_states;        
                _player call tick_environment;
                _player call fnc_sendNotifiersToEnfusion;
            };
        };
    };
    index = index + 1;        
    if (index == indexTarget) then {
        indexTarget = (round(diag_fps * 2)) max DZ_PLAYER_COUNT; //indexTarget = (round(diag_fps * 2)) max DZ_PLAYER_COUNT; //ideal is 25fps to get 2s ticks
        index = 0;
    };
};
//---------------------------------
*/
/*
Dank DayZ Dev Team
Thanks to everyone else for their contributions!
          _                         _
         |_|          ___          |_|
         | |         /___\         | |
        _| |_      (| 'o' |)      _| |_
      _| | | | _    (_ - _)    _ | | | |_ 
     | | | | |' |    _| |_    | `| | | | |
     |          |   /     \   |          |
      \        /  / /(. .)\ \  \        /
        \    /  / /  | . |  \ \  \    /
          \  \/ /    ||_||    \ \/  /
           \__/      || ||      \__/
                     () ()
                     || ||
                    ooO Ooo
*/
uiSleep 1;
if !(isNil FIRST) exitWith {};
FIRST = "lol";
diag_log 'Dank DayZ Server Init Start';
if(isServer) then {
    DD_InitLoot = false;
    DD_CleanLoot = false;
    call compile preprocessFileLineNumbers "\dz\dank\server_init.sqf";
} else {

};

 

Сокорро ...

Вы должны быть уверены, что у вас есть все необходимое, чтобы помочь мне в этом.

Спасибо ! :(

 

Share this post


Link to post
Share on other sites

kaike200 Это SQF - забудте про него в DayZ

Тут enScript

 

				itemEnt = player.GetInventory().CreateInInventory( "akm" ); 
				itemBs = ItemBase.Cast(itemEnt);
				itemEnt.GetInventory().CreateAttachment( "PSO11Optic" ); 
				itemEnt.GetInventory().CreateAttachment( "AK_PlasticBttstck_Black" ); 
				itemEnt.GetInventory().CreateAttachment( "AK_RailHndgrd_Black" );
				itemEnt.GetInventory().CreateAttachment( "AK_Suppressor" );
				itemEnt.GetInventory().CreateAttachment( "AtlasBipod" );

создание АКМ

 

а вообще курить форум глубоко

тем навалом как и готовых решений

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites
В 22.04.2019 в 22:38, BorizzK сказал:

 


				itemEnt = player.GetInventory().CreateInInventory( "akm" ); 
				itemBs = ItemBase.Cast(itemEnt);
				itemEnt.GetInventory().CreateAttachment( "PSO11Optic" ); 
				itemEnt.GetInventory().CreateAttachment( "AK_PlasticBttstck_Black" ); 
				itemEnt.GetInventory().CreateAttachment( "AK_RailHndgrd_Black" );
				itemEnt.GetInventory().CreateAttachment( "AK_Suppressor" );
				itemEnt.GetInventory().CreateAttachment( "AtlasBipod" );

создание АКМ

 

Прописал М4 с магазином, но она не стреляет и не перезаряжает, баг игры?
А отдельно М4 и магазин в карман куртки прописал, всё работает.

Edited by Viknow (see edit history)

Share this post


Link to post
Share on other sites
14 часа назад, Viknow сказал:

Прописал М4 с магазином, но она не стреляет и не перезаряжает, баг игры?
А отдельно М4 и магазин в карман куртки прописал, всё работает.

верно

Share this post


Link to post
Share on other sites

Здравствуйте, не знаете как изменить время респавна игроков?

Share this post


Link to post
Share on other sites

@AvdDandayzOffline.chernarusplus\db файл globals.xml

    <var name="TimeLogin" type="0" value="15"/>
    <var name="TimeLogout" type="0" value="15"/>

 

Share this post


Link to post
Share on other sites

А какой метод "кладет вещь" за спину? К примеру ту же лопату или кирку ?

Share this post


Link to post
Share on other sites
7 часов назад, VDT сказал:

А какой метод "кладет вещь" за спину? К примеру ту же лопату или кирку ?

Если создать ее на игроке то она будет за спиной

Share this post


Link to post
Share on other sites
31.12.2019 в 18:33, BorizzK сказал:

Если создать ее на игроке то она будет за спиной

для этого (создать на игроке) надо знать метод.... Я поступил проще. Я дал ему оружие до того, как дал рюкзак... И оно появилось за спиной.

Share this post


Link to post
Share on other sites
15 часов назад, xtonatif сказал:

Как заспавнить машину с игроком?

в каком смысле заспавнить с игроком? игрок это отдельный объект, персонаж на сервере отдельный, машина отдельный. Игрок управляет персонажем,  а вот техникой может управлять только персонаж, понимаете логику? Против забора на велике не попрешь ;)

Share this post


Link to post
Share on other sites

@123new Человек не правеильно поставил вопрос

Как засппавнить персонажа с машиной или в машине.

Share this post


Link to post
Share on other sites

от перемены мест слагаемых сумма не изменится)

Share this post


Link to post
Share on other sites

Доброе время суток, а можно как нибудь изменить размер инвентаря?

Допустим рюкзака?

 

Edited by se4ik1284 (see edit history)

Share this post


Link to post
Share on other sites
36 минут назад, se4ik1284 сказал:

Доброе время суток, а можно как нибудь изменить размер инвентаря?

Допустим рюкзака?

 

Возможно. Но тут ты должен модифицировать класс уже имеющейся одежды.
Я вот себе админ сумку сделал
 

itemsCargoSize[]={10,40};

 

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 vitacite
      Бесплатные проекты - "пацаны собрались и замутили сервачок" долго не живут.  В этом я убеждался много раз. Нет сначала на интузиазме эффективность неплохая, но затем все это затухает управляемость команды падает.  Начинаются вопросы - "а почему это должен делать я?",  отмазки "да я на даче сегодня", "да у меня командировка" и тд...  + кто-то должен спонсировать оплату сервера, антидудосов и прочей лобуды, а такого человека интерес тоже может пропасть в любой момент. А чтобы проект был хороший - кому-то надо реально "въебывать", как на второй работе, и  кому-то постоянно вливать туда бабло.
      Поэтому, лично я, считаю любой некоммерческий проект заранее проваленным!  Побегать недельку другую с друзьями это да. Что-то более серьезное, не тратьте свои силы и время! Как минимум на  тему сталкера я таких проектов видел 10 штук и в некоторых даже сам поучаствовал. Начиналось все амбициозно и даже набирало онлайн до 100 человек. Но заканчивалось все одинаково 3-4 месяца и с десято скучающих тел, на безлюдном сервере.  С точки зрения администации, игроки ведут себя как проститутки, бегая с сервера на сервер, друзья перешли, или потому что на том добавили новый прикольный скрип, или прикольную тачку, или тут плохой пинг, а там хороший, или админ козел забанил за читы и тд.  а все эти приколюхи требуют денег, а игровое сообщество не очень расположено их платить за некачественный контент. Да и сама администрация достаточно быстро забивает и расслабляется.
      (я сейчас не говорю о конкретном проекте, скорее это собирательный образ халявы).
       
      А теперь по-существу.  Так сколько должен стоить контент с хотя бы приемлемым качеством?  

      Свое мнение я написал ниже.
       
       
      Спасибо за внимание.
       
      А что думаете Вы напишите ниже в комментариях!
       
       
    • By 123new
      Вижу крайне много любопытных вопросов по поводу идентификаторов игрока в игре. Что же, разжую для не знающих немного.
       
      В игре есть следующие типы идентификаторов:
      1. Steam64ID идентификатор профиля игрока (на пиратках его UID называют), примерно такой: 765475....65 (17 цифр).
      2. Так называемый мною, BIS ID - uid из окна (консоли) сервера игры и ADM-файлов логов сервера, который пишется самой игрой
      3. Battleye GUID игрока.
       
      Первый идентификатор (Steam64ID) на ПК является прямым идентификатором стим-профиля игрока, уникальным у каждого игрока. Т.е. публичным идентификатором вашего профиля для большинства стим-игр (например, Counter-Strike).
      Второй идентификатор (BIS ID) является определенной хеш-суммой, полученной из Steam64ID посредством конвертации сначала в sha256, а затем в base64. Спасибо за это разъяснение и пример кода-конвертации авторам игры на своем официальном форуме.
      Третий идентификатор (Battleye GUID) является публичным идентификатором Battleye античита, получаемый также из Steam64ID поcредством получения его хеш-суммы MD5. Этот же идентификатор есть в логах сервера от Battleye, в любых RCON-приложениях (DART, BEC и т.п.), также его можно конвертировать самим.
       
      Так вот, как же получить Steam64ID:
      1. Зайти на любой ресурс, предназначенный для сбора таких данных. например на: https://steamid.io/
      2. Ввести ссылку на ваш стим-профиль
      3. Получить результат из кучи данных, одно поле из которых и будет содержать ваш Steam64ID
       
      Как получить BIS ID:
      1. Открыть любой Phyton-конвертер в интернете, например: https://www.tutorialspoint.com/execute_python_online.php
      2. Ввести в него следующий код:
      # Hello World program in Python from hashlib import sha256 from base64 import b64encode def construct_bi_uid(steam_id): hashed = sha256() hashed.update(str(steam_id)) return b64encode(hashed.digest()) print construct_bi_uid(76514925976798981) 3. заменить 76514925976798981 на ваш Steam64ID
      4. Отправить код в исполнение, нажав Execute.
      5. Получить результат

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
       
      Как получить Battleye GUID:
      1. Открыть любой ресурс с готовой формой конвертирования, например:
      https://armstalker.com/guid/
      https://dayzrussia.com/f/index.php?pages/dayzguid/
      либо написать свою, на основе данных, предложенных на странице Github
      https://gist.github.com/chris579/53053b6d6438df9a9718c23c0d6bbd69
      Оставлю ниже лишь код для Phyton:
      # Thanks to gunlinux import md5 steamid=76514925976798981 temp = "" for i in range(8): temp += chr((steamid & 0xFF)) steamid >>= 8 m = md5.new("BE"+temp) print m.hexdigest() 2. Вставить в поле ввода UID(Steam64ID) ваш Steam64ID
      3. Нажать кнопку конвертирования или исполнить код, и получить в готовом виде Battleye GUID
       
      Возможно имеются и другие методы и наработки в получении данных идентификаторов более простыми методами, на других языках, либо автоматически. Я описал лишь известные мне.
      Все желающие могут добавить в комментариях свои способы конвертаций, возможно это поможет кому-либо.
    • By DrTauren
      Как всем известно, сегодня, 19 сентября разработчики DayZ Standalone официально опубликовали документацию серверов Dayz, а также предоставили возможность скачать файлы для запуска сервера DayZ. Ниже прилагается перевод официальной документации этих самых файлов с форума DayZ, а также документация касательно других файлов, которых нет в официальной документации. Пользуйтесь на здоровье 
       
      Скачать серверные файлы через Steam: steam://rungameid/223350
      На данный момент присутствует ошибка с невозможностью скачать файлы сервера, если на вашем аккаунте Steam отсутствует купленная DayZ.
       
      P.S. Если у вас есть чем заполнить эту статью, обязательно пишите мне в лс 
    • By Serdce
      Ссылка на первоисточник - https://github.com/BrettNordin/Exile
      Я всего лишь перевёл
      Собственно переходим по ссылке, и скачиваем архив.
      Для тех, кто не знает как качать с хаба скрин 
      И так, едем дальше
      Скачанный архив распаковываем в удобное место для работы,
      Идём в ваш @ExileServer, там нас интересуют файлы - extDB2.dll , extDB2.so , extDB2-conf.ini , XM8.dll , XM8.so Удаляем эти файлы
      Далее идём в @ExileServer которую мы скачали, всё её содержимое копируем в аналогичную папку на сервере.
      Теперь идём в вашу MPmissions и там распаковываем вашу миссию "Exile.название карты",
      Туда мы копируем содержимое папки Exile.MapName из архива,
      Далее открываем ваш config.cpp и ищем там class CfgExileCustomCode 
      В него мы добавляем - #include "CfgExileCustomCode.cpp"
      Должно получится так
      Запаковываем обратно)
      Ну и теперь из архива мы копируем tbbmalloc.dll, tbbmalloc_x64.dll в папку расположения вашего Arma3_server.exe
      Не забываем поменять в вашем файле запуска сервера с arma3server.exe на arma3server_x64.exe 
      Ну и финишная прямая, открываем вашу базу данных ( желательно с название exile ) и добавляем файл Exile_Database_Update_64x.sql
      Далее настройте под себя ваш extdb3-conf.ini
       
  • 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.