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

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

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

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

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

[FIX] Авто выкидывание игроков из взорванной техники + Удаления техники.

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

Авто выкидывание игроков из взорванной техники.

В server_updateObject.sqf
Путь: \dayz_server\compile

Найти 

_object_killed = {
	private["_hitpoints","_array","_hit","_selection","_key","_damage"];

Добавить поcле 
 

if((count crew _object) > 0) then{ { moveOut _x } forEach crew _object; };

Сохраняем, запаковываем всё обратно. 


Удаления взорванной техники.


В server_updateObject.sqf 

Найти 
 

_object_damage = {


В этом столбце после 
 

_key = format["CHILD:306:%1:%2:%3:",_objectID,_array,_damage];

 

Добавить 
 

if ( _damage >= 1 ) then { deleteVehicle _object; };

Сохраняем.

Иногда при хорошем онлайне бывают задержки удаления техники или выкидывания игрока из сгоревшего транспорта. 



Ах да, забыл оригинал на авто выкидывания из техники игроков.  :smile: 
 

http://epochmod.com/forum/topic/42493-fix-automatically-eject-players-from-blown-up-vehicles/
Изменено пользователем RiMMON (история изменений)

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


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





Полезная вещь.

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


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

Автор, исправь: "Добавить поле" 

 

на "Добавить после".

 

А то ищешь поле и не находишь  :wink:

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


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

Вот в идеале дописать бы чтобы если уж техника взорвалась, то игрок из неё уже мёртвый выпадает  :angry:

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


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

Вот в идеале дописать бы чтобы если уж техника взорвалась, то игрок из неё уже мёртвый выпадает  :angry:

Да, но ведь не всегда так происходит. Когда игрок остаётся в сгоревшей техники, у него остаётся 3-4к крови и в добавок он ещё без сознания  :smile:  

Говорят что в новом Епоче (1.0.6) это всё исправили.  

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


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

Человек старался искал а вы даже спасибо не сказали хоть + поставьте :good:

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


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

Я поставил и спасибо говорю  :smile:

И добавлю: если используете скрипт выпадения лута из уничтоженной техники, то не ставте фикс на удаление техники.

Иначе не успевает лут отспавнится, а техника уже тю-тю  :wink:

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


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

Я поставил и спасибо говорю  :smile:

И добавлю: если используете скрипт выпадения лута из уничтоженной техники, то не ставте фикс на удаление техники.

Иначе не успевает лут отспавнится, а техника уже тю-тю  :wink:

Можно банально задержку сделать.

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


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

Можно банально удаление прикрутить к скрипту выпадения лута,чтобы срабатывал уже после того, как лут вывалится. Но смысл вообще удалять уничтоженную тушку? Намного разумнее, чтобы запись из БД удалялась (особенно, у кого нет ивентов по чистке бд) с помощью функции server_deleteObj. А сгоревшая тушка, на производительность не повлияет, тем более, что после рестарта и не загрузится. Зато побудет игрокам ориентиром (вдруг за лутом своим вернуться захотят).

 

И вопрос, знатокам. В чём отличие moveOut _x; от давно используемого мной решения _x action ["eject", _object]; ? Одно и то же, по сути?

 

 

if((count crew _object) > 0) then{ { _x action ["eject", _object]; } forEach crew _object; };
 

 

Вот удаление из БД:

 

 

if (_objectID == "0") then {
    _key = format["CHILD:310:%1:",_objectUID];
} else {
    _key = format["CHILD:304:%1:",_objectID];
};

 

 

Вместо этого (удаления самой сгоревшей тушки):

 

 

if ( _damage >= 1 ) then { deleteVehicle _object; };
 

Можно и совместно использовать. Удалится и тушка и БД от записи очистится.

Изменено пользователем Alexandr116ru (история изменений)

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


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

Можно банально удаление прикрутить к скрипту выпадения лута,чтобы срабатывал уже после того, как лут вывалится. Но смысл вообще удалять уничтоженную тушку? Намного разумнее, чтобы запись из БД удалялась (особенно, у кого нет ивентов по чистке бд) с помощью функции server_deleteObj. А сгоревшая тушка, на производительность не повлияет, тем более, что после рестарта и не загрузится. Зато побудет игрокам ориентиром (вдруг за лутом своим вернуться захотят).

 

И вопрос, знатокам. В чём отличие moveOut _x; от давно используемого мной решения _x action ["eject", _object]; ? Одно и то же, по сути?

 

 

if((count crew _object) > 0) then{ { _x action ["eject", _object]; } forEach crew _object; };
 

 

Вот удаление из БД:

 

 

if (_objectID == "0") then {
    _key = format["CHILD:310:%1:",_objectUID];
} else {
    _key = format["CHILD:304:%1:",_objectID];
};

 

 

Вместо этого (удаления самой сгоревшей тушки):

 

 

if ( _damage >= 1 ) then { deleteVehicle _object; };
 

Можно и совместно использовать. Удалится и тушка и БД от записи очистится.

Почему вы не написали гайд ранее? Когда всем нужно было, не кто не пишет а как только есть гайд начинаются "А вот так лучше"... :surprised: 

Я не когда не понимал таких людей. 

Если что простите  :tongue:

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


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

через раз чет у меня

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


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

через раз чет у меня

Скорее всего, потому что на отспавненную до рестарта технику в инфи - это не действует.

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: BorizzK
      В эксперементалке 1.08 если сбросить предмет находясь на машине (крыше, багажнике, капоте в кузове) предмет проваливается сквозь машину на землю или оказывается в ее текстурах
       
      Тикет
      https://feedback.bistudio.com/T152071
       
      ответ богемии поразителен - сейчас нет простого решения
       
      А ниже что? Проще не бывает...
       
      Собственно код фикса (Автор Я)
       
      Code ``` modded class ItemBase extends InventoryItem { override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc) { super.EEItemLocationChanged(oldLoc,newLoc); if (newLoc.GetType() == InventoryLocationType.GROUND) { if (oldLoc.GetParent()) { PlayerBase player = PlayerBase.Cast(oldLoc.GetParent()); if (player) { FixPositionIfDropOnCar(player); } } } } void FixPositionIfDropOnCar(PlayerBase player) { vector m_RayStart; vector m_RayEnd; m_RayStart = player.GetPosition(); m_RayStart[1] = m_RayStart[1] + 0.5; m_RayEnd = m_RayStart; m_RayEnd[1] = m_RayEnd[1] - 1; RaycastRVParams m_RayCastInput = new RaycastRVParams(m_RayStart, m_RayEnd, this, 0.05); array<ref RaycastRVResult> m_RayCastResults = new array<ref RaycastRVResult>; m_RayCastInput.with = player; m_RayCastInput.flags = CollisionFlags.FIRSTCONTACT; if (DayZPhysics.RaycastRVProxy(m_RayCastInput, m_RayCastResults)) { if (m_RayCastResults.Count() > 0) { Car car; if (Class.CastTo(car, m_RayCastResults[0].obj) || Class.CastTo(car, m_RayCastResults[0].parent)) { this.SetPosition(m_RayCastResults[0].pos + (player.GetDirection() * 0.1)); } } } } } ``` Наверное имеет смысл чуть приподнять предмет над поверхностью, но необходимость этого зависит от типа предмета, потому не стал этого делать
       
      чуть откорректировал код
    • Автор: BorizzK
      Собственно речь про расширения VPPAdmintools
      1 Автор собирает IP серверов где работает админка
      2 Если надо он заносит ip в некий черный список, сервер при обращении к его "сайту" получит инфу, что сервер в блоке и скрипт не даст подключаться игрокам

      Само расширение - код - спасибо комраду @Selleti
       
      modded class MissionServer { private string vppatlockmessage = "Server is Currently Locked!"; private string serverIP; private bool violatedRules = false; void MissionServer() { GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(this.vppapi, 5000.0, false); serverIP = GetServerIP(); } private void vppapi() { VPPATapiCB cb = new VPPATapiCB( this ); CURLContext ctx = GetCURLCore().GetCURLContext("http://54.39.130.144:5600"); ctx.GET( cb, string.Format( "/Validate?address=%1", serverIP ) ); } void setStatus(bool state) { violatedRules = state; if ( state ) vppatlockmessage = "Server Locked. Please contact the developer of the following mod [ VPPAdminTools ]\nEmail: vanillaplusplusdayz@gmail.com\nDiscord: discord.gg/GWXN2bB"; } void ForceKickPlayers() { GetRPCManager().SendRPC( "RPC_MissionGameplay", "KickClientHandle", new Param1<string>( vppatlockmessage ), true, NULL); array<PlayerIdentity> identities = new array<PlayerIdentity>; GetGame().GetPlayerIndentities( identities ); foreach(ref PlayerIdentity iden: identities) { GetGame().ChatPlayer("#kick " + iden.GetName()); Print(vppatlockmessage); } GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Remove(this.ForceKickPlayers); } override void OnEvent(EventType eventTypeId, Param params) { if ( violatedRules ) GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(this.ForceKickPlayers, 3500, false); else super.OnEvent(eventTypeId,params); } string GetServerIP() { string ip; if (GetCLIParam("ip", ip)) { return ip; } return "0.0.0.0"; } }; class VPPATapiCB: CURLCallback { private string response; private MissionServer serverMission; void VPPATapiCB(MissionServer ms) { serverMission = ms; } override void OnSuccess( string data, int dataSize ) { response = data; if ( response == "true" ) serverMission.setStatus(true); } }; И собственно 2 фикса для серверного мода

      1 Удаляет расширение из загруженных модов вообще - автор Selleti
      выполнено в виде конфига мода
       
      class CfgPatches { class VPPATExtensions_FIX { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"DZM_VPPATExtensions"}; }; }; class CfgMods { delete VPPATExtensions; }; 2 Удаляет из очереди вызов функицию которая ставится в очередь в конструкторе класса MissionServer  в моде VPPAdmintools в скрипте из обфусцированного VPPExtensions.pbo - автор - ну в общем пофигу - просто все
      выполнено в виде скрипта
      modded class MissionServer extends MissionBase { void MissionServer() { GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Remove(this.vppapi); } }
      За сим раскланиваюсь
      Всегда Ваш

       
    • Автор: 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
       
    • Автор: Astrahrom
      Столкнулся с цикличной проблемой в лаунчере, при установке ботов A3EAI:
      Script @epochhive\A3EAI_config.sqf not found Оказалось, что все дело в том, что в открытом доступе лежат старые версии этого скрипта, и все кто пытается воткнуть в Epochhive, как я, данный скрипт - делают это по старой схеме, не актуальной для последних версий.
       
      Решение
       
      Скачиваем - https://yadi.sk/d/HfXeB1pEAGoRtw
       
      Устанавливаем:
      1. Взять из папки архива "1. Installation Package" папку "@A3EAI" и вложить её в папку с вашим сервером;
      2. Прописать скрипт в вашем запускаторе, примерно так:
      -servermod=@EpochHive;@A3EAI; Пример моего запускатора:
      @echo off start "arma3" "arma3server.exe" -servermod=@EpochHive;@A3EAI; -mod=@Epoch; -config=C:\Arma3Server\sc\server.cfg -port=2307 -profiles=sc -cfg=C:\Arma3Server\sc\basic.cfg -name=sc -autoINIT Варианты настройки, которые хранятся в самой папке @A3EAI\addons\a3eai_config в файле config.cpp.
    • Автор: BorizzK
      Палатки пофикшены
      Ну разве что не ставятся на крест на церкви, ставятся чуть ниже
      Все чисто серверное
       
      Выложу завтра днем после небольшой доработки - что бы красиво было
       
      Вот резалт
       
       

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

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

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

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

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

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