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
JustBullet

Драгоценные камни через конфиг цен из .hpp файлов сервера

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

 

1. В server_traders.sqf зарегистрировал скин нпс:

 

 

serverTraders = ["RU_Villager1",
 

 

 

а ниже его индекс с пунктом в меню, категория "Нетральный":

 

 

// Gems
menu_RU_Villager1 = [
    [["Military Armed",700]],
    [],
    "neutral"
];
 

 

 
2. Далее в cfgServerTrader.hpp добавил путь к файлу с параметрами загрузки пункта меню: (уточню: у меня все трейдеры через свой конфиг cfgServerTrader.hpp а не через БД).
 

 

class CfgTraderCategory {
#include "Category\NeutralTraderGems.hpp"
};
 

 

 
Создал файл NeutralTraderGems.hpp и добавил в него товар:
 

 

class Category_700 {
    class BTR60_TK_EP1 {
        type = 'trade_any_vehicle_old';
        buy[] = {5,"ItemRuby"};
        sell[] = {1,"ItemRuby"};
    };
};
 

 

 

3. В init.sqf добавил загрузку файла конфигурации НПС:

 

 

if (isServer) then {
execVM "gems\Gem_Trader.sqf";
};
 

 

 

И собственно в сам файл Gem_Trader.sqf, добавил координаты НПС и его параметры:

 

_unit_0 = objNull;
if (true) then
{
    _this = createAgent ["RU_Villager1", [6350.43, 7776.41, 0.00143433], [], 0, "CAN_COLLIDE"];
    _unit_0 = _this;
    _this setDir 305.534;
    _this setVehicleInit "this allowDammage false; this disableAI 'FSM'; this disableAI 'MOVE'; this disableAI 'AUTOTARGET'; this disableAI 'TARGET'; this setBehaviour 'CARELESS'; this forceSpeed 0;  ";
    _this setUnitAbility 0.60000002;
    _this allowDammage false; _this disableAI 'FSM'; _this disableAI 'MOVE'; _this disableAI 'AUTOTARGET'; _this disableAI 'TARGET'; _this setBehaviour 'CARELESS'; _this forceSpeed 0;_this enableSimulation false;
};
 

 

 
Теперь о проблеме, когда я делаю в NeutralTraderGems.hpp приставку _old на обмен или продажу за камни итемы, то все прекрасно работает, камни забираются, обмениваются на другие камни, продаются, камни обмениваются на любые итемы и т.п. небольшой пример: (к примеру NeutralTraderGems.hpp выглядит целиком так)

 

class Category_700 {
    class ItemCitrine {        
        type = "trade_items_old";
        buy[] = {2,"ItemObsidian"};
        sell[] = {2,"ItemObsidian"};
    };
    class ItemObsidian {
        type = "trade_items_old";
        buy[] = {1,"ItemBriefcase100oz"};
        sell[] = {6,"ItemGoldBar10oz"};
    };
};
 

 

но когда я хочу добавить технику на обмен за камни: (к примеру NeutralTraderGems.hpp выглядит целиком так)

 

 

class Category_700 {
    class BTR60_TK_EP1 {
        type = "trade_any_vehicle_old";
        buy[] = {5,"ItemRuby"};
        sell[] = {1,"ItemRuby"};
    };
};
 

 

 

с trade_any_vehicle_old не видно изображение техники а если просто trade_any_vehicle то видно технику но разумеется камни не забираются, да и вообще ее можно купить просто без камней... Я добавлял к обычным нпс и ситуация не изменилась, будто приставка _old работает только с trade_items.

 

п.с. Любые друге вещи как trade_any_vehicle_old, добавляя технику или с trade_weapons_old и добавляя оружие и т.п. происходит аналогичная ситуация, нет изображения, а если _old убрать то изображение есть, товар покупается а камни само собой не используются... Будто нормальная работа через свой конфиг происходит только с приставкой _old по отношению к итемам а другие параметры как будто не зарегистрированы.

 

 

Парни, что может быть не так? (сутки бьюсь, штудирую форумы, уже всю голову сломал)

Edited by JustBullet (see edit history)

Share this post


Link to post
Share on other sites

13 answers to this question

Recommended Posts








  • 0

Если подключить продажу через БД то с _old будет показывать иконки 

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

пытаюсь найти фильтр, который реагирует на приставку _old, ни чего похожего в dayz_code не нашел, ищу зацепки...

Share this post


Link to post
Share on other sites
  • 0

да, я его смотрел, из того что я смог понять это то что он не отвечает за это, а за момент когда ты покупаешь и купил. Проще говоря он запускает анимацию покупки, спавнит технику, дает ключь и т.п... Искать пытаюсь что то до этого... эх.



но спасибо вам за хоть какие то советы и варианты... буду дальше думать в какую сторону рыть.

Share this post


Link to post
Share on other sites
  • 0

мне кажется где то тут ответ кроется, может я не прав, player_traderMenuConfig.sqf и player_traderMenuHive.sqf, сижу, ковыряюсь.

Share this post


Link to post
Share on other sites
  • 0

в init.sqf:

 

DZE_ConfigTrader = true; // это команда разрешает использовать конфиг свой.
 

 

 

далее она привела меня в compiles.sqf где говориться что если переменная моя true то будет загружаться player_traderMenuConfig.sqf конфиг.

 

 

    // trader menu code
    if (DZE_ConfigTrader) then {
        call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_traderMenuConfig.sqf";
    }else{
        call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_traderMenuHive.sqf";
    };
    // recent murders menu code
    call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_murderMenu.sqf";
 

 

 
 
идем дальше player_traderMenuConfig.sqf, там все вроде нормально, загружает итемы на экран но там даже нет упоминания про trade_items но зато про остальное есть... я полагаю что даже в нем не надо искать, дело где то в реагировании сервер на _old но в нем есть вывод на экран меню, в общем не знаю, запутался уже, что от куда и куда, передохну....


    for "_i" from 0 to ((count _cfgTraderCategory) - 1) do {
        _class = configName (_cfgTraderCategory select _i);
                    
        _type  = getText ((_cfgTraderCategory select _i) >> "type");    
        _buy  = getArray ((_cfgTraderCategory select _i) >> "buy");    
        _sell = getArray ((_cfgTraderCategory select _i) >> "sell");
        
        _buy set [2,1];
        _sell set [2,1];


        _typeNum = 1;
        if (_type == "trade_weapons") then {
            _typeNum = 3;
        } else { 
            if (_type in ["trade_backpacks", "trade_any_vehicle", "trade_any_vehicle_free", "trade_any_boat", "trade_any_bicycle"]) then {
                _typeNum = 2;
            };
        };
        
        _data = [9999,[_class,_typeNum],99999,_buy,_sell,0,_trader_id,_type];
        
        PVDZE_plr_TradeMenuResult set [count PVDZE_plr_TradeMenuResult, _data];
    };
 


тут я так понимаю просто идет проверка в цикле и заполнение в _data и все.... если оружие то тип такойто а если остальное то такое то бла бла бла ну и тому подобное.... trade_item я не наблюдаю.....



вот тут вроде интересней но пока не разобрал до конца:

 

        // Display Name of buy item
        _btextCurrency = getText(configFile >> _btype >> _bname >> "displayName");


        _sell = _x select 4;
        _sqty = _sell select 0;
        _sname = _sell select 1;
        _stype = _sell select 2;
        switch(true)do{ 
            case (_stype == 1): { 
                _stype = "CfgMagazines";
            }; 
            case (_stype == 2): { 
                _stype = "CfgVehicles";
            }; 
            case (_stype == 3): { 
                _stype = "CfgWeapons";
            }; 
        }; 
        // Display Name of sell item
        _stextCurrency =    getText(configFile >> _stype >> _sname >> "displayName");


        // Menu sort order
        _order = _x select 5;


        // Action file to use for trade
        _afile = _x select 7;
        _File = "\z\addons\dayz_code\actions\" + _afile + ".sqf";
            
        _count = 0;
        if(_type == "CfgVehicles") then {
            if (_afile == "trade_backpacks") then {
                _bag = unitBackpack player;
                _bagclass = typeOf _bag;
                if(_name == _bagclass) then {
                    _count = 1;
                };
            } else {
                if (isClass(configFile >> "CfgVehicles" >> _name)) then {
                    _distance = dayz_sellDistance_vehicle;
                    if (_name isKindOf "Air") then {
                        _distance = dayz_sellDistance_air;
                    };
                    if (_name isKindOf "Ship") then {
                        _distance = dayz_sellDistance_boat;
                    };
                    _count = {(typeOf _x) == _name} count (nearestObjects [(getPosATL player), [_name], _distance]);
                };
            };
        };


        if(_type == "CfgMagazines") then {
            _count = {_x == _name} count magazines player;
        };


        if(_type == "CfgWeapons") then {
            _count = {_x == _name} count weapons player;
        };


        _index = lbAdd [TraderDialogItemList, format["%1 (%2)", _textPart, _name]];


        if (_count > 0) then {
            lbSetColor [TraderDialogItemList, _index, [0, 1, 0, 1]];
        };


        _image = getText(configFile >> _type >> _name >> "picture");
        lbSetPicture [TraderDialogItemList, _index, _image];


        _item_list set [count _item_list, [
            _name,
            _textPart,
            _bqty,
            _bname,
            _btextCurrency,
            _sqty,
            _sname,
            _stextCurrency,
            _header,
            _File
        ]];
    } forEach PVDZE_plr_TradeMenuResult;
    TraderItemList = _item_list;
 

 



