Jump to content
DAYZ-CODE.RU - Создай свой игровой сервер

Insult

Members
  • Posts

    18
  • Joined

  • Last visited

  • Отзыв

    0%

Everything posted by Insult

  1. damage = 0 - урона не будет совсем, damage = 0.5 - пройдёт лишь половина урона, damage = 1.0 - пройдёт полный урон насчёт состояния броника, в игре это работает так, пока шмотка НЕ уничтожена - она способна поглотить урон, если пуля заруинит шмотку, она уже не сможет поглотить урон, armorDamage в конфиге пули является модификатором урона по вещам, к примеру на 9x39_AP armorDamage = 3, значит по бронику проходит в 3 раза больше урона
  2. Если ты имеешь в виду вещи, которые можно выловить с рыбалки помимо рыбы, то гляди в исходники игры, а именно в 4_world/classes/worlds/enoch\cherno\sakhal в функции InitYieldBank
  3. Нужно выбрать любой селекш, на котором есть хоть одна кость и с зажатым Ctrl выделить твой прокси, нажать ПКМ по тому же селекшну, Redefine А что именно ты хочешь привязать как прокси, и если ты создал собственный прокси, объявил ли ты его в CfgNonAIVehicles?
  4. @SheriFF А ты привязал прокси к какой-нибудь косточке?
  5. @Пердошлёп Лучше крашлог из папки AppData\Local\DayZ
  6. Я уже очень долгое время придерживаюсь одной и той-же тактики, что-то не работает - делай вайп, ни разу не подвело)
  7. Как писали в сообществе Expansion, нужно просто сделать полный вайп сервера( аля удалить папку storage ), по крайней мере мне и моему товарищу эта манипуляция помогла
  8. подгрузить моды Namalsk Island и Namalsk Survival, и в init.c добавить это: override void OnInit() { super.OnInit(); // this piece of code is recommended otherwise event system is switched on automatically and runs from default values // comment this whole block if NOT using Namalsk Survival if ( m_EventManagerServer ) { // enable/disable event system, min time between events, max time between events, max number of events at the same time m_EventManagerServer.OnInitServer( true, 550, 1000, 2 ); // registering events and their probability m_EventManagerServer.RegisterEvent( Aurora, 0.85 ); m_EventManagerServer.RegisterEvent( Blizzard, 0.4 ); m_EventManagerServer.RegisterEvent( ExtremeCold, 0.4 ); m_EventManagerServer.RegisterEvent( SnowfallE, 0.6 ); m_EventManagerServer.RegisterEvent( EVRStorm, 0.35 ); m_EventManagerServer.RegisterEvent( HeavyFog, 0.3 ); } }
  9. Лично мне помогали 2 способа: 1-й - Пытаться пока не зайдёт 2-й - ПКМ по стиму, "Выйти из Steam", открыть его заново и заходить на сервер
  10. @mishutka Можно просто в mapgroupproto lootmax для каждого здания или тега увеличить
  11. @nastenapotapova.np И в чём проблема была?
  12. Доброго времени суток, делал скрипт на вещи для группировки, чтобы те, чей steamid не вписан в список получали урон при ношении вещей, а чей вписан получали разные бонусы. Вроде всё работает, но заметил очень странную проблему, если постоять секунд 10 без обуви(даже не имея шмоток группировки), текстура персонажа меняется на мертвого, если после этого упасть в анкунсию, то персонаж получает 15 порезов( которые не снимают кровь ) и после подъема нельзя открыть инвентарь. Перелопатил уже весь скрипт, переписывал его раз 10, но так и не понял в чём может быть проблема. void CheckGroupItemsInInventory( PlayerBase player ) { if ( !player.IsAlive( ) || !player.GetAllowDamage( ) ) return; if ( player.GetInventory().AttachmentCount() <= 0 ) return; PlayerIdentity identity = player.GetIdentity( ); if ( !identity ) return; for (int att = 0; att < player.GetInventory( ).AttachmentCount(); att++) { ItemBase attachment = ItemBase.Cast( player.GetInventory( ).GetAttachmentFromIndex( att ) ); if ( !attachment || attachment.GetType( ) == "" || attachment.GetHealthLevel() == GameConstants.STATE_RUINED ) continue; if ( g_pConfig.m_aGroupItems.Find( attachment.GetType( ) ) == -1 ) continue; if ( g_pConfig.m_PlayersIDs.Find( identity.GetPlainId( ) ) >= 0 ) { player.AddHealth( "", "Health", g_pConfig.m_HealthBoost ); player.AddHealth( "", "Blood", g_pConfig.m_BloodBoost ); float old_water = player.GetStatWater( ).Get( ); if ( old_water < player.GetStatWater( ).GetMax( ) ) player.GetStatWater( ).Set( old_water + g_pConfig.m_WaterBoost ); float old_energy = player.GetStatEnergy( ).Get( ); if ( old_energy < player.GetStatEnergy( ).GetMax( ) ) player.GetStatEnergy( ).Set( old_energy + g_pConfig.m_EnergyBoost ); continue; } player.AddHealth( "", "Health", -g_pConfig.m_HealthDamage ); player.AddHealth( "", "Blood", -g_pConfig.m_BloodDamage ); player.GetSymptomManager( ).QueueUpPrimarySymptom( SymptomIDs.SYMPTOM_PAIN_LIGHT ); player.MessageAction( g_pConfig.m_strMessage ); break; } } Вызываю в OnUpdate таким образом super.OnUpdate( timeslice ); m_flDelay += timeslice; if ( m_flDelay < 6 ) return; m_flDelay = 0; array<Man> players = new array<Man>(); GetGame().GetPlayers(players); foreach (Man man : players) { PlayerBase player = PlayerBase.Cast( man ); if ( !player || !player.IsAlive( ) ) continue; CheckGroupItemsInInventory( player ); }
  13. Проверить, правильно ли ты указал classname'ы
  14. Прошу прощения, пока отходил курить, сразу понял. Надо было просто делить урон на защиту каждой шмотки, а для взрывов, делить урон на сумму защиты всех шмоток
  15. Есть ли какой-нибудь способ получить оригинальный урон? У меня на сервере есть экзоскелет, но при этом всем шмоткам от его комплекта прописана защита 0.01, и хочу чтобы при сломанном/выключенном экзоскелете защита не работала, но наличие бронежилетов и прочего не даёт просто урон разделить на 0.01, есть ли какой-то другой способ, или всё же придётся костылить?
  16. В мастерской есть обновлённая версия, с настройкой лута через конфиг, и реализацией через клиент/сервер Мастерская Steam::SearchZombies (steamcommunity.com)
  17. Добавляем новый action class ActionSearchZmbCB : ActionFillBottleBaseCB { override void CreateActionComponent( ) { m_ActionData.m_ActionComponent = new CAContinuousTime( 1 ); } }; class ActionSearchZmb : ActionContinuousBase { void ActionSearchZmb( ) { m_CallbackClass = ActionSearchZmbCB; m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT; m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH; m_FullBody = true; } override typename GetInputType( ) { return ContinuousInteractActionInput; } override void CreateConditionComponents( ) { m_ConditionTarget = new CCTDummy( ); m_ConditionItem = new CCINone; } override string GetText( ) { return "Обыскать"; } override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item ) { Object target_obj = target.GetObject( ); // check for zombie was dead if ( !target_obj || !target_obj.IsInherited( ZombieBase ) || target_obj.IsAlive( ) ) return false; // check for zombie can be looted ZombieBase zombie = ZombieBase.Cast( target_obj ); if ( !zombie || !zombie.m_can_be_searched ) return false; // distance check if ( !IsInReach( player, target ) ) return false; return true; } override void OnFinishProgressServer( ActionData action_data ) { ZombieBase zombie = ZombieBase.Cast( action_data.m_Target.GetObject( ) ); if ( !zombie ) return; // Create some object ( You can enter any object here so that all attachments fall off, add a chance of falling out, etc. ) GetGame( ).CreateObject( "SmallStone", action_data.m_Player.GetPosition( ) ); // Set zombie search state to false, we can't search tham again zombie.m_can_be_searched = false; } }; Регистрируем новый action // scripts\4_world\classes\useractionscomponent\actioncontructor.c modded class ActionConstructor { override void RegisterActions( TTypenameArray actions ) { super.RegisterActions( actions ); actions.Insert( ActionSearchZmb ); } }; //scripts\4_world\entities\creatures\infected\zombiebase.c modded class ZombieBase { bool m_can_be_searched = true; }; //scripts\4_world\entities\manbase\playerbase.c modded class PlayerBase { override void SetActions( out TInputActionMap InputActionMap ) { super.SetActions( InputActionMap ); AddAction( ActionSearchZmb, InputActionMap ); } };
  18. Создание нового типа nv: // 4_world\entities\manbase\dayzplayer\dayzplayercamera_base.c enum MY_NVTypes { NV_GOGGLES_MULTI = 442; NV_GOGGLES_LIGHT_GREEN = 443; }; modded class DayZPlayerCameraBase { override void SetNVPostprocess(int NVtype) { super.SetNVPostprocess(NVtype); switch (NVtype) { case MY_NVTypes.NV_GOGGLES_MULTI: PPERequesterBank.GetRequester(PPERequesterBank.REQ_CAMERANV).Start( new Param1<int>( PPERequester_CameraNV.NV_GOGGLES_MULTI ) ); if (GetGame().GetMission() && GetGame().GetMission().GetEffectWidgets()) { GetGame().GetMission().GetEffectWidgets().AddActiveEffects({EffectWidgetsTypes.NVG_OCCLUDER}); GetGame().GetMission().GetEffectWidgets().RemoveActiveEffects({EffectWidgetsTypes.PUMPKIN_OCCLUDER}); } break; case MY_NVTypes.NV_GOGGLES_LIGHT_GREEN: PPERequesterBank.GetRequester(PPERequesterBank.REQ_CAMERANV).Start( new Param1<int>( PPERequester_CameraNV.NV_GOGGLES_LIGHT_GREEN ) ); if (GetGame().GetMission() && GetGame().GetMission().GetEffectWidgets()) { GetGame().GetMission().GetEffectWidgets().AddActiveEffects({EffectWidgetsTypes.NVG_OCCLUDER}); GetGame().GetMission().GetEffectWidgets().RemoveActiveEffects({EffectWidgetsTypes.PUMPKIN_OCCLUDER}); } break; } }; // 3_game\ppemanager\requesters\ppercameranv.c modded class PPERequester_CameraNV { static const int NV_GOGGLES_MULTI = 442; static const int NV_GOGGLES_LIGHT_GREEN = 443; override void SetNVMode(int mode) { super.SetNVMode(mode); switch (mode) { case NV_GOGGLES_LIGHT_GREEN: SetTargetValueColor( PostProcessEffectType.Glow, PPEGlow.PARAM_COLORIZATIONCOLOR, { 0.48, 1.00, 0.48, 0.00 }, PPEGlow.L_23_NVG, PPOperators.MULTIPLICATIVE ); SetTargetValueFloat( PPEExceptions.EXPOSURE, PPEExposureNative.PARAM_INTENSITY, false, 3 * m_UGExposureCoef, PPEExposureNative.L_0_NVG_GOGGLES, PPOperators.ADD ); SetTargetValueFloatDefault( PostProcessEffectType.FilmGrain,PPEFilmGrain.PARAM_SHARPNESS ); SetTargetValueFloatDefault( PostProcessEffectType.FilmGrain,PPEFilmGrain.PARAM_GRAINSIZE ); SetTargetValueFloat( PPEExceptions.NVLIGHTPARAMS, PPELightIntensityParamsNative.PARAM_LIGHT_MULT, false, 2.0, PPELightIntensityParamsNative.L_0_NVG, PPOperators.HIGHEST ); SetTargetValueFloat( PPEExceptions.NVLIGHTPARAMS, PPELightIntensityParamsNative.PARAM_NOISE_MULT, false, 2.0, PPELightIntensityParamsNative.L_1_NVG, PPOperators.HIGHEST ); break; case NV_GOGGLES_MULTI: /* Colorize param in rgba, { 0, 0, 0, 0 } == black screen, { 1, 1, 1, 0 } == like a day */ SetTargetValueColor( PostProcessEffectType.Glow, PPEGlow.PARAM_COLORIZATIONCOLOR, { 1.00, 1.00, 1.00, 0.00 }, PPEGlow.L_23_NVG, PPOperators.MULTIPLICATIVE ); SetTargetValueFloat( PPEExceptions.EXPOSURE, PPEExposureNative.PARAM_INTENSITY, false, 3 * m_UGExposureCoef, PPEExposureNative.L_0_NVG_GOGGLES, PPOperators.ADD ); SetTargetValueFloatDefault( PostProcessEffectType.FilmGrain,PPEFilmGrain.PARAM_SHARPNESS ); SetTargetValueFloatDefault( PostProcessEffectType.FilmGrain,PPEFilmGrain.PARAM_GRAINSIZE ); SetTargetValueFloat( PPEExceptions.NVLIGHTPARAMS, PPELightIntensityParamsNative.PARAM_LIGHT_MULT, false, 2.0, PPELightIntensityParamsNative.L_0_NVG, PPOperators.HIGHEST ); /* Noise param, than more -> then more 'defects' on screen you get */ SetTargetValueFloat( PPEExceptions.NVLIGHTPARAMS, PPELightIntensityParamsNative.PARAM_NOISE_MULT, false, 1.0, PPELightIntensityParamsNative.L_1_NVG, PPOperators.HIGHEST ); break; /* - For recolor vanilla nvg, use NV_DEFAULT_GLASSES case and change PARAM_COLORIZATIONCOLOR how you want */ } } }; Для изменения вида NV с ванильного на ваш, в классе с очками в методах OnWorkStart, OnWorkStop, OnWork меняете айдишник NV на свой: player.AddActiveNV(NVTypes.NV_GOGGLES); player.RemoveActiveNV(NVTypes.NV_GOGGLES); -> player.AddActiveNV(MY_NVTypes.NV_GOGGLES_MULTI); player.RemoveActiveNV(MY_NVTypes.NV_GOGGLES_MULTI); Первая тема тут, надеюсь не последняя🙂 Ну и результат собсно:
×
×
  • Create New...