Jump to content


Photo

Мод выживания [OpenSource] GNU


  • Please log in to reply
40 replies to this topic

#1 OFFLINE   hummer4x4

hummer4x4

    Рядовой

  • Пользователи
  • 23 posts
  • Откуда:Kaliningrad

Posted 11 March 2017 - 14:24

Проект является OpenSource.

 

И так, решил занятся написание мода, да это очередная выживалка.

Главное особенностью с технического взгялад данного мода является, модульность что позволит с легкостью добавлять свое или редактировать имеющееся.

 

Проект создан в OpenSource для того что бы все вместе могли улучшить, сделать его таким каким хотим видеть, написать новые модули для него расширив функционал и популярность данного серверного мода.

 

Я стремлюсь добавить в данный мод все лучшее что было в модах за арма2 и арму3..

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

На данный момент версия мода (НЕ ИГРАБЕЛЬНА).

 

GITHUB: 

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

Email: hummer@flygrand.ru


Edited by hummer4x4, 14 March 2017 - 00:44.

  • 0

#2 OFFLINE   hummer4x4

hummer4x4

    Рядовой

  • Пользователи
  • 23 posts
  • Откуда:Kaliningrad

Posted 22 March 2017 - 01:23

Нужна помощь кто желает помочь, велком.

1. Нужен человек кто поможет в составлении документации [RUS/ENG] (Инструкции, какие доступны функции/команды для отдельных модулей..)
2. Ну и сами люди, кто желают помочь в тестировании (У меня на сервере, либо установкой на свой сервер)

3. И на последок, если хотите поделиться что хотели бы видеть или сделано как то.. Тоже, буду рад услышать ваши желания.

 

Как связаться со мной вне форума, обсуждаю в лс на форуме.


Edited by hummer4x4, 22 March 2017 - 01:38.

  • 0

#3 OFFLINE   Solib

Solib

    Мл.сержант

  • Пользователи
  • 106 posts
  • Откуда:Санкт-Петербург

Posted 23 March 2017 - 17:08

Поскольку мод опенсорс и является скорее модулем или основой для модулей, для тестов использовать стандартную карту из армы... так проще


  • 0

#4 OFFLINE   hummer4x4

hummer4x4

    Рядовой

  • Пользователи
  • 23 posts
  • Откуда:Kaliningrad

Posted 23 March 2017 - 18:13

Поскольку мод опенсорс и является скорее модулем или основой для модулей, для тестов использовать стандартную карту из армы... так проще

Можно тестировать на любой карте. Достаточно в init.sqf в карте прописать
1. CallBack функции

addMissionEventHandler ["BuildingChanged", { [_this, { _this Call SRVServer_callback_buildingChanged; } ] remoteExecCall ["SRVServer_core_execClient", 2]; }];
addMissionEventHandler ["EntityRespawned", { [_this, { _this Call SRVServer_callback_entityRespawned; } ] remoteExecCall ["SRVServer_core_execClient", 2]; }];
addMissionEventHandler ["EntityKilled", { [_this, { _this Call SRVServer_callback_entityKilled; } ] remoteExecCall ["SRVServer_core_execClient", 2]; }];
addMissionEventHandler ["HandleDisconnect", { [_this, { _this Call SRVServer_callback_handleDisconnect; } ] remoteExecCall ["SRVServer_core_execClient", 2]; }];
addMissionEventHandler ["PlayerConnected", { [_this, { _this Call SRVServer_callback_playerConnected; } ] remoteExecCall ["SRVServer_core_execClient", 2]; }]; 

2. в description.ext вписать 

class bis_fnc_execvm { allowedTargets=2; };
class SRVServer_core_execClient { allowedTargets=2; };
disabledAI = 0;	

Затем в конфиге SRVConfig прописать точки появления, и лут который будет на руках и высоту спавна.. Если делать прыжок с парашутом. и в папке respawn есть  файл player.sql для добавление в БД..

 

Все клиентские команды отправляются со сервера, и хранятся на сервере.

 

Подсказка, 
[ params, { YOU_HERE_CODE } ] SRVServer_core_execClient //Отправляет команды на сервер, с клиента
[ params, {YOU_HERE_CODE}, $OWNER_PLAYER ] SRVServer_core_execServer //Отправляет команды на клиент, со сервера

 

Выдержка из файла respawn, пример использования кэллбЕков. Сделано для универсальности модулей.. Делаю максимальную незасимость модулей от редактирование других файлов. Нужно прописывать в postInit.sqf

{ _this Call SRVServer_spawn_disconnect; }  Call SRVServer_callback_setHandleDisconnect;
{ _killed Call SRVServer_spawn_died; }        Call SRVServer_callback_setEntityKilled;
{ _player Call SRVServer_spawn_connected; }   Call SRVServer_callback_setPlayerConnected;

Следущее в плане, 1. модуль спавна лута  2. Разбросанную технику на карте


Edited by hummer4x4, 23 March 2017 - 18:30.

  • 0

#5 OFFLINE   hummer4x4

hummer4x4

    Рядовой

  • Пользователи
  • 23 posts
  • Откуда:Kaliningrad

Posted 16 April 2017 - 03:19

Инструкция постом выше, больше не подходит. Функции устаревшие!

Для примера смотрите исходники на gitHube.

 

Закончил со спавном лута, частично проверил, вроде работает. Производит спавн лута, и обновляет лут если он лежит долго.
ТАк же убрал глюк который раздрожал в других спавнах, у меня - если ты находишься возле лута он не обновиться пока кто то рядом есть.

 

Так же, добавил в конфиг параметр который будет отвечать где производить вычесления по спавну лута..
1. На клиенте, который вызывает спавн лута.
2. На сервере, отвечает за спавн лута всех игроков.

 

На сервере оставил только Размещение предметов по зданию, а все циклы и просчеты можно производить на клиенте или на сервере как писал выше.

 

В папке с модулем лежит текстовый файл how_add_building, там инструкция как добавлять новые строения, здания.

В buildingList первая строка отвечает - за тип здания (военные, гражданские).
В lootTable первая строка, говорит в каком типе здания, спанвить следующий лут, поддерживает разделение по группам.

В lootGroup первая строка, название группы, затем список вещей которые необходимо заспавнить

 

Шанс лута выставляется в соотношении 0-100%.. (Только цельные значения, дроби не поддерживаются на текущий момент)

В LootTable Пишите название Группы например

    ["Military", 
        [
            [0, "RifleArma3"],
            [50, "arifle_MXC_F"]
        ]
    ]

Затем создаете группу  RifleArma3
 

lootGroup =
[
    ["RifleArma3", 
        [
            [90, "arifle_Katiba_F"],
            [80, "arifle_Katiba_GL_F"]
        ]
    ]
];

Позволяет разделять группы предметов, для удобной работы в дальнейшем.

 

Взялся за технику, планирую на этой неделе завершить его.

Закрытие техники в этом модуле не будет, он будет отдельным и не сразу. 

 

P.S Отдельное спасибо SteelRat, за помощь.


Edited by hummer4x4, 16 April 2017 - 15:07.

  • 1

#6 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 16 April 2017 - 18:39

 

Шанс лута выставляется в соотношении 0-100%.. (Только цельные значения, дроби не поддерживаются на текущий момент)

// приведение к корректному виду полученных из конфига значений, которые вероятно могут быть
// определены не корректно

_chance = round (getNumber(namespace >> "CfgLoot >> "LootName" >> "chance"));

  • 0

#7 OFFLINE   hummer4x4

hummer4x4

    Рядовой

  • Пользователи
  • 23 posts
  • Откуда:Kaliningrad

Posted 22 April 2017 - 02:26

Модули Core, CallBack, Loot, Vehicle, Respawn завершены..
Провожу окончательные тестирования. Новые модули пока не ожидаются.
Будут усовершенствоваться конфиги текущих модулей и добавляться новые возможности и исправлять баги которые будут обнаружены..

Версия от 4.22.2017
* Core get/setContainer - Сохраняет/Загружает Одежду/Жилеты/Рюкзаки со всем лутом внутри 
* Core get/setVehicleAmmo - Сохраняет/Загружает патроны в оружие на технике 
* Core setItemCargo - Выдает вещи полученные функцией getItemCargo 
* Core setWeaponsItemCargo - Выдает оружие в руки и акссесуары в рюкзак полученные функцией weaponsItemsCargo 
* Core Так же не большие дополнительные утилиты, для работы других модулей 
* Core Содержит Серверные/Клиентские Команды, не обходимых для работы модулейCallback 
* КеллБек - Реализованы ивенты 
* КеллБек - Смерть игрока / npc / Техники 
* КеллБек - Разрушение зданий 
* КеллБек - Респавн игрока 
* КеллБек - Коннект / Дисконнект игрока 
+ Установить свою функцию на вызов 
+ {ВАШ КОД, Сработает при вызове ивента.} Call SRVCall_fnc_setИмяИвента 
+ Посмотреть список ивентов можете в папке getCallback / setCallbackLoot 
* Добавлен рандомный спавн лута в здании 
* Возможность кастомного лута, отказаться от рандома 
* Процент спавна лута выставляется в проценте от 0 до 100 
* Multiple для определенных зданий, позволит увеличить шанс спавна оружия в определенных помещениях
* Vehicle Сохраняется / Загружается * Сохраняет лут и Одежду, жилеты и рюкзаки со всем лутом внутри

Что бы найти сервера с данным модом, ищите в названии сервера слово SRV, договорился с владельцами серверов что бы указывали на первое время в названии сервера аббревиатуру мода т.е SRV


Edited by hummer4x4, 24 April 2017 - 00:28.

  • 2

#8 OFFLINE   AmonR

AmonR

    Рядовой

  • Пользователи
  • 12 posts
  • Откуда:spb
  • Отряд:solo

Posted 23 June 2017 - 04:50

Интересно


Как там ваши разработки?


  • 0

#9 OFFLINE   Solib

Solib

    Мл.сержант

  • Пользователи
  • 106 posts
  • Откуда:Санкт-Петербург

Posted 29 June 2017 - 21:53

в бд игрок почему то не сохраняет позицию и инвентарь

Edited by Solib, 29 June 2017 - 22:53.

  • 0

#10 OFFLINE   Solib

Solib

    Мл.сержант

  • Пользователи
  • 106 posts
  • Откуда:Санкт-Петербург

Posted 30 June 2017 - 14:37

Миссию в редакторе не открыть, ошибка загрузки.. ни какой информации в rpt логах((((


  • 0

#11 OFFLINE   Solib

Solib

    Мл.сержант

  • Пользователи
  • 106 posts
  • Откуда:Санкт-Петербург

Posted 30 June 2017 - 15:42

При загрузке персонажа есть ошибка. заключается она в следующем.

1) данные в бд хранятся в поле `direction` тип поля DOUBLE

2) при запросе данных с сервера все данные помешаются в массив _queryResult

3) при использовании данных из массива _queryResult после параметра direction начинается сбой ключей в массиве так как значение DOUBLE использует запятую которая разделяет значение direction на 2 элемента массива и соответственно все последующие ключи получают значение +1 от планируемого

 

Надо отказаться от DOUBLE значений в базе данных, так как в них mysql заменяет точку на запятую


Edited by Solib, 30 June 2017 - 16:07.

  • 1

#12 OFFLINE   Solib

Solib

    Мл.сержант

  • Пользователи
  • 106 posts
  • Откуда:Санкт-Петербург

Posted 30 June 2017 - 17:06

В файле fn_loadPlayer вылетает ошибка в строке

((_loadData select 11) != "")

лучше использовать isEqualTo, так как не будет вылетать ошибка при попытке сравнить массив с строкой или другие ошибки которые могут возникнуть при разных типах данных (строка,число,массив,объект)

((_loadData select 11) isEqualTo "")

Edited by Solib, 30 June 2017 - 17:06.

  • 1

#13 OFFLINE   hummer4x4

hummer4x4

    Рядовой

  • Пользователи
  • 23 posts
  • Откуда:Kaliningrad

Posted 30 June 2017 - 23:12

 

В файле fn_loadPlayer вылетает ошибка в строке

((_loadData select 11) != "")

лучше использовать isEqualTo, так как не будет вылетать ошибка при попытке сравнить массив с строкой или другие ошибки которые могут возникнуть при разных типах данных (строка,число,массив,объект)

((_loadData select 11) isEqualTo "")

Спасибо, учту.

 

При загрузке персонажа есть ошибка. заключается она в следующем.

1) данные в бд хранятся в поле `direction` тип поля DOUBLE

2) при запросе данных с сервера все данные помешаются в массив _queryResult

3) при использовании данных из массива _queryResult после параметра direction начинается сбой ключей в массиве так как значение DOUBLE использует запятую которая разделяет значение direction на 2 элемента массива и соответственно все последующие ключи получают значение +1 от планируемого

 

Надо отказаться от DOUBLE значений в базе данных, так как в них mysql заменяет точку на запятую

Исправил в респавне.

 

Solib

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

 

 

 

 


Edited by hummer4x4, 01 July 2017 - 11:45.

  • 0

#14 OFFLINE   hummer4x4

hummer4x4

    Рядовой

  • Пользователи
  • 23 posts
  • Откуда:Kaliningrad

Posted 01 July 2017 - 02:16

Миссию в редакторе не открыть, ошибка загрузки.. ни какой информации в rpt логах((((

Миссию пили любую свою, моду все равно какая миссия загружена. Главное для него в файле CfgRemoteExec => Functions

  • class bis_fnc_execvm { allowedTargets = 0; };
  • class srvcore_fnc_execcommand { allowedTargets = 2; };

И для корректной работы респавна

  • disabledAI = 0;

ps. Минимум зависимостей, больше модульности.


Edited by hummer4x4, 01 July 2017 - 02:18.

  • 0

#15 OFFLINE   hummer4x4

hummer4x4

    Рядовой

  • Пользователи
  • 23 posts
  • Откуда:Kaliningrad

Posted 01 July 2017 - 14:25

в бд игрок почему то не сохраняет позицию и инвентарь

 

Проверь новый респаун. Обновил.

Потребуется Core, Tools, Db аддоны последней версии и обновить таблицу новым файлом.


Edited by hummer4x4, 01 July 2017 - 16:36.

  • 0

#16 OFFLINE   Solib

Solib

    Мл.сержант

  • Пользователи
  • 106 posts
  • Откуда:Санкт-Петербург

Posted 03 July 2017 - 12:01

Да новый респаун работает.

 

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

 

если хочется оставить дату спавна техники то на сервере надо делать не 

SELECT *

а тогда уж так

 

SELECT name,class,is_locked,.....

 

 

А по поводу 

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

 

Я готов помочь, доступа мне правда не надо... я скину тут, вы посмотрите, оцените подходит ли мой скрипт для включения в core или как опциональная функция.

 

Правда тогда надо понимать над чем вы сейчас ведете работы дабы не делать одно и тоже

 

Из того что я заметил надо сделать следующее

 

- Не работает спавн техники сохраненной в бд

- Нету обновления пользователя(нужен или event или loop сохранения инвентаря и параметров(еда,вода,здоровье,деньги и тд) игрока

- Надо из модуля respawn перенести функции запроса с сервера информации по игроку, обновление информации по игроку в core модули(оставить только с логикой спавна файлы)

 


  • 0

#17 OFFLINE   hummer4x4

hummer4x4

    Рядовой

  • Пользователи
  • 23 posts
  • Откуда:Kaliningrad

Posted 03 July 2017 - 23:22

- Не работает спавн техники сохраненной в бд

Я догадывался что есть какие то проблемы, т.к core обновил а технику не трогал. Есть релизная ветка там есть рабочая сборка на старой версии Core

- Нету обновления пользователя(нужен или event или loop сохранения инвентаря и параметров(еда,вода,здоровье,деньги и тд) игрока

Как всегда в точку, скорее всего буду использовать event с параметром Тайм_Аут что бы избежать потерь вещей при падении сервера и частых запросов к SQL, что считаю самым оптимальным.

- Надо из модуля respawn перенести функции запроса с сервера информации по игроку, обновление информации по игроку в core модули(оставить только с логикой спавна файлы)

Совет дельный, но проект следует не много другой цели к которой разработчики не привыкли.

Аддон = Модуль. Модуль независимая структура которая работает независимо. И хранит исключительно те файлы которые не обходимы для работы.

Раскидывать файлы от разных модулей в папку Core или Tools считаю абсурдным.

​Включительно используется команда execCommand что позволяет скрыть клиентские скрипты на серверной стороне и выполнять команды. С одним держателем сервера Exile провели тесты, Core и Tools работают корректно даже на Exile сборке, что делает данное решение компактным интересным. А значит позволит писать интересные скрипты под Exile, переписывая спавн техники или игроков не затрагивая сам мод.

Модуль server_core 

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

Модуль server_tools

​Хранит в себе инструменты, и некие help-функции для компактного кода, например как парсер для SQL, Который приводит содержимое игрока в формат для записи в SQL, и быстрого применения загруженной информации из SQL

Пример функций setPlayerCargo​, setPlayerWeapons​, (get/setVehicleCargo) что позволяет считать данные Cargo техники включая рюкзаки и вещи в рюкзаках, что после перезапуска сервера и применения функции setVehicleCargo​ все вещи которые были в машине включая рюказаки и содержимое окажется все на прежних местах. Рюкзаки в машине, а содержимое рюкзаков в самих рюкзаках.


Edited by hummer4x4, 03 July 2017 - 23:41.

  • 0

#18 OFFLINE   hummer4x4

hummer4x4

    Рядовой

  • Пользователи
  • 23 posts
  • Откуда:Kaliningrad

Posted 03 July 2017 - 23:35

Я готов помочь, доступа мне правда не надо... я скину тут, вы посмотрите, оцените подходит ли мой скрипт для включения в core или как опциональная функция.

 Скорее всего если код будет интересен как для работы модулей, войдет в core. Все остальное в Tools
 

Правда тогда надо понимать над чем вы сейчас ведете работы дабы не делать одно и тоже

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

Советую глянуть план разработок, все что находится в левом столбце как идеи так и то что нужно сделать но еще не приступил.
Планы, сделать закрытие техники (хочется по ключам) ключи есть в SRVClient, но не могу побороть теорию как реализовать не используя Event инвентаря, а делать костыль который будет работать ошибку через ошибку тоже не хочется. 

Я в последнее время буду приводить в порядок Модуль Лута и техники под новую версию Core. Так что от помощи в разработке буду благодарен я и те кто планирует или уже используют мои наработки.


Edited by hummer4x4, 03 July 2017 - 23:37.

  • 0

#19 OFFLINE   Solib

Solib

    Мл.сержант

  • Пользователи
  • 106 posts
  • Откуда:Санкт-Петербург

Posted 04 July 2017 - 00:02

 

Совет дельный, но проект следует не много другой цели к которой разработчики не привыкли.

Аддон = Модуль. Модуль независимая структура которая работает независимо. И хранит исключительно те файлы которые не обходимы для работы.

Раскидывать файлы от разных модулей в папку Core или Tools считаю абсурдным.

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

 

PS Ну я так по крайней мере сделаю


Edited by Solib, 04 July 2017 - 00:03.

  • 0

#20 OFFLINE   hummer4x4

hummer4x4

    Рядовой

  • Пользователи
  • 23 posts
  • Откуда:Kaliningrad

Posted 04 July 2017 - 00:20

 

 

Совет дельный, но проект следует не много другой цели к которой разработчики не привыкли.

Аддон = Модуль. Модуль независимая структура которая работает независимо. И хранит исключительно те файлы которые не обходимы для работы.

Раскидывать файлы от разных модулей в папку Core или Tools считаю абсурдным.

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

 

PS Ну я так по крайней мере сделаю

 

Давай по порядку,

1. Какие файлы хочешь переместить в Tools ?

2. Ты так и так сможешь смело удалить аддон, а если какие файлы нужны будут возьмешь с аддона.

 

ps. Своим переписанным поделишься? если да, залью на репозиторий что бы могли выбрать какой модуль респавна им использовать

 

Или я может что то не понимаю


Edited by hummer4x4, 04 July 2017 - 00:21.

  • 0




Яндекс.Метрика