в общем вот куда я уперся и как баран на ворота пока ни куда не двигаюсь дальше :)

Share this post


Link to post
Share on other sites
  • 0

За картинку отвечает эта строка:

_image = getText(configFile >> _type >> _name >> "picture");

lbSetPicture [TraderDialogItemList, _index, _image];

 

Не знаю, мб ты еще не понял, но trade_weapons, trade_items - это скрипты в dayz_code\actions. Не знаю, никогда не парился этим вопросом, но если интересно, то сравни trade_vehicles и trade_vehicles_old

Share this post


Link to post
Share on other sites
  • 0

короче ладно... закрываю тему.

Такаяже проблема пока не нашол как решить

Share this post


Link to post
Share on other sites
  • 0

Какой смысл на банковской системе добавлять технику за камни. Рубины добавляются на обычный сервер ввиду того что больше чем за 12 кейсов технику не поставишь. Но тут же вам никто не запрещает написать миллионы монет.

Share this post


Link to post
Share on other sites
  • 0

Разгрузка БД от трейдеров это интересно, учитывая что БД в эпоче жутко тормозная и частенько техника пропадает прямо при покупуе)))

Кстати ни кто не подскажет почему данные в БД обновляются с нехилой задержкой? И почему она так тупит в эпоче, может где то циферки поменять?)

Так вот, как обстоят дела с безопасностью от читеров при таком варианте трейдеров?

Edited by Karakurd (see edit history)

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 123new
      Здравствуйте, дорогие друзья и посетители сайта. В данной теме я распишу как создать свой "чистый" сервер на основе первых официальных серверных файлов игры, доступных каждому в steam для тех, кто приобрел эту замечательную игру. Для тех, кто не приобретал ее, не расстраивайтесь, добавлю зеркала на файлы.
      И так, приступим.
       
      Системные требования игры:
      https://s-platoon.ru/topic/7014-polnaya-dokumentaciya-servernyh-faylov-dayz-standalone-dayz-server-files-documentation/?do=findComment&comment=61219
       
      Нам понадобятся:
      1. Notepad++ https://notepad-plus-plus.org/download
      2. Официальные серверные файлы игры со steam. Скачать  их можно:
      В Steam из раздела 'инструменты' , выбрав DayZ Server и нажав 'установить' Вручную через утилиту SteamCMD:
      3. Официальный клиент игры из steam: https://store.steampowered.com/app/221100/DayZ/
      4. "Настроенная конфигурация серверной части игры" и батник для старта сервера:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      И так, приступим.
      Копируем папку со скачанными серверными файлами игры (папку DayZServer ) в отдельную папку. В пути и имени папки не должно быть пробелов и русских символов. Саму новую папку можно назвать как хотите, я же назову ее MyServer. Распаковываем архив с "Настроенной конфигурацией серверной части игры" в папку с серверными файлами (папка MyServer). Получим что-то типа такого: Далее мы работаем уже только внутри папки MyServer Открываем в Notepad++ файл server.cfg в папке Instance_1.  Настраиваем его, комментарии к настройке на русском в файле имеются.
      При особой необходимости вы можете свериться с serverDZ.cfg в корневой папке сервера, это оригинальный файл конфигурации, предоставленный разработчиками. Также, можете прочитать информацию из официальной документации с переводом в теме вот этой(смотрите во 2 сообщении указанной темы). Плюсом есть пояснения в конце гайда! Открываем в Notepad++ файлы BEServer.cfg  и BEServer_x64.cfg в папке Instance_1\Battleye в папке сервера. Настраиваем параметры, содержимое обоих файлов должно быть идентичным.
      Параметры:
      RConPassword - Устанавливает пароль для подключения RCon инструментов  (инструмент удаленного администрирования, таких как BEC/Dart).
      RestrictRCon - Включает\отключает RCon-функции (кик\бан\ограничение подключения) (0 для отключения органичений)
      MaxPing - устанавливает ограничение на сервере по пингу
      В примере, уже имеющемся у вас, 12345678 - rcon-пароль сервера, 500 - максимальный пинг, разрешенный battleye для игры на сервере, RestrictRCon 0 - разрешить подключение с RCon-клиентов с правами кика и бана (0 - разрешено все, 1 - запрещен кик и бан, только отправка в чат). Запускаем !!!Start_server.bat и наш сервер запустится. Запускаем клиент игры со steam, находим наш сервер вручную по ip и порту, либо имени сервера.
      Если сервер запущен на том же компьютере, где и игра, и на стандартном порту 2302, то поумолчанию поиск выполняется по 127.0.0.1:2302
      Если сервер запущен на другом компьютере, то вместо 127.0.0.1 будет ip адрес компьютера, где запущен сервер, или его доменное имя. Например, myserver.com:2302 или 178.123.22.12:2302
      ВАЖНО: если сервер запущен на другом компьютере, отличном от компьютера где запущена игра, то для доступа на сервер игроков необходимо иметь "внешний" выделенный ip-адрес и открытый порт сервера!
      Сменить порт сервера можно в !!!Start_server.bat (Notepad++ для редактирования),  параметр запуска сервера -port= Более подробно по параметрам запуска читайте ниже. Для выключения сервера рекоммендуется пользоваться !!!Server_kill.bat файлом, созданным в соответствии с рекоммендациями разработчиков игры и официальной документацией.  
      Разъяснения по параметрам запуска сервера игры (для !!!Start_server.bat ):
      Разъяснения по конфигурационному файлу сервера игры (для serverDZ.cfg ):
       
      Crack SmartSteamEmu v. 1.4.3 данной версии клиента игры и сервера:
      Скачать с Zippyshare.com: https://www64.zippyshare.com/v/mHmPweqg/file.html
      Скачать с Mega.nz: https://mega.nz/#!rnZBXK4b!KRrJm6obcJjUlzMpEPNQ3R8sy2z0pP-0Myb_ao4TVhg
      Скачать с yandex.disk: https://yadi.sk/d/4xSF1dSt6XN41g
      Инструкция по установке есть в архиве, дублирую:
       
      Дополнительно:
      Для работы с Battleye, кика и бана игроков используйте ip-адрес и порт сервера, и любой rcon-клиент с паролем из BEServer_x64.cfg
      Для работы BEC файл BEServer.cfg должен быть идентичным по содержанию BEServer_x64.cfg иначе программа не будет работать!
      База данных (storage) теперь хранится по пути: mpmissions\dayzOffline.chernarusplus\storage_{номер instance с cfg сервера}
      В базе данных также хранится файл с сохранениями игроков на сервере с именем players.db
      Если вы не находите свой сервер в списке серверов игры во вкладке Community, проверьте на доступность и открытость извне игровой порт, а также порты steam и steamquery (см. cfg файл сервера). Сервера с crack не отобразятся там.
       
      Вот и все, приятной игры на сервере!
       
       
    • By DrTauren
      Как всем известно, сегодня, 19 сентября разработчики DayZ Standalone официально опубликовали документацию серверов Dayz, а также предоставили возможность скачать файлы для запуска сервера DayZ. Ниже прилагается перевод официальной документации этих самых файлов с форума DayZ, а также документация касательно других файлов, которых нет в официальной документации. Пользуйтесь на здоровье 
       
      Скачать серверные файлы через Steam: steam://rungameid/223350
      На данный момент присутствует ошибка с невозможностью скачать файлы сервера, если на вашем аккаунте Steam отсутствует купленная DayZ.
       
      P.S. Если у вас есть чем заполнить эту статью, обязательно пишите мне в лс 
    • By Miduznya
      Всем привет, чет не нашел не где как можно в ручную обновить через .bat или .cmd файл
      если есть у кого такой поделитесь плиз. Прошу сильно не пинать если есть такая тема дайте ссылку
    • By Ksenagami
      Всем доброго времени суток. 
      Столкнулся с проблемой запуска/настройкой сервера, собственно ошибки при разных вариантах подключения приведу ниже.
       
      При запуске сервера с конфигом:
      start DayZServer_x64.exe -config=serverDZ.cfg -port=2302 -dologs -adminlog -netlog -freezecheck -noFilePatching -BEpath=D:\server-dayz-1.03\battleye -profiles=D:\server-dayz-1.03\Logs Выбивает ошибку подключения:
      1:03:22 Xeontius uses modified data file 1:03:22 [Login]: Adding player Xeontius (1169892374) to login queue at position 1 1:03:22 [LoginMachine]: Add player Xeontius (1169892374) 1:03:22 [StateMachine]: Player Xeontius (dpnid 1169892374 uid ) Entering AuthPlayerLoginState 1:03:22 BattlEye Server: Player #0 Xeontius (192.168.0.100:2316) connected 1:03:22 Player Xeontius connecting. 1:03:22 [StateMachine]: Player Xeontius (dpnid 1169892374 uid ) Entering WaitAuthPlayerLoginState 1:03:23 BattlEye Server: Player #0 Xeontius - BE GUID: 7126d814230e63595389e560519f301a 1:03:23 Player Xeontius (1169892374) kicked from server: 2 (Auth error: INVALID TICKET)  
      Но есть и другая проблема, если запускаю сервера при помощи .bat который в свою очередь пускает сервера StartServer.ini
      [Launcher] Target = DayZServer_x64.exe StartIn = CommandLine = -port=2302 -config=configs\serverDz.cfg -cfg=configs\basic.cfg -profiles=configs -user=configs -name=Server -nologs -adminlog -freezecheck -noFilePatching SteamClientPath = SmartSteamEmu\SmartSteamEmu.dll SteamClientPath64 = SmartSteamEmu\SmartSteamEmu64.dll Persist = 0 ParanoidMode = 0 InjectDll = 0 При подключении к серверу выдаёт ошибку:
      1:14:20 Xeontius uses modified data file 1:14:20 [Login]: Adding player Xeontius (65353324) to login queue at position 1 1:14:20 [LoginMachine]: Add player Xeontius (65353324) 1:14:20 [StateMachine]: Player Xeontius (dpnid 65353324 uid ) Entering AuthPlayerLoginState 1:14:20 BattlEye Server: Player #0 Xeontius (192.168.0.100:2316) connected 1:14:20 Player Xeontius connecting. 1:14:20 [StateMachine]: Player Xeontius (dpnid 65353324 uid ) Entering WaitAuthPlayerLoginState 1:14:20 BattlEye Server: Player #0 Xeontius - BE GUID: 7126d814230e63595399e560519f301a 1:14:21 BattlEye Server: Verified GUID (7126d814230e63595399e560519f301a) of player #0 Xeontius 1:14:21 Player Xeontius connected (id=iOfimjHCetIp4iIJeCjtwueZU8aXZUeLSy7PL+ECMLg=). 1:14:21 [StateMachine]: Player Xeontius (dpnid 65353324 uid iOfimjHCetIp4iIJeCjtwueZU8aXZUeLSy7PL+ECMLg=) Entering GetCharacterLoginState 1:14:21 [StateMachine]: Player Xeontius (dpnid 65353324 uid iOfimjHCetIp4iIJeCjtwueZU8aXZUeLSy7PL+ECMLg=) Entering CreateNetObjectsLoginState 1:14:21 Player Xeontius dpid=65353324 at pos (10867.0, 0.0, 2400.1) 1:14:21 [StateMachine]: Player Xeontius (dpnid 65353324 uid iOfimjHCetIp4iIJeCjtwueZU8aXZUeLSy7PL+ECMLg=) Entering PreloadCamLoginState 1:14:21 [StateMachine]: Player Xeontius (dpnid 65353324 uid iOfimjHCetIp4iIJeCjtwueZU8aXZUeLSy7PL+ECMLg=) Entering WaitPreloadCamLoginState 1:14:39 [StateMachine]: Player Xeontius (dpnid 65353324 uid iOfimjHCetIp4iIJeCjtwueZU8aXZUeLSy7PL+ECMLg=) Entering GetNewCharLoginState 1:14:39 [StateMachine]: Player Xeontius (dpnid 65353324 uid iOfimjHCetIp4iIJeCjtwueZU8aXZUeLSy7PL+ECMLg=) State Error (GetNewCharLoginState): Player with network id 0 not found 1:14:39 Player Xeontius (65353324) kicked from server: 6 () 1:14:39 [StateMachine]: Kick player Xeontius (dpnid 65353324 uid iOfimjHCetIp4iIJeCjtwueZU8aXZUeLSy7PL+ECMLg=) State GetNewCharLoginState Error 1:14:39 [Disconnect]: Client 65353324 early disconnect 1:14:39 [Disconnect]: No player -> call DB exit 65353324 1:14:39 [Disconnect]: No player -> remove player info 65353324 1:14:39 [Disconnect]: DisconnectPlayerFinish 65353324 1:14:39 [Disconnect]: Remove player info 65353324 1:14:39 [Disconnect]: Player destroy 65353324 1:14:39 Player Xeontius disconnected. 1:14:39 BattlEye Server: Player #0 Xeontius disconnected Запуск клиента делал DayZ_BE.exe и DayZ_x64.exe результат один и тот же.
      В клиенте сервера находит как официальный, в ЛВС пусто.
      Версия клиента и сервера 1.03.151507
  • 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